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()
+-----


Reply via email to