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}}
|
|
}
|
|
}
|