v2 / vlib / v / tests / generics / generics_call_with_reference_arg_test.v
26 lines · 23 sloc · 421 bytes · 1411c2710b03c53fa0de08d39c656d98721783f6
Raw
1struct MyStruct[T] {
2mut:
3 pos int
4 buffer []&T
5}
6
7fn (mut s MyStruct[T]) add(e &T) bool {
8 s.buffer[0] = unsafe { e }
9 return true
10}
11
12fn fill(mut s MyStruct[i64]) {
13 s.add(unsafe { &i64(123) })
14}
15
16fn test_generics_call_with_reference_arg() {
17 mut s := MyStruct[i64]{
18 pos: 1
19 buffer: unsafe { []&i64{len: 2} }
20 }
21 fill(mut s)
22 println(s.pos)
23 assert s.pos == 1
24 println(s.buffer.len)
25 assert s.buffer.len == 2
26}
27