v2 / vlib / v / tests / generics / generic_mut_pointer_param_test.v
27 lines · 23 sloc · 409 bytes · 5be0735d49125afdc9478b1b785a31e058d2a7d6
Raw
1module main
2
3struct Decoder {}
4
5pub fn decode[T](mut result T) ! {
6 mut decoder := Decoder{}
7 decoder.decode_value(mut result)!
8}
9
10fn (mut decoder Decoder) decode_value[T](mut val T) ! {
11 $if T.indirections != 0 {
12 unsafe {
13 *val = 2
14 }
15 } $else {
16 unsafe {
17 *val = 1
18 }
19 }
20}
21
22fn test_generic_mut_pointer_param() {
23 mut value := 0
24 mut result := &value
25 decode[&int](mut result)!
26 assert value == 2
27}
28