test/langtools/tools/javac/switchexpr/TryCatchFinally.java
author jlahoda
Tue, 12 Nov 2019 06:32:13 +0000
changeset 59021 cfc7bb9a5a92
parent 55340 ef577fa0dd10
permissions -rw-r--r--
8232684: Make switch expressions final Reviewed-by: alanb, mcimadamore, kvn
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
55340
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
     1
/*
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
     2
 * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
     4
 *
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
     7
 * published by the Free Software Foundation.
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
     8
 *
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    13
 * accompanied this code).
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    14
 *
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    18
 *
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    21
 * questions.
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    22
 */
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    23
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    24
/**
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    25
 * @test
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    26
 * @bug 8220018
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    27
 * @summary Verify that try-catch-finally inside a switch expression works properly.
59021
cfc7bb9a5a92 8232684: Make switch expressions final
jlahoda
parents: 55340
diff changeset
    28
 * @compile TryCatchFinally.java
cfc7bb9a5a92 8232684: Make switch expressions final
jlahoda
parents: 55340
diff changeset
    29
 * @run main TryCatchFinally
55340
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    30
 */
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    31
public class TryCatchFinally {//TODO: yield <double>
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    32
    public static void main(String[] args) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    33
        for (int p1 = 0; p1 < 2; p1++) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    34
            for (int p2 = 0; p2 < 2; p2++) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    35
                for (int p3 = 0; p3 < 2; p3++) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    36
                    for (int p4 = 0; p4 < 2; p4++) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    37
                        for (int p5 = 0; p5 < 2; p5++) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    38
                            for (int p6 = 0; p6 < 3; p6++) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    39
                                int actual = runSwitchesOrdinary(p1, p2, p3, p4, p5, p6);
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    40
                                int expected = computeExpectedOrdinary(p1, p2, p3, p4, p5, p6);
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    41
                                if (actual != expected) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    42
                                    throw new IllegalStateException("actual=" + actual + "; " +
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    43
                                                                    "expected=" + expected + ", parameters: " + p1 + ", " + p2 + ", " + p3 + ", " + p4 + ", " + p5 + ", " + p6 + ", ");
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    44
                                }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    45
                            }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    46
                        }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    47
                    }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    48
                }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    49
            }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    50
        }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    51
        {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    52
            boolean correct = false;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    53
            int v;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    54
            if (switch (0) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    55
                case 0:
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    56
                    try {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    57
                        if (true) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    58
                            throw new MarkerException();
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    59
                        }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    60
                        yield false;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    61
                    } catch (MarkerException ex) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    62
                        yield false;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    63
                    } finally {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    64
                        v = 0;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    65
                        yield true;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    66
                    }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    67
                default: yield false;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    68
            } && v == 0) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    69
                correct = true;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    70
            }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    71
            if (!correct) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    72
                throw new IllegalStateException();
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    73
            }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    74
        }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    75
        {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    76
            boolean correct = false;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    77
            if (switch (0) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    78
                case 0:
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    79
                    try {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    80
                        if (true) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    81
                            throw new MarkerException();
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    82
                        }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    83
                        yield new TryCatchFinally().fls();
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    84
                    } catch (MarkerException ex) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    85
                        yield new TryCatchFinally().fls();
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    86
                    } finally {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    87
                        yield true;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    88
                    }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    89
                default: yield new TryCatchFinally().fls();
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    90
            }) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    91
                correct = true;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    92
            }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    93
            if (!correct) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    94
                throw new IllegalStateException();
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    95
            }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    96
        }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    97
        {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    98
            E e = E.A;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
    99
            boolean correct = false;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   100
            int v;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   101
            if (switch (0) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   102
                case 0:
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   103
                    try {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   104
                        if (true) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   105
                            throw new MarkerException();
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   106
                        }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   107
                        yield false;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   108
                    } catch (MarkerException ex) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   109
                        v = 0;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   110
                        yield true;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   111
                    } finally {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   112
                        try {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   113
                            if (true)
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   114
                                throw new MarkerException();
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   115
                        } catch (MarkerException ex) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   116
                            e = e.next();
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   117
                        }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   118
                    }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   119
                default: yield false;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   120
            } && v == 0) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   121
                correct = true;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   122
            }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   123
            if (!correct) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   124
                throw new IllegalStateException();
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   125
            }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   126
        }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   127
        {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   128
            E e = E.A;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   129
            boolean correct = false;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   130
            int v;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   131
            if (switch (0) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   132
                case 0:
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   133
                    try {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   134
                        if (true) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   135
                            throw new MarkerException();
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   136
                        }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   137
                        yield false;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   138
                    } catch (MarkerException ex) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   139
                        yield false;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   140
                    } finally {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   141
                        try {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   142
                            if (true)
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   143
                                throw new MarkerException();
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   144
                        } catch (MarkerException ex) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   145
                            e = e.next();
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   146
                        } finally {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   147
                            v = 0;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   148
                            yield true;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   149
                        }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   150
                    }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   151
                default: yield false;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   152
            } && v == 0) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   153
                correct = true;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   154
            }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   155
            if (!correct) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   156
                throw new IllegalStateException();
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   157
            }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   158
        }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   159
        {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   160
            boolean correct = false;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   161
            if (!switch (0) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   162
                default -> {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   163
                    try {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   164
                        yield switch(0) { default -> true; };
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   165
                    }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   166
                    finally {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   167
                        yield false;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   168
                    }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   169
                }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   170
            }) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   171
                correct = true;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   172
            }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   173
            if (!correct) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   174
                throw new IllegalStateException();
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   175
            }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   176
        }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   177
    }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   178
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   179
    private static int runSwitchesOrdinary(int p1, int p2, int p3, int p4, int p5, int p6) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   180
        return 1 + switch (p1) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   181
            case 0:
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   182
                try {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   183
                    if (p2 == 0) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   184
                        new TryCatchFinally().throwException();
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   185
                    }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   186
                    try {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   187
                        yield 10 + switch (p3) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   188
                            case 0 -> {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   189
                                try {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   190
                                    if (p4  == 0) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   191
                                        new TryCatchFinally().throwException();
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   192
                                    }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   193
                                    yield 100;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   194
                                } catch (Throwable ex) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   195
                                    yield 200;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   196
                                } finally {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   197
                                    if (p6 == 0) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   198
                                        yield 300;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   199
                                    } else if (p6 == 1) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   200
                                        throw new MarkerException();
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   201
                                    }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   202
                                }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   203
                            }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   204
                            default -> 400;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   205
                        };
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   206
                    } catch (MarkerException me) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   207
                        yield 510;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   208
                    }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   209
                } catch(Throwable ex) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   210
                    try {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   211
                        yield 20 + switch (p3) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   212
                            case 0 -> {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   213
                                try {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   214
                                    if (p4  == 0) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   215
                                        new TryCatchFinally().throwException();
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   216
                                    }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   217
                                    yield 100;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   218
                                } catch (Throwable ex2) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   219
                                    yield 200;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   220
                                } finally {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   221
                                    if (p6 == 0) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   222
                                        yield 300;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   223
                                    } else if (p6 == 1) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   224
                                        throw new MarkerException();
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   225
                                    }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   226
                                }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   227
                            }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   228
                            default -> 400;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   229
                        };
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   230
                    } catch (MarkerException me) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   231
                        yield 520;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   232
                    }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   233
                } finally {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   234
                    if (p5 == 0) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   235
                        try {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   236
                            yield 30 + switch (p3) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   237
                                case 0 -> {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   238
                                    try {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   239
                                        if (p4  == 0) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   240
                                            new TryCatchFinally().throwException();
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   241
                                        }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   242
                                        yield 100;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   243
                                    } catch (Throwable ex) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   244
                                        yield 200;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   245
                                    } finally {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   246
                                        if (p6 == 0) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   247
                                            yield 300;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   248
                                        } else if (p6 == 1) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   249
                                            throw new MarkerException();
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   250
                                        }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   251
                                    }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   252
                                }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   253
                                default -> 400;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   254
                            };
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   255
                        } catch (MarkerException me) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   256
                            yield 530;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   257
                        }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   258
                    }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   259
                }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   260
            default: yield 40;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   261
        };
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   262
    }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   263
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   264
    private static int computeExpectedOrdinary(int p1, int p2, int p3, int p4, int p5, int p6) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   265
        int expected = 0;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   266
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   267
        if (p1 == 0) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   268
            if (p5 == 0) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   269
                expected = 30;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   270
            } else if (p2 == 0) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   271
                expected = 20;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   272
            } else {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   273
                expected = 10;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   274
            }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   275
            if (p3 == 0) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   276
                if (p6 == 0) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   277
                    expected += 300;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   278
                } else if (p6 == 1) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   279
                    expected += 500;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   280
                } else if (p4 == 0) {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   281
                    expected += 200;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   282
                } else {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   283
                    expected += 100;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   284
                }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   285
            } else {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   286
                expected += 400;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   287
            }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   288
        } else {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   289
            expected = 40;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   290
        }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   291
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   292
        expected += 1;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   293
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   294
        return expected;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   295
    }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   296
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   297
    private boolean fls() {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   298
        return false;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   299
    }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   300
    private void throwException() {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   301
        throw new RuntimeException();
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   302
    }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   303
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   304
    static class MarkerException extends Throwable {}
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   305
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   306
    enum E {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   307
        A, B, C;
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   308
        public E next() {
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   309
            return values()[(ordinal() + 1) % values().length];
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   310
        }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   311
    }
ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression
jlahoda
parents:
diff changeset
   312
}