test/tools/javac/defaultMethods/Neg03.java

Thu, 21 Feb 2013 15:26:46 +0000

author
mcimadamore
date
Thu, 21 Feb 2013 15:26:46 +0000
changeset 1599
9f0ec00514b6
parent 1415
01c9d4161882
child 2020
bb7271e64ef6
permissions
-rw-r--r--

8007461: Regression: bad overload resolution when inner class and outer class have method with same name
Summary: Fix regression in varargs method resolution introduced by bad refactoring
Reviewed-by: jjg

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

mercurial