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