diff options
| author | Alexander Kornienko <alexfh@google.com> | 2012-10-02 23:11:53 +0000 |
|---|---|---|
| committer | Alexander Kornienko <alexfh@google.com> | 2012-10-02 23:11:53 +0000 |
| commit | 2d4f311642b7d062909796c1ce3fd95fbd58151d (patch) | |
| tree | 1b0f3f75a988e8ebfb40c47d1ed4a1adb3aaf701 | |
| parent | aa7aeaa0a55ee39536f5a6b02091f46b330dac51 (diff) | |
| download | bcm5719-llvm-2d4f311642b7d062909796c1ce3fd95fbd58151d.tar.gz bcm5719-llvm-2d4f311642b7d062909796c1ce3fd95fbd58151d.zip | |
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
| -rw-r--r-- | clang/test/PCH/Inputs/cxx11-statement-attributes.h | 14 | ||||
| -rw-r--r-- | clang/test/PCH/cxx11-statement-attributes.cpp | 12 |
2 files changed, 26 insertions, 0 deletions
diff --git a/clang/test/PCH/Inputs/cxx11-statement-attributes.h b/clang/test/PCH/Inputs/cxx11-statement-attributes.h new file mode 100644 index 00000000000..f4d0619a3f9 --- /dev/null +++ b/clang/test/PCH/Inputs/cxx11-statement-attributes.h @@ -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; +} diff --git a/clang/test/PCH/cxx11-statement-attributes.cpp b/clang/test/PCH/cxx11-statement-attributes.cpp new file mode 100644 index 00000000000..3bb7b40aa96 --- /dev/null +++ b/clang/test/PCH/cxx11-statement-attributes.cpp @@ -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}} +} |

