| /* |
| * @test /nodynamiccopyright/ |
| * @bug 8231827 |
| * @summary Ensure that scopes arising from conditionalExpressions are handled corrected. |
| * @compile/fail/ref=BindingsTest2.out -XDrawDiagnostics -XDshould-stop.at=FLOW BindingsTest2.java |
| */ |
| public class BindingsTest2 { |
| public static boolean Ktrue() { return true; } |
| public static void meth() { |
| Object o1 = "hello"; |
| Integer in = 42; |
| Object o2 = in; |
| Object o3 = "there"; |
| |
| |
| if (Ktrue() ? o2 instanceof Integer x : o2 instanceof String x) { |
| x.intValue(); |
| } |
| if (Ktrue() ? o2 instanceof Integer x : true) { |
| x.intValue(); |
| } |
| |
| if (o1 instanceof String s ? true : true) { |
| s.length(); |
| } |
| if (o1 instanceof String s ? true : o2 instanceof Integer s) { |
| s.length(); |
| } |
| if (o1 instanceof String s ? true : o2 instanceof Integer i) { |
| s.length(); |
| } |
| |
| // Test for (e1 ? e2 : e3).T contains intersect(e1.F, e2.T) |
| if (!(o1 instanceof String s) ? true : true) { |
| s.length(); |
| } |
| if (!(o1 instanceof String s) ? (o2 instanceof Integer s) : true) { |
| s.length(); |
| } |
| if (!(o1 instanceof String s) ? (o2 instanceof Integer i) : true) { |
| s.length(); |
| i.intValue(); |
| } |
| if (!(o1 instanceof String s) ? (o1 instanceof String s2) : true) { |
| s.length(); |
| s2.length(); |
| } |
| |
| |
| // Test for (e1 ? e2 : e3).F contains intersect(e2.F, e3.F) |
| if (Ktrue() ? !(o2 instanceof Integer x) : !(o1 instanceof String x)){ |
| } else { |
| x.intValue(); |
| } |
| if (Ktrue() ? !(o2 instanceof Integer x) : !(o1 instanceof String s)){ |
| } else { |
| x.intValue(); |
| } |
| if (Ktrue() ? !(o2 instanceof Integer x) : !(o2 instanceof Integer x1)){ |
| } else { |
| x.intValue(); |
| x1.intValue(); |
| } |
| if (Ktrue() ? !(o2 instanceof Integer x) : false){ |
| } else { |
| x.intValue(); |
| } |
| |
| // Test for (e1 ? e2 : e3).F contains intersect(e1.T, e3.F) |
| if (o1 instanceof String s ? true : !(o2 instanceof Integer s)){ |
| } else { |
| s.length(); |
| } |
| if (o1 instanceof String s ? true : !(o2 instanceof Integer i)){ |
| } else { |
| s.length(); |
| i.intValue(); |
| } |
| if (o1 instanceof String s ? true : !(o2 instanceof String s1)){ |
| } else { |
| s.length(); |
| s1.length(); |
| } |
| // Test for (e1 ? e2 : e3).F contains intersect(e1.F, e2.F) |
| if (!(o1 instanceof String s) ? !(o1 instanceof String s1) : true){ |
| } else { |
| s.length(); |
| s1.length(); |
| } |
| if (!(o1 instanceof String s) ? !(o2 instanceof Integer s) : true){ |
| } else { |
| s.length(); |
| } |
| if (!(o1 instanceof String s) ? !(o2 instanceof Integer i) : true){ |
| } else { |
| s.length(); |
| i.intValue(); |
| } |
| |
| // Test for e1 ? e2: e3 - include e1.T in e2 |
| if (o1 instanceof String s ? false : s.length()>0) { |
| System.out.println("done"); |
| } |
| if (o1 instanceof String s ? false : s.intValue!=0) { |
| System.out.println("done"); |
| } |
| |
| // Test for e1 ? e2 : e3 - include e1.F in e3 |
| if (!(o1 instanceof String s) ? s.length()>0 : false){ |
| System.out.println("done"); |
| } |
| if (!(o1 instanceof String s) ? s.intValue>0 : false){ |
| System.out.println("done"); |
| } |
| |
| { |
| while (!(o1 instanceof String s)) { |
| break; |
| } |
| |
| s.length(); |
| } |
| |
| { |
| while (!(o1 instanceof String s)) { |
| if (false) break; |
| } |
| |
| s.length(); |
| } |
| |
| { |
| while (!(o1 instanceof String s)) { |
| while (true); |
| break; |
| } |
| |
| s.length(); |
| } |
| |
| { |
| for (; !(o1 instanceof String s); ) { |
| break; |
| } |
| |
| s.length(); |
| } |
| |
| { |
| for (; !(o1 instanceof String s); ) { |
| if (false) break; |
| } |
| |
| s.length(); |
| } |
| |
| { |
| for (; !(o1 instanceof String s); ) { |
| while (true); |
| break; |
| } |
| |
| s.length(); |
| } |
| |
| { |
| do { |
| break; |
| } while (!(o1 instanceof String s)); |
| |
| s.length(); |
| } |
| |
| { |
| do { |
| if (false) break; |
| } while (!(o1 instanceof String s)); |
| |
| s.length(); |
| } |
| |
| { |
| do { |
| while (true); |
| break; |
| } while (!(o1 instanceof String s)); |
| |
| s.length(); |
| } |
| |
| { |
| L: while (!(o1 instanceof String s)) { |
| break L; |
| } |
| |
| s.length(); |
| } |
| |
| { |
| L: for (; !(o1 instanceof String s); ) { |
| break L; |
| } |
| |
| s.length(); |
| } |
| |
| { |
| L: do { |
| break L; |
| } while (!(o1 instanceof String s)); |
| |
| s.length(); |
| } |
| |
| { |
| L: { |
| while (!(o1 instanceof String s)) { |
| break L; |
| } |
| |
| s.length(); |
| } |
| } |
| |
| { |
| L: { |
| for (; !(o1 instanceof String s); ) { |
| break L; |
| } |
| |
| s.length(); |
| } |
| } |
| |
| { |
| L: { |
| do { |
| break L; |
| } while (!(o1 instanceof String s)); |
| |
| s.length(); |
| } |
| } |
| |
| { |
| if (o1 instanceof final String s) { |
| s = ""; |
| } |
| } |
| { |
| LBL1: LBL2: if (!(o1 instanceof String s)) { |
| break LBL1; |
| } |
| |
| System.err.println(s); |
| } |
| { |
| LBL1: LBL2: if (!(o1 instanceof String s)) { |
| break LBL2; |
| } |
| |
| System.err.println(s); |
| } |
| { |
| LBL1: LBL2: if (o1 instanceof String s) { |
| } else { |
| break LBL1; |
| } |
| |
| System.err.println(s); |
| } |
| { |
| LBL1: LBL2: if (o1 instanceof String s) { |
| } else { |
| break LBL2; |
| } |
| |
| System.err.println(s); |
| } |
| { |
| switch (0) { |
| case 0: |
| if (!(o1 instanceof String s)) { |
| break; |
| } |
| } |
| s.length(); |
| } |
| |
| { |
| int j = 0; |
| L: while (j++ < 2) |
| if (!(o1 instanceof String s)) { |
| break L; |
| } |
| s.length(); |
| } |
| |
| { |
| int j = 0; |
| L: for (; j++ < 2; ) |
| if (!(o1 instanceof String s)) { |
| break L; |
| } |
| s.length(); |
| } |
| } |
| } |