/
githubmirror
/
panama-vector
Обзор
Документация
Войти
/
githubmirror
/
panama-vector
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
test/langtools/tools/javac/LocalFreeVarStaticInstantiate.java
101 строка
2 KB
Maurizio Cimadamore
8345944: JEP 492: extending local class in a different static context should not be allowed
12 дек 2024, 13:49
12 дек 2024, 13:49
0ad6423
Код
Авторство
О чём код?
/* * @test /nodynamiccopyright/ * @bug 8322882 8345953 * @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 }; } }; // local class in switch static Object bar = switch (foo) { case Runnable r -> { 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 }; } yield r; } }; // local class in instance init { 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 static init static { 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 }; } } }