8015648: Duplicate variable in lambda causes javac crash
Missing flag in synthetic lambda blog is causing duplicates symbol to go undetected Reviewed-by: jjg, vromero
This commit is contained in:
parent
abaf1a5c51
commit
459b2cba93
@ -2609,7 +2609,7 @@ public class Attr extends JCTree.Visitor {
|
|||||||
//field initializer
|
//field initializer
|
||||||
lambdaEnv = env.dup(that, env.info.dup(env.info.scope.dupUnshared()));
|
lambdaEnv = env.dup(that, env.info.dup(env.info.scope.dupUnshared()));
|
||||||
lambdaEnv.info.scope.owner =
|
lambdaEnv.info.scope.owner =
|
||||||
new MethodSymbol(0, names.empty, null,
|
new MethodSymbol((owner.flags() & STATIC) | BLOCK, names.empty, null,
|
||||||
env.info.scope.owner);
|
env.info.scope.owner);
|
||||||
} else {
|
} else {
|
||||||
lambdaEnv = env.dup(that, env.info.dup(env.info.scope.dup()));
|
lambdaEnv = env.dup(that, env.info.dup(env.info.scope.dup()));
|
||||||
|
31
langtools/test/tools/javac/lambda/LambdaScope05.java
Normal file
31
langtools/test/tools/javac/lambda/LambdaScope05.java
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* @test /nodynamiccopyright/
|
||||||
|
* @bug 8015648
|
||||||
|
* @summary Duplicate variable in lambda causes javac crash
|
||||||
|
* @compile/fail/ref=LambdaScope05.out -XDrawDiagnostics LambdaScope05.java
|
||||||
|
*/
|
||||||
|
|
||||||
|
class LambdaScope05 {
|
||||||
|
interface VoidFun1 {
|
||||||
|
void m(int i);
|
||||||
|
}
|
||||||
|
|
||||||
|
static Runnable r1 = () -> { VoidFun1 p = p -> { }; };
|
||||||
|
Runnable r2 = () -> { VoidFun1 p = p -> { }; };
|
||||||
|
|
||||||
|
static {
|
||||||
|
Runnable r = () -> { VoidFun1 p = p -> { }; };
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
Runnable r = () -> { VoidFun1 p = p -> { }; };
|
||||||
|
}
|
||||||
|
|
||||||
|
static void m_static() {
|
||||||
|
Runnable r = () -> { VoidFun1 p = p -> { }; };
|
||||||
|
}
|
||||||
|
|
||||||
|
void m() {
|
||||||
|
Runnable r = () -> { VoidFun1 p = p -> { }; };
|
||||||
|
}
|
||||||
|
}
|
7
langtools/test/tools/javac/lambda/LambdaScope05.out
Normal file
7
langtools/test/tools/javac/lambda/LambdaScope05.out
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
LambdaScope05.java:13:47: compiler.err.already.defined.in.clinit: kindname.variable, p, kindname.static.init, kindname.class, LambdaScope05
|
||||||
|
LambdaScope05.java:14:40: compiler.err.already.defined.in.clinit: kindname.variable, p, kindname.instance.init, kindname.class, LambdaScope05
|
||||||
|
LambdaScope05.java:17:43: compiler.err.already.defined.in.clinit: kindname.variable, p, kindname.static.init, kindname.class, LambdaScope05
|
||||||
|
LambdaScope05.java:21:43: compiler.err.already.defined.in.clinit: kindname.variable, p, kindname.instance.init, kindname.class, LambdaScope05
|
||||||
|
LambdaScope05.java:25:43: compiler.err.already.defined: kindname.variable, p, kindname.method, m_static()
|
||||||
|
LambdaScope05.java:29:43: compiler.err.already.defined: kindname.variable, p, kindname.method, m()
|
||||||
|
6 errors
|
Loading…
x
Reference in New Issue
Block a user