github.com/llvm-mirror/llgo@v0.0.0-20190322182713-bf6f0a60fce1/test/execution/interfaces/methods.go (about) 1 // RUN: llgo -o %t %s 2 // RUN: %t 2>&1 | FileCheck %s 3 4 // CHECK: X() 5 // CHECK-NEXT: Y() 6 // CHECK-NEXT: X() 7 // CHECK-NEXT: Y() 8 // CHECK-NEXT: X() 9 10 package main 11 12 type Stringer interface { 13 String() string 14 } 15 16 type X int 17 type Y int 18 19 type Z1 struct { 20 X 21 } 22 23 type Z2 struct { 24 Stringer 25 } 26 27 func (x X) String() string { 28 return "X()" 29 } 30 31 func (y *Y) String() string { 32 return "Y()" 33 } 34 35 func makeX() X { 36 return X(0) 37 } 38 39 func main() { 40 var z Stringer = X(0) 41 println(z.String()) 42 43 z = new(Y) 44 println(z.String()) 45 46 z = Z1{} 47 println(z.String()) 48 49 z = Z2{new(Y)} 50 println(z.String()) 51 52 println(makeX().String()) 53 }