blob: f1bbb9b307f732c2eabbb86349fd4000809eaa25 [file] [log] [blame]
/* @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.
}