| /* | |
| * @test /nodynamiccopyright/ | |
| * @bug 8231827 | |
| * @summary Basic pattern bindings scope test | |
| * @compile/fail/ref=MatchBindingScopeTest.out -XDrawDiagnostics MatchBindingScopeTest.java | |
| */ | |
| public class MatchBindingScopeTest { | |
| static Integer i = 42; | |
| static String s = "Hello"; | |
| static Object o1 = s; | |
| static Object o2 = i; | |
| public static void meth() { | |
| if (o1 instanceof String j && j.length() == 5) { // OK | |
| System.out.println(j); // OK | |
| } else { | |
| System.out.println(j); // NOT OK | |
| } | |
| // NOT OK, name reused. | |
| if (o1 instanceof String j && o2 instanceof Integer j) { | |
| } | |
| if (o1 instanceof String j && j.length() == 5 && o2 instanceof Integer k && k == 42) { // OK | |
| System.out.println(j); // OK | |
| System.out.println(k); // OK | |
| } else { | |
| System.out.println(j); // NOT OK | |
| System.out.println(k); // NOT OK | |
| } | |
| if (o1 instanceof String j || j.length() == 5) { // NOT OK | |
| System.out.println(j); // NOT OK | |
| } | |
| if (o1 instanceof String j || o2 instanceof Integer j) { // NOT OK, types differ | |
| System.out.println(j); | |
| } else { | |
| System.out.println(j); // NOT OK. | |
| } | |
| while (o1 instanceof String j && j.length() == 5) { // OK | |
| System.out.println(j); // OK | |
| } | |
| while (o1 instanceof String j || true) { | |
| System.out.println(j); // Not OK | |
| } | |
| for (; o1 instanceof String j; j.length()) { // OK | |
| System.out.println(j); // OK | |
| } | |
| for (; o1 instanceof String j || true; j.length()) { // NOT OK | |
| System.out.println(j); // Not OK | |
| } | |
| int x = o1 instanceof String j ? | |
| j.length() : // OK. | |
| j.length(); // NOT OK. | |
| x = !(o1 instanceof String j) ? | |
| j.length() : // NOT OK. | |
| j.length(); // OK. | |
| } | |
| } |