a little bug fixed in the switch labels
[phpeclipse.git] / net.sourceforge.phpeclipse / src / test / PHPParser.jj
index 0637cf1..35e1229 100644 (file)
@@ -2029,21 +2029,28 @@ StringLiteral evaluableString() :
 FunctionCall Arguments(final Expression func) :
 {
 Expression[] args = null;
-final Token token;
+final Token token,lparen;
 }
 {
-  <LPAREN> [ args = ArgumentList() ]
+  lparen = <LPAREN> [ args = ArgumentList() ]
   try {
     token = <RPAREN>
     {return new FunctionCall(func,args,token.sourceEnd);}
   } catch (ParseException e) {
     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ')' expected to close the argument list";
     errorLevel   = ERROR;
-    errorStart = args[args.length-1].sourceEnd+1;
-    errorEnd   = args[args.length-1].sourceEnd+1;
+    if (args == null) {
+        errorStart = lparen.sourceEnd+1;
+        errorEnd   = lparen.sourceEnd+2;
+    } else {
+        errorStart = args[args.length-1].sourceEnd+1;
+        errorEnd   = args[args.length-1].sourceEnd+2;
+    }
     processParseExceptionDebug(e);
   }
-  {return new FunctionCall(func,args,args[args.length-1].sourceEnd);}
+  {
+  int sourceEnd = (args == null && args.length != 0) ? lparen.sourceEnd+1 : args[args.length-1].sourceEnd;
+  return new FunctionCall(func,args,sourceEnd);}
 }
 
 /**
@@ -2839,7 +2846,6 @@ Expression SwitchLabel() :
   }
   try {
     token = <COLON>
-    {return expr;}
   } catch (ParseException e) {
     errorMessage = "':' expected after case expression";
     errorLevel   = ERROR;
@@ -2847,11 +2853,11 @@ Expression SwitchLabel() :
     errorEnd   = expr.sourceEnd+1;
     processParseExceptionDebug(e);
   }
+  {return expr;}
 |
   token = <_DEFAULT>
   try {
     <COLON>
-    {return null;}
   } catch (ParseException e) {
     errorMessage = "':' expected after 'default' keyword";
     errorLevel   = ERROR;
@@ -2859,6 +2865,7 @@ Expression SwitchLabel() :
     errorEnd   = token.sourceEnd+1;
     processParseExceptionDebug(e);
   }
+  {return null;}
 }
 
 Break BreakStatement() :