}
} 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;
}
// '(' parameter_list ')' method_body
initializeModifiers();
int declarationSourceStart = scanner.getCurrentTokenStartPosition();
- ;
+
if (token == TokenNamevar) {
checkAndSetModifiers(AccPublic);
problemReporter.phpVarDeprecatedWarning(scanner.getCurrentTokenStartPosition(), scanner.getCurrentTokenEndPosition(),
if (token == TokenNameAND) {
getNextToken();
}
- if (token == TokenNameIdentifier) {
- methodDecl.sourceStart = scanner.getCurrentTokenStartPosition();
- methodDecl.sourceEnd = scanner.getCurrentTokenEndPosition();
+ methodDecl.sourceStart = scanner.getCurrentTokenStartPosition();
+ methodDecl.sourceEnd = scanner.getCurrentTokenEndPosition();
+ if (Scanner.isIdentifierOrKeyword(token)) {
methodDecl.selector = scanner.getCurrentIdentifierSource();
+ if (token > TokenNameKEYWORD) {
+ 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) {
getNextToken();
throwSyntaxError("'(' expected in function declaration.");
}
if (token != TokenNameRPAREN) {
- parameter_list();
+ parameter_list();
}
if (token != TokenNameRPAREN) {
throwSyntaxError("')' expected in function declaration.");
getNextToken();
}
} else {
- if (token > TokenNameKEYWORD) {
- throwSyntaxError("Don't use keyword for function declaration [" + token + "].");
- }
+ methodDecl.selector = "<undefined>".toCharArray();
throwSyntaxError("Function name expected after keyword 'function'.");
}
}
//| 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
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<defineName.length;i++) {
+ if (Character.isLowerCase(defineName[i])) {
+ problemReporter.phpUppercaseIdentifierWarning(startPos, endPos,
+ referenceContext, compilationUnit.compilationResult);
+ break;
+ }
+ }
+ }
+ }
// TODO is this ok ?
return;
// throwSyntaxError("'(' expected in function call.");