You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@velocity.apache.org by by...@apache.org on 2009/01/19 15:30:03 UTC

svn commit: r735709 - in /velocity/engine/trunk/src: java/org/apache/velocity/runtime/directive/ java/org/apache/velocity/runtime/parser/ parser/

Author: byron
Date: Mon Jan 19 06:30:03 2009
New Revision: 735709

URL: http://svn.apache.org/viewvc?rev=735709&view=rev
Log:
VELOCITY-667 fix so that #macro without parenthesis throws an exception

Modified:
    velocity/engine/trunk/src/java/org/apache/velocity/runtime/directive/MacroParseException.java
    velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/Parser.java
    velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/ParserTokenManager.java
    velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/ParserTreeConstants.java
    velocity/engine/trunk/src/parser/Parser.jjt

Modified: velocity/engine/trunk/src/java/org/apache/velocity/runtime/directive/MacroParseException.java
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/src/java/org/apache/velocity/runtime/directive/MacroParseException.java?rev=735709&r1=735708&r2=735709&view=diff
==============================================================================
--- velocity/engine/trunk/src/java/org/apache/velocity/runtime/directive/MacroParseException.java (original)
+++ velocity/engine/trunk/src/java/org/apache/velocity/runtime/directive/MacroParseException.java Mon Jan 19 06:30:03 2009
@@ -77,6 +77,10 @@
         {
             return currentToken.next.beginLine;
         }
+        else if (currentToken != null)
+        {
+            return currentToken.beginLine;
+        }
         else
         {
             return -1;
@@ -94,6 +98,10 @@
         {
             return currentToken.next.beginColumn;
         }
+        else if (currentToken != null)
+        {
+            return currentToken.beginColumn;
+        }
         else
         {
             return -1;

Modified: velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/Parser.java
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/Parser.java?rev=735709&r1=735708&r2=735709&view=diff
==============================================================================
--- velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/Parser.java (original)
+++ velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/Parser.java Mon Jan 19 06:30:03 2009
@@ -864,6 +864,14 @@
             {if (true) return jjtn000;}
         }
       } else {
+        if (doItNow)  // doItNow is true if the directive is "macro"
+        {
+            // VELOCITY-667 We get here if we have a "#macro" construct
+            // without parenthesis which is a parse error
+            {if (true) throw new MacroParseException("A macro declaration requires at least a name argument"
+              , currentTemplateName, t);}
+        }
+
         /**
          * Not a directive
          */
@@ -2755,23 +2763,13 @@
     return false;
   }
 
-  final private boolean jj_3R_60() {
-    if (jj_scan_token(IDENTIFIER)) return true;
-    return false;
-  }
-
   final private boolean jj_3_10() {
     if (jj_3R_33()) return true;
     return false;
   }
 
-  final private boolean jj_3_4() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(31)) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_27()) jj_scanpos = xsp;
-    if (jj_3R_28()) return true;
+  final private boolean jj_3R_60() {
+    if (jj_scan_token(IDENTIFIER)) return true;
     return false;
   }
 
@@ -2790,8 +2788,13 @@
     return false;
   }
 
-  final private boolean jj_3R_65() {
-    if (jj_scan_token(STRING_LITERAL)) return true;
+  final private boolean jj_3_4() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(31)) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_27()) jj_scanpos = xsp;
+    if (jj_3R_28()) return true;
     return false;
   }
 
@@ -2822,11 +2825,6 @@
     return false;
   }
 
-  final private boolean jj_3R_40() {
-    if (jj_scan_token(INTEGER_LITERAL)) return true;
-    return false;
-  }
-
   final private boolean jj_3R_63() {
     if (jj_3R_73()) return true;
     return false;
@@ -2847,6 +2845,11 @@
     return false;
   }
 
+  final private boolean jj_3R_65() {
+    if (jj_scan_token(STRING_LITERAL)) return true;
+    return false;
+  }
+
   final private boolean jj_3R_70() {
     if (jj_scan_token(TRUE)) return true;
     return false;
@@ -2877,11 +2880,6 @@
     return false;
   }
 
-  final private boolean jj_3R_67() {
-    if (jj_scan_token(FLOATING_POINT_LITERAL)) return true;
-    return false;
-  }
-
   final private boolean jj_3R_84() {
     if (jj_3R_68()) return true;
     return false;
@@ -2892,6 +2890,11 @@
     return false;
   }
 
+  final private boolean jj_3R_40() {
+    if (jj_scan_token(INTEGER_LITERAL)) return true;
+    return false;
+  }
+
   final private boolean jj_3R_82() {
     if (jj_3R_66()) return true;
     return false;
@@ -2953,6 +2956,11 @@
     return false;
   }
 
+  final private boolean jj_3R_67() {
+    if (jj_scan_token(FLOATING_POINT_LITERAL)) return true;
+    return false;
+  }
+
   final private boolean jj_3R_72() {
     Token xsp;
     xsp = jj_scanpos;
@@ -3115,11 +3123,6 @@
     return false;
   }
 
-  final private boolean jj_3_2() {
-    if (jj_scan_token(DOUBLE_ESCAPE)) return true;
-    return false;
-  }
-
   final private boolean jj_3R_29() {
     Token xsp;
     xsp = jj_scanpos;
@@ -3173,6 +3176,11 @@
     return false;
   }
 
+  final private boolean jj_3_2() {
+    if (jj_scan_token(DOUBLE_ESCAPE)) return true;
+    return false;
+  }
+
   final private boolean jj_3R_94() {
     if (jj_3R_70()) return true;
     return false;
@@ -3232,11 +3240,6 @@
     return false;
   }
 
-  final private boolean jj_3R_26() {
-    if (jj_3R_40()) return true;
-    return false;
-  }
-
   final private boolean jj_3R_75() {
     if (jj_3R_24()) return true;
     return false;
@@ -3278,8 +3281,8 @@
     return false;
   }
 
-  final private boolean jj_3R_25() {
-    if (jj_3R_24()) return true;
+  final private boolean jj_3R_26() {
+    if (jj_3R_40()) return true;
     return false;
   }
 
@@ -3292,7 +3295,7 @@
     return false;
   }
 
-  final private boolean jj_3_1() {
+  final private boolean jj_3R_25() {
     if (jj_3R_24()) return true;
     return false;
   }
@@ -3316,6 +3319,11 @@
     return false;
   }
 
+  final private boolean jj_3_1() {
+    if (jj_3R_24()) return true;
+    return false;
+  }
+
   final private boolean jj_3R_68() {
     if (jj_scan_token(LEFT_CURLEY)) return true;
     Token xsp;
@@ -3363,18 +3371,28 @@
     return false;
   }
 
+  final private boolean jj_3R_90() {
+    if (jj_3R_73()) return true;
+    return false;
+  }
+
   final private boolean jj_3R_47() {
     if (jj_3R_68()) return true;
     return false;
   }
 
+  final private boolean jj_3R_89() {
+    if (jj_3R_73()) return true;
+    return false;
+  }
+
   final private boolean jj_3R_46() {
     if (jj_3R_67()) return true;
     return false;
   }
 
-  final private boolean jj_3R_90() {
-    if (jj_3R_73()) return true;
+  final private boolean jj_3R_37() {
+    if (jj_3R_40()) return true;
     return false;
   }
 
@@ -3383,13 +3401,8 @@
     return false;
   }
 
-  final private boolean jj_3R_89() {
-    if (jj_3R_73()) return true;
-    return false;
-  }
-
-  final private boolean jj_3R_37() {
-    if (jj_3R_40()) return true;
+  final private boolean jj_3R_34() {
+    if (jj_3R_60()) return true;
     return false;
   }
 
@@ -3406,12 +3419,17 @@
     return false;
   }
 
+  final private boolean jj_3R_36() {
+    if (jj_3R_24()) return true;
+    return false;
+  }
+
   final private boolean jj_3R_43() {
     if (jj_3R_65()) return true;
     return false;
   }
 
-  final private boolean jj_3R_34() {
+  final private boolean jj_3R_32() {
     if (jj_3R_60()) return true;
     return false;
   }
@@ -3421,11 +3439,6 @@
     return false;
   }
 
-  final private boolean jj_3R_36() {
-    if (jj_3R_24()) return true;
-    return false;
-  }
-
   final private boolean jj_3R_41() {
     if (jj_3R_24()) return true;
     return false;
@@ -3465,11 +3478,6 @@
     return false;
   }
 
-  final private boolean jj_3R_32() {
-    if (jj_3R_60()) return true;
-    return false;
-  }
-
   public ParserTokenManager token_source;
   public Token token, jj_nt;
   private int jj_ntk;

Modified: velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/ParserTokenManager.java
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/ParserTokenManager.java?rev=735709&r1=735708&r2=735709&view=diff
==============================================================================
--- velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/ParserTokenManager.java (original)
+++ velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/ParserTokenManager.java Mon Jan 19 06:30:03 2009
@@ -5225,7 +5225,7 @@
 protected CharStream input_stream;
 private final int[] jjrounds = new int[101];
 private final int[] jjstateSet = new int[202];
-StrBuilder image;
+StringBuffer image;
 int jjimageLen;
 int lengthOfMatch;
 protected char curChar;
@@ -5480,7 +5480,7 @@
    {
       case 71 :
          if (image == null)
-            image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
+            image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
          else
             image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
         /*
@@ -5498,7 +5498,7 @@
          break;
       case 72 :
          if (image == null)
-            image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
+            image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
          else
             image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
         if ( debugPrint )
@@ -5519,7 +5519,7 @@
    {
       case 15 :
          if (image == null)
-              image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen)));
+              image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen)));
          else
             image.append(input_stream.GetSuffix(jjimageLen));
          jjimageLen = 0;
@@ -5547,7 +5547,7 @@
          break;
       case 16 :
          if (image == null)
-              image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen)));
+              image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen)));
          else
             image.append(input_stream.GetSuffix(jjimageLen));
          jjimageLen = 0;
@@ -5575,7 +5575,7 @@
          break;
       case 17 :
          if (image == null)
-              image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen)));
+              image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen)));
          else
             image.append(input_stream.GetSuffix(jjimageLen));
          jjimageLen = 0;
@@ -5588,7 +5588,7 @@
          break;
       case 18 :
          if (image == null)
-              image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen)));
+              image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen)));
          else
             image.append(input_stream.GetSuffix(jjimageLen));
          jjimageLen = 0;
@@ -5602,7 +5602,7 @@
          break;
       case 19 :
          if (image == null)
-              image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen)));
+              image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen)));
          else
             image.append(input_stream.GetSuffix(jjimageLen));
          jjimageLen = 0;
@@ -5615,7 +5615,7 @@
          break;
       case 20 :
          if (image == null)
-              image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen)));
+              image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen)));
          else
             image.append(input_stream.GetSuffix(jjimageLen));
          jjimageLen = 0;
@@ -5653,7 +5653,7 @@
    {
       case 1 :
         if (image == null)
-            image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
+            image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
          else
             image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
      stateStackPush();
@@ -5661,14 +5661,14 @@
          break;
       case 2 :
         if (image == null)
-            image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
+            image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
          else
             image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
      stateStackPop();
          break;
       case 10 :
         if (image == null)
-            image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
+            image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
          else
             image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
         if (!inComment)
@@ -5684,14 +5684,14 @@
          break;
       case 11 :
         if (image == null)
-            image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
+            image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
          else
             image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
        RPARENHandler();
          break;
       case 12 :
         if (image == null)
-            image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
+            image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
          else
             image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
         /*
@@ -5704,7 +5704,7 @@
          break;
       case 14 :
         if (image == null)
-            image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
+            image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
          else
             image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
         if (! inComment)
@@ -5738,7 +5738,7 @@
          break;
       case 21 :
         if (image == null)
-            image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
+            image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
          else
             image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
         if (!inComment)
@@ -5756,7 +5756,7 @@
          break;
       case 25 :
         if (image == null)
-            image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
+            image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
          else
             image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
      inComment = false;
@@ -5764,7 +5764,7 @@
          break;
       case 26 :
         if (image == null)
-            image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
+            image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
          else
             image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
     inComment = false;
@@ -5772,7 +5772,7 @@
          break;
       case 27 :
         if (image == null)
-            image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
+            image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
          else
             image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
     inComment = false;
@@ -5780,7 +5780,7 @@
          break;
       case 28 :
         if (image == null)
-            image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
+            image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
          else
             image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
     inComment = false;
@@ -5788,7 +5788,7 @@
          break;
       case 32 :
         if (image == null)
-            image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
+            image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
          else
             image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
         /*
@@ -5802,7 +5802,7 @@
          break;
       case 35 :
         if (image == null)
-            image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
+            image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
          else
             image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
         if ( debugPrint )
@@ -5818,7 +5818,7 @@
          break;
       case 51 :
         if (image == null)
-            image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
+            image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
          else
             image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
         inDirective = false;
@@ -5826,21 +5826,21 @@
          break;
       case 52 :
         if (image == null)
-            image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
+            image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
          else
             image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
         SwitchTo(DIRECTIVE);
          break;
       case 53 :
         if (image == null)
-            image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
+            image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
          else
             image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
         SwitchTo(DIRECTIVE);
          break;
       case 54 :
         if (image == null)
-            image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
+            image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
          else
             image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
         inDirective = false;
@@ -5848,7 +5848,7 @@
          break;
       case 55 :
         if (image == null)
-            image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
+            image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
          else
             image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
         inDirective = false;
@@ -5856,7 +5856,7 @@
          break;
       case 57 :
         if (image == null)
-            image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
+            image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
          else
             image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
         /*
@@ -5880,7 +5880,7 @@
          break;
       case 58 :
         if (image == null)
-            image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
+            image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
          else
             image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
         /*
@@ -5896,7 +5896,7 @@
          break;
       case 68 :
         if (image == null)
-            image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
+            image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
          else
             image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
         /*
@@ -5919,7 +5919,7 @@
          break;
       case 70 :
         if (image == null)
-            image = new StrBuilder(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
+            image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))));
          else
             image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
         stateStackPop();

Modified: velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/ParserTreeConstants.java
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/ParserTreeConstants.java?rev=735709&r1=735708&r2=735709&view=diff
==============================================================================
--- velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/ParserTreeConstants.java (original)
+++ velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/ParserTreeConstants.java Mon Jan 19 06:30:03 2009
@@ -1,4 +1,4 @@
-/* Generated By:JJTree: Do not edit this line. /Users/bfoster/open/velocity/src/java/org/apache/velocity/runtime/parser/ParserTreeConstants.java */
+/* Generated By:JJTree: Do not edit this line. ParserTreeConstants.java */
 
 package org.apache.velocity.runtime.parser;
 

Modified: velocity/engine/trunk/src/parser/Parser.jjt
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/src/parser/Parser.jjt?rev=735709&r1=735708&r2=735709&view=diff
==============================================================================
--- velocity/engine/trunk/src/parser/Parser.jjt (original)
+++ velocity/engine/trunk/src/parser/Parser.jjt Mon Jan 19 06:30:03 2009
@@ -1552,6 +1552,14 @@
     }
     |
     {
+	if (doItNow)  // doItNow is true if the directive is "macro"
+	{
+            // VELOCITY-667 We get here if we have a "#macro" construct
+	    // without parenthesis which is a parse error
+            throw new MacroParseException("A macro declaration requires at least a name argument"
+              , currentTemplateName, t);
+	}
+	
         /**
          * Not a directive
          */