Details
Description
It seems that there is a bug when we have loop into a recursive macro.
Here is the test I run :
#macro (test_loop $p)
call to test_loop ($p)
#foreach($child in $p)
in the loop the param should not be changed : ($p)
#test_loop($child)
#end
return
#end
#set($l1=["a"])
#set($l = [$l1])
#test_loop($l)
It produce:
call to test_loop ([[a]])
in the loop the param should not be changed : ([[a]])
call to test_loop ([a])
in the loop the param should not be changed : (a)
call to test_loop (a)
return
return
return
IMHO, it should be
call to test_loop ([[a]])
in the loop the param should not be changed : ([[a]])
call to test_loop ([a])
in the loop the param should not be changed : ([a])
call to test_loop (a)
return
return
return
The difference is in the second recusive call. I don't know why, but it seems
that the instruction #foreach($child in $p) has modified $p that contains the
value of $child.
Attachments
Attachments
Issue Links
- is blocked by
-
VELOCITY-630 Pass by name does not work with #foreach within a macro
- Resolved
- relates to
-
VELOCITY-532 $velocityCount in macro not processed
- Resolved