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