Author: cbrisson
Date: Fri Jan 24 07:45:06 2020
New Revision: 1873088
URL: http://svn.apache.org/viewvc?rev=1873088&view=rev
Log:
[engine][VELOCITY-925] Fix BC whitespace gobbling for macro call without
parentheses
Added:
velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/macro2.vtl.BC
velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/macro2.vtl.LINES
velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/macro2.vtl.NONE
velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/macro2.vtl.STRUCTURED
velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/macro2.vtl
Modified:
velocity/engine/trunk/velocity-engine-core/src/main/parser/Parser.jjt
Modified: velocity/engine/trunk/velocity-engine-core/src/main/parser/Parser.jjt
URL:
http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/main/parser/Parser.jjt?rev=1873088&r1=1873087&r2=1873088&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/main/parser/Parser.jjt
(original)
+++ velocity/engine/trunk/velocity-engine-core/src/main/parser/Parser.jjt Fri
Jan 24 07:45:06 2020
@@ -1781,6 +1781,7 @@ boolean Directive(boolean afterNewline)
ArrayList argtypes = new ArrayList(4);
String blockPrefix = "";
ASTBlock block = null, elseBlock = null;
+ boolean hasParentheses = false;
boolean newlineAtStart = afterNewline;
}
{
@@ -1908,6 +1909,7 @@ boolean Directive(boolean afterNewline)
<SINGLE_LINE_COMMENT_START> [<SINGLE_LINE_COMMENT>]
)
)* (<WHITESPACE> | <NEWLINE>)* <RPAREN>
+ { hasParentheses = true; }
)
|
{
@@ -1918,10 +1920,10 @@ boolean Directive(boolean afterNewline)
[
// Conditions where whitespace and newline postfix is eaten by space
gobbling at this point:
// - block directive
- // - new line before directive
- // - backward compatibility mode
+ // - new line before directive without backward compatibility mode
+ // - backward compatibility mode *with parentheses*
// - #include() or #parse()
- LOOKAHEAD(2, { directiveType != Directive.LINE || newlineAtStart ||
rsvc.getSpaceGobbling() == SpaceGobbling.BC || d != null && (d instanceof
Include || d instanceof Parse) })
+ LOOKAHEAD(2, { directiveType != Directive.LINE || newlineAtStart &&
rsvc.getSpaceGobbling() != SpaceGobbling.BC || rsvc.getSpaceGobbling() ==
SpaceGobbling.BC && hasParentheses || d != null && (d instanceof Include || d
instanceof Parse) })
( [ ( t = <WHITESPACE> ) ] ( u = <NEWLINE> ) )
{
afterNewline = true;
Added:
velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/macro2.vtl.BC
URL:
http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/macro2.vtl.BC?rev=1873088&view=auto
==============================================================================
---
velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/macro2.vtl.BC
(added)
+++
velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/macro2.vtl.BC
Fri Jan 24 07:45:06 2020
@@ -0,0 +1,6 @@
+-----
+value
+-----
+
+-----
+value-----
Added:
velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/macro2.vtl.LINES
URL:
http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/macro2.vtl.LINES?rev=1873088&view=auto
==============================================================================
---
velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/macro2.vtl.LINES
(added)
+++
velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/macro2.vtl.LINES
Fri Jan 24 07:45:06 2020
@@ -0,0 +1,5 @@
+-----
+value-----
+
+-----
+value-----
Added:
velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/macro2.vtl.NONE
URL:
http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/macro2.vtl.NONE?rev=1873088&view=auto
==============================================================================
---
velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/macro2.vtl.NONE
(added)
+++
velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/macro2.vtl.NONE
Fri Jan 24 07:45:06 2020
@@ -0,0 +1,8 @@
+
+-----
+value
+-----
+
+-----
+value
+-----
Added:
velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/macro2.vtl.STRUCTURED
URL:
http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/macro2.vtl.STRUCTURED?rev=1873088&view=auto
==============================================================================
---
velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/macro2.vtl.STRUCTURED
(added)
+++
velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/macro2.vtl.STRUCTURED
Fri Jan 24 07:45:06 2020
@@ -0,0 +1,5 @@
+-----
+value-----
+
+-----
+value-----
Added:
velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/macro2.vtl
URL:
http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/macro2.vtl?rev=1873088&view=auto
==============================================================================
---
velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/macro2.vtl
(added)
+++
velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/macro2.vtl
Fri Jan 24 07:45:06 2020
@@ -0,0 +1,8 @@
+#macro(test)value#end
+-----
+#test
+-----
+
+-----
+#test()
+-----