github.com/llvm-mirror/llgo@v0.0.0-20190322182713-bf6f0a60fce1/test/execution/structs/embed.go (about)

     1  // RUN: llgo -o %t %s
     2  // RUN: %t 2>&1 | FileCheck %s
     3  
     4  // CHECK: A.test 1
     5  // CHECK-NEXT: A.testA
     6  // CHECK-NEXT: A.testA2
     7  // CHECK-NEXT: B.test 2
     8  // CHECK-NEXT: A.testA
     9  // CHECK-NEXT: A.testA2
    10  // CHECK-NEXT: A.testA
    11  
    12  package main
    13  
    14  type A struct{ aval int }
    15  
    16  func (a *A) test() {
    17  	println("A.test", a.aval)
    18  }
    19  
    20  func (a *A) testA() {
    21  	println("A.testA")
    22  }
    23  
    24  func (a A) testA2() {
    25  	println("A.testA2")
    26  }
    27  
    28  type B struct {
    29  	A
    30  	bval int
    31  }
    32  
    33  func (b B) test() {
    34  	println("B.test", b.bval)
    35  }
    36  
    37  type C struct {
    38  	*B
    39  	cval int
    40  }
    41  
    42  func main() {
    43  	var b B
    44  	b.aval = 1
    45  	b.bval = 2
    46  	b.A.test()
    47  	b.A.testA()
    48  	b.A.testA2()
    49  	b.test()
    50  	b.testA()
    51  	b.testA2()
    52  
    53  	var c C
    54  	c.B = &b
    55  	c.cval = 3
    56  	c.testA()
    57  	//c.testA2()
    58  }