59 lines
		
	
	
		
			691 B
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			691 B
		
	
	
	
		
			Go
		
	
	
	
| // RUN: llgo -o %t %s
 | |
| // RUN: %t 2>&1 | FileCheck %s
 | |
| 
 | |
| // CHECK: A.test 1
 | |
| // CHECK-NEXT: A.testA
 | |
| // CHECK-NEXT: A.testA2
 | |
| // CHECK-NEXT: B.test 2
 | |
| // CHECK-NEXT: A.testA
 | |
| // CHECK-NEXT: A.testA2
 | |
| // CHECK-NEXT: A.testA
 | |
| 
 | |
| package main
 | |
| 
 | |
| type A struct{ aval int }
 | |
| 
 | |
| func (a *A) test() {
 | |
| 	println("A.test", a.aval)
 | |
| }
 | |
| 
 | |
| func (a *A) testA() {
 | |
| 	println("A.testA")
 | |
| }
 | |
| 
 | |
| func (a A) testA2() {
 | |
| 	println("A.testA2")
 | |
| }
 | |
| 
 | |
| type B struct {
 | |
| 	A
 | |
| 	bval int
 | |
| }
 | |
| 
 | |
| func (b B) test() {
 | |
| 	println("B.test", b.bval)
 | |
| }
 | |
| 
 | |
| type C struct {
 | |
| 	*B
 | |
| 	cval int
 | |
| }
 | |
| 
 | |
| func main() {
 | |
| 	var b B
 | |
| 	b.aval = 1
 | |
| 	b.bval = 2
 | |
| 	b.A.test()
 | |
| 	b.A.testA()
 | |
| 	b.A.testA2()
 | |
| 	b.test()
 | |
| 	b.testA()
 | |
| 	b.testA2()
 | |
| 
 | |
| 	var c C
 | |
| 	c.B = &b
 | |
| 	c.cval = 3
 | |
| 	c.testA()
 | |
| 	//c.testA2()
 | |
| }
 |