1 // RUN: %check_clang_tidy %s bugprone-switch-missing-default-case %t -- -- -fno-delayed-template-parsing 2 3 typedef int MyInt; 4 enum EnumType { eE2 }; 5 typedef EnumType MyEnum; 6 positive()7void positive() { 8 int I1 = 0; 9 // CHECK-MESSAGES: [[@LINE+1]]:3: warning: switching on non-enum value without default case may not cover all cases [bugprone-switch-missing-default-case] 10 switch (I1) { 11 case 0: 12 break; 13 } 14 15 MyInt I2 = 0; 16 // CHECK-MESSAGES: [[@LINE+1]]:3: warning: switching on non-enum value without default case may not cover all cases [bugprone-switch-missing-default-case] 17 switch (I2) { 18 case 0: 19 break; 20 } 21 22 int getValue(void); 23 // CHECK-MESSAGES: [[@LINE+1]]:3: warning: switching on non-enum value without default case may not cover all cases [bugprone-switch-missing-default-case] 24 switch (getValue()) { 25 case 0: 26 break; 27 } 28 } 29 negative()30void negative() { 31 enum E { eE1 }; 32 E E1 = eE1; 33 switch (E1) { // no-warning 34 case eE1: 35 break; 36 } 37 38 MyEnum E2 = eE2; 39 switch (E2) { // no-warning 40 case eE2: 41 break; 42 } 43 44 int I1 = 0; 45 switch (I1) { // no-warning 46 case 0: 47 break; 48 default: 49 break; 50 } 51 52 MyInt I2 = 0; 53 switch (I2) { // no-warning 54 case 0: 55 break; 56 default: 57 break; 58 } 59 60 int getValue(void); 61 switch (getValue()) { // no-warning 62 case 0: 63 break; 64 default: 65 break; 66 } 67 } 68 69 template<typename T> testTemplate(T Value)70void testTemplate(T Value) { 71 switch (Value) { 72 case 0: 73 break; 74 } 75 } 76 exampleUsage()77void exampleUsage() { 78 testTemplate(5); 79 testTemplate(EnumType::eE2); 80 } 81