| // 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() |
| } |