[cfe-commits] r165068 - in /cfe/trunk/test/PCH: Inputs/cxx11-statement-attributes.h cxx11-statement-attributes.cpp

Alexander Kornienko alexfh at google.com
Tue Oct 2 16:11:53 PDT 2012


Author: alexfh
Date: Tue Oct  2 18:11:53 2012
New Revision: 165068

URL: http://llvm.org/viewvc/llvm-project?rev=165068&view=rev
Log:
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

Added:
    cfe/trunk/test/PCH/Inputs/cxx11-statement-attributes.h
    cfe/trunk/test/PCH/cxx11-statement-attributes.cpp

Added: cfe/trunk/test/PCH/Inputs/cxx11-statement-attributes.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/Inputs/cxx11-statement-attributes.h?rev=165068&view=auto
==============================================================================
--- cfe/trunk/test/PCH/Inputs/cxx11-statement-attributes.h (added)
+++ cfe/trunk/test/PCH/Inputs/cxx11-statement-attributes.h Tue Oct  2 18:11:53 2012
@@ -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;
+}

Added: cfe/trunk/test/PCH/cxx11-statement-attributes.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/cxx11-statement-attributes.cpp?rev=165068&view=auto
==============================================================================
--- cfe/trunk/test/PCH/cxx11-statement-attributes.cpp (added)
+++ cfe/trunk/test/PCH/cxx11-statement-attributes.cpp Tue Oct  2 18:11:53 2012
@@ -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 at 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}}
+}





More information about the cfe-commits mailing list