v2 / vlib / v / tests / options / option_fn_struct_init_test.v
47 lines · 38 sloc · 464 bytes · 5adfc55b82c822142089aae0afb9c27c8ec4a082
Raw
1type Baz = Foo
2
3@[heap]
4struct Foo {
5 a int = 123
6 b string = 'b'
7 cb ?fn (&Foo)
8}
9
10@[heap]
11struct Bar {
12 a int = 321
13 b string = 'a'
14 cb ?fn (&Baz)
15}
16
17fn g(a Foo) Foo {
18 return a
19}
20
21fn t(a Bar) Foo {
22 return g(a: 123, b: 'foo', cb: a.cb)
23}
24
25fn test_main() {
26 a := Foo{
27 cb: none
28 }
29
30 b := Foo{
31 cb: fn (a &Foo) {
32 }
33 }
34
35 w := Bar{
36 cb: b.cb
37 }
38
39 z := Bar{
40 cb: a.cb
41 }
42
43 t(a: 1, cb: a.cb)
44 t(a: 2, cb: b.cb)
45 t(a: 3, cb: w.cb)
46 t(a: 4, cb: z.cb)
47}
48