v2 / vlib / v / checker / tests / fn_call_arg_ptr_mismatch_err.vv
40 lines · 33 sloc · 660 bytes · e5d1881e1a88ef5e58793a19fec08f54c7ae9603
Raw
1interface ISomething {
2 value int
3 get_value_implemented(s &ISomething) int
4}
5
6struct SomethingImplemented {
7 value int
8}
9
10fn (s SomethingImplemented) get_value_implemented(s_ &ISomething) int {
11 return s.value
12}
13
14fn get_value_implemented(s &ISomething) int {
15 return s.value
16}
17
18struct SomethingNotImplemented {
19 value int
20}
21
22fn get_value_not_implemented(s &SomethingNotImplemented) int {
23 return s.value
24}
25
26fn main() {
27 s1 := &SomethingImplemented{
28 value: 1
29 }
30 // fn call
31 _ := get_value_implemented(&s1)
32 // method call
33 _ := s1.get_value_implemented(&s1)
34
35 s2 := &SomethingNotImplemented{
36 value: 1
37 }
38 // fn call
39 _ := get_value_not_implemented(&s2)
40}
41