| /* |
| * @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. |
| } |
| } |