vxx2 / vlib / v / checker / tests / match_branch_call_expr_arg_mismatch.vv
51 lines · 44 sloc · 573 bytes · 0c8ce3bcb9fd4a2e5bd5f991a5a07da976d780d7
Raw
1struct Foo {
2mut:
3 x int
4}
5
6struct Bar {
7mut:
8 y int
9}
10
11type Foobar = Foo | Bar
12
13fn mutate_foobar1(mut foobar Foobar) {
14 match foobar {
15 Foo {
16 mutate_foo(mut foobar)
17 }
18 Bar {
19 mutate_bar(mut foobar)
20 }
21 }
22}
23
24fn mutate_foobar2(mut foobar Foobar) int {
25 return match foobar {
26 Foo {
27 mutate_foo(mut foobar)
28 }
29 Bar {
30 mutate_bar(mut foobar)
31 }
32 }
33}
34
35fn mutate_foo(mut foo Foo) int {
36 foo.x = 5
37 return 5
38}
39
40fn mutate_bar(mut bar Bar) int {
41 bar.y = 10
42 return 10
43}
44
45fn main() {
46 mut bar := Bar{
47 y: 0
48 }
49 mutate_foobar1(mut bar)
50 mutate_foobar2(mut bar)
51}
52