source: tests/exceptions/finally-error.cfa@ 4b891e9

ADT ast-experimental enum forall-pointer-decay jacob/cs343-translation new-ast-unique-expr pthread-emulation qualifiedEnum
Last change on this file since 4b891e9 was c0b2a631, checked in by Andrew Beach <ajbeach@…>, 6 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.