forked from OSchip/llvm-project
65 lines
695 B
Go
65 lines
695 B
Go
|
// RUN: llgo -o %t %s
|
||
|
// RUN: %t 2>&1 | FileCheck %s
|
||
|
|
||
|
// CHECK: 246
|
||
|
// CHECK-NEXT: T2.f()
|
||
|
// CHECK-NEXT: 10
|
||
|
// CHECK-NEXT: abc
|
||
|
|
||
|
package main
|
||
|
|
||
|
type T1 struct {
|
||
|
value int
|
||
|
}
|
||
|
|
||
|
func (t *T1) f(m int) int {
|
||
|
return m * t.value
|
||
|
}
|
||
|
|
||
|
func f1() {
|
||
|
var t T1
|
||
|
var f func(int) int = t.f
|
||
|
t.value = 2
|
||
|
println(f(123))
|
||
|
}
|
||
|
|
||
|
type T2 struct{}
|
||
|
|
||
|
func (T2) f() {
|
||
|
println("T2.f()")
|
||
|
}
|
||
|
|
||
|
func f2() {
|
||
|
var f func() = T2{}.f
|
||
|
f()
|
||
|
}
|
||
|
|
||
|
type T3 complex128
|
||
|
|
||
|
func (t T3) f() int {
|
||
|
return int(real(t))
|
||
|
}
|
||
|
|
||
|
func f3() {
|
||
|
var f func() int = T3(10).f
|
||
|
println(f())
|
||
|
}
|
||
|
|
||
|
type T4 string
|
||
|
|
||
|
func (t T4) f() string {
|
||
|
return string(t)
|
||
|
}
|
||
|
|
||
|
func f4() {
|
||
|
var f func() string = T4("abc").f
|
||
|
println(f())
|
||
|
}
|
||
|
|
||
|
func main() {
|
||
|
f1()
|
||
|
f2()
|
||
|
f3()
|
||
|
f4()
|
||
|
}
|