test/langtools/tools/javac/switchextra/DefiniteAssignment2.java
author jlahoda
Tue, 12 Nov 2019 06:32:13 +0000
changeset 59021 cfc7bb9a5a92
parent 55306 ea43db53de91
permissions -rw-r--r--
8232684: Make switch expressions final Reviewed-by: alanb, mcimadamore, kvn

/**
 * @test /nodynamiccopyright/
 * @summary Verify that definite assignment works (illegal code)
 * @compile/fail/ref=DefiniteAssignment2.out -XDrawDiagnostics DefiniteAssignment2.java
 */
public class DefiniteAssignment2 {

    public static void main(String[] args) {
        int a = 0;
        E e = E.A;

        {
        int x;

        switch(a) {
            case 0: break;
            default: x = 1; break;
        }

        System.err.println(x);
        }

        {
        int x;

        switch(a) {
            case 0 -> {}
            default -> x = 1;
        }

        System.err.println(x);
        }

        {
        int x;

        switch(a) {
            case 0: x = 0; break;
            default:
        }

        System.err.println(x);
        }

        {
        int x;

        switch(e) {
            case A, B, C -> x = 0;
        }

        System.err.println(x);
        }

        {
        int x;

        switch(e) {
            case A, B, C -> { x = 0; }
        }

        System.err.println(x);
        }

        {
        int x;

        switch(e) {
            case A, B -> { x = 0; }
            case C -> throw new IllegalStateException();
        }

        System.err.println(x);
        }
    }

    enum E {
        A, B, C;
    }
}