[cfe-commits] [PATCH] Added a test for C++11 statement attributes serialization.

Alexander Kornienko reviews at llvm-reviews.chandlerc.com
Tue Oct 2 07:16:44 PDT 2012


alexfh added you to the CC list for the revision "Added a test for C++11 statement attributes serialization.".

Hi rsmith,

Uses [[clang::fallthrough]] attribute in a template function, and -Wimplicit-fallthrough to check the attribute presence in an instantiation.

http://llvm-reviews.chandlerc.com/D55

Files:
  tools/clang/test/PCH/cxx11-statement-attributes.cpp
  tools/clang/test/PCH/Inputs/cxx11-statement-attributes.h

Index: tools/clang/test/PCH/cxx11-statement-attributes.cpp
===================================================================
--- tools/clang/test/PCH/cxx11-statement-attributes.cpp
+++ tools/clang/test/PCH/cxx11-statement-attributes.cpp
@@ -0,0 +1,13 @@
+// Sanity check.
+// RUN: %clang_cc1 -include %S/Inputs/cxx11-statement-attributes.h -std=c++11 -Wimplicit-fallthrough -fsyntax-only %s -o /dev/null 2>&1 | FileCheck %s
+// 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 /dev/null 2>&1 | FileCheck %s
+
+void g(int n) {
+  f<1>(n);
+}
+
+// CHECK: Inputs/cxx11-statement-attributes.h:10:7: warning: fallthrough annotation does not directly precede switch label
+// CHECK: cxx11-statement-attributes.cpp:8:3: note: in instantiation of function template specialization 'f<1>' requested here
+// CHECK: 1 warning generated.
Index: tools/clang/test/PCH/Inputs/cxx11-statement-attributes.h
===================================================================
--- tools/clang/test/PCH/Inputs/cxx11-statement-attributes.h
+++ tools/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;
+}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D55.1.patch
Type: text/x-patch
Size: 1723 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20121002/319f73ce/attachment.bin>


More information about the cfe-commits mailing list