1+ // @warnings{no-unused}
12module test;
23
34import stdio local;
@@ -12,27 +13,34 @@ u32[Enum] a = {
1213
1314static_assert(elemsof(a), elemsof(Enum));
1415
15- public fn i32 main() {
16- printf("%d\n", a[No]);
17- printf("%d\n", a[Yes]);
18- printf("%d\n", a[Maybe]);
19- a[No] = 3;
20- a[Yes] = 4;
21- a[Maybe] = 5;
22- printf("%d\n", a[No]);
23- printf("%d\n", a[Yes]);
24- printf("%d\n", a[Maybe]);
25- printf("%d\n", a[0 ? Enum.Yes : Enum.No]);
26- Enum e = Yes;
27- printf("%d\n", a[e]);
28- printf("%d\n", a[Enum.max]);
29- i32 i = 1;
30- i32[] aa = {
31- printf("%d\n", a[No + 1]), // @error{use of undeclared identifier 'No'}
32- printf("%d\n", a[1 ? Yes : // @error{use of undeclared identifier 'Yes'}
33- No]), // @error{use of undeclared identifier 'No'}
34- printf("%d\n", a[1]), // @error{array subscript must have enum type 'test.Enum'}
35- printf("%d\n", a[i]), // @error{array subscript must have enum type 'test.Enum'}
16+ type Foo enum u8 { A, B, C }
17+
18+ fn Enum getYes() { return Yes; }
19+
20+ const Enum[2] Other = { Maybe, Yes }
21+
22+ public fn i32 main(i32 argc, const char** argv) {
23+ Enum e = Maybe;
24+
25+ u32[] aa = {
26+ a[No],
27+ a[Yes],
28+ a[Enum.Yes],
29+ a[argc ? Enum.Yes : Enum.No],
30+ a[Other[1]],
31+ a[getYes()],
32+ a[(Enum)argc],
33+ a[e],
34+ a[Enum.max],
35+
36+ a[Foo.B], // @error{array subscript must have enum type 'test.Enum'}
37+ a[argc], // @error{array subscript must have enum type 'test.Enum'}
38+ a[No + 1], // @error{use of undeclared identifier 'No'}
39+ a[1 ? Yes : // @error{use of undeclared identifier 'Yes'}
40+ No], // @error{use of undeclared identifier 'No'}
41+ a[1], // @error{array subscript must have enum type 'test.Enum'}
42+ a[argc], // @error{array subscript must have enum type 'test.Enum'}
3643 }
3744 return 0;
3845}
46+
0 commit comments