v2 / vlib / v / checker / tests / enum_field_value_overflow.vv
69 lines · 56 sloc · 889 bytes · c221b3226b50b40472864ab261e781a44bf6a5b9
Raw
1enum Color as i32 {
2 red
3 green = 2147483648
4 blue
5}
6
7enum ColorString as string {
8 red
9 green = 'abc'
10 blue
11}
12
13enum ColorI8 as i8 {
14 red
15 green = 128
16 blue
17}
18
19enum ColorI16 as i16 {
20 red
21 green = 32769
22 blue
23}
24
25enum ColorI32 as i32 {
26 red
27 green = 2147483648
28 blue
29}
30
31enum ColorI64 as i64 {
32 red
33 green = 9223372036854775808
34 blue
35}
36
37// These should work however, since the type is unsigned:
38enum ColorU8ShouldWork as u8 {
39 green = 128
40}
41
42enum ColorU16ShouldWork as u16 {
43 green = 32769
44}
45
46enum ColorU32ShouldWork as u32 {
47 green = 2147483648
48}
49
50enum ColorU64ShouldWork as u64 {
51 green = 9223372036854775808
52}
53
54// These should work however, since the type is unsigned:
55enum ColorU8ShouldFail as u8 {
56 green = 256
57}
58
59enum ColorU16ShouldFail as u16 {
60 green = 65536
61}
62
63enum ColorU32ShouldFail as u32 {
64 green = 4294967296
65}
66
67enum ColorU64ShouldFail as u64 {
68 green = 18446744073709551616
69}
70