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@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}} +} _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
