| 1 | module main |
| 2 | |
| 3 | struct Decoder {} |
| 4 | |
| 5 | pub fn decode[T](mut result T) ! { |
| 6 | mut decoder := Decoder{} |
| 7 | decoder.decode_value(mut result)! |
| 8 | } |
| 9 | |
| 10 | fn (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 | |
| 22 | fn test_generic_mut_pointer_param() { |
| 23 | mut value := 0 |
| 24 | mut result := &value |
| 25 | decode[&int](mut result)! |
| 26 | assert value == 2 |
| 27 | } |
| 28 |