v2 / vlib / v / slow_tests / inout / comptime_bool_fields.vv
57 lines · 52 sloc · 1.08 KB · 6a32c810703f4ec0c39fe18298ebe6c40acac8f1
Raw
1type MyInt = int
2
3struct Bb {
4mut:
5 a int
6 b struct {}
7
8pub:
9 c ?string
10 d map[string]int
11 e atomic int
12pub mut:
13 f []f64
14 zzz MyInt = 123
15}
16
17fn foo[U](val U) {
18 $for field in U.fields {
19 println('field: ${field.name}')
20
21 $if field.is_pub == true {
22 println(field.name + ' is pub?: ${field.is_pub}')
23 }
24 $if field.is_mut {
25 println(field.name + ' is mut?: ${field.is_mut}')
26 }
27 $if field.is_struct {
28 println(field.name + ' is struct?: ${field.is_struct}')
29 }
30 $if field.is_chan {
31 println(field.name + ' is chan?: ${field.is_chan}')
32 }
33 $if field.is_array {
34 println(field.name + ' is array?: ${field.is_array}')
35 }
36 $if field.is_map {
37 println(field.name + ' is map?: ${field.is_map}')
38 }
39 $if field.is_alias {
40 println(field.name + ' is alias?: ${field.is_alias}')
41 }
42 $if field.is_shared {
43 println(field.name + ' is shared?: ${field.is_shared}')
44 }
45 $if field.is_option {
46 println(field.name + ' is option?: ${field.is_option}')
47 }
48 $if field.is_atomic {
49 println(field.name + ' is atomic?: ${field.is_atomic}')
50 }
51 }
52}
53
54fn main() {
55 bb := Bb{}
56 foo(bb)
57}
58