128 lines · c
1// RUN: %check_clang_tidy %s readability-enum-initial-value %t2// RUN: %check_clang_tidy -check-suffix=ENABLE %s readability-enum-initial-value %t -- \3// RUN: -config='{CheckOptions: { \4// RUN: readability-enum-initial-value.AllowExplicitZeroFirstInitialValue: false, \5// RUN: readability-enum-initial-value.AllowExplicitSequentialInitialValues: false, \6// RUN: }}'7 8enum EError {9 // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: initial values in enum 'EError' are not consistent10 // CHECK-MESSAGES-ENABLE: :[[@LINE-2]]:1: warning: initial values in enum 'EError' are not consistent11 EError_a = 1,12 EError_b,13 // CHECK-FIXES: EError_b = 2,14 EError_c = 3,15};16 17enum ENone {18 ENone_a,19 ENone_b,20 EENone_c,21};22 23enum EFirst {24 EFirst_a = 1,25 EFirst_b,26 EFirst_c,27};28 29enum EAll {30 EAll_a = 1,31 EAll_b = 2,32 EAll_c = 4,33};34 35#define ENUMERATOR_1 EMacro1_b36enum EMacro1 {37 // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: initial values in enum 'EMacro1' are not consistent38 // CHECK-MESSAGES-ENABLE: :[[@LINE-2]]:1: warning: initial values in enum 'EMacro1' are not consistent39 EMacro1_a = 1,40 ENUMERATOR_1,41 // CHECK-FIXES: ENUMERATOR_1 = 2,42 EMacro1_c = 3,43};44 45 46#define ENUMERATOR_2 EMacro2_b = 247enum EMacro2 {48 // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: initial values in enum 'EMacro2' are not consistent49 // CHECK-MESSAGES-ENABLE: :[[@LINE-2]]:1: warning: initial values in enum 'EMacro2' are not consistent50 EMacro2_a = 1,51 ENUMERATOR_2,52 EMacro2_c,53 // CHECK-FIXES: EMacro2_c = 3,54};55 56 57enum {58 // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: initial values in enum '<unnamed>' are not consistent59 // CHECK-MESSAGES-ENABLE: :[[@LINE-2]]:1: warning: initial values in enum '<unnamed>' are not consistent60 EAnonymous_a = 1,61 EAnonymous_b,62 // CHECK-FIXES: EAnonymous_b = 2,63 EAnonymous_c = 3,64};65 66 67enum EnumZeroFirstInitialValue {68 EnumZeroFirstInitialValue_0 = 0,69 // CHECK-MESSAGES-ENABLE: :[[@LINE-1]]:3: warning: zero initial value for the first enumerator in 'EnumZeroFirstInitialValue' can be disregarded70 // CHECK-FIXES-ENABLE: EnumZeroFirstInitialValue_0 ,71 EnumZeroFirstInitialValue_1,72 EnumZeroFirstInitialValue_2,73};74 75enum EnumZeroFirstInitialValueWithComment {76 EnumZeroFirstInitialValueWithComment_0 = /* == */ 0,77 // CHECK-MESSAGES-ENABLE: :[[@LINE-1]]:3: warning: zero initial value for the first enumerator in 'EnumZeroFirstInitialValueWithComment' can be disregarded78 // CHECK-FIXES-ENABLE: EnumZeroFirstInitialValueWithComment_0 /* == */ ,79 EnumZeroFirstInitialValueWithComment_1,80 EnumZeroFirstInitialValueWithComment_2,81};82 83enum EnumSequentialInitialValue {84 // CHECK-MESSAGES-ENABLE: :[[@LINE-1]]:1: warning: sequential initial value in 'EnumSequentialInitialValue' can be ignored85 EnumSequentialInitialValue_0 = 2,86 // CHECK-FIXES-ENABLE: EnumSequentialInitialValue_0 = 2,87 EnumSequentialInitialValue_1 = 3,88 // CHECK-FIXES-ENABLE: EnumSequentialInitialValue_1 ,89 EnumSequentialInitialValue_2 = 4,90 // CHECK-FIXES-ENABLE: EnumSequentialInitialValue_2 ,91};92 93// gh10759094enum WithFwdDeclInconsistent : int;95 96enum WithFwdDeclInconsistent : int {97 // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: initial values in enum 'WithFwdDeclInconsistent' are not consistent98 // CHECK-MESSAGES-ENABLE: :[[@LINE-2]]:1: warning: initial values in enum 'WithFwdDeclInconsistent' are not consistent99 EFI0,100 // CHECK-FIXES: EFI0 = 0,101 EFI1 = 1,102 EFI2,103 // CHECK-FIXES: EFI2 = 2,104};105 106enum WithFwdDeclZeroFirst : int;107 108enum WithFwdDeclZeroFirst : int {109 // CHECK-MESSAGES-ENABLE: :[[@LINE+1]]:3: warning: zero initial value for the first enumerator in 'WithFwdDeclZeroFirst' can be disregarded110 EFZ0 = 0,111 // CHECK-FIXES-ENABLE: EFZ0 ,112 EFZ1,113 EFZ2,114};115 116 117enum WithFwdDeclSequential : int;118 119enum WithFwdDeclSequential : int {120 // CHECK-MESSAGES-ENABLE: :[[@LINE-1]]:1: warning: sequential initial value in 'WithFwdDeclSequential' can be ignored121 EFS0 = 2,122 // CHECK-FIXES-ENABLE: EFS0 = 2,123 EFS1 = 3,124 // CHECK-FIXES-ENABLE: EFS1 ,125 EFS2 = 4,126 // CHECK-FIXES-ENABLE: EFS2 ,127};128