--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/defaultMethods/private/Private08.java Mon Mar 02 10:41:08 2015 +0530
@@ -0,0 +1,37 @@
+/* @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.
+}
+