v2 / vlib / v / tests / comptime / comptime_smartcast_assert_test.v
46 lines · 43 sloc · 531 bytes · 8e35f4d9848f7ad35d857a187dddbfd2eca5e19d
Raw
1pub type Any = []Any
2 | bool
3 | f32
4 | f64
5 | i16
6 | i64
7 | i8
8 | int
9 | map[string]Any
10 | string
11 | u16
12 | u32
13 | u64
14 | u8
15
16fn test_main() {
17 ana := Any([Any('')])
18 name(ana)
19 match ana {
20 []Any {
21 for i := 0; i < ana.len; i++ {
22 name(ana[i])
23 }
24 }
25 else {
26 assert false
27 }
28 }
29
30 assert true
31}
32
33fn name[T](val T) {
34 $for v in val.variants {
35 if val is v {
36 dump(val.str())
37 $if val is []Any {
38 assert val.str() == "[Any('')]"
39 } $else {
40 assert val.str() == ''
41 }
42 dump(val)
43 println(val)
44 }
45 }
46}
47