cuelang.org/go@v0.13.0/cue/testdata/fulleval/009_template_unification_within_one_struct.txtar (about) 1 #name: template unification within one struct 2 #evalFull 3 -- in.cue -- 4 a: { 5 {[A=string]: {name: A}} 6 7 // TODO: allow duplicate alias here 8 {[X=string]: {kind: X}} 9 } 10 a: "A": _ 11 a: "C": _ 12 a: "E": {c: "bar"} 13 -- out/def -- 14 a: { 15 {[A=string]: { 16 name: A, kind: A 17 }} 18 E: { 19 name: "E" 20 kind: "E" 21 c: "bar" 22 } 23 A: { 24 name: "A" 25 kind: "A" 26 } 27 C: { 28 name: "C" 29 kind: "C" 30 } 31 } 32 -- out/export -- 33 a: { 34 E: { 35 name: "E" 36 kind: "E" 37 c: "bar" 38 } 39 A: { 40 name: "A" 41 kind: "A" 42 } 43 C: { 44 name: "C" 45 kind: "C" 46 } 47 } 48 -- out/yaml -- 49 a: 50 E: 51 name: E 52 kind: E 53 c: bar 54 A: 55 name: A 56 kind: A 57 C: 58 name: C 59 kind: C 60 -- out/json -- 61 {"a":{"E":{"name":"E","kind":"E","c":"bar"},"A":{"name":"A","kind":"A"},"C":{"name":"C","kind":"C"}}} 62 -- out/legacy-debug -- 63 <0>{a: <1>{[]: <2>(A: string)->(<3>{name: <2>.A} & <4>{kind: <2>.A}), E: <5>{name: "E", kind: "E", c: "bar"}, A: <6>{name: "A", kind: "A"}, C: <7>{name: "C", kind: "C"}}} 64 -- out/compile -- 65 --- in.cue 66 { 67 a: { 68 { 69 [string]: { 70 name: 〈1;-〉 71 } 72 } 73 { 74 [string]: { 75 kind: 〈1;-〉 76 } 77 } 78 } 79 a: { 80 A: _ 81 } 82 a: { 83 C: _ 84 } 85 a: { 86 E: { 87 c: "bar" 88 } 89 } 90 } 91 -- out/eval/stats -- 92 Leaks: 0 93 Freed: 12 94 Reused: 8 95 Allocs: 4 96 Retain: 0 97 98 Unifications: 12 99 Conjuncts: 23 100 Disjuncts: 12 101 -- out/eval -- 102 (struct){ 103 a: (struct){ 104 A: (struct){ 105 name: (string){ "A" } 106 kind: (string){ "A" } 107 } 108 C: (struct){ 109 name: (string){ "C" } 110 kind: (string){ "C" } 111 } 112 E: (struct){ 113 c: (string){ "bar" } 114 name: (string){ "E" } 115 kind: (string){ "E" } 116 } 117 } 118 }