blob: 55f588477a65ec2ae90000cb36e5c336909170e2 [file] [log] [blame]
// 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] = {};