test/langtools/tools/javac/patterns/ReifiableOld.java
changeset 59285 7799a51dbe30
equal deleted inserted replaced
59284:88502b1cf76f 59285:7799a51dbe30
       
     1 /*
       
     2  * @test /nodynamiccopyright/
       
     3  * @bug 8231827
       
     4  * @summary Verify behavior w.r.t. non-reifiable types in instanceof
       
     5  * @compile/fail/ref=ReifiableOld-old.out -source 13 -Xlint:-options -XDrawDiagnostics ReifiableOld.java
       
     6  * @compile/fail/ref=ReifiableOld-old.out -source ${jdk.version} -XDrawDiagnostics ReifiableOld.java
       
     7  * @compile/fail/ref=ReifiableOld.out --enable-preview -source ${jdk.version} -XDrawDiagnostics ReifiableOld.java
       
     8  */
       
     9 
       
    10 public class ReifiableOld implements ReifiableOldI {
       
    11     private static boolean test(Object o, List<ReifiableOld> l1, List<String> l2) {
       
    12         return o instanceof ListImpl<ReifiableOld> &&
       
    13                l1 instanceof ListImpl<ReifiableOld> &&
       
    14                l2 instanceof ListImpl<ReifiableOld> &&
       
    15                l2 instanceof ListImpl<String> &&
       
    16                l1 instanceof Unrelated<ReifiableOld>;
       
    17     }
       
    18 
       
    19     public class List<T> {}
       
    20     public class ListImpl<T extends ReifiableOldI> extends List<T> {}
       
    21     public class Unrelated<T> {}
       
    22 }
       
    23 
       
    24 interface ReifiableOldI {}