switch-implicit-fallthrough-per-method.cpp revision c2f51cfefd77e9b25f201ecf879343d6d9a45158
1c2f51cfefd77e9b25f201ecf879343d6d9a45158Sean Hunt// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 -Wimplicit-fallthrough-per-function %s 21973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko 31973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko 41973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienkoint fallthrough(int n) { 51973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko switch (n / 10) { 61973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko case 0: 71973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko n += 100; 8c2f51cfefd77e9b25f201ecf879343d6d9a45158Sean Hunt case 1: // expected-warning{{unannotated fall-through}} expected-note{{insert '[[clang::fallthrough]];' to silence this warning}} expected-note{{insert 'break;' to avoid fall-through}} 91973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko switch (n) { 101973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko case 111: 111973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko n += 111; 121973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko [[clang::fallthrough]]; 131973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko case 112: 141973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko n += 112; 15c2f51cfefd77e9b25f201ecf879343d6d9a45158Sean Hunt case 113: // expected-warning{{unannotated fall-through}} expected-note{{insert '[[clang::fallthrough]];' to silence this warning}} expected-note{{insert 'break;' to avoid fall-through}} 161973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko n += 113; 171973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko break ; 181973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko } 191973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko } 201973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko return n; 211973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko} 221973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko 231973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienkoint fallthrough2(int n) { 241973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko switch (n / 10) { 251973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko case 0: 261973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko n += 100; 271973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko case 1: // no warning, as we didn't "opt-in" for it in this method 281973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko switch (n) { 291973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko case 111: 301973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko n += 111; 311973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko case 112: // no warning, as we didn't "opt-in" for it in this method 321973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko n += 112; 331973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko case 113: // no warning, as we didn't "opt-in" for it in this method 341973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko n += 113; 351973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko break ; 361973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko } 371973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko } 381973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko return n; 391973634e445d4f1abdeedc2809f2d281929253b6Alexander Kornienko} 40