xref: /llvm-project/clang/test/Parser/cxx2b-label.cpp (revision ba15d186e5cef2620d562c6c9d9a6d570382cd0a)
1 // RUN: %clang_cc1 -fsyntax-only -verify=expected,cxx23 -std=c++23 -Wpre-c++23-compat %s
2 // RUN: %clang_cc1 -fsyntax-only -verify=expected,cxx20 -std=c++20 %s
3 
test_label_in_func()4 void test_label_in_func() {
5 label1:
6     int x;
7 label2:
8     x = 1;
9 label3: label4: label5:
10 } // cxx20-warning {{label at end of compound statement is a C++23 extension}} \
11      cxx23-warning {{label at end of compound statement is incompatible with C++ standards before C++23}}
12 
test_label_in_switch(int v)13 int test_label_in_switch(int v) {
14     switch (v) {
15     case 1:
16         return 1;
17     case 2:
18         return 2;
19     case 3: case 4: case 5:
20     } // cxx20-warning {{label at end of compound statement is a C++23 extension}} \
21          cxx23-warning {{label at end of compound statement is incompatible with C++ standards before C++23}}
22 
23     switch (v) {
24     case 6:
25         return 6;
26     default:
27     } // cxx20-warning {{label at end of compound statement is a C++23 extension}} \
28          cxx23-warning {{label at end of compound statement is incompatible with C++ standards before C++23}}
29 
30     return 0;
31 }
32