to my knowledge, macro arguments have always been passed by name, even
string literal ones.  still, this is an odd case, using the foreach
index reference in a string literal passed to a macro that includes
the foreach which defines that reference.  yeah, that's a bug, but my,
what a tangled web it took to catch it. :)

On Sun, Oct 12, 2008 at 7:08 PM, Will Glass-Husain
<[EMAIL PROTECTED]> wrote:
> I would have assumed the quoted string would be evaluated before being
> passed in to the macro.  Hence $i is invalid reference when it is evaluated,
> and we'd always see "no no no".
>
> WILL
>
> On Sun, Oct 12, 2008 at 5:17 PM, Byron Foster <[EMAIL PROTECTED]> wrote:
>
>> I went back and pulled the velocity source to the revision (471881) before
>> the changes to bug 285 and found that the behavior is as expected, so I
>> conclude this is a bug :) which has been created here:
>>
>> https://issues.apache.org/jira/browse/VELOCITY-630
>>
>>
>> On Oct 10, 2008, at 17:04 , Byron Foster wrote:
>>
>>  Given the following:
>>>
>>> #macro(test $a $b)
>>>  #foreach($i in $a) $b #end
>>> #end
>>> #test( [1, 2, 3] "#if($i == 2) yes #else no #end")
>>>
>>> I would expect the output:
>>>
>>> no  yes  no
>>>
>>> Instead, I get
>>>
>>> no  no  no
>>>
>>> However, if I have
>>>
>>> #macro(test $a $b)
>>>  #set($i = 1) $b #set($i = 2) $b #set($i = 3) $b
>>> #end
>>> #test( [1, 2, 3] "#if($i == 2) yes #else no #end")
>>>
>>> then I get:
>>> no  yes  no
>>> as expected.
>>>
>>> I would say there is a bug here.  The Foreach directive explicitly sets $i
>>> in the localscope.  If I replace the explicit put to the localscope with a
>>> regular put, the first macro case works.  I was looking at the following
>>> issues where the modification to Foreach was mode.
>>>
>>> https://issues.apache.org/jira/browse/VELOCITY-285
>>>
>>> Now, my test change to Foreach breaks issue 285, but I'm not convinced
>>> that the resolution to 285 is complete.  Thoughts?
>>>
>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>
>
> --
> Forio Business Simulations
>
> Will Glass-Husain
> [EMAIL PROTECTED]
> www.forio.com
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to