| // RUN: %clang_cc1 -fsyntax-only -verify=expected,cxx23 -std=c++23 -Wpre-c++23-compat %s |
| // RUN: %clang_cc1 -fsyntax-only -verify=expected,cxx20 -std=c++20 %s |
| |
| void test_label_in_func() { |
| label1: |
| int x; |
| label2: |
| x = 1; |
| label3: label4: label5: |
| } // cxx20-warning {{label at end of compound statement is a C++23 extension}} \ |
| cxx23-warning {{label at end of compound statement is incompatible with C++ standards before C++23}} |
| |
| int test_label_in_switch(int v) { |
| switch (v) { |
| case 1: |
| return 1; |
| case 2: |
| return 2; |
| case 3: case 4: case 5: |
| } // cxx20-warning {{label at end of compound statement is a C++23 extension}} \ |
| cxx23-warning {{label at end of compound statement is incompatible with C++ standards before C++23}} |
| |
| switch (v) { |
| case 6: |
| return 6; |
| default: |
| } // cxx20-warning {{label at end of compound statement is a C++23 extension}} \ |
| cxx23-warning {{label at end of compound statement is incompatible with C++ standards before C++23}} |
| |
| return 0; |
| } |