v2 / vlib / v / tests / comptime / comptime_call_is_check_test.v
31 lines · 26 sloc · 497 bytes · ae04167c321fa30120f6cf6a8e78cb4540601cd5
Raw
1module main
2
3struct Struct1 {
4 num f64
5}
6
7pub type DoThingFunc = fn (f32) bool
8
9fn (mut s Struct1) do_thing(a f32) bool {
10 return false
11}
12
13fn register[T]() {
14 obj := T{}
15 mut called := false
16 $for method in T.methods {
17 $if method !is DoThingFunc {
18 println('method ${method.name} is not do thing')
19 assert false
20 } $else {
21 println('method ${method.name} is do thing')
22 assert obj.$method(1.23) == false
23 called = true
24 }
25 }
26 assert called
27}
28
29fn test_main() {
30 register[Struct1]()
31}
32