github.com/neugram/ng@v0.0.0-20180309130942-d472ff93d872/eval/testdata/type-embedding2.ng (about)

     1  type T1 struct { Name string }
     2  type T2 struct { T1 }
     3  type T3 struct { *T1 }
     4  
     5  var v T2
     6  
     7  if v.T1.Name != "" {
     8  	panic("ERROR 1")
     9  }
    10  
    11  v.T1.Name = "1"
    12  if v.T1.Name != "1" {
    13  	panic("ERROR 2")
    14  }
    15  
    16  v.Name = "2"
    17  if v.T1.Name != "2" {
    18  	panic("ERROR 3")
    19  }
    20  if v.Name != "2" {
    21  	panic("ERROR 4")
    22  }
    23  
    24  var ptr T3
    25  
    26  if ptr.T1 != nil {
    27  	panic("ERROR 5")
    28  }
    29  
    30  ptr.T1 = &T1{Name:""}
    31  ptr.T1.Name = "1"
    32  if ptr.T1.Name != "1" {
    33  	panic("ERROR 6")
    34  }
    35  
    36  ptr.Name = "2"
    37  if ptr.T1.Name != "2" {
    38  	panic("ERROR 7")
    39  }
    40  if ptr.Name != "2" {
    41  	panic("ERROR 8")
    42  }
    43  
    44  type T4 struct {
    45  	T1
    46  	Name int
    47  }
    48  
    49  var v4 T4
    50  v4.Name = 42
    51  v4.T1.Name = "deep"
    52  
    53  if v4.Name != 42 {
    54  	panic("ERROR 9")
    55  }
    56  if v4.T1.Name != "deep" {
    57  	panic("ERROR 10")
    58  }
    59  v4.Name = 666
    60  if v4.T1.Name != "deep" {
    61  	panic("ERROR 11")
    62  }
    63  if v4.Name != 666 {
    64  	panic("ERROR 12")
    65  }
    66  
    67  print("OK")