v2 / vlib / v / tests / generics / generic_comptime_test.v
26 lines · 22 sloc · 383 bytes · 6488041a749df9762348d019c4223908c476f2e2
Raw
1struct EmptyStruct {
2 b []int = [1, 2, 3]
3}
4
5fn encode_array[T](val []T) []int {
6 return val
7}
8
9fn encode_struct[T](val T) []int {
10 $if T is $struct {
11 $for field in T.fields {
12 $if field.is_array {
13 return encode_array(val.$(field.name))
14 }
15 }
16 }
17 return [0]
18}
19
20fn encoder() []int {
21 return encode_struct(EmptyStruct{})
22}
23
24fn test_main() {
25 assert encoder() == [1, 2, 3]
26}
27