cuelang.org/go@v0.13.0/cue/testdata/resolve/043_diamond-shaped_constraints.txtar (about) 1 #name: diamond-shaped constraints 2 #evalPartial 3 -- in.cue -- 4 S: { 5 A: { 6 a: 1 7 } 8 B: A & { 9 b: 2 10 } 11 } 12 T: S & {// S == { A: { a:1 }, B: { a:1, b:2 } } 13 A: { 14 c: 3 15 } 16 B: { 17 d: 4 // Combines constraints S.A, S.B, T.A, and T.B // S.B & A 18 } 19 } 20 -- out/def -- 21 T: S & { 22 A: { 23 c: 3 24 } 25 B: { 26 d: 4 27 } 28 } 29 S: { 30 A: { 31 a: 1 32 } 33 B: A & { 34 b: 2 35 } 36 } 37 -- out/export -- 38 T: { 39 A: { 40 a: 1 41 c: 3 42 } 43 B: { 44 a: 1 45 b: 2 46 c: 3 47 d: 4 48 } 49 } 50 S: { 51 A: { 52 a: 1 53 } 54 B: { 55 a: 1 56 b: 2 57 } 58 } 59 -- out/yaml -- 60 T: 61 A: 62 a: 1 63 c: 3 64 B: 65 a: 1 66 b: 2 67 c: 3 68 d: 4 69 S: 70 A: 71 a: 1 72 B: 73 a: 1 74 b: 2 75 -- out/json -- 76 {"T":{"A":{"a":1,"c":3},"B":{"a":1,"b":2,"c":3,"d":4}},"S":{"A":{"a":1},"B":{"a":1,"b":2}}} 77 -- out/legacy-debug -- 78 <0>{T: <1>{A: <2>{a: 1, c: 3}, B: <3>{a: 1, b: 2, c: 3, d: 4}}, S: <4>{A: <5>{a: 1}, B: <6>{a: 1, b: 2}}} 79 -- out/compile -- 80 --- in.cue 81 { 82 S: { 83 A: { 84 a: 1 85 } 86 B: (〈0;A〉 & { 87 b: 2 88 }) 89 } 90 T: (〈0;S〉 & { 91 A: { 92 c: 3 93 } 94 B: { 95 d: 4 96 } 97 }) 98 } 99 -- out/eval/stats -- 100 Leaks: 0 101 Freed: 16 102 Reused: 12 103 Allocs: 4 104 Retain: 0 105 106 Unifications: 16 107 Conjuncts: 25 108 Disjuncts: 16 109 -- out/evalalpha -- 110 (struct){ 111 S: (struct){ 112 A: (struct){ 113 a: (int){ 1 } 114 } 115 B: (struct){ 116 b: (int){ 2 } 117 a: (int){ 1 } 118 } 119 } 120 T: (struct){ 121 A: (struct){ 122 c: (int){ 3 } 123 a: (int){ 1 } 124 } 125 B: (struct){ 126 d: (int){ 4 } 127 b: (int){ 2 } 128 c: (int){ 3 } 129 a: (int){ 1 } 130 } 131 } 132 } 133 -- diff/-out/evalalpha<==>+out/eval -- 134 diff old new 135 --- old 136 +++ new 137 @@ -4,20 +4,20 @@ 138 a: (int){ 1 } 139 } 140 B: (struct){ 141 - a: (int){ 1 } 142 - b: (int){ 2 } 143 + b: (int){ 2 } 144 + a: (int){ 1 } 145 } 146 } 147 T: (struct){ 148 A: (struct){ 149 - a: (int){ 1 } 150 - c: (int){ 3 } 151 - } 152 - B: (struct){ 153 - a: (int){ 1 } 154 - c: (int){ 3 } 155 - b: (int){ 2 } 156 + c: (int){ 3 } 157 + a: (int){ 1 } 158 + } 159 + B: (struct){ 160 d: (int){ 4 } 161 + b: (int){ 2 } 162 + c: (int){ 3 } 163 + a: (int){ 1 } 164 } 165 } 166 } 167 -- diff/todo/p3 -- 168 Reordering 169 -- out/eval -- 170 (struct){ 171 S: (struct){ 172 A: (struct){ 173 a: (int){ 1 } 174 } 175 B: (struct){ 176 a: (int){ 1 } 177 b: (int){ 2 } 178 } 179 } 180 T: (struct){ 181 A: (struct){ 182 a: (int){ 1 } 183 c: (int){ 3 } 184 } 185 B: (struct){ 186 a: (int){ 1 } 187 c: (int){ 3 } 188 b: (int){ 2 } 189 d: (int){ 4 } 190 } 191 } 192 }