1 /*
2 TEST_OUTPUT:
3 ---
4 fail_compilation/fail109.d(12): Error: enum member fail109.Bool.Unknown initialization with `Bool.True+1` causes overflow for type `bool`
5 ---
6 */
7 
8 enum Bool : bool
9 {
10     False,
11     True,
12     Unknown
13 }
14 
15 /* Bugzilla 11088
16 TEST_OUTPUT:
17 ---
18 fail_compilation/fail109.d(25): Error: enum member fail109.E.B initialization with `E.A+1` causes overflow for type `int`
19 fail_compilation/fail109.d(31): Error: enum member fail109.E1.B initialization with `E1.A+1` causes overflow for type `short`
20 ---
21 */
22 enum E
23 {
24     A = int.max,
25     B
26 }
27 
28 enum E1 : short
29 {
30     A = short.max,
31     B
32 }
33 
34 /* Bugzilla 14950
35 TEST_OUTPUT:
36 ---
37 fail_compilation/fail109.d(50): Deprecation: Comparison between different enumeration types `B` and `C`; If this behavior is intended consider using `std.conv.asOriginalType`
38 fail_compilation/fail109.d(50): Error: enum member fail109.B.end initialization with `B.start+1` causes overflow for type `C`
39 ---
40 */
41 enum C
42 {
43     start,
44     end
45 }
46 
47 enum B
48 {
49     start = C.end,
50     end
51 }
52 
53 /* Bugzilla 11849
54 TEST_OUTPUT:
55 ---
56 fail_compilation/fail109.d(72): Error: enum fail109.RegValueType1a recursive definition of `.max` property
57 fail_compilation/fail109.d(79): Error: enum fail109.RegValueType1b recursive definition of `.max` property
58 fail_compilation/fail109.d(84): Error: enum fail109.RegValueType2a recursive definition of `.min` property
59 fail_compilation/fail109.d(91): Error: enum fail109.RegValueType2b recursive definition of `.min` property
60 ---
61 */
62 
63 alias DWORD = uint;
64 
65 enum : DWORD
66 {
67     REG_DWORD = 4
68 }
69 
70 enum RegValueType1a : DWORD
71 {
72     Unknown = DWORD.max,
73     DWORD = REG_DWORD,
74 }
75 
76 enum RegValueType1b : DWORD
77 {
78     DWORD = REG_DWORD,
79     Unknown = DWORD.max,
80 }
81 
82 enum RegValueType2a : DWORD
83 {
84     Unknown = DWORD.min,
85     DWORD = REG_DWORD,
86 }
87 
88 enum RegValueType2b : DWORD
89 {
90     DWORD = REG_DWORD,
91     Unknown = DWORD.min,
92 }
93