summaryrefslogtreecommitdiffstats
path: root/test/SemaCXX/switch-implicit-fallthrough-per-method.cpp
diff options
context:
space:
mode:
authordim <dim@FreeBSD.org>2012-08-15 20:02:54 +0000
committerdim <dim@FreeBSD.org>2012-08-15 20:02:54 +0000
commit554bcb69c2d785a011a30e7db87a36a87fe7db10 (patch)
tree9abb1a658a297776086f4e0dfa6ca533de02104e /test/SemaCXX/switch-implicit-fallthrough-per-method.cpp
parentbb67ca86b31f67faee50bd10c3b036d65751745a (diff)
downloadFreeBSD-src-554bcb69c2d785a011a30e7db87a36a87fe7db10.zip
FreeBSD-src-554bcb69c2d785a011a30e7db87a36a87fe7db10.tar.gz
Vendor import of clang trunk r161861:
http://llvm.org/svn/llvm-project/cfe/trunk@161861
Diffstat (limited to 'test/SemaCXX/switch-implicit-fallthrough-per-method.cpp')
-rw-r--r--test/SemaCXX/switch-implicit-fallthrough-per-method.cpp51
1 files changed, 51 insertions, 0 deletions
diff --git a/test/SemaCXX/switch-implicit-fallthrough-per-method.cpp b/test/SemaCXX/switch-implicit-fallthrough-per-method.cpp
new file mode 100644
index 0000000..7c52e51
--- /dev/null
+++ b/test/SemaCXX/switch-implicit-fallthrough-per-method.cpp
@@ -0,0 +1,51 @@
+// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 -Wimplicit-fallthrough-per-function %s
+
+
+int fallthrough(int n) {
+ switch (n / 10) {
+ case 0:
+ n += 100;
+ case 1: // expected-warning{{unannotated fall-through}} expected-note{{insert '[[clang::fallthrough]];' to silence this warning}} expected-note{{insert 'break;' to avoid fall-through}}
+ switch (n) {
+ case 111:
+ n += 111;
+ [[clang::fallthrough]];
+ case 112:
+ n += 112;
+ case 113: // expected-warning{{unannotated fall-through}} expected-note{{insert '[[clang::fallthrough]];' to silence this warning}} expected-note{{insert 'break;' to avoid fall-through}}
+ n += 113;
+ break ;
+ }
+ }
+ return n;
+}
+
+int fallthrough2(int n) {
+ switch (n / 10) {
+ case 0:
+ n += 100;
+ case 1: // no warning, as we didn't "opt-in" for it in this method
+ switch (n) {
+ case 111:
+ n += 111;
+ case 112: // no warning, as we didn't "opt-in" for it in this method
+ n += 112;
+ case 113: // no warning, as we didn't "opt-in" for it in this method
+ n += 113;
+ break ;
+ }
+ }
+ return n;
+}
+
+void unscoped(int n) {
+ switch (n % 2) {
+ case 0:
+ // FIXME: This should be typo-corrected, probably.
+ [[fallthrough]];
+ case 2: // expected-warning{{unannotated fall-through}} expected-note{{clang::fallthrough}} expected-note{{break;}}
+ [[clang::fallthrough]];
+ case 1:
+ break;
+ }
+}
OpenPOWER on IntegriCloud