32 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -verify=expected,cxx23 -std=c++23 -Wpre-c++23-compat %s2// RUN: %clang_cc1 -fsyntax-only -verify=expected,cxx20 -std=c++20 %s3 4void test_label_in_func() {5label1:6 int x;7label2:8 x = 1;9label3: 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 13int 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