45 lines
1.1 KiB
Java
45 lines
1.1 KiB
Java
|
/*
|
||
|
* @test /nodynamiccopyright/
|
||
|
* @bug 8322882
|
||
|
* @summary Disallow attempts to access a free variable proxy field from a static method
|
||
|
* @compile/fail/ref=LocalFreeVarStaticInstantiate.out -XDrawDiagnostics LocalFreeVarStaticInstantiate.java
|
||
|
*/
|
||
|
|
||
|
class LocalFreeVarStaticInstantiate {
|
||
|
|
||
|
// local class in method
|
||
|
static void foo(Object there) {
|
||
|
class Local {
|
||
|
{
|
||
|
there.hashCode();
|
||
|
}
|
||
|
|
||
|
static {
|
||
|
new Local(); // can't get there from here
|
||
|
}
|
||
|
|
||
|
static Runnable r = () -> {
|
||
|
new Local(); // can't get there from here
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// local class in lambda
|
||
|
static Runnable foo = () -> {
|
||
|
Object there = "";
|
||
|
class Local {
|
||
|
{
|
||
|
there.hashCode();
|
||
|
}
|
||
|
|
||
|
static {
|
||
|
new Local(); // can't get there from here
|
||
|
}
|
||
|
|
||
|
static Runnable r = () -> {
|
||
|
new Local(); // can't get there from here
|
||
|
};
|
||
|
}
|
||
|
};
|
||
|
}
|