source: tests/fallthrough.cfa@ 7d0881c

ADT arm-eh ast-experimental enum forall-pointer-decay jacob/cs343-translation new-ast new-ast-unique-expr pthread-emulation qualifiedEnum
Last change on this file since 7d0881c was f498c51, checked in by Peter A. Buhr <pabuhr@…>, 7 years ago

change printf to sout

  • Property mode set to 100644
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
18void 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
117int 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.