| /* @test /nodynamiccopyright/ | |
| * @bug 7192246 | |
| * @summary check that re-abstraction works properly | |
| * @compile/fail/ref=Neg03.out -XDrawDiagnostics Neg03.java | |
| */ | |
| class Neg03 { | |
| interface A { | |
| default void m() { Neg03.one(this); } | |
| } | |
| interface B { | |
| default void m() { Neg03.two(this); } | |
| } | |
| interface C extends A, B { | |
| default void m() { Neg03.one(this); } | |
| } | |
| static class X implements C, A { } //ok - ignore extraneous remix of A | |
| interface D extends A, B { | |
| void m(); // ok - m() is not reabstracted! | |
| } | |
| static class Y implements D, A { } // invalid - abstract D.m() | |
| interface E extends A { | |
| void m(); // reabstraction of m() | |
| } | |
| static class W implements D, E { } // invalid - abstracts D.m()/E.m() | |
| static class Z implements D, A, B { } // invalid - abstract D.m() | |
| static void one(Object a) { } | |
| static void two(Object a) { } | |
| } |