# HG changeset patch # User mcimadamore # Date 1438259075 -3600 # Node ID 577e9ffab3bc2d5f31f41c2252e696537663da5c # Parent 2289e78ae8b2365682c200e534a794abac67b54c 8131742: Syntactically meaningless code accepted by javac Summary: Receiver parameter logic for type annotations should be disabled when parsing lambda formals Reviewed-by: jlahoda diff -r 2289e78ae8b2 -r 577e9ffab3bc src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java Thu Jul 30 13:21:01 2015 +0100 +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java Thu Jul 30 13:24:35 2015 +0100 @@ -2985,7 +2985,7 @@ name = token.name(); nextToken(); } else { - if (allowThisIdent) { + if (allowThisIdent && !lambdaParameter) { JCExpression pn = qualident(false); if (pn.hasTag(Tag.IDENT) && ((JCIdent)pn).name != names._this) { name = ((JCIdent)pn).name; diff -r 2289e78ae8b2 -r 577e9ffab3bc test/tools/javac/lambda/8131742/T8131742.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/lambda/8131742/T8131742.java Thu Jul 30 13:24:35 2015 +0100 @@ -0,0 +1,9 @@ +/* + * @test /nodynamiccopyright/ + * @bug 8131742 + * @summary Syntactically meaningless code accepted by javac + * @compile/fail/ref=T8131742.out -XDrawDiagnostics T8131742.java + */ +class T8131742 { + static Runnable r = (__GAR BAGE__.this) -> { }; +} diff -r 2289e78ae8b2 -r 577e9ffab3bc test/tools/javac/lambda/8131742/T8131742.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/lambda/8131742/T8131742.out Thu Jul 30 13:24:35 2015 +0100 @@ -0,0 +1,4 @@ +T8131742.java:8:38: compiler.err.expected3: ',', ')', '[' +T8131742.java:8:39: compiler.err.this.as.identifier +T8131742.java:8:43: compiler.err.expected: ';' +3 errors