langtools/test/tools/javac/defaultMethods/Neg03.java
author mcimadamore
Sun, 04 Nov 2012 10:59:42 +0000
changeset 14443 91c05eb19277
child 14547 86d8d242b0c4
permissions -rw-r--r--
7192246: Add type-checking support for default methods Summary: Add type-checking support for default methods as per Featherweight-Defender document Reviewed-by: jjg, dlsmith
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
14443
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
     1
/*
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
     2
 * @test /nodynamiccopyright/
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
     3
 * @summary check that re-abstraction works properly
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
     4
 * @compile/fail/ref=Neg03.out -XDallowDefaultMethods -XDrawDiagnostics Neg03.java
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
     5
 */
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
     6
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
     7
class Neg03 {
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
     8
    interface A {
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
     9
        default void m() { Neg03.one(this); }
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    10
    }
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    11
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    12
    interface B {
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    13
        default void m() { Neg03.two(this); }
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    14
    }
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    15
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    16
    interface C extends A, B {
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    17
        default void m() { Neg03.one(this); }
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    18
    }
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    19
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    20
    static class X implements C, A { } //ok - ignore extraneous remix of A
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    21
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    22
    interface D extends A, B {
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    23
      void m();  // ok - m() is not reabstracted!
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    24
    }
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    25
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    26
    static class Y implements D, A { } // invalid - abstract D.m()
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    27
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    28
    interface E extends A {
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    29
        void m();  // reabstraction of m()
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    30
    }
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    31
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    32
    static class W implements D, E { } // invalid - abstracts D.m()/E.m()
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    33
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    34
    static class Z implements D, A, B { } // invalid - abstract D.m()
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    35
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    36
    static void one(Object a) {  }
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    37
    static void two(Object a) {  }
91c05eb19277 7192246: Add type-checking support for default methods
mcimadamore
parents:
diff changeset
    38
}