X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/parser/Parser.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/parser/Parser.java index f668f45..f1eb422 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/parser/Parser.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/parser/Parser.java @@ -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;