forked from OSchip/llvm-project
Added a test for C++11 statement attributes serialization.
Summary: Uses [[clang::fallthrough]] attribute in a template function, and -Wimplicit-fallthrough to check the attribute presence in an instantiation. Reviewers: rsmith Reviewed By: rsmith CC: cfe-commits Differential Revision: http://llvm-reviews.chandlerc.com/D55 llvm-svn: 165068
This commit is contained in:
parent
aa7aeaa0a5
commit
2d4f311642
|
@ -0,0 +1,14 @@
|
|||
// To be used with cxx11-statement-attributes.cpp.
|
||||
template<const int N>
|
||||
int f(int n) {
|
||||
switch (n * N) {
|
||||
case 0:
|
||||
n += 15;
|
||||
[[clang::fallthrough]]; // This shouldn't generate a warning.
|
||||
case 1:
|
||||
n += 20;
|
||||
[[clang::fallthrough]]; // This should generate a warning: "fallthrough annotation does not directly precede switch label".
|
||||
break;
|
||||
}
|
||||
return n;
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
// Sanity check.
|
||||
// RUN: %clang_cc1 -include %S/Inputs/cxx11-statement-attributes.h -std=c++11 -Wimplicit-fallthrough -fsyntax-only %s -o - -verify
|
||||
// Run the same tests, this time with the attributes loaded from the PCH file.
|
||||
// RUN: %clang_cc1 -x c++-header -emit-pch -std=c++11 -o %t %S/Inputs/cxx11-statement-attributes.h
|
||||
// RUN: %clang_cc1 -include-pch %t -std=c++11 -Wimplicit-fallthrough -fsyntax-only %s -o - -verify
|
||||
|
||||
// Warning from Inputs/cxx11-statement-attributes.h:
|
||||
// expected-warning@10 {{fallthrough annotation does not directly precede switch label}}
|
||||
|
||||
void g(int n) {
|
||||
f<1>(n); // expected-note {{in instantiation of function template specialization 'f<1>' requested here}}
|
||||
}
|
Loading…
Reference in New Issue