| // RUN: llgo -o %t %s | |
| // RUN: %t 2>&1 | FileCheck %s | |
| // CHECK: F1 | |
| // CHECK-NEXT: F2 | |
| // CHECK-NEXT: F1 | |
| // CHECK-NEXT: F2 | |
| package main | |
| type S1 struct{} | |
| type S2 struct { | |
| S1 | |
| } | |
| func (s S1) F1() { | |
| println("F1") | |
| } | |
| func (s *S2) F2() { | |
| println("F2") | |
| } | |
| func testUnnamedStructMethods() { | |
| // Test method lookup on an unnamed struct type. | |
| var x struct { | |
| S1 | |
| S2 | |
| } | |
| x.F1() | |
| x.F2() | |
| } | |
| func main() { | |
| var s S2 | |
| // Derive pointer-receiver function. | |
| f1 := (*S2).F1 | |
| f1(&s) | |
| f2 := (*S2).F2 | |
| f2(&s) | |
| testUnnamedStructMethods() | |
| } |