test/langtools/tools/javac/patterns/Reifiable.java
changeset 59285 7799a51dbe30
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/javac/patterns/Reifiable.java	Wed Nov 27 09:00:01 2019 +0100
@@ -0,0 +1,22 @@
+/*
+ * @test /nodynamiccopyright/
+ * @bug 8231827
+ * @summary Verify behavior w.r.t. non-reifiable types and type test patterns in instanceof
+ * @compile/fail/ref=Reifiable.out --enable-preview -source ${jdk.version} -XDrawDiagnostics Reifiable.java
+ */
+
+public class Reifiable implements ReifiableI {
+    private static boolean test(Object o, List<Reifiable> l1, List<String> l2) {
+        return o instanceof ListImpl<Reifiable> li1 &&
+               l1 instanceof ListImpl<Reifiable> li2 &&
+               l2 instanceof ListImpl<Reifiable> li3 &&
+               l2 instanceof ListImpl<String> li4 &&
+               l1 instanceof Unrelated<Reifiable> li5;
+    }
+
+    public class List<T> {}
+    public class ListImpl<T extends ReifiableI> extends List<T> {}
+    public class Unrelated<T> {}
+}
+
+interface ReifiableI {}