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