X-Git-Url: http://git.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 cc9ce7a..b1d21e0 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 @@ -50,7 +50,7 @@ public class Parser //extends PHPParserSuperclass implements ITerminalSymbols, CompilerModifiers, ParserBasicInformation { //internal data for the automat protected final static int StackIncrement = 255; - + protected int stateStackTop; protected int[] stack = new int[StackIncrement]; @@ -1168,7 +1168,7 @@ public class Parser //extends PHPParserSuperclass // typeDecl.sourceStart, typeDecl.sourceEnd); } getNextToken(); - interface_extends_list(); + interface_extends_list(typeDecl); } else { typeDecl.name = new char[] { ' ' }; throwSyntaxError("Interface name expected after keyword 'interface'.", typeDecl.sourceStart, typeDecl.sourceEnd); @@ -1197,7 +1197,7 @@ public class Parser //extends PHPParserSuperclass // /* empty */ // | T_EXTENDS fully_qualified_class_name if (token == TokenNameextends) { - interface_extends_list(); + interface_extends_list(typeDecl); // getNextToken(); // if (token != TokenNameIdentifier) { // throwSyntaxError("Class name expected after keyword @@ -1206,7 +1206,7 @@ public class Parser //extends PHPParserSuperclass // .getCurrentTokenEndPosition()); // } } - implements_list(); + implements_list(typeDecl); } else { typeDecl.name = new char[] { ' ' }; throwSyntaxError("Class name expected after keyword 'class'.", typeDecl.sourceStart, typeDecl.sourceEnd); @@ -1260,7 +1260,21 @@ public class Parser //extends PHPParserSuperclass } } - private void interface_extends_list() { + private void class_extends(TypeDeclaration typeDecl) { + // /* empty */ + // | T_EXTENDS interface_list + if (token == TokenNameextends) { + getNextToken(); + + if (token == TokenNameIdentifier) { + getNextToken(); + } else { + throwSyntaxError("Class name expected after keyword 'extends'."); + } + } + } + + private void interface_extends_list(TypeDeclaration typeDecl) { // /* empty */ // | T_EXTENDS interface_list if (token == TokenNameextends) { @@ -1269,11 +1283,11 @@ public class Parser //extends PHPParserSuperclass } } - private void implements_list() { + private void implements_list(TypeDeclaration typeDecl) { // /* empty */ // | T_IMPLEMENTS interface_list if (token == TokenNameimplements) { - getNextToken(); + getNextToken(); interface_list(); } } @@ -1519,9 +1533,10 @@ public class Parser //extends PHPParserSuperclass typeDecl.methods = new AbstractMethodDeclaration[] { methodDecl }; } else { AbstractMethodDeclaration[] newMethods; - System.arraycopy(typeDecl.methods, 0, newMethods = new AbstractMethodDeclaration[typeDecl.methods.length + 1], 1, + System.arraycopy(typeDecl.methods, 0, + newMethods = new AbstractMethodDeclaration[typeDecl.methods.length + 1], 0, typeDecl.methods.length); - newMethods[0] = methodDecl; + newMethods[typeDecl.methods.length] = methodDecl; typeDecl.methods = newMethods; } if ((typeDecl.modifiers & AccAbstract) == AccAbstract) { @@ -3414,7 +3429,11 @@ public class Parser //extends PHPParserSuperclass problemReporter.phpIncludeNotExistWarning(args, literal.sourceStart, literal.sourceEnd, referenceContext, compilationUnit.compilationResult); } else { - impt.setFile( PHPFileUtil.createFile(path, project) ); + try { + impt.setFile( PHPFileUtil.createFile(path, project) ); + } catch (Exception e) { + // the file is outside of the workspace + } } } }