velocity-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cbris...@apache.org
Subject svn commit: r1854662 - in /velocity/engine/trunk: ./ src/changes/ velocity-engine-core/src/main/parser/ velocity-engine-core/src/test/java/org/apache/velocity/test/ velocity-engine-core/src/test/resources/conversion/ velocity-engine-core/src/test/resou...
Date Sat, 02 Mar 2019 19:01:09 GMT
Author: cbrisson
Date: Sat Mar  2 19:01:09 2019
New Revision: 1854662

URL: http://svn.apache.org/viewvc?rev=1854662&view=rev
Log:
[engine] Enhance space gobbling LINES mode: keep ending newline after directives wich don't start after a newline

Modified:
    velocity/engine/trunk/README.md
    velocity/engine/trunk/src/changes/changes.xml
    velocity/engine/trunk/velocity-engine-core/src/main/parser/Parser.jjt
    velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/EvaluateTestCase.java
    velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/SpaceGobblingTestCase.java
    velocity/engine/trunk/velocity-engine-core/src/test/resources/conversion/compare/matrix.cmp
    velocity/engine/trunk/velocity-engine-core/src/test/resources/conversion/matrix.vhtml
    velocity/engine/trunk/velocity-engine-core/src/test/resources/evaluate/compare/eval2.cmp
    velocity/engine/trunk/velocity-engine-core/src/test/resources/evaluate/eval2.vm
    velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/if.vtl.BC
    velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/if.vtl.LINES
    velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/if.vtl.NONE
    velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/if.vtl.STRUCTURED
    velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/set.vtl.LINES
    velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/set.vtl.STRUCTURED
    velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/if.vtl
    velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_1.cmp
    velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_1b.cmp
    velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_2.cmp
    velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_2b.cmp
    velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_3.cmp
    velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_3b.cmp
    velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_4.cmp
    velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_4b.cmp
    velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/parseMacro3.vm
    velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/block.vm
    velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/compare/block.cmp
    velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/compare/diabolical.cmp
    velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/diabolical.vm

Modified: velocity/engine/trunk/README.md
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/README.md?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/README.md (original)
+++ velocity/engine/trunk/README.md Sat Mar  2 19:01:09 2019
@@ -1,4 +1,3 @@
-Title: Apache Velocity
 
 # Apache Velocity
 

Modified: velocity/engine/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/src/changes/changes.xml?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/src/changes/changes.xml (original)
+++ velocity/engine/trunk/src/changes/changes.xml Sat Mar  2 19:01:09 2019
@@ -27,6 +27,9 @@
   <body>
     <release version="2.1" date="In subversion">
         <action type="fix" dev="cbrisson">
+            Enhance space gobbling ("lines" mode): do not eat ending newline when directive doesn't start after a newline.
+        </action>
+        <action type="fix" dev="cbrisson">
             Fix unary negate.
         </action>
         <action type="add" dev="cbrisson" issue="VELOCITY-892">

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=1854662&r1=1854661&r2=1854662&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 Sat Mar  2 19:01:09 2019
@@ -84,10 +84,10 @@ import org.apache.velocity.Template;
 import org.apache.velocity.exception.VelocityException;
 import org.apache.velocity.runtime.RuntimeServices;
 import org.apache.velocity.runtime.parser.node.*;
-import org.apache.velocity.runtime.directive.Directive;
-import org.apache.velocity.runtime.directive.Foreach;
+import org.apache.velocity.runtime.directive.*;
 import org.apache.velocity.runtime.directive.MacroParseException;
 import org.apache.velocity.runtime.RuntimeConstants;
+import static org.apache.velocity.runtime.RuntimeConstants.SpaceGobbling;
 
 import org.slf4j.Logger;
 
@@ -108,6 +108,35 @@ import org.slf4j.Logger;
 public class Parser
 {
     /**
+     * Parser debugging flag.
+     * When debug is active, javacc Parser will contain (among other things)
+     * a trace_call() method. So we use the presence of this method to
+     * initialize our flag.
+     */
+    private static boolean debugParser;
+    static
+    {
+        try
+        {
+            Parser.class.getDeclaredMethod("trace_call", String.class);
+            debugParser = true;
+        }
+        catch(NoSuchMethodException nsfe)
+        {
+            debugParser = false;
+        }
+    }
+
+    /**
+     * Our own trace method. Use sparsingly in production, since each
+     * and every call will introduce an execution branch and slow down parsing.
+     */
+    public static void trace(String message)
+    {
+        if (debugParser) System.out.println(message);
+    }
+
+    /**
      * Keep track of defined macros, used for escape processing
      */
     private Map macroNames = new HashMap();
@@ -466,19 +495,24 @@ TOKEN_MGR_DECLS:
     private int curlyLevel = 0;
     List stateStack = new ArrayList(50);
 
-    /* More debug output */
-    public boolean debugPrint = false;
-
     private boolean inComment;
     public  boolean inSet;
 
     /**
+     * Our own trace method. Use sparsingly in production, since each
+     * and every call will introduce an execution branch and slow down parsing.
+     */
+    public static void trace(String message)
+    {
+        Parser.trace(message);
+    }
+    
+    /**
      * Switches to a new state (add some log to the default method)
      */
      public void switchTo(int lexState)
      {
-        if( debugPrint )
-            System.out.println(" switch to " + lexStateNames[lexState]);
+        trace(" switch to " + lexStateNames[lexState]);
         SwitchTo(lexState);
      }
 
@@ -502,8 +536,7 @@ TOKEN_MGR_DECLS:
             return false;
         }
 
-        if( debugPrint )
-            System.out.println(" stack pop (" + stateStack.size() + ")");
+        trace(" stack pop (" + stateStack.size() + ")");
         lparen = s.lparen;
         rparen = s.rparen;
         curlyLevel = s.curlyLevel;
@@ -523,9 +556,7 @@ TOKEN_MGR_DECLS:
      */
     public boolean stateStackPush()
     {
-        if( debugPrint )
-            System.out.println(" (" + stateStack.size() + ") pushing cur state : " +
-                lexStateNames[curLexState] );
+        trace(" (" + stateStack.size() + ") pushing cur state : " + lexStateNames[curLexState] );
 
         ParserState s = new ParserState();
         s.lparen = lparen;
@@ -818,8 +849,7 @@ TOKEN:
     {
         if (! inComment)
         {
-            if ( debugPrint )
-                System.out.println(" #set :  going to DIRECTIVE" );
+            trace(" #set :  going to DIRECTIVE" );
 
             stateStackPush();
             inSet = true;
@@ -868,8 +898,7 @@ MORE :
 
             int preReferenceState = parser.getRuntimeServices().isDashAllowedInIdentifiers() ? PRE_OLD_REFERENCE : PRE_REFERENCE;
 
-            if ( debugPrint )
-                System.out.println( " $  : going to " + lexStateNames[preReferenceState]);
+            trace( " $  : going to " + lexStateNames[preReferenceState]);
 
             /* do not push PRE states */
             if (curLexState != PRE_REFERENCE && curLexState != PRE_DIRECTIVE && curLexState != PRE_OLD_REFERENCE)
@@ -896,8 +925,7 @@ MORE :
 
             int preReferenceState = parser.getRuntimeServices().isDashAllowedInIdentifiers() ? PRE_OLD_REFERENCE : PRE_REFERENCE;
 
-            if ( debugPrint )
-                System.out.println( " $  : going to " + lexStateNames[preReferenceState]);
+            trace( " $  : going to " + lexStateNames[preReferenceState]);
 
             /* do not push PRE states */
             if (curLexState != PRE_REFERENCE && curLexState != PRE_DIRECTIVE && curLexState != PRE_OLD_REFERENCE)
@@ -967,8 +995,7 @@ MORE :
                 stateStackPop();
             }
 
-            if ( debugPrint )
-                System.out.println(" # :  going to PRE_DIRECTIVE" );
+            trace(" # :  going to PRE_DIRECTIVE" );
 
             /* do not push PRE states */
             if (curLexState != PRE_REFERENCE && curLexState != PRE_DIRECTIVE && curLexState != PRE_OLD_REFERENCE)
@@ -1086,8 +1113,7 @@ TOKEN:
     <WHITESPACE : ([" ","\t"])+>
 |   <NEWLINE : ("\n" | "\r" | "\r\n") >
     {
-        if ( debugPrint )
-            System.out.println(" NEWLINE :");
+        trace(" NEWLINE :");
 
         if (inSet)
             inSet = false;
@@ -1344,8 +1370,7 @@ TOKEN:
 
         matchedToken.image = ".";
 
-        if ( debugPrint )
-            System.out.print("DOT : switching to " + REFMODIFIER);
+        trace("DOT : switching to " + REFMODIFIER);
         switchTo(REFMODIFIER);
 
     }
@@ -1389,8 +1414,7 @@ SPECIAL_TOKEN :
 
         input_stream.backup(1);
 
-        if ( debugPrint )
-            System.out.print("REF_TERM :");
+        trace("REF_TERM :");
 
         stateStackPop();
     }
@@ -1401,8 +1425,7 @@ SPECIAL_TOKEN :
 {
     <DIRECTIVE_TERMINATOR: ~[] >
     {
-        if ( debugPrint )
-            System.out.print("DIRECTIVE_TERM :");
+        trace("DIRECTIVE_TERM :");
 
         input_stream.backup(1);
         stateStackPop();
@@ -1448,20 +1471,19 @@ SimpleNode process() :
  */
 boolean Statement(boolean afterNewline) #void :
 {
-    boolean b = false;
 }
 {
-    LOOKAHEAD( { getToken(1).kind == IF_DIRECTIVE || afterNewline && getToken(1).kind == WHITESPACE && getToken(2).kind == IF_DIRECTIVE } ) b = IfStatement() { return b ; }
+    LOOKAHEAD( { getToken(1).kind == IF_DIRECTIVE || afterNewline && getToken(1).kind == WHITESPACE && getToken(2).kind == IF_DIRECTIVE } ) afterNewline = IfStatement(afterNewline) { return afterNewline; }
 |   LOOKAHEAD(2) Reference() { return false; }
-|   LOOKAHEAD(2) Comment() { return false; }
+|   LOOKAHEAD(2) afterNewline = Comment() { return afterNewline; }
 |   Textblock() { return false; }
-|   LOOKAHEAD( { getToken(1).kind == SET_DIRECTIVE || afterNewline && getToken(1).kind == WHITESPACE && getToken(2).kind == SET_DIRECTIVE } ) b = SetDirective() { return b; }
+|   LOOKAHEAD( { getToken(1).kind == SET_DIRECTIVE || afterNewline && getToken(1).kind == WHITESPACE && getToken(2).kind == SET_DIRECTIVE } ) afterNewline = SetDirective(afterNewline) { return afterNewline; }
 |   EscapedDirective() { return false; }
 |   Escape() { return false; }
-|   LOOKAHEAD( { getToken(1).kind == WORD || getToken(1).kind == BRACKETED_WORD || afterNewline && getToken(1).kind == WHITESPACE && ( getToken(2).kind == WORD || getToken(2).kind == BRACKETED_WORD ) } ) b = Directive() { return b; }
-|   b = Text() { return b; }
+|   LOOKAHEAD( { getToken(1).kind == WORD || getToken(1).kind == BRACKETED_WORD || afterNewline && getToken(1).kind == WHITESPACE && ( getToken(2).kind == WORD || getToken(2).kind == BRACKETED_WORD ) } ) afterNewline = Directive(afterNewline) { return afterNewline; }
+|   afterNewline = Text() { return afterNewline; }
 |   (<NEWLINE>) #Text { return true; }
-|   (<INLINE_TEXT> ((<TEXT>)? { b = true; }) ) #Text { return b; }
+|   (((<INLINE_TEXT>) { afterNewline = false; } ) ((<TEXT>) { afterNewline = true; })? ) #Text { return afterNewline; }
 |   (<WHITESPACE>) #Text { return false; }
 |   (<SUFFIX>) #Text { return true; }
 }
@@ -1541,11 +1563,11 @@ void Escape() : {}
 
 }
 
-void Comment() : {}
+boolean Comment() : {}
 {
-	<SINGLE_LINE_COMMENT_START> ( <SINGLE_LINE_COMMENT> ) ?
-|   <MULTI_LINE_COMMENT>
-|   <FORMAL_COMMENT>
+	<SINGLE_LINE_COMMENT_START> ( <SINGLE_LINE_COMMENT> ) ? { return true; }
+|   <MULTI_LINE_COMMENT> { return false; }
+|   <FORMAL_COMMENT> { return false; }
 }
 
 void Textblock() : {}
@@ -1651,7 +1673,7 @@ void DirectiveAssign() : {}
  *     #foo( arg+ )
  * @return true if ends with a newline
  */
-boolean Directive() :
+boolean Directive(boolean afterNewline) :
 {
     Token id = null, t = null, u = null, end = null, _else = null;
     int argType;
@@ -1661,14 +1683,15 @@ boolean Directive() :
     boolean isVM = false;
     boolean isMacro = false;
     ArrayList argtypes = new ArrayList(4);
-    boolean afterNewline = false, newlineAtEnd = false;
     String blockPrefix = "";
     ASTBlock block = null, elseBlock = null;
+    boolean newlineAtStart = afterNewline;
 }
 {
     [
       (t = <WHITESPACE>)
       {
+          // only possible if not after new line
           jjtThis.setPrefix(t.image);
           t = null;
       }
@@ -1795,18 +1818,24 @@ boolean Directive() :
           token_source.stateStackPop();
       }
     )
+    { afterNewline = false; }
     [
-      LOOKAHEAD(2) ( [ ( t = <WHITESPACE> ) ] ( u = <NEWLINE> ) )
+      // Conditions where whitespace and newline postfix is eaten by space gobbling at this point:
+      // - block directive
+      // - new line before directive
+      // - backward compatibility mode
+      // - #include() or #parse()
+      LOOKAHEAD(2, { directiveType != Directive.LINE || newlineAtStart || rsvc.getSpaceGobbling() == SpaceGobbling.BC || d != null && (d instanceof Include || d instanceof Parse) })
+        ( [ ( t = <WHITESPACE> ) ] ( u = <NEWLINE> ) )
       {
+          afterNewline = true;
           if (directiveType == Directive.LINE)
           {
               jjtThis.setPostfix(t == null ? u.image : t.image + u.image);
-              newlineAtEnd = true;
           }
           else
           {
               blockPrefix = (t == null ? u.image : t.image + u.image);
-              afterNewline = true;
           }
           t = u = null;
       }
@@ -1818,7 +1847,7 @@ boolean Directive() :
         }
         if (directiveType  == Directive.LINE)
         {
-            return newlineAtEnd;
+            return afterNewline;
         }
     }
     /*
@@ -1893,17 +1922,22 @@ boolean Directive() :
     ]
     (
       (end = <END>)
+      { afterNewline = false; }
       [
-        LOOKAHEAD(2) ( [ ( t = <WHITESPACE> ) ] ( u = <NEWLINE> ) )
+        LOOKAHEAD(2, { newlineAtStart || rsvc.getSpaceGobbling() == SpaceGobbling.BC })
+          ( [ ( t = <WHITESPACE> ) ] ( u = <NEWLINE> ) )
         {
             jjtThis.setPostfix(t == null ? u.image : t.image + u.image);
             t = u = null;
-            newlineAtEnd = true;
+            afterNewline = true;
         }
       ]
       {
           int pos = end.image.lastIndexOf('#');
-          if (pos > 0) block.setMorePostfix(end.image.substring(0, pos));
+          if (pos > 0)
+          {
+              block.setMorePostfix(end.image.substring(0, pos));
+          }
       }
     )
     {
@@ -1928,7 +1962,7 @@ boolean Directive() :
         /*
          *  VM : end
          */
-        return newlineAtEnd;
+        return afterNewline;
     }
 }
 
@@ -2103,15 +2137,16 @@ boolean Text() :
  *
  * ----------------------------------------------------------------------*/
 
-boolean IfStatement() :
+boolean IfStatement(boolean afterNewline) :
 {
     Token t = null, u = null, end = null;
     ASTBlock lastBlock = null;
-    boolean afterNewline = false, newlineAtEnd = false;
+    boolean newlineAtStart = afterNewline;
 }
 {
     [ ( t = <WHITESPACE> )
         {
+            // only possible if not after new line
             jjtThis.setPrefix(t.image);
             t = null;
         }
@@ -2137,8 +2172,8 @@ boolean IfStatement() :
         }
     ) #Block
     [ LOOKAHEAD( { getToken(1).kind == ELSEIF || (afterNewline && getToken(1).kind == WHITESPACE && getToken(2).kind == ELSEIF) })
-      ( LOOKAHEAD( { getToken(1).kind == ELSEIF || (afterNewline && getToken(1).kind == WHITESPACE && getToken(2).kind == ELSEIF) }) ( lastBlock = ElseIfStatement(lastBlock) { afterNewline = lastBlock.endsWithNewline; } ))+ ]
-    [ LOOKAHEAD( { getToken(1).kind == ELSE || (afterNewline && getToken(1).kind == WHITESPACE && getToken(2).kind == ELSE) } ) lastBlock = ElseStatement(lastBlock) { afterNewline = lastBlock.endsWithNewline; } ]
+      ( LOOKAHEAD( { getToken(1).kind == ELSEIF || (afterNewline && getToken(1).kind == WHITESPACE && getToken(2).kind == ELSEIF) }) ( lastBlock = ElseIfStatement(lastBlock, afterNewline) { afterNewline = lastBlock.endsWithNewline; } ))+ ]
+    [ LOOKAHEAD( { getToken(1).kind == ELSE || (afterNewline && getToken(1).kind == WHITESPACE && getToken(2).kind == ELSE) } ) lastBlock = ElseStatement(lastBlock, afterNewline) { afterNewline = lastBlock.endsWithNewline; } ]
     [ LOOKAHEAD( 1, { afterNewline } ) ( t = <WHITESPACE> )
         {
             lastBlock.setPostfix(t.image);
@@ -2146,11 +2181,13 @@ boolean IfStatement() :
         }
     ]
     (end = <END>)
+    { afterNewline = false; }
     [
-        LOOKAHEAD(2) ( [ ( t = <WHITESPACE> ) ] ( u = <NEWLINE> ) )
+        LOOKAHEAD(2, { newlineAtStart || rsvc.getSpaceGobbling() == SpaceGobbling.BC } )
+          ( [ ( t = <WHITESPACE> ) ] ( u = <NEWLINE> ) )
         {
              jjtThis.setPostfix(t == null ? u.image : t.image + u.image);
-             newlineAtEnd = true;
+             afterNewline = true;
         }
     ]
     {
@@ -2159,15 +2196,14 @@ boolean IfStatement() :
         {
             lastBlock.setMorePostfix(end.image.substring(0, pos));
         }
-        return newlineAtEnd;
+        return afterNewline;
     }
 }
 
-ASTBlock ElseStatement(ASTBlock previousBlock) :
+ASTBlock ElseStatement(ASTBlock previousBlock, boolean afterNewline) :
 {
     Token t = null, u = null, _else = null;
     ASTBlock block = null;
-    boolean afterNewline = false;
 }
 {
    [ ( t = <WHITESPACE> )
@@ -2203,11 +2239,10 @@ ASTBlock ElseStatement(ASTBlock previous
     }
 }
 
-ASTBlock ElseIfStatement(ASTBlock previousBlock) :
+ASTBlock ElseIfStatement(ASTBlock previousBlock, boolean afterNewline) :
 {
     Token t = null, u = null, elseif = null;
     ASTBlock block = null;
-    boolean afterNewline = false;
 }
 {
   [ ( t = <WHITESPACE> )
@@ -2249,7 +2284,7 @@ ASTBlock ElseIfStatement(ASTBlock previo
  *   #set( expr )
  *   #set expr
  */
-boolean SetDirective() :
+boolean SetDirective(boolean afterNewline) :
 {
     Token t = null, u = null;
     boolean endsWithNewline = false;
@@ -2257,6 +2292,7 @@ boolean SetDirective() :
 {
     [ ( t = <WHITESPACE> )
         {
+            // only possible after new line
             jjtThis.setPrefix(t.image);
             t = null;
         }
@@ -2270,7 +2306,8 @@ boolean SetDirective() :
         token_source.inSet = false;
     }
     [
-        LOOKAHEAD(2) ( [ ( t = <WHITESPACE> ) ] ( u = <NEWLINE> ) )
+        LOOKAHEAD(2, { afterNewline || rsvc.getSpaceGobbling() == SpaceGobbling.BC } )
+          ( [ ( t = <WHITESPACE> ) ] ( u = <NEWLINE> ) )
         {
              jjtThis.setPostfix(t == null ? u.image : t.image + u.image);
              endsWithNewline = true;

Modified: velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/EvaluateTestCase.java
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/EvaluateTestCase.java?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/EvaluateTestCase.java (original)
+++ velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/EvaluateTestCase.java Sat Mar  2 19:01:09 2019
@@ -91,6 +91,13 @@ public class EvaluateTestCase extends Ba
         assureResultsDirectoryExists(RESULTS_DIR);
     }
 
+    @Override
+    protected void setUpEngine(VelocityEngine engine)
+    {
+        // extension hook
+    }
+
+
     /**
      * Test basic functionality.
      * @throws Exception

Modified: velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/SpaceGobblingTestCase.java
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/SpaceGobblingTestCase.java?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/SpaceGobblingTestCase.java (original)
+++ velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/SpaceGobblingTestCase.java Sat Mar  2 19:01:09 2019
@@ -128,7 +128,7 @@ public class SpaceGobblingTestCase exten
             String result = getFileContents(RESULT_DIR, templateFile, mode.toString());
             String compare = getFileContents(COMPARE_DIR, templateFile, mode.toString());
 
-            String msg = "Processed template did not match expected output\n"+
+            String msg = "Processed template did not match expected output for template " + templateFile + " and mode " + mode + "\n"+
                     "-----Result-----\n"+ result +
                     "----Expected----\n"+ compare +
                     "----------------";

Modified: velocity/engine/trunk/velocity-engine-core/src/test/resources/conversion/compare/matrix.cmp
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/conversion/compare/matrix.cmp?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/test/resources/conversion/compare/matrix.cmp (original)
+++ velocity/engine/trunk/velocity-engine-core/src/test/resources/conversion/compare/matrix.cmp Sat Mar  2 19:01:09 2019
@@ -40,501 +40,463 @@
             provided &rarr;<br/>
             expected &darr;
           </th>
-          <th>  boolean
-</th>
-          <th>  char
-</th>
-          <th>  byte
-</th>
-          <th>  short
-</th>
-          <th>  int
-</th>
-          <th>  long
-</th>
-          <th>  float
-</th>
-          <th>  double
-</th>
-          <th>  Boolean
-</th>
-          <th>  Character
-</th>
-          <th>  Byte
-</th>
-          <th>  Short
-</th>
-          <th>  Integer
-</th>
-          <th>  Long
-</th>
-          <th>  Float
-</th>
-          <th>  Double
-</th>
-          <th>  Number
-</th>
-          <th>  String
-</th>
-          <th>  Object
-</th>
+          <th>boolean</th>
+          <th>char</th>
+          <th>byte</th>
+          <th>short</th>
+          <th>int</th>
+          <th>long</th>
+          <th>float</th>
+          <th>double</th>
+          <th>Boolean</th>
+          <th>Character</th>
+          <th>Byte</th>
+          <th>Short</th>
+          <th>Integer</th>
+          <th>Long</th>
+          <th>Float</th>
+          <th>Double</th>
+          <th>Number</th>
+          <th>String</th>
+          <th>Object</th>
           <th>null</th>
         </tr>
         <tr>
-          <th>  boolean
-</th>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td><span class="none">none</span></td>
-        </tr>
-        <tr>
-          <th>  char
-</th>
-          <td> <span class="none">none</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td><span class="none">none</span></td>
-        </tr>
-        <tr>
-          <th>  byte
-</th>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td><span class="none">none</span></td>
-        </tr>
-        <tr>
-          <th>  short
-</th>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td><span class="none">none</span></td>
-        </tr>
-        <tr>
-          <th>  int
-</th>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td><span class="none">none</span></td>
-        </tr>
-        <tr>
-          <th>  long
-</th>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td><span class="none">none</span></td>
-        </tr>
-        <tr>
-          <th>  float
-</th>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td><span class="none">none</span></td>
-        </tr>
-        <tr>
-          <th>  double
-</th>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td><span class="none">none</span></td>
-        </tr>
-        <tr>
-          <th>  Boolean
-</th>
-          <td>  <span class="implicit">implicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="strict">strict</span></td>
-        </tr>
-        <tr>
-          <th>  Character
-</th>
-          <td> <span class="none">none</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="strict">strict</span></td>
-        </tr>
-        <tr>
-          <th>  Byte
-</th>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="strict">strict</span></td>
-        </tr>
-        <tr>
-          <th>  Short
-</th>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="strict">strict</span></td>
-        </tr>
-        <tr>
-          <th>  Integer
-</th>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="strict">strict</span></td>
-        </tr>
-        <tr>
-          <th>  Long
-</th>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="strict">strict</span></td>
-        </tr>
-        <tr>
-          <th>  Float
-</th>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="strict">strict</span></td>
-        </tr>
-        <tr>
-          <th>  Double
-</th>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="strict">strict</span></td>
-        </tr>
-        <tr>
-          <th>  Number
-</th>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="none">none</span></td>
-          <td> <span class="strict">strict</span></td>
-        </tr>
-        <tr>
-          <th>  String
-</th>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="explicit">explicit</span></td>
-          <td> <span class="strict">strict</span></td>
-        </tr>
-        <tr>
-          <th>  Object
-</th>
-          <td>  <span class="implicit">implicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td>  <span class="implicit">implicit</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
-          <td> <span class="strict">strict</span></td>
+          <th>boolean</th>
+          <td><span class="strict">strict</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+        </tr>
+        <tr>
+          <th>char</th>
+          <td><span class="none">none</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+        </tr>
+        <tr>
+          <th>byte</th>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+        </tr>
+        <tr>
+          <th>short</th>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+        </tr>
+        <tr>
+          <th>int</th>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+        </tr>
+        <tr>
+          <th>long</th>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+        </tr>
+        <tr>
+          <th>float</th>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+        </tr>
+        <tr>
+          <th>double</th>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+        </tr>
+        <tr>
+          <th>Boolean</th>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="strict">strict</span></td>
+        </tr>
+        <tr>
+          <th>Character</th>
+          <td><span class="none">none</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="strict">strict</span></td>
+        </tr>
+        <tr>
+          <th>Byte</th>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="strict">strict</span></td>
+        </tr>
+        <tr>
+          <th>Short</th>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="strict">strict</span></td>
+        </tr>
+        <tr>
+          <th>Integer</th>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="strict">strict</span></td>
+        </tr>
+        <tr>
+          <th>Long</th>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="strict">strict</span></td>
+        </tr>
+        <tr>
+          <th>Float</th>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="strict">strict</span></td>
+        </tr>
+        <tr>
+          <th>Double</th>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="strict">strict</span></td>
+        </tr>
+        <tr>
+          <th>Number</th>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="none">none</span></td>
+          <td><span class="strict">strict</span></td>
+        </tr>
+        <tr>
+          <th>String</th>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="explicit">explicit</span></td>
+          <td><span class="strict">strict</span></td>
+        </tr>
+        <tr>
+          <th>Object</th>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="implicit">implicit</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
+          <td><span class="strict">strict</span></td>
         </tr>
       </thead>
       <tbody>

Modified: velocity/engine/trunk/velocity-engine-core/src/test/resources/conversion/matrix.vhtml
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/conversion/matrix.vhtml?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/test/resources/conversion/matrix.vhtml (original)
+++ velocity/engine/trunk/velocity-engine-core/src/test/resources/conversion/matrix.vhtml Sat Mar  2 19:01:09 2019
@@ -3,7 +3,7 @@
   #if($string.startsWith("class java.lang."))
     #set($string = $string.substring(16))
   #end
-  $string
+$string##
 #end
 
 #macro(cell,$type)<span class="$type">$type</span>#end

Modified: velocity/engine/trunk/velocity-engine-core/src/test/resources/evaluate/compare/eval2.cmp
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/evaluate/compare/eval2.cmp?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/test/resources/evaluate/compare/eval2.cmp (original)
+++ velocity/engine/trunk/velocity-engine-core/src/test/resources/evaluate/compare/eval2.cmp Sat Mar  2 19:01:09 2019
@@ -3,5 +3,7 @@ basic string
 test 2: a: 22
 
 test 3: inner eval: 33
+
 basic string
 test 4: inner eval: 44
+

Modified: velocity/engine/trunk/velocity-engine-core/src/test/resources/evaluate/eval2.vm
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/evaluate/eval2.vm?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/test/resources/evaluate/eval2.vm (original)
+++ velocity/engine/trunk/velocity-engine-core/src/test/resources/evaluate/eval2.vm Sat Mar  2 19:01:09 2019
@@ -2,7 +2,7 @@
 ## Test evaluate preserves macros 
 ##
 #macro (test $a)
-a: $a
+a: $a##
 #end
 test 1: #test(12)
 #evaluate("basic string")

Modified: velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/if.vtl.BC
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/if.vtl.BC?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/if.vtl.BC (original)
+++ velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/if.vtl.BC Sat Mar  2 19:01:09 2019
@@ -56,4 +56,5 @@ y yyy
         t
         t
         t
-  
\ No newline at end of file
+  
+line1  foo line2

Modified: velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/if.vtl.LINES
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/if.vtl.LINES?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/if.vtl.LINES (original)
+++ velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/if.vtl.LINES Sat Mar  2 19:01:09 2019
@@ -56,3 +56,6 @@ y yyy
     t
     t
     t
+
+line1  foo 
+line2

Modified: velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/if.vtl.NONE
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/if.vtl.NONE?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/if.vtl.NONE (original)
+++ velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/if.vtl.NONE Sat Mar  2 19:01:09 2019
@@ -238,3 +238,6 @@ y
    
     t
   
+
+line1  foo 
+line2

Modified: velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/if.vtl.STRUCTURED
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/if.vtl.STRUCTURED?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/if.vtl.STRUCTURED (original)
+++ velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/if.vtl.STRUCTURED Sat Mar  2 19:01:09 2019
@@ -56,3 +56,6 @@ t
   t
   t
   t
+
+line1  foo 
+line2

Modified: velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/set.vtl.LINES
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/set.vtl.LINES?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/set.vtl.LINES (original)
+++ velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/set.vtl.LINES Sat Mar  2 19:01:09 2019
@@ -1,3 +1,4 @@
  postfix
  postfix
-prefix prefix  postfix
+prefix 
+prefix  postfix

Modified: velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/set.vtl.STRUCTURED
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/set.vtl.STRUCTURED?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/set.vtl.STRUCTURED (original)
+++ velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/compare/set.vtl.STRUCTURED Sat Mar  2 19:01:09 2019
@@ -1,3 +1,4 @@
  postfix
  postfix
-prefix prefix  postfix
+prefix 
+prefix  postfix

Modified: velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/if.vtl
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/if.vtl?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/if.vtl (original)
+++ velocity/engine/trunk/velocity-engine-core/src/test/resources/gobbling/if.vtl Sat Mar  2 19:01:09 2019
@@ -646,3 +646,6 @@
   #{else} 
     t
   #end
+
+line1 #if(true) foo #else bar #end
+line2

Modified: velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_1.cmp
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_1.cmp?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_1.cmp (original)
+++ velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_1.cmp Sat Mar  2 19:01:09 2019
@@ -1,3 +1,4 @@
 
 2 4
 
+

Modified: velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_1b.cmp
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_1b.cmp?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_1b.cmp (original)
+++ velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_1b.cmp Sat Mar  2 19:01:09 2019
@@ -1,3 +1,4 @@
 
 8 6
 
+

Modified: velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_2.cmp
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_2.cmp?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_2.cmp (original)
+++ velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_2.cmp Sat Mar  2 19:01:09 2019
@@ -1,3 +1,4 @@
 
 2 4
 
+

Modified: velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_2b.cmp
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_2b.cmp?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_2b.cmp (original)
+++ velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_2b.cmp Sat Mar  2 19:01:09 2019
@@ -1,3 +1,4 @@
 
 8 6
 
+

Modified: velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_3.cmp
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_3.cmp?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_3.cmp (original)
+++ velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_3.cmp Sat Mar  2 19:01:09 2019
@@ -1,3 +1,4 @@
 
 2 4
 
+

Modified: velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_3b.cmp
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_3b.cmp?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_3b.cmp (original)
+++ velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_3b.cmp Sat Mar  2 19:01:09 2019
@@ -1,3 +1,4 @@
 
 8 6
 
+

Modified: velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_4.cmp
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_4.cmp?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_4.cmp (original)
+++ velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_4.cmp Sat Mar  2 19:01:09 2019
@@ -1,3 +1,4 @@
 
 2 4
 
+

Modified: velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_4b.cmp
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_4b.cmp?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_4b.cmp (original)
+++ velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/compare/parseMacro1_4b.cmp Sat Mar  2 19:01:09 2019
@@ -1,3 +1,4 @@
 
 8 6
 
+

Modified: velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/parseMacro3.vm
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/parseMacro3.vm?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/parseMacro3.vm (original)
+++ velocity/engine/trunk/velocity-engine-core/src/test/resources/parsemacros/parseMacro3.vm Sat Mar  2 19:01:09 2019
@@ -2,4 +2,3 @@
 #parse("vm_library2.vm")
 #foo(1) #bar(2)
 
-

Modified: velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/block.vm
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/block.vm?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/block.vm (original)
+++ velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/block.vm Sat Mar  2 19:01:09 2019
@@ -73,22 +73,15 @@ True
 #end
 -----------
 
--- Third Test : tight tight tight.  Note that \#end eats the \n, which is NOT what people expect, I think.
+-- Third Test : tight tight tight.
 -- one blank line follows
 
 blargh #if(true)This follows blargh#end
-blargh#if(true)This immedately follows blargh with a following newline
-#end
 
--- Fourth Test : another tight tight tight. If you want the \n, then put one *after* the content, not a space after \#end.
--- one blank line follows
-
-blargh #if(true)This follows blargh
-#end
 blargh#if(true)This immedately follows blargh with a following newline
 #end
 
--- Fifth Test : different kind of tight. blank line follows
+-- Fourth Test : different kind of tight. blank line follows
 
 blargh
 #if(true)

Modified: velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/compare/block.cmp
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/compare/block.cmp?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/compare/block.cmp (original)
+++ velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/compare/block.cmp Sat Mar  2 19:01:09 2019
@@ -22,18 +22,13 @@ One blank line follows
 True
 -----------
 
--- Third Test : tight tight tight.  Note that #end eats the \n, which is NOT what people expect, I think.
--- one blank line follows
-
-blargh This follows blarghblarghThis immedately follows blargh with a following newline
-
--- Fourth Test : another tight tight tight. If you want the \n, then put one *after* the content, not a space after #end.
+-- Third Test : tight tight tight.
 -- one blank line follows
 
 blargh This follows blargh
 blarghThis immedately follows blargh with a following newline
 
--- Fifth Test : different kind of tight. blank line follows
+-- Fourth Test : different kind of tight. blank line follows
 
 blargh
 blargh2

Modified: velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/compare/diabolical.cmp
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/compare/diabolical.cmp?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/compare/diabolical.cmp (original)
+++ velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/compare/diabolical.cmp Sat Mar  2 19:01:09 2019
@@ -49,5 +49,4 @@ $nullToString.toString()
 
 
 
-$
-$fooo$fooo.$fooo.bar$fooo.bar($fooo.bar()
\ No newline at end of file
+$$fooo$fooo.$fooo.bar$fooo.bar($fooo.bar()
\ No newline at end of file

Modified: velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/diabolical.vm
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/diabolical.vm?rev=1854662&r1=1854661&r2=1854662&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/diabolical.vm (original)
+++ velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/diabolical.vm Sat Mar  2 19:01:09 2019
@@ -66,9 +66,9 @@ $nullToString.toString()
 $!nullToString
 $!nullToString.toString()
 
-$#set($foo = $bar)
-$fooo#set($foo = $bar)
-$fooo.#set($foo = $bar)
-$fooo.bar#set($foo = $bar)
-$fooo.bar(#set($foo = $bar)
-$fooo.bar()#set($foo = $bar)
+$#set($foo = $bar)##
+$fooo#set($foo = $bar)##
+$fooo.#set($foo = $bar)##
+$fooo.bar#set($foo = $bar)##
+$fooo.bar(#set($foo = $bar)##
+$fooo.bar()#set($foo = $bar)##



Mime
View raw message