source:
tests/fallthrough.cfa
@
42f1279c
Last change on this file since 42f1279c was f498c51, checked in by , 5 years ago | |
---|---|
|
|
File size: 2.4 KB |
Line | |
---|---|
1 | // |
2 | // Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo |
3 | // |
4 | // The contents of this file are covered under the licence agreement in the |
5 | // file "LICENCE" distributed with Cforall. |
6 | // |
7 | // fallthrough.cfa -- |
8 | // |
9 | // Author : Rob Schluntz |
10 | // Created On : Wed Mar 14 10:06:25 2018 |
11 | // Last Modified By : Peter A. Buhr |
12 | // Last Modified On : Mon Dec 24 11:24:35 2018 |
13 | // Update Count : 22 |
14 | // |
15 | |
16 | #include <fstream.hfa> |
17 | |
18 | void test(int choice) { |
19 | choose ( choice ) { |
20 | case 1: |
21 | sout | "case 1"; |
22 | fallthru; |
23 | case 2: |
24 | sout | "case 2"; |
25 | fallthru; |
26 | sout | "did not fallthru"; |
27 | if ( 7 ) fallthru common2; |
28 | fallthru common1; |
29 | case 3: |
30 | sout | "case 3"; |
31 | fallthru default; |
32 | fallthru common1; |
33 | common1: |
34 | sout | "common1"; |
35 | // break |
36 | case 4: |
37 | sout | "case 4"; |
38 | fallthru common2; |
39 | case 5: |
40 | sout | "case 5"; |
41 | fallthru common2; |
42 | fallthru default; |
43 | case 6: |
44 | sout | "case 6"; |
45 | fallthru common2; |
46 | common2: |
47 | sout | "common2"; |
48 | // break |
49 | default: |
50 | sout | "default"; |
51 | fallthru; |
52 | } // choose |
53 | |
54 | sout | nl; |
55 | |
56 | switch ( choice ) { |
57 | case 1: |
58 | sout | "case 1"; |
59 | switch ( choice ) { |
60 | case 1: |
61 | sout | "case 1"; |
62 | for ( int i = 0; i < 4; i += 1 ) { |
63 | sout | i; |
64 | if ( i == 2 ) fallthru common; |
65 | } // for |
66 | } // switch |
67 | break; |
68 | case 5: |
69 | sout | "case 5"; |
70 | if ( choice == 5 ) { |
71 | if ( choice != 5 ) { |
72 | sout | "error"; |
73 | } else { |
74 | sout | "check"; |
75 | fallthru common; |
76 | } // if |
77 | } // if |
78 | common: |
79 | sout | "common"; |
80 | fallthru; |
81 | break; |
82 | default: |
83 | sout | "default"; |
84 | fallthru; |
85 | } // switch |
86 | |
87 | #if ERR1 |
88 | // ERROR: fallthrough must be enclosed in switch or choose |
89 | fallthru; |
90 | // ERROR: fallthrough must be enclosed in switch or choose |
91 | fallthru common4; |
92 | // ERROR: fallthrough must be enclosed in switch or choose |
93 | fallthru default; |
94 | choose ( 3 ) { |
95 | case 2: |
96 | for () { |
97 | choose ( 2 ) { |
98 | case 1: |
99 | // ERROR: default is later, but in a different switch |
100 | fallthru default; |
101 | // ERROR: common3 is later, but not at the same level as a case clause |
102 | fallthru common3; |
103 | } |
104 | common3: ; |
105 | } // for |
106 | default: |
107 | case 1: |
108 | common4: |
109 | // ERROR: attempt to jump up with fallthrough |
110 | if ( 7 ) fallthru common4; |
111 | // ERROR: attempt to jump up with fallthrough |
112 | fallthru default; |
113 | } // choose |
114 | #endif |
115 | } |
116 | |
117 | int main() { |
118 | test( 1 ); |
119 | sout | nl; |
120 | test( 5 ); |
121 | } |
122 | |
123 | // Local Variables: // |
124 | // tab-width: 4 // |
125 | // compile-command: "cfa fallthrough.cfa" // |
126 | // End: // |
Note: See TracBrowser
for help on using the repository browser.