38 lines
430 B
Go
38 lines
430 B
Go
//+build ignore
|
|
|
|
package main
|
|
|
|
type I interface {
|
|
f()
|
|
}
|
|
|
|
type J interface {
|
|
g()
|
|
}
|
|
|
|
type C int // C and *C implement I; *C implements J
|
|
|
|
func (C) f()
|
|
func (*C) g()
|
|
|
|
type D int // *D implements I and J
|
|
|
|
func (*D) f()
|
|
func (*D) g()
|
|
|
|
func f(i I) {
|
|
i.f() // calls C, *C, *D
|
|
}
|
|
|
|
func g(j J) {
|
|
j.g() // calls *C, *D
|
|
}
|
|
|
|
// WANT:
|
|
// Dynamic calls
|
|
// f --> (*C).f
|
|
// f --> (*D).f
|
|
// f --> (C).f
|
|
// g --> (*C).g
|
|
// g --> (*D).g
|