99e23bbb8a258178fc26baabfeea48965da739cc
[nit.git] / c_src / syntax___flow._sep.c
1 /* This C file is generated by NIT to compile module syntax___flow. */
2 #include "syntax___flow._sep.h"
3 static const char LOCATE_syntax___flow___FlowContext___check_is_set[] = "flow::FlowContext::check_is_set";
4 void syntax___flow___FlowContext___check_is_set(val_t p0, val_t p1, val_t p2){
5 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
6 val_t REGB0;
7 val_t REGB1;
8 val_t tmp;
9 static val_t once_value_1; /* Once value */
10 static val_t once_value_2; /* Once value */
11 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12 fra.me.file = LOCATE_syntax___flow;
13 fra.me.line = 34;
14 fra.me.meth = LOCATE_syntax___flow___FlowContext___check_is_set;
15 fra.me.has_broke = 0;
16 fra.me.REG_size = 5;
17 fra.me.nitni_local_ref_head = NULL;
18 fra.me.REG[0] = NIT_NULL;
19 fra.me.REG[1] = NIT_NULL;
20 fra.me.REG[2] = NIT_NULL;
21 fra.me.REG[3] = NIT_NULL;
22 fra.me.REG[4] = NIT_NULL;
23 fra.me.REG[0] = p0;
24 fra.me.REG[1] = p1;
25 fra.me.REG[2] = p2;
26 /* syntax/flow.nit:37 */
27 REGB0 = CALL_syntax___flow___Variable___must_be_set(fra.me.REG[2])(fra.me.REG[2]);
28 if (UNTAG_Bool(REGB0)) {
29 REGB0 = CALL_syntax___flow___FlowContext___is_set(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
30 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
31 } else {
32 REGB1 = TAG_Bool(0);
33 REGB0 = REGB1;
34 }
35 if (UNTAG_Bool(REGB0)) {
36 /* syntax/flow.nit:38 */
37 REGB0 = TAG_Bool(ATTR_syntax___flow___FlowContext____visitor(fra.me.REG[0])!=NIT_NULL);
38 if (UNTAG_Bool(REGB0)) {
39 } else {
40 nit_abort("Uninitialized attribute %s", "_visitor", LOCATE_syntax___flow, 38);
41 }
42 fra.me.REG[0] = ATTR_syntax___flow___FlowContext____visitor(fra.me.REG[0]);
43 REGB0 = TAG_Int(3);
44 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
45 if (!once_value_1) {
46 fra.me.REG[4] = BOX_NativeString("Error: variable '");
47 REGB0 = TAG_Int(17);
48 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
49 once_value_1 = fra.me.REG[4];
50 register_static_object(&once_value_1);
51 } else fra.me.REG[4] = once_value_1;
52 fra.me.REG[4] = fra.me.REG[4];
53 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
54 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
55 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
56 if (!once_value_2) {
57 fra.me.REG[2] = BOX_NativeString("' is possibly unset.");
58 REGB0 = TAG_Int(20);
59 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
60 once_value_2 = fra.me.REG[2];
61 register_static_object(&once_value_2);
62 } else fra.me.REG[2] = once_value_2;
63 fra.me.REG[2] = fra.me.REG[2];
64 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
65 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
66 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3]);
67 }
68 stack_frame_head = fra.me.prev;
69 return;
70 }
71 static const char LOCATE_syntax___flow___FlowContext___stype[] = "flow::FlowContext::stype";
72 val_t syntax___flow___FlowContext___stype(val_t p0, val_t p1){
73 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
74 val_t tmp;
75 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
76 fra.me.file = LOCATE_syntax___flow;
77 fra.me.line = 42;
78 fra.me.meth = LOCATE_syntax___flow___FlowContext___stype;
79 fra.me.has_broke = 0;
80 fra.me.REG_size = 2;
81 fra.me.nitni_local_ref_head = NULL;
82 fra.me.REG[0] = NIT_NULL;
83 fra.me.REG[1] = NIT_NULL;
84 fra.me.REG[0] = p0;
85 fra.me.REG[1] = p1;
86 /* syntax/flow.nit:46 */
87 fra.me.REG[1] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[1])(fra.me.REG[1]);
88 goto label1;
89 label1: while(0);
90 stack_frame_head = fra.me.prev;
91 return fra.me.REG[1];
92 }
93 static const char LOCATE_syntax___flow___FlowContext___sub_setvariable[] = "flow::FlowContext::sub_setvariable";
94 val_t syntax___flow___FlowContext___sub_setvariable(val_t p0, val_t p1){
95 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
96 val_t REGB0;
97 val_t tmp;
98 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
99 fra.me.file = LOCATE_syntax___flow;
100 fra.me.line = 49;
101 fra.me.meth = LOCATE_syntax___flow___FlowContext___sub_setvariable;
102 fra.me.has_broke = 0;
103 fra.me.REG_size = 3;
104 fra.me.nitni_local_ref_head = NULL;
105 fra.me.REG[0] = NIT_NULL;
106 fra.me.REG[1] = NIT_NULL;
107 fra.me.REG[2] = NIT_NULL;
108 fra.me.REG[0] = p0;
109 fra.me.REG[1] = p1;
110 /* syntax/flow.nit:52 */
111 fra.me.REG[2] = CALL_syntax___flow___FlowContext___node(fra.me.REG[0])(fra.me.REG[0]);
112 fra.me.REG[2] = NEW_SubFlowContext_syntax___flow___SubFlowContext___with_prev(fra.me.REG[0], fra.me.REG[2]);
113 /* syntax/flow.nit:53 */
114 REGB0 = TAG_Bool(ATTR_syntax___flow___FlowContext____set_variables(fra.me.REG[2])!=NIT_NULL);
115 if (UNTAG_Bool(REGB0)) {
116 } else {
117 nit_abort("Uninitialized attribute %s", "_set_variables", LOCATE_syntax___flow, 53);
118 }
119 fra.me.REG[0] = ATTR_syntax___flow___FlowContext____set_variables(fra.me.REG[2]);
120 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
121 /* syntax/flow.nit:54 */
122 goto label1;
123 label1: while(0);
124 stack_frame_head = fra.me.prev;
125 return fra.me.REG[2];
126 }
127 static const char LOCATE_syntax___flow___FlowContext___sub_unreash[] = "flow::FlowContext::sub_unreash";
128 val_t syntax___flow___FlowContext___sub_unreash(val_t p0, val_t p1){
129 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
130 val_t REGB0;
131 val_t tmp;
132 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
133 fra.me.file = LOCATE_syntax___flow;
134 fra.me.line = 57;
135 fra.me.meth = LOCATE_syntax___flow___FlowContext___sub_unreash;
136 fra.me.has_broke = 0;
137 fra.me.REG_size = 2;
138 fra.me.nitni_local_ref_head = NULL;
139 fra.me.REG[0] = NIT_NULL;
140 fra.me.REG[1] = NIT_NULL;
141 fra.me.REG[0] = p0;
142 fra.me.REG[1] = p1;
143 /* syntax/flow.nit:60 */
144 fra.me.REG[1] = NEW_SubFlowContext_syntax___flow___SubFlowContext___with_prev(fra.me.REG[0], fra.me.REG[1]);
145 /* syntax/flow.nit:61 */
146 REGB0 = TAG_Bool(1);
147 ATTR_syntax___flow___FlowContext____unreash(fra.me.REG[1]) = REGB0;
148 /* syntax/flow.nit:62 */
149 goto label1;
150 label1: while(0);
151 stack_frame_head = fra.me.prev;
152 return fra.me.REG[1];
153 }
154 static const char LOCATE_syntax___flow___FlowContext___sub_with[] = "flow::FlowContext::sub_with";
155 val_t syntax___flow___FlowContext___sub_with(val_t p0, val_t p1, val_t p2, val_t p3){
156 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
157 val_t tmp;
158 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
159 fra.me.file = LOCATE_syntax___flow;
160 fra.me.line = 65;
161 fra.me.meth = LOCATE_syntax___flow___FlowContext___sub_with;
162 fra.me.has_broke = 0;
163 fra.me.REG_size = 4;
164 fra.me.nitni_local_ref_head = NULL;
165 fra.me.REG[0] = NIT_NULL;
166 fra.me.REG[1] = NIT_NULL;
167 fra.me.REG[2] = NIT_NULL;
168 fra.me.REG[3] = NIT_NULL;
169 fra.me.REG[0] = p0;
170 fra.me.REG[1] = p1;
171 fra.me.REG[2] = p2;
172 fra.me.REG[3] = p3;
173 /* syntax/flow.nit:68 */
174 fra.me.REG[3] = NEW_CastFlowContext_syntax___flow___CastFlowContext___init(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
175 goto label1;
176 label1: while(0);
177 stack_frame_head = fra.me.prev;
178 return fra.me.REG[3];
179 }
180 static const char LOCATE_syntax___flow___FlowContext___merge[] = "flow::FlowContext::merge";
181 val_t syntax___flow___FlowContext___merge(val_t p0, val_t p1, val_t p2){
182 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
183 val_t REGB0;
184 val_t REGB1;
185 val_t REGB2;
186 val_t tmp;
187 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
188 fra.me.file = LOCATE_syntax___flow;
189 fra.me.line = 71;
190 fra.me.meth = LOCATE_syntax___flow___FlowContext___merge;
191 fra.me.has_broke = 0;
192 fra.me.REG_size = 6;
193 fra.me.nitni_local_ref_head = NULL;
194 fra.me.REG[0] = NIT_NULL;
195 fra.me.REG[1] = NIT_NULL;
196 fra.me.REG[2] = NIT_NULL;
197 fra.me.REG[3] = NIT_NULL;
198 fra.me.REG[4] = NIT_NULL;
199 fra.me.REG[5] = NIT_NULL;
200 fra.me.REG[0] = p0;
201 fra.me.REG[1] = p1;
202 fra.me.REG[2] = p2;
203 /* ../lib/standard/collection/array.nit:266 */
204 fra.me.REG[3] = fra.me.REG[2];
205 /* ../lib/standard/collection/array.nit:269 */
206 REGB0 = TAG_Int(0);
207 /* ../lib/standard/collection/array.nit:270 */
208 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
209 if (UNTAG_Bool(REGB1)) {
210 } else {
211 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
212 }
213 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
214 /* ../lib/standard/collection/array.nit:271 */
215 fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
216 /* ../lib/standard/collection/array.nit:272 */
217 while(1) {
218 /* ../lib/standard/collection/array.nit:24 */
219 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
220 if (UNTAG_Bool(REGB1)) {
221 } else {
222 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
223 }
224 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
225 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
226 if (UNTAG_Bool(REGB2)) {
227 } else {
228 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
229 }
230 /* ../lib/standard/kernel.nit:235 */
231 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
232 /* ../lib/standard/collection/array.nit:272 */
233 if (UNTAG_Bool(REGB1)) {
234 /* ../lib/standard/collection/array.nit:273 */
235 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
236 if (UNTAG_Bool(REGB1)) {
237 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
238 }
239 /* ../lib/standard/collection/array.nit:724 */
240 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
241 /* syntax/flow.nit:76 */
242 REGB1 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[5])(fra.me.REG[5]);
243 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
244 if (UNTAG_Bool(REGB1)) {
245 } else {
246 nit_abort("Assert failed", NULL, LOCATE_syntax___flow, 76);
247 }
248 /* ../lib/standard/collection/array.nit:274 */
249 REGB1 = TAG_Int(1);
250 /* ../lib/standard/kernel.nit:238 */
251 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
252 /* ../lib/standard/collection/array.nit:274 */
253 REGB0 = REGB1;
254 } else {
255 /* ../lib/standard/collection/array.nit:272 */
256 goto label1;
257 }
258 }
259 label1: while(0);
260 /* ../lib/standard/collection/array.nit:24 */
261 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
262 if (UNTAG_Bool(REGB0)) {
263 } else {
264 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
265 }
266 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
267 /* syntax/flow.nit:77 */
268 REGB1 = TAG_Int(1);
269 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
270 if (UNTAG_Bool(REGB2)) {
271 } else {
272 /* ../lib/standard/kernel.nit:230 */
273 REGB1 = TAG_Bool((REGB0)==(REGB1));
274 /* syntax/flow.nit:77 */
275 REGB2 = REGB1;
276 }
277 if (UNTAG_Bool(REGB2)) {
278 fra.me.REG[4] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
279 goto label2;
280 }
281 /* syntax/flow.nit:78 */
282 fra.me.REG[2] = NEW_MergeFlowContext_syntax___flow___MergeFlowContext___init(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
283 fra.me.REG[4] = fra.me.REG[2];
284 goto label2;
285 label2: while(0);
286 stack_frame_head = fra.me.prev;
287 return fra.me.REG[4];
288 }
289 static const char LOCATE_syntax___flow___FlowContext___merge_reash[] = "flow::FlowContext::merge_reash";
290 val_t syntax___flow___FlowContext___merge_reash(val_t p0, val_t p1, val_t p2, val_t p3){
291 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
292 val_t REGB0;
293 val_t REGB1;
294 val_t REGB2;
295 val_t tmp;
296 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
297 fra.me.file = LOCATE_syntax___flow;
298 fra.me.line = 81;
299 fra.me.meth = LOCATE_syntax___flow___FlowContext___merge_reash;
300 fra.me.has_broke = 0;
301 fra.me.REG_size = 6;
302 fra.me.nitni_local_ref_head = NULL;
303 fra.me.REG[0] = NIT_NULL;
304 fra.me.REG[1] = NIT_NULL;
305 fra.me.REG[2] = NIT_NULL;
306 fra.me.REG[3] = NIT_NULL;
307 fra.me.REG[4] = NIT_NULL;
308 fra.me.REG[5] = NIT_NULL;
309 fra.me.REG[0] = p0;
310 fra.me.REG[1] = p1;
311 fra.me.REG[2] = p2;
312 fra.me.REG[3] = p3;
313 /* syntax/flow.nit:86 */
314 REGB0 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[2])(fra.me.REG[2]);
315 if (UNTAG_Bool(REGB0)) {
316 /* syntax/flow.nit:87 */
317 REGB0 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[3])(fra.me.REG[3]);
318 if (UNTAG_Bool(REGB0)) {
319 /* syntax/flow.nit:88 */
320 fra.me.REG[4] = CALL_syntax___flow___FlowContext___sub_unreash(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
321 goto label1;
322 } else {
323 /* syntax/flow.nit:90 */
324 fra.me.REG[5] = fra.me.REG[3];
325 /* syntax/flow.nit:91 */
326 fra.me.REG[3] = fra.me.REG[2];
327 /* syntax/flow.nit:92 */
328 fra.me.REG[2] = fra.me.REG[5];
329 }
330 }
331 /* syntax/flow.nit:96 */
332 REGB0 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[3])(fra.me.REG[3]);
333 if (UNTAG_Bool(REGB0)) {
334 REGB0 = TAG_Bool(1);
335 } else {
336 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
337 if (UNTAG_Bool(REGB1)) {
338 } else {
339 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
340 REGB1 = REGB2;
341 }
342 REGB0 = REGB1;
343 }
344 if (UNTAG_Bool(REGB0)) {
345 /* syntax/flow.nit:97 */
346 fra.me.REG[4] = fra.me.REG[2];
347 goto label1;
348 } else {
349 /* syntax/flow.nit:104 */
350 REGB0 = TAG_Int(2);
351 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
352 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
353 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
354 fra.me.REG[5] = CALL_syntax___flow___FlowContext___merge(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[5]);
355 fra.me.REG[4] = fra.me.REG[5];
356 goto label1;
357 }
358 label1: while(0);
359 stack_frame_head = fra.me.prev;
360 return fra.me.REG[4];
361 }
362 static const char LOCATE_syntax___flow___FlowContext___node[] = "flow::FlowContext::node";
363 val_t syntax___flow___FlowContext___node(val_t p0){
364 struct {struct stack_frame_t me;} fra;
365 val_t REGB0;
366 val_t tmp;
367 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
368 fra.me.file = LOCATE_syntax___flow;
369 fra.me.line = 111;
370 fra.me.meth = LOCATE_syntax___flow___FlowContext___node;
371 fra.me.has_broke = 0;
372 fra.me.REG_size = 1;
373 fra.me.nitni_local_ref_head = NULL;
374 fra.me.REG[0] = NIT_NULL;
375 fra.me.REG[0] = p0;
376 /* syntax/flow.nit:111 */
377 REGB0 = TAG_Bool(ATTR_syntax___flow___FlowContext____node(fra.me.REG[0])!=NIT_NULL);
378 if (UNTAG_Bool(REGB0)) {
379 } else {
380 nit_abort("Uninitialized attribute %s", "_node", LOCATE_syntax___flow, 111);
381 }
382 fra.me.REG[0] = ATTR_syntax___flow___FlowContext____node(fra.me.REG[0]);
383 stack_frame_head = fra.me.prev;
384 return fra.me.REG[0];
385 }
386 static const char LOCATE_syntax___flow___FlowContext___init[] = "flow::FlowContext::init";
387 void syntax___flow___FlowContext___init(val_t p0, val_t p1, val_t p2, int* init_table){
388 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_syntax___flow___FlowContext].i;
389 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
390 val_t tmp;
391 if (init_table[itpos0]) return;
392 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
393 fra.me.file = LOCATE_syntax___flow;
394 fra.me.line = 114;
395 fra.me.meth = LOCATE_syntax___flow___FlowContext___init;
396 fra.me.has_broke = 0;
397 fra.me.REG_size = 3;
398 fra.me.nitni_local_ref_head = NULL;
399 fra.me.REG[0] = NIT_NULL;
400 fra.me.REG[1] = NIT_NULL;
401 fra.me.REG[2] = NIT_NULL;
402 fra.me.REG[0] = p0;
403 fra.me.REG[1] = p1;
404 fra.me.REG[2] = p2;
405 /* syntax/flow.nit:116 */
406 ATTR_syntax___flow___FlowContext____visitor(fra.me.REG[0]) = fra.me.REG[1];
407 /* syntax/flow.nit:117 */
408 ATTR_syntax___flow___FlowContext____node(fra.me.REG[0]) = fra.me.REG[2];
409 stack_frame_head = fra.me.prev;
410 init_table[itpos0] = 1;
411 return;
412 }
413 static const char LOCATE_syntax___flow___FlowContext___unreash[] = "flow::FlowContext::unreash";
414 val_t syntax___flow___FlowContext___unreash(val_t p0){
415 struct {struct stack_frame_t me;} fra;
416 val_t REGB0;
417 val_t tmp;
418 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
419 fra.me.file = LOCATE_syntax___flow;
420 fra.me.line = 120;
421 fra.me.meth = LOCATE_syntax___flow___FlowContext___unreash;
422 fra.me.has_broke = 0;
423 fra.me.REG_size = 1;
424 fra.me.nitni_local_ref_head = NULL;
425 fra.me.REG[0] = NIT_NULL;
426 fra.me.REG[0] = p0;
427 /* syntax/flow.nit:120 */
428 REGB0 = TAG_Bool(ATTR_syntax___flow___FlowContext____unreash(fra.me.REG[0])!=NIT_NULL);
429 if (UNTAG_Bool(REGB0)) {
430 } else {
431 nit_abort("Uninitialized attribute %s", "_unreash", LOCATE_syntax___flow, 120);
432 }
433 REGB0 = ATTR_syntax___flow___FlowContext____unreash(fra.me.REG[0]);
434 stack_frame_head = fra.me.prev;
435 return REGB0;
436 }
437 static const char LOCATE_syntax___flow___FlowContext___already_unreash[] = "flow::FlowContext::already_unreash";
438 val_t syntax___flow___FlowContext___already_unreash(val_t p0){
439 struct {struct stack_frame_t me;} fra;
440 val_t REGB0;
441 val_t tmp;
442 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
443 fra.me.file = LOCATE_syntax___flow;
444 fra.me.line = 123;
445 fra.me.meth = LOCATE_syntax___flow___FlowContext___already_unreash;
446 fra.me.has_broke = 0;
447 fra.me.REG_size = 1;
448 fra.me.nitni_local_ref_head = NULL;
449 fra.me.REG[0] = NIT_NULL;
450 fra.me.REG[0] = p0;
451 /* syntax/flow.nit:123 */
452 REGB0 = TAG_Bool(ATTR_syntax___flow___FlowContext____already_unreash(fra.me.REG[0])!=NIT_NULL);
453 if (UNTAG_Bool(REGB0)) {
454 } else {
455 nit_abort("Uninitialized attribute %s", "_already_unreash", LOCATE_syntax___flow, 123);
456 }
457 REGB0 = ATTR_syntax___flow___FlowContext____already_unreash(fra.me.REG[0]);
458 stack_frame_head = fra.me.prev;
459 return REGB0;
460 }
461 static const char LOCATE_syntax___flow___FlowContext___already_unreash__eq[] = "flow::FlowContext::already_unreash=";
462 void syntax___flow___FlowContext___already_unreash__eq(val_t p0, val_t p1){
463 struct {struct stack_frame_t me;} fra;
464 val_t REGB0;
465 val_t tmp;
466 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
467 fra.me.file = LOCATE_syntax___flow;
468 fra.me.line = 123;
469 fra.me.meth = LOCATE_syntax___flow___FlowContext___already_unreash__eq;
470 fra.me.has_broke = 0;
471 fra.me.REG_size = 1;
472 fra.me.nitni_local_ref_head = NULL;
473 fra.me.REG[0] = NIT_NULL;
474 fra.me.REG[0] = p0;
475 REGB0 = p1;
476 /* syntax/flow.nit:123 */
477 ATTR_syntax___flow___FlowContext____already_unreash(fra.me.REG[0]) = REGB0;
478 stack_frame_head = fra.me.prev;
479 return;
480 }
481 static const char LOCATE_syntax___flow___FlowContext___set_variables[] = "flow::FlowContext::set_variables";
482 val_t syntax___flow___FlowContext___set_variables(val_t p0){
483 struct {struct stack_frame_t me;} fra;
484 val_t REGB0;
485 val_t tmp;
486 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
487 fra.me.file = LOCATE_syntax___flow;
488 fra.me.line = 127;
489 fra.me.meth = LOCATE_syntax___flow___FlowContext___set_variables;
490 fra.me.has_broke = 0;
491 fra.me.REG_size = 1;
492 fra.me.nitni_local_ref_head = NULL;
493 fra.me.REG[0] = NIT_NULL;
494 fra.me.REG[0] = p0;
495 /* syntax/flow.nit:127 */
496 REGB0 = TAG_Bool(ATTR_syntax___flow___FlowContext____set_variables(fra.me.REG[0])!=NIT_NULL);
497 if (UNTAG_Bool(REGB0)) {
498 } else {
499 nit_abort("Uninitialized attribute %s", "_set_variables", LOCATE_syntax___flow, 127);
500 }
501 fra.me.REG[0] = ATTR_syntax___flow___FlowContext____set_variables(fra.me.REG[0]);
502 stack_frame_head = fra.me.prev;
503 return fra.me.REG[0];
504 }
505 static const char LOCATE_syntax___flow___FlowContext___is_set[] = "flow::FlowContext::is_set";
506 val_t syntax___flow___FlowContext___is_set(val_t p0, val_t p1){
507 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
508 val_t REGB0;
509 val_t tmp;
510 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
511 fra.me.file = LOCATE_syntax___flow;
512 fra.me.line = 130;
513 fra.me.meth = LOCATE_syntax___flow___FlowContext___is_set;
514 fra.me.has_broke = 0;
515 fra.me.REG_size = 2;
516 fra.me.nitni_local_ref_head = NULL;
517 fra.me.REG[0] = NIT_NULL;
518 fra.me.REG[1] = NIT_NULL;
519 fra.me.REG[0] = p0;
520 fra.me.REG[1] = p1;
521 /* syntax/flow.nit:133 */
522 REGB0 = TAG_Bool(ATTR_syntax___flow___FlowContext____set_variables(fra.me.REG[0])!=NIT_NULL);
523 if (UNTAG_Bool(REGB0)) {
524 } else {
525 nit_abort("Uninitialized attribute %s", "_set_variables", LOCATE_syntax___flow, 133);
526 }
527 fra.me.REG[0] = ATTR_syntax___flow___FlowContext____set_variables(fra.me.REG[0]);
528 REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
529 goto label1;
530 label1: while(0);
531 stack_frame_head = fra.me.prev;
532 return REGB0;
533 }
534 static const char LOCATE_syntax___flow___RootFlowContext___init[] = "flow::RootFlowContext::init";
535 void syntax___flow___RootFlowContext___init(val_t p0, val_t p1, val_t p2, int* init_table){
536 int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_syntax___flow___RootFlowContext].i;
537 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
538 val_t tmp;
539 if (init_table[itpos1]) return;
540 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
541 fra.me.file = LOCATE_syntax___flow;
542 fra.me.line = 140;
543 fra.me.meth = LOCATE_syntax___flow___RootFlowContext___init;
544 fra.me.has_broke = 0;
545 fra.me.REG_size = 3;
546 fra.me.nitni_local_ref_head = NULL;
547 fra.me.REG[0] = NIT_NULL;
548 fra.me.REG[1] = NIT_NULL;
549 fra.me.REG[2] = NIT_NULL;
550 fra.me.REG[0] = p0;
551 fra.me.REG[1] = p1;
552 fra.me.REG[2] = p2;
553 /* syntax/flow.nit:142 */
554 CALL_syntax___flow___FlowContext___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
555 stack_frame_head = fra.me.prev;
556 init_table[itpos1] = 1;
557 return;
558 }
559 static const char LOCATE_syntax___flow___SubFlowContext___prev[] = "flow::SubFlowContext::prev";
560 val_t syntax___flow___SubFlowContext___prev(val_t p0){
561 struct {struct stack_frame_t me;} fra;
562 val_t REGB0;
563 val_t tmp;
564 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
565 fra.me.file = LOCATE_syntax___flow;
566 fra.me.line = 149;
567 fra.me.meth = LOCATE_syntax___flow___SubFlowContext___prev;
568 fra.me.has_broke = 0;
569 fra.me.REG_size = 1;
570 fra.me.nitni_local_ref_head = NULL;
571 fra.me.REG[0] = NIT_NULL;
572 fra.me.REG[0] = p0;
573 /* syntax/flow.nit:149 */
574 REGB0 = TAG_Bool(ATTR_syntax___flow___SubFlowContext____prev(fra.me.REG[0])!=NIT_NULL);
575 if (UNTAG_Bool(REGB0)) {
576 } else {
577 nit_abort("Uninitialized attribute %s", "_prev", LOCATE_syntax___flow, 149);
578 }
579 fra.me.REG[0] = ATTR_syntax___flow___SubFlowContext____prev(fra.me.REG[0]);
580 stack_frame_head = fra.me.prev;
581 return fra.me.REG[0];
582 }
583 static const char LOCATE_syntax___flow___SubFlowContext___is_set[] = "flow::SubFlowContext::(flow::FlowContext::is_set)";
584 val_t syntax___flow___SubFlowContext___is_set(val_t p0, val_t p1){
585 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
586 val_t REGB0;
587 val_t REGB1;
588 val_t tmp;
589 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
590 fra.me.file = LOCATE_syntax___flow;
591 fra.me.line = 151;
592 fra.me.meth = LOCATE_syntax___flow___SubFlowContext___is_set;
593 fra.me.has_broke = 0;
594 fra.me.REG_size = 3;
595 fra.me.nitni_local_ref_head = NULL;
596 fra.me.REG[0] = NIT_NULL;
597 fra.me.REG[1] = NIT_NULL;
598 fra.me.REG[2] = NIT_NULL;
599 fra.me.REG[0] = p0;
600 fra.me.REG[1] = p1;
601 /* syntax/flow.nit:153 */
602 REGB0 = TAG_Bool(ATTR_syntax___flow___FlowContext____set_variables(fra.me.REG[0])!=NIT_NULL);
603 if (UNTAG_Bool(REGB0)) {
604 } else {
605 nit_abort("Uninitialized attribute %s", "_set_variables", LOCATE_syntax___flow, 153);
606 }
607 fra.me.REG[2] = ATTR_syntax___flow___FlowContext____set_variables(fra.me.REG[0]);
608 REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
609 if (UNTAG_Bool(REGB0)) {
610 REGB0 = TAG_Bool(1);
611 } else {
612 REGB1 = TAG_Bool(ATTR_syntax___flow___SubFlowContext____prev(fra.me.REG[0])!=NIT_NULL);
613 if (UNTAG_Bool(REGB1)) {
614 } else {
615 nit_abort("Uninitialized attribute %s", "_prev", LOCATE_syntax___flow, 153);
616 }
617 fra.me.REG[0] = ATTR_syntax___flow___SubFlowContext____prev(fra.me.REG[0]);
618 REGB1 = CALL_syntax___flow___FlowContext___is_set(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
619 REGB0 = REGB1;
620 }
621 goto label1;
622 label1: while(0);
623 stack_frame_head = fra.me.prev;
624 return REGB0;
625 }
626 static const char LOCATE_syntax___flow___SubFlowContext___stype[] = "flow::SubFlowContext::(flow::FlowContext::stype)";
627 val_t syntax___flow___SubFlowContext___stype(val_t p0, val_t p1){
628 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
629 val_t tmp;
630 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
631 fra.me.file = LOCATE_syntax___flow;
632 fra.me.line = 156;
633 fra.me.meth = LOCATE_syntax___flow___SubFlowContext___stype;
634 fra.me.has_broke = 0;
635 fra.me.REG_size = 2;
636 fra.me.nitni_local_ref_head = NULL;
637 fra.me.REG[0] = NIT_NULL;
638 fra.me.REG[1] = NIT_NULL;
639 fra.me.REG[0] = p0;
640 fra.me.REG[1] = p1;
641 /* syntax/flow.nit:158 */
642 fra.me.REG[0] = CALL_syntax___flow___SubFlowContext___prev(fra.me.REG[0])(fra.me.REG[0]);
643 fra.me.REG[1] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
644 goto label1;
645 label1: while(0);
646 stack_frame_head = fra.me.prev;
647 return fra.me.REG[1];
648 }
649 static const char LOCATE_syntax___flow___SubFlowContext___with_prev[] = "flow::SubFlowContext::with_prev";
650 void syntax___flow___SubFlowContext___with_prev(val_t p0, val_t p1, val_t p2, int* init_table){
651 int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_syntax___flow___SubFlowContext].i;
652 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
653 val_t REGB0;
654 val_t tmp;
655 if (init_table[itpos2]) return;
656 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
657 fra.me.file = LOCATE_syntax___flow;
658 fra.me.line = 161;
659 fra.me.meth = LOCATE_syntax___flow___SubFlowContext___with_prev;
660 fra.me.has_broke = 0;
661 fra.me.REG_size = 4;
662 fra.me.nitni_local_ref_head = NULL;
663 fra.me.REG[0] = NIT_NULL;
664 fra.me.REG[1] = NIT_NULL;
665 fra.me.REG[2] = NIT_NULL;
666 fra.me.REG[3] = NIT_NULL;
667 fra.me.REG[0] = p0;
668 fra.me.REG[1] = p1;
669 fra.me.REG[2] = p2;
670 /* syntax/flow.nit:163 */
671 REGB0 = TAG_Bool(ATTR_syntax___flow___FlowContext____visitor(fra.me.REG[1])!=NIT_NULL);
672 if (UNTAG_Bool(REGB0)) {
673 } else {
674 nit_abort("Uninitialized attribute %s", "_visitor", LOCATE_syntax___flow, 163);
675 }
676 fra.me.REG[3] = ATTR_syntax___flow___FlowContext____visitor(fra.me.REG[1]);
677 CALL_syntax___flow___FlowContext___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3], fra.me.REG[2], init_table);
678 /* syntax/flow.nit:164 */
679 ATTR_syntax___flow___SubFlowContext____prev(fra.me.REG[0]) = fra.me.REG[1];
680 stack_frame_head = fra.me.prev;
681 init_table[itpos2] = 1;
682 return;
683 }
684 static const char LOCATE_syntax___flow___CastFlowContext___stype[] = "flow::CastFlowContext::(flow::FlowContext::stype)";
685 val_t syntax___flow___CastFlowContext___stype(val_t p0, val_t p1){
686 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
687 val_t REGB0;
688 val_t REGB1;
689 val_t tmp;
690 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
691 fra.me.file = LOCATE_syntax___flow;
692 fra.me.line = 177;
693 fra.me.meth = LOCATE_syntax___flow___CastFlowContext___stype;
694 fra.me.has_broke = 0;
695 fra.me.REG_size = 3;
696 fra.me.nitni_local_ref_head = NULL;
697 fra.me.REG[0] = NIT_NULL;
698 fra.me.REG[1] = NIT_NULL;
699 fra.me.REG[2] = NIT_NULL;
700 fra.me.REG[0] = p0;
701 fra.me.REG[1] = p1;
702 /* syntax/flow.nit:179 */
703 REGB0 = TAG_Bool(ATTR_syntax___flow___CastFlowContext____variable(fra.me.REG[0])!=NIT_NULL);
704 if (UNTAG_Bool(REGB0)) {
705 } else {
706 nit_abort("Uninitialized attribute %s", "_variable", LOCATE_syntax___flow, 179);
707 }
708 fra.me.REG[2] = ATTR_syntax___flow___CastFlowContext____variable(fra.me.REG[0]);
709 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[2]));
710 if (UNTAG_Bool(REGB0)) {
711 } else {
712 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
713 REGB0 = REGB1;
714 }
715 if (UNTAG_Bool(REGB0)) {
716 /* syntax/flow.nit:180 */
717 fra.me.REG[2] = ATTR_syntax___flow___CastFlowContext____stype(fra.me.REG[0]);
718 goto label1;
719 } else {
720 /* syntax/flow.nit:182 */
721 fra.me.REG[0] = CALL_syntax___flow___SubFlowContext___prev(fra.me.REG[0])(fra.me.REG[0]);
722 fra.me.REG[1] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
723 fra.me.REG[2] = fra.me.REG[1];
724 goto label1;
725 }
726 label1: while(0);
727 stack_frame_head = fra.me.prev;
728 return fra.me.REG[2];
729 }
730 static const char LOCATE_syntax___flow___CastFlowContext___init[] = "flow::CastFlowContext::init";
731 void syntax___flow___CastFlowContext___init(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
732 int itpos3 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_syntax___flow___CastFlowContext].i;
733 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
734 val_t tmp;
735 if (init_table[itpos3]) return;
736 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
737 fra.me.file = LOCATE_syntax___flow;
738 fra.me.line = 186;
739 fra.me.meth = LOCATE_syntax___flow___CastFlowContext___init;
740 fra.me.has_broke = 0;
741 fra.me.REG_size = 5;
742 fra.me.nitni_local_ref_head = NULL;
743 fra.me.REG[0] = NIT_NULL;
744 fra.me.REG[1] = NIT_NULL;
745 fra.me.REG[2] = NIT_NULL;
746 fra.me.REG[3] = NIT_NULL;
747 fra.me.REG[4] = NIT_NULL;
748 fra.me.REG[0] = p0;
749 fra.me.REG[1] = p1;
750 fra.me.REG[2] = p2;
751 fra.me.REG[3] = p3;
752 fra.me.REG[4] = p4;
753 /* syntax/flow.nit:188 */
754 CALL_syntax___flow___SubFlowContext___with_prev(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
755 /* syntax/flow.nit:189 */
756 ATTR_syntax___flow___CastFlowContext____variable(fra.me.REG[0]) = fra.me.REG[3];
757 /* syntax/flow.nit:190 */
758 ATTR_syntax___flow___CastFlowContext____stype(fra.me.REG[0]) = fra.me.REG[4];
759 stack_frame_head = fra.me.prev;
760 init_table[itpos3] = 1;
761 return;
762 }
763 static const char LOCATE_syntax___flow___MergeFlowContext___init[] = "flow::MergeFlowContext::init";
764 void syntax___flow___MergeFlowContext___init(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
765 int itpos4 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_syntax___flow___MergeFlowContext].i;
766 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
767 val_t REGB0;
768 val_t tmp;
769 if (init_table[itpos4]) return;
770 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
771 fra.me.file = LOCATE_syntax___flow;
772 fra.me.line = 204;
773 fra.me.meth = LOCATE_syntax___flow___MergeFlowContext___init;
774 fra.me.has_broke = 0;
775 fra.me.REG_size = 6;
776 fra.me.nitni_local_ref_head = NULL;
777 fra.me.REG[0] = NIT_NULL;
778 fra.me.REG[1] = NIT_NULL;
779 fra.me.REG[2] = NIT_NULL;
780 fra.me.REG[3] = NIT_NULL;
781 fra.me.REG[4] = NIT_NULL;
782 fra.me.REG[5] = NIT_NULL;
783 fra.me.REG[0] = p0;
784 fra.me.REG[1] = p1;
785 fra.me.REG[2] = p2;
786 fra.me.REG[3] = p3;
787 /* syntax/flow.nit:204 */
788 fra.me.REG[4] = fra.me.REG[0];
789 /* syntax/flow.nit:206 */
790 REGB0 = TAG_Bool(ATTR_syntax___flow___FlowContext____visitor(fra.me.REG[1])!=NIT_NULL);
791 if (UNTAG_Bool(REGB0)) {
792 } else {
793 nit_abort("Uninitialized attribute %s", "_visitor", LOCATE_syntax___flow, 206);
794 }
795 fra.me.REG[5] = ATTR_syntax___flow___FlowContext____visitor(fra.me.REG[1]);
796 CALL_syntax___flow___FlowContext___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[2], init_table);
797 /* syntax/flow.nit:207 */
798 ATTR_syntax___flow___MergeFlowContext____alts(fra.me.REG[4]) = fra.me.REG[3];
799 /* syntax/flow.nit:208 */
800 ATTR_syntax___flow___MergeFlowContext____base(fra.me.REG[4]) = fra.me.REG[1];
801 stack_frame_head = fra.me.prev;
802 init_table[itpos4] = 1;
803 return;
804 }
805 static const char LOCATE_syntax___flow___MergeFlowContext___stype[] = "flow::MergeFlowContext::(flow::FlowContext::stype)";
806 val_t syntax___flow___MergeFlowContext___stype(val_t p0, val_t p1){
807 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
808 val_t REGB0;
809 val_t tmp;
810 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
811 fra.me.file = LOCATE_syntax___flow;
812 fra.me.line = 211;
813 fra.me.meth = LOCATE_syntax___flow___MergeFlowContext___stype;
814 fra.me.has_broke = 0;
815 fra.me.REG_size = 4;
816 fra.me.nitni_local_ref_head = NULL;
817 fra.me.REG[0] = NIT_NULL;
818 fra.me.REG[1] = NIT_NULL;
819 fra.me.REG[2] = NIT_NULL;
820 fra.me.REG[3] = NIT_NULL;
821 fra.me.REG[0] = p0;
822 fra.me.REG[1] = p1;
823 /* syntax/flow.nit:213 */
824 REGB0 = TAG_Bool(ATTR_syntax___flow___MergeFlowContext____stypes(fra.me.REG[0])!=NIT_NULL);
825 if (UNTAG_Bool(REGB0)) {
826 } else {
827 nit_abort("Uninitialized attribute %s", "_stypes", LOCATE_syntax___flow, 213);
828 }
829 fra.me.REG[2] = ATTR_syntax___flow___MergeFlowContext____stypes(fra.me.REG[0]);
830 REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
831 if (UNTAG_Bool(REGB0)) {
832 /* syntax/flow.nit:214 */
833 REGB0 = TAG_Bool(ATTR_syntax___flow___MergeFlowContext____stypes(fra.me.REG[0])!=NIT_NULL);
834 if (UNTAG_Bool(REGB0)) {
835 } else {
836 nit_abort("Uninitialized attribute %s", "_stypes", LOCATE_syntax___flow, 214);
837 }
838 fra.me.REG[2] = ATTR_syntax___flow___MergeFlowContext____stypes(fra.me.REG[0]);
839 fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
840 goto label1;
841 } else {
842 /* syntax/flow.nit:216 */
843 fra.me.REG[3] = CALL_syntax___flow___MergeFlowContext___merge_stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
844 /* syntax/flow.nit:217 */
845 REGB0 = TAG_Bool(ATTR_syntax___flow___MergeFlowContext____stypes(fra.me.REG[0])!=NIT_NULL);
846 if (UNTAG_Bool(REGB0)) {
847 } else {
848 nit_abort("Uninitialized attribute %s", "_stypes", LOCATE_syntax___flow, 217);
849 }
850 fra.me.REG[0] = ATTR_syntax___flow___MergeFlowContext____stypes(fra.me.REG[0]);
851 CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3]);
852 /* syntax/flow.nit:218 */
853 fra.me.REG[2] = fra.me.REG[3];
854 goto label1;
855 }
856 label1: while(0);
857 stack_frame_head = fra.me.prev;
858 return fra.me.REG[2];
859 }
860 static const char LOCATE_syntax___flow___MergeFlowContext___merge_stype[] = "flow::MergeFlowContext::merge_stype";
861 val_t syntax___flow___MergeFlowContext___merge_stype(val_t p0, val_t p1){
862 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
863 val_t REGB0;
864 val_t REGB1;
865 val_t REGB2;
866 val_t REGB3;
867 val_t tmp;
868 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
869 fra.me.file = LOCATE_syntax___flow;
870 fra.me.line = 222;
871 fra.me.meth = LOCATE_syntax___flow___MergeFlowContext___merge_stype;
872 fra.me.has_broke = 0;
873 fra.me.REG_size = 9;
874 fra.me.nitni_local_ref_head = NULL;
875 fra.me.REG[0] = NIT_NULL;
876 fra.me.REG[1] = NIT_NULL;
877 fra.me.REG[2] = NIT_NULL;
878 fra.me.REG[3] = NIT_NULL;
879 fra.me.REG[4] = NIT_NULL;
880 fra.me.REG[5] = NIT_NULL;
881 fra.me.REG[6] = NIT_NULL;
882 fra.me.REG[7] = NIT_NULL;
883 fra.me.REG[8] = NIT_NULL;
884 fra.me.REG[0] = p0;
885 fra.me.REG[1] = p1;
886 /* syntax/flow.nit:224 */
887 fra.me.REG[2] = NIT_NULL;
888 /* syntax/flow.nit:225 */
889 REGB0 = TAG_Bool(0);
890 /* syntax/flow.nit:226 */
891 REGB1 = TAG_Bool(ATTR_syntax___flow___MergeFlowContext____alts(fra.me.REG[0])!=NIT_NULL);
892 if (UNTAG_Bool(REGB1)) {
893 } else {
894 nit_abort("Uninitialized attribute %s", "_alts", LOCATE_syntax___flow, 226);
895 }
896 fra.me.REG[3] = ATTR_syntax___flow___MergeFlowContext____alts(fra.me.REG[0]);
897 fra.me.REG[3] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[3])(fra.me.REG[3]);
898 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
899 if (UNTAG_Bool(REGB1)) {
900 nit_abort("Reciever is null", NULL, LOCATE_syntax___flow, 226);
901 }
902 fra.me.REG[3] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
903 /* syntax/flow.nit:227 */
904 REGB1 = TAG_Bool(ATTR_syntax___flow___MergeFlowContext____alts(fra.me.REG[0])!=NIT_NULL);
905 if (UNTAG_Bool(REGB1)) {
906 } else {
907 nit_abort("Uninitialized attribute %s", "_alts", LOCATE_syntax___flow, 227);
908 }
909 fra.me.REG[4] = ATTR_syntax___flow___MergeFlowContext____alts(fra.me.REG[0]);
910 /* ../lib/standard/collection/array.nit:269 */
911 REGB1 = TAG_Int(0);
912 /* ../lib/standard/collection/array.nit:270 */
913 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
914 if (UNTAG_Bool(REGB2)) {
915 } else {
916 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
917 }
918 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
919 /* ../lib/standard/collection/array.nit:271 */
920 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
921 /* ../lib/standard/collection/array.nit:272 */
922 while(1) {
923 /* ../lib/standard/collection/array.nit:24 */
924 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
925 if (UNTAG_Bool(REGB2)) {
926 } else {
927 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
928 }
929 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
930 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
931 if (UNTAG_Bool(REGB3)) {
932 } else {
933 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
934 }
935 /* ../lib/standard/kernel.nit:235 */
936 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
937 /* ../lib/standard/collection/array.nit:272 */
938 if (UNTAG_Bool(REGB2)) {
939 /* ../lib/standard/collection/array.nit:273 */
940 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
941 if (UNTAG_Bool(REGB2)) {
942 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
943 }
944 /* ../lib/standard/collection/array.nit:724 */
945 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB1)];
946 /* syntax/flow.nit:228 */
947 fra.me.REG[6] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1]);
948 /* syntax/flow.nit:229 */
949 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
950 if (UNTAG_Bool(REGB2)) {
951 } else {
952 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
953 if (UNTAG_Bool(REGB3)) {
954 REGB3 = TAG_Bool(0);
955 REGB2 = REGB3;
956 } else {
957 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
958 REGB2 = REGB3;
959 }
960 }
961 if (UNTAG_Bool(REGB2)) {
962 /* syntax/flow.nit:230 */
963 fra.me.REG[7] = NIT_NULL;
964 goto label1;
965 }
966 /* syntax/flow.nit:232 */
967 REGB2 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[6],fra.me.REG[3]));
968 if (UNTAG_Bool(REGB2)) {
969 } else {
970 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
971 if (UNTAG_Bool(REGB3)) {
972 REGB3 = TAG_Bool(0);
973 REGB2 = REGB3;
974 } else {
975 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
976 REGB2 = REGB3;
977 }
978 }
979 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
980 if (UNTAG_Bool(REGB2)) {
981 /* syntax/flow.nit:233 */
982 fra.me.REG[3] = NIT_NULL;
983 }
984 /* syntax/flow.nit:235 */
985 REGB2 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
986 if (UNTAG_Bool(REGB2)) {
987 /* syntax/flow.nit:236 */
988 REGB2 = TAG_Bool(1);
989 REGB0 = REGB2;
990 /* syntax/flow.nit:237 */
991 goto label2;
992 }
993 /* syntax/flow.nit:239 */
994 REGB2 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_metamodel___static_type___MMNullableType, ID_metamodel___static_type___MMNullableType)) /*cast MMNullableType*/;
995 if (UNTAG_Bool(REGB2)) {
996 /* syntax/flow.nit:240 */
997 REGB2 = TAG_Bool(1);
998 REGB0 = REGB2;
999 /* syntax/flow.nit:241 */
1000 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
1001 if (UNTAG_Bool(REGB2)) {
1002 nit_abort("Reciever is null", NULL, LOCATE_syntax___flow, 241);
1003 }
1004 fra.me.REG[8] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[6])(fra.me.REG[6]);
1005 fra.me.REG[6] = fra.me.REG[8];
1006 }
1007 /* syntax/flow.nit:243 */
1008 REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1009 if (UNTAG_Bool(REGB2)) {
1010 } else {
1011 REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1012 if (UNTAG_Bool(REGB3)) {
1013 REGB3 = TAG_Bool(0);
1014 REGB2 = REGB3;
1015 } else {
1016 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
1017 REGB2 = REGB3;
1018 }
1019 }
1020 if (UNTAG_Bool(REGB2)) {
1021 REGB2 = TAG_Bool(1);
1022 } else {
1023 REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1024 if (UNTAG_Bool(REGB3)) {
1025 nit_abort("Reciever is null", NULL, LOCATE_syntax___flow, 243);
1026 }
1027 REGB3 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
1028 REGB2 = REGB3;
1029 }
1030 if (UNTAG_Bool(REGB2)) {
1031 /* syntax/flow.nit:244 */
1032 fra.me.REG[2] = fra.me.REG[6];
1033 }
1034 label2: while(0);
1035 /* ../lib/standard/collection/array.nit:274 */
1036 REGB2 = TAG_Int(1);
1037 /* ../lib/standard/kernel.nit:238 */
1038 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
1039 /* ../lib/standard/collection/array.nit:274 */
1040 REGB1 = REGB2;
1041 } else {
1042 /* ../lib/standard/collection/array.nit:272 */
1043 goto label3;
1044 }
1045 }
1046 label3: while(0);
1047 /* syntax/flow.nit:247 */
1048 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1049 if (UNTAG_Bool(REGB1)) {
1050 } else {
1051 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1052 if (UNTAG_Bool(REGB2)) {
1053 REGB2 = TAG_Bool(0);
1054 REGB1 = REGB2;
1055 } else {
1056 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
1057 REGB1 = REGB2;
1058 }
1059 }
1060 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
1061 if (UNTAG_Bool(REGB1)) {
1062 /* syntax/flow.nit:248 */
1063 fra.me.REG[7] = fra.me.REG[3];
1064 goto label1;
1065 }
1066 /* syntax/flow.nit:250 */
1067 if (UNTAG_Bool(REGB0)) {
1068 /* syntax/flow.nit:251 */
1069 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1070 if (UNTAG_Bool(REGB0)) {
1071 } else {
1072 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1073 if (UNTAG_Bool(REGB1)) {
1074 REGB1 = TAG_Bool(0);
1075 REGB0 = REGB1;
1076 } else {
1077 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
1078 REGB0 = REGB1;
1079 }
1080 }
1081 if (UNTAG_Bool(REGB0)) {
1082 /* syntax/flow.nit:252 */
1083 REGB0 = TAG_Bool(ATTR_syntax___flow___FlowContext____visitor(fra.me.REG[0])!=NIT_NULL);
1084 if (UNTAG_Bool(REGB0)) {
1085 } else {
1086 nit_abort("Uninitialized attribute %s", "_visitor", LOCATE_syntax___flow, 252);
1087 }
1088 fra.me.REG[3] = ATTR_syntax___flow___FlowContext____visitor(fra.me.REG[0]);
1089 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[3])(fra.me.REG[3]);
1090 fra.me.REG[7] = fra.me.REG[3];
1091 goto label1;
1092 } else {
1093 /* syntax/flow.nit:254 */
1094 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1095 if (UNTAG_Bool(REGB0)) {
1096 nit_abort("Reciever is null", NULL, LOCATE_syntax___flow, 254);
1097 }
1098 fra.me.REG[3] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[2])(fra.me.REG[2]);
1099 fra.me.REG[2] = fra.me.REG[3];
1100 }
1101 }
1102 /* syntax/flow.nit:257 */
1103 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1104 if (UNTAG_Bool(REGB0)) {
1105 } else {
1106 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1107 if (UNTAG_Bool(REGB1)) {
1108 REGB1 = TAG_Bool(0);
1109 REGB0 = REGB1;
1110 } else {
1111 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
1112 REGB0 = REGB1;
1113 }
1114 }
1115 if (UNTAG_Bool(REGB0)) {
1116 /* syntax/flow.nit:258 */
1117 REGB0 = TAG_Bool(ATTR_syntax___flow___MergeFlowContext____base(fra.me.REG[0])!=NIT_NULL);
1118 if (UNTAG_Bool(REGB0)) {
1119 } else {
1120 nit_abort("Uninitialized attribute %s", "_base", LOCATE_syntax___flow, 258);
1121 }
1122 fra.me.REG[3] = ATTR_syntax___flow___MergeFlowContext____base(fra.me.REG[0]);
1123 fra.me.REG[3] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
1124 fra.me.REG[7] = fra.me.REG[3];
1125 goto label1;
1126 } else {
1127 /* syntax/flow.nit:260 */
1128 REGB0 = TAG_Bool(ATTR_syntax___flow___MergeFlowContext____alts(fra.me.REG[0])!=NIT_NULL);
1129 if (UNTAG_Bool(REGB0)) {
1130 } else {
1131 nit_abort("Uninitialized attribute %s", "_alts", LOCATE_syntax___flow, 260);
1132 }
1133 fra.me.REG[3] = ATTR_syntax___flow___MergeFlowContext____alts(fra.me.REG[0]);
1134 /* ../lib/standard/collection/array.nit:269 */
1135 REGB0 = TAG_Int(0);
1136 /* ../lib/standard/collection/array.nit:270 */
1137 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
1138 if (UNTAG_Bool(REGB1)) {
1139 } else {
1140 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
1141 }
1142 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
1143 /* ../lib/standard/collection/array.nit:271 */
1144 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
1145 /* ../lib/standard/collection/array.nit:272 */
1146 while(1) {
1147 /* ../lib/standard/collection/array.nit:24 */
1148 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
1149 if (UNTAG_Bool(REGB1)) {
1150 } else {
1151 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1152 }
1153 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
1154 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1155 if (UNTAG_Bool(REGB2)) {
1156 } else {
1157 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1158 }
1159 /* ../lib/standard/kernel.nit:235 */
1160 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1161 /* ../lib/standard/collection/array.nit:272 */
1162 if (UNTAG_Bool(REGB1)) {
1163 /* ../lib/standard/collection/array.nit:273 */
1164 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1165 if (UNTAG_Bool(REGB1)) {
1166 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
1167 }
1168 /* ../lib/standard/collection/array.nit:724 */
1169 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
1170 /* syntax/flow.nit:261 */
1171 fra.me.REG[4] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
1172 /* syntax/flow.nit:262 */
1173 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1174 if (UNTAG_Bool(REGB1)) {
1175 nit_abort("Reciever is null", NULL, LOCATE_syntax___flow, 262);
1176 }
1177 REGB1 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
1178 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
1179 if (UNTAG_Bool(REGB1)) {
1180 /* syntax/flow.nit:263 */
1181 REGB1 = TAG_Bool(ATTR_syntax___flow___MergeFlowContext____base(fra.me.REG[0])!=NIT_NULL);
1182 if (UNTAG_Bool(REGB1)) {
1183 } else {
1184 nit_abort("Uninitialized attribute %s", "_base", LOCATE_syntax___flow, 263);
1185 }
1186 fra.me.REG[4] = ATTR_syntax___flow___MergeFlowContext____base(fra.me.REG[0]);
1187 fra.me.REG[4] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
1188 fra.me.REG[7] = fra.me.REG[4];
1189 goto label1;
1190 }
1191 /* ../lib/standard/collection/array.nit:274 */
1192 REGB1 = TAG_Int(1);
1193 /* ../lib/standard/kernel.nit:238 */
1194 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
1195 /* ../lib/standard/collection/array.nit:274 */
1196 REGB0 = REGB1;
1197 } else {
1198 /* ../lib/standard/collection/array.nit:272 */
1199 goto label4;
1200 }
1201 }
1202 label4: while(0);
1203 }
1204 /* syntax/flow.nit:267 */
1205 fra.me.REG[7] = fra.me.REG[2];
1206 goto label1;
1207 label1: while(0);
1208 stack_frame_head = fra.me.prev;
1209 return fra.me.REG[7];
1210 }
1211 static const char LOCATE_syntax___flow___MergeFlowContext___is_set[] = "flow::MergeFlowContext::(flow::FlowContext::is_set)";
1212 val_t syntax___flow___MergeFlowContext___is_set(val_t p0, val_t p1){
1213 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1214 val_t REGB0;
1215 val_t REGB1;
1216 val_t REGB2;
1217 val_t REGB3;
1218 val_t tmp;
1219 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1220 fra.me.file = LOCATE_syntax___flow;
1221 fra.me.line = 270;
1222 fra.me.meth = LOCATE_syntax___flow___MergeFlowContext___is_set;
1223 fra.me.has_broke = 0;
1224 fra.me.REG_size = 5;
1225 fra.me.nitni_local_ref_head = NULL;
1226 fra.me.REG[0] = NIT_NULL;
1227 fra.me.REG[1] = NIT_NULL;
1228 fra.me.REG[2] = NIT_NULL;
1229 fra.me.REG[3] = NIT_NULL;
1230 fra.me.REG[4] = NIT_NULL;
1231 fra.me.REG[0] = p0;
1232 fra.me.REG[1] = p1;
1233 /* syntax/flow.nit:272 */
1234 REGB0 = TAG_Bool(ATTR_syntax___flow___FlowContext____set_variables(fra.me.REG[0])!=NIT_NULL);
1235 if (UNTAG_Bool(REGB0)) {
1236 } else {
1237 nit_abort("Uninitialized attribute %s", "_set_variables", LOCATE_syntax___flow, 272);
1238 }
1239 fra.me.REG[2] = ATTR_syntax___flow___FlowContext____set_variables(fra.me.REG[0]);
1240 REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
1241 if (UNTAG_Bool(REGB0)) {
1242 /* syntax/flow.nit:273 */
1243 REGB0 = TAG_Bool(1);
1244 goto label1;
1245 } else {
1246 /* syntax/flow.nit:275 */
1247 REGB1 = TAG_Bool(ATTR_syntax___flow___MergeFlowContext____alts(fra.me.REG[0])!=NIT_NULL);
1248 if (UNTAG_Bool(REGB1)) {
1249 } else {
1250 nit_abort("Uninitialized attribute %s", "_alts", LOCATE_syntax___flow, 275);
1251 }
1252 fra.me.REG[2] = ATTR_syntax___flow___MergeFlowContext____alts(fra.me.REG[0]);
1253 /* ../lib/standard/collection/array.nit:269 */
1254 REGB1 = TAG_Int(0);
1255 /* ../lib/standard/collection/array.nit:270 */
1256 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
1257 if (UNTAG_Bool(REGB2)) {
1258 } else {
1259 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
1260 }
1261 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
1262 /* ../lib/standard/collection/array.nit:271 */
1263 fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
1264 /* ../lib/standard/collection/array.nit:272 */
1265 while(1) {
1266 /* ../lib/standard/collection/array.nit:24 */
1267 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
1268 if (UNTAG_Bool(REGB2)) {
1269 } else {
1270 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1271 }
1272 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
1273 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
1274 if (UNTAG_Bool(REGB3)) {
1275 } else {
1276 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1277 }
1278 /* ../lib/standard/kernel.nit:235 */
1279 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
1280 /* ../lib/standard/collection/array.nit:272 */
1281 if (UNTAG_Bool(REGB2)) {
1282 /* ../lib/standard/collection/array.nit:273 */
1283 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1284 if (UNTAG_Bool(REGB2)) {
1285 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
1286 }
1287 /* ../lib/standard/collection/array.nit:724 */
1288 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB1)];
1289 /* syntax/flow.nit:276 */
1290 REGB2 = CALL_syntax___flow___FlowContext___is_set(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
1291 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
1292 if (UNTAG_Bool(REGB2)) {
1293 /* syntax/flow.nit:277 */
1294 REGB2 = TAG_Bool(0);
1295 REGB0 = REGB2;
1296 goto label1;
1297 }
1298 /* ../lib/standard/collection/array.nit:274 */
1299 REGB2 = TAG_Int(1);
1300 /* ../lib/standard/kernel.nit:238 */
1301 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
1302 /* ../lib/standard/collection/array.nit:274 */
1303 REGB1 = REGB2;
1304 } else {
1305 /* ../lib/standard/collection/array.nit:272 */
1306 goto label2;
1307 }
1308 }
1309 label2: while(0);
1310 /* syntax/flow.nit:280 */
1311 REGB1 = TAG_Bool(ATTR_syntax___flow___FlowContext____set_variables(fra.me.REG[0])!=NIT_NULL);
1312 if (UNTAG_Bool(REGB1)) {
1313 } else {
1314 nit_abort("Uninitialized attribute %s", "_set_variables", LOCATE_syntax___flow, 280);
1315 }
1316 fra.me.REG[0] = ATTR_syntax___flow___FlowContext____set_variables(fra.me.REG[0]);
1317 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1318 /* syntax/flow.nit:281 */
1319 REGB1 = TAG_Bool(1);
1320 REGB0 = REGB1;
1321 goto label1;
1322 }
1323 label1: while(0);
1324 stack_frame_head = fra.me.prev;
1325 return REGB0;
1326 }
1327 static const char LOCATE_syntax___flow___Variable___must_be_set[] = "flow::Variable::must_be_set";
1328 val_t syntax___flow___Variable___must_be_set(val_t p0){
1329 struct {struct stack_frame_t me;} fra;
1330 val_t REGB0;
1331 val_t tmp;
1332 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1333 fra.me.file = LOCATE_syntax___flow;
1334 fra.me.line = 288;
1335 fra.me.meth = LOCATE_syntax___flow___Variable___must_be_set;
1336 fra.me.has_broke = 0;
1337 fra.me.REG_size = 1;
1338 fra.me.nitni_local_ref_head = NULL;
1339 fra.me.REG[0] = NIT_NULL;
1340 fra.me.REG[0] = p0;
1341 /* syntax/flow.nit:289 */
1342 REGB0 = TAG_Bool(0);
1343 goto label1;
1344 label1: while(0);
1345 stack_frame_head = fra.me.prev;
1346 return REGB0;
1347 }
1348 static const char LOCATE_syntax___flow___VarVariable___must_be_set[] = "flow::VarVariable::(flow::Variable::must_be_set)";
1349 val_t syntax___flow___VarVariable___must_be_set(val_t p0){
1350 struct {struct stack_frame_t me;} fra;
1351 val_t REGB0;
1352 val_t tmp;
1353 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1354 fra.me.file = LOCATE_syntax___flow;
1355 fra.me.line = 293;
1356 fra.me.meth = LOCATE_syntax___flow___VarVariable___must_be_set;
1357 fra.me.has_broke = 0;
1358 fra.me.REG_size = 1;
1359 fra.me.nitni_local_ref_head = NULL;
1360 fra.me.REG[0] = NIT_NULL;
1361 fra.me.REG[0] = p0;
1362 /* syntax/flow.nit:293 */
1363 REGB0 = TAG_Bool(1);
1364 goto label1;
1365 label1: while(0);
1366 stack_frame_head = fra.me.prev;
1367 return REGB0;
1368 }