cuelang.org/go@v0.13.0/cue/testdata/eval/issue3919.txtar (about) 1 -- in.cue -- 2 import "math" 3 4 full: { 5 out: { 6 env: { 7 if true { 8 PORT: math.Abs(out.port) 9 } 10 } 11 if true { 12 port: int | *30080 13 } 14 } 15 } 16 reduced: { 17 if true { 18 a: math.Abs(port) 19 } 20 port: int | *30080 21 } 22 -- secondary.cue -- 23 related: { 24 [string]: { 25 if true { 26 shared: all_total: foo.fooData.total 27 } 28 } 29 foo: fooData: { 30 total: tags: _hidden 31 _hidden: extra: {} 32 } 33 #Tags: [string]: {} 34 bar: { 35 shared: { 36 [string]: tags: #Tags 37 bar_total: foo.fooData.total 38 } 39 } 40 } 41 -- let.cue -- 42 issue3931: full: { 43 bar: [string]: spec?: Spec 44 if true { 45 foo: label: "foo" 46 bar: bar1: spec: selector: foo 47 } 48 let Spec = { 49 selector?: Selector 50 } 51 let Selector = { 52 label?: string 53 expr?: [...string] 54 } 55 } 56 -- out/eval/stats -- 57 Leaks: 7 58 Freed: 44 59 Reused: 38 60 Allocs: 13 61 Retain: 3 62 63 Unifications: 47 64 Conjuncts: 73 65 Disjuncts: 54 66 -- out/evalalpha -- 67 (struct){ 68 full: (struct){ 69 out: (struct){ 70 env: (struct){ 71 PORT: (int){ 30080 } 72 } 73 port: (int){ |(*(int){ 30080 }, (int){ int }) } 74 } 75 } 76 reduced: (struct){ 77 a: (int){ 30080 } 78 port: (int){ |(*(int){ 30080 }, (int){ int }) } 79 } 80 issue3931: (struct){ 81 full: (struct){ 82 bar: (struct){ 83 bar1: (struct){ 84 spec: (struct){ 85 selector: (struct){ 86 label: (string){ "foo" } 87 expr?: (list){ 88 } 89 } 90 } 91 } 92 } 93 foo: (struct){ 94 label: (string){ "foo" } 95 } 96 let Spec#1 = (struct){ 97 selector?: (struct){ 98 label?: (string){ string } 99 expr?: (list){ 100 } 101 } 102 } 103 let Selector#2 = (struct){ 104 label?: (string){ string } 105 expr?: (list){ 106 } 107 } 108 } 109 } 110 related: (struct){ 111 foo: (struct){ 112 fooData: (struct){ 113 total: (struct){ 114 tags: ~(related.foo.fooData._hidden) 115 } 116 _hidden: (struct){ 117 extra: (struct){ 118 } 119 } 120 } 121 shared: (struct){ 122 all_total: ~(related.foo.fooData.total) 123 } 124 } 125 #Tags: (#struct){ 126 } 127 bar: (struct){ 128 shared: (struct){ 129 bar_total: (struct){ 130 tags: (#struct){ 131 extra: (#struct){ 132 } 133 } 134 } 135 all_total: (struct){ 136 tags: (#struct){ 137 extra: (#struct){ 138 } 139 } 140 } 141 } 142 } 143 } 144 } 145 -- diff/-out/evalalpha<==>+out/eval -- 146 diff old new 147 --- old 148 +++ new 149 @@ -45,10 +45,7 @@ 150 foo: (struct){ 151 fooData: (struct){ 152 total: (struct){ 153 - tags: (struct){ 154 - extra: (struct){ 155 - } 156 - } 157 + tags: ~(related.foo.fooData._hidden) 158 } 159 _hidden: (struct){ 160 extra: (struct){ 161 @@ -56,12 +53,7 @@ 162 } 163 } 164 shared: (struct){ 165 - all_total: (struct){ 166 - tags: (struct){ 167 - extra: (struct){ 168 - } 169 - } 170 - } 171 + all_total: ~(related.foo.fooData.total) 172 } 173 } 174 #Tags: (#struct){ 175 -- out/eval -- 176 (struct){ 177 full: (struct){ 178 out: (struct){ 179 env: (struct){ 180 PORT: (int){ 30080 } 181 } 182 port: (int){ |(*(int){ 30080 }, (int){ int }) } 183 } 184 } 185 reduced: (struct){ 186 a: (int){ 30080 } 187 port: (int){ |(*(int){ 30080 }, (int){ int }) } 188 } 189 issue3931: (struct){ 190 full: (struct){ 191 bar: (struct){ 192 bar1: (struct){ 193 spec: (struct){ 194 selector: (struct){ 195 label: (string){ "foo" } 196 expr?: (list){ 197 } 198 } 199 } 200 } 201 } 202 foo: (struct){ 203 label: (string){ "foo" } 204 } 205 let Spec#1 = (struct){ 206 selector?: (struct){ 207 label?: (string){ string } 208 expr?: (list){ 209 } 210 } 211 } 212 let Selector#2 = (struct){ 213 label?: (string){ string } 214 expr?: (list){ 215 } 216 } 217 } 218 } 219 related: (struct){ 220 foo: (struct){ 221 fooData: (struct){ 222 total: (struct){ 223 tags: (struct){ 224 extra: (struct){ 225 } 226 } 227 } 228 _hidden: (struct){ 229 extra: (struct){ 230 } 231 } 232 } 233 shared: (struct){ 234 all_total: (struct){ 235 tags: (struct){ 236 extra: (struct){ 237 } 238 } 239 } 240 } 241 } 242 #Tags: (#struct){ 243 } 244 bar: (struct){ 245 shared: (struct){ 246 bar_total: (struct){ 247 tags: (#struct){ 248 extra: (#struct){ 249 } 250 } 251 } 252 all_total: (struct){ 253 tags: (#struct){ 254 extra: (#struct){ 255 } 256 } 257 } 258 } 259 } 260 } 261 } 262 -- out/compile -- 263 --- in.cue 264 { 265 full: { 266 out: { 267 env: { 268 if true { 269 PORT: 〈import;math〉.Abs(〈3;out〉.port) 270 } 271 } 272 if true { 273 port: (int|*30080) 274 } 275 } 276 } 277 reduced: { 278 if true { 279 a: 〈import;math〉.Abs(〈1;port〉) 280 } 281 port: (int|*30080) 282 } 283 } 284 --- let.cue 285 { 286 issue3931: { 287 full: { 288 bar: { 289 [string]: { 290 spec?: 〈2;let Spec#1〉 291 } 292 } 293 if true { 294 foo: { 295 label: "foo" 296 } 297 bar: { 298 bar1: { 299 spec: { 300 selector: 〈3;foo〉 301 } 302 } 303 } 304 } 305 let Spec#1 = { 306 selector?: 〈1;let Selector#2〉 307 } 308 let Selector#2 = { 309 label?: string 310 expr?: [ 311 ...string, 312 ] 313 } 314 } 315 } 316 } 317 --- secondary.cue 318 { 319 related: { 320 [string]: { 321 if true { 322 shared: { 323 all_total: 〈3;foo〉.fooData.total 324 } 325 } 326 } 327 foo: { 328 fooData: { 329 total: { 330 tags: 〈1;_hidden〉 331 } 332 _hidden: { 333 extra: {} 334 } 335 } 336 } 337 #Tags: { 338 [string]: {} 339 } 340 bar: { 341 shared: { 342 [string]: { 343 tags: 〈3;#Tags〉 344 } 345 bar_total: 〈2;foo〉.fooData.total 346 } 347 } 348 } 349 }