/* * @test /nodynamiccopyright/ * @bug 8231827 * @summary Basic tests for bindings from instanceof - tests for merging pattern variables * @compile/fail/ref=BindingsTest1Merging.out -XDrawDiagnostics BindingsTest1Merging.java */ public class BindingsTest1Merging { public static boolean Ktrue() { return true; } public static void meth() { Object o1 = "hello"; Integer i = 42; Object o2 = i; Object o3 = "there"; // Test for e1 && e2.F = intersect(e1.F, e2.F) if (!(o1 instanceof String s) && !(o1 instanceof String s)) { } else { s.length(); } // Test for (e1 || e2).T = intersect(e1.T, e2.T) if (o1 instanceof String s || o3 instanceof String s){ System.out.println(s); // ? } // Test for (e1 ? e2 : e3).T contains intersect(e2.T, e3.T) if (Ktrue() ? o2 instanceof Integer x : o2 instanceof Integer x) { x.intValue(); } // Test for (e1 ? e2 : e3).T contains intersect(e1.T, e3.T) if (o1 instanceof String s ? true : o1 instanceof String s) { s.length(); } // Test for (e1 ? e2 : e3).T contains intersect(e1.F, e2.T) if (!(o1 instanceof String s) ? (o1 instanceof String s) : true) { s.length(); } // Test for (e1 ? e2 : e3).F contains intersect(e2.F, e3.F) if (Ktrue() ? !(o2 instanceof Integer x) : !(o2 instanceof Integer x)){ } else { x.intValue(); } // Test for (e1 ? e2 : e3).F contains intersect(e1.T, e3.F) if (o1 instanceof String s ? true : !(o1 instanceof String s)){ } else { s.length(); } // Test for (e1 ? e2 : e3).F contains intersect(e1.F, e2.F) if (!(o1 instanceof String s) ? !(o1 instanceof String s) : true){ } else { s.length(); } L3: { if ((o1 instanceof String s) || (o3 instanceof String s)) { s.length(); } else { break L3; } s.length(); } System.out.println("BindingsTest1Merging complete"); } }