vxx2 / vlib / v / checker / tests / shared_bad_args.vv
103 lines · 92 sloc · 1.09 KB · 0c8ce3bcb9fd4a2e5bd5f991a5a07da976d780d7
Raw
1struct St {
2mut:
3 a int
4}
5
6struct Qr {
7mut:
8 a int
9}
10
11fn (mut r Qr) s_mut(mut s St) {
12 r.a = 5
13 s.a = 7
14}
15
16fn (r Qr) s_val(s St) int {
17 return r.a * s.a
18}
19
20fn m_mut(mut a map[string]f64) {
21 a['yxcv'] = -2.25
22}
23
24fn m_val(a map[string]f64) f64 {
25 x := a['yxcv']
26 return x
27}
28
29fn a_mut(mut a []int) {
30 a[2] = 42
31}
32
33fn a_val(a []int) int {
34 return a[1]
35}
36
37fn test_shared_as_value() {
38 shared s := St{
39 a: 5
40 }
41 shared a := [3, 4, 6, 13, -23]
42 shared m := {
43 'qw': 12.75
44 'yxcv': -3.125
45 'poiu': 88.0625
46 }
47 shared r := Qr{
48 a: 7
49 }
50 lock s {
51 u := r.s_val(s)
52 println(u)
53 }
54 lock r {
55 v := r.s_val(s)
56 println(v)
57 }
58 w := m_val(m)
59 x := a_val(a)
60 println('${w} ${x}')
61}
62
63fn test_shared_as_mut() {
64 shared s := St{
65 a: 5
66 }
67 shared a := [3, 4, 6, 13, -23]
68 shared m := {
69 'qw': 12.75
70 'yxcv': -3.125
71 'poiu': 88.0625
72 }
73 shared r := Qr{
74 a: 7
75 }
76 lock s {
77 r.s_mut(mut s)
78 }
79 lock r {
80 r.s_mut(mut s)
81 }
82 m_mut(mut m)
83 a_mut(mut a)
84}
85
86struct Ab {
87 s shared St
88}
89
90fn main() {
91 shared y := St{
92 a: 5
93 }
94 println(y)
95 println('${y}')
96 a := Ab{
97 s: St{
98 a: 3
99 }
100 }
101 println(a.s)
102 println('${a.s}')
103}
104