3789983e89
Reviewed-by: darcy, ihse
38 lines
1.5 KiB
Java
38 lines
1.5 KiB
Java
/* @test /nodynamiccopyright/
|
|
* @bug 8071453
|
|
* @author sadayapalam
|
|
* @summary Test various JLS changes made for supporting private interface methods.
|
|
* @compile/fail/ref=Private08.out -XDrawDiagnostics Private08.java
|
|
*/
|
|
class Private08 {
|
|
interface I {
|
|
private void poo() {}
|
|
private int foo() { return 0; }
|
|
int goo();
|
|
default int doo() { return foo(); }
|
|
private public int bad(); // 9.4 illegal combination of modifiers
|
|
private abstract int verybad(); // 9.4 illegal combination of modifiers
|
|
private default int alsobad() { return foo(); } // 9.4 illegal combination of modifiers
|
|
protected void blah();
|
|
private void missingBody(); // private methods are not abstract.
|
|
}
|
|
}
|
|
|
|
class Private08_01 {
|
|
int y = ((Private08.I) null).foo(); // 9.4 test that private methods are not implicitly public.
|
|
interface J extends Private08.I {
|
|
default void foo() { // foo not inherited from super, change of return type is OK.
|
|
super.foo(); // super in static context - Error.
|
|
}
|
|
private int doo() { return 0; } // private cannot override public.
|
|
};
|
|
|
|
Private08.I i = new Private08.I () {
|
|
public void foo() { // foo not inherited from super, change of return type is OK.
|
|
super.foo(); // super's foo not inherited, NOT OK.
|
|
}
|
|
private int doo() { return 0; } // private cannot override public.
|
|
}; // should not complain about poo() not being implemented.
|
|
}
|
|
|