github.com/switchupcb/yaegi@v0.10.2/_test/issue-1163.go (about) 1 package main 2 3 import "fmt" 4 5 type WidgetEvent struct { 6 Nothing string 7 } 8 9 type WidgetControl interface { 10 HandleEvent(e *WidgetEvent) 11 } 12 13 type Button struct{} 14 15 func (b *Button) HandleEvent(e *WidgetEvent) { 16 } 17 18 type WindowEvent struct { 19 Something int 20 } 21 22 type Window struct { 23 Widget WidgetControl 24 } 25 26 func (w *Window) HandleEvent(e *WindowEvent) { 27 } 28 29 func main() { 30 window := &Window{ 31 Widget: &Button{}, 32 } 33 windowevent := &WindowEvent{} 34 // The next line uses the signature from the wrong method, resulting in an error. 35 // Renaming one of the clashing method names fixes the problem. 36 window.HandleEvent(windowevent) 37 fmt.Println("OK!") 38 } 39 40 // Output: 41 // OK!