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