vxx2 / vlib / v / checker / tests / immutable_to_mutable_err.vv
42 lines · 36 sloc · 615 bytes · 4ccc799512aec0781c26f590722857e6229fff27
Raw
1struct Test {
2pub:
3 bar []int = [1, 2, 3]
4pub mut:
5 foo []int = [1, 2, 3]
6}
7
8struct TestAlias {
9mut:
10 list []string
11}
12
13fn main() {
14 arr := [1, 2, 3] // declared as immutable!
15 mut arr_mut := if true { arr } else { []int{} }
16 mut arr_mut2 := match true {
17 true { arr }
18 else { [0] }
19 }
20 arr_mut[0] = 999
21 arr_mut2[1] = 999
22 println(arr)
23 println(arr)
24 assert arr == [1, 2, 3]
25
26 a := Test{}
27 mut arr_mut3 := a.foo
28 arr_mut3[0] = 999
29 assert a.foo == [1, 2, 3]
30
31 mut arr_mut4 := a.bar
32 arr_mut4[0] = 999
33 assert a.bar == [1, 2, 3]
34
35 s := TestAlias{
36 list: ['aaa']
37 }
38 mut s2 := s
39 s2.list[0] = 'bbb'
40
41 _ := a.bar
42}
43