// +build ignore // This is a slice of the fmt package. package main type pp struct { field interface{} } func newPrinter() *pp { return new(pp) } func Fprintln(a ...interface{}) { p := newPrinter() p.doPrint(a, true, true) } func Println(a ...interface{}) { Fprintln(a...) } func (p *pp) doPrint(a []interface{}, addspace, addnewline bool) { print(a[0]) // @types S | string stringer := a[0].(interface { String() string }) stringer.String() print(stringer) // @types S } type S int func (S) String() string { return "" } func main() { Println("Hello, World!", S(0)) } // @calls (*main.pp).doPrint -> (main.S).String