...
1# DO NOT EDIT; generated by go run testdata/gen.go
2#
3#name: reentrance
4#evalFull
5-- in.cue --
6// This indirection is needed to avoid binding references to fib
7// within fib to the instantiated version.
8fibRec: {nn: int, out: (fib & {n: nn}).out}
9fib: {
10 n: int
11
12 if n >= 2 {
13 out: (fibRec & {nn: n - 2}).out + (fibRec & {nn: n - 1}).out
14 }
15 if n < 2 {
16 out: n
17 }
18}
19fib1: (fib & {n: 1}).out // MAY NOT be an error
20fib2: (fib & {n: 2}).out // MAY be an error
21fib3: (fib & {n: 3}).out // SHOULD be an error
22fib7: (fib & {n: 7}).out // Error
23fib12: (fib & {n: 12}).out // Error
24
25-- out/legacy-debug --
26<0>{fibRec: <1>{nn: int, out: (<2>.fib & <3>{n: <4>.nn}).out}, fib: <5>{n: int if (<6>.n >= 2) yield <7>{out: ((<2>.fibRec & <8>{nn: (<6>.n - 2)}).out + (<2>.fibRec & <9>{nn: (<6>.n - 1)}).out)}, if (<6>.n < 2) yield <10>{out: <6>.n}}, fib2: 1, fib7: 13, fib12: 144}
27-- out/compile --
28--- in.cue
29{
30 fibRec: {
31 nn: int
32 out: (〈1;fib〉 & {
33 n: 〈1;nn〉
34 }).out
35 }
36 fib: {
37 n: int
38 if (〈0;n〉 >= 2) {
39 out: ((〈2;fibRec〉 & {
40 nn: (〈2;n〉 - 2)
41 }).out + (〈2;fibRec〉 & {
42 nn: (〈2;n〉 - 1)
43 }).out)
44 }
45 if (〈0;n〉 < 2) {
46 out: 〈1;n〉
47 }
48 }
49 fib1: (〈0;fib〉 & {
50 n: 1
51 }).out
52 fib2: (〈0;fib〉 & {
53 n: 2
54 }).out
55 fib3: (〈0;fib〉 & {
56 n: 3
57 }).out
58 fib7: (〈0;fib〉 & {
59 n: 7
60 }).out
61 fib12: (〈0;fib〉 & {
62 n: 12
63 }).out
64}
65-- out/eval/stats --
66Leaks: 16
67Freed: 180
68Reused: 170
69Allocs: 26
70Retain: 148
71
72Unifications: 196
73Conjuncts: 464
74Disjuncts: 268
75-- out/evalalpha --
76Errors:
77structural cycle:
78 ./in.cue:3:25
79structural cycle:
80 ./in.cue:8:9
81structural cycle:
82 ./in.cue:8:38
83
84Result:
85(_|_){
86 // [structural cycle]
87 fibRec: (struct){
88 nn: (int){ int }
89 out: (_|_){
90 // [incomplete] non-concrete value int in operand to >=:
91 // ./in.cue:7:5
92 // ./in.cue:3:35
93 // ./in.cue:5:5
94 }
95 }
96 fib: (_|_){
97 // [incomplete] fib: non-concrete value int in operand to >=:
98 // ./in.cue:7:5
99 // ./in.cue:5:5
100 n: (int){ int }
101 }
102 fib1: (int){ 1 }
103 fib2: (int){ 1 }
104 fib3: (_|_){
105 // [structural cycle] structural cycle:
106 // ./in.cue:3:25
107 // structural cycle:
108 // ./in.cue:8:38
109 }
110 fib7: (_|_){
111 // [structural cycle] structural cycle:
112 // ./in.cue:3:25
113 // structural cycle:
114 // ./in.cue:8:9
115 // structural cycle:
116 // ./in.cue:8:38
117 }
118 fib12: (_|_){
119 // [structural cycle] structural cycle:
120 // ./in.cue:3:25
121 // structural cycle:
122 // ./in.cue:8:9
123 // structural cycle:
124 // ./in.cue:8:38
125 }
126}
127-- diff/-out/evalalpha<==>+out/eval --
128diff old new
129--- old
130+++ new
131@@ -16,10 +16,6 @@
132 // ./in.cue:7:5
133 // ./in.cue:3:35
134 // ./in.cue:5:5
135- // non-concrete value int in operand to <:
136- // ./in.cue:10:5
137- // ./in.cue:3:35
138- // ./in.cue:5:5
139 }
140 }
141 fib: (_|_){
142@@ -26,9 +22,6 @@
143 // [incomplete] fib: non-concrete value int in operand to >=:
144 // ./in.cue:7:5
145 // ./in.cue:5:5
146- // fib: non-concrete value int in operand to <:
147- // ./in.cue:10:5
148- // ./in.cue:5:5
149 n: (int){ int }
150 }
151 fib1: (int){ 1 }
152-- out/eval --
153Errors:
154structural cycle:
155 ./in.cue:3:25
156structural cycle:
157 ./in.cue:8:9
158structural cycle:
159 ./in.cue:8:38
160
161Result:
162(_|_){
163 // [structural cycle]
164 fibRec: (struct){
165 nn: (int){ int }
166 out: (_|_){
167 // [incomplete] non-concrete value int in operand to >=:
168 // ./in.cue:7:5
169 // ./in.cue:3:35
170 // ./in.cue:5:5
171 // non-concrete value int in operand to <:
172 // ./in.cue:10:5
173 // ./in.cue:3:35
174 // ./in.cue:5:5
175 }
176 }
177 fib: (_|_){
178 // [incomplete] fib: non-concrete value int in operand to >=:
179 // ./in.cue:7:5
180 // ./in.cue:5:5
181 // fib: non-concrete value int in operand to <:
182 // ./in.cue:10:5
183 // ./in.cue:5:5
184 n: (int){ int }
185 }
186 fib1: (int){ 1 }
187 fib2: (int){ 1 }
188 fib3: (_|_){
189 // [structural cycle] structural cycle:
190 // ./in.cue:3:25
191 // structural cycle:
192 // ./in.cue:8:38
193 }
194 fib7: (_|_){
195 // [structural cycle] structural cycle:
196 // ./in.cue:3:25
197 // structural cycle:
198 // ./in.cue:8:9
199 // structural cycle:
200 // ./in.cue:8:38
201 }
202 fib12: (_|_){
203 // [structural cycle] structural cycle:
204 // ./in.cue:3:25
205 // structural cycle:
206 // ./in.cue:8:9
207 // structural cycle:
208 // ./in.cue:8:38
209 }
210}
211-- diff/todo/p2 --
212Elimination of unnecessary, but potentially useful, errors.
View as plain text