langtools/test/tools/javac/generics/diamond/neg/Neg15.java
changeset 29776 984a79b71cfe
child 36273 a19af5725d76
equal deleted inserted replaced
29775:dc7df633fea1 29776:984a79b71cfe
       
     1 /*
       
     2  * @test /nodynamiccopyright/
       
     3  * @bug 8062373
       
     4  *
       
     5  * @summary  Test that javac complains when a <> inferred class contains a public method that does override a supertype method.
       
     6  * @author sadayapalam
       
     7  * @compile/fail/ref=Neg15.out Neg15.java -XDrawDiagnostics
       
     8  *
       
     9  */
       
    10 
       
    11 class Neg15 {
       
    12 
       
    13     interface Predicate<T> {
       
    14         default boolean test(T t) {
       
    15             System.out.println("Default method");
       
    16             return false;
       
    17         }
       
    18     }
       
    19 
       
    20 
       
    21     static void someMethod(Predicate<? extends Number> p) {
       
    22         if (!p.test(null))
       
    23             throw new Error("Blew it");
       
    24     }
       
    25 
       
    26     public static void main(String[] args) {
       
    27 
       
    28         someMethod(new Predicate<Integer>() {
       
    29             public boolean test(Integer n) {
       
    30                 System.out.println("Override");
       
    31                 return true;
       
    32             }
       
    33             boolean test(Integer n, int i) {
       
    34                 System.out.println("Override");
       
    35                 return true;
       
    36             }
       
    37             protected boolean test(Integer n, int i, int j) {
       
    38                 System.out.println("Override");
       
    39                 return true;
       
    40             }
       
    41             private boolean test(Integer n, int i, long j) {
       
    42                 System.out.println("Override");
       
    43                 return true;
       
    44             }
       
    45         });
       
    46 
       
    47         someMethod(new Predicate<>() {
       
    48             public boolean test(Integer n) { // bad.
       
    49                 System.out.println("Override");
       
    50                 return true;
       
    51             }
       
    52             boolean test(Integer n, int i) { // bad, package access.
       
    53                 System.out.println("Override");
       
    54                 return true;
       
    55             }
       
    56             protected boolean test(Integer n, int i, int j) { // bad, protected access.
       
    57                 System.out.println("Override");
       
    58                 return true;
       
    59             }
       
    60             private boolean test(Integer n, int i, long j) { // OK, private method.
       
    61                 System.out.println("Override");
       
    62                 return true;
       
    63             }
       
    64         });
       
    65     }
       
    66 }