/
githubmirror
/
panama-vector
Обзор
Документация
Войти
/
githubmirror
/
panama-vector
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
test/langtools/tools/javac/LocalFreeVarStaticSuper.java
161 строка
4 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 8345944 * @summary JEP 492: extending local class in a different static context should not be allowed * @compile/fail/ref=LocalFreeVarStaticSuper.out -XDrawDiagnostics LocalFreeVarStaticSuper.java */ class LocalFreeVarStaticSuper { // local class in method static void foo(Object there) { class Local { { there.hashCode(); } static { class Sub1 extends Local { } class Sub2 extends Local { Sub2() { } } class Sub3 extends Local { Sub3() { super(); } } } static Runnable r = () -> { class Sub1 extends Local { } class Sub2 extends Local { Sub2() { } } class Sub3 extends Local { Sub3() { super(); } } }; } } // local class in lambda static Runnable foo = () -> { Object there = ""; class Local { { there.hashCode(); } static { class Sub1 extends Local { } class Sub2 extends Local { Sub2() { } } class Sub3 extends Local { Sub3() { super(); } } } static Runnable r = () -> { class Sub1 extends Local { } class Sub2 extends Local { Sub2() { } } class Sub3 extends Local { Sub3() { super(); } } }; } }; // local class in switch static Object bar = switch (foo) { case Runnable r -> { Object there = ""; class Local { { there.hashCode(); } static { class Sub1 extends Local { } class Sub2 extends Local { Sub2() { } } class Sub3 extends Local { Sub3() { super(); } } } static Runnable r = () -> { class Sub1 extends Local { } class Sub2 extends Local { Sub2() { } } class Sub3 extends Local { Sub3() { super(); } } }; } yield r; } }; // local class in instance init { Object there = ""; class Local { { there.hashCode(); } static { class Sub1 extends Local { } class Sub2 extends Local { Sub2() { } } class Sub3 extends Local { Sub3() { super(); } } } static Runnable r = () -> { class Sub1 extends Local { } class Sub2 extends Local { Sub2() { } } class Sub3 extends Local { Sub3() { super(); } } }; } } // local class in static init static { Object there = ""; class Local { { there.hashCode(); } static { class Sub1 extends Local { } class Sub2 extends Local { Sub2() { } } class Sub3 extends Local { Sub3() { super(); } } } static Runnable r = () -> { class Sub1 extends Local { } class Sub2 extends Local { Sub2() { } } class Sub3 extends Local { Sub3() { super(); } } }; } } }