test/tools/javac/defaultMethods/Neg03.java

Thu, 31 Aug 2017 15:17:03 +0800

author
aoqi
date
Thu, 31 Aug 2017 15:17:03 +0800
changeset 2525
2eb010b6cb22
parent 2020
bb7271e64ef6
parent 0
959103a6100f
permissions
-rw-r--r--

merge

aoqi@0 1 /* @test /nodynamiccopyright/
aoqi@0 2 * @bug 7192246
aoqi@0 3 * @summary check that re-abstraction works properly
aoqi@0 4 * @compile/fail/ref=Neg03.out -XDrawDiagnostics Neg03.java
aoqi@0 5 */
aoqi@0 6
aoqi@0 7 class Neg03 {
aoqi@0 8 interface A {
aoqi@0 9 default void m() { Neg03.one(this); }
aoqi@0 10 }
aoqi@0 11
aoqi@0 12 interface B {
aoqi@0 13 default void m() { Neg03.two(this); }
aoqi@0 14 }
aoqi@0 15
aoqi@0 16 interface C extends A, B {
aoqi@0 17 default void m() { Neg03.one(this); }
aoqi@0 18 }
aoqi@0 19
aoqi@0 20 static class X implements C, A { } //ok - ignore extraneous remix of A
aoqi@0 21
aoqi@0 22 interface D extends A, B {
aoqi@0 23 void m(); // ok - m() is not reabstracted!
aoqi@0 24 }
aoqi@0 25
aoqi@0 26 static class Y implements D, A { } // invalid - abstract D.m()
aoqi@0 27
aoqi@0 28 interface E extends A {
aoqi@0 29 void m(); // reabstraction of m()
aoqi@0 30 }
aoqi@0 31
aoqi@0 32 static class W implements D, E { } // invalid - abstracts D.m()/E.m()
aoqi@0 33
aoqi@0 34 static class Z implements D, A, B { } // invalid - abstract D.m()
aoqi@0 35
aoqi@0 36 static void one(Object a) { }
aoqi@0 37 static void two(Object a) { }
aoqi@0 38 }

mercurial