source: tests/exceptions/finally-error.cfa @ 27f2bef

Last change on this file since 27f2bef was c0b2a631, checked in by Andrew Beach <ajbeach@…>, 5 years ago

Added the exceptions test folder.

  • Property mode set to 100644
File size: 1.9 KB
Line 
1// All of these should be caught as long as the check remains in the same
2// pass. (Although not even all of the checks are in place yet.)
3
4void break_in_finally() {
5        while (true) {
6                try {} finally {
7                        break;
8                }
9        }
10}
11
12void for_break_in_finally() {
13        for (10) {
14                try {} finally {
15                        break;
16                }
17        }
18}
19
20void do_while_break_in_finally() {
21        do {
22                try {} finally {
23                        break;
24                }
25        } while (false);
26}
27
28void continue_in_finally() {
29        while (true) {
30                try {} finally {
31                        continue;
32                }
33        }
34}
35
36void goto_in_finally() {
37        while (true) {
38                try {} finally {
39                        goto end_of_function;
40                }
41        }
42        end_of_function: {}
43}
44
45void labelled_break_in_finally() {
46        mainLoop: while (true) {
47                try {} finally {
48                        break mainLoop;
49                }
50        }
51}
52
53void labelled_continue_in_finally() {
54        mainLoop: while (true) {
55                try {} finally {
56                        continue mainLoop;
57                }
58        }
59}
60
61void switch_break_in_finally() {
62        switch (1) {
63        case 1:
64                try {} finally {
65                        break;
66                }
67        default:
68                break;
69        }
70}
71
72void choose_break_in_finally() {
73        choose (1) {
74        case 1:
75                try {} finally {
76                        break;
77                }
78        default:
79                break;
80        }
81}
82
83void choose_fallthru_in_finally() {
84        choose (1) {
85        case 1:
86                try {} finally {
87                        fallthru;
88                }
89        default:
90                break;
91        }
92}
93
94void labelled_choose_break_in_finally() {
95        mainBlock: choose (1) {
96        case 1:
97                try {} finally {
98                        break mainBlock;
99                }
100        case 2:
101                break;
102        default:
103                break;
104        }
105}
106
107void labelled_choose_fallthru_in_finally() {
108        mainBlock: choose (1) {
109        case 1:
110                try {} finally {
111                        fallthru mainBlock;
112                }
113        case 2:
114                break;
115        default:
116                break;
117        }
118}
119
120void choose_fallthru_default_in_finally() {
121        choose (1) {
122        case 1:
123                try {} finally {
124                        fallthru default;
125                }
126        default:
127                break;
128        }
129}
130
131void void_return_in_finally() {
132        try {} finally {
133                return;
134        }
135}
136
137int value_return_in_finally() {
138        try {} finally {
139                return -7;
140        }
141
142}
143
144// Checked in the same place, make sure it does't break.
145void break_in_function() {
146        while (true) {
147                void inner() {
148                        break;
149                }
150        }
151}
152
153void main() {
154        // Should not compile.
155        return 1;
156}
Note: See TracBrowser for help on using the repository browser.