v2 / vlib / v / tests / conditions / ifs / if_smartcast_multi_conds_test.v
47 lines · 41 sloc · 967 bytes · 6488041a749df9762348d019c4223908c476f2e2
Raw
1struct Empty {}
2
3struct SourcePosition {
4 source_line u32
5 source_column u32
6}
7
8type SourcePositionType = Empty | SourcePosition
9type NameIndexType = Empty | u32
10
11struct GenPosition {
12 gen_line u32
13 gen_column u32
14}
15
16struct Mapping {
17 GenPosition
18 sources_ind u32
19 names_ind NameIndexType
20 source_position SourcePositionType
21}
22
23fn ok(mapping_a Mapping, mapping_b Mapping) bool {
24 if mapping_a.source_position is SourcePosition && mapping_b.source_position is SourcePosition {
25 return mapping_a.source_position.source_line != mapping_b.source_position.source_line
26 || mapping_a.source_position.source_column != mapping_b.source_position.source_column
27 }
28 return false
29}
30
31fn test_if_smartcast_multi_conds() {
32 a := Mapping{
33 source_position: SourcePosition{
34 source_line: 11
35 source_column: 22
36 }
37 }
38 b := Mapping{
39 source_position: SourcePosition{
40 source_line: 22
41 source_column: 11
42 }
43 }
44 ret := ok(a, b)
45 println(ret)
46 assert ret
47}
48