54 lines
599 B
Go
54 lines
599 B
Go
// RUN: llgo -o %t %s
|
|
// RUN: %t 2>&1 | FileCheck %s
|
|
|
|
// CHECK: X()
|
|
// CHECK-NEXT: Y()
|
|
// CHECK-NEXT: X()
|
|
// CHECK-NEXT: Y()
|
|
// CHECK-NEXT: X()
|
|
|
|
package main
|
|
|
|
type Stringer interface {
|
|
String() string
|
|
}
|
|
|
|
type X int
|
|
type Y int
|
|
|
|
type Z1 struct {
|
|
X
|
|
}
|
|
|
|
type Z2 struct {
|
|
Stringer
|
|
}
|
|
|
|
func (x X) String() string {
|
|
return "X()"
|
|
}
|
|
|
|
func (y *Y) String() string {
|
|
return "Y()"
|
|
}
|
|
|
|
func makeX() X {
|
|
return X(0)
|
|
}
|
|
|
|
func main() {
|
|
var z Stringer = X(0)
|
|
println(z.String())
|
|
|
|
z = new(Y)
|
|
println(z.String())
|
|
|
|
z = Z1{}
|
|
println(z.String())
|
|
|
|
z = Z2{new(Y)}
|
|
println(z.String())
|
|
|
|
println(makeX().String())
|
|
}
|