|
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.
|
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.
|
|
Environment
|
Operating System: other
Platform: Other
|
Operating System: other
Platform: Other
|
|
Priority
|
Major
[ 3
]
|
Minor
[ 4
]
|
|
Fix Version/s
|
|
1.5
[ 12310253
]
|
|
Bugzilla Id
|
30343
|
|
|
Assignee
|
Velocity-Dev List
[ velocity-dev@jakarta.apache.org
]
|
|
|
Summary
|
recursion and loop
|
reference within macro and foreach is incorrect
|