Syntax highlighting is changeable.
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / compiler / parser / Parser.java
index f668f45..f1eb422 100644 (file)
@@ -21,7 +21,7 @@ import net.sourceforge.phpdt.internal.compiler.problem.ProblemSeverities;
 import net.sourceforge.phpdt.internal.compiler.util.Util;
 import net.sourceforge.phpeclipse.builder.IdentifierIndexManager;
 import net.sourceforge.phpeclipse.internal.compiler.ast.AbstractMethodDeclaration;
-import net.sourceforge.phpeclipse.internal.compiler.ast.AstNode;
+import net.sourceforge.phpeclipse.internal.compiler.ast.ASTNode;
 import net.sourceforge.phpeclipse.internal.compiler.ast.CompilationUnitDeclaration;
 import net.sourceforge.phpeclipse.internal.compiler.ast.FieldDeclaration;
 import net.sourceforge.phpeclipse.internal.compiler.ast.ImportReference;
@@ -1440,7 +1440,7 @@ public class Parser //extends PHPParserSuperclass
     if (astPtr == 0) {
       compilationUnit.types.add(methodDecl);
     } else {
-      AstNode node = astStack[astPtr];
+      ASTNode node = astStack[astPtr];
       if (node instanceof TypeDeclaration) {
         TypeDeclaration typeDecl = ((TypeDeclaration) node);
         if (typeDecl.methods == null) {
@@ -1608,7 +1608,7 @@ public class Parser //extends PHPParserSuperclass
         //          statementList();
         //        }
         else {
-          throwSyntaxError("':' character after 'case' constant expected (Found token: " + scanner.toStringAction(token) + ")");
+          throwSyntaxError("':' character expected after 'case' constant (Found token: " + scanner.toStringAction(token) + ")");
         }
       } else { // TokenNamedefault
         getNextToken();
@@ -1618,9 +1618,11 @@ public class Parser //extends PHPParserSuperclass
             // empty default case
             break;
           }
-          statementList();
+          if (token != TokenNamecase) {
+            statementList();  
+          }
         } else {
-          throwSyntaxError("':' character after 'default' expected.");
+          throwSyntaxError("':' character expected after 'default'.");
         }
       }
     } while (token == TokenNamecase || token == TokenNamedefault);
@@ -2465,13 +2467,15 @@ public class Parser //extends PHPParserSuperclass
     //| static_member '(' function_call_parameter_list ')'
     //| variable_without_objects '(' function_call_parameter_list ')'
     char[] defineName = null;
+    char[] ident = null;
     int startPos=0;
     int endPos=0;
     if (Scanner.TRACE) {
       System.out.println("TRACE: function_call()");
     }
     if (token == TokenNameIdentifier) {
-      defineName = scanner.getCurrentIdentifierSource();
+      ident = scanner.getCurrentIdentifierSource();
+      defineName = ident;
       startPos = scanner.getCurrentTokenStartPosition();
       endPos = scanner.getCurrentTokenEndPosition();
       getNextToken();
@@ -2543,7 +2547,13 @@ public class Parser //extends PHPParserSuperclass
     }
     non_empty_function_call_parameter_list();
     if (token != TokenNameRPAREN) {
-      throwSyntaxError("')' expected in function call.");
+      String functionName;
+      if (ident==null) {
+        functionName = new String(" ");
+      } else {
+        functionName = new String(ident);
+      }
+      throwSyntaxError("')' expected in function call ("+functionName+").");
     }
     getNextToken();
   }
@@ -3088,8 +3098,9 @@ public class Parser //extends PHPParserSuperclass
             //            }
           } else if (token == TokenNameMINUS_GREATER) {
             getNextToken();
-            if (token != TokenNameIdentifier) {
-              throwSyntaxError("String token expected.");
+            if (token != TokenNameIdentifier &&
+                token != TokenNameVariable) {
+              throwSyntaxError("String or Variable token expected.");
             }
             getNextToken();
           }
@@ -3534,10 +3545,10 @@ public class Parser //extends PHPParserSuperclass
   //ast stack
   final static int AstStackIncrement = 100;
   protected int astPtr;
-  protected AstNode[] astStack = new AstNode[AstStackIncrement];
+  protected ASTNode[] astStack = new ASTNode[AstStackIncrement];
   protected int astLengthPtr;
   protected int[] astLengthStack;
-  AstNode[] noAstNodes = new AstNode[AstStackIncrement];
+  ASTNode[] noAstNodes = new ASTNode[AstStackIncrement];
   public CompilationUnitDeclaration compilationUnit; /*
                                                       * the result from parse()
                                                       */
@@ -3964,7 +3975,7 @@ public class Parser //extends PHPParserSuperclass
       astLengthStack[astLengthPtr] = pos;
     }
   }
-  protected void pushOnAstStack(AstNode node) {
+  protected void pushOnAstStack(ASTNode node) {
     /*
      * add a new obj on top of the ast stack
      */
@@ -3972,8 +3983,8 @@ public class Parser //extends PHPParserSuperclass
       astStack[++astPtr] = node;
     } catch (IndexOutOfBoundsException e) {
       int oldStackLength = astStack.length;
-      AstNode[] oldStack = astStack;
-      astStack = new AstNode[oldStackLength + AstStackIncrement];
+      ASTNode[] oldStack = astStack;
+      astStack = new ASTNode[oldStackLength + AstStackIncrement];
       System.arraycopy(oldStack, 0, astStack, 0, oldStackLength);
       astPtr = oldStackLength;
       astStack[astPtr] = node;