source: tests/ctrl-flow/break-misc.cfa@ 1cc5c6a

Last change on this file since 1cc5c6a was c248b39, checked in by Andrew Beach <ajbeach@…>, 14 months ago

Unlabelled breaks were not targetting the correct enclosing control structures. Also added a test and improved error messages.

  • Property mode set to 100644
File size: 607 bytes
Line 
1// Test breaking to unusual (non-loop, non-switch) statements.
2
3#include <fstream.hfa>
4
5void breakTargetLabels() {
6 sout | "if";
7 Lif: if ( true ) {
8 break Lif;
9 sout | "!";
10 }
11 sout | "end" | nl;
12
13 sout | "block";
14 Lblock: {
15 break Lblock;
16 sout | "!";
17 }
18 sout | "end" | nl;
19}
20
21void breakSkipsUnlabelled() {
22 sout | "unlabelled";
23 for (int i = 0 ; i < 2 ; ++i) {
24 sout | "loop";
25 block: {
26 break;
27 sout | "!";
28 // Prevent unused label warning.
29 if ( false ) break block;
30 }
31 }
32 sout | "end" | nl;
33}
34
35int main() {
36 sout | nlOff;
37
38 breakTargetLabels();
39 sout | nl;
40 breakSkipsUnlabelled();
41}
Note: See TracBrowser for help on using the repository browser.