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 264b0ad..e7491b1 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 @@ -208,6 +208,13 @@ public class Parser //extends PHPParserSuperclass } } catch (InvalidInputException e) { token = TokenNameERROR; + String detailedMessage = e.getMessage(); + + if (detailedMessage==Scanner.UNTERMINATED_STRING) { + throwSyntaxError("Unterminated string."); + } else if (detailedMessage==Scanner.UNTERMINATED_COMMENT) { + throwSyntaxError("Unterminated commment."); + } } return; } @@ -1251,7 +1258,7 @@ public class Parser //extends PHPParserSuperclass // '(' parameter_list ')' method_body initializeModifiers(); int declarationSourceStart = scanner.getCurrentTokenStartPosition(); - ; + if (token == TokenNamevar) { checkAndSetModifiers(AccPublic); problemReporter.phpVarDeprecatedWarning(scanner.getCurrentTokenStartPosition(), scanner.getCurrentTokenEndPosition(), @@ -1470,9 +1477,10 @@ public class Parser //extends PHPParserSuperclass if (Scanner.isIdentifierOrKeyword(token)) { methodDecl.selector = scanner.getCurrentIdentifierSource(); if (token > TokenNameKEYWORD) { - reportSyntaxWarning("Don't use keyword for function declaration [" + scanner.toStringAction(token) + "].", - scanner.getCurrentTokenStartPosition(), scanner.getCurrentTokenEndPosition()); -// throwSyntaxError("Don't use keyword for function declaration [" + scanner.toStringAction(token) + "]."); + problemReporter.phpKeywordWarning(new String[]{scanner.toStringAction(token)}, scanner.getCurrentTokenStartPosition(), scanner.getCurrentTokenEndPosition(), + referenceContext, compilationUnit.compilationResult); +// reportSyntaxWarning("Don't use keyword for function declaration [" + scanner.toStringAction(token) + "].", +// scanner.getCurrentTokenStartPosition(), scanner.getCurrentTokenEndPosition()); } getNextToken(); if (token == TokenNameLPAREN) { @@ -1481,7 +1489,7 @@ public class Parser //extends PHPParserSuperclass throwSyntaxError("'(' expected in function declaration."); } if (token != TokenNameRPAREN) { - parameter_list(); + parameter_list(); } if (token != TokenNameRPAREN) { throwSyntaxError("')' expected in function declaration."); @@ -2454,14 +2462,21 @@ public class Parser //extends PHPParserSuperclass //| class_constant '(' function_call_parameter_list ')' //| static_member '(' function_call_parameter_list ')' //| variable_without_objects '(' function_call_parameter_list ')' + char[] defineName = null; + int startPos=0; + int endPos=0; if (Scanner.TRACE) { System.out.println("TRACE: function_call()"); } if (token == TokenNameIdentifier) { + defineName = scanner.getCurrentIdentifierSource(); + startPos = scanner.getCurrentTokenStartPosition(); + endPos = scanner.getCurrentTokenEndPosition(); getNextToken(); switch (token) { case TokenNamePAAMAYIM_NEKUDOTAYIM : // static member: + defineName = null; getNextToken(); if (token == TokenNameIdentifier) { // class _constant @@ -2476,6 +2491,45 @@ public class Parser //extends PHPParserSuperclass variable_without_objects(); } if (token != TokenNameLPAREN) { + if (defineName!=null) { + // does this identifier contain only uppercase characters? + if (defineName.length==3) { + if (defineName[0]=='d' && + defineName[1]=='i' && + defineName[2]=='e' ) { + defineName=null; + } + } else if (defineName.length==4) { + if (defineName[0]=='t' && + defineName[1]=='r' && + defineName[2]=='u' && + defineName[3]=='e' ) { + defineName=null; + } else if (defineName[0]=='n' && + defineName[1]=='u' && + defineName[2]=='l' && + defineName[3]=='l' ) { + defineName=null; + } + } else if (defineName.length==5) { + if (defineName[0]=='f' && + defineName[1]=='a' && + defineName[2]=='l' && + defineName[3]=='s' && + defineName[4]=='e' ) { + defineName=null; + } + } + if (defineName!=null) { + for (int i=0; i