v2 / vlib / v / slow_tests / inout / dump_generic_interface_ref_arg.vv
46 lines · 39 sloc · 530 bytes · 6a32c810703f4ec0c39fe18298ebe6c40acac8f1
Raw
1interface In {
2 in_() f64
3}
4
5interface Out {
6 out() f64
7}
8
9interface InOut {
10}
11
12struct MyImpl {
13 in_ f64
14 out f64
15}
16
17pub fn (mi &MyImpl) in_() f64 {
18 return mi.in_
19}
20
21pub fn (mi &MyImpl) out() f64 {
22 return mi.out
23}
24
25fn main() {
26 mi := MyImpl{
27 in_: 1.0
28 out: 2.0
29 }
30 dump(mi.in_())
31 dump(mi.out())
32 run(&mi)
33}
34
35fn run[T](in_put T) {
36 dump(in_put.in_())
37 dump(in_put.out())
38 $if T is InOut {
39 dump(in_put.in_())
40 dump(in_put.out())
41 } $else $if T is In {
42 dump(in_put.in_())
43 } $else $if T is Out {
44 dump(in_put.out())
45 }
46}
47