v2 / vlib / v / slow_tests / inout / or_block_with_rvoid.vv
65 lines · 52 sloc · 1.35 KB · 9fb52c4c9c496ddd8e7fcea117fed8bdbbc8fb45
Raw
1struct Encoder {}
2
3struct Writer {}
4
5struct StructTypePointer[T] {
6mut:
7 val &T
8}
9
10pub struct Null {
11 is_null bool = true
12}
13
14pub const null = Null{}
15
16pub fn (e &Encoder) encode_value[T](val T, mut wr Writer) ! {
17 e.encode_struct[T](val, 1, mut wr)!
18}
19
20fn (e &Encoder) encode_struct[U](val U, level int, mut wr Writer) ! {
21 $for field in U.fields {
22 $if field.indirections > 0 {
23 println('aaaaaaaaaaaaaaaaaaaa')
24 } $else {
25 println('bbbbbbbbbbbbbbbbbbbb')
26 }
27 }
28}
29
30fn main() {
31 e := Encoder{}
32
33 mut sb := Writer{}
34 mut string_initialized_with_reference := 'ads'
35
36 e.encode_value(StructTypePointer[string]{ val: &string_initialized_with_reference }, mut
37 sb) or {
38 println(err)
39 e.encode_value[Null](null, mut sb) or {}
40 }
41
42 e.encode_value(StructTypePointer[string]{ val: &string_initialized_with_reference }, mut
43 sb) or {
44 println(err)
45 e.encode_value[Null](null, mut sb) or {}
46 }
47
48 e.encode_value(StructTypePointer[string]{ val: &string_initialized_with_reference }, mut
49 sb) or {
50 println(err)
51 e.encode_value[Null](null, mut sb) or {}
52 }
53
54 e.encode_value(StructTypePointer[string]{ val: &string_initialized_with_reference }, mut
55 sb) or {
56 dump(err)
57 e.encode_value[Null](null, mut sb) or {}
58 }
59
60 e.encode_value(StructTypePointer[string]{ val: &string_initialized_with_reference }, mut
61 sb) or {
62 dump(err)
63 e.encode_value[Null](null, mut sb) or {}
64 }
65}
66