v2 / vlib / v / tests / comptime / comptime_params_test.v
30 lines · 27 sloc · 547 bytes · 97edd610b08ab5f51106c22ae01b0fa05acccbea
Raw
1fn demo(a int, b string) {
2}
3
4fn g[T](cb T) {
5 mut params := []FunctionParam{}
6 $if T is $function {
7 $for param in T.params {
8 params << param
9 }
10 }
11 assert params.len == 2
12 assert params[0].name == 'a'
13 assert params[0].typ == 8
14 assert params[1].name == 'b'
15 assert params[1].typ == 21
16}
17
18fn test_main() {
19 g(demo)
20
21 mut params := []FunctionParam{}
22 $for param in demo.params {
23 params << param
24 }
25 assert params.len == 2
26 assert params[0].name == 'a'
27 assert params[0].typ == 8
28 assert params[1].name == 'b'
29 assert params[1].typ == 21
30}
31