...
1-- a.cue --
2@package("foo")
3
4package bar
5
6@file("foo")
7
8a: {
9 @decl(1)
10 @decl(2)
11} @field(2)
12
13a: {
14 @decl(1)
15 @decl(3)
16} @field(1) @field(4)
17
18a: {} @field(1) @field(3)
19
20doNotPropagate: {
21 #A: {} @attr1()
22 a: #A
23
24 // Do not accumulated field attributes in embedding.
25 #B: {} @attr1()
26 b: {#B}
27}
28
29embedScalarField: {
30 a: {2} @attr1()
31 a: {_} @attr2()
32}
33
34embedScalarDecl: {
35 b0: {2, @attr1()}
36 b1: b0
37 b2: {2, b0, @attr2()}
38}
39
40dontMergeForDef: {
41 a: {@decl1()}
42 b: a & {x: 1, @decl2()}
43 c: a & {@decl2()}
44 d: {a, @decl2()}
45}
46
47comprehensions: {
48 @step(0)
49 c1: {} @step(1)
50 if true {
51 c2: { @step(2a) } @step(2b)
52 @step(2c)
53 }
54 c3: {} @step(3)
55 if false {
56 c4: { @step(4a) } @step(4b)
57 @step(4c)
58 }
59}
60
61dynamicComplex: {
62 a: "foo"
63
64 (a): "foo" @step(1)
65
66 [string]: "foo" @step(2)
67
68 a?: "foo" @step(3)
69
70 b?: "foo" @step(4)
71
72 if true {} // trigger isComplex
73}
74
75dynamicSimple: {
76 a: "foo"
77
78 a?: "foo" @step(3)
79
80 b?: "foo" @step(4)
81}
82-- b.cue --
83@package("b")
84
85package bar
86
87@file("bar")
88
89a: {
90 @decl(5)
91} @field(5)
92-- out/definition --
93package bar
94
95@file("foo")
96
97@file("bar")
98a: {
99 @decl(1)
100 @decl(2)
101 @decl(3)
102 @decl(5)
103} @field(2) @field(1) @field(4) @field(3) @field(5)
104doNotPropagate: {
105 #A: {} @attr1()
106 a: #A
107
108 // Do not accumulated field attributes in embedding.
109 #B: {} @attr1()
110 b: #B
111}
112embedScalarField: {
113 a: 2 @attr1() @attr2()
114}
115embedScalarDecl: {
116 b0: {
117 @attr1()
118 2
119 }
120 b1: b0
121 b2: {
122 @attr2()
123 b0
124 2
125 }
126}
127dontMergeForDef: {
128 a: {
129 @decl1()
130 }
131 b: a & {
132 @decl2()
133 x: 1
134 }
135 c: a & {
136 @decl2()
137 }
138 d: {
139 @decl2()
140 a
141 }
142}
143comprehensions: {
144 @step(0)
145 c1: {} @step(1)
146 if true {
147 @step(2c)
148 c2: {
149 @step(2a)
150 } @step(2b)
151 }
152 c3: {} @step(3)
153 if false {
154 @step(4c)
155 c4: {
156 @step(4a)
157 } @step(4b)
158 }
159}
160dynamicComplex: {
161 a: "foo"
162 (a): "foo" @step(1)
163 [string]: "foo" @step(2)
164 a?: "foo" @step(3)
165 b?: "foo" @step(4)
166
167 if true {}
168}
169dynamicSimple: {
170 a: "foo" @step(3)
171 b?: "foo" @step(4)
172}
173-- out/doc --
174[]
175[a]
176[doNotPropagate]
177[doNotPropagate #A]
178[doNotPropagate a]
179[doNotPropagate #B]
180- Do not accumulated field attributes in embedding.
181
182[doNotPropagate b]
183[embedScalarField]
184[embedScalarField a]
185[embedScalarDecl]
186[embedScalarDecl b0]
187[embedScalarDecl b1]
188[embedScalarDecl b2]
189[dontMergeForDef]
190[dontMergeForDef a]
191[dontMergeForDef b]
192[dontMergeForDef b x]
193[dontMergeForDef c]
194[dontMergeForDef d]
195[comprehensions]
196[comprehensions c1]
197[comprehensions c2]
198[comprehensions c3]
199[dynamicComplex]
200[dynamicComplex a]
201[dynamicComplex b]
202[dynamicComplex foo]
203[dynamicSimple]
204[dynamicSimple a]
205[dynamicSimple b]
206-- out/value --
207== Simplified
208{
209 a: {}
210 doNotPropagate: {
211 a: {}
212 b: {}
213 }
214 embedScalarField: {
215 a: 2
216 }
217 embedScalarDecl: {
218 b0: 2
219 b1: 2
220 b2: 2
221 }
222 dontMergeForDef: {
223 a: {}
224 b: {
225 x: 1
226 }
227 c: {}
228 d: {}
229 }
230 comprehensions: {
231 c1: {}
232 c2: {}
233 c3: {}
234 }
235 dynamicComplex: {
236 foo: "foo"
237 a: "foo"
238 }
239 dynamicSimple: {
240 a: "foo"
241 }
242}
243== Raw
244{
245 a: {}
246 doNotPropagate: {
247 #A: {}
248 a: {}
249
250 // Do not accumulated field attributes in embedding.
251 #B: {}
252 b: {}
253 }
254 embedScalarField: {
255 a: 2
256 }
257 embedScalarDecl: {
258 b0: 2
259 b1: 2
260 b2: 2
261 }
262 dontMergeForDef: {
263 a: {}
264 b: {
265 x: 1
266 }
267 c: {}
268 d: {}
269 }
270 comprehensions: {
271 c1: {}
272 c2: {}
273 c3: {}
274 }
275 dynamicComplex: {
276 foo: "foo"
277 a: "foo"
278 b?: "foo"
279 }
280 dynamicSimple: {
281 a: "foo"
282 b?: "foo"
283 }
284}
285== Final
286{
287 a: {}
288 doNotPropagate: {
289 a: {}
290 b: {}
291 }
292 embedScalarField: {
293 a: 2
294 }
295 embedScalarDecl: {
296 b0: 2
297 b1: 2
298 b2: 2
299 }
300 dontMergeForDef: {
301 a: {}
302 b: {
303 x: 1
304 }
305 c: {}
306 d: {}
307 }
308 comprehensions: {
309 c1: {}
310 c2: {}
311 c3: {}
312 }
313 dynamicComplex: {
314 foo: "foo"
315 a: "foo"
316 }
317 dynamicSimple: {
318 a: "foo"
319 }
320}
321== All
322{
323 @file("foo")
324
325 @file("bar")
326 a: {
327 @decl(1)
328 @decl(2)
329 @decl(3)
330 @decl(5)
331 } @field(2) @field(1) @field(4) @field(3) @field(5)
332 doNotPropagate: {
333 #A: {} @attr1()
334 a: {}
335
336 // Do not accumulated field attributes in embedding.
337 #B: {} @attr1()
338 b: {}
339 }
340 embedScalarField: {
341 a: 2 @attr1() @attr2()
342 }
343 embedScalarDecl: {
344 b0: {
345 2, @attr1()
346 }
347 b1: {
348 2, @attr1()
349 }
350 b2: {
351 2, @attr2(), @attr1()
352 }
353 }
354 dontMergeForDef: {
355 a: {
356 @decl1()
357 }
358 b: {
359 @decl1(), @decl2()
360 x: 1
361 }
362 c: {
363 @decl1(), @decl2()
364 }
365 d: {
366 @decl2(), @decl1()
367 }
368 }
369 comprehensions: {
370 @step(0)
371 @step(2c)
372 c1: {} @step(1)
373 c2: {
374 @step(2a)
375 } @step(2b)
376 c3: {} @step(3)
377 }
378 dynamicComplex: {
379 foo: "foo" @step(1) @step(2)
380 a: "foo" @step(3) @step(2)
381 b?: "foo" @step(4) @step(2)
382 }
383 dynamicSimple: {
384 a: "foo" @step(3)
385 b?: "foo" @step(4)
386 }
387}
388== Eval
389{
390 @file("foo")
391
392 @file("bar")
393 a: {
394 @decl(1)
395 @decl(2)
396 @decl(3)
397 @decl(5)
398 } @field(2) @field(1) @field(4) @field(3) @field(5)
399 doNotPropagate: {
400 #A: {} @attr1()
401 a: {}
402 #B: {} @attr1()
403 b: {}
404 }
405 embedScalarField: {
406 a: 2 @attr1() @attr2()
407 }
408 embedScalarDecl: {
409 b0: {
410 2, @attr1()
411 }
412 b1: {
413 2, @attr1()
414 }
415 b2: {
416 2, @attr2(), @attr1()
417 }
418 }
419 dontMergeForDef: {
420 a: {
421 @decl1()
422 }
423 b: {
424 @decl1(), @decl2()
425 x: 1
426 }
427 c: {
428 @decl1(), @decl2()
429 }
430 d: {
431 @decl2(), @decl1()
432 }
433 }
434 comprehensions: {
435 @step(0)
436 @step(2c)
437 c1: {} @step(1)
438 c2: {
439 @step(2a)
440 } @step(2b)
441 c3: {} @step(3)
442 }
443 dynamicComplex: {
444 foo: "foo" @step(1) @step(2)
445 a: "foo" @step(3) @step(2)
446 b?: "foo" @step(4) @step(2)
447 }
448 dynamicSimple: {
449 a: "foo" @step(3)
450 b?: "foo" @step(4)
451 }
452}
View as plain text