v2 / vlib / v / gen / wasm / tests / structs.vv
201 lines · 160 sloc · 2.01 KB · c42291948116b957642ea13e147342c362685ab4
Raw
1struct AA {
2 a int = 22
3 b i64
4}
5
6pub fn zeroed() {
7 _ := AA{}
8}
9
10pub fn field() {
11 _ := AA{
12 a: 23
13 }
14}
15
16pub fn selector(input int) int {
17 mut a := AA{}
18
19 c := 10 + a.a
20
21 return c
22}
23
24pub fn reassign(input int) int {
25 mut a := AA{}
26
27 a = AA{
28 b: input
29 }
30
31 return int(a.b + input)
32}
33
34struct BB {
35mut:
36 a i64 = 22
37 b i64
38 c i64
39}
40
41pub fn give(val int) int {
42 mut a := BB{}
43
44 a.b = val
45
46 return take(a)
47}
48
49pub fn take(input BB) int {
50 return int(input.b)
51}
52
53struct BB_ {
54mut:
55 a i64 = 22
56 b AA_
57}
58
59struct AA_ {
60mut:
61 a i64 = 91
62 b i64 = 92
63 c i64 = 93
64}
65
66fn e() BB_ {
67 return BB_{
68 a: 2
69 }
70}
71
72pub fn make(nval AA_) i64 {
73 val := BB_{
74 b: nval
75 }
76
77 return val.b.b
78}
79
80pub fn return_make(nval int) int {
81 val := make(AA_{ b: nval })
82 return int(val)
83}
84
85fn my_func(val int) AA_ {
86 return AA_{
87 b: val
88 }
89}
90
91fn accept() {
92 my_func(20)
93}
94
95struct CC {
96mut:
97 a i64 = 91
98 b i64 = 92
99 c i64 = 93
100}
101
102fn my_func_multi(val int) (CC, CC) {
103 return CC{
104 b: val
105 }, CC{
106 a: val
107 }
108}
109
110pub fn accept_multi(val int) int {
111 a, b := my_func_multi(val)
112 return int(a.b + b.a)
113}
114
115struct Vector {
116 x int
117 y int
118}
119
120fn add(a Vector, b Vector) Vector {
121 return Vector{a.x + b.x, a.y + b.y}
122}
123
124pub fn test(a int, b int) (int, int) {
125 vec := Vector{a, b}
126
127 ret := add(vec, Vector{10, 5})
128
129 return ret.x, ret.y
130}
131
132struct Aello {
133 a int
134 b i64
135 c int
136}
137
138struct Hello {
139 a int = 20
140 b Aello
141 c int = 222
142}
143
144pub fn recurse() {
145 _ := Hello{}
146}
147
148struct DD {
149 x int
150 y int
151}
152
153fn (a DD) + (b DD) DD {
154 return DD{a.x + b.x, a.y + b.y}
155}
156
157pub fn valer() (int, int) {
158 mut a := DD{10, 15}
159
160 a += DD{10, 15}
161
162 return a.x, a.y
163}
164
165struct TEST {
166mut:
167 a int
168 b int
169}
170
171fn postfix_test() {
172 mut a := TEST{}
173 a.b++
174 a.a++
175}
176
177fn postfix_test_mut(mut a TEST) {
178 a.b++
179}
180
181fn main() {
182 zeroed()
183 field()
184 println(selector(0))
185 println(reassign(10))
186 println(give(42))
187 println(return_make(123))
188 accept()
189 println(accept_multi(5))
190 x, y := test(2, 3)
191 println(x)
192 println(y)
193 recurse()
194 z, w := valer()
195 println(z)
196 println(w)
197 postfix_test()
198 mut a := TEST{}
199 postfix_test_mut(mut a)
200 println(a.b)
201}
202