// RUN: llgo -o %t %s // RUN: %t 2>&1 | FileCheck %s // CHECK: StringStringer(abc) // CHECK-NEXT: abc 1 2 3 package main type Stringer interface { String() string } type StringStringer string func (s StringStringer) String() string { return "StringStringer(" + string(s) + ")" } func (s StringStringer) MethodWithArgs(a, b, c int) { println(s, a, b, c) } type I interface { MethodWithArgs(a, b, c int) } func testLargerThanWord() { // string is larger than a word. Make sure it works // well as a method receiver when using interfaces. var s Stringer = StringStringer("abc") println(s.String()) // Test calling a method which takes parameters // beyond the receiver. s.(I).MethodWithArgs(1, 2, 3) } func main() { testLargerThanWord() }