| // RUN: %check_clang_tidy %s bugprone-invalid-enum-default-initialization %t |
| |
| enum Enum1 { |
| Enum1_A = 1, |
| Enum1_B |
| }; |
| |
| struct Struct1 { |
| int a; |
| enum Enum1 b; |
| }; |
| |
| struct Struct2 { |
| struct Struct1 a; |
| char b; |
| }; |
| |
| enum Enum1 E1 = {}; |
| // CHECK-NOTES: :[[@LINE-1]]:17: warning: enum value of type 'Enum1' initialized with invalid value of 0, enum doesn't have a zero-value enumerator |
| // CHECK-NOTES: :3:6: note: enum is defined here |
| enum Enum1 E2[10] = {}; |
| // CHECK-NOTES: :[[@LINE-1]]:21: warning: enum value of type 'Enum1' initialized with invalid value of 0, enum doesn't have a zero-value enumerator |
| // CHECK-NOTES: :3:6: note: enum is defined here |
| enum Enum1 E3[10] = {Enum1_A}; |
| // CHECK-NOTES: :[[@LINE-1]]:21: warning: enum value of type 'Enum1' initialized with invalid value of 0, enum doesn't have a zero-value enumerator |
| // CHECK-NOTES: :3:6: note: enum is defined here |
| enum Enum1 E4[2][2] = {{Enum1_A}, {Enum1_A}}; |
| // CHECK-NOTES: :[[@LINE-1]]:24: warning: enum value of type 'Enum1' initialized with invalid value of 0, enum doesn't have a zero-value enumerator |
| // CHECK-NOTES: :3:6: note: enum is defined here |
| // CHECK-NOTES: :[[@LINE-3]]:35: warning: enum value of type 'Enum1' initialized with invalid value of 0, enum doesn't have a zero-value enumerator |
| // CHECK-NOTES: :3:6: note: enum is defined here |
| enum Enum1 E5[2][2] = {{Enum1_A, Enum1_A}}; |
| // CHECK-NOTES: :[[@LINE-1]]:23: warning: enum value of type 'Enum1' initialized with invalid value of 0, enum doesn't have a zero-value enumerator |
| // CHECK-NOTES: :3:6: note: enum is defined here |
| |
| |
| struct Struct1 S1[2][2] = {{{1, Enum1_A}, {2, Enum1_A}}}; |
| // CHECK-NOTES: :[[@LINE-1]]:27: warning: enum value of type 'Enum1' initialized with invalid value of 0, enum doesn't have a zero-value enumerator |
| // CHECK-NOTES: :3:6: note: enum is defined here |
| |
| struct Struct2 S2[3] = {{1}}; |
| // CHECK-NOTES: :[[@LINE-1]]:24: warning: enum value of type 'Enum1' initialized with invalid value of 0, enum doesn't have a zero-value enumerator |
| // CHECK-NOTES: :3:6: note: enum is defined here |
| // CHECK-NOTES: :[[@LINE-3]]:26: warning: enum value of type 'Enum1' initialized with invalid value of 0, enum doesn't have a zero-value enumerator |
| // CHECK-NOTES: :3:6: note: enum is defined here |
| |
| union Union1 { |
| enum Enum1 a; |
| int b; |
| }; |
| |
| // no warnings for union |
| union Union1 U1 = {}; |
| union Union1 U2[3] = {}; |