/* @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. }