1 | // +build ignore |
---|---|
2 | |
3 | package main |
4 | |
5 | type I interface { |
6 | f() |
7 | } |
8 | |
9 | type J interface { |
10 | g() |
11 | } |
12 | |
13 | type C int // C and *C implement I; *C implements J |
14 | |
15 | func (C) f() |
16 | func (*C) g() |
17 | |
18 | type D int // *D implements I and J |
19 | |
20 | func (*D) f() |
21 | func (*D) g() |
22 | |
23 | func f(i I) { |
24 | i.f() // calls C, *C, *D |
25 | } |
26 | |
27 | func g(j J) { |
28 | j.g() // calls *C, *D |
29 | } |
30 | |
31 | // WANT: |
32 | // Dynamic calls |
33 | // f --> (*C).f |
34 | // f --> (*D).f |
35 | // f --> (C).f |
36 | // g --> (*C).g |
37 | // g --> (*D).g |
38 |