diff -r 1408af4cd8b0 -r 573ceb23beeb src/share/classes/com/sun/tools/javac/parser/JavacParser.java --- a/src/share/classes/com/sun/tools/javac/parser/JavacParser.java Thu Oct 04 13:04:53 2012 +0100 +++ b/src/share/classes/com/sun/tools/javac/parser/JavacParser.java Fri Oct 05 14:35:24 2012 +0100 @@ -950,12 +950,13 @@ break; case LPAREN: if (typeArgs == null && (mode & EXPR) != 0) { - if (peekToken(FINAL) || + if (peekToken(MONKEYS_AT) || + peekToken(FINAL) || peekToken(RPAREN) || peekToken(IDENTIFIER, COMMA) || peekToken(IDENTIFIER, RPAREN, ARROW)) { //implicit n-ary lambda - t = lambdaExpressionOrStatement(true, peekToken(FINAL), pos); + t = lambdaExpressionOrStatement(true, peekToken(MONKEYS_AT) || peekToken(FINAL), pos); break; } else { nextToken(); @@ -1343,11 +1344,6 @@ } JCExpression lambdaExpressionOrStatementRest(List args, int pos) { - if (token.kind != ARROW) { - //better error recovery - return F.at(pos).Erroneous(args); - } - checkLambda(); accept(ARROW);