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