...
1-- in.cue --
2// All these should pass. These look like recursive inlined calls, but they are
3// not.
4
5ok1: {
6 f: {
7 in: number
8 out: in
9 }
10 k00: 0
11 k10: (f & {in: k00}).out
12 k20: (f & {in: k10}).out
13 k30: (f & {in: k20}).out
14}
15
16ok2: {
17 f: {
18 in: number
19 out: in
20 }
21 k00: 0
22 k10: {(f & {in: k00}).out}
23 k20: {(f & {in: k10}).out}
24 k30: {(f & {in: k20}).out}
25}
26
27ok3: {
28 f: {
29 in: number
30 out: in
31 }
32 k00: 0
33 k10: {close((f & {in: k00})).out}
34 k20: {close((f & {in: k10})).out}
35 k30: {close((f & {in: k20})).out}
36}
37
38ok4: {
39 f: {
40 in: number
41 out: in
42 }
43 k00: 0
44 k10: {out: {(f & {in: k00}).out}}.out
45 k20: {out: {(f & {in: k10}).out}}.out
46 k30: {out: {(f & {in: k20}).out}}.out
47}
48
49// Issue #1708
50issue1708: {
51 #add10: {
52 in: number
53 a10: { i: in, o: i + 10 }
54 out: a10.o
55 }
56 k00: 0
57 k10: (#add10 & {in: k00}).out
58 k20: (#add10 & {in: k10}).out
59 k30: (#add10 & {in: k20}).out
60}
61
62-- out/eval/stats --
63Leaks: 291
64Freed: 389
65Reused: 379
66Allocs: 301
67Retain: 1047
68
69Unifications: 680
70Conjuncts: 2709
71Disjuncts: 1414
72-- out/evalalpha --
73(struct){
74 ok1: (struct){
75 f: (struct){
76 in: (number){ number }
77 out: (number){ number }
78 }
79 k00: (int){ 0 }
80 k10: (int){ 0 }
81 k20: (int){ 0 }
82 k30: (int){ 0 }
83 }
84 ok2: (struct){
85 f: (struct){
86 in: (number){ number }
87 out: (number){ number }
88 }
89 k00: (int){ 0 }
90 k10: (int){ 0 }
91 k20: (int){ 0 }
92 k30: (int){ 0 }
93 }
94 ok3: (struct){
95 f: (struct){
96 in: (number){ number }
97 out: (number){ number }
98 }
99 k00: (int){ 0 }
100 k10: (int){ 0 }
101 k20: (int){ 0 }
102 k30: (int){ 0 }
103 }
104 ok4: (struct){
105 f: (struct){
106 in: (number){ number }
107 out: (number){ number }
108 }
109 k00: (int){ 0 }
110 k10: (int){ 0 }
111 k20: (int){ 0 }
112 k30: (int){ 0 }
113 }
114 issue1708: (struct){
115 #add10: (#struct){
116 in: (number){ number }
117 a10: (#struct){
118 i: (number){ number }
119 o: (_|_){
120 // [incomplete] issue1708.#add10.a10.o: non-concrete value number in operand to +:
121 // ./in.cue:52:20
122 // ./in.cue:51:7
123 }
124 }
125 out: (_|_){
126 // [incomplete] issue1708.#add10.out: non-concrete value number in operand to +:
127 // ./in.cue:52:20
128 // ./in.cue:51:7
129 }
130 }
131 k00: (int){ 0 }
132 k10: (int){ 10 }
133 k20: (int){ 20 }
134 k30: (int){ 30 }
135 }
136}
137-- diff/-out/evalalpha<==>+out/eval --
138diff old new
139--- old
140+++ new
141@@ -48,7 +48,6 @@
142 // [incomplete] issue1708.#add10.a10.o: non-concrete value number in operand to +:
143 // ./in.cue:52:20
144 // ./in.cue:51:7
145- // ./in.cue:52:13
146 }
147 }
148 out: (_|_){
149@@ -55,7 +54,6 @@
150 // [incomplete] issue1708.#add10.out: non-concrete value number in operand to +:
151 // ./in.cue:52:20
152 // ./in.cue:51:7
153- // ./in.cue:52:13
154 }
155 }
156 k00: (int){ 0 }
157-- diff/todo/p2 --
158error positions
159-- out/eval --
160(struct){
161 ok1: (struct){
162 f: (struct){
163 in: (number){ number }
164 out: (number){ number }
165 }
166 k00: (int){ 0 }
167 k10: (int){ 0 }
168 k20: (int){ 0 }
169 k30: (int){ 0 }
170 }
171 ok2: (struct){
172 f: (struct){
173 in: (number){ number }
174 out: (number){ number }
175 }
176 k00: (int){ 0 }
177 k10: (int){ 0 }
178 k20: (int){ 0 }
179 k30: (int){ 0 }
180 }
181 ok3: (struct){
182 f: (struct){
183 in: (number){ number }
184 out: (number){ number }
185 }
186 k00: (int){ 0 }
187 k10: (int){ 0 }
188 k20: (int){ 0 }
189 k30: (int){ 0 }
190 }
191 ok4: (struct){
192 f: (struct){
193 in: (number){ number }
194 out: (number){ number }
195 }
196 k00: (int){ 0 }
197 k10: (int){ 0 }
198 k20: (int){ 0 }
199 k30: (int){ 0 }
200 }
201 issue1708: (struct){
202 #add10: (#struct){
203 in: (number){ number }
204 a10: (#struct){
205 i: (number){ number }
206 o: (_|_){
207 // [incomplete] issue1708.#add10.a10.o: non-concrete value number in operand to +:
208 // ./in.cue:52:20
209 // ./in.cue:51:7
210 // ./in.cue:52:13
211 }
212 }
213 out: (_|_){
214 // [incomplete] issue1708.#add10.out: non-concrete value number in operand to +:
215 // ./in.cue:52:20
216 // ./in.cue:51:7
217 // ./in.cue:52:13
218 }
219 }
220 k00: (int){ 0 }
221 k10: (int){ 10 }
222 k20: (int){ 20 }
223 k30: (int){ 30 }
224 }
225}
226-- out/compile --
227--- in.cue
228{
229 ok1: {
230 f: {
231 in: number
232 out: 〈0;in〉
233 }
234 k00: 0
235 k10: (〈0;f〉 & {
236 in: 〈1;k00〉
237 }).out
238 k20: (〈0;f〉 & {
239 in: 〈1;k10〉
240 }).out
241 k30: (〈0;f〉 & {
242 in: 〈1;k20〉
243 }).out
244 }
245 ok2: {
246 f: {
247 in: number
248 out: 〈0;in〉
249 }
250 k00: 0
251 k10: {
252 (〈1;f〉 & {
253 in: 〈2;k00〉
254 }).out
255 }
256 k20: {
257 (〈1;f〉 & {
258 in: 〈2;k10〉
259 }).out
260 }
261 k30: {
262 (〈1;f〉 & {
263 in: 〈2;k20〉
264 }).out
265 }
266 }
267 ok3: {
268 f: {
269 in: number
270 out: 〈0;in〉
271 }
272 k00: 0
273 k10: {
274 close((〈1;f〉 & {
275 in: 〈2;k00〉
276 })).out
277 }
278 k20: {
279 close((〈1;f〉 & {
280 in: 〈2;k10〉
281 })).out
282 }
283 k30: {
284 close((〈1;f〉 & {
285 in: 〈2;k20〉
286 })).out
287 }
288 }
289 ok4: {
290 f: {
291 in: number
292 out: 〈0;in〉
293 }
294 k00: 0
295 k10: {
296 out: {
297 (〈2;f〉 & {
298 in: 〈3;k00〉
299 }).out
300 }
301 }.out
302 k20: {
303 out: {
304 (〈2;f〉 & {
305 in: 〈3;k10〉
306 }).out
307 }
308 }.out
309 k30: {
310 out: {
311 (〈2;f〉 & {
312 in: 〈3;k20〉
313 }).out
314 }
315 }.out
316 }
317 issue1708: {
318 #add10: {
319 in: number
320 a10: {
321 i: 〈1;in〉
322 o: (〈0;i〉 + 10)
323 }
324 out: 〈0;a10〉.o
325 }
326 k00: 0
327 k10: (〈0;#add10〉 & {
328 in: 〈1;k00〉
329 }).out
330 k20: (〈0;#add10〉 & {
331 in: 〈1;k10〉
332 }).out
333 k30: (〈0;#add10〉 & {
334 in: 〈1;k20〉
335 }).out
336 }
337}
View as plain text