You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@velocity.apache.org by "Claude Brisson (Jira)" <ji...@apache.org> on 2020/01/27 18:28:00 UTC

[jira] [Reopened] (VELOCITY-926) Regression: Macro arguments names cannot collide with external references names

     [ https://issues.apache.org/jira/browse/VELOCITY-926?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Claude Brisson reopened VELOCITY-926:
-------------------------------------

When a naming collision occurs, there is a side effect which is that in 1.7, global context values become default values for *missing* macro arguments.

Two people reported usecases where backward compatibility was broken because of this 1.7 _undocumented feature_, so it's worth addressing.

The plan is to deprecate the 2.1 flag {{velocimacro.arguments.preserve_literals}} in favor of a new {{velocimacro.enable_bc_mode}} flag which would :

* preserve arguments literals
* allow global values as defaults for missing arguments
* also allow a macro to set to null a reference in the global context by setting one of its arguments to null (setting a global reference this way is allowed in 2.x but not for null values)






> Regression: Macro arguments names cannot collide with external references names
> -------------------------------------------------------------------------------
>
>                 Key: VELOCITY-926
>                 URL: https://issues.apache.org/jira/browse/VELOCITY-926
>             Project: Velocity
>          Issue Type: Bug
>          Components: Engine
>    Affects Versions: 2.0, 2.1
>            Reporter: Claude Brisson
>            Assignee: Claude Brisson
>            Priority: Major
>             Fix For: 2.2
>
>
> Consider the following example:
> {code}
> #macro( test $foo $bar )
>   $foo $bar
> #end
> #set($foo = 'foo')
> #set($bar = 'bar')
> #test( $bar, $foo )
> {code}
> The expected result would be "{{bar foo}}", but since 2.0 we get the incorrect result "{{bar bar}}", as if the first inner {{$foo}} macro argument was overwritting the second argument evaluation.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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