src/share/classes/com/sun/tools/javac/parser/JavacParser.java

changeset 1348
573ceb23beeb
parent 1346
20e4a54b1629
child 1352
d4b3cb1ece84
equal deleted inserted replaced
1347:1408af4cd8b0 1348:573ceb23beeb
948 } 948 }
949 } else return illegal(); 949 } else return illegal();
950 break; 950 break;
951 case LPAREN: 951 case LPAREN:
952 if (typeArgs == null && (mode & EXPR) != 0) { 952 if (typeArgs == null && (mode & EXPR) != 0) {
953 if (peekToken(FINAL) || 953 if (peekToken(MONKEYS_AT) ||
954 peekToken(FINAL) ||
954 peekToken(RPAREN) || 955 peekToken(RPAREN) ||
955 peekToken(IDENTIFIER, COMMA) || 956 peekToken(IDENTIFIER, COMMA) ||
956 peekToken(IDENTIFIER, RPAREN, ARROW)) { 957 peekToken(IDENTIFIER, RPAREN, ARROW)) {
957 //implicit n-ary lambda 958 //implicit n-ary lambda
958 t = lambdaExpressionOrStatement(true, peekToken(FINAL), pos); 959 t = lambdaExpressionOrStatement(true, peekToken(MONKEYS_AT) || peekToken(FINAL), pos);
959 break; 960 break;
960 } else { 961 } else {
961 nextToken(); 962 nextToken();
962 mode = EXPR | TYPE | NOPARAMS; 963 mode = EXPR | TYPE | NOPARAMS;
963 t = term3(); 964 t = term3();
1341 1342
1342 return lambdaExpressionOrStatementRest(params, pos); 1343 return lambdaExpressionOrStatementRest(params, pos);
1343 } 1344 }
1344 1345
1345 JCExpression lambdaExpressionOrStatementRest(List<JCVariableDecl> args, int pos) { 1346 JCExpression lambdaExpressionOrStatementRest(List<JCVariableDecl> args, int pos) {
1346 if (token.kind != ARROW) {
1347 //better error recovery
1348 return F.at(pos).Erroneous(args);
1349 }
1350
1351 checkLambda(); 1347 checkLambda();
1352 accept(ARROW); 1348 accept(ARROW);
1353 1349
1354 return token.kind == LBRACE ? 1350 return token.kind == LBRACE ?
1355 lambdaStatement(args, pos, pos) : 1351 lambdaStatement(args, pos, pos) :

mercurial