c_src: Fix uname in Makefile
[nit.git] / c_src / flow.sep.1.c
1 #include "flow.sep.0.h"
2 /* method flow#ToolContext#flow_phase for (self: ToolContext): Phase */
3 val* flow__ToolContext__flow_phase(val* self) {
4 val* var /* : Phase */;
5 val* var1 /* : Phase */;
6 var1 = self->attrs[COLOR_flow__ToolContext___flow_phase].val; /* _flow_phase on <self:ToolContext> */
7 if (unlikely(var1 == NULL)) {
8 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flow_phase");
9 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 26);
10 show_backtrace(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method flow#ToolContext#flow_phase for (self: Object): Phase */
17 val* VIRTUAL_flow__ToolContext__flow_phase(val* self) {
18 val* var /* : Phase */;
19 val* var1 /* : Phase */;
20 val* var3 /* : Phase */;
21 { /* Inline flow#ToolContext#flow_phase (self) on <self:Object(ToolContext)> */
22 var3 = self->attrs[COLOR_flow__ToolContext___flow_phase].val; /* _flow_phase on <self:Object(ToolContext)> */
23 if (unlikely(var3 == NULL)) {
24 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flow_phase");
25 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 26);
26 show_backtrace(1);
27 }
28 var1 = var3;
29 RET_LABEL2:(void)0;
30 }
31 var = var1;
32 RET_LABEL:;
33 return var;
34 }
35 /* method flow#FlowPhase#process_npropdef for (self: FlowPhase, APropdef) */
36 void flow__FlowPhase__process_npropdef(val* self, val* p0) {
37 val* var_npropdef /* var npropdef: APropdef */;
38 val* var /* : ToolContext */;
39 val* var2 /* : ToolContext */;
40 var_npropdef = p0;
41 {
42 { /* Inline phase#Phase#toolcontext (self) on <self:FlowPhase> */
43 var2 = self->attrs[COLOR_phase__Phase___toolcontext].val; /* _toolcontext on <self:FlowPhase> */
44 if (unlikely(var2 == NULL)) {
45 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
46 PRINT_ERROR(" (%s:%d)\n", "src/phase.nit", 145);
47 show_backtrace(1);
48 }
49 var = var2;
50 RET_LABEL1:(void)0;
51 }
52 }
53 {
54 flow__APropdef__do_flow(var_npropdef, var); /* Direct call flow#APropdef#do_flow on <var_npropdef:APropdef>*/
55 }
56 RET_LABEL:;
57 }
58 /* method flow#FlowPhase#process_npropdef for (self: Object, APropdef) */
59 void VIRTUAL_flow__FlowPhase__process_npropdef(val* self, val* p0) {
60 flow__FlowPhase__process_npropdef(self, p0); /* Direct call flow#FlowPhase#process_npropdef on <self:Object(FlowPhase)>*/
61 RET_LABEL:;
62 }
63 /* method flow#FlowVisitor#current_flow_context for (self: FlowVisitor): FlowContext */
64 val* flow__FlowVisitor__current_flow_context(val* self) {
65 val* var /* : FlowContext */;
66 val* var1 /* : FlowContext */;
67 var1 = self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
68 if (unlikely(var1 == NULL)) {
69 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
70 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 39);
71 show_backtrace(1);
72 }
73 var = var1;
74 RET_LABEL:;
75 return var;
76 }
77 /* method flow#FlowVisitor#current_flow_context for (self: Object): FlowContext */
78 val* VIRTUAL_flow__FlowVisitor__current_flow_context(val* self) {
79 val* var /* : FlowContext */;
80 val* var1 /* : FlowContext */;
81 val* var3 /* : FlowContext */;
82 { /* Inline flow#FlowVisitor#current_flow_context (self) on <self:Object(FlowVisitor)> */
83 var3 = self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:Object(FlowVisitor)> */
84 if (unlikely(var3 == NULL)) {
85 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
86 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 39);
87 show_backtrace(1);
88 }
89 var1 = var3;
90 RET_LABEL2:(void)0;
91 }
92 var = var1;
93 RET_LABEL:;
94 return var;
95 }
96 /* method flow#FlowVisitor#current_flow_context= for (self: FlowVisitor, FlowContext) */
97 void flow__FlowVisitor__current_flow_context_61d(val* self, val* p0) {
98 self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = p0; /* _current_flow_context on <self:FlowVisitor> */
99 RET_LABEL:;
100 }
101 /* method flow#FlowVisitor#current_flow_context= for (self: Object, FlowContext) */
102 void VIRTUAL_flow__FlowVisitor__current_flow_context_61d(val* self, val* p0) {
103 { /* Inline flow#FlowVisitor#current_flow_context= (self,p0) on <self:Object(FlowVisitor)> */
104 self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = p0; /* _current_flow_context on <self:Object(FlowVisitor)> */
105 RET_LABEL1:(void)0;
106 }
107 RET_LABEL:;
108 }
109 /* method flow#FlowVisitor#toolcontext for (self: FlowVisitor): ToolContext */
110 val* flow__FlowVisitor__toolcontext(val* self) {
111 val* var /* : ToolContext */;
112 val* var1 /* : ToolContext */;
113 var1 = self->attrs[COLOR_flow__FlowVisitor___toolcontext].val; /* _toolcontext on <self:FlowVisitor> */
114 if (unlikely(var1 == NULL)) {
115 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
116 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 41);
117 show_backtrace(1);
118 }
119 var = var1;
120 RET_LABEL:;
121 return var;
122 }
123 /* method flow#FlowVisitor#toolcontext for (self: Object): ToolContext */
124 val* VIRTUAL_flow__FlowVisitor__toolcontext(val* self) {
125 val* var /* : ToolContext */;
126 val* var1 /* : ToolContext */;
127 val* var3 /* : ToolContext */;
128 { /* Inline flow#FlowVisitor#toolcontext (self) on <self:Object(FlowVisitor)> */
129 var3 = self->attrs[COLOR_flow__FlowVisitor___toolcontext].val; /* _toolcontext on <self:Object(FlowVisitor)> */
130 if (unlikely(var3 == NULL)) {
131 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
132 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 41);
133 show_backtrace(1);
134 }
135 var1 = var3;
136 RET_LABEL2:(void)0;
137 }
138 var = var1;
139 RET_LABEL:;
140 return var;
141 }
142 /* method flow#FlowVisitor#toolcontext= for (self: FlowVisitor, ToolContext) */
143 void flow__FlowVisitor__toolcontext_61d(val* self, val* p0) {
144 self->attrs[COLOR_flow__FlowVisitor___toolcontext].val = p0; /* _toolcontext on <self:FlowVisitor> */
145 RET_LABEL:;
146 }
147 /* method flow#FlowVisitor#toolcontext= for (self: Object, ToolContext) */
148 void VIRTUAL_flow__FlowVisitor__toolcontext_61d(val* self, val* p0) {
149 { /* Inline flow#FlowVisitor#toolcontext= (self,p0) on <self:Object(FlowVisitor)> */
150 self->attrs[COLOR_flow__FlowVisitor___toolcontext].val = p0; /* _toolcontext on <self:Object(FlowVisitor)> */
151 RET_LABEL1:(void)0;
152 }
153 RET_LABEL:;
154 }
155 /* method flow#FlowVisitor#init for (self: FlowVisitor, ToolContext) */
156 void flow__FlowVisitor__init(val* self, val* p0) {
157 val* var_toolcontext /* var toolcontext: ToolContext */;
158 val* var /* : FlowContext */;
159 val* var5 /* : Array[FlowContext] */;
160 val* var7 /* : Array[FlowContext] */;
161 val* var8 /* : FlowContext */;
162 val* var10 /* : FlowContext */;
163 val* var11 /* : FlowContext */;
164 val* var13 /* : FlowContext */;
165 short int var14 /* : Bool */;
166 {
167 { /* Inline parser_nodes#Visitor#init (self) on <self:FlowVisitor> */
168 RET_LABEL1:(void)0;
169 }
170 }
171 var_toolcontext = p0;
172 {
173 { /* Inline flow#FlowVisitor#toolcontext= (self,var_toolcontext) on <self:FlowVisitor> */
174 self->attrs[COLOR_flow__FlowVisitor___toolcontext].val = var_toolcontext; /* _toolcontext on <self:FlowVisitor> */
175 RET_LABEL2:(void)0;
176 }
177 }
178 var = NEW_flow__FlowContext(&type_flow__FlowContext);
179 {
180 { /* Inline flow#FlowContext#init (var) on <var:FlowContext> */
181 RET_LABEL3:(void)0;
182 }
183 }
184 {
185 { /* Inline flow#FlowVisitor#current_flow_context= (self,var) on <self:FlowVisitor> */
186 self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var; /* _current_flow_context on <self:FlowVisitor> */
187 RET_LABEL4:(void)0;
188 }
189 }
190 {
191 { /* Inline flow#FlowVisitor#flows (self) on <self:FlowVisitor> */
192 var7 = self->attrs[COLOR_flow__FlowVisitor___flows].val; /* _flows on <self:FlowVisitor> */
193 if (unlikely(var7 == NULL)) {
194 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows");
195 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 80);
196 show_backtrace(1);
197 }
198 var5 = var7;
199 RET_LABEL6:(void)0;
200 }
201 }
202 {
203 { /* Inline flow#FlowVisitor#current_flow_context (self) on <self:FlowVisitor> */
204 var10 = self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
205 if (unlikely(var10 == NULL)) {
206 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
207 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 39);
208 show_backtrace(1);
209 }
210 var8 = var10;
211 RET_LABEL9:(void)0;
212 }
213 }
214 {
215 array__Array__add(var5, var8); /* Direct call array#Array#add on <var5:Array[FlowContext]>*/
216 }
217 {
218 { /* Inline flow#FlowVisitor#current_flow_context (self) on <self:FlowVisitor> */
219 var13 = self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
220 if (unlikely(var13 == NULL)) {
221 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
222 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 39);
223 show_backtrace(1);
224 }
225 var11 = var13;
226 RET_LABEL12:(void)0;
227 }
228 }
229 var14 = 1;
230 {
231 { /* Inline flow#FlowContext#is_start= (var11,var14) on <var11:FlowContext> */
232 var11->attrs[COLOR_flow__FlowContext___is_start].s = var14; /* _is_start on <var11:FlowContext> */
233 RET_LABEL15:(void)0;
234 }
235 }
236 RET_LABEL:;
237 }
238 /* method flow#FlowVisitor#init for (self: Object, ToolContext) */
239 void VIRTUAL_flow__FlowVisitor__init(val* self, val* p0) {
240 flow__FlowVisitor__init(self, p0); /* Direct call flow#FlowVisitor#init on <self:Object(FlowVisitor)>*/
241 RET_LABEL:;
242 }
243 /* method flow#FlowVisitor#first for (self: FlowVisitor): nullable ANode */
244 val* flow__FlowVisitor__first(val* self) {
245 val* var /* : nullable ANode */;
246 val* var1 /* : nullable ANode */;
247 var1 = self->attrs[COLOR_flow__FlowVisitor___first].val; /* _first on <self:FlowVisitor> */
248 var = var1;
249 RET_LABEL:;
250 return var;
251 }
252 /* method flow#FlowVisitor#first for (self: Object): nullable ANode */
253 val* VIRTUAL_flow__FlowVisitor__first(val* self) {
254 val* var /* : nullable ANode */;
255 val* var1 /* : nullable ANode */;
256 val* var3 /* : nullable ANode */;
257 { /* Inline flow#FlowVisitor#first (self) on <self:Object(FlowVisitor)> */
258 var3 = self->attrs[COLOR_flow__FlowVisitor___first].val; /* _first on <self:Object(FlowVisitor)> */
259 var1 = var3;
260 RET_LABEL2:(void)0;
261 }
262 var = var1;
263 RET_LABEL:;
264 return var;
265 }
266 /* method flow#FlowVisitor#first= for (self: FlowVisitor, nullable ANode) */
267 void flow__FlowVisitor__first_61d(val* self, val* p0) {
268 self->attrs[COLOR_flow__FlowVisitor___first].val = p0; /* _first on <self:FlowVisitor> */
269 RET_LABEL:;
270 }
271 /* method flow#FlowVisitor#first= for (self: Object, nullable ANode) */
272 void VIRTUAL_flow__FlowVisitor__first_61d(val* self, val* p0) {
273 { /* Inline flow#FlowVisitor#first= (self,p0) on <self:Object(FlowVisitor)> */
274 self->attrs[COLOR_flow__FlowVisitor___first].val = p0; /* _first on <self:Object(FlowVisitor)> */
275 RET_LABEL1:(void)0;
276 }
277 RET_LABEL:;
278 }
279 /* method flow#FlowVisitor#visit for (self: FlowVisitor, ANode) */
280 void flow__FlowVisitor__visit(val* self, val* p0) {
281 val* var_node /* var node: ANode */;
282 val* var /* : nullable ANode */;
283 val* var2 /* : nullable ANode */;
284 val* var3 /* : null */;
285 short int var4 /* : Bool */;
286 short int var5 /* : Bool */;
287 val* var_other /* var other: nullable Object */;
288 short int var7 /* : Bool */;
289 short int var9 /* : Bool */;
290 val* var11 /* : FlowContext */;
291 val* var13 /* : FlowContext */;
292 val* var14 /* : nullable ANode */;
293 val* var16 /* : nullable ANode */;
294 val* var17 /* : null */;
295 short int var18 /* : Bool */;
296 short int var19 /* : Bool */;
297 short int var21 /* : Bool */;
298 short int var23 /* : Bool */;
299 val* var24 /* : FlowContext */;
300 val* var26 /* : FlowContext */;
301 short int var28 /* : Bool */;
302 int cltype;
303 int idtype;
304 val* var29 /* : FlowContext */;
305 val* var31 /* : FlowContext */;
306 val* var_flow /* var flow: FlowContext */;
307 short int var33 /* : Bool */;
308 val* var34 /* : FlowContext */;
309 val* var36 /* : FlowContext */;
310 short int var37 /* : Bool */;
311 short int var38 /* : Bool */;
312 val* var_other40 /* var other: nullable Object */;
313 short int var41 /* : Bool */;
314 short int var42 /* : Bool */;
315 short int var43 /* : Bool */;
316 short int var_ /* var : Bool */;
317 val* var44 /* : FlowContext */;
318 val* var46 /* : FlowContext */;
319 short int var47 /* : Bool */;
320 short int var48 /* : Bool */;
321 short int var50 /* : Bool */;
322 short int var51 /* : Bool */;
323 short int var52 /* : Bool */;
324 val* var53 /* : FlowContext */;
325 val* var54 /* : FlowContext */;
326 val* var56 /* : FlowContext */;
327 static val* varonce;
328 val* var57 /* : String */;
329 char* var58 /* : NativeString */;
330 long var59 /* : Int */;
331 val* var60 /* : FlatString */;
332 val* var62 /* : nullable ANode */;
333 val* var64 /* : nullable ANode */;
334 short int var65 /* : Bool */;
335 short int var66 /* : Bool */;
336 short int var68 /* : Bool */;
337 short int var70 /* : Bool */;
338 var_node = p0;
339 {
340 { /* Inline flow#FlowVisitor#first (self) on <self:FlowVisitor> */
341 var2 = self->attrs[COLOR_flow__FlowVisitor___first].val; /* _first on <self:FlowVisitor> */
342 var = var2;
343 RET_LABEL1:(void)0;
344 }
345 }
346 var3 = NULL;
347 if (var == NULL) {
348 var4 = 1; /* is null */
349 } else {
350 var4 = 0; /* arg is null but recv is not */
351 }
352 if (0) {
353 { /* Inline kernel#Object#== (var,var3) on <var:nullable ANode> */
354 var_other = var3;
355 {
356 { /* Inline kernel#Object#is_same_instance (var,var_other) on <var:nullable ANode(ANode)> */
357 var9 = var == var_other;
358 var7 = var9;
359 goto RET_LABEL8;
360 RET_LABEL8:(void)0;
361 }
362 }
363 var5 = var7;
364 goto RET_LABEL6;
365 RET_LABEL6:(void)0;
366 }
367 var4 = var5;
368 }
369 if (var4){
370 {
371 { /* Inline flow#FlowVisitor#first= (self,var_node) on <self:FlowVisitor> */
372 self->attrs[COLOR_flow__FlowVisitor___first].val = var_node; /* _first on <self:FlowVisitor> */
373 RET_LABEL10:(void)0;
374 }
375 }
376 } else {
377 }
378 {
379 { /* Inline flow#FlowVisitor#current_flow_context (self) on <self:FlowVisitor> */
380 var13 = self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
381 if (unlikely(var13 == NULL)) {
382 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
383 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 39);
384 show_backtrace(1);
385 }
386 var11 = var13;
387 RET_LABEL12:(void)0;
388 }
389 }
390 {
391 { /* Inline flow#FlowContext#node (var11) on <var11:FlowContext> */
392 var16 = var11->attrs[COLOR_flow__FlowContext___node].val; /* _node on <var11:FlowContext> */
393 var14 = var16;
394 RET_LABEL15:(void)0;
395 }
396 }
397 var17 = NULL;
398 if (var14 == NULL) {
399 var18 = 1; /* is null */
400 } else {
401 var18 = 0; /* arg is null but recv is not */
402 }
403 if (0) {
404 { /* Inline kernel#Object#== (var14,var17) on <var14:nullable ANode> */
405 var_other = var17;
406 {
407 { /* Inline kernel#Object#is_same_instance (var14,var_other) on <var14:nullable ANode(ANode)> */
408 var23 = var14 == var_other;
409 var21 = var23;
410 goto RET_LABEL22;
411 RET_LABEL22:(void)0;
412 }
413 }
414 var19 = var21;
415 goto RET_LABEL20;
416 RET_LABEL20:(void)0;
417 }
418 var18 = var19;
419 }
420 if (var18){
421 {
422 { /* Inline flow#FlowVisitor#current_flow_context (self) on <self:FlowVisitor> */
423 var26 = self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
424 if (unlikely(var26 == NULL)) {
425 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
426 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 39);
427 show_backtrace(1);
428 }
429 var24 = var26;
430 RET_LABEL25:(void)0;
431 }
432 }
433 {
434 { /* Inline flow#FlowContext#node= (var24,var_node) on <var24:FlowContext> */
435 var24->attrs[COLOR_flow__FlowContext___node].val = var_node; /* _node on <var24:FlowContext> */
436 RET_LABEL27:(void)0;
437 }
438 }
439 } else {
440 }
441 {
442 ((void (*)(val*, val*))(var_node->class->vft[COLOR_flow__ANode__accept_flow_visitor]))(var_node, self) /* accept_flow_visitor on <var_node:ANode>*/;
443 }
444 /* <var_node:ANode> isa AExpr */
445 cltype = type_parser_nodes__AExpr.color;
446 idtype = type_parser_nodes__AExpr.id;
447 if(cltype >= var_node->type->table_size) {
448 var28 = 0;
449 } else {
450 var28 = var_node->type->type_table[cltype] == idtype;
451 }
452 if (var28){
453 {
454 { /* Inline flow#FlowVisitor#current_flow_context (self) on <self:FlowVisitor> */
455 var31 = self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
456 if (unlikely(var31 == NULL)) {
457 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
458 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 39);
459 show_backtrace(1);
460 }
461 var29 = var31;
462 RET_LABEL30:(void)0;
463 }
464 }
465 var_flow = var29;
466 {
467 { /* Inline flow#AExpr#after_flow_context= (var_node,var_flow) on <var_node:ANode(AExpr)> */
468 var_node->attrs[COLOR_flow__AExpr___after_flow_context].val = var_flow; /* _after_flow_context on <var_node:ANode(AExpr)> */
469 RET_LABEL32:(void)0;
470 }
471 }
472 {
473 { /* Inline flow#FlowContext#when_true (var_flow) on <var_flow:FlowContext> */
474 var36 = var_flow->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on <var_flow:FlowContext> */
475 if (unlikely(var36 == NULL)) {
476 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
477 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 228);
478 show_backtrace(1);
479 }
480 var34 = var36;
481 RET_LABEL35:(void)0;
482 }
483 }
484 {
485 { /* Inline kernel#Object#!= (var34,var_flow) on <var34:FlowContext> */
486 var_other40 = var_flow;
487 {
488 var42 = ((short int (*)(val*, val*))(var34->class->vft[COLOR_kernel__Object___61d_61d]))(var34, var_other40) /* == on <var34:FlowContext>*/;
489 var41 = var42;
490 }
491 var43 = !var41;
492 var38 = var43;
493 goto RET_LABEL39;
494 RET_LABEL39:(void)0;
495 }
496 var37 = var38;
497 }
498 var_ = var37;
499 if (var37){
500 var33 = var_;
501 } else {
502 {
503 { /* Inline flow#FlowContext#when_false (var_flow) on <var_flow:FlowContext> */
504 var46 = var_flow->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on <var_flow:FlowContext> */
505 if (unlikely(var46 == NULL)) {
506 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
507 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 231);
508 show_backtrace(1);
509 }
510 var44 = var46;
511 RET_LABEL45:(void)0;
512 }
513 }
514 {
515 { /* Inline kernel#Object#!= (var44,var_flow) on <var44:FlowContext> */
516 var_other40 = var_flow;
517 {
518 var51 = ((short int (*)(val*, val*))(var44->class->vft[COLOR_kernel__Object___61d_61d]))(var44, var_other40) /* == on <var44:FlowContext>*/;
519 var50 = var51;
520 }
521 var52 = !var50;
522 var48 = var52;
523 goto RET_LABEL49;
524 RET_LABEL49:(void)0;
525 }
526 var47 = var48;
527 }
528 var33 = var47;
529 }
530 if (var33){
531 {
532 var53 = flow__FlowVisitor__make_sub_flow(self);
533 }
534 var53;
535 {
536 { /* Inline flow#FlowVisitor#current_flow_context (self) on <self:FlowVisitor> */
537 var56 = self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
538 if (unlikely(var56 == NULL)) {
539 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
540 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 39);
541 show_backtrace(1);
542 }
543 var54 = var56;
544 RET_LABEL55:(void)0;
545 }
546 }
547 if (varonce) {
548 var57 = varonce;
549 } else {
550 var58 = "AUTOSUB";
551 var59 = 7;
552 var60 = string__NativeString__to_s_with_length(var58, var59);
553 var57 = var60;
554 varonce = var57;
555 }
556 {
557 { /* Inline flow#FlowContext#name= (var54,var57) on <var54:FlowContext> */
558 var54->attrs[COLOR_flow__FlowContext___name].val = var57; /* _name on <var54:FlowContext> */
559 RET_LABEL61:(void)0;
560 }
561 }
562 } else {
563 }
564 } else {
565 }
566 {
567 { /* Inline flow#FlowVisitor#first (self) on <self:FlowVisitor> */
568 var64 = self->attrs[COLOR_flow__FlowVisitor___first].val; /* _first on <self:FlowVisitor> */
569 var62 = var64;
570 RET_LABEL63:(void)0;
571 }
572 }
573 if (var62 == NULL) {
574 var65 = 0; /* <var_node:ANode> cannot be null */
575 } else {
576 { /* Inline kernel#Object#== (var62,var_node) on <var62:nullable ANode> */
577 var_other = var_node;
578 {
579 { /* Inline kernel#Object#is_same_instance (var62,var_other) on <var62:nullable ANode(ANode)> */
580 var70 = var62 == var_other;
581 var68 = var70;
582 goto RET_LABEL69;
583 RET_LABEL69:(void)0;
584 }
585 }
586 var66 = var68;
587 goto RET_LABEL67;
588 RET_LABEL67:(void)0;
589 }
590 var65 = var66;
591 }
592 if (var65){
593 } else {
594 }
595 RET_LABEL:;
596 }
597 /* method flow#FlowVisitor#visit for (self: Object, ANode) */
598 void VIRTUAL_flow__FlowVisitor__visit(val* self, val* p0) {
599 flow__FlowVisitor__visit(self, p0); /* Direct call flow#FlowVisitor#visit on <self:Object(FlowVisitor)>*/
600 RET_LABEL:;
601 }
602 /* method flow#FlowVisitor#visit_expr for (self: FlowVisitor, AExpr): FlowContext */
603 val* flow__FlowVisitor__visit_expr(val* self, val* p0) {
604 val* var /* : FlowContext */;
605 val* var_node /* var node: AExpr */;
606 val* var1 /* : nullable FlowContext */;
607 val* var3 /* : nullable FlowContext */;
608 var_node = p0;
609 {
610 parser_nodes__Visitor__enter_visit(self, var_node); /* Direct call parser_nodes#Visitor#enter_visit on <self:FlowVisitor>*/
611 }
612 {
613 { /* Inline flow#AExpr#after_flow_context (var_node) on <var_node:AExpr> */
614 var3 = var_node->attrs[COLOR_flow__AExpr___after_flow_context].val; /* _after_flow_context on <var_node:AExpr> */
615 var1 = var3;
616 RET_LABEL2:(void)0;
617 }
618 }
619 if (unlikely(var1 == NULL)) {
620 PRINT_ERROR("Runtime error: %s", "Cast failed");
621 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 77);
622 show_backtrace(1);
623 }
624 var = var1;
625 goto RET_LABEL;
626 RET_LABEL:;
627 return var;
628 }
629 /* method flow#FlowVisitor#visit_expr for (self: Object, AExpr): FlowContext */
630 val* VIRTUAL_flow__FlowVisitor__visit_expr(val* self, val* p0) {
631 val* var /* : FlowContext */;
632 val* var1 /* : FlowContext */;
633 var1 = flow__FlowVisitor__visit_expr(self, p0);
634 var = var1;
635 RET_LABEL:;
636 return var;
637 }
638 /* method flow#FlowVisitor#flows for (self: FlowVisitor): Array[FlowContext] */
639 val* flow__FlowVisitor__flows(val* self) {
640 val* var /* : Array[FlowContext] */;
641 val* var1 /* : Array[FlowContext] */;
642 var1 = self->attrs[COLOR_flow__FlowVisitor___flows].val; /* _flows on <self:FlowVisitor> */
643 if (unlikely(var1 == NULL)) {
644 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows");
645 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 80);
646 show_backtrace(1);
647 }
648 var = var1;
649 RET_LABEL:;
650 return var;
651 }
652 /* method flow#FlowVisitor#flows for (self: Object): Array[FlowContext] */
653 val* VIRTUAL_flow__FlowVisitor__flows(val* self) {
654 val* var /* : Array[FlowContext] */;
655 val* var1 /* : Array[FlowContext] */;
656 val* var3 /* : Array[FlowContext] */;
657 { /* Inline flow#FlowVisitor#flows (self) on <self:Object(FlowVisitor)> */
658 var3 = self->attrs[COLOR_flow__FlowVisitor___flows].val; /* _flows on <self:Object(FlowVisitor)> */
659 if (unlikely(var3 == NULL)) {
660 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows");
661 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 80);
662 show_backtrace(1);
663 }
664 var1 = var3;
665 RET_LABEL2:(void)0;
666 }
667 var = var1;
668 RET_LABEL:;
669 return var;
670 }
671 /* method flow#FlowVisitor#make_sub_flow for (self: FlowVisitor): FlowContext */
672 val* flow__FlowVisitor__make_sub_flow(val* self) {
673 val* var /* : FlowContext */;
674 val* var1 /* : FlowContext */;
675 val* var_flow /* var flow: FlowContext */;
676 val* var3 /* : Array[FlowContext] */;
677 val* var5 /* : Array[FlowContext] */;
678 val* var6 /* : nullable ANode */;
679 val* var8 /* : FlowContext */;
680 val* var10 /* : FlowContext */;
681 var1 = NEW_flow__FlowContext(&type_flow__FlowContext);
682 {
683 { /* Inline flow#FlowContext#init (var1) on <var1:FlowContext> */
684 RET_LABEL2:(void)0;
685 }
686 }
687 var_flow = var1;
688 {
689 { /* Inline flow#FlowVisitor#flows (self) on <self:FlowVisitor> */
690 var5 = self->attrs[COLOR_flow__FlowVisitor___flows].val; /* _flows on <self:FlowVisitor> */
691 if (unlikely(var5 == NULL)) {
692 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows");
693 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 80);
694 show_backtrace(1);
695 }
696 var3 = var5;
697 RET_LABEL4:(void)0;
698 }
699 }
700 {
701 array__Array__add(var3, var_flow); /* Direct call array#Array#add on <var3:Array[FlowContext]>*/
702 }
703 {
704 var6 = parser_nodes__Visitor__current_node(self);
705 }
706 {
707 { /* Inline flow#FlowContext#node= (var_flow,var6) on <var_flow:FlowContext> */
708 var_flow->attrs[COLOR_flow__FlowContext___node].val = var6; /* _node on <var_flow:FlowContext> */
709 RET_LABEL7:(void)0;
710 }
711 }
712 {
713 { /* Inline flow#FlowVisitor#current_flow_context (self) on <self:FlowVisitor> */
714 var10 = self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
715 if (unlikely(var10 == NULL)) {
716 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
717 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 39);
718 show_backtrace(1);
719 }
720 var8 = var10;
721 RET_LABEL9:(void)0;
722 }
723 }
724 {
725 flow__FlowContext__add_previous(var_flow, var8); /* Direct call flow#FlowContext#add_previous on <var_flow:FlowContext>*/
726 }
727 {
728 { /* Inline flow#FlowVisitor#current_flow_context= (self,var_flow) on <self:FlowVisitor> */
729 self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var_flow; /* _current_flow_context on <self:FlowVisitor> */
730 RET_LABEL11:(void)0;
731 }
732 }
733 var = var_flow;
734 goto RET_LABEL;
735 RET_LABEL:;
736 return var;
737 }
738 /* method flow#FlowVisitor#make_sub_flow for (self: Object): FlowContext */
739 val* VIRTUAL_flow__FlowVisitor__make_sub_flow(val* self) {
740 val* var /* : FlowContext */;
741 val* var1 /* : FlowContext */;
742 var1 = flow__FlowVisitor__make_sub_flow(self);
743 var = var1;
744 RET_LABEL:;
745 return var;
746 }
747 /* method flow#FlowVisitor#make_merge_flow for (self: FlowVisitor, FlowContext, FlowContext): FlowContext */
748 val* flow__FlowVisitor__make_merge_flow(val* self, val* p0, val* p1) {
749 val* var /* : FlowContext */;
750 val* var_flow1 /* var flow1: FlowContext */;
751 val* var_flow2 /* var flow2: FlowContext */;
752 val* var1 /* : FlowContext */;
753 val* var_flow /* var flow: FlowContext */;
754 val* var3 /* : Array[FlowContext] */;
755 val* var5 /* : Array[FlowContext] */;
756 val* var6 /* : nullable ANode */;
757 var_flow1 = p0;
758 var_flow2 = p1;
759 var1 = NEW_flow__FlowContext(&type_flow__FlowContext);
760 {
761 { /* Inline flow#FlowContext#init (var1) on <var1:FlowContext> */
762 RET_LABEL2:(void)0;
763 }
764 }
765 var_flow = var1;
766 {
767 { /* Inline flow#FlowVisitor#flows (self) on <self:FlowVisitor> */
768 var5 = self->attrs[COLOR_flow__FlowVisitor___flows].val; /* _flows on <self:FlowVisitor> */
769 if (unlikely(var5 == NULL)) {
770 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows");
771 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 80);
772 show_backtrace(1);
773 }
774 var3 = var5;
775 RET_LABEL4:(void)0;
776 }
777 }
778 {
779 array__Array__add(var3, var_flow); /* Direct call array#Array#add on <var3:Array[FlowContext]>*/
780 }
781 {
782 var6 = parser_nodes__Visitor__current_node(self);
783 }
784 {
785 { /* Inline flow#FlowContext#node= (var_flow,var6) on <var_flow:FlowContext> */
786 var_flow->attrs[COLOR_flow__FlowContext___node].val = var6; /* _node on <var_flow:FlowContext> */
787 RET_LABEL7:(void)0;
788 }
789 }
790 {
791 flow__FlowContext__add_previous(var_flow, var_flow1); /* Direct call flow#FlowContext#add_previous on <var_flow:FlowContext>*/
792 }
793 {
794 flow__FlowContext__add_previous(var_flow, var_flow2); /* Direct call flow#FlowContext#add_previous on <var_flow:FlowContext>*/
795 }
796 {
797 { /* Inline flow#FlowVisitor#current_flow_context= (self,var_flow) on <self:FlowVisitor> */
798 self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var_flow; /* _current_flow_context on <self:FlowVisitor> */
799 RET_LABEL8:(void)0;
800 }
801 }
802 var = var_flow;
803 goto RET_LABEL;
804 RET_LABEL:;
805 return var;
806 }
807 /* method flow#FlowVisitor#make_merge_flow for (self: Object, FlowContext, FlowContext): FlowContext */
808 val* VIRTUAL_flow__FlowVisitor__make_merge_flow(val* self, val* p0, val* p1) {
809 val* var /* : FlowContext */;
810 val* var1 /* : FlowContext */;
811 var1 = flow__FlowVisitor__make_merge_flow(self, p0, p1);
812 var = var1;
813 RET_LABEL:;
814 return var;
815 }
816 /* method flow#FlowVisitor#make_true_false_flow for (self: FlowVisitor, FlowContext, FlowContext): FlowContext */
817 val* flow__FlowVisitor__make_true_false_flow(val* self, val* p0, val* p1) {
818 val* var /* : FlowContext */;
819 val* var_true_flow /* var true_flow: FlowContext */;
820 val* var_false_flow /* var false_flow: FlowContext */;
821 val* var1 /* : FlowContext */;
822 val* var_flow /* var flow: FlowContext */;
823 val* var3 /* : Array[FlowContext] */;
824 val* var5 /* : Array[FlowContext] */;
825 val* var6 /* : nullable ANode */;
826 var_true_flow = p0;
827 var_false_flow = p1;
828 var1 = NEW_flow__FlowContext(&type_flow__FlowContext);
829 {
830 { /* Inline flow#FlowContext#init (var1) on <var1:FlowContext> */
831 RET_LABEL2:(void)0;
832 }
833 }
834 var_flow = var1;
835 {
836 { /* Inline flow#FlowVisitor#flows (self) on <self:FlowVisitor> */
837 var5 = self->attrs[COLOR_flow__FlowVisitor___flows].val; /* _flows on <self:FlowVisitor> */
838 if (unlikely(var5 == NULL)) {
839 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows");
840 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 80);
841 show_backtrace(1);
842 }
843 var3 = var5;
844 RET_LABEL4:(void)0;
845 }
846 }
847 {
848 array__Array__add(var3, var_flow); /* Direct call array#Array#add on <var3:Array[FlowContext]>*/
849 }
850 {
851 var6 = parser_nodes__Visitor__current_node(self);
852 }
853 {
854 { /* Inline flow#FlowContext#node= (var_flow,var6) on <var_flow:FlowContext> */
855 var_flow->attrs[COLOR_flow__FlowContext___node].val = var6; /* _node on <var_flow:FlowContext> */
856 RET_LABEL7:(void)0;
857 }
858 }
859 {
860 flow__FlowContext__add_previous(var_flow, var_true_flow); /* Direct call flow#FlowContext#add_previous on <var_flow:FlowContext>*/
861 }
862 {
863 flow__FlowContext__add_previous(var_flow, var_false_flow); /* Direct call flow#FlowContext#add_previous on <var_flow:FlowContext>*/
864 }
865 {
866 { /* Inline flow#FlowContext#when_true= (var_flow,var_true_flow) on <var_flow:FlowContext> */
867 var_flow->attrs[COLOR_flow__FlowContext___when_true].val = var_true_flow; /* _when_true on <var_flow:FlowContext> */
868 RET_LABEL8:(void)0;
869 }
870 }
871 {
872 { /* Inline flow#FlowContext#when_false= (var_flow,var_false_flow) on <var_flow:FlowContext> */
873 var_flow->attrs[COLOR_flow__FlowContext___when_false].val = var_false_flow; /* _when_false on <var_flow:FlowContext> */
874 RET_LABEL9:(void)0;
875 }
876 }
877 {
878 { /* Inline flow#FlowVisitor#current_flow_context= (self,var_flow) on <self:FlowVisitor> */
879 self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var_flow; /* _current_flow_context on <self:FlowVisitor> */
880 RET_LABEL10:(void)0;
881 }
882 }
883 var = var_flow;
884 goto RET_LABEL;
885 RET_LABEL:;
886 return var;
887 }
888 /* method flow#FlowVisitor#make_true_false_flow for (self: Object, FlowContext, FlowContext): FlowContext */
889 val* VIRTUAL_flow__FlowVisitor__make_true_false_flow(val* self, val* p0, val* p1) {
890 val* var /* : FlowContext */;
891 val* var1 /* : FlowContext */;
892 var1 = flow__FlowVisitor__make_true_false_flow(self, p0, p1);
893 var = var1;
894 RET_LABEL:;
895 return var;
896 }
897 /* method flow#FlowVisitor#make_sub_true_false_flow for (self: FlowVisitor): FlowContext */
898 val* flow__FlowVisitor__make_sub_true_false_flow(val* self) {
899 val* var /* : FlowContext */;
900 val* var1 /* : FlowContext */;
901 val* var3 /* : FlowContext */;
902 val* var_orig_flow /* var orig_flow: FlowContext */;
903 val* var4 /* : FlowContext */;
904 val* var_true_flow /* var true_flow: FlowContext */;
905 val* var6 /* : Array[FlowContext] */;
906 val* var8 /* : Array[FlowContext] */;
907 val* var9 /* : nullable ANode */;
908 static val* varonce;
909 val* var11 /* : String */;
910 char* var12 /* : NativeString */;
911 long var13 /* : Int */;
912 val* var14 /* : FlatString */;
913 val* var16 /* : FlowContext */;
914 val* var_false_flow /* var false_flow: FlowContext */;
915 val* var18 /* : Array[FlowContext] */;
916 val* var20 /* : Array[FlowContext] */;
917 val* var21 /* : nullable ANode */;
918 static val* varonce23;
919 val* var24 /* : String */;
920 char* var25 /* : NativeString */;
921 long var26 /* : Int */;
922 val* var27 /* : FlatString */;
923 val* var29 /* : FlowContext */;
924 {
925 { /* Inline flow#FlowVisitor#current_flow_context (self) on <self:FlowVisitor> */
926 var3 = self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
927 if (unlikely(var3 == NULL)) {
928 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
929 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 39);
930 show_backtrace(1);
931 }
932 var1 = var3;
933 RET_LABEL2:(void)0;
934 }
935 }
936 var_orig_flow = var1;
937 var4 = NEW_flow__FlowContext(&type_flow__FlowContext);
938 {
939 { /* Inline flow#FlowContext#init (var4) on <var4:FlowContext> */
940 RET_LABEL5:(void)0;
941 }
942 }
943 var_true_flow = var4;
944 {
945 { /* Inline flow#FlowVisitor#flows (self) on <self:FlowVisitor> */
946 var8 = self->attrs[COLOR_flow__FlowVisitor___flows].val; /* _flows on <self:FlowVisitor> */
947 if (unlikely(var8 == NULL)) {
948 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows");
949 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 80);
950 show_backtrace(1);
951 }
952 var6 = var8;
953 RET_LABEL7:(void)0;
954 }
955 }
956 {
957 array__Array__add(var6, var_true_flow); /* Direct call array#Array#add on <var6:Array[FlowContext]>*/
958 }
959 {
960 var9 = parser_nodes__Visitor__current_node(self);
961 }
962 {
963 { /* Inline flow#FlowContext#node= (var_true_flow,var9) on <var_true_flow:FlowContext> */
964 var_true_flow->attrs[COLOR_flow__FlowContext___node].val = var9; /* _node on <var_true_flow:FlowContext> */
965 RET_LABEL10:(void)0;
966 }
967 }
968 {
969 flow__FlowContext__add_previous(var_true_flow, var_orig_flow); /* Direct call flow#FlowContext#add_previous on <var_true_flow:FlowContext>*/
970 }
971 if (varonce) {
972 var11 = varonce;
973 } else {
974 var12 = "TRUE";
975 var13 = 4;
976 var14 = string__NativeString__to_s_with_length(var12, var13);
977 var11 = var14;
978 varonce = var11;
979 }
980 {
981 { /* Inline flow#FlowContext#name= (var_true_flow,var11) on <var_true_flow:FlowContext> */
982 var_true_flow->attrs[COLOR_flow__FlowContext___name].val = var11; /* _name on <var_true_flow:FlowContext> */
983 RET_LABEL15:(void)0;
984 }
985 }
986 var16 = NEW_flow__FlowContext(&type_flow__FlowContext);
987 {
988 { /* Inline flow#FlowContext#init (var16) on <var16:FlowContext> */
989 RET_LABEL17:(void)0;
990 }
991 }
992 var_false_flow = var16;
993 {
994 { /* Inline flow#FlowVisitor#flows (self) on <self:FlowVisitor> */
995 var20 = self->attrs[COLOR_flow__FlowVisitor___flows].val; /* _flows on <self:FlowVisitor> */
996 if (unlikely(var20 == NULL)) {
997 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows");
998 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 80);
999 show_backtrace(1);
1000 }
1001 var18 = var20;
1002 RET_LABEL19:(void)0;
1003 }
1004 }
1005 {
1006 array__Array__add(var18, var_false_flow); /* Direct call array#Array#add on <var18:Array[FlowContext]>*/
1007 }
1008 {
1009 var21 = parser_nodes__Visitor__current_node(self);
1010 }
1011 {
1012 { /* Inline flow#FlowContext#node= (var_false_flow,var21) on <var_false_flow:FlowContext> */
1013 var_false_flow->attrs[COLOR_flow__FlowContext___node].val = var21; /* _node on <var_false_flow:FlowContext> */
1014 RET_LABEL22:(void)0;
1015 }
1016 }
1017 {
1018 flow__FlowContext__add_previous(var_false_flow, var_orig_flow); /* Direct call flow#FlowContext#add_previous on <var_false_flow:FlowContext>*/
1019 }
1020 if (varonce23) {
1021 var24 = varonce23;
1022 } else {
1023 var25 = "FALSE";
1024 var26 = 5;
1025 var27 = string__NativeString__to_s_with_length(var25, var26);
1026 var24 = var27;
1027 varonce23 = var24;
1028 }
1029 {
1030 { /* Inline flow#FlowContext#name= (var_false_flow,var24) on <var_false_flow:FlowContext> */
1031 var_false_flow->attrs[COLOR_flow__FlowContext___name].val = var24; /* _name on <var_false_flow:FlowContext> */
1032 RET_LABEL28:(void)0;
1033 }
1034 }
1035 {
1036 var29 = flow__FlowVisitor__make_true_false_flow(self, var_true_flow, var_false_flow);
1037 }
1038 var = var29;
1039 goto RET_LABEL;
1040 RET_LABEL:;
1041 return var;
1042 }
1043 /* method flow#FlowVisitor#make_sub_true_false_flow for (self: Object): FlowContext */
1044 val* VIRTUAL_flow__FlowVisitor__make_sub_true_false_flow(val* self) {
1045 val* var /* : FlowContext */;
1046 val* var1 /* : FlowContext */;
1047 var1 = flow__FlowVisitor__make_sub_true_false_flow(self);
1048 var = var1;
1049 RET_LABEL:;
1050 return var;
1051 }
1052 /* method flow#FlowVisitor#make_unreachable_flow for (self: FlowVisitor): FlowContext */
1053 val* flow__FlowVisitor__make_unreachable_flow(val* self) {
1054 val* var /* : FlowContext */;
1055 val* var1 /* : FlowContext */;
1056 val* var_flow /* var flow: FlowContext */;
1057 val* var3 /* : Array[FlowContext] */;
1058 val* var5 /* : Array[FlowContext] */;
1059 val* var6 /* : nullable ANode */;
1060 val* var8 /* : FlowContext */;
1061 val* var10 /* : FlowContext */;
1062 short int var11 /* : Bool */;
1063 var1 = NEW_flow__FlowContext(&type_flow__FlowContext);
1064 {
1065 { /* Inline flow#FlowContext#init (var1) on <var1:FlowContext> */
1066 RET_LABEL2:(void)0;
1067 }
1068 }
1069 var_flow = var1;
1070 {
1071 { /* Inline flow#FlowVisitor#flows (self) on <self:FlowVisitor> */
1072 var5 = self->attrs[COLOR_flow__FlowVisitor___flows].val; /* _flows on <self:FlowVisitor> */
1073 if (unlikely(var5 == NULL)) {
1074 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows");
1075 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 80);
1076 show_backtrace(1);
1077 }
1078 var3 = var5;
1079 RET_LABEL4:(void)0;
1080 }
1081 }
1082 {
1083 array__Array__add(var3, var_flow); /* Direct call array#Array#add on <var3:Array[FlowContext]>*/
1084 }
1085 {
1086 var6 = parser_nodes__Visitor__current_node(self);
1087 }
1088 {
1089 { /* Inline flow#FlowContext#node= (var_flow,var6) on <var_flow:FlowContext> */
1090 var_flow->attrs[COLOR_flow__FlowContext___node].val = var6; /* _node on <var_flow:FlowContext> */
1091 RET_LABEL7:(void)0;
1092 }
1093 }
1094 {
1095 { /* Inline flow#FlowVisitor#current_flow_context (self) on <self:FlowVisitor> */
1096 var10 = self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
1097 if (unlikely(var10 == NULL)) {
1098 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
1099 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 39);
1100 show_backtrace(1);
1101 }
1102 var8 = var10;
1103 RET_LABEL9:(void)0;
1104 }
1105 }
1106 {
1107 flow__FlowContext__add_previous(var_flow, var8); /* Direct call flow#FlowContext#add_previous on <var_flow:FlowContext>*/
1108 }
1109 var11 = 1;
1110 {
1111 { /* Inline flow#FlowContext#is_marked_unreachable= (var_flow,var11) on <var_flow:FlowContext> */
1112 var_flow->attrs[COLOR_flow__FlowContext___is_marked_unreachable].s = var11; /* _is_marked_unreachable on <var_flow:FlowContext> */
1113 RET_LABEL12:(void)0;
1114 }
1115 }
1116 {
1117 { /* Inline flow#FlowVisitor#current_flow_context= (self,var_flow) on <self:FlowVisitor> */
1118 self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var_flow; /* _current_flow_context on <self:FlowVisitor> */
1119 RET_LABEL13:(void)0;
1120 }
1121 }
1122 var = var_flow;
1123 goto RET_LABEL;
1124 RET_LABEL:;
1125 return var;
1126 }
1127 /* method flow#FlowVisitor#make_unreachable_flow for (self: Object): FlowContext */
1128 val* VIRTUAL_flow__FlowVisitor__make_unreachable_flow(val* self) {
1129 val* var /* : FlowContext */;
1130 val* var1 /* : FlowContext */;
1131 var1 = flow__FlowVisitor__make_unreachable_flow(self);
1132 var = var1;
1133 RET_LABEL:;
1134 return var;
1135 }
1136 /* method flow#FlowVisitor#merge_continues_to for (self: FlowVisitor, FlowContext, nullable EscapeMark) */
1137 void flow__FlowVisitor__merge_continues_to(val* self, val* p0, val* p1) {
1138 val* var_before_loop /* var before_loop: FlowContext */;
1139 val* var_escapemark /* var escapemark: nullable EscapeMark */;
1140 val* var /* : null */;
1141 short int var1 /* : Bool */;
1142 short int var2 /* : Bool */;
1143 val* var_other /* var other: nullable Object */;
1144 short int var4 /* : Bool */;
1145 short int var6 /* : Bool */;
1146 val* var7 /* : Array[AContinueExpr] */;
1147 val* var9 /* : Array[AContinueExpr] */;
1148 val* var10 /* : ArrayIterator[nullable Object] */;
1149 short int var11 /* : Bool */;
1150 val* var12 /* : nullable Object */;
1151 val* var_b /* var b: AContinueExpr */;
1152 val* var13 /* : nullable FlowContext */;
1153 val* var_before /* var before: nullable FlowContext */;
1154 val* var14 /* : null */;
1155 short int var15 /* : Bool */;
1156 short int var16 /* : Bool */;
1157 short int var18 /* : Bool */;
1158 short int var20 /* : Bool */;
1159 var_before_loop = p0;
1160 var_escapemark = p1;
1161 var = NULL;
1162 if (var_escapemark == NULL) {
1163 var1 = 1; /* is null */
1164 } else {
1165 var1 = 0; /* arg is null but recv is not */
1166 }
1167 if (0) {
1168 { /* Inline kernel#Object#== (var_escapemark,var) on <var_escapemark:nullable EscapeMark> */
1169 var_other = var;
1170 {
1171 { /* Inline kernel#Object#is_same_instance (var_escapemark,var_other) on <var_escapemark:nullable EscapeMark(EscapeMark)> */
1172 var6 = var_escapemark == var_other;
1173 var4 = var6;
1174 goto RET_LABEL5;
1175 RET_LABEL5:(void)0;
1176 }
1177 }
1178 var2 = var4;
1179 goto RET_LABEL3;
1180 RET_LABEL3:(void)0;
1181 }
1182 var1 = var2;
1183 }
1184 if (var1){
1185 goto RET_LABEL;
1186 } else {
1187 }
1188 {
1189 { /* Inline scope#EscapeMark#continues (var_escapemark) on <var_escapemark:nullable EscapeMark(EscapeMark)> */
1190 var9 = var_escapemark->attrs[COLOR_scope__EscapeMark___continues].val; /* _continues on <var_escapemark:nullable EscapeMark(EscapeMark)> */
1191 if (unlikely(var9 == NULL)) {
1192 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _continues");
1193 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 53);
1194 show_backtrace(1);
1195 }
1196 var7 = var9;
1197 RET_LABEL8:(void)0;
1198 }
1199 }
1200 {
1201 var10 = array__AbstractArrayRead__iterator(var7);
1202 }
1203 for(;;) {
1204 {
1205 var11 = array__ArrayIterator__is_ok(var10);
1206 }
1207 if(!var11) break;
1208 {
1209 var12 = array__ArrayIterator__item(var10);
1210 }
1211 var_b = var12;
1212 {
1213 var13 = flow__AContinueExpr__before_flow_context(var_b);
1214 }
1215 var_before = var13;
1216 var14 = NULL;
1217 if (var_before == NULL) {
1218 var15 = 1; /* is null */
1219 } else {
1220 var15 = 0; /* arg is null but recv is not */
1221 }
1222 if (0) {
1223 { /* Inline kernel#Object#== (var_before,var14) on <var_before:nullable FlowContext> */
1224 var_other = var14;
1225 {
1226 { /* Inline kernel#Object#is_same_instance (var_before,var_other) on <var_before:nullable FlowContext(FlowContext)> */
1227 var20 = var_before == var_other;
1228 var18 = var20;
1229 goto RET_LABEL19;
1230 RET_LABEL19:(void)0;
1231 }
1232 }
1233 var16 = var18;
1234 goto RET_LABEL17;
1235 RET_LABEL17:(void)0;
1236 }
1237 var15 = var16;
1238 }
1239 if (var15){
1240 goto CONTINUE_label;
1241 } else {
1242 }
1243 {
1244 flow__FlowContext__add_loop(var_before_loop, var_before); /* Direct call flow#FlowContext#add_loop on <var_before_loop:FlowContext>*/
1245 }
1246 CONTINUE_label: (void)0;
1247 {
1248 array__ArrayIterator__next(var10); /* Direct call array#ArrayIterator#next on <var10:ArrayIterator[nullable Object]>*/
1249 }
1250 }
1251 BREAK_label: (void)0;
1252 RET_LABEL:;
1253 }
1254 /* method flow#FlowVisitor#merge_continues_to for (self: Object, FlowContext, nullable EscapeMark) */
1255 void VIRTUAL_flow__FlowVisitor__merge_continues_to(val* self, val* p0, val* p1) {
1256 flow__FlowVisitor__merge_continues_to(self, p0, p1); /* Direct call flow#FlowVisitor#merge_continues_to on <self:Object(FlowVisitor)>*/
1257 RET_LABEL:;
1258 }
1259 /* method flow#FlowVisitor#merge_breaks for (self: FlowVisitor, nullable EscapeMark) */
1260 void flow__FlowVisitor__merge_breaks(val* self, val* p0) {
1261 val* var_escapemark /* var escapemark: nullable EscapeMark */;
1262 val* var /* : null */;
1263 short int var1 /* : Bool */;
1264 short int var2 /* : Bool */;
1265 val* var_other /* var other: nullable Object */;
1266 short int var4 /* : Bool */;
1267 short int var6 /* : Bool */;
1268 val* var7 /* : Array[ABreakExpr] */;
1269 val* var9 /* : Array[ABreakExpr] */;
1270 val* var10 /* : ArrayIterator[nullable Object] */;
1271 short int var11 /* : Bool */;
1272 val* var12 /* : nullable Object */;
1273 val* var_b /* var b: ABreakExpr */;
1274 val* var13 /* : nullable FlowContext */;
1275 val* var_before /* var before: nullable FlowContext */;
1276 val* var14 /* : null */;
1277 short int var15 /* : Bool */;
1278 short int var16 /* : Bool */;
1279 short int var18 /* : Bool */;
1280 short int var20 /* : Bool */;
1281 val* var21 /* : FlowContext */;
1282 val* var23 /* : FlowContext */;
1283 val* var24 /* : FlowContext */;
1284 var_escapemark = p0;
1285 var = NULL;
1286 if (var_escapemark == NULL) {
1287 var1 = 1; /* is null */
1288 } else {
1289 var1 = 0; /* arg is null but recv is not */
1290 }
1291 if (0) {
1292 { /* Inline kernel#Object#== (var_escapemark,var) on <var_escapemark:nullable EscapeMark> */
1293 var_other = var;
1294 {
1295 { /* Inline kernel#Object#is_same_instance (var_escapemark,var_other) on <var_escapemark:nullable EscapeMark(EscapeMark)> */
1296 var6 = var_escapemark == var_other;
1297 var4 = var6;
1298 goto RET_LABEL5;
1299 RET_LABEL5:(void)0;
1300 }
1301 }
1302 var2 = var4;
1303 goto RET_LABEL3;
1304 RET_LABEL3:(void)0;
1305 }
1306 var1 = var2;
1307 }
1308 if (var1){
1309 goto RET_LABEL;
1310 } else {
1311 }
1312 {
1313 { /* Inline scope#EscapeMark#breaks (var_escapemark) on <var_escapemark:nullable EscapeMark(EscapeMark)> */
1314 var9 = var_escapemark->attrs[COLOR_scope__EscapeMark___breaks].val; /* _breaks on <var_escapemark:nullable EscapeMark(EscapeMark)> */
1315 if (unlikely(var9 == NULL)) {
1316 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _breaks");
1317 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 56);
1318 show_backtrace(1);
1319 }
1320 var7 = var9;
1321 RET_LABEL8:(void)0;
1322 }
1323 }
1324 {
1325 var10 = array__AbstractArrayRead__iterator(var7);
1326 }
1327 for(;;) {
1328 {
1329 var11 = array__ArrayIterator__is_ok(var10);
1330 }
1331 if(!var11) break;
1332 {
1333 var12 = array__ArrayIterator__item(var10);
1334 }
1335 var_b = var12;
1336 {
1337 var13 = flow__ABreakExpr__before_flow_context(var_b);
1338 }
1339 var_before = var13;
1340 var14 = NULL;
1341 if (var_before == NULL) {
1342 var15 = 1; /* is null */
1343 } else {
1344 var15 = 0; /* arg is null but recv is not */
1345 }
1346 if (0) {
1347 { /* Inline kernel#Object#== (var_before,var14) on <var_before:nullable FlowContext> */
1348 var_other = var14;
1349 {
1350 { /* Inline kernel#Object#is_same_instance (var_before,var_other) on <var_before:nullable FlowContext(FlowContext)> */
1351 var20 = var_before == var_other;
1352 var18 = var20;
1353 goto RET_LABEL19;
1354 RET_LABEL19:(void)0;
1355 }
1356 }
1357 var16 = var18;
1358 goto RET_LABEL17;
1359 RET_LABEL17:(void)0;
1360 }
1361 var15 = var16;
1362 }
1363 if (var15){
1364 goto CONTINUE_label;
1365 } else {
1366 }
1367 {
1368 { /* Inline flow#FlowVisitor#current_flow_context (self) on <self:FlowVisitor> */
1369 var23 = self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
1370 if (unlikely(var23 == NULL)) {
1371 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
1372 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 39);
1373 show_backtrace(1);
1374 }
1375 var21 = var23;
1376 RET_LABEL22:(void)0;
1377 }
1378 }
1379 {
1380 var24 = flow__FlowVisitor__make_merge_flow(self, var21, var_before);
1381 }
1382 var24;
1383 CONTINUE_label: (void)0;
1384 {
1385 array__ArrayIterator__next(var10); /* Direct call array#ArrayIterator#next on <var10:ArrayIterator[nullable Object]>*/
1386 }
1387 }
1388 BREAK_label: (void)0;
1389 RET_LABEL:;
1390 }
1391 /* method flow#FlowVisitor#merge_breaks for (self: Object, nullable EscapeMark) */
1392 void VIRTUAL_flow__FlowVisitor__merge_breaks(val* self, val* p0) {
1393 flow__FlowVisitor__merge_breaks(self, p0); /* Direct call flow#FlowVisitor#merge_breaks on <self:Object(FlowVisitor)>*/
1394 RET_LABEL:;
1395 }
1396 /* method flow#FlowContext#previous for (self: FlowContext): Array[FlowContext] */
1397 val* flow__FlowContext__previous(val* self) {
1398 val* var /* : Array[FlowContext] */;
1399 val* var1 /* : Array[FlowContext] */;
1400 var1 = self->attrs[COLOR_flow__FlowContext___previous].val; /* _previous on <self:FlowContext> */
1401 if (unlikely(var1 == NULL)) {
1402 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
1403 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 192);
1404 show_backtrace(1);
1405 }
1406 var = var1;
1407 RET_LABEL:;
1408 return var;
1409 }
1410 /* method flow#FlowContext#previous for (self: Object): Array[FlowContext] */
1411 val* VIRTUAL_flow__FlowContext__previous(val* self) {
1412 val* var /* : Array[FlowContext] */;
1413 val* var1 /* : Array[FlowContext] */;
1414 val* var3 /* : Array[FlowContext] */;
1415 { /* Inline flow#FlowContext#previous (self) on <self:Object(FlowContext)> */
1416 var3 = self->attrs[COLOR_flow__FlowContext___previous].val; /* _previous on <self:Object(FlowContext)> */
1417 if (unlikely(var3 == NULL)) {
1418 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
1419 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 192);
1420 show_backtrace(1);
1421 }
1422 var1 = var3;
1423 RET_LABEL2:(void)0;
1424 }
1425 var = var1;
1426 RET_LABEL:;
1427 return var;
1428 }
1429 /* method flow#FlowContext#loops for (self: FlowContext): Array[FlowContext] */
1430 val* flow__FlowContext__loops(val* self) {
1431 val* var /* : Array[FlowContext] */;
1432 val* var1 /* : Array[FlowContext] */;
1433 var1 = self->attrs[COLOR_flow__FlowContext___loops].val; /* _loops on <self:FlowContext> */
1434 if (unlikely(var1 == NULL)) {
1435 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _loops");
1436 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 195);
1437 show_backtrace(1);
1438 }
1439 var = var1;
1440 RET_LABEL:;
1441 return var;
1442 }
1443 /* method flow#FlowContext#loops for (self: Object): Array[FlowContext] */
1444 val* VIRTUAL_flow__FlowContext__loops(val* self) {
1445 val* var /* : Array[FlowContext] */;
1446 val* var1 /* : Array[FlowContext] */;
1447 val* var3 /* : Array[FlowContext] */;
1448 { /* Inline flow#FlowContext#loops (self) on <self:Object(FlowContext)> */
1449 var3 = self->attrs[COLOR_flow__FlowContext___loops].val; /* _loops on <self:Object(FlowContext)> */
1450 if (unlikely(var3 == NULL)) {
1451 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _loops");
1452 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 195);
1453 show_backtrace(1);
1454 }
1455 var1 = var3;
1456 RET_LABEL2:(void)0;
1457 }
1458 var = var1;
1459 RET_LABEL:;
1460 return var;
1461 }
1462 /* method flow#FlowContext#is_marked_unreachable for (self: FlowContext): Bool */
1463 short int flow__FlowContext__is_marked_unreachable(val* self) {
1464 short int var /* : Bool */;
1465 short int var1 /* : Bool */;
1466 var1 = self->attrs[COLOR_flow__FlowContext___is_marked_unreachable].s; /* _is_marked_unreachable on <self:FlowContext> */
1467 var = var1;
1468 RET_LABEL:;
1469 return var;
1470 }
1471 /* method flow#FlowContext#is_marked_unreachable for (self: Object): Bool */
1472 short int VIRTUAL_flow__FlowContext__is_marked_unreachable(val* self) {
1473 short int var /* : Bool */;
1474 short int var1 /* : Bool */;
1475 short int var3 /* : Bool */;
1476 { /* Inline flow#FlowContext#is_marked_unreachable (self) on <self:Object(FlowContext)> */
1477 var3 = self->attrs[COLOR_flow__FlowContext___is_marked_unreachable].s; /* _is_marked_unreachable on <self:Object(FlowContext)> */
1478 var1 = var3;
1479 RET_LABEL2:(void)0;
1480 }
1481 var = var1;
1482 RET_LABEL:;
1483 return var;
1484 }
1485 /* method flow#FlowContext#is_marked_unreachable= for (self: FlowContext, Bool) */
1486 void flow__FlowContext__is_marked_unreachable_61d(val* self, short int p0) {
1487 self->attrs[COLOR_flow__FlowContext___is_marked_unreachable].s = p0; /* _is_marked_unreachable on <self:FlowContext> */
1488 RET_LABEL:;
1489 }
1490 /* method flow#FlowContext#is_marked_unreachable= for (self: Object, Bool) */
1491 void VIRTUAL_flow__FlowContext__is_marked_unreachable_61d(val* self, short int p0) {
1492 { /* Inline flow#FlowContext#is_marked_unreachable= (self,p0) on <self:Object(FlowContext)> */
1493 self->attrs[COLOR_flow__FlowContext___is_marked_unreachable].s = p0; /* _is_marked_unreachable on <self:Object(FlowContext)> */
1494 RET_LABEL1:(void)0;
1495 }
1496 RET_LABEL:;
1497 }
1498 /* method flow#FlowContext#is_unreachable for (self: FlowContext): Bool */
1499 short int flow__FlowContext__is_unreachable(val* self) {
1500 short int var /* : Bool */;
1501 short int var1 /* : Bool */;
1502 short int var3 /* : Bool */;
1503 short int var4 /* : Bool */;
1504 short int var5 /* : Bool */;
1505 short int var7 /* : Bool */;
1506 short int var8 /* : Bool */;
1507 val* var9 /* : Array[FlowContext] */;
1508 val* var11 /* : Array[FlowContext] */;
1509 long var12 /* : Int */;
1510 long var13 /* : Int */;
1511 short int var14 /* : Bool */;
1512 short int var15 /* : Bool */;
1513 short int var17 /* : Bool */;
1514 short int var18 /* : Bool */;
1515 short int var19 /* : Bool */;
1516 {
1517 { /* Inline flow#FlowContext#is_marked_unreachable (self) on <self:FlowContext> */
1518 var3 = self->attrs[COLOR_flow__FlowContext___is_marked_unreachable].s; /* _is_marked_unreachable on <self:FlowContext> */
1519 var1 = var3;
1520 RET_LABEL2:(void)0;
1521 }
1522 }
1523 if (var1){
1524 var4 = 1;
1525 var = var4;
1526 goto RET_LABEL;
1527 } else {
1528 }
1529 {
1530 { /* Inline flow#FlowContext#is_start (self) on <self:FlowContext> */
1531 var7 = self->attrs[COLOR_flow__FlowContext___is_start].s; /* _is_start on <self:FlowContext> */
1532 var5 = var7;
1533 RET_LABEL6:(void)0;
1534 }
1535 }
1536 if (var5){
1537 var8 = 0;
1538 var = var8;
1539 goto RET_LABEL;
1540 } else {
1541 }
1542 {
1543 { /* Inline flow#FlowContext#previous (self) on <self:FlowContext> */
1544 var11 = self->attrs[COLOR_flow__FlowContext___previous].val; /* _previous on <self:FlowContext> */
1545 if (unlikely(var11 == NULL)) {
1546 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
1547 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 192);
1548 show_backtrace(1);
1549 }
1550 var9 = var11;
1551 RET_LABEL10:(void)0;
1552 }
1553 }
1554 {
1555 var12 = array__AbstractArrayRead__length(var9);
1556 }
1557 var13 = 0;
1558 {
1559 { /* Inline kernel#Int#== (var12,var13) on <var12:Int> */
1560 var17 = var12 == var13;
1561 var15 = var17;
1562 goto RET_LABEL16;
1563 RET_LABEL16:(void)0;
1564 }
1565 var14 = var15;
1566 }
1567 if (var14){
1568 var18 = 1;
1569 var = var18;
1570 goto RET_LABEL;
1571 } else {
1572 }
1573 var19 = 0;
1574 var = var19;
1575 goto RET_LABEL;
1576 RET_LABEL:;
1577 return var;
1578 }
1579 /* method flow#FlowContext#is_unreachable for (self: Object): Bool */
1580 short int VIRTUAL_flow__FlowContext__is_unreachable(val* self) {
1581 short int var /* : Bool */;
1582 short int var1 /* : Bool */;
1583 var1 = flow__FlowContext__is_unreachable(self);
1584 var = var1;
1585 RET_LABEL:;
1586 return var;
1587 }
1588 /* method flow#FlowContext#is_already_unreachable for (self: FlowContext): Bool */
1589 short int flow__FlowContext__is_already_unreachable(val* self) {
1590 short int var /* : Bool */;
1591 short int var1 /* : Bool */;
1592 var1 = self->attrs[COLOR_flow__FlowContext___is_already_unreachable].s; /* _is_already_unreachable on <self:FlowContext> */
1593 var = var1;
1594 RET_LABEL:;
1595 return var;
1596 }
1597 /* method flow#FlowContext#is_already_unreachable for (self: Object): Bool */
1598 short int VIRTUAL_flow__FlowContext__is_already_unreachable(val* self) {
1599 short int var /* : Bool */;
1600 short int var1 /* : Bool */;
1601 short int var3 /* : Bool */;
1602 { /* Inline flow#FlowContext#is_already_unreachable (self) on <self:Object(FlowContext)> */
1603 var3 = self->attrs[COLOR_flow__FlowContext___is_already_unreachable].s; /* _is_already_unreachable on <self:Object(FlowContext)> */
1604 var1 = var3;
1605 RET_LABEL2:(void)0;
1606 }
1607 var = var1;
1608 RET_LABEL:;
1609 return var;
1610 }
1611 /* method flow#FlowContext#is_already_unreachable= for (self: FlowContext, Bool) */
1612 void flow__FlowContext__is_already_unreachable_61d(val* self, short int p0) {
1613 self->attrs[COLOR_flow__FlowContext___is_already_unreachable].s = p0; /* _is_already_unreachable on <self:FlowContext> */
1614 RET_LABEL:;
1615 }
1616 /* method flow#FlowContext#is_already_unreachable= for (self: Object, Bool) */
1617 void VIRTUAL_flow__FlowContext__is_already_unreachable_61d(val* self, short int p0) {
1618 { /* Inline flow#FlowContext#is_already_unreachable= (self,p0) on <self:Object(FlowContext)> */
1619 self->attrs[COLOR_flow__FlowContext___is_already_unreachable].s = p0; /* _is_already_unreachable on <self:Object(FlowContext)> */
1620 RET_LABEL1:(void)0;
1621 }
1622 RET_LABEL:;
1623 }
1624 /* method flow#FlowContext#is_start for (self: FlowContext): Bool */
1625 short int flow__FlowContext__is_start(val* self) {
1626 short int var /* : Bool */;
1627 short int var1 /* : Bool */;
1628 var1 = self->attrs[COLOR_flow__FlowContext___is_start].s; /* _is_start on <self:FlowContext> */
1629 var = var1;
1630 RET_LABEL:;
1631 return var;
1632 }
1633 /* method flow#FlowContext#is_start for (self: Object): Bool */
1634 short int VIRTUAL_flow__FlowContext__is_start(val* self) {
1635 short int var /* : Bool */;
1636 short int var1 /* : Bool */;
1637 short int var3 /* : Bool */;
1638 { /* Inline flow#FlowContext#is_start (self) on <self:Object(FlowContext)> */
1639 var3 = self->attrs[COLOR_flow__FlowContext___is_start].s; /* _is_start on <self:Object(FlowContext)> */
1640 var1 = var3;
1641 RET_LABEL2:(void)0;
1642 }
1643 var = var1;
1644 RET_LABEL:;
1645 return var;
1646 }
1647 /* method flow#FlowContext#is_start= for (self: FlowContext, Bool) */
1648 void flow__FlowContext__is_start_61d(val* self, short int p0) {
1649 self->attrs[COLOR_flow__FlowContext___is_start].s = p0; /* _is_start on <self:FlowContext> */
1650 RET_LABEL:;
1651 }
1652 /* method flow#FlowContext#is_start= for (self: Object, Bool) */
1653 void VIRTUAL_flow__FlowContext__is_start_61d(val* self, short int p0) {
1654 { /* Inline flow#FlowContext#is_start= (self,p0) on <self:Object(FlowContext)> */
1655 self->attrs[COLOR_flow__FlowContext___is_start].s = p0; /* _is_start on <self:Object(FlowContext)> */
1656 RET_LABEL1:(void)0;
1657 }
1658 RET_LABEL:;
1659 }
1660 /* method flow#FlowContext#node for (self: FlowContext): nullable ANode */
1661 val* flow__FlowContext__node(val* self) {
1662 val* var /* : nullable ANode */;
1663 val* var1 /* : nullable ANode */;
1664 var1 = self->attrs[COLOR_flow__FlowContext___node].val; /* _node on <self:FlowContext> */
1665 var = var1;
1666 RET_LABEL:;
1667 return var;
1668 }
1669 /* method flow#FlowContext#node for (self: Object): nullable ANode */
1670 val* VIRTUAL_flow__FlowContext__node(val* self) {
1671 val* var /* : nullable ANode */;
1672 val* var1 /* : nullable ANode */;
1673 val* var3 /* : nullable ANode */;
1674 { /* Inline flow#FlowContext#node (self) on <self:Object(FlowContext)> */
1675 var3 = self->attrs[COLOR_flow__FlowContext___node].val; /* _node on <self:Object(FlowContext)> */
1676 var1 = var3;
1677 RET_LABEL2:(void)0;
1678 }
1679 var = var1;
1680 RET_LABEL:;
1681 return var;
1682 }
1683 /* method flow#FlowContext#node= for (self: FlowContext, nullable ANode) */
1684 void flow__FlowContext__node_61d(val* self, val* p0) {
1685 self->attrs[COLOR_flow__FlowContext___node].val = p0; /* _node on <self:FlowContext> */
1686 RET_LABEL:;
1687 }
1688 /* method flow#FlowContext#node= for (self: Object, nullable ANode) */
1689 void VIRTUAL_flow__FlowContext__node_61d(val* self, val* p0) {
1690 { /* Inline flow#FlowContext#node= (self,p0) on <self:Object(FlowContext)> */
1691 self->attrs[COLOR_flow__FlowContext___node].val = p0; /* _node on <self:Object(FlowContext)> */
1692 RET_LABEL1:(void)0;
1693 }
1694 RET_LABEL:;
1695 }
1696 /* method flow#FlowContext#name= for (self: FlowContext, String) */
1697 void flow__FlowContext__name_61d(val* self, val* p0) {
1698 self->attrs[COLOR_flow__FlowContext___name].val = p0; /* _name on <self:FlowContext> */
1699 RET_LABEL:;
1700 }
1701 /* method flow#FlowContext#name= for (self: Object, String) */
1702 void VIRTUAL_flow__FlowContext__name_61d(val* self, val* p0) {
1703 { /* Inline flow#FlowContext#name= (self,p0) on <self:Object(FlowContext)> */
1704 self->attrs[COLOR_flow__FlowContext___name].val = p0; /* _name on <self:Object(FlowContext)> */
1705 RET_LABEL1:(void)0;
1706 }
1707 RET_LABEL:;
1708 }
1709 /* method flow#FlowContext#when_true for (self: FlowContext): FlowContext */
1710 val* flow__FlowContext__when_true(val* self) {
1711 val* var /* : FlowContext */;
1712 val* var1 /* : FlowContext */;
1713 var1 = self->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on <self:FlowContext> */
1714 if (unlikely(var1 == NULL)) {
1715 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
1716 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 228);
1717 show_backtrace(1);
1718 }
1719 var = var1;
1720 RET_LABEL:;
1721 return var;
1722 }
1723 /* method flow#FlowContext#when_true for (self: Object): FlowContext */
1724 val* VIRTUAL_flow__FlowContext__when_true(val* self) {
1725 val* var /* : FlowContext */;
1726 val* var1 /* : FlowContext */;
1727 val* var3 /* : FlowContext */;
1728 { /* Inline flow#FlowContext#when_true (self) on <self:Object(FlowContext)> */
1729 var3 = self->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on <self:Object(FlowContext)> */
1730 if (unlikely(var3 == NULL)) {
1731 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
1732 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 228);
1733 show_backtrace(1);
1734 }
1735 var1 = var3;
1736 RET_LABEL2:(void)0;
1737 }
1738 var = var1;
1739 RET_LABEL:;
1740 return var;
1741 }
1742 /* method flow#FlowContext#when_true= for (self: FlowContext, FlowContext) */
1743 void flow__FlowContext__when_true_61d(val* self, val* p0) {
1744 self->attrs[COLOR_flow__FlowContext___when_true].val = p0; /* _when_true on <self:FlowContext> */
1745 RET_LABEL:;
1746 }
1747 /* method flow#FlowContext#when_true= for (self: Object, FlowContext) */
1748 void VIRTUAL_flow__FlowContext__when_true_61d(val* self, val* p0) {
1749 { /* Inline flow#FlowContext#when_true= (self,p0) on <self:Object(FlowContext)> */
1750 self->attrs[COLOR_flow__FlowContext___when_true].val = p0; /* _when_true on <self:Object(FlowContext)> */
1751 RET_LABEL1:(void)0;
1752 }
1753 RET_LABEL:;
1754 }
1755 /* method flow#FlowContext#when_false for (self: FlowContext): FlowContext */
1756 val* flow__FlowContext__when_false(val* self) {
1757 val* var /* : FlowContext */;
1758 val* var1 /* : FlowContext */;
1759 var1 = self->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on <self:FlowContext> */
1760 if (unlikely(var1 == NULL)) {
1761 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
1762 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 231);
1763 show_backtrace(1);
1764 }
1765 var = var1;
1766 RET_LABEL:;
1767 return var;
1768 }
1769 /* method flow#FlowContext#when_false for (self: Object): FlowContext */
1770 val* VIRTUAL_flow__FlowContext__when_false(val* self) {
1771 val* var /* : FlowContext */;
1772 val* var1 /* : FlowContext */;
1773 val* var3 /* : FlowContext */;
1774 { /* Inline flow#FlowContext#when_false (self) on <self:Object(FlowContext)> */
1775 var3 = self->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on <self:Object(FlowContext)> */
1776 if (unlikely(var3 == NULL)) {
1777 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
1778 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 231);
1779 show_backtrace(1);
1780 }
1781 var1 = var3;
1782 RET_LABEL2:(void)0;
1783 }
1784 var = var1;
1785 RET_LABEL:;
1786 return var;
1787 }
1788 /* method flow#FlowContext#when_false= for (self: FlowContext, FlowContext) */
1789 void flow__FlowContext__when_false_61d(val* self, val* p0) {
1790 self->attrs[COLOR_flow__FlowContext___when_false].val = p0; /* _when_false on <self:FlowContext> */
1791 RET_LABEL:;
1792 }
1793 /* method flow#FlowContext#when_false= for (self: Object, FlowContext) */
1794 void VIRTUAL_flow__FlowContext__when_false_61d(val* self, val* p0) {
1795 { /* Inline flow#FlowContext#when_false= (self,p0) on <self:Object(FlowContext)> */
1796 self->attrs[COLOR_flow__FlowContext___when_false].val = p0; /* _when_false on <self:Object(FlowContext)> */
1797 RET_LABEL1:(void)0;
1798 }
1799 RET_LABEL:;
1800 }
1801 /* method flow#FlowContext#add_previous for (self: FlowContext, FlowContext) */
1802 void flow__FlowContext__add_previous(val* self, val* p0) {
1803 val* var_flow /* var flow: FlowContext */;
1804 short int var /* : Bool */;
1805 short int var1 /* : Bool */;
1806 short int var2 /* : Bool */;
1807 short int var_ /* var : Bool */;
1808 val* var3 /* : Array[FlowContext] */;
1809 val* var5 /* : Array[FlowContext] */;
1810 short int var6 /* : Bool */;
1811 short int var7 /* : Bool */;
1812 val* var8 /* : Array[FlowContext] */;
1813 val* var10 /* : Array[FlowContext] */;
1814 var_flow = p0;
1815 {
1816 var1 = flow__FlowContext__is_unreachable(var_flow);
1817 }
1818 var2 = !var1;
1819 var_ = var2;
1820 if (var2){
1821 {
1822 { /* Inline flow#FlowContext#previous (self) on <self:FlowContext> */
1823 var5 = self->attrs[COLOR_flow__FlowContext___previous].val; /* _previous on <self:FlowContext> */
1824 if (unlikely(var5 == NULL)) {
1825 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
1826 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 192);
1827 show_backtrace(1);
1828 }
1829 var3 = var5;
1830 RET_LABEL4:(void)0;
1831 }
1832 }
1833 {
1834 var6 = array__AbstractArrayRead__has(var3, var_flow);
1835 }
1836 var7 = !var6;
1837 var = var7;
1838 } else {
1839 var = var_;
1840 }
1841 if (var){
1842 {
1843 { /* Inline flow#FlowContext#previous (self) on <self:FlowContext> */
1844 var10 = self->attrs[COLOR_flow__FlowContext___previous].val; /* _previous on <self:FlowContext> */
1845 if (unlikely(var10 == NULL)) {
1846 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
1847 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 192);
1848 show_backtrace(1);
1849 }
1850 var8 = var10;
1851 RET_LABEL9:(void)0;
1852 }
1853 }
1854 {
1855 array__Array__add(var8, var_flow); /* Direct call array#Array#add on <var8:Array[FlowContext]>*/
1856 }
1857 } else {
1858 }
1859 RET_LABEL:;
1860 }
1861 /* method flow#FlowContext#add_previous for (self: Object, FlowContext) */
1862 void VIRTUAL_flow__FlowContext__add_previous(val* self, val* p0) {
1863 flow__FlowContext__add_previous(self, p0); /* Direct call flow#FlowContext#add_previous on <self:Object(FlowContext)>*/
1864 RET_LABEL:;
1865 }
1866 /* method flow#FlowContext#add_loop for (self: FlowContext, FlowContext) */
1867 void flow__FlowContext__add_loop(val* self, val* p0) {
1868 val* var_flow /* var flow: FlowContext */;
1869 short int var /* : Bool */;
1870 short int var1 /* : Bool */;
1871 short int var2 /* : Bool */;
1872 short int var_ /* var : Bool */;
1873 val* var3 /* : Array[FlowContext] */;
1874 val* var5 /* : Array[FlowContext] */;
1875 short int var6 /* : Bool */;
1876 short int var7 /* : Bool */;
1877 val* var8 /* : Array[FlowContext] */;
1878 val* var10 /* : Array[FlowContext] */;
1879 var_flow = p0;
1880 {
1881 var1 = flow__FlowContext__is_unreachable(var_flow);
1882 }
1883 var2 = !var1;
1884 var_ = var2;
1885 if (var2){
1886 {
1887 { /* Inline flow#FlowContext#previous (self) on <self:FlowContext> */
1888 var5 = self->attrs[COLOR_flow__FlowContext___previous].val; /* _previous on <self:FlowContext> */
1889 if (unlikely(var5 == NULL)) {
1890 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
1891 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 192);
1892 show_backtrace(1);
1893 }
1894 var3 = var5;
1895 RET_LABEL4:(void)0;
1896 }
1897 }
1898 {
1899 var6 = array__AbstractArrayRead__has(var3, var_flow);
1900 }
1901 var7 = !var6;
1902 var = var7;
1903 } else {
1904 var = var_;
1905 }
1906 if (var){
1907 {
1908 { /* Inline flow#FlowContext#loops (self) on <self:FlowContext> */
1909 var10 = self->attrs[COLOR_flow__FlowContext___loops].val; /* _loops on <self:FlowContext> */
1910 if (unlikely(var10 == NULL)) {
1911 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _loops");
1912 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 195);
1913 show_backtrace(1);
1914 }
1915 var8 = var10;
1916 RET_LABEL9:(void)0;
1917 }
1918 }
1919 {
1920 array__Array__add(var8, var_flow); /* Direct call array#Array#add on <var8:Array[FlowContext]>*/
1921 }
1922 } else {
1923 }
1924 RET_LABEL:;
1925 }
1926 /* method flow#FlowContext#add_loop for (self: Object, FlowContext) */
1927 void VIRTUAL_flow__FlowContext__add_loop(val* self, val* p0) {
1928 flow__FlowContext__add_loop(self, p0); /* Direct call flow#FlowContext#add_loop on <self:Object(FlowContext)>*/
1929 RET_LABEL:;
1930 }
1931 /* method flow#FlowContext#init for (self: FlowContext) */
1932 void flow__FlowContext__init(val* self) {
1933 RET_LABEL:;
1934 }
1935 /* method flow#FlowContext#init for (self: Object) */
1936 void VIRTUAL_flow__FlowContext__init(val* self) {
1937 { /* Inline flow#FlowContext#init (self) on <self:Object(FlowContext)> */
1938 RET_LABEL1:(void)0;
1939 }
1940 RET_LABEL:;
1941 }
1942 /* method flow#ANode#accept_flow_visitor for (self: ANode, FlowVisitor) */
1943 void flow__ANode__accept_flow_visitor(val* self, val* p0) {
1944 val* var_v /* var v: FlowVisitor */;
1945 var_v = p0;
1946 {
1947 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__visit_all]))(self, var_v) /* visit_all on <self:ANode>*/;
1948 }
1949 RET_LABEL:;
1950 }
1951 /* method flow#ANode#accept_flow_visitor for (self: Object, FlowVisitor) */
1952 void VIRTUAL_flow__ANode__accept_flow_visitor(val* self, val* p0) {
1953 flow__ANode__accept_flow_visitor(self, p0); /* Direct call flow#ANode#accept_flow_visitor on <self:Object(ANode)>*/
1954 RET_LABEL:;
1955 }
1956 /* method flow#APropdef#do_flow for (self: APropdef, ToolContext) */
1957 void flow__APropdef__do_flow(val* self, val* p0) {
1958 val* var_toolcontext /* var toolcontext: ToolContext */;
1959 val* var /* : FlowVisitor */;
1960 val* var_v /* var v: FlowVisitor */;
1961 var_toolcontext = p0;
1962 var = NEW_flow__FlowVisitor(&type_flow__FlowVisitor);
1963 {
1964 flow__FlowVisitor__init(var, var_toolcontext); /* Direct call flow#FlowVisitor#init on <var:FlowVisitor>*/
1965 }
1966 var_v = var;
1967 {
1968 parser_nodes__Visitor__enter_visit(var_v, self); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:FlowVisitor>*/
1969 }
1970 RET_LABEL:;
1971 }
1972 /* method flow#APropdef#do_flow for (self: Object, ToolContext) */
1973 void VIRTUAL_flow__APropdef__do_flow(val* self, val* p0) {
1974 flow__APropdef__do_flow(self, p0); /* Direct call flow#APropdef#do_flow on <self:Object(APropdef)>*/
1975 RET_LABEL:;
1976 }
1977 /* method flow#APropdef#before_flow_context= for (self: APropdef, nullable FlowContext) */
1978 void flow__APropdef__before_flow_context_61d(val* self, val* p0) {
1979 self->attrs[COLOR_flow__APropdef___before_flow_context].val = p0; /* _before_flow_context on <self:APropdef> */
1980 RET_LABEL:;
1981 }
1982 /* method flow#APropdef#before_flow_context= for (self: Object, nullable FlowContext) */
1983 void VIRTUAL_flow__APropdef__before_flow_context_61d(val* self, val* p0) {
1984 { /* Inline flow#APropdef#before_flow_context= (self,p0) on <self:Object(APropdef)> */
1985 self->attrs[COLOR_flow__APropdef___before_flow_context].val = p0; /* _before_flow_context on <self:Object(APropdef)> */
1986 RET_LABEL1:(void)0;
1987 }
1988 RET_LABEL:;
1989 }
1990 /* method flow#APropdef#after_flow_context= for (self: APropdef, nullable FlowContext) */
1991 void flow__APropdef__after_flow_context_61d(val* self, val* p0) {
1992 self->attrs[COLOR_flow__APropdef___after_flow_context].val = p0; /* _after_flow_context on <self:APropdef> */
1993 RET_LABEL:;
1994 }
1995 /* method flow#APropdef#after_flow_context= for (self: Object, nullable FlowContext) */
1996 void VIRTUAL_flow__APropdef__after_flow_context_61d(val* self, val* p0) {
1997 { /* Inline flow#APropdef#after_flow_context= (self,p0) on <self:Object(APropdef)> */
1998 self->attrs[COLOR_flow__APropdef___after_flow_context].val = p0; /* _after_flow_context on <self:Object(APropdef)> */
1999 RET_LABEL1:(void)0;
2000 }
2001 RET_LABEL:;
2002 }
2003 /* method flow#APropdef#accept_flow_visitor for (self: APropdef, FlowVisitor) */
2004 void flow__APropdef__accept_flow_visitor(val* self, val* p0) {
2005 val* var_v /* var v: FlowVisitor */;
2006 val* var /* : FlowContext */;
2007 val* var2 /* : FlowContext */;
2008 val* var4 /* : FlowContext */;
2009 val* var6 /* : FlowContext */;
2010 var_v = p0;
2011 {
2012 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
2013 var2 = var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <var_v:FlowVisitor> */
2014 if (unlikely(var2 == NULL)) {
2015 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
2016 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 39);
2017 show_backtrace(1);
2018 }
2019 var = var2;
2020 RET_LABEL1:(void)0;
2021 }
2022 }
2023 {
2024 { /* Inline flow#APropdef#before_flow_context= (self,var) on <self:APropdef> */
2025 self->attrs[COLOR_flow__APropdef___before_flow_context].val = var; /* _before_flow_context on <self:APropdef> */
2026 RET_LABEL3:(void)0;
2027 }
2028 }
2029 {
2030 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__APropdef__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:APropdef>*/;
2031 }
2032 {
2033 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
2034 var6 = var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <var_v:FlowVisitor> */
2035 if (unlikely(var6 == NULL)) {
2036 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
2037 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 39);
2038 show_backtrace(1);
2039 }
2040 var4 = var6;
2041 RET_LABEL5:(void)0;
2042 }
2043 }
2044 {
2045 { /* Inline flow#APropdef#after_flow_context= (self,var4) on <self:APropdef> */
2046 self->attrs[COLOR_flow__APropdef___after_flow_context].val = var4; /* _after_flow_context on <self:APropdef> */
2047 RET_LABEL7:(void)0;
2048 }
2049 }
2050 RET_LABEL:;
2051 }
2052 /* method flow#APropdef#accept_flow_visitor for (self: Object, FlowVisitor) */
2053 void VIRTUAL_flow__APropdef__accept_flow_visitor(val* self, val* p0) {
2054 flow__APropdef__accept_flow_visitor(self, p0); /* Direct call flow#APropdef#accept_flow_visitor on <self:Object(APropdef)>*/
2055 RET_LABEL:;
2056 }
2057 /* method flow#AExpr#after_flow_context for (self: AExpr): nullable FlowContext */
2058 val* flow__AExpr__after_flow_context(val* self) {
2059 val* var /* : nullable FlowContext */;
2060 val* var1 /* : nullable FlowContext */;
2061 var1 = self->attrs[COLOR_flow__AExpr___after_flow_context].val; /* _after_flow_context on <self:AExpr> */
2062 var = var1;
2063 RET_LABEL:;
2064 return var;
2065 }
2066 /* method flow#AExpr#after_flow_context for (self: Object): nullable FlowContext */
2067 val* VIRTUAL_flow__AExpr__after_flow_context(val* self) {
2068 val* var /* : nullable FlowContext */;
2069 val* var1 /* : nullable FlowContext */;
2070 val* var3 /* : nullable FlowContext */;
2071 { /* Inline flow#AExpr#after_flow_context (self) on <self:Object(AExpr)> */
2072 var3 = self->attrs[COLOR_flow__AExpr___after_flow_context].val; /* _after_flow_context on <self:Object(AExpr)> */
2073 var1 = var3;
2074 RET_LABEL2:(void)0;
2075 }
2076 var = var1;
2077 RET_LABEL:;
2078 return var;
2079 }
2080 /* method flow#AExpr#after_flow_context= for (self: AExpr, nullable FlowContext) */
2081 void flow__AExpr__after_flow_context_61d(val* self, val* p0) {
2082 self->attrs[COLOR_flow__AExpr___after_flow_context].val = p0; /* _after_flow_context on <self:AExpr> */
2083 RET_LABEL:;
2084 }
2085 /* method flow#AExpr#after_flow_context= for (self: Object, nullable FlowContext) */
2086 void VIRTUAL_flow__AExpr__after_flow_context_61d(val* self, val* p0) {
2087 { /* Inline flow#AExpr#after_flow_context= (self,p0) on <self:Object(AExpr)> */
2088 self->attrs[COLOR_flow__AExpr___after_flow_context].val = p0; /* _after_flow_context on <self:Object(AExpr)> */
2089 RET_LABEL1:(void)0;
2090 }
2091 RET_LABEL:;
2092 }
2093 /* method flow#AVarAssignExpr#accept_flow_visitor for (self: AVarAssignExpr, FlowVisitor) */
2094 void flow__AVarAssignExpr__accept_flow_visitor(val* self, val* p0) {
2095 val* var_v /* var v: FlowVisitor */;
2096 val* var /* : FlowContext */;
2097 var_v = p0;
2098 {
2099 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__AVarAssignExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:AVarAssignExpr>*/;
2100 }
2101 {
2102 var = flow__FlowVisitor__make_sub_flow(var_v);
2103 }
2104 {
2105 { /* Inline flow#AExpr#after_flow_context= (self,var) on <self:AVarAssignExpr> */
2106 self->attrs[COLOR_flow__AExpr___after_flow_context].val = var; /* _after_flow_context on <self:AVarAssignExpr> */
2107 RET_LABEL1:(void)0;
2108 }
2109 }
2110 RET_LABEL:;
2111 }
2112 /* method flow#AVarAssignExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2113 void VIRTUAL_flow__AVarAssignExpr__accept_flow_visitor(val* self, val* p0) {
2114 flow__AVarAssignExpr__accept_flow_visitor(self, p0); /* Direct call flow#AVarAssignExpr#accept_flow_visitor on <self:Object(AVarAssignExpr)>*/
2115 RET_LABEL:;
2116 }
2117 /* method flow#AReassignFormExpr#accept_flow_visitor for (self: AReassignFormExpr, FlowVisitor) */
2118 void flow__AReassignFormExpr__accept_flow_visitor(val* self, val* p0) {
2119 val* var_v /* var v: FlowVisitor */;
2120 val* var /* : FlowContext */;
2121 var_v = p0;
2122 {
2123 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__AReassignFormExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:AReassignFormExpr>*/;
2124 }
2125 {
2126 var = flow__FlowVisitor__make_sub_flow(var_v);
2127 }
2128 {
2129 { /* Inline flow#AExpr#after_flow_context= (self,var) on <self:AReassignFormExpr> */
2130 self->attrs[COLOR_flow__AExpr___after_flow_context].val = var; /* _after_flow_context on <self:AReassignFormExpr> */
2131 RET_LABEL1:(void)0;
2132 }
2133 }
2134 RET_LABEL:;
2135 }
2136 /* method flow#AReassignFormExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2137 void VIRTUAL_flow__AReassignFormExpr__accept_flow_visitor(val* self, val* p0) {
2138 flow__AReassignFormExpr__accept_flow_visitor(self, p0); /* Direct call flow#AReassignFormExpr#accept_flow_visitor on <self:Object(AReassignFormExpr)>*/
2139 RET_LABEL:;
2140 }
2141 /* method flow#ABlockExpr#accept_flow_visitor for (self: ABlockExpr, FlowVisitor) */
2142 void flow__ABlockExpr__accept_flow_visitor(val* self, val* p0) {
2143 val* var_v /* var v: FlowVisitor */;
2144 val* var /* : ANodes[AExpr] */;
2145 val* var2 /* : ANodes[AExpr] */;
2146 val* var3 /* : Iterator[ANode] */;
2147 short int var4 /* : Bool */;
2148 val* var5 /* : nullable Object */;
2149 val* var_e /* var e: AExpr */;
2150 val* var6 /* : FlowContext */;
2151 val* var8 /* : FlowContext */;
2152 short int var9 /* : Bool */;
2153 short int var10 /* : Bool */;
2154 val* var11 /* : FlowContext */;
2155 val* var13 /* : FlowContext */;
2156 short int var14 /* : Bool */;
2157 short int var16 /* : Bool */;
2158 short int var17 /* : Bool */;
2159 val* var18 /* : FlowContext */;
2160 val* var20 /* : FlowContext */;
2161 short int var21 /* : Bool */;
2162 val* var23 /* : ToolContext */;
2163 val* var25 /* : ToolContext */;
2164 val* var26 /* : Location */;
2165 static val* varonce;
2166 val* var27 /* : String */;
2167 char* var28 /* : NativeString */;
2168 long var29 /* : Int */;
2169 val* var30 /* : FlatString */;
2170 var_v = p0;
2171 {
2172 { /* Inline parser_nodes#ABlockExpr#n_expr (self) on <self:ABlockExpr> */
2173 var2 = self->attrs[COLOR_parser_nodes__ABlockExpr___n_expr].val; /* _n_expr on <self:ABlockExpr> */
2174 if (unlikely(var2 == NULL)) {
2175 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
2176 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 1424);
2177 show_backtrace(1);
2178 }
2179 var = var2;
2180 RET_LABEL1:(void)0;
2181 }
2182 }
2183 {
2184 var3 = parser_nodes__ANodes__iterator(var);
2185 }
2186 for(;;) {
2187 {
2188 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[ANode]>*/;
2189 }
2190 if(!var4) break;
2191 {
2192 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[ANode]>*/;
2193 }
2194 var_e = var5;
2195 {
2196 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
2197 var8 = var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <var_v:FlowVisitor> */
2198 if (unlikely(var8 == NULL)) {
2199 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
2200 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 39);
2201 show_backtrace(1);
2202 }
2203 var6 = var8;
2204 RET_LABEL7:(void)0;
2205 }
2206 }
2207 {
2208 var9 = flow__FlowContext__is_unreachable(var6);
2209 }
2210 var10 = !var9;
2211 if (var10){
2212 {
2213 parser_nodes__Visitor__enter_visit(var_v, var_e); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:FlowVisitor>*/
2214 }
2215 } else {
2216 {
2217 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
2218 var13 = var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <var_v:FlowVisitor> */
2219 if (unlikely(var13 == NULL)) {
2220 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
2221 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 39);
2222 show_backtrace(1);
2223 }
2224 var11 = var13;
2225 RET_LABEL12:(void)0;
2226 }
2227 }
2228 {
2229 { /* Inline flow#FlowContext#is_already_unreachable (var11) on <var11:FlowContext> */
2230 var16 = var11->attrs[COLOR_flow__FlowContext___is_already_unreachable].s; /* _is_already_unreachable on <var11:FlowContext> */
2231 var14 = var16;
2232 RET_LABEL15:(void)0;
2233 }
2234 }
2235 var17 = !var14;
2236 if (var17){
2237 {
2238 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
2239 var20 = var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <var_v:FlowVisitor> */
2240 if (unlikely(var20 == NULL)) {
2241 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
2242 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 39);
2243 show_backtrace(1);
2244 }
2245 var18 = var20;
2246 RET_LABEL19:(void)0;
2247 }
2248 }
2249 var21 = 1;
2250 {
2251 { /* Inline flow#FlowContext#is_already_unreachable= (var18,var21) on <var18:FlowContext> */
2252 var18->attrs[COLOR_flow__FlowContext___is_already_unreachable].s = var21; /* _is_already_unreachable on <var18:FlowContext> */
2253 RET_LABEL22:(void)0;
2254 }
2255 }
2256 {
2257 { /* Inline flow#FlowVisitor#toolcontext (var_v) on <var_v:FlowVisitor> */
2258 var25 = var_v->attrs[COLOR_flow__FlowVisitor___toolcontext].val; /* _toolcontext on <var_v:FlowVisitor> */
2259 if (unlikely(var25 == NULL)) {
2260 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
2261 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 41);
2262 show_backtrace(1);
2263 }
2264 var23 = var25;
2265 RET_LABEL24:(void)0;
2266 }
2267 }
2268 {
2269 var26 = parser_nodes__ANode__hot_location(var_e);
2270 }
2271 if (varonce) {
2272 var27 = varonce;
2273 } else {
2274 var28 = "Error: unreachable statement.";
2275 var29 = 29;
2276 var30 = string__NativeString__to_s_with_length(var28, var29);
2277 var27 = var30;
2278 varonce = var27;
2279 }
2280 {
2281 toolcontext__ToolContext__error(var23, var26, var27); /* Direct call toolcontext#ToolContext#error on <var23:ToolContext>*/
2282 }
2283 } else {
2284 }
2285 }
2286 CONTINUE_label: (void)0;
2287 {
2288 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[ANode]>*/;
2289 }
2290 }
2291 BREAK_label: (void)0;
2292 RET_LABEL:;
2293 }
2294 /* method flow#ABlockExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2295 void VIRTUAL_flow__ABlockExpr__accept_flow_visitor(val* self, val* p0) {
2296 flow__ABlockExpr__accept_flow_visitor(self, p0); /* Direct call flow#ABlockExpr#accept_flow_visitor on <self:Object(ABlockExpr)>*/
2297 RET_LABEL:;
2298 }
2299 /* method flow#AReturnExpr#accept_flow_visitor for (self: AReturnExpr, FlowVisitor) */
2300 void flow__AReturnExpr__accept_flow_visitor(val* self, val* p0) {
2301 val* var_v /* var v: FlowVisitor */;
2302 val* var /* : FlowContext */;
2303 var_v = p0;
2304 {
2305 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__AReturnExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:AReturnExpr>*/;
2306 }
2307 {
2308 var = flow__FlowVisitor__make_unreachable_flow(var_v);
2309 }
2310 var;
2311 RET_LABEL:;
2312 }
2313 /* method flow#AReturnExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2314 void VIRTUAL_flow__AReturnExpr__accept_flow_visitor(val* self, val* p0) {
2315 flow__AReturnExpr__accept_flow_visitor(self, p0); /* Direct call flow#AReturnExpr#accept_flow_visitor on <self:Object(AReturnExpr)>*/
2316 RET_LABEL:;
2317 }
2318 /* method flow#AContinueExpr#before_flow_context for (self: AContinueExpr): nullable FlowContext */
2319 val* flow__AContinueExpr__before_flow_context(val* self) {
2320 val* var /* : nullable FlowContext */;
2321 val* var1 /* : nullable FlowContext */;
2322 val* var3 /* : nullable FlowContext */;
2323 val* var_after /* var after: nullable FlowContext */;
2324 val* var4 /* : null */;
2325 short int var5 /* : Bool */;
2326 short int var6 /* : Bool */;
2327 val* var_other /* var other: nullable Object */;
2328 short int var8 /* : Bool */;
2329 short int var10 /* : Bool */;
2330 val* var11 /* : null */;
2331 val* var12 /* : Array[FlowContext] */;
2332 val* var14 /* : Array[FlowContext] */;
2333 val* var15 /* : nullable Object */;
2334 {
2335 { /* Inline flow#AExpr#after_flow_context (self) on <self:AContinueExpr> */
2336 var3 = self->attrs[COLOR_flow__AExpr___after_flow_context].val; /* _after_flow_context on <self:AContinueExpr> */
2337 var1 = var3;
2338 RET_LABEL2:(void)0;
2339 }
2340 }
2341 var_after = var1;
2342 var4 = NULL;
2343 if (var_after == NULL) {
2344 var5 = 1; /* is null */
2345 } else {
2346 var5 = 0; /* arg is null but recv is not */
2347 }
2348 if (0) {
2349 { /* Inline kernel#Object#== (var_after,var4) on <var_after:nullable FlowContext> */
2350 var_other = var4;
2351 {
2352 { /* Inline kernel#Object#is_same_instance (var_after,var_other) on <var_after:nullable FlowContext(FlowContext)> */
2353 var10 = var_after == var_other;
2354 var8 = var10;
2355 goto RET_LABEL9;
2356 RET_LABEL9:(void)0;
2357 }
2358 }
2359 var6 = var8;
2360 goto RET_LABEL7;
2361 RET_LABEL7:(void)0;
2362 }
2363 var5 = var6;
2364 }
2365 if (var5){
2366 var11 = NULL;
2367 var = var11;
2368 goto RET_LABEL;
2369 } else {
2370 }
2371 {
2372 { /* Inline flow#FlowContext#previous (var_after) on <var_after:nullable FlowContext(FlowContext)> */
2373 var14 = var_after->attrs[COLOR_flow__FlowContext___previous].val; /* _previous on <var_after:nullable FlowContext(FlowContext)> */
2374 if (unlikely(var14 == NULL)) {
2375 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
2376 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 192);
2377 show_backtrace(1);
2378 }
2379 var12 = var14;
2380 RET_LABEL13:(void)0;
2381 }
2382 }
2383 {
2384 var15 = abstract_collection__SequenceRead__first(var12);
2385 }
2386 var = var15;
2387 goto RET_LABEL;
2388 RET_LABEL:;
2389 return var;
2390 }
2391 /* method flow#AContinueExpr#before_flow_context for (self: Object): nullable FlowContext */
2392 val* VIRTUAL_flow__AContinueExpr__before_flow_context(val* self) {
2393 val* var /* : nullable FlowContext */;
2394 val* var1 /* : nullable FlowContext */;
2395 var1 = flow__AContinueExpr__before_flow_context(self);
2396 var = var1;
2397 RET_LABEL:;
2398 return var;
2399 }
2400 /* method flow#AContinueExpr#accept_flow_visitor for (self: AContinueExpr, FlowVisitor) */
2401 void flow__AContinueExpr__accept_flow_visitor(val* self, val* p0) {
2402 val* var_v /* var v: FlowVisitor */;
2403 val* var /* : FlowContext */;
2404 var_v = p0;
2405 {
2406 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__AContinueExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:AContinueExpr>*/;
2407 }
2408 {
2409 var = flow__FlowVisitor__make_unreachable_flow(var_v);
2410 }
2411 var;
2412 RET_LABEL:;
2413 }
2414 /* method flow#AContinueExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2415 void VIRTUAL_flow__AContinueExpr__accept_flow_visitor(val* self, val* p0) {
2416 flow__AContinueExpr__accept_flow_visitor(self, p0); /* Direct call flow#AContinueExpr#accept_flow_visitor on <self:Object(AContinueExpr)>*/
2417 RET_LABEL:;
2418 }
2419 /* method flow#ABreakExpr#before_flow_context for (self: ABreakExpr): nullable FlowContext */
2420 val* flow__ABreakExpr__before_flow_context(val* self) {
2421 val* var /* : nullable FlowContext */;
2422 val* var1 /* : nullable FlowContext */;
2423 val* var3 /* : nullable FlowContext */;
2424 val* var_after /* var after: nullable FlowContext */;
2425 val* var4 /* : null */;
2426 short int var5 /* : Bool */;
2427 short int var6 /* : Bool */;
2428 val* var_other /* var other: nullable Object */;
2429 short int var8 /* : Bool */;
2430 short int var10 /* : Bool */;
2431 val* var11 /* : null */;
2432 val* var12 /* : Array[FlowContext] */;
2433 val* var14 /* : Array[FlowContext] */;
2434 val* var15 /* : nullable Object */;
2435 {
2436 { /* Inline flow#AExpr#after_flow_context (self) on <self:ABreakExpr> */
2437 var3 = self->attrs[COLOR_flow__AExpr___after_flow_context].val; /* _after_flow_context on <self:ABreakExpr> */
2438 var1 = var3;
2439 RET_LABEL2:(void)0;
2440 }
2441 }
2442 var_after = var1;
2443 var4 = NULL;
2444 if (var_after == NULL) {
2445 var5 = 1; /* is null */
2446 } else {
2447 var5 = 0; /* arg is null but recv is not */
2448 }
2449 if (0) {
2450 { /* Inline kernel#Object#== (var_after,var4) on <var_after:nullable FlowContext> */
2451 var_other = var4;
2452 {
2453 { /* Inline kernel#Object#is_same_instance (var_after,var_other) on <var_after:nullable FlowContext(FlowContext)> */
2454 var10 = var_after == var_other;
2455 var8 = var10;
2456 goto RET_LABEL9;
2457 RET_LABEL9:(void)0;
2458 }
2459 }
2460 var6 = var8;
2461 goto RET_LABEL7;
2462 RET_LABEL7:(void)0;
2463 }
2464 var5 = var6;
2465 }
2466 if (var5){
2467 var11 = NULL;
2468 var = var11;
2469 goto RET_LABEL;
2470 } else {
2471 }
2472 {
2473 { /* Inline flow#FlowContext#previous (var_after) on <var_after:nullable FlowContext(FlowContext)> */
2474 var14 = var_after->attrs[COLOR_flow__FlowContext___previous].val; /* _previous on <var_after:nullable FlowContext(FlowContext)> */
2475 if (unlikely(var14 == NULL)) {
2476 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
2477 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 192);
2478 show_backtrace(1);
2479 }
2480 var12 = var14;
2481 RET_LABEL13:(void)0;
2482 }
2483 }
2484 {
2485 var15 = abstract_collection__SequenceRead__first(var12);
2486 }
2487 var = var15;
2488 goto RET_LABEL;
2489 RET_LABEL:;
2490 return var;
2491 }
2492 /* method flow#ABreakExpr#before_flow_context for (self: Object): nullable FlowContext */
2493 val* VIRTUAL_flow__ABreakExpr__before_flow_context(val* self) {
2494 val* var /* : nullable FlowContext */;
2495 val* var1 /* : nullable FlowContext */;
2496 var1 = flow__ABreakExpr__before_flow_context(self);
2497 var = var1;
2498 RET_LABEL:;
2499 return var;
2500 }
2501 /* method flow#ABreakExpr#accept_flow_visitor for (self: ABreakExpr, FlowVisitor) */
2502 void flow__ABreakExpr__accept_flow_visitor(val* self, val* p0) {
2503 val* var_v /* var v: FlowVisitor */;
2504 val* var /* : FlowContext */;
2505 var_v = p0;
2506 {
2507 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__ABreakExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:ABreakExpr>*/;
2508 }
2509 {
2510 var = flow__FlowVisitor__make_unreachable_flow(var_v);
2511 }
2512 var;
2513 RET_LABEL:;
2514 }
2515 /* method flow#ABreakExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2516 void VIRTUAL_flow__ABreakExpr__accept_flow_visitor(val* self, val* p0) {
2517 flow__ABreakExpr__accept_flow_visitor(self, p0); /* Direct call flow#ABreakExpr#accept_flow_visitor on <self:Object(ABreakExpr)>*/
2518 RET_LABEL:;
2519 }
2520 /* method flow#AAbortExpr#accept_flow_visitor for (self: AAbortExpr, FlowVisitor) */
2521 void flow__AAbortExpr__accept_flow_visitor(val* self, val* p0) {
2522 val* var_v /* var v: FlowVisitor */;
2523 val* var /* : FlowContext */;
2524 var_v = p0;
2525 {
2526 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__AAbortExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:AAbortExpr>*/;
2527 }
2528 {
2529 var = flow__FlowVisitor__make_unreachable_flow(var_v);
2530 }
2531 var;
2532 RET_LABEL:;
2533 }
2534 /* method flow#AAbortExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2535 void VIRTUAL_flow__AAbortExpr__accept_flow_visitor(val* self, val* p0) {
2536 flow__AAbortExpr__accept_flow_visitor(self, p0); /* Direct call flow#AAbortExpr#accept_flow_visitor on <self:Object(AAbortExpr)>*/
2537 RET_LABEL:;
2538 }
2539 /* method flow#ADoExpr#accept_flow_visitor for (self: ADoExpr, FlowVisitor) */
2540 void flow__ADoExpr__accept_flow_visitor(val* self, val* p0) {
2541 val* var_v /* var v: FlowVisitor */;
2542 val* var /* : nullable EscapeMark */;
2543 val* var2 /* : nullable EscapeMark */;
2544 var_v = p0;
2545 {
2546 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__ADoExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:ADoExpr>*/;
2547 }
2548 {
2549 { /* Inline scope#ADoExpr#escapemark (self) on <self:ADoExpr> */
2550 var2 = self->attrs[COLOR_scope__ADoExpr___escapemark].val; /* _escapemark on <self:ADoExpr> */
2551 var = var2;
2552 RET_LABEL1:(void)0;
2553 }
2554 }
2555 {
2556 flow__FlowVisitor__merge_breaks(var_v, var); /* Direct call flow#FlowVisitor#merge_breaks on <var_v:FlowVisitor>*/
2557 }
2558 RET_LABEL:;
2559 }
2560 /* method flow#ADoExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2561 void VIRTUAL_flow__ADoExpr__accept_flow_visitor(val* self, val* p0) {
2562 flow__ADoExpr__accept_flow_visitor(self, p0); /* Direct call flow#ADoExpr#accept_flow_visitor on <self:Object(ADoExpr)>*/
2563 RET_LABEL:;
2564 }
2565 /* method flow#AIfExpr#accept_flow_visitor for (self: AIfExpr, FlowVisitor) */
2566 void flow__AIfExpr__accept_flow_visitor(val* self, val* p0) {
2567 val* var_v /* var v: FlowVisitor */;
2568 val* var /* : AExpr */;
2569 val* var1 /* : FlowContext */;
2570 val* var_after_expr /* var after_expr: FlowContext */;
2571 val* var2 /* : FlowContext */;
2572 val* var4 /* : FlowContext */;
2573 val* var6 /* : nullable AExpr */;
2574 val* var7 /* : FlowContext */;
2575 val* var9 /* : FlowContext */;
2576 val* var_after_then /* var after_then: FlowContext */;
2577 val* var10 /* : FlowContext */;
2578 val* var12 /* : FlowContext */;
2579 val* var14 /* : nullable AExpr */;
2580 val* var15 /* : FlowContext */;
2581 val* var17 /* : FlowContext */;
2582 val* var_after_else /* var after_else: FlowContext */;
2583 val* var18 /* : FlowContext */;
2584 var_v = p0;
2585 {
2586 var = parser_nodes__AIfExpr__n_expr(self);
2587 }
2588 {
2589 var1 = flow__FlowVisitor__visit_expr(var_v, var);
2590 }
2591 var_after_expr = var1;
2592 {
2593 { /* Inline flow#FlowContext#when_true (var_after_expr) on <var_after_expr:FlowContext> */
2594 var4 = var_after_expr->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on <var_after_expr:FlowContext> */
2595 if (unlikely(var4 == NULL)) {
2596 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
2597 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 228);
2598 show_backtrace(1);
2599 }
2600 var2 = var4;
2601 RET_LABEL3:(void)0;
2602 }
2603 }
2604 {
2605 { /* Inline flow#FlowVisitor#current_flow_context= (var_v,var2) on <var_v:FlowVisitor> */
2606 var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var2; /* _current_flow_context on <var_v:FlowVisitor> */
2607 RET_LABEL5:(void)0;
2608 }
2609 }
2610 {
2611 var6 = parser_nodes__AIfExpr__n_then(self);
2612 }
2613 {
2614 parser_nodes__Visitor__enter_visit(var_v, var6); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:FlowVisitor>*/
2615 }
2616 {
2617 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
2618 var9 = var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <var_v:FlowVisitor> */
2619 if (unlikely(var9 == NULL)) {
2620 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
2621 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 39);
2622 show_backtrace(1);
2623 }
2624 var7 = var9;
2625 RET_LABEL8:(void)0;
2626 }
2627 }
2628 var_after_then = var7;
2629 {
2630 { /* Inline flow#FlowContext#when_false (var_after_expr) on <var_after_expr:FlowContext> */
2631 var12 = var_after_expr->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on <var_after_expr:FlowContext> */
2632 if (unlikely(var12 == NULL)) {
2633 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
2634 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 231);
2635 show_backtrace(1);
2636 }
2637 var10 = var12;
2638 RET_LABEL11:(void)0;
2639 }
2640 }
2641 {
2642 { /* Inline flow#FlowVisitor#current_flow_context= (var_v,var10) on <var_v:FlowVisitor> */
2643 var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var10; /* _current_flow_context on <var_v:FlowVisitor> */
2644 RET_LABEL13:(void)0;
2645 }
2646 }
2647 {
2648 var14 = parser_nodes__AIfExpr__n_else(self);
2649 }
2650 {
2651 parser_nodes__Visitor__enter_visit(var_v, var14); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:FlowVisitor>*/
2652 }
2653 {
2654 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
2655 var17 = var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <var_v:FlowVisitor> */
2656 if (unlikely(var17 == NULL)) {
2657 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
2658 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 39);
2659 show_backtrace(1);
2660 }
2661 var15 = var17;
2662 RET_LABEL16:(void)0;
2663 }
2664 }
2665 var_after_else = var15;
2666 {
2667 var18 = flow__FlowVisitor__make_merge_flow(var_v, var_after_then, var_after_else);
2668 }
2669 var18;
2670 RET_LABEL:;
2671 }
2672 /* method flow#AIfExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2673 void VIRTUAL_flow__AIfExpr__accept_flow_visitor(val* self, val* p0) {
2674 flow__AIfExpr__accept_flow_visitor(self, p0); /* Direct call flow#AIfExpr#accept_flow_visitor on <self:Object(AIfExpr)>*/
2675 RET_LABEL:;
2676 }
2677 /* method flow#AIfexprExpr#accept_flow_visitor for (self: AIfexprExpr, FlowVisitor) */
2678 void flow__AIfexprExpr__accept_flow_visitor(val* self, val* p0) {
2679 val* var_v /* var v: FlowVisitor */;
2680 val* var /* : AExpr */;
2681 val* var1 /* : FlowContext */;
2682 val* var_after_expr /* var after_expr: FlowContext */;
2683 val* var2 /* : FlowContext */;
2684 val* var4 /* : FlowContext */;
2685 val* var6 /* : AExpr */;
2686 val* var7 /* : FlowContext */;
2687 val* var9 /* : FlowContext */;
2688 val* var_after_then /* var after_then: FlowContext */;
2689 val* var10 /* : FlowContext */;
2690 val* var12 /* : FlowContext */;
2691 val* var14 /* : AExpr */;
2692 val* var15 /* : FlowContext */;
2693 val* var17 /* : FlowContext */;
2694 val* var_after_else /* var after_else: FlowContext */;
2695 val* var18 /* : FlowContext */;
2696 var_v = p0;
2697 {
2698 var = parser_nodes__AIfexprExpr__n_expr(self);
2699 }
2700 {
2701 var1 = flow__FlowVisitor__visit_expr(var_v, var);
2702 }
2703 var_after_expr = var1;
2704 {
2705 { /* Inline flow#FlowContext#when_true (var_after_expr) on <var_after_expr:FlowContext> */
2706 var4 = var_after_expr->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on <var_after_expr:FlowContext> */
2707 if (unlikely(var4 == NULL)) {
2708 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
2709 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 228);
2710 show_backtrace(1);
2711 }
2712 var2 = var4;
2713 RET_LABEL3:(void)0;
2714 }
2715 }
2716 {
2717 { /* Inline flow#FlowVisitor#current_flow_context= (var_v,var2) on <var_v:FlowVisitor> */
2718 var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var2; /* _current_flow_context on <var_v:FlowVisitor> */
2719 RET_LABEL5:(void)0;
2720 }
2721 }
2722 {
2723 var6 = parser_nodes__AIfexprExpr__n_then(self);
2724 }
2725 {
2726 parser_nodes__Visitor__enter_visit(var_v, var6); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:FlowVisitor>*/
2727 }
2728 {
2729 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
2730 var9 = var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <var_v:FlowVisitor> */
2731 if (unlikely(var9 == NULL)) {
2732 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
2733 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 39);
2734 show_backtrace(1);
2735 }
2736 var7 = var9;
2737 RET_LABEL8:(void)0;
2738 }
2739 }
2740 var_after_then = var7;
2741 {
2742 { /* Inline flow#FlowContext#when_false (var_after_expr) on <var_after_expr:FlowContext> */
2743 var12 = var_after_expr->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on <var_after_expr:FlowContext> */
2744 if (unlikely(var12 == NULL)) {
2745 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
2746 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 231);
2747 show_backtrace(1);
2748 }
2749 var10 = var12;
2750 RET_LABEL11:(void)0;
2751 }
2752 }
2753 {
2754 { /* Inline flow#FlowVisitor#current_flow_context= (var_v,var10) on <var_v:FlowVisitor> */
2755 var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var10; /* _current_flow_context on <var_v:FlowVisitor> */
2756 RET_LABEL13:(void)0;
2757 }
2758 }
2759 {
2760 var14 = parser_nodes__AIfexprExpr__n_else(self);
2761 }
2762 {
2763 parser_nodes__Visitor__enter_visit(var_v, var14); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:FlowVisitor>*/
2764 }
2765 {
2766 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
2767 var17 = var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <var_v:FlowVisitor> */
2768 if (unlikely(var17 == NULL)) {
2769 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
2770 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 39);
2771 show_backtrace(1);
2772 }
2773 var15 = var17;
2774 RET_LABEL16:(void)0;
2775 }
2776 }
2777 var_after_else = var15;
2778 {
2779 var18 = flow__FlowVisitor__make_merge_flow(var_v, var_after_then, var_after_else);
2780 }
2781 var18;
2782 RET_LABEL:;
2783 }
2784 /* method flow#AIfexprExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2785 void VIRTUAL_flow__AIfexprExpr__accept_flow_visitor(val* self, val* p0) {
2786 flow__AIfexprExpr__accept_flow_visitor(self, p0); /* Direct call flow#AIfexprExpr#accept_flow_visitor on <self:Object(AIfexprExpr)>*/
2787 RET_LABEL:;
2788 }
2789 /* method flow#AWhileExpr#accept_flow_visitor for (self: AWhileExpr, FlowVisitor) */
2790 void flow__AWhileExpr__accept_flow_visitor(val* self, val* p0) {
2791 val* var_v /* var v: FlowVisitor */;
2792 val* var /* : FlowContext */;
2793 val* var_before_loop /* var before_loop: FlowContext */;
2794 val* var1 /* : AExpr */;
2795 val* var2 /* : FlowContext */;
2796 val* var_after_expr /* var after_expr: FlowContext */;
2797 val* var3 /* : FlowContext */;
2798 val* var5 /* : FlowContext */;
2799 val* var7 /* : nullable AExpr */;
2800 val* var8 /* : FlowContext */;
2801 val* var10 /* : FlowContext */;
2802 val* var_after_block /* var after_block: FlowContext */;
2803 val* var11 /* : nullable EscapeMark */;
2804 val* var13 /* : nullable EscapeMark */;
2805 val* var14 /* : FlowContext */;
2806 val* var16 /* : FlowContext */;
2807 val* var18 /* : nullable EscapeMark */;
2808 val* var20 /* : nullable EscapeMark */;
2809 var_v = p0;
2810 {
2811 var = flow__FlowVisitor__make_sub_flow(var_v);
2812 }
2813 var_before_loop = var;
2814 {
2815 var1 = parser_nodes__AWhileExpr__n_expr(self);
2816 }
2817 {
2818 var2 = flow__FlowVisitor__visit_expr(var_v, var1);
2819 }
2820 var_after_expr = var2;
2821 {
2822 { /* Inline flow#FlowContext#when_true (var_after_expr) on <var_after_expr:FlowContext> */
2823 var5 = var_after_expr->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on <var_after_expr:FlowContext> */
2824 if (unlikely(var5 == NULL)) {
2825 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
2826 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 228);
2827 show_backtrace(1);
2828 }
2829 var3 = var5;
2830 RET_LABEL4:(void)0;
2831 }
2832 }
2833 {
2834 { /* Inline flow#FlowVisitor#current_flow_context= (var_v,var3) on <var_v:FlowVisitor> */
2835 var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var3; /* _current_flow_context on <var_v:FlowVisitor> */
2836 RET_LABEL6:(void)0;
2837 }
2838 }
2839 {
2840 var7 = parser_nodes__AWhileExpr__n_block(self);
2841 }
2842 {
2843 parser_nodes__Visitor__enter_visit(var_v, var7); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:FlowVisitor>*/
2844 }
2845 {
2846 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
2847 var10 = var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <var_v:FlowVisitor> */
2848 if (unlikely(var10 == NULL)) {
2849 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
2850 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 39);
2851 show_backtrace(1);
2852 }
2853 var8 = var10;
2854 RET_LABEL9:(void)0;
2855 }
2856 }
2857 var_after_block = var8;
2858 {
2859 flow__FlowContext__add_loop(var_before_loop, var_after_block); /* Direct call flow#FlowContext#add_loop on <var_before_loop:FlowContext>*/
2860 }
2861 {
2862 { /* Inline scope#AWhileExpr#escapemark (self) on <self:AWhileExpr> */
2863 var13 = self->attrs[COLOR_scope__AWhileExpr___escapemark].val; /* _escapemark on <self:AWhileExpr> */
2864 var11 = var13;
2865 RET_LABEL12:(void)0;
2866 }
2867 }
2868 {
2869 flow__FlowVisitor__merge_continues_to(var_v, var_after_block, var11); /* Direct call flow#FlowVisitor#merge_continues_to on <var_v:FlowVisitor>*/
2870 }
2871 {
2872 { /* Inline flow#FlowContext#when_false (var_after_expr) on <var_after_expr:FlowContext> */
2873 var16 = var_after_expr->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on <var_after_expr:FlowContext> */
2874 if (unlikely(var16 == NULL)) {
2875 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
2876 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 231);
2877 show_backtrace(1);
2878 }
2879 var14 = var16;
2880 RET_LABEL15:(void)0;
2881 }
2882 }
2883 {
2884 { /* Inline flow#FlowVisitor#current_flow_context= (var_v,var14) on <var_v:FlowVisitor> */
2885 var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var14; /* _current_flow_context on <var_v:FlowVisitor> */
2886 RET_LABEL17:(void)0;
2887 }
2888 }
2889 {
2890 { /* Inline scope#AWhileExpr#escapemark (self) on <self:AWhileExpr> */
2891 var20 = self->attrs[COLOR_scope__AWhileExpr___escapemark].val; /* _escapemark on <self:AWhileExpr> */
2892 var18 = var20;
2893 RET_LABEL19:(void)0;
2894 }
2895 }
2896 {
2897 flow__FlowVisitor__merge_breaks(var_v, var18); /* Direct call flow#FlowVisitor#merge_breaks on <var_v:FlowVisitor>*/
2898 }
2899 RET_LABEL:;
2900 }
2901 /* method flow#AWhileExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2902 void VIRTUAL_flow__AWhileExpr__accept_flow_visitor(val* self, val* p0) {
2903 flow__AWhileExpr__accept_flow_visitor(self, p0); /* Direct call flow#AWhileExpr#accept_flow_visitor on <self:Object(AWhileExpr)>*/
2904 RET_LABEL:;
2905 }
2906 /* method flow#ALoopExpr#accept_flow_visitor for (self: ALoopExpr, FlowVisitor) */
2907 void flow__ALoopExpr__accept_flow_visitor(val* self, val* p0) {
2908 val* var_v /* var v: FlowVisitor */;
2909 val* var /* : FlowContext */;
2910 val* var_before_loop /* var before_loop: FlowContext */;
2911 val* var1 /* : nullable AExpr */;
2912 val* var2 /* : FlowContext */;
2913 val* var4 /* : FlowContext */;
2914 val* var_after_block /* var after_block: FlowContext */;
2915 val* var5 /* : nullable EscapeMark */;
2916 val* var7 /* : nullable EscapeMark */;
2917 val* var8 /* : FlowContext */;
2918 val* var9 /* : nullable EscapeMark */;
2919 val* var11 /* : nullable EscapeMark */;
2920 var_v = p0;
2921 {
2922 var = flow__FlowVisitor__make_sub_flow(var_v);
2923 }
2924 var_before_loop = var;
2925 {
2926 var1 = parser_nodes__ALoopExpr__n_block(self);
2927 }
2928 {
2929 parser_nodes__Visitor__enter_visit(var_v, var1); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:FlowVisitor>*/
2930 }
2931 {
2932 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
2933 var4 = var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <var_v:FlowVisitor> */
2934 if (unlikely(var4 == NULL)) {
2935 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
2936 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 39);
2937 show_backtrace(1);
2938 }
2939 var2 = var4;
2940 RET_LABEL3:(void)0;
2941 }
2942 }
2943 var_after_block = var2;
2944 {
2945 flow__FlowContext__add_loop(var_before_loop, var_after_block); /* Direct call flow#FlowContext#add_loop on <var_before_loop:FlowContext>*/
2946 }
2947 {
2948 { /* Inline scope#ALoopExpr#escapemark (self) on <self:ALoopExpr> */
2949 var7 = self->attrs[COLOR_scope__ALoopExpr___escapemark].val; /* _escapemark on <self:ALoopExpr> */
2950 var5 = var7;
2951 RET_LABEL6:(void)0;
2952 }
2953 }
2954 {
2955 flow__FlowVisitor__merge_continues_to(var_v, var_after_block, var5); /* Direct call flow#FlowVisitor#merge_continues_to on <var_v:FlowVisitor>*/
2956 }
2957 {
2958 var8 = flow__FlowVisitor__make_unreachable_flow(var_v);
2959 }
2960 var8;
2961 {
2962 { /* Inline scope#ALoopExpr#escapemark (self) on <self:ALoopExpr> */
2963 var11 = self->attrs[COLOR_scope__ALoopExpr___escapemark].val; /* _escapemark on <self:ALoopExpr> */
2964 var9 = var11;
2965 RET_LABEL10:(void)0;
2966 }
2967 }
2968 {
2969 flow__FlowVisitor__merge_breaks(var_v, var9); /* Direct call flow#FlowVisitor#merge_breaks on <var_v:FlowVisitor>*/
2970 }
2971 RET_LABEL:;
2972 }
2973 /* method flow#ALoopExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2974 void VIRTUAL_flow__ALoopExpr__accept_flow_visitor(val* self, val* p0) {
2975 flow__ALoopExpr__accept_flow_visitor(self, p0); /* Direct call flow#ALoopExpr#accept_flow_visitor on <self:Object(ALoopExpr)>*/
2976 RET_LABEL:;
2977 }
2978 /* method flow#AForExpr#accept_flow_visitor for (self: AForExpr, FlowVisitor) */
2979 void flow__AForExpr__accept_flow_visitor(val* self, val* p0) {
2980 val* var_v /* var v: FlowVisitor */;
2981 val* var /* : AExpr */;
2982 val* var1 /* : FlowContext */;
2983 val* var_before_loop /* var before_loop: FlowContext */;
2984 val* var2 /* : nullable AExpr */;
2985 val* var3 /* : FlowContext */;
2986 val* var5 /* : FlowContext */;
2987 val* var_after_block /* var after_block: FlowContext */;
2988 val* var6 /* : nullable EscapeMark */;
2989 val* var8 /* : nullable EscapeMark */;
2990 val* var9 /* : FlowContext */;
2991 val* var11 /* : FlowContext */;
2992 val* var12 /* : FlowContext */;
2993 val* var13 /* : nullable EscapeMark */;
2994 val* var15 /* : nullable EscapeMark */;
2995 var_v = p0;
2996 {
2997 var = parser_nodes__AForExpr__n_expr(self);
2998 }
2999 {
3000 parser_nodes__Visitor__enter_visit(var_v, var); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:FlowVisitor>*/
3001 }
3002 {
3003 var1 = flow__FlowVisitor__make_sub_flow(var_v);
3004 }
3005 var_before_loop = var1;
3006 {
3007 var2 = parser_nodes__AForExpr__n_block(self);
3008 }
3009 {
3010 parser_nodes__Visitor__enter_visit(var_v, var2); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:FlowVisitor>*/
3011 }
3012 {
3013 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
3014 var5 = var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <var_v:FlowVisitor> */
3015 if (unlikely(var5 == NULL)) {
3016 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
3017 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 39);
3018 show_backtrace(1);
3019 }
3020 var3 = var5;
3021 RET_LABEL4:(void)0;
3022 }
3023 }
3024 var_after_block = var3;
3025 {
3026 flow__FlowContext__add_loop(var_before_loop, var_after_block); /* Direct call flow#FlowContext#add_loop on <var_before_loop:FlowContext>*/
3027 }
3028 {
3029 { /* Inline scope#AForExpr#escapemark (self) on <self:AForExpr> */
3030 var8 = self->attrs[COLOR_scope__AForExpr___escapemark].val; /* _escapemark on <self:AForExpr> */
3031 var6 = var8;
3032 RET_LABEL7:(void)0;
3033 }
3034 }
3035 {
3036 flow__FlowVisitor__merge_continues_to(var_v, var_after_block, var6); /* Direct call flow#FlowVisitor#merge_continues_to on <var_v:FlowVisitor>*/
3037 }
3038 {
3039 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
3040 var11 = var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <var_v:FlowVisitor> */
3041 if (unlikely(var11 == NULL)) {
3042 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
3043 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 39);
3044 show_backtrace(1);
3045 }
3046 var9 = var11;
3047 RET_LABEL10:(void)0;
3048 }
3049 }
3050 {
3051 var12 = flow__FlowVisitor__make_merge_flow(var_v, var9, var_before_loop);
3052 }
3053 var12;
3054 {
3055 { /* Inline scope#AForExpr#escapemark (self) on <self:AForExpr> */
3056 var15 = self->attrs[COLOR_scope__AForExpr___escapemark].val; /* _escapemark on <self:AForExpr> */
3057 var13 = var15;
3058 RET_LABEL14:(void)0;
3059 }
3060 }
3061 {
3062 flow__FlowVisitor__merge_breaks(var_v, var13); /* Direct call flow#FlowVisitor#merge_breaks on <var_v:FlowVisitor>*/
3063 }
3064 RET_LABEL:;
3065 }
3066 /* method flow#AForExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
3067 void VIRTUAL_flow__AForExpr__accept_flow_visitor(val* self, val* p0) {
3068 flow__AForExpr__accept_flow_visitor(self, p0); /* Direct call flow#AForExpr#accept_flow_visitor on <self:Object(AForExpr)>*/
3069 RET_LABEL:;
3070 }
3071 /* method flow#AAssertExpr#accept_flow_visitor for (self: AAssertExpr, FlowVisitor) */
3072 void flow__AAssertExpr__accept_flow_visitor(val* self, val* p0) {
3073 val* var_v /* var v: FlowVisitor */;
3074 val* var /* : AExpr */;
3075 val* var1 /* : FlowContext */;
3076 val* var_after_expr /* var after_expr: FlowContext */;
3077 val* var2 /* : FlowContext */;
3078 val* var4 /* : FlowContext */;
3079 val* var6 /* : nullable AExpr */;
3080 val* var7 /* : FlowContext */;
3081 val* var9 /* : FlowContext */;
3082 var_v = p0;
3083 {
3084 var = parser_nodes__AAssertExpr__n_expr(self);
3085 }
3086 {
3087 var1 = flow__FlowVisitor__visit_expr(var_v, var);
3088 }
3089 var_after_expr = var1;
3090 {
3091 { /* Inline flow#FlowContext#when_false (var_after_expr) on <var_after_expr:FlowContext> */
3092 var4 = var_after_expr->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on <var_after_expr:FlowContext> */
3093 if (unlikely(var4 == NULL)) {
3094 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
3095 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 231);
3096 show_backtrace(1);
3097 }
3098 var2 = var4;
3099 RET_LABEL3:(void)0;
3100 }
3101 }
3102 {
3103 { /* Inline flow#FlowVisitor#current_flow_context= (var_v,var2) on <var_v:FlowVisitor> */
3104 var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var2; /* _current_flow_context on <var_v:FlowVisitor> */
3105 RET_LABEL5:(void)0;
3106 }
3107 }
3108 {
3109 var6 = parser_nodes__AAssertExpr__n_else(self);
3110 }
3111 {
3112 parser_nodes__Visitor__enter_visit(var_v, var6); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:FlowVisitor>*/
3113 }
3114 {
3115 { /* Inline flow#FlowContext#when_true (var_after_expr) on <var_after_expr:FlowContext> */
3116 var9 = var_after_expr->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on <var_after_expr:FlowContext> */
3117 if (unlikely(var9 == NULL)) {
3118 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
3119 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 228);
3120 show_backtrace(1);
3121 }
3122 var7 = var9;
3123 RET_LABEL8:(void)0;
3124 }
3125 }
3126 {
3127 { /* Inline flow#FlowVisitor#current_flow_context= (var_v,var7) on <var_v:FlowVisitor> */
3128 var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var7; /* _current_flow_context on <var_v:FlowVisitor> */
3129 RET_LABEL10:(void)0;
3130 }
3131 }
3132 RET_LABEL:;
3133 }
3134 /* method flow#AAssertExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
3135 void VIRTUAL_flow__AAssertExpr__accept_flow_visitor(val* self, val* p0) {
3136 flow__AAssertExpr__accept_flow_visitor(self, p0); /* Direct call flow#AAssertExpr#accept_flow_visitor on <self:Object(AAssertExpr)>*/
3137 RET_LABEL:;
3138 }
3139 /* method flow#AOrExpr#accept_flow_visitor for (self: AOrExpr, FlowVisitor) */
3140 void flow__AOrExpr__accept_flow_visitor(val* self, val* p0) {
3141 val* var_v /* var v: FlowVisitor */;
3142 val* var /* : AExpr */;
3143 val* var1 /* : FlowContext */;
3144 val* var_after_expr /* var after_expr: FlowContext */;
3145 val* var2 /* : FlowContext */;
3146 val* var4 /* : FlowContext */;
3147 val* var6 /* : AExpr */;
3148 val* var7 /* : FlowContext */;
3149 val* var_after_expr2 /* var after_expr2: FlowContext */;
3150 val* var8 /* : FlowContext */;
3151 val* var10 /* : FlowContext */;
3152 val* var11 /* : FlowContext */;
3153 val* var13 /* : FlowContext */;
3154 val* var14 /* : FlowContext */;
3155 val* var_merge_true /* var merge_true: FlowContext */;
3156 static val* varonce;
3157 val* var15 /* : String */;
3158 char* var16 /* : NativeString */;
3159 long var17 /* : Int */;
3160 val* var18 /* : FlatString */;
3161 val* var20 /* : FlowContext */;
3162 val* var22 /* : FlowContext */;
3163 val* var23 /* : FlowContext */;
3164 var_v = p0;
3165 {
3166 var = parser_nodes__AOrExpr__n_expr(self);
3167 }
3168 {
3169 var1 = flow__FlowVisitor__visit_expr(var_v, var);
3170 }
3171 var_after_expr = var1;
3172 {
3173 { /* Inline flow#FlowContext#when_false (var_after_expr) on <var_after_expr:FlowContext> */
3174 var4 = var_after_expr->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on <var_after_expr:FlowContext> */
3175 if (unlikely(var4 == NULL)) {
3176 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
3177 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 231);
3178 show_backtrace(1);
3179 }
3180 var2 = var4;
3181 RET_LABEL3:(void)0;
3182 }
3183 }
3184 {
3185 { /* Inline flow#FlowVisitor#current_flow_context= (var_v,var2) on <var_v:FlowVisitor> */
3186 var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var2; /* _current_flow_context on <var_v:FlowVisitor> */
3187 RET_LABEL5:(void)0;
3188 }
3189 }
3190 {
3191 var6 = parser_nodes__AOrExpr__n_expr2(self);
3192 }
3193 {
3194 var7 = flow__FlowVisitor__visit_expr(var_v, var6);
3195 }
3196 var_after_expr2 = var7;
3197 {
3198 { /* Inline flow#FlowContext#when_true (var_after_expr) on <var_after_expr:FlowContext> */
3199 var10 = var_after_expr->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on <var_after_expr:FlowContext> */
3200 if (unlikely(var10 == NULL)) {
3201 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
3202 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 228);
3203 show_backtrace(1);
3204 }
3205 var8 = var10;
3206 RET_LABEL9:(void)0;
3207 }
3208 }
3209 {
3210 { /* Inline flow#FlowContext#when_true (var_after_expr2) on <var_after_expr2:FlowContext> */
3211 var13 = var_after_expr2->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on <var_after_expr2:FlowContext> */
3212 if (unlikely(var13 == NULL)) {
3213 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
3214 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 228);
3215 show_backtrace(1);
3216 }
3217 var11 = var13;
3218 RET_LABEL12:(void)0;
3219 }
3220 }
3221 {
3222 var14 = flow__FlowVisitor__make_merge_flow(var_v, var8, var11);
3223 }
3224 var_merge_true = var14;
3225 if (varonce) {
3226 var15 = varonce;
3227 } else {
3228 var16 = "OR TRUE";
3229 var17 = 7;
3230 var18 = string__NativeString__to_s_with_length(var16, var17);
3231 var15 = var18;
3232 varonce = var15;
3233 }
3234 {
3235 { /* Inline flow#FlowContext#name= (var_merge_true,var15) on <var_merge_true:FlowContext> */
3236 var_merge_true->attrs[COLOR_flow__FlowContext___name].val = var15; /* _name on <var_merge_true:FlowContext> */
3237 RET_LABEL19:(void)0;
3238 }
3239 }
3240 {
3241 { /* Inline flow#FlowContext#when_false (var_after_expr2) on <var_after_expr2:FlowContext> */
3242 var22 = var_after_expr2->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on <var_after_expr2:FlowContext> */
3243 if (unlikely(var22 == NULL)) {
3244 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
3245 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 231);
3246 show_backtrace(1);
3247 }
3248 var20 = var22;
3249 RET_LABEL21:(void)0;
3250 }
3251 }
3252 {
3253 var23 = flow__FlowVisitor__make_true_false_flow(var_v, var_merge_true, var20);
3254 }
3255 var23;
3256 RET_LABEL:;
3257 }
3258 /* method flow#AOrExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
3259 void VIRTUAL_flow__AOrExpr__accept_flow_visitor(val* self, val* p0) {
3260 flow__AOrExpr__accept_flow_visitor(self, p0); /* Direct call flow#AOrExpr#accept_flow_visitor on <self:Object(AOrExpr)>*/
3261 RET_LABEL:;
3262 }
3263 /* method flow#AImpliesExpr#accept_flow_visitor for (self: AImpliesExpr, FlowVisitor) */
3264 void flow__AImpliesExpr__accept_flow_visitor(val* self, val* p0) {
3265 val* var_v /* var v: FlowVisitor */;
3266 val* var /* : AExpr */;
3267 val* var1 /* : FlowContext */;
3268 val* var_after_expr /* var after_expr: FlowContext */;
3269 val* var2 /* : FlowContext */;
3270 val* var4 /* : FlowContext */;
3271 val* var6 /* : AExpr */;
3272 val* var7 /* : FlowContext */;
3273 val* var_after_expr2 /* var after_expr2: FlowContext */;
3274 val* var8 /* : FlowContext */;
3275 val* var10 /* : FlowContext */;
3276 val* var11 /* : FlowContext */;
3277 val* var13 /* : FlowContext */;
3278 val* var14 /* : FlowContext */;
3279 val* var_merge_true /* var merge_true: FlowContext */;
3280 static val* varonce;
3281 val* var15 /* : String */;
3282 char* var16 /* : NativeString */;
3283 long var17 /* : Int */;
3284 val* var18 /* : FlatString */;
3285 val* var20 /* : FlowContext */;
3286 val* var22 /* : FlowContext */;
3287 val* var23 /* : FlowContext */;
3288 var_v = p0;
3289 {
3290 var = parser_nodes__AImpliesExpr__n_expr(self);
3291 }
3292 {
3293 var1 = flow__FlowVisitor__visit_expr(var_v, var);
3294 }
3295 var_after_expr = var1;
3296 {
3297 { /* Inline flow#FlowContext#when_true (var_after_expr) on <var_after_expr:FlowContext> */
3298 var4 = var_after_expr->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on <var_after_expr:FlowContext> */
3299 if (unlikely(var4 == NULL)) {
3300 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
3301 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 228);
3302 show_backtrace(1);
3303 }
3304 var2 = var4;
3305 RET_LABEL3:(void)0;
3306 }
3307 }
3308 {
3309 { /* Inline flow#FlowVisitor#current_flow_context= (var_v,var2) on <var_v:FlowVisitor> */
3310 var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var2; /* _current_flow_context on <var_v:FlowVisitor> */
3311 RET_LABEL5:(void)0;
3312 }
3313 }
3314 {
3315 var6 = parser_nodes__AImpliesExpr__n_expr2(self);
3316 }
3317 {
3318 var7 = flow__FlowVisitor__visit_expr(var_v, var6);
3319 }
3320 var_after_expr2 = var7;
3321 {
3322 { /* Inline flow#FlowContext#when_false (var_after_expr) on <var_after_expr:FlowContext> */
3323 var10 = var_after_expr->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on <var_after_expr:FlowContext> */
3324 if (unlikely(var10 == NULL)) {
3325 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
3326 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 231);
3327 show_backtrace(1);
3328 }
3329 var8 = var10;
3330 RET_LABEL9:(void)0;
3331 }
3332 }
3333 {
3334 { /* Inline flow#FlowContext#when_true (var_after_expr2) on <var_after_expr2:FlowContext> */
3335 var13 = var_after_expr2->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on <var_after_expr2:FlowContext> */
3336 if (unlikely(var13 == NULL)) {
3337 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
3338 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 228);
3339 show_backtrace(1);
3340 }
3341 var11 = var13;
3342 RET_LABEL12:(void)0;
3343 }
3344 }
3345 {
3346 var14 = flow__FlowVisitor__make_merge_flow(var_v, var8, var11);
3347 }
3348 var_merge_true = var14;
3349 if (varonce) {
3350 var15 = varonce;
3351 } else {
3352 var16 = "OR TRUE";
3353 var17 = 7;
3354 var18 = string__NativeString__to_s_with_length(var16, var17);
3355 var15 = var18;
3356 varonce = var15;
3357 }
3358 {
3359 { /* Inline flow#FlowContext#name= (var_merge_true,var15) on <var_merge_true:FlowContext> */
3360 var_merge_true->attrs[COLOR_flow__FlowContext___name].val = var15; /* _name on <var_merge_true:FlowContext> */
3361 RET_LABEL19:(void)0;
3362 }
3363 }
3364 {
3365 { /* Inline flow#FlowContext#when_false (var_after_expr2) on <var_after_expr2:FlowContext> */
3366 var22 = var_after_expr2->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on <var_after_expr2:FlowContext> */
3367 if (unlikely(var22 == NULL)) {
3368 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
3369 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 231);
3370 show_backtrace(1);
3371 }
3372 var20 = var22;
3373 RET_LABEL21:(void)0;
3374 }
3375 }
3376 {
3377 var23 = flow__FlowVisitor__make_true_false_flow(var_v, var_merge_true, var20);
3378 }
3379 var23;
3380 RET_LABEL:;
3381 }
3382 /* method flow#AImpliesExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
3383 void VIRTUAL_flow__AImpliesExpr__accept_flow_visitor(val* self, val* p0) {
3384 flow__AImpliesExpr__accept_flow_visitor(self, p0); /* Direct call flow#AImpliesExpr#accept_flow_visitor on <self:Object(AImpliesExpr)>*/
3385 RET_LABEL:;
3386 }
3387 /* method flow#AAndExpr#accept_flow_visitor for (self: AAndExpr, FlowVisitor) */
3388 void flow__AAndExpr__accept_flow_visitor(val* self, val* p0) {
3389 val* var_v /* var v: FlowVisitor */;
3390 val* var /* : AExpr */;
3391 val* var1 /* : FlowContext */;
3392 val* var_after_expr /* var after_expr: FlowContext */;
3393 val* var2 /* : FlowContext */;
3394 val* var4 /* : FlowContext */;
3395 val* var6 /* : AExpr */;
3396 val* var7 /* : FlowContext */;
3397 val* var_after_expr2 /* var after_expr2: FlowContext */;
3398 val* var8 /* : FlowContext */;
3399 val* var10 /* : FlowContext */;
3400 val* var11 /* : FlowContext */;
3401 val* var13 /* : FlowContext */;
3402 val* var14 /* : FlowContext */;
3403 val* var_merge_false /* var merge_false: FlowContext */;
3404 static val* varonce;
3405 val* var15 /* : String */;
3406 char* var16 /* : NativeString */;
3407 long var17 /* : Int */;
3408 val* var18 /* : FlatString */;
3409 val* var20 /* : FlowContext */;
3410 val* var22 /* : FlowContext */;
3411 val* var23 /* : FlowContext */;
3412 var_v = p0;
3413 {
3414 var = parser_nodes__AAndExpr__n_expr(self);
3415 }
3416 {
3417 var1 = flow__FlowVisitor__visit_expr(var_v, var);
3418 }
3419 var_after_expr = var1;
3420 {
3421 { /* Inline flow#FlowContext#when_true (var_after_expr) on <var_after_expr:FlowContext> */
3422 var4 = var_after_expr->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on <var_after_expr:FlowContext> */
3423 if (unlikely(var4 == NULL)) {
3424 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
3425 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 228);
3426 show_backtrace(1);
3427 }
3428 var2 = var4;
3429 RET_LABEL3:(void)0;
3430 }
3431 }
3432 {
3433 { /* Inline flow#FlowVisitor#current_flow_context= (var_v,var2) on <var_v:FlowVisitor> */
3434 var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var2; /* _current_flow_context on <var_v:FlowVisitor> */
3435 RET_LABEL5:(void)0;
3436 }
3437 }
3438 {
3439 var6 = parser_nodes__AAndExpr__n_expr2(self);
3440 }
3441 {
3442 var7 = flow__FlowVisitor__visit_expr(var_v, var6);
3443 }
3444 var_after_expr2 = var7;
3445 {
3446 { /* Inline flow#FlowContext#when_false (var_after_expr) on <var_after_expr:FlowContext> */
3447 var10 = var_after_expr->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on <var_after_expr:FlowContext> */
3448 if (unlikely(var10 == NULL)) {
3449 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
3450 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 231);
3451 show_backtrace(1);
3452 }
3453 var8 = var10;
3454 RET_LABEL9:(void)0;
3455 }
3456 }
3457 {
3458 { /* Inline flow#FlowContext#when_false (var_after_expr2) on <var_after_expr2:FlowContext> */
3459 var13 = var_after_expr2->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on <var_after_expr2:FlowContext> */
3460 if (unlikely(var13 == NULL)) {
3461 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
3462 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 231);
3463 show_backtrace(1);
3464 }
3465 var11 = var13;
3466 RET_LABEL12:(void)0;
3467 }
3468 }
3469 {
3470 var14 = flow__FlowVisitor__make_merge_flow(var_v, var8, var11);
3471 }
3472 var_merge_false = var14;
3473 if (varonce) {
3474 var15 = varonce;
3475 } else {
3476 var16 = "AND FALSE";
3477 var17 = 9;
3478 var18 = string__NativeString__to_s_with_length(var16, var17);
3479 var15 = var18;
3480 varonce = var15;
3481 }
3482 {
3483 { /* Inline flow#FlowContext#name= (var_merge_false,var15) on <var_merge_false:FlowContext> */
3484 var_merge_false->attrs[COLOR_flow__FlowContext___name].val = var15; /* _name on <var_merge_false:FlowContext> */
3485 RET_LABEL19:(void)0;
3486 }
3487 }
3488 {
3489 { /* Inline flow#FlowContext#when_true (var_after_expr2) on <var_after_expr2:FlowContext> */
3490 var22 = var_after_expr2->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on <var_after_expr2:FlowContext> */
3491 if (unlikely(var22 == NULL)) {
3492 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
3493 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 228);
3494 show_backtrace(1);
3495 }
3496 var20 = var22;
3497 RET_LABEL21:(void)0;
3498 }
3499 }
3500 {
3501 var23 = flow__FlowVisitor__make_true_false_flow(var_v, var20, var_merge_false);
3502 }
3503 var23;
3504 RET_LABEL:;
3505 }
3506 /* method flow#AAndExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
3507 void VIRTUAL_flow__AAndExpr__accept_flow_visitor(val* self, val* p0) {
3508 flow__AAndExpr__accept_flow_visitor(self, p0); /* Direct call flow#AAndExpr#accept_flow_visitor on <self:Object(AAndExpr)>*/
3509 RET_LABEL:;
3510 }
3511 /* method flow#ANotExpr#accept_flow_visitor for (self: ANotExpr, FlowVisitor) */
3512 void flow__ANotExpr__accept_flow_visitor(val* self, val* p0) {
3513 val* var_v /* var v: FlowVisitor */;
3514 val* var /* : AExpr */;
3515 val* var1 /* : FlowContext */;
3516 val* var_after_expr /* var after_expr: FlowContext */;
3517 val* var2 /* : FlowContext */;
3518 val* var4 /* : FlowContext */;
3519 val* var5 /* : FlowContext */;
3520 val* var7 /* : FlowContext */;
3521 val* var8 /* : FlowContext */;
3522 var_v = p0;
3523 {
3524 var = parser_nodes__ANotExpr__n_expr(self);
3525 }
3526 {
3527 var1 = flow__FlowVisitor__visit_expr(var_v, var);
3528 }
3529 var_after_expr = var1;
3530 {
3531 { /* Inline flow#FlowContext#when_false (var_after_expr) on <var_after_expr:FlowContext> */
3532 var4 = var_after_expr->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on <var_after_expr:FlowContext> */
3533 if (unlikely(var4 == NULL)) {
3534 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
3535 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 231);
3536 show_backtrace(1);
3537 }
3538 var2 = var4;
3539 RET_LABEL3:(void)0;
3540 }
3541 }
3542 {
3543 { /* Inline flow#FlowContext#when_true (var_after_expr) on <var_after_expr:FlowContext> */
3544 var7 = var_after_expr->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on <var_after_expr:FlowContext> */
3545 if (unlikely(var7 == NULL)) {
3546 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
3547 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 228);
3548 show_backtrace(1);
3549 }
3550 var5 = var7;
3551 RET_LABEL6:(void)0;
3552 }
3553 }
3554 {
3555 var8 = flow__FlowVisitor__make_true_false_flow(var_v, var2, var5);
3556 }
3557 var8;
3558 RET_LABEL:;
3559 }
3560 /* method flow#ANotExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
3561 void VIRTUAL_flow__ANotExpr__accept_flow_visitor(val* self, val* p0) {
3562 flow__ANotExpr__accept_flow_visitor(self, p0); /* Direct call flow#ANotExpr#accept_flow_visitor on <self:Object(ANotExpr)>*/
3563 RET_LABEL:;
3564 }
3565 /* method flow#AOrElseExpr#accept_flow_visitor for (self: AOrElseExpr, FlowVisitor) */
3566 void flow__AOrElseExpr__accept_flow_visitor(val* self, val* p0) {
3567 val* var_v /* var v: FlowVisitor */;
3568 var_v = p0;
3569 {
3570 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__AOrElseExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:AOrElseExpr>*/;
3571 }
3572 RET_LABEL:;
3573 }
3574 /* method flow#AOrElseExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
3575 void VIRTUAL_flow__AOrElseExpr__accept_flow_visitor(val* self, val* p0) {
3576 flow__AOrElseExpr__accept_flow_visitor(self, p0); /* Direct call flow#AOrElseExpr#accept_flow_visitor on <self:Object(AOrElseExpr)>*/
3577 RET_LABEL:;
3578 }
3579 /* method flow#AEqExpr#accept_flow_visitor for (self: AEqExpr, FlowVisitor) */
3580 void flow__AEqExpr__accept_flow_visitor(val* self, val* p0) {
3581 val* var_v /* var v: FlowVisitor */;
3582 val* var /* : FlowContext */;
3583 var_v = p0;
3584 {
3585 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__AEqExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:AEqExpr>*/;
3586 }
3587 {
3588 var = flow__FlowVisitor__make_sub_true_false_flow(var_v);
3589 }
3590 var;
3591 RET_LABEL:;
3592 }
3593 /* method flow#AEqExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
3594 void VIRTUAL_flow__AEqExpr__accept_flow_visitor(val* self, val* p0) {
3595 flow__AEqExpr__accept_flow_visitor(self, p0); /* Direct call flow#AEqExpr#accept_flow_visitor on <self:Object(AEqExpr)>*/
3596 RET_LABEL:;
3597 }
3598 /* method flow#ANeExpr#accept_flow_visitor for (self: ANeExpr, FlowVisitor) */
3599 void flow__ANeExpr__accept_flow_visitor(val* self, val* p0) {
3600 val* var_v /* var v: FlowVisitor */;
3601 val* var /* : FlowContext */;
3602 var_v = p0;
3603 {
3604 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__ANeExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:ANeExpr>*/;
3605 }
3606 {
3607 var = flow__FlowVisitor__make_sub_true_false_flow(var_v);
3608 }
3609 var;
3610 RET_LABEL:;
3611 }
3612 /* method flow#ANeExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
3613 void VIRTUAL_flow__ANeExpr__accept_flow_visitor(val* self, val* p0) {
3614 flow__ANeExpr__accept_flow_visitor(self, p0); /* Direct call flow#ANeExpr#accept_flow_visitor on <self:Object(ANeExpr)>*/
3615 RET_LABEL:;
3616 }
3617 /* method flow#AIsaExpr#accept_flow_visitor for (self: AIsaExpr, FlowVisitor) */
3618 void flow__AIsaExpr__accept_flow_visitor(val* self, val* p0) {
3619 val* var_v /* var v: FlowVisitor */;
3620 val* var /* : FlowContext */;
3621 var_v = p0;
3622 {
3623 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__AIsaExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:AIsaExpr>*/;
3624 }
3625 {
3626 var = flow__FlowVisitor__make_sub_true_false_flow(var_v);
3627 }
3628 var;
3629 RET_LABEL:;
3630 }
3631 /* method flow#AIsaExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
3632 void VIRTUAL_flow__AIsaExpr__accept_flow_visitor(val* self, val* p0) {
3633 flow__AIsaExpr__accept_flow_visitor(self, p0); /* Direct call flow#AIsaExpr#accept_flow_visitor on <self:Object(AIsaExpr)>*/
3634 RET_LABEL:;
3635 }
3636 /* method flow#AProxyExpr#accept_flow_visitor for (self: AProxyExpr, FlowVisitor) */
3637 void flow__AProxyExpr__accept_flow_visitor(val* self, val* p0) {
3638 val* var_v /* var v: FlowVisitor */;
3639 val* var /* : AExpr */;
3640 val* var1 /* : FlowContext */;
3641 val* var_after_expr /* var after_expr: FlowContext */;
3642 var_v = p0;
3643 {
3644 var = parser_nodes__AProxyExpr__n_expr(self);
3645 }
3646 {
3647 var1 = flow__FlowVisitor__visit_expr(var_v, var);
3648 }
3649 var_after_expr = var1;
3650 {
3651 { /* Inline flow#FlowVisitor#current_flow_context= (var_v,var_after_expr) on <var_v:FlowVisitor> */
3652 var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var_after_expr; /* _current_flow_context on <var_v:FlowVisitor> */
3653 RET_LABEL2:(void)0;
3654 }
3655 }
3656 RET_LABEL:;
3657 }
3658 /* method flow#AProxyExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
3659 void VIRTUAL_flow__AProxyExpr__accept_flow_visitor(val* self, val* p0) {
3660 flow__AProxyExpr__accept_flow_visitor(self, p0); /* Direct call flow#AProxyExpr#accept_flow_visitor on <self:Object(AProxyExpr)>*/
3661 RET_LABEL:;
3662 }