[ 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