/* @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) { } }