[ 
https://issues.apache.org/jira/browse/VELOCITY-682?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12666474#action_12666474
 ] 

byronvf edited comment on VELOCITY-682 at 1/23/09 3:04 AM:
----------------------------------------------------------------

This is confirmed:  the following simpler VTL (strict mode):

#macro(eval $e)#evaluate($e)#end
#eval("foo1")
#eval("foo2")

Results in:

Threw: class org.apache.velocity.exception.ParseErrorException
Msg: Macro '#eval' is not defined at /foo.vm[line 3, column 1]
org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:319)
 
org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:215)
 
org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:207)
 
org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:342) 
org.apache.velocity.Template.merge(Template.java:340) 
org.apache.velocity.Template.merge(Template.java:248) 
org.apache.velocity.app.Velocity.mergeTemplate(Velocity.java:343) 


      was (Author: byronvf):
    This is confirmed:  the following simpler VTL:

#macro(eval $e)#evaluate($e)#end
#eval("foo1")
#eval("foo2")

Results in:

Threw: class org.apache.velocity.exception.ParseErrorException
Msg: Macro '#eval' is not defined at /foo.vm[line 3, column 1]
org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:319)
 
org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:215)
 
org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:207)
 
org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:342) 
org.apache.velocity.Template.merge(Template.java:340) 
org.apache.velocity.Template.merge(Template.java:248) 
org.apache.velocity.app.Velocity.mergeTemplate(Velocity.java:343) 

  
> #evaluate breaks macro processing
> ---------------------------------
>
>                 Key: VELOCITY-682
>                 URL: https://issues.apache.org/jira/browse/VELOCITY-682
>             Project: Velocity
>          Issue Type: Bug
>          Components: Engine
>    Affects Versions: 1.6.1
>            Reporter: Sergiu Dumitriu
>
> When using #evaluate, all further macro processing is broken; old macros are 
> not recognized anymore, and new macros cannot be defined.
> For example:
> {noformat}
> #macro(aSimpleMacro)
>   This is a simple macro
> #end
> ## called 3 times to show that it works each time
> #aSimpleMacro()
> #aSimpleMacro()
> #aSimpleMacro()
> #macro(doEval $b)
>   #evaluate($x)
> #end
> #set($x = 'value of x')
> #doEval('$x')
> ## after the first call, which used an #evaluate, these two won't work 
> anymore:
> #doEval('$x')
> #doEval('$x')
> #macro(anotherSimpleMacro)
>   This is another simple macro
> #end
> ## This newly defined macro doesn't work, either...
> #anotherSimpleMacro()
> ## And the first macro, which worked well before, suddenly stops working
> #aSimpleMacro()
> {/noformat}
> should print:
> {noformat}
>   This is a simple macro
>   This is a simple macro
>   This is a simple macro
>   value of x
>   value of x
>   value of x
>   This is another simple macro
>   This is a simple macro
> {/noformat}
> but instead prints:
> {noformat}
>   This is a simple macro
>   This is a simple macro
>   This is a simple macro
>   value of x
> #doEval('$x')
> #doEval('$x')
> #anotherSimpleMacro()
> #aSimpleMacro()
> {/noformat}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@velocity.apache.org
For additional commands, e-mail: dev-h...@velocity.apache.org

Reply via email to