test/langtools/tools/javac/switchexpr/ExpressionSwitchBreaks2.java
author chegar
Thu, 17 Oct 2019 20:54:25 +0100
branchdatagramsocketimpl-branch
changeset 58679 9c3209ff7550
parent 58678 9cf78a70fa4f
parent 55528 bad3754349aa
permissions -rw-r--r--
datagramsocketimpl-branch: merge with default
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
51563
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
     1
/*
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
     2
 * @test /nodynamiccopyright/
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
     3
 * @bug 8206986
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
     4
 * @summary Check behavior for invalid breaks.
53878
4584d0331318 8219254: Update explicit uses of latest source/target in langtools tests to a property
darcy
parents: 53023
diff changeset
     5
 * @compile/fail/ref=ExpressionSwitchBreaks2.out -XDrawDiagnostics --enable-preview -source ${jdk.version} ExpressionSwitchBreaks2.java
51563
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
     6
 */
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
     7
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
     8
public class ExpressionSwitchBreaks2 {
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
     9
    private String print(int i, int j) {
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    10
        LOOP: while (true) {
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    11
        OUTER: switch (i) {
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    12
            case 0:
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    13
                return switch (j) {
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    14
                    case 0:
55306
ea43db53de91 8223305: Compiler support for Switch Expressions
jlahoda
parents: 53878
diff changeset
    15
                        yield "0-0";
51563
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    16
                    case 1:
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    17
                        break ; //error: missing value
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    18
                    case 2:
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    19
                        break OUTER; //error: jumping outside of the switch expression
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    20
                    case 3: {
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    21
                        int x = -1;
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    22
                        x: switch (i + j) {
55306
ea43db53de91 8223305: Compiler support for Switch Expressions
jlahoda
parents: 53878
diff changeset
    23
                            case 0: break x;
51563
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    24
                        }
55306
ea43db53de91 8223305: Compiler support for Switch Expressions
jlahoda
parents: 53878
diff changeset
    25
                        yield "X";
51563
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    26
                    }
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    27
                    case 4: return "X"; //error: no returns from inside of the switch expression
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    28
                    case 5: continue;   //error: no continue out of the switch expression
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    29
                    case 6: continue LOOP; //error: dtto, but with a label
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    30
                    case 7: continue UNKNOWN; //error: unknown label
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    31
                    default: {
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    32
                        String x = "X";
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    33
                        x: switch (i + j) {
55306
ea43db53de91 8223305: Compiler support for Switch Expressions
jlahoda
parents: 53878
diff changeset
    34
                            case 0: yield ""; //error: cannot yield from switch expression that is not immediatelly enclosing
51563
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    35
                        }
55306
ea43db53de91 8223305: Compiler support for Switch Expressions
jlahoda
parents: 53878
diff changeset
    36
                        yield "X";
51563
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    37
                    }
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    38
                };
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    39
            case 1:
55306
ea43db53de91 8223305: Compiler support for Switch Expressions
jlahoda
parents: 53878
diff changeset
    40
                yield "1" + undef; //error: complex value and no switch expression
51563
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    41
        }
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    42
        }
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    43
        j: print(switch (i) {
55528
bad3754349aa 8226510: No compilation error when switch expression has no result expressions
jlahoda
parents: 55306
diff changeset
    44
            case 0: yield 0;
55306
ea43db53de91 8223305: Compiler support for Switch Expressions
jlahoda
parents: 53878
diff changeset
    45
            default: break j;
51563
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    46
        }, 0);
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    47
        j2: print(switch (i) {
55528
bad3754349aa 8226510: No compilation error when switch expression has no result expressions
jlahoda
parents: 55306
diff changeset
    48
            case 0: yield 0;
51563
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    49
            default: break j2;
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    50
        }, 0);
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    51
        return null;
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    52
    }
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    53
de411d537aae 8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff changeset
    54
}