From 581c0e50e08793e6bfd2a03196fbe08aa273069b Mon Sep 17 00:00:00 2001 From: Claude Brisson Date: Wed, 1 Jan 2020 21:27:25 +0000 Subject: [engine] Fix another VELOCITY-904 regression git-svn-id: https://svn.apache.org/repos/asf/velocity/engine/trunk@1872211 13f79535-47bb-0310-9956-ffa450edef68 --- .../velocity/runtime/directive/VelocimacroProxy.java | 2 +- .../velocity/test/issues/Velocity904TestCase.java | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) (limited to 'velocity-engine-core/src') diff --git a/velocity-engine-core/src/main/java/org/apache/velocity/runtime/directive/VelocimacroProxy.java b/velocity-engine-core/src/main/java/org/apache/velocity/runtime/directive/VelocimacroProxy.java index ea950f1f..c9956c71 100644 --- a/velocity-engine-core/src/main/java/org/apache/velocity/runtime/directive/VelocimacroProxy.java +++ b/velocity-engine-core/src/main/java/org/apache/velocity/runtime/directive/VelocimacroProxy.java @@ -418,7 +418,7 @@ public class VelocimacroProxy extends Directive context.put(literalArgArray[i], literalsStack); } /* Reflects the strange 1.7 behavor... */ - if (argNode instanceof ASTReference || argNode instanceof ASTStringLiteral || argNode instanceof ASTObjectArray || argNode instanceof ASTMap) + if (argNode instanceof ASTReference || argNode instanceof ASTStringLiteral) { literalsStack.addFirst(argNode.literal()); } diff --git a/velocity-engine-core/src/test/java/org/apache/velocity/test/issues/Velocity904TestCase.java b/velocity-engine-core/src/test/java/org/apache/velocity/test/issues/Velocity904TestCase.java index e1e55268..b22e198b 100755 --- a/velocity-engine-core/src/test/java/org/apache/velocity/test/issues/Velocity904TestCase.java +++ b/velocity-engine-core/src/test/java/org/apache/velocity/test/issues/Velocity904TestCase.java @@ -93,4 +93,23 @@ public class Velocity904TestCase extends BaseTestCase assertEvalEquals("$input", "#macro(mymacro $input)#set($input = $null)$input#end#mymacro(true)"); assertEvalEquals("$input", "#macro(mymacro $input)#set($input = $null)$input#end#mymacro(4.5)"); } + + public void testConstantNoPreserve() + { + assertEvalEquals("true", "#macro(mymacro $input)$input#end#mymacro(true)"); + assertEvalEquals("1.5", "#macro(mymacro $input)$input#end#mymacro(1.5)"); + assertEvalEquals("foo", "#macro(mymacro $input)$input#end#mymacro('foo')"); + assertEvalEquals("{}", "#macro(mymacro $input)$input#end#mymacro({})"); + assertEvalEquals("[]", "#macro(mymacro $input)$input#end#mymacro([])"); + } + + public void testConstantPreserve() + { + assertEvalEquals("true", "#macro(mymacro $input)$input#end#mymacro(true)"); + assertEvalEquals("1.5", "#macro(mymacro $input)$input#end#mymacro(1.5)"); + assertEvalEquals("foo", "#macro(mymacro $input)$input#end#mymacro('foo')"); + assertEvalEquals("{}", "#macro(mymacro $input)$input#end#mymacro({})"); + assertEvalEquals("[]", "#macro(mymacro $input)$input#end#mymacro([])"); + } + } -- cgit v1.2.3