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