forked from OSchip/llvm-project
31 lines
830 B
C++
31 lines
830 B
C++
![]() |
// RUN: %clang_cc1 -x c++ %s -verify
|
||
|
|
||
|
// dr2406: yes
|
||
|
|
||
|
void fallthrough(int n) {
|
||
|
void g(), h(), i();
|
||
|
switch (n) {
|
||
|
case 1:
|
||
|
case 2:
|
||
|
g();
|
||
|
[[fallthrough]];
|
||
|
case 3: // warning on fallthrough discouraged
|
||
|
do {
|
||
|
[[fallthrough]]; // expected-error {{fallthrough annotation does not directly precede switch label}}
|
||
|
} while (false);
|
||
|
case 6:
|
||
|
do {
|
||
|
[[fallthrough]]; // expected-error {{fallthrough annotation does not directly precede switch label}}
|
||
|
} while (n);
|
||
|
case 7:
|
||
|
while (false) {
|
||
|
[[fallthrough]]; // expected-error {{fallthrough annotation does not directly precede switch label}}
|
||
|
}
|
||
|
case 5:
|
||
|
h();
|
||
|
case 4: // implementation may warn on fallthrough
|
||
|
i();
|
||
|
[[fallthrough]]; // expected-error {{fallthrough annotation does not directly precede switch label}}
|
||
|
}
|
||
|
}
|