--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/defaultMethods/Neg03.java Sun Nov 04 10:59:42 2012 +0000
@@ -0,0 +1,38 @@
+/*
+ * @test /nodynamiccopyright/
+ * @summary check that re-abstraction works properly
+ * @compile/fail/ref=Neg03.out -XDallowDefaultMethods -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) { }
+}