File: Private08.java

package info (click to toggle)
openjdk-17 17.0.17%2B10-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 764,928 kB
  • sloc: java: 5,319,061; xml: 1,291,711; cpp: 1,202,358; ansic: 428,746; asm: 404,978; objc: 20,861; sh: 14,754; javascript: 10,743; python: 6,402; makefile: 2,404; perl: 357; awk: 351; sed: 172; jsp: 24; csh: 3
file content (37 lines) | stat: -rw-r--r-- 1,517 bytes parent folder | download | duplicates (18)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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.
}