README: document nit_env.sh
[nit.git] / c_src / nit__flow.sep.1.c
1 #include "nit__flow.sep.0.h"
2 /* method flow#ToolContext#flow_phase for (self: ToolContext): Phase */
3 val* nit__flow___ToolContext___flow_phase(val* self) {
4 val* var /* : Phase */;
5 val* var1 /* : Phase */;
6 var1 = self->attrs[COLOR_nit__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", FILE_nit__flow, 23);
10 fatal_exit(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method flow#FlowPhase#process_npropdef for (self: FlowPhase, APropdef) */
17 void nit__flow___nit__flow__FlowPhase___nit__phase__Phase__process_npropdef(val* self, val* p0) {
18 val* var_npropdef /* var npropdef: APropdef */;
19 val* var /* : ToolContext */;
20 val* var2 /* : ToolContext */;
21 var_npropdef = p0;
22 {
23 { /* Inline phase#Phase#toolcontext (self) on <self:FlowPhase> */
24 var2 = self->attrs[COLOR_nit__phase__Phase___toolcontext].val; /* _toolcontext on <self:FlowPhase> */
25 if (unlikely(var2 == NULL)) {
26 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
27 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 200);
28 fatal_exit(1);
29 }
30 var = var2;
31 RET_LABEL1:(void)0;
32 }
33 }
34 {
35 nit__flow___APropdef___do_flow(var_npropdef, var); /* Direct call flow#APropdef#do_flow on <var_npropdef:APropdef>*/
36 }
37 RET_LABEL:;
38 }
39 /* method flow#FlowVisitor#current_flow_context for (self: FlowVisitor): FlowContext */
40 val* nit__flow___nit__flow__FlowVisitor___current_flow_context(val* self) {
41 val* var /* : FlowContext */;
42 val* var1 /* : FlowContext */;
43 var1 = self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
44 if (unlikely(var1 == NULL)) {
45 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
46 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
47 fatal_exit(1);
48 }
49 var = var1;
50 RET_LABEL:;
51 return var;
52 }
53 /* method flow#FlowVisitor#current_flow_context= for (self: FlowVisitor, FlowContext) */
54 void nit__flow___nit__flow__FlowVisitor___current_flow_context_61d(val* self, val* p0) {
55 self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val = p0; /* _current_flow_context on <self:FlowVisitor> */
56 RET_LABEL:;
57 }
58 /* method flow#FlowVisitor#toolcontext for (self: FlowVisitor): ToolContext */
59 val* nit__flow___nit__flow__FlowVisitor___toolcontext(val* self) {
60 val* var /* : ToolContext */;
61 val* var1 /* : ToolContext */;
62 var1 = self->attrs[COLOR_nit__flow__FlowVisitor___toolcontext].val; /* _toolcontext on <self:FlowVisitor> */
63 if (unlikely(var1 == NULL)) {
64 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
65 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 39);
66 fatal_exit(1);
67 }
68 var = var1;
69 RET_LABEL:;
70 return var;
71 }
72 /* method flow#FlowVisitor#toolcontext= for (self: FlowVisitor, ToolContext) */
73 void nit__flow___nit__flow__FlowVisitor___toolcontext_61d(val* self, val* p0) {
74 self->attrs[COLOR_nit__flow__FlowVisitor___toolcontext].val = p0; /* _toolcontext on <self:FlowVisitor> */
75 RET_LABEL:;
76 }
77 /* method flow#FlowVisitor#init for (self: FlowVisitor) */
78 void nit__flow___nit__flow__FlowVisitor___standard__kernel__Object__init(val* self) {
79 val* var /* : Array[FlowContext] */;
80 val* var2 /* : Array[FlowContext] */;
81 val* var3 /* : FlowContext */;
82 val* var5 /* : FlowContext */;
83 val* var6 /* : FlowContext */;
84 val* var8 /* : FlowContext */;
85 {
86 ((void(*)(val* self))(self->class->vft[COLOR_nit__flow___nit__flow__FlowVisitor___standard__kernel__Object__init]))(self); /* init on <self:FlowVisitor>*/
87 }
88 {
89 { /* Inline flow#FlowVisitor#flows (self) on <self:FlowVisitor> */
90 var2 = self->attrs[COLOR_nit__flow__FlowVisitor___flows].val; /* _flows on <self:FlowVisitor> */
91 if (unlikely(var2 == NULL)) {
92 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows");
93 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 76);
94 fatal_exit(1);
95 }
96 var = var2;
97 RET_LABEL1:(void)0;
98 }
99 }
100 {
101 { /* Inline flow#FlowVisitor#current_flow_context (self) on <self:FlowVisitor> */
102 var5 = self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
103 if (unlikely(var5 == NULL)) {
104 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
105 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
106 fatal_exit(1);
107 }
108 var3 = var5;
109 RET_LABEL4:(void)0;
110 }
111 }
112 {
113 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var, var3); /* Direct call array#Array#add on <var:Array[FlowContext]>*/
114 }
115 {
116 { /* Inline flow#FlowVisitor#current_flow_context (self) on <self:FlowVisitor> */
117 var8 = self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
118 if (unlikely(var8 == NULL)) {
119 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
120 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
121 fatal_exit(1);
122 }
123 var6 = var8;
124 RET_LABEL7:(void)0;
125 }
126 }
127 {
128 { /* Inline flow#FlowContext#is_start= (var6,1) on <var6:FlowContext> */
129 var6->attrs[COLOR_nit__flow__FlowContext___is_start].s = 1; /* _is_start on <var6:FlowContext> */
130 RET_LABEL9:(void)0;
131 }
132 }
133 RET_LABEL:;
134 }
135 /* method flow#FlowVisitor#first for (self: FlowVisitor): nullable ANode */
136 val* nit__flow___nit__flow__FlowVisitor___first(val* self) {
137 val* var /* : nullable ANode */;
138 val* var1 /* : nullable ANode */;
139 var1 = self->attrs[COLOR_nit__flow__FlowVisitor___first].val; /* _first on <self:FlowVisitor> */
140 var = var1;
141 RET_LABEL:;
142 return var;
143 }
144 /* method flow#FlowVisitor#first= for (self: FlowVisitor, nullable ANode) */
145 void nit__flow___nit__flow__FlowVisitor___first_61d(val* self, val* p0) {
146 self->attrs[COLOR_nit__flow__FlowVisitor___first].val = p0; /* _first on <self:FlowVisitor> */
147 RET_LABEL:;
148 }
149 /* method flow#FlowVisitor#visit for (self: FlowVisitor, ANode) */
150 void nit__flow___nit__flow__FlowVisitor___nit__parser_nodes__Visitor__visit(val* self, val* p0) {
151 val* var_node /* var node: ANode */;
152 val* var /* : nullable ANode */;
153 val* var2 /* : nullable ANode */;
154 short int var3 /* : Bool */;
155 short int var4 /* : Bool */;
156 val* var_other /* var other: nullable Object */;
157 short int var6 /* : Bool */;
158 short int var8 /* : Bool */;
159 val* var10 /* : FlowContext */;
160 val* var12 /* : FlowContext */;
161 val* var13 /* : nullable ANode */;
162 val* var15 /* : nullable ANode */;
163 short int var16 /* : Bool */;
164 short int var17 /* : Bool */;
165 short int var19 /* : Bool */;
166 short int var21 /* : Bool */;
167 val* var22 /* : FlowContext */;
168 val* var24 /* : FlowContext */;
169 short int var26 /* : Bool */;
170 int cltype;
171 int idtype;
172 val* var27 /* : FlowContext */;
173 val* var29 /* : FlowContext */;
174 val* var_flow /* var flow: FlowContext */;
175 short int var31 /* : Bool */;
176 val* var32 /* : FlowContext */;
177 val* var34 /* : FlowContext */;
178 short int var35 /* : Bool */;
179 val* var_other37 /* var other: nullable Object */;
180 short int var38 /* : Bool */;
181 short int var39 /* : Bool */;
182 short int var_ /* var : Bool */;
183 val* var40 /* : FlowContext */;
184 val* var42 /* : FlowContext */;
185 short int var43 /* : Bool */;
186 short int var45 /* : Bool */;
187 short int var46 /* : Bool */;
188 val* var47 /* : FlowContext */;
189 val* var48 /* : FlowContext */;
190 val* var50 /* : FlowContext */;
191 static val* varonce;
192 val* var51 /* : String */;
193 char* var52 /* : NativeString */;
194 val* var53 /* : FlatString */;
195 val* var55 /* : nullable ANode */;
196 val* var57 /* : nullable ANode */;
197 short int var58 /* : Bool */;
198 short int var59 /* : Bool */;
199 short int var61 /* : Bool */;
200 short int var63 /* : Bool */;
201 var_node = p0;
202 {
203 { /* Inline flow#FlowVisitor#first (self) on <self:FlowVisitor> */
204 var2 = self->attrs[COLOR_nit__flow__FlowVisitor___first].val; /* _first on <self:FlowVisitor> */
205 var = var2;
206 RET_LABEL1:(void)0;
207 }
208 }
209 if (var == NULL) {
210 var3 = 1; /* is null */
211 } else {
212 var3 = 0; /* arg is null but recv is not */
213 }
214 if (0) {
215 { /* Inline kernel#Object#== (var,((val*)NULL)) on <var:nullable ANode> */
216 var_other = ((val*)NULL);
217 {
218 { /* Inline kernel#Object#is_same_instance (var,var_other) on <var:nullable ANode(ANode)> */
219 var8 = var == var_other;
220 var6 = var8;
221 goto RET_LABEL7;
222 RET_LABEL7:(void)0;
223 }
224 }
225 var4 = var6;
226 goto RET_LABEL5;
227 RET_LABEL5:(void)0;
228 }
229 var3 = var4;
230 }
231 if (var3){
232 {
233 { /* Inline flow#FlowVisitor#first= (self,var_node) on <self:FlowVisitor> */
234 self->attrs[COLOR_nit__flow__FlowVisitor___first].val = var_node; /* _first on <self:FlowVisitor> */
235 RET_LABEL9:(void)0;
236 }
237 }
238 } else {
239 }
240 {
241 { /* Inline flow#FlowVisitor#current_flow_context (self) on <self:FlowVisitor> */
242 var12 = self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
243 if (unlikely(var12 == NULL)) {
244 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
245 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
246 fatal_exit(1);
247 }
248 var10 = var12;
249 RET_LABEL11:(void)0;
250 }
251 }
252 {
253 { /* Inline flow#FlowContext#node (var10) on <var10:FlowContext> */
254 var15 = var10->attrs[COLOR_nit__flow__FlowContext___node].val; /* _node on <var10:FlowContext> */
255 var13 = var15;
256 RET_LABEL14:(void)0;
257 }
258 }
259 if (var13 == NULL) {
260 var16 = 1; /* is null */
261 } else {
262 var16 = 0; /* arg is null but recv is not */
263 }
264 if (0) {
265 { /* Inline kernel#Object#== (var13,((val*)NULL)) on <var13:nullable ANode> */
266 var_other = ((val*)NULL);
267 {
268 { /* Inline kernel#Object#is_same_instance (var13,var_other) on <var13:nullable ANode(ANode)> */
269 var21 = var13 == var_other;
270 var19 = var21;
271 goto RET_LABEL20;
272 RET_LABEL20:(void)0;
273 }
274 }
275 var17 = var19;
276 goto RET_LABEL18;
277 RET_LABEL18:(void)0;
278 }
279 var16 = var17;
280 }
281 if (var16){
282 {
283 { /* Inline flow#FlowVisitor#current_flow_context (self) on <self:FlowVisitor> */
284 var24 = self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
285 if (unlikely(var24 == NULL)) {
286 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
287 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
288 fatal_exit(1);
289 }
290 var22 = var24;
291 RET_LABEL23:(void)0;
292 }
293 }
294 {
295 { /* Inline flow#FlowContext#node= (var22,var_node) on <var22:FlowContext> */
296 var22->attrs[COLOR_nit__flow__FlowContext___node].val = var_node; /* _node on <var22:FlowContext> */
297 RET_LABEL25:(void)0;
298 }
299 }
300 } else {
301 }
302 {
303 ((void(*)(val* self, val* p0))(var_node->class->vft[COLOR_nit__flow__ANode__accept_flow_visitor]))(var_node, self); /* accept_flow_visitor on <var_node:ANode>*/
304 }
305 /* <var_node:ANode> isa AExpr */
306 cltype = type_nit__AExpr.color;
307 idtype = type_nit__AExpr.id;
308 if(cltype >= var_node->type->table_size) {
309 var26 = 0;
310 } else {
311 var26 = var_node->type->type_table[cltype] == idtype;
312 }
313 if (var26){
314 {
315 { /* Inline flow#FlowVisitor#current_flow_context (self) on <self:FlowVisitor> */
316 var29 = self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
317 if (unlikely(var29 == NULL)) {
318 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
319 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
320 fatal_exit(1);
321 }
322 var27 = var29;
323 RET_LABEL28:(void)0;
324 }
325 }
326 var_flow = var27;
327 {
328 { /* Inline flow#AExpr#after_flow_context= (var_node,var_flow) on <var_node:ANode(AExpr)> */
329 var_node->attrs[COLOR_nit__flow__AExpr___after_flow_context].val = var_flow; /* _after_flow_context on <var_node:ANode(AExpr)> */
330 RET_LABEL30:(void)0;
331 }
332 }
333 {
334 { /* Inline flow#FlowContext#when_true (var_flow) on <var_flow:FlowContext> */
335 var34 = var_flow->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <var_flow:FlowContext> */
336 if (unlikely(var34 == NULL)) {
337 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
338 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225);
339 fatal_exit(1);
340 }
341 var32 = var34;
342 RET_LABEL33:(void)0;
343 }
344 }
345 {
346 { /* Inline kernel#Object#!= (var32,var_flow) on <var32:FlowContext> */
347 var_other37 = var_flow;
348 {
349 var38 = ((short int(*)(val* self, val* p0))(var32->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var32, var_other37); /* == on <var32:FlowContext>*/
350 }
351 var39 = !var38;
352 var35 = var39;
353 goto RET_LABEL36;
354 RET_LABEL36:(void)0;
355 }
356 }
357 var_ = var35;
358 if (var35){
359 var31 = var_;
360 } else {
361 {
362 { /* Inline flow#FlowContext#when_false (var_flow) on <var_flow:FlowContext> */
363 var42 = var_flow->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <var_flow:FlowContext> */
364 if (unlikely(var42 == NULL)) {
365 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
366 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 228);
367 fatal_exit(1);
368 }
369 var40 = var42;
370 RET_LABEL41:(void)0;
371 }
372 }
373 {
374 { /* Inline kernel#Object#!= (var40,var_flow) on <var40:FlowContext> */
375 var_other37 = var_flow;
376 {
377 var45 = ((short int(*)(val* self, val* p0))(var40->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var40, var_other37); /* == on <var40:FlowContext>*/
378 }
379 var46 = !var45;
380 var43 = var46;
381 goto RET_LABEL44;
382 RET_LABEL44:(void)0;
383 }
384 }
385 var31 = var43;
386 }
387 if (var31){
388 {
389 var47 = nit__flow___nit__flow__FlowVisitor___make_sub_flow(self);
390 }
391 {
392 { /* Inline flow#FlowVisitor#current_flow_context (self) on <self:FlowVisitor> */
393 var50 = self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
394 if (unlikely(var50 == NULL)) {
395 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
396 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
397 fatal_exit(1);
398 }
399 var48 = var50;
400 RET_LABEL49:(void)0;
401 }
402 }
403 if (likely(varonce!=NULL)) {
404 var51 = varonce;
405 } else {
406 var52 = "AUTOSUB";
407 var53 = standard___standard__NativeString___to_s_with_length(var52, 7l);
408 var51 = var53;
409 varonce = var51;
410 }
411 {
412 { /* Inline flow#FlowContext#name= (var48,var51) on <var48:FlowContext> */
413 var48->attrs[COLOR_nit__flow__FlowContext___name].val = var51; /* _name on <var48:FlowContext> */
414 RET_LABEL54:(void)0;
415 }
416 }
417 } else {
418 }
419 } else {
420 }
421 {
422 { /* Inline flow#FlowVisitor#first (self) on <self:FlowVisitor> */
423 var57 = self->attrs[COLOR_nit__flow__FlowVisitor___first].val; /* _first on <self:FlowVisitor> */
424 var55 = var57;
425 RET_LABEL56:(void)0;
426 }
427 }
428 if (var55 == NULL) {
429 var58 = 0; /* <var_node:ANode> cannot be null */
430 } else {
431 { /* Inline kernel#Object#== (var55,var_node) on <var55:nullable ANode> */
432 var_other = var_node;
433 {
434 { /* Inline kernel#Object#is_same_instance (var55,var_other) on <var55:nullable ANode(ANode)> */
435 var63 = var55 == var_other;
436 var61 = var63;
437 goto RET_LABEL62;
438 RET_LABEL62:(void)0;
439 }
440 }
441 var59 = var61;
442 goto RET_LABEL60;
443 RET_LABEL60:(void)0;
444 }
445 var58 = var59;
446 }
447 if (var58){
448 } else {
449 }
450 RET_LABEL:;
451 }
452 /* method flow#FlowVisitor#visit_expr for (self: FlowVisitor, AExpr): FlowContext */
453 val* nit__flow___nit__flow__FlowVisitor___visit_expr(val* self, val* p0) {
454 val* var /* : FlowContext */;
455 val* var_node /* var node: AExpr */;
456 val* var1 /* : nullable FlowContext */;
457 val* var3 /* : nullable FlowContext */;
458 var_node = p0;
459 {
460 nit___nit__Visitor___enter_visit(self, var_node); /* Direct call parser_nodes#Visitor#enter_visit on <self:FlowVisitor>*/
461 }
462 {
463 { /* Inline flow#AExpr#after_flow_context (var_node) on <var_node:AExpr> */
464 var3 = var_node->attrs[COLOR_nit__flow__AExpr___after_flow_context].val; /* _after_flow_context on <var_node:AExpr> */
465 var1 = var3;
466 RET_LABEL2:(void)0;
467 }
468 }
469 if (unlikely(var1 == NULL)) {
470 PRINT_ERROR("Runtime error: %s", "Cast failed");
471 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 73);
472 fatal_exit(1);
473 }
474 var = var1;
475 goto RET_LABEL;
476 RET_LABEL:;
477 return var;
478 }
479 /* method flow#FlowVisitor#flows for (self: FlowVisitor): Array[FlowContext] */
480 val* nit__flow___nit__flow__FlowVisitor___flows(val* self) {
481 val* var /* : Array[FlowContext] */;
482 val* var1 /* : Array[FlowContext] */;
483 var1 = self->attrs[COLOR_nit__flow__FlowVisitor___flows].val; /* _flows on <self:FlowVisitor> */
484 if (unlikely(var1 == NULL)) {
485 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows");
486 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 76);
487 fatal_exit(1);
488 }
489 var = var1;
490 RET_LABEL:;
491 return var;
492 }
493 /* method flow#FlowVisitor#make_sub_flow for (self: FlowVisitor): FlowContext */
494 val* nit__flow___nit__flow__FlowVisitor___make_sub_flow(val* self) {
495 val* var /* : FlowContext */;
496 val* var1 /* : FlowContext */;
497 val* var_flow /* var flow: FlowContext */;
498 val* var3 /* : Array[FlowContext] */;
499 val* var5 /* : Array[FlowContext] */;
500 val* var6 /* : nullable ANode */;
501 val* var8 /* : nullable ANode */;
502 val* var10 /* : FlowContext */;
503 val* var12 /* : FlowContext */;
504 var1 = NEW_nit__FlowContext(&type_nit__FlowContext);
505 {
506 { /* Inline kernel#Object#init (var1) on <var1:FlowContext> */
507 RET_LABEL2:(void)0;
508 }
509 }
510 var_flow = var1;
511 {
512 { /* Inline flow#FlowVisitor#flows (self) on <self:FlowVisitor> */
513 var5 = self->attrs[COLOR_nit__flow__FlowVisitor___flows].val; /* _flows on <self:FlowVisitor> */
514 if (unlikely(var5 == NULL)) {
515 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows");
516 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 76);
517 fatal_exit(1);
518 }
519 var3 = var5;
520 RET_LABEL4:(void)0;
521 }
522 }
523 {
524 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var3, var_flow); /* Direct call array#Array#add on <var3:Array[FlowContext]>*/
525 }
526 {
527 { /* Inline parser_nodes#Visitor#current_node (self) on <self:FlowVisitor> */
528 var8 = self->attrs[COLOR_nit__parser_nodes__Visitor___current_node].val; /* _current_node on <self:FlowVisitor> */
529 var6 = var8;
530 RET_LABEL7:(void)0;
531 }
532 }
533 {
534 { /* Inline flow#FlowContext#node= (var_flow,var6) on <var_flow:FlowContext> */
535 var_flow->attrs[COLOR_nit__flow__FlowContext___node].val = var6; /* _node on <var_flow:FlowContext> */
536 RET_LABEL9:(void)0;
537 }
538 }
539 {
540 { /* Inline flow#FlowVisitor#current_flow_context (self) on <self:FlowVisitor> */
541 var12 = self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
542 if (unlikely(var12 == NULL)) {
543 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
544 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
545 fatal_exit(1);
546 }
547 var10 = var12;
548 RET_LABEL11:(void)0;
549 }
550 }
551 {
552 nit___nit__FlowContext___add_previous(var_flow, var10); /* Direct call flow#FlowContext#add_previous on <var_flow:FlowContext>*/
553 }
554 {
555 { /* Inline flow#FlowVisitor#current_flow_context= (self,var_flow) on <self:FlowVisitor> */
556 self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val = var_flow; /* _current_flow_context on <self:FlowVisitor> */
557 RET_LABEL13:(void)0;
558 }
559 }
560 var = var_flow;
561 goto RET_LABEL;
562 RET_LABEL:;
563 return var;
564 }
565 /* method flow#FlowVisitor#make_merge_flow for (self: FlowVisitor, FlowContext, FlowContext): FlowContext */
566 val* nit__flow___nit__flow__FlowVisitor___make_merge_flow(val* self, val* p0, val* p1) {
567 val* var /* : FlowContext */;
568 val* var_flow1 /* var flow1: FlowContext */;
569 val* var_flow2 /* var flow2: FlowContext */;
570 val* var1 /* : FlowContext */;
571 val* var_flow /* var flow: FlowContext */;
572 val* var3 /* : Array[FlowContext] */;
573 val* var5 /* : Array[FlowContext] */;
574 val* var6 /* : nullable ANode */;
575 val* var8 /* : nullable ANode */;
576 var_flow1 = p0;
577 var_flow2 = p1;
578 var1 = NEW_nit__FlowContext(&type_nit__FlowContext);
579 {
580 { /* Inline kernel#Object#init (var1) on <var1:FlowContext> */
581 RET_LABEL2:(void)0;
582 }
583 }
584 var_flow = var1;
585 {
586 { /* Inline flow#FlowVisitor#flows (self) on <self:FlowVisitor> */
587 var5 = self->attrs[COLOR_nit__flow__FlowVisitor___flows].val; /* _flows on <self:FlowVisitor> */
588 if (unlikely(var5 == NULL)) {
589 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows");
590 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 76);
591 fatal_exit(1);
592 }
593 var3 = var5;
594 RET_LABEL4:(void)0;
595 }
596 }
597 {
598 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var3, var_flow); /* Direct call array#Array#add on <var3:Array[FlowContext]>*/
599 }
600 {
601 { /* Inline parser_nodes#Visitor#current_node (self) on <self:FlowVisitor> */
602 var8 = self->attrs[COLOR_nit__parser_nodes__Visitor___current_node].val; /* _current_node on <self:FlowVisitor> */
603 var6 = var8;
604 RET_LABEL7:(void)0;
605 }
606 }
607 {
608 { /* Inline flow#FlowContext#node= (var_flow,var6) on <var_flow:FlowContext> */
609 var_flow->attrs[COLOR_nit__flow__FlowContext___node].val = var6; /* _node on <var_flow:FlowContext> */
610 RET_LABEL9:(void)0;
611 }
612 }
613 {
614 nit___nit__FlowContext___add_previous(var_flow, var_flow1); /* Direct call flow#FlowContext#add_previous on <var_flow:FlowContext>*/
615 }
616 {
617 nit___nit__FlowContext___add_previous(var_flow, var_flow2); /* Direct call flow#FlowContext#add_previous on <var_flow:FlowContext>*/
618 }
619 {
620 { /* Inline flow#FlowVisitor#current_flow_context= (self,var_flow) on <self:FlowVisitor> */
621 self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val = var_flow; /* _current_flow_context on <self:FlowVisitor> */
622 RET_LABEL10:(void)0;
623 }
624 }
625 var = var_flow;
626 goto RET_LABEL;
627 RET_LABEL:;
628 return var;
629 }
630 /* method flow#FlowVisitor#make_true_false_flow for (self: FlowVisitor, FlowContext, FlowContext): FlowContext */
631 val* nit__flow___nit__flow__FlowVisitor___make_true_false_flow(val* self, val* p0, val* p1) {
632 val* var /* : FlowContext */;
633 val* var_true_flow /* var true_flow: FlowContext */;
634 val* var_false_flow /* var false_flow: FlowContext */;
635 val* var1 /* : FlowContext */;
636 val* var_flow /* var flow: FlowContext */;
637 val* var3 /* : Array[FlowContext] */;
638 val* var5 /* : Array[FlowContext] */;
639 val* var6 /* : nullable ANode */;
640 val* var8 /* : nullable ANode */;
641 var_true_flow = p0;
642 var_false_flow = p1;
643 var1 = NEW_nit__FlowContext(&type_nit__FlowContext);
644 {
645 { /* Inline kernel#Object#init (var1) on <var1:FlowContext> */
646 RET_LABEL2:(void)0;
647 }
648 }
649 var_flow = var1;
650 {
651 { /* Inline flow#FlowVisitor#flows (self) on <self:FlowVisitor> */
652 var5 = self->attrs[COLOR_nit__flow__FlowVisitor___flows].val; /* _flows on <self:FlowVisitor> */
653 if (unlikely(var5 == NULL)) {
654 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows");
655 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 76);
656 fatal_exit(1);
657 }
658 var3 = var5;
659 RET_LABEL4:(void)0;
660 }
661 }
662 {
663 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var3, var_flow); /* Direct call array#Array#add on <var3:Array[FlowContext]>*/
664 }
665 {
666 { /* Inline parser_nodes#Visitor#current_node (self) on <self:FlowVisitor> */
667 var8 = self->attrs[COLOR_nit__parser_nodes__Visitor___current_node].val; /* _current_node on <self:FlowVisitor> */
668 var6 = var8;
669 RET_LABEL7:(void)0;
670 }
671 }
672 {
673 { /* Inline flow#FlowContext#node= (var_flow,var6) on <var_flow:FlowContext> */
674 var_flow->attrs[COLOR_nit__flow__FlowContext___node].val = var6; /* _node on <var_flow:FlowContext> */
675 RET_LABEL9:(void)0;
676 }
677 }
678 {
679 nit___nit__FlowContext___add_previous(var_flow, var_true_flow); /* Direct call flow#FlowContext#add_previous on <var_flow:FlowContext>*/
680 }
681 {
682 nit___nit__FlowContext___add_previous(var_flow, var_false_flow); /* Direct call flow#FlowContext#add_previous on <var_flow:FlowContext>*/
683 }
684 {
685 { /* Inline flow#FlowContext#when_true= (var_flow,var_true_flow) on <var_flow:FlowContext> */
686 var_flow->attrs[COLOR_nit__flow__FlowContext___when_true].val = var_true_flow; /* _when_true on <var_flow:FlowContext> */
687 RET_LABEL10:(void)0;
688 }
689 }
690 {
691 { /* Inline flow#FlowContext#when_false= (var_flow,var_false_flow) on <var_flow:FlowContext> */
692 var_flow->attrs[COLOR_nit__flow__FlowContext___when_false].val = var_false_flow; /* _when_false on <var_flow:FlowContext> */
693 RET_LABEL11:(void)0;
694 }
695 }
696 {
697 { /* Inline flow#FlowVisitor#current_flow_context= (self,var_flow) on <self:FlowVisitor> */
698 self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val = var_flow; /* _current_flow_context on <self:FlowVisitor> */
699 RET_LABEL12:(void)0;
700 }
701 }
702 var = var_flow;
703 goto RET_LABEL;
704 RET_LABEL:;
705 return var;
706 }
707 /* method flow#FlowVisitor#make_sub_true_false_flow for (self: FlowVisitor): FlowContext */
708 val* nit__flow___nit__flow__FlowVisitor___make_sub_true_false_flow(val* self) {
709 val* var /* : FlowContext */;
710 val* var1 /* : FlowContext */;
711 val* var3 /* : FlowContext */;
712 val* var_orig_flow /* var orig_flow: FlowContext */;
713 val* var4 /* : FlowContext */;
714 val* var_true_flow /* var true_flow: FlowContext */;
715 val* var6 /* : Array[FlowContext] */;
716 val* var8 /* : Array[FlowContext] */;
717 val* var9 /* : nullable ANode */;
718 val* var11 /* : nullable ANode */;
719 static val* varonce;
720 val* var13 /* : String */;
721 char* var14 /* : NativeString */;
722 val* var15 /* : FlatString */;
723 val* var17 /* : FlowContext */;
724 val* var_false_flow /* var false_flow: FlowContext */;
725 val* var19 /* : Array[FlowContext] */;
726 val* var21 /* : Array[FlowContext] */;
727 val* var22 /* : nullable ANode */;
728 val* var24 /* : nullable ANode */;
729 static val* varonce26;
730 val* var27 /* : String */;
731 char* var28 /* : NativeString */;
732 val* var29 /* : FlatString */;
733 val* var31 /* : FlowContext */;
734 {
735 { /* Inline flow#FlowVisitor#current_flow_context (self) on <self:FlowVisitor> */
736 var3 = self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
737 if (unlikely(var3 == NULL)) {
738 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
739 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
740 fatal_exit(1);
741 }
742 var1 = var3;
743 RET_LABEL2:(void)0;
744 }
745 }
746 var_orig_flow = var1;
747 var4 = NEW_nit__FlowContext(&type_nit__FlowContext);
748 {
749 { /* Inline kernel#Object#init (var4) on <var4:FlowContext> */
750 RET_LABEL5:(void)0;
751 }
752 }
753 var_true_flow = var4;
754 {
755 { /* Inline flow#FlowVisitor#flows (self) on <self:FlowVisitor> */
756 var8 = self->attrs[COLOR_nit__flow__FlowVisitor___flows].val; /* _flows on <self:FlowVisitor> */
757 if (unlikely(var8 == NULL)) {
758 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows");
759 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 76);
760 fatal_exit(1);
761 }
762 var6 = var8;
763 RET_LABEL7:(void)0;
764 }
765 }
766 {
767 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var6, var_true_flow); /* Direct call array#Array#add on <var6:Array[FlowContext]>*/
768 }
769 {
770 { /* Inline parser_nodes#Visitor#current_node (self) on <self:FlowVisitor> */
771 var11 = self->attrs[COLOR_nit__parser_nodes__Visitor___current_node].val; /* _current_node on <self:FlowVisitor> */
772 var9 = var11;
773 RET_LABEL10:(void)0;
774 }
775 }
776 {
777 { /* Inline flow#FlowContext#node= (var_true_flow,var9) on <var_true_flow:FlowContext> */
778 var_true_flow->attrs[COLOR_nit__flow__FlowContext___node].val = var9; /* _node on <var_true_flow:FlowContext> */
779 RET_LABEL12:(void)0;
780 }
781 }
782 {
783 nit___nit__FlowContext___add_previous(var_true_flow, var_orig_flow); /* Direct call flow#FlowContext#add_previous on <var_true_flow:FlowContext>*/
784 }
785 if (likely(varonce!=NULL)) {
786 var13 = varonce;
787 } else {
788 var14 = "TRUE";
789 var15 = standard___standard__NativeString___to_s_with_length(var14, 4l);
790 var13 = var15;
791 varonce = var13;
792 }
793 {
794 { /* Inline flow#FlowContext#name= (var_true_flow,var13) on <var_true_flow:FlowContext> */
795 var_true_flow->attrs[COLOR_nit__flow__FlowContext___name].val = var13; /* _name on <var_true_flow:FlowContext> */
796 RET_LABEL16:(void)0;
797 }
798 }
799 var17 = NEW_nit__FlowContext(&type_nit__FlowContext);
800 {
801 { /* Inline kernel#Object#init (var17) on <var17:FlowContext> */
802 RET_LABEL18:(void)0;
803 }
804 }
805 var_false_flow = var17;
806 {
807 { /* Inline flow#FlowVisitor#flows (self) on <self:FlowVisitor> */
808 var21 = self->attrs[COLOR_nit__flow__FlowVisitor___flows].val; /* _flows on <self:FlowVisitor> */
809 if (unlikely(var21 == NULL)) {
810 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows");
811 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 76);
812 fatal_exit(1);
813 }
814 var19 = var21;
815 RET_LABEL20:(void)0;
816 }
817 }
818 {
819 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var19, var_false_flow); /* Direct call array#Array#add on <var19:Array[FlowContext]>*/
820 }
821 {
822 { /* Inline parser_nodes#Visitor#current_node (self) on <self:FlowVisitor> */
823 var24 = self->attrs[COLOR_nit__parser_nodes__Visitor___current_node].val; /* _current_node on <self:FlowVisitor> */
824 var22 = var24;
825 RET_LABEL23:(void)0;
826 }
827 }
828 {
829 { /* Inline flow#FlowContext#node= (var_false_flow,var22) on <var_false_flow:FlowContext> */
830 var_false_flow->attrs[COLOR_nit__flow__FlowContext___node].val = var22; /* _node on <var_false_flow:FlowContext> */
831 RET_LABEL25:(void)0;
832 }
833 }
834 {
835 nit___nit__FlowContext___add_previous(var_false_flow, var_orig_flow); /* Direct call flow#FlowContext#add_previous on <var_false_flow:FlowContext>*/
836 }
837 if (likely(varonce26!=NULL)) {
838 var27 = varonce26;
839 } else {
840 var28 = "FALSE";
841 var29 = standard___standard__NativeString___to_s_with_length(var28, 5l);
842 var27 = var29;
843 varonce26 = var27;
844 }
845 {
846 { /* Inline flow#FlowContext#name= (var_false_flow,var27) on <var_false_flow:FlowContext> */
847 var_false_flow->attrs[COLOR_nit__flow__FlowContext___name].val = var27; /* _name on <var_false_flow:FlowContext> */
848 RET_LABEL30:(void)0;
849 }
850 }
851 {
852 var31 = nit__flow___nit__flow__FlowVisitor___make_true_false_flow(self, var_true_flow, var_false_flow);
853 }
854 var = var31;
855 goto RET_LABEL;
856 RET_LABEL:;
857 return var;
858 }
859 /* method flow#FlowVisitor#make_unreachable_flow for (self: FlowVisitor): FlowContext */
860 val* nit__flow___nit__flow__FlowVisitor___make_unreachable_flow(val* self) {
861 val* var /* : FlowContext */;
862 val* var1 /* : FlowContext */;
863 val* var_flow /* var flow: FlowContext */;
864 val* var3 /* : Array[FlowContext] */;
865 val* var5 /* : Array[FlowContext] */;
866 val* var6 /* : nullable ANode */;
867 val* var8 /* : nullable ANode */;
868 val* var10 /* : FlowContext */;
869 val* var12 /* : FlowContext */;
870 var1 = NEW_nit__FlowContext(&type_nit__FlowContext);
871 {
872 { /* Inline kernel#Object#init (var1) on <var1:FlowContext> */
873 RET_LABEL2:(void)0;
874 }
875 }
876 var_flow = var1;
877 {
878 { /* Inline flow#FlowVisitor#flows (self) on <self:FlowVisitor> */
879 var5 = self->attrs[COLOR_nit__flow__FlowVisitor___flows].val; /* _flows on <self:FlowVisitor> */
880 if (unlikely(var5 == NULL)) {
881 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows");
882 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 76);
883 fatal_exit(1);
884 }
885 var3 = var5;
886 RET_LABEL4:(void)0;
887 }
888 }
889 {
890 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var3, var_flow); /* Direct call array#Array#add on <var3:Array[FlowContext]>*/
891 }
892 {
893 { /* Inline parser_nodes#Visitor#current_node (self) on <self:FlowVisitor> */
894 var8 = self->attrs[COLOR_nit__parser_nodes__Visitor___current_node].val; /* _current_node on <self:FlowVisitor> */
895 var6 = var8;
896 RET_LABEL7:(void)0;
897 }
898 }
899 {
900 { /* Inline flow#FlowContext#node= (var_flow,var6) on <var_flow:FlowContext> */
901 var_flow->attrs[COLOR_nit__flow__FlowContext___node].val = var6; /* _node on <var_flow:FlowContext> */
902 RET_LABEL9:(void)0;
903 }
904 }
905 {
906 { /* Inline flow#FlowVisitor#current_flow_context (self) on <self:FlowVisitor> */
907 var12 = self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
908 if (unlikely(var12 == NULL)) {
909 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
910 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
911 fatal_exit(1);
912 }
913 var10 = var12;
914 RET_LABEL11:(void)0;
915 }
916 }
917 {
918 nit___nit__FlowContext___add_previous(var_flow, var10); /* Direct call flow#FlowContext#add_previous on <var_flow:FlowContext>*/
919 }
920 {
921 { /* Inline flow#FlowContext#is_marked_unreachable= (var_flow,1) on <var_flow:FlowContext> */
922 var_flow->attrs[COLOR_nit__flow__FlowContext___is_marked_unreachable].s = 1; /* _is_marked_unreachable on <var_flow:FlowContext> */
923 RET_LABEL13:(void)0;
924 }
925 }
926 {
927 { /* Inline flow#FlowVisitor#current_flow_context= (self,var_flow) on <self:FlowVisitor> */
928 self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val = var_flow; /* _current_flow_context on <self:FlowVisitor> */
929 RET_LABEL14:(void)0;
930 }
931 }
932 var = var_flow;
933 goto RET_LABEL;
934 RET_LABEL:;
935 return var;
936 }
937 /* method flow#FlowVisitor#merge_continues_to for (self: FlowVisitor, FlowContext, nullable EscapeMark) */
938 void nit__flow___nit__flow__FlowVisitor___merge_continues_to(val* self, val* p0, val* p1) {
939 val* var_before_loop /* var before_loop: FlowContext */;
940 val* var_escapemark /* var escapemark: nullable EscapeMark */;
941 short int var /* : Bool */;
942 short int var1 /* : Bool */;
943 val* var_other /* var other: nullable Object */;
944 short int var3 /* : Bool */;
945 short int var5 /* : Bool */;
946 val* var6 /* : Array[AEscapeExpr] */;
947 val* var8 /* : Array[AEscapeExpr] */;
948 val* var_ /* var : Array[AEscapeExpr] */;
949 val* var9 /* : ArrayIterator[nullable Object] */;
950 val* var_10 /* var : ArrayIterator[AEscapeExpr] */;
951 short int var11 /* : Bool */;
952 val* var12 /* : nullable Object */;
953 val* var_b /* var b: AEscapeExpr */;
954 val* var13 /* : nullable FlowContext */;
955 val* var_before /* var before: nullable FlowContext */;
956 short int var14 /* : Bool */;
957 short int var15 /* : Bool */;
958 short int var17 /* : Bool */;
959 short int var19 /* : Bool */;
960 var_before_loop = p0;
961 var_escapemark = p1;
962 if (var_escapemark == NULL) {
963 var = 1; /* is null */
964 } else {
965 var = 0; /* arg is null but recv is not */
966 }
967 if (0) {
968 { /* Inline kernel#Object#== (var_escapemark,((val*)NULL)) on <var_escapemark:nullable EscapeMark> */
969 var_other = ((val*)NULL);
970 {
971 { /* Inline kernel#Object#is_same_instance (var_escapemark,var_other) on <var_escapemark:nullable EscapeMark(EscapeMark)> */
972 var5 = var_escapemark == var_other;
973 var3 = var5;
974 goto RET_LABEL4;
975 RET_LABEL4:(void)0;
976 }
977 }
978 var1 = var3;
979 goto RET_LABEL2;
980 RET_LABEL2:(void)0;
981 }
982 var = var1;
983 }
984 if (var){
985 goto RET_LABEL;
986 } else {
987 }
988 {
989 { /* Inline scope#EscapeMark#escapes (var_escapemark) on <var_escapemark:nullable EscapeMark(EscapeMark)> */
990 var8 = var_escapemark->attrs[COLOR_nit__scope__EscapeMark___escapes].val; /* _escapes on <var_escapemark:nullable EscapeMark(EscapeMark)> */
991 if (unlikely(var8 == NULL)) {
992 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _escapes");
993 PRINT_ERROR(" (%s:%d)\n", FILE_nit__scope, 58);
994 fatal_exit(1);
995 }
996 var6 = var8;
997 RET_LABEL7:(void)0;
998 }
999 }
1000 var_ = var6;
1001 {
1002 var9 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
1003 }
1004 var_10 = var9;
1005 for(;;) {
1006 {
1007 var11 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_10);
1008 }
1009 if (var11){
1010 {
1011 var12 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_10);
1012 }
1013 var_b = var12;
1014 {
1015 var13 = nit__flow___AEscapeExpr___before_flow_context(var_b);
1016 }
1017 var_before = var13;
1018 if (var_before == NULL) {
1019 var14 = 1; /* is null */
1020 } else {
1021 var14 = 0; /* arg is null but recv is not */
1022 }
1023 if (0) {
1024 { /* Inline kernel#Object#== (var_before,((val*)NULL)) on <var_before:nullable FlowContext> */
1025 var_other = ((val*)NULL);
1026 {
1027 { /* Inline kernel#Object#is_same_instance (var_before,var_other) on <var_before:nullable FlowContext(FlowContext)> */
1028 var19 = var_before == var_other;
1029 var17 = var19;
1030 goto RET_LABEL18;
1031 RET_LABEL18:(void)0;
1032 }
1033 }
1034 var15 = var17;
1035 goto RET_LABEL16;
1036 RET_LABEL16:(void)0;
1037 }
1038 var14 = var15;
1039 }
1040 if (var14){
1041 goto BREAK_label;
1042 } else {
1043 }
1044 {
1045 nit___nit__FlowContext___add_loop(var_before_loop, var_before); /* Direct call flow#FlowContext#add_loop on <var_before_loop:FlowContext>*/
1046 }
1047 BREAK_label: (void)0;
1048 {
1049 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_10); /* Direct call array#ArrayIterator#next on <var_10:ArrayIterator[AEscapeExpr]>*/
1050 }
1051 } else {
1052 goto BREAK_label20;
1053 }
1054 }
1055 BREAK_label20: (void)0;
1056 {
1057 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_10); /* Direct call array#ArrayIterator#finish on <var_10:ArrayIterator[AEscapeExpr]>*/
1058 }
1059 RET_LABEL:;
1060 }
1061 /* method flow#FlowVisitor#merge_breaks for (self: FlowVisitor, nullable EscapeMark) */
1062 void nit__flow___nit__flow__FlowVisitor___merge_breaks(val* self, val* p0) {
1063 val* var_escapemark /* var escapemark: nullable EscapeMark */;
1064 short int var /* : Bool */;
1065 short int var1 /* : Bool */;
1066 val* var_other /* var other: nullable Object */;
1067 short int var3 /* : Bool */;
1068 short int var5 /* : Bool */;
1069 val* var6 /* : Array[AEscapeExpr] */;
1070 val* var8 /* : Array[AEscapeExpr] */;
1071 val* var_ /* var : Array[AEscapeExpr] */;
1072 val* var9 /* : ArrayIterator[nullable Object] */;
1073 val* var_10 /* var : ArrayIterator[AEscapeExpr] */;
1074 short int var11 /* : Bool */;
1075 val* var12 /* : nullable Object */;
1076 val* var_b /* var b: AEscapeExpr */;
1077 val* var13 /* : nullable FlowContext */;
1078 val* var_before /* var before: nullable FlowContext */;
1079 short int var14 /* : Bool */;
1080 short int var15 /* : Bool */;
1081 short int var17 /* : Bool */;
1082 short int var19 /* : Bool */;
1083 val* var20 /* : FlowContext */;
1084 val* var22 /* : FlowContext */;
1085 val* var23 /* : FlowContext */;
1086 var_escapemark = p0;
1087 if (var_escapemark == NULL) {
1088 var = 1; /* is null */
1089 } else {
1090 var = 0; /* arg is null but recv is not */
1091 }
1092 if (0) {
1093 { /* Inline kernel#Object#== (var_escapemark,((val*)NULL)) on <var_escapemark:nullable EscapeMark> */
1094 var_other = ((val*)NULL);
1095 {
1096 { /* Inline kernel#Object#is_same_instance (var_escapemark,var_other) on <var_escapemark:nullable EscapeMark(EscapeMark)> */
1097 var5 = var_escapemark == var_other;
1098 var3 = var5;
1099 goto RET_LABEL4;
1100 RET_LABEL4:(void)0;
1101 }
1102 }
1103 var1 = var3;
1104 goto RET_LABEL2;
1105 RET_LABEL2:(void)0;
1106 }
1107 var = var1;
1108 }
1109 if (var){
1110 goto RET_LABEL;
1111 } else {
1112 }
1113 {
1114 { /* Inline scope#EscapeMark#escapes (var_escapemark) on <var_escapemark:nullable EscapeMark(EscapeMark)> */
1115 var8 = var_escapemark->attrs[COLOR_nit__scope__EscapeMark___escapes].val; /* _escapes on <var_escapemark:nullable EscapeMark(EscapeMark)> */
1116 if (unlikely(var8 == NULL)) {
1117 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _escapes");
1118 PRINT_ERROR(" (%s:%d)\n", FILE_nit__scope, 58);
1119 fatal_exit(1);
1120 }
1121 var6 = var8;
1122 RET_LABEL7:(void)0;
1123 }
1124 }
1125 var_ = var6;
1126 {
1127 var9 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
1128 }
1129 var_10 = var9;
1130 for(;;) {
1131 {
1132 var11 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_10);
1133 }
1134 if (var11){
1135 {
1136 var12 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_10);
1137 }
1138 var_b = var12;
1139 {
1140 var13 = nit__flow___AEscapeExpr___before_flow_context(var_b);
1141 }
1142 var_before = var13;
1143 if (var_before == NULL) {
1144 var14 = 1; /* is null */
1145 } else {
1146 var14 = 0; /* arg is null but recv is not */
1147 }
1148 if (0) {
1149 { /* Inline kernel#Object#== (var_before,((val*)NULL)) on <var_before:nullable FlowContext> */
1150 var_other = ((val*)NULL);
1151 {
1152 { /* Inline kernel#Object#is_same_instance (var_before,var_other) on <var_before:nullable FlowContext(FlowContext)> */
1153 var19 = var_before == var_other;
1154 var17 = var19;
1155 goto RET_LABEL18;
1156 RET_LABEL18:(void)0;
1157 }
1158 }
1159 var15 = var17;
1160 goto RET_LABEL16;
1161 RET_LABEL16:(void)0;
1162 }
1163 var14 = var15;
1164 }
1165 if (var14){
1166 goto BREAK_label;
1167 } else {
1168 }
1169 {
1170 { /* Inline flow#FlowVisitor#current_flow_context (self) on <self:FlowVisitor> */
1171 var22 = self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
1172 if (unlikely(var22 == NULL)) {
1173 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
1174 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
1175 fatal_exit(1);
1176 }
1177 var20 = var22;
1178 RET_LABEL21:(void)0;
1179 }
1180 }
1181 {
1182 var23 = nit__flow___nit__flow__FlowVisitor___make_merge_flow(self, var20, var_before);
1183 }
1184 BREAK_label: (void)0;
1185 {
1186 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_10); /* Direct call array#ArrayIterator#next on <var_10:ArrayIterator[AEscapeExpr]>*/
1187 }
1188 } else {
1189 goto BREAK_label24;
1190 }
1191 }
1192 BREAK_label24: (void)0;
1193 {
1194 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_10); /* Direct call array#ArrayIterator#finish on <var_10:ArrayIterator[AEscapeExpr]>*/
1195 }
1196 RET_LABEL:;
1197 }
1198 /* method flow#FlowContext#previous for (self: FlowContext): Array[FlowContext] */
1199 val* nit___nit__FlowContext___previous(val* self) {
1200 val* var /* : Array[FlowContext] */;
1201 val* var1 /* : Array[FlowContext] */;
1202 var1 = self->attrs[COLOR_nit__flow__FlowContext___previous].val; /* _previous on <self:FlowContext> */
1203 if (unlikely(var1 == NULL)) {
1204 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
1205 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 189);
1206 fatal_exit(1);
1207 }
1208 var = var1;
1209 RET_LABEL:;
1210 return var;
1211 }
1212 /* method flow#FlowContext#loops for (self: FlowContext): Array[FlowContext] */
1213 val* nit___nit__FlowContext___loops(val* self) {
1214 val* var /* : Array[FlowContext] */;
1215 val* var1 /* : Array[FlowContext] */;
1216 var1 = self->attrs[COLOR_nit__flow__FlowContext___loops].val; /* _loops on <self:FlowContext> */
1217 if (unlikely(var1 == NULL)) {
1218 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _loops");
1219 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 192);
1220 fatal_exit(1);
1221 }
1222 var = var1;
1223 RET_LABEL:;
1224 return var;
1225 }
1226 /* method flow#FlowContext#is_marked_unreachable for (self: FlowContext): Bool */
1227 short int nit___nit__FlowContext___is_marked_unreachable(val* self) {
1228 short int var /* : Bool */;
1229 short int var1 /* : Bool */;
1230 var1 = self->attrs[COLOR_nit__flow__FlowContext___is_marked_unreachable].s; /* _is_marked_unreachable on <self:FlowContext> */
1231 var = var1;
1232 RET_LABEL:;
1233 return var;
1234 }
1235 /* method flow#FlowContext#is_marked_unreachable= for (self: FlowContext, Bool) */
1236 void nit___nit__FlowContext___is_marked_unreachable_61d(val* self, short int p0) {
1237 self->attrs[COLOR_nit__flow__FlowContext___is_marked_unreachable].s = p0; /* _is_marked_unreachable on <self:FlowContext> */
1238 RET_LABEL:;
1239 }
1240 /* method flow#FlowContext#is_unreachable for (self: FlowContext): Bool */
1241 short int nit___nit__FlowContext___is_unreachable(val* self) {
1242 short int var /* : Bool */;
1243 short int var1 /* : Bool */;
1244 short int var3 /* : Bool */;
1245 short int var4 /* : Bool */;
1246 short int var6 /* : Bool */;
1247 val* var7 /* : Array[FlowContext] */;
1248 val* var9 /* : Array[FlowContext] */;
1249 long var10 /* : Int */;
1250 long var12 /* : Int */;
1251 short int var13 /* : Bool */;
1252 short int var15 /* : Bool */;
1253 {
1254 { /* Inline flow#FlowContext#is_marked_unreachable (self) on <self:FlowContext> */
1255 var3 = self->attrs[COLOR_nit__flow__FlowContext___is_marked_unreachable].s; /* _is_marked_unreachable on <self:FlowContext> */
1256 var1 = var3;
1257 RET_LABEL2:(void)0;
1258 }
1259 }
1260 if (var1){
1261 var = 1;
1262 goto RET_LABEL;
1263 } else {
1264 }
1265 {
1266 { /* Inline flow#FlowContext#is_start (self) on <self:FlowContext> */
1267 var6 = self->attrs[COLOR_nit__flow__FlowContext___is_start].s; /* _is_start on <self:FlowContext> */
1268 var4 = var6;
1269 RET_LABEL5:(void)0;
1270 }
1271 }
1272 if (var4){
1273 var = 0;
1274 goto RET_LABEL;
1275 } else {
1276 }
1277 {
1278 { /* Inline flow#FlowContext#previous (self) on <self:FlowContext> */
1279 var9 = self->attrs[COLOR_nit__flow__FlowContext___previous].val; /* _previous on <self:FlowContext> */
1280 if (unlikely(var9 == NULL)) {
1281 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
1282 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 189);
1283 fatal_exit(1);
1284 }
1285 var7 = var9;
1286 RET_LABEL8:(void)0;
1287 }
1288 }
1289 {
1290 { /* Inline array#AbstractArrayRead#length (var7) on <var7:Array[FlowContext]> */
1291 var12 = var7->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var7:Array[FlowContext]> */
1292 var10 = var12;
1293 RET_LABEL11:(void)0;
1294 }
1295 }
1296 {
1297 { /* Inline kernel#Int#== (var10,0l) on <var10:Int> */
1298 var15 = var10 == 0l;
1299 var13 = var15;
1300 goto RET_LABEL14;
1301 RET_LABEL14:(void)0;
1302 }
1303 }
1304 if (var13){
1305 var = 1;
1306 goto RET_LABEL;
1307 } else {
1308 }
1309 var = 0;
1310 goto RET_LABEL;
1311 RET_LABEL:;
1312 return var;
1313 }
1314 /* method flow#FlowContext#is_already_unreachable for (self: FlowContext): Bool */
1315 short int nit___nit__FlowContext___is_already_unreachable(val* self) {
1316 short int var /* : Bool */;
1317 short int var1 /* : Bool */;
1318 var1 = self->attrs[COLOR_nit__flow__FlowContext___is_already_unreachable].s; /* _is_already_unreachable on <self:FlowContext> */
1319 var = var1;
1320 RET_LABEL:;
1321 return var;
1322 }
1323 /* method flow#FlowContext#is_already_unreachable= for (self: FlowContext, Bool) */
1324 void nit___nit__FlowContext___is_already_unreachable_61d(val* self, short int p0) {
1325 self->attrs[COLOR_nit__flow__FlowContext___is_already_unreachable].s = p0; /* _is_already_unreachable on <self:FlowContext> */
1326 RET_LABEL:;
1327 }
1328 /* method flow#FlowContext#is_start for (self: FlowContext): Bool */
1329 short int nit___nit__FlowContext___is_start(val* self) {
1330 short int var /* : Bool */;
1331 short int var1 /* : Bool */;
1332 var1 = self->attrs[COLOR_nit__flow__FlowContext___is_start].s; /* _is_start on <self:FlowContext> */
1333 var = var1;
1334 RET_LABEL:;
1335 return var;
1336 }
1337 /* method flow#FlowContext#is_start= for (self: FlowContext, Bool) */
1338 void nit___nit__FlowContext___is_start_61d(val* self, short int p0) {
1339 self->attrs[COLOR_nit__flow__FlowContext___is_start].s = p0; /* _is_start on <self:FlowContext> */
1340 RET_LABEL:;
1341 }
1342 /* method flow#FlowContext#node for (self: FlowContext): nullable ANode */
1343 val* nit___nit__FlowContext___node(val* self) {
1344 val* var /* : nullable ANode */;
1345 val* var1 /* : nullable ANode */;
1346 var1 = self->attrs[COLOR_nit__flow__FlowContext___node].val; /* _node on <self:FlowContext> */
1347 var = var1;
1348 RET_LABEL:;
1349 return var;
1350 }
1351 /* method flow#FlowContext#node= for (self: FlowContext, nullable ANode) */
1352 void nit___nit__FlowContext___node_61d(val* self, val* p0) {
1353 self->attrs[COLOR_nit__flow__FlowContext___node].val = p0; /* _node on <self:FlowContext> */
1354 RET_LABEL:;
1355 }
1356 /* method flow#FlowContext#name= for (self: FlowContext, String) */
1357 void nit___nit__FlowContext___name_61d(val* self, val* p0) {
1358 self->attrs[COLOR_nit__flow__FlowContext___name].val = p0; /* _name on <self:FlowContext> */
1359 RET_LABEL:;
1360 }
1361 /* method flow#FlowContext#when_true for (self: FlowContext): FlowContext */
1362 val* nit___nit__FlowContext___when_true(val* self) {
1363 val* var /* : FlowContext */;
1364 val* var1 /* : FlowContext */;
1365 var1 = self->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <self:FlowContext> */
1366 if (unlikely(var1 == NULL)) {
1367 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
1368 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225);
1369 fatal_exit(1);
1370 }
1371 var = var1;
1372 RET_LABEL:;
1373 return var;
1374 }
1375 /* method flow#FlowContext#when_true= for (self: FlowContext, FlowContext) */
1376 void nit___nit__FlowContext___when_true_61d(val* self, val* p0) {
1377 self->attrs[COLOR_nit__flow__FlowContext___when_true].val = p0; /* _when_true on <self:FlowContext> */
1378 RET_LABEL:;
1379 }
1380 /* method flow#FlowContext#when_false for (self: FlowContext): FlowContext */
1381 val* nit___nit__FlowContext___when_false(val* self) {
1382 val* var /* : FlowContext */;
1383 val* var1 /* : FlowContext */;
1384 var1 = self->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <self:FlowContext> */
1385 if (unlikely(var1 == NULL)) {
1386 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
1387 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 228);
1388 fatal_exit(1);
1389 }
1390 var = var1;
1391 RET_LABEL:;
1392 return var;
1393 }
1394 /* method flow#FlowContext#when_false= for (self: FlowContext, FlowContext) */
1395 void nit___nit__FlowContext___when_false_61d(val* self, val* p0) {
1396 self->attrs[COLOR_nit__flow__FlowContext___when_false].val = p0; /* _when_false on <self:FlowContext> */
1397 RET_LABEL:;
1398 }
1399 /* method flow#FlowContext#add_previous for (self: FlowContext, FlowContext) */
1400 void nit___nit__FlowContext___add_previous(val* self, val* p0) {
1401 val* var_flow /* var flow: FlowContext */;
1402 short int var /* : Bool */;
1403 short int var1 /* : Bool */;
1404 short int var2 /* : Bool */;
1405 short int var_ /* var : Bool */;
1406 val* var3 /* : Array[FlowContext] */;
1407 val* var5 /* : Array[FlowContext] */;
1408 short int var6 /* : Bool */;
1409 short int var7 /* : Bool */;
1410 val* var8 /* : Array[FlowContext] */;
1411 val* var10 /* : Array[FlowContext] */;
1412 var_flow = p0;
1413 {
1414 var1 = nit___nit__FlowContext___is_unreachable(var_flow);
1415 }
1416 var2 = !var1;
1417 var_ = var2;
1418 if (var2){
1419 {
1420 { /* Inline flow#FlowContext#previous (self) on <self:FlowContext> */
1421 var5 = self->attrs[COLOR_nit__flow__FlowContext___previous].val; /* _previous on <self:FlowContext> */
1422 if (unlikely(var5 == NULL)) {
1423 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
1424 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 189);
1425 fatal_exit(1);
1426 }
1427 var3 = var5;
1428 RET_LABEL4:(void)0;
1429 }
1430 }
1431 {
1432 var6 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__has(var3, var_flow);
1433 }
1434 var7 = !var6;
1435 var = var7;
1436 } else {
1437 var = var_;
1438 }
1439 if (var){
1440 {
1441 { /* Inline flow#FlowContext#previous (self) on <self:FlowContext> */
1442 var10 = self->attrs[COLOR_nit__flow__FlowContext___previous].val; /* _previous on <self:FlowContext> */
1443 if (unlikely(var10 == NULL)) {
1444 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
1445 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 189);
1446 fatal_exit(1);
1447 }
1448 var8 = var10;
1449 RET_LABEL9:(void)0;
1450 }
1451 }
1452 {
1453 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var8, var_flow); /* Direct call array#Array#add on <var8:Array[FlowContext]>*/
1454 }
1455 } else {
1456 }
1457 RET_LABEL:;
1458 }
1459 /* method flow#FlowContext#add_loop for (self: FlowContext, FlowContext) */
1460 void nit___nit__FlowContext___add_loop(val* self, val* p0) {
1461 val* var_flow /* var flow: FlowContext */;
1462 short int var /* : Bool */;
1463 short int var1 /* : Bool */;
1464 short int var2 /* : Bool */;
1465 short int var_ /* var : Bool */;
1466 val* var3 /* : Array[FlowContext] */;
1467 val* var5 /* : Array[FlowContext] */;
1468 short int var6 /* : Bool */;
1469 short int var7 /* : Bool */;
1470 val* var8 /* : Array[FlowContext] */;
1471 val* var10 /* : Array[FlowContext] */;
1472 var_flow = p0;
1473 {
1474 var1 = nit___nit__FlowContext___is_unreachable(var_flow);
1475 }
1476 var2 = !var1;
1477 var_ = var2;
1478 if (var2){
1479 {
1480 { /* Inline flow#FlowContext#previous (self) on <self:FlowContext> */
1481 var5 = self->attrs[COLOR_nit__flow__FlowContext___previous].val; /* _previous on <self:FlowContext> */
1482 if (unlikely(var5 == NULL)) {
1483 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
1484 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 189);
1485 fatal_exit(1);
1486 }
1487 var3 = var5;
1488 RET_LABEL4:(void)0;
1489 }
1490 }
1491 {
1492 var6 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__has(var3, var_flow);
1493 }
1494 var7 = !var6;
1495 var = var7;
1496 } else {
1497 var = var_;
1498 }
1499 if (var){
1500 {
1501 { /* Inline flow#FlowContext#loops (self) on <self:FlowContext> */
1502 var10 = self->attrs[COLOR_nit__flow__FlowContext___loops].val; /* _loops on <self:FlowContext> */
1503 if (unlikely(var10 == NULL)) {
1504 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _loops");
1505 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 192);
1506 fatal_exit(1);
1507 }
1508 var8 = var10;
1509 RET_LABEL9:(void)0;
1510 }
1511 }
1512 {
1513 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var8, var_flow); /* Direct call array#Array#add on <var8:Array[FlowContext]>*/
1514 }
1515 } else {
1516 }
1517 RET_LABEL:;
1518 }
1519 /* method flow#ANode#accept_flow_visitor for (self: ANode, FlowVisitor) */
1520 void nit__flow___ANode___accept_flow_visitor(val* self, val* p0) {
1521 val* var_v /* var v: FlowVisitor */;
1522 var_v = p0;
1523 {
1524 ((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__parser_nodes__ANode__visit_all]))(self, var_v); /* visit_all on <self:ANode>*/
1525 }
1526 RET_LABEL:;
1527 }
1528 /* method flow#APropdef#do_flow for (self: APropdef, ToolContext) */
1529 void nit__flow___APropdef___do_flow(val* self, val* p0) {
1530 val* var_toolcontext /* var toolcontext: ToolContext */;
1531 val* var /* : FlowVisitor */;
1532 val* var_v /* var v: FlowVisitor */;
1533 var_toolcontext = p0;
1534 var = NEW_nit__flow__FlowVisitor(&type_nit__flow__FlowVisitor);
1535 {
1536 ((void(*)(val* self, val* p0))(var->class->vft[COLOR_nit__flow__FlowVisitor__toolcontext_61d]))(var, var_toolcontext); /* toolcontext= on <var:FlowVisitor>*/
1537 }
1538 {
1539 ((void(*)(val* self))(var->class->vft[COLOR_standard__kernel__Object__init]))(var); /* init on <var:FlowVisitor>*/
1540 }
1541 var_v = var;
1542 {
1543 nit___nit__Visitor___enter_visit(var_v, self); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:FlowVisitor>*/
1544 }
1545 RET_LABEL:;
1546 }
1547 /* method flow#APropdef#before_flow_context= for (self: APropdef, nullable FlowContext) */
1548 void nit__flow___APropdef___before_flow_context_61d(val* self, val* p0) {
1549 self->attrs[COLOR_nit__flow__APropdef___before_flow_context].val = p0; /* _before_flow_context on <self:APropdef> */
1550 RET_LABEL:;
1551 }
1552 /* method flow#APropdef#after_flow_context= for (self: APropdef, nullable FlowContext) */
1553 void nit__flow___APropdef___after_flow_context_61d(val* self, val* p0) {
1554 self->attrs[COLOR_nit__flow__APropdef___after_flow_context].val = p0; /* _after_flow_context on <self:APropdef> */
1555 RET_LABEL:;
1556 }
1557 /* method flow#APropdef#accept_flow_visitor for (self: APropdef, FlowVisitor) */
1558 void nit__flow___APropdef___ANode__accept_flow_visitor(val* self, val* p0) {
1559 val* var_v /* var v: FlowVisitor */;
1560 val* var /* : FlowContext */;
1561 val* var2 /* : FlowContext */;
1562 val* var4 /* : FlowContext */;
1563 val* var6 /* : FlowContext */;
1564 var_v = p0;
1565 {
1566 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
1567 var2 = var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <var_v:FlowVisitor> */
1568 if (unlikely(var2 == NULL)) {
1569 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
1570 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
1571 fatal_exit(1);
1572 }
1573 var = var2;
1574 RET_LABEL1:(void)0;
1575 }
1576 }
1577 {
1578 { /* Inline flow#APropdef#before_flow_context= (self,var) on <self:APropdef> */
1579 self->attrs[COLOR_nit__flow__APropdef___before_flow_context].val = var; /* _before_flow_context on <self:APropdef> */
1580 RET_LABEL3:(void)0;
1581 }
1582 }
1583 {
1584 ((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___APropdef___ANode__accept_flow_visitor]))(self, p0); /* accept_flow_visitor on <self:APropdef>*/
1585 }
1586 {
1587 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
1588 var6 = var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <var_v:FlowVisitor> */
1589 if (unlikely(var6 == NULL)) {
1590 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
1591 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
1592 fatal_exit(1);
1593 }
1594 var4 = var6;
1595 RET_LABEL5:(void)0;
1596 }
1597 }
1598 {
1599 { /* Inline flow#APropdef#after_flow_context= (self,var4) on <self:APropdef> */
1600 self->attrs[COLOR_nit__flow__APropdef___after_flow_context].val = var4; /* _after_flow_context on <self:APropdef> */
1601 RET_LABEL7:(void)0;
1602 }
1603 }
1604 RET_LABEL:;
1605 }
1606 /* method flow#AExpr#after_flow_context for (self: AExpr): nullable FlowContext */
1607 val* nit__flow___AExpr___after_flow_context(val* self) {
1608 val* var /* : nullable FlowContext */;
1609 val* var1 /* : nullable FlowContext */;
1610 var1 = self->attrs[COLOR_nit__flow__AExpr___after_flow_context].val; /* _after_flow_context on <self:AExpr> */
1611 var = var1;
1612 RET_LABEL:;
1613 return var;
1614 }
1615 /* method flow#AExpr#after_flow_context= for (self: AExpr, nullable FlowContext) */
1616 void nit__flow___AExpr___after_flow_context_61d(val* self, val* p0) {
1617 self->attrs[COLOR_nit__flow__AExpr___after_flow_context].val = p0; /* _after_flow_context on <self:AExpr> */
1618 RET_LABEL:;
1619 }
1620 /* method flow#AVarAssignExpr#accept_flow_visitor for (self: AVarAssignExpr, FlowVisitor) */
1621 void nit__flow___AVarAssignExpr___ANode__accept_flow_visitor(val* self, val* p0) {
1622 val* var_v /* var v: FlowVisitor */;
1623 val* var /* : FlowContext */;
1624 var_v = p0;
1625 {
1626 ((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___AVarAssignExpr___ANode__accept_flow_visitor]))(self, p0); /* accept_flow_visitor on <self:AVarAssignExpr>*/
1627 }
1628 {
1629 var = nit__flow___nit__flow__FlowVisitor___make_sub_flow(var_v);
1630 }
1631 {
1632 { /* Inline flow#AExpr#after_flow_context= (self,var) on <self:AVarAssignExpr> */
1633 self->attrs[COLOR_nit__flow__AExpr___after_flow_context].val = var; /* _after_flow_context on <self:AVarAssignExpr> */
1634 RET_LABEL1:(void)0;
1635 }
1636 }
1637 RET_LABEL:;
1638 }
1639 /* method flow#AReassignFormExpr#accept_flow_visitor for (self: AReassignFormExpr, FlowVisitor) */
1640 void nit__flow___AReassignFormExpr___ANode__accept_flow_visitor(val* self, val* p0) {
1641 val* var_v /* var v: FlowVisitor */;
1642 val* var /* : FlowContext */;
1643 var_v = p0;
1644 {
1645 ((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___AReassignFormExpr___ANode__accept_flow_visitor]))(self, p0); /* accept_flow_visitor on <self:AReassignFormExpr>*/
1646 }
1647 {
1648 var = nit__flow___nit__flow__FlowVisitor___make_sub_flow(var_v);
1649 }
1650 {
1651 { /* Inline flow#AExpr#after_flow_context= (self,var) on <self:AReassignFormExpr> */
1652 self->attrs[COLOR_nit__flow__AExpr___after_flow_context].val = var; /* _after_flow_context on <self:AReassignFormExpr> */
1653 RET_LABEL1:(void)0;
1654 }
1655 }
1656 RET_LABEL:;
1657 }
1658 /* method flow#ABlockExpr#accept_flow_visitor for (self: ABlockExpr, FlowVisitor) */
1659 void nit__flow___ABlockExpr___ANode__accept_flow_visitor(val* self, val* p0) {
1660 val* var_v /* var v: FlowVisitor */;
1661 val* var /* : ANodes[AExpr] */;
1662 val* var2 /* : ANodes[AExpr] */;
1663 val* var_ /* var : ANodes[AExpr] */;
1664 val* var3 /* : Iterator[ANode] */;
1665 val* var_4 /* var : Iterator[AExpr] */;
1666 short int var5 /* : Bool */;
1667 val* var6 /* : nullable Object */;
1668 val* var_e /* var e: AExpr */;
1669 val* var7 /* : FlowContext */;
1670 val* var9 /* : FlowContext */;
1671 short int var10 /* : Bool */;
1672 short int var11 /* : Bool */;
1673 val* var12 /* : FlowContext */;
1674 val* var14 /* : FlowContext */;
1675 short int var15 /* : Bool */;
1676 short int var17 /* : Bool */;
1677 short int var18 /* : Bool */;
1678 val* var19 /* : FlowContext */;
1679 val* var21 /* : FlowContext */;
1680 val* var23 /* : ToolContext */;
1681 val* var25 /* : ToolContext */;
1682 val* var26 /* : Location */;
1683 static val* varonce;
1684 val* var27 /* : String */;
1685 char* var28 /* : NativeString */;
1686 val* var29 /* : FlatString */;
1687 val* var30 /* : Message */;
1688 var_v = p0;
1689 {
1690 { /* Inline parser_nodes#ABlockExpr#n_expr (self) on <self:ABlockExpr> */
1691 var2 = self->attrs[COLOR_nit__parser_nodes__ABlockExpr___n_expr].val; /* _n_expr on <self:ABlockExpr> */
1692 if (unlikely(var2 == NULL)) {
1693 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
1694 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1758);
1695 fatal_exit(1);
1696 }
1697 var = var2;
1698 RET_LABEL1:(void)0;
1699 }
1700 }
1701 var_ = var;
1702 {
1703 var3 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_);
1704 }
1705 var_4 = var3;
1706 for(;;) {
1707 {
1708 var5 = ((short int(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_4); /* is_ok on <var_4:Iterator[AExpr]>*/
1709 }
1710 if (var5){
1711 {
1712 var6 = ((val*(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_4); /* item on <var_4:Iterator[AExpr]>*/
1713 }
1714 var_e = var6;
1715 {
1716 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
1717 var9 = var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <var_v:FlowVisitor> */
1718 if (unlikely(var9 == NULL)) {
1719 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
1720 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
1721 fatal_exit(1);
1722 }
1723 var7 = var9;
1724 RET_LABEL8:(void)0;
1725 }
1726 }
1727 {
1728 var10 = nit___nit__FlowContext___is_unreachable(var7);
1729 }
1730 var11 = !var10;
1731 if (var11){
1732 {
1733 nit___nit__Visitor___enter_visit(var_v, var_e); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:FlowVisitor>*/
1734 }
1735 } else {
1736 {
1737 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
1738 var14 = var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <var_v:FlowVisitor> */
1739 if (unlikely(var14 == NULL)) {
1740 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
1741 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
1742 fatal_exit(1);
1743 }
1744 var12 = var14;
1745 RET_LABEL13:(void)0;
1746 }
1747 }
1748 {
1749 { /* Inline flow#FlowContext#is_already_unreachable (var12) on <var12:FlowContext> */
1750 var17 = var12->attrs[COLOR_nit__flow__FlowContext___is_already_unreachable].s; /* _is_already_unreachable on <var12:FlowContext> */
1751 var15 = var17;
1752 RET_LABEL16:(void)0;
1753 }
1754 }
1755 var18 = !var15;
1756 if (var18){
1757 {
1758 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
1759 var21 = var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <var_v:FlowVisitor> */
1760 if (unlikely(var21 == NULL)) {
1761 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
1762 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
1763 fatal_exit(1);
1764 }
1765 var19 = var21;
1766 RET_LABEL20:(void)0;
1767 }
1768 }
1769 {
1770 { /* Inline flow#FlowContext#is_already_unreachable= (var19,1) on <var19:FlowContext> */
1771 var19->attrs[COLOR_nit__flow__FlowContext___is_already_unreachable].s = 1; /* _is_already_unreachable on <var19:FlowContext> */
1772 RET_LABEL22:(void)0;
1773 }
1774 }
1775 {
1776 { /* Inline flow#FlowVisitor#toolcontext (var_v) on <var_v:FlowVisitor> */
1777 var25 = var_v->attrs[COLOR_nit__flow__FlowVisitor___toolcontext].val; /* _toolcontext on <var_v:FlowVisitor> */
1778 if (unlikely(var25 == NULL)) {
1779 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1780 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 39);
1781 fatal_exit(1);
1782 }
1783 var23 = var25;
1784 RET_LABEL24:(void)0;
1785 }
1786 }
1787 {
1788 var26 = nit___nit__ANode___hot_location(var_e);
1789 }
1790 if (likely(varonce!=NULL)) {
1791 var27 = varonce;
1792 } else {
1793 var28 = "Error: unreachable statement.";
1794 var29 = standard___standard__NativeString___to_s_with_length(var28, 29l);
1795 var27 = var29;
1796 varonce = var27;
1797 }
1798 {
1799 var30 = nit___nit__ToolContext___error(var23, var26, var27);
1800 }
1801 } else {
1802 }
1803 }
1804 {
1805 ((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_4); /* next on <var_4:Iterator[AExpr]>*/
1806 }
1807 } else {
1808 goto BREAK_label;
1809 }
1810 }
1811 BREAK_label: (void)0;
1812 {
1813 ((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_4); /* finish on <var_4:Iterator[AExpr]>*/
1814 }
1815 RET_LABEL:;
1816 }
1817 /* method flow#AReturnExpr#accept_flow_visitor for (self: AReturnExpr, FlowVisitor) */
1818 void nit__flow___AReturnExpr___ANode__accept_flow_visitor(val* self, val* p0) {
1819 val* var_v /* var v: FlowVisitor */;
1820 val* var /* : FlowContext */;
1821 var_v = p0;
1822 {
1823 ((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___AReturnExpr___ANode__accept_flow_visitor]))(self, p0); /* accept_flow_visitor on <self:AReturnExpr>*/
1824 }
1825 {
1826 var = nit__flow___nit__flow__FlowVisitor___make_unreachable_flow(var_v);
1827 }
1828 RET_LABEL:;
1829 }
1830 /* method flow#AEscapeExpr#before_flow_context for (self: AEscapeExpr): nullable FlowContext */
1831 val* nit__flow___AEscapeExpr___before_flow_context(val* self) {
1832 val* var /* : nullable FlowContext */;
1833 val* var1 /* : nullable FlowContext */;
1834 val* var3 /* : nullable FlowContext */;
1835 val* var_after /* var after: nullable FlowContext */;
1836 short int var4 /* : Bool */;
1837 short int var5 /* : Bool */;
1838 val* var_other /* var other: nullable Object */;
1839 short int var7 /* : Bool */;
1840 short int var9 /* : Bool */;
1841 val* var10 /* : Array[FlowContext] */;
1842 val* var12 /* : Array[FlowContext] */;
1843 val* var13 /* : nullable Object */;
1844 {
1845 { /* Inline flow#AExpr#after_flow_context (self) on <self:AEscapeExpr> */
1846 var3 = self->attrs[COLOR_nit__flow__AExpr___after_flow_context].val; /* _after_flow_context on <self:AEscapeExpr> */
1847 var1 = var3;
1848 RET_LABEL2:(void)0;
1849 }
1850 }
1851 var_after = var1;
1852 if (var_after == NULL) {
1853 var4 = 1; /* is null */
1854 } else {
1855 var4 = 0; /* arg is null but recv is not */
1856 }
1857 if (0) {
1858 { /* Inline kernel#Object#== (var_after,((val*)NULL)) on <var_after:nullable FlowContext> */
1859 var_other = ((val*)NULL);
1860 {
1861 { /* Inline kernel#Object#is_same_instance (var_after,var_other) on <var_after:nullable FlowContext(FlowContext)> */
1862 var9 = var_after == var_other;
1863 var7 = var9;
1864 goto RET_LABEL8;
1865 RET_LABEL8:(void)0;
1866 }
1867 }
1868 var5 = var7;
1869 goto RET_LABEL6;
1870 RET_LABEL6:(void)0;
1871 }
1872 var4 = var5;
1873 }
1874 if (var4){
1875 var = ((val*)NULL);
1876 goto RET_LABEL;
1877 } else {
1878 }
1879 {
1880 { /* Inline flow#FlowContext#previous (var_after) on <var_after:nullable FlowContext(FlowContext)> */
1881 var12 = var_after->attrs[COLOR_nit__flow__FlowContext___previous].val; /* _previous on <var_after:nullable FlowContext(FlowContext)> */
1882 if (unlikely(var12 == NULL)) {
1883 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
1884 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 189);
1885 fatal_exit(1);
1886 }
1887 var10 = var12;
1888 RET_LABEL11:(void)0;
1889 }
1890 }
1891 {
1892 var13 = standard___standard__SequenceRead___Collection__first(var10);
1893 }
1894 var = var13;
1895 goto RET_LABEL;
1896 RET_LABEL:;
1897 return var;
1898 }
1899 /* method flow#AEscapeExpr#accept_flow_visitor for (self: AEscapeExpr, FlowVisitor) */
1900 void nit__flow___AEscapeExpr___ANode__accept_flow_visitor(val* self, val* p0) {
1901 val* var_v /* var v: FlowVisitor */;
1902 val* var /* : FlowContext */;
1903 var_v = p0;
1904 {
1905 ((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___AEscapeExpr___ANode__accept_flow_visitor]))(self, p0); /* accept_flow_visitor on <self:AEscapeExpr>*/
1906 }
1907 {
1908 var = nit__flow___nit__flow__FlowVisitor___make_unreachable_flow(var_v);
1909 }
1910 RET_LABEL:;
1911 }
1912 /* method flow#AAbortExpr#accept_flow_visitor for (self: AAbortExpr, FlowVisitor) */
1913 void nit__flow___AAbortExpr___ANode__accept_flow_visitor(val* self, val* p0) {
1914 val* var_v /* var v: FlowVisitor */;
1915 val* var /* : FlowContext */;
1916 var_v = p0;
1917 {
1918 ((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___AAbortExpr___ANode__accept_flow_visitor]))(self, p0); /* accept_flow_visitor on <self:AAbortExpr>*/
1919 }
1920 {
1921 var = nit__flow___nit__flow__FlowVisitor___make_unreachable_flow(var_v);
1922 }
1923 RET_LABEL:;
1924 }
1925 /* method flow#ADoExpr#accept_flow_visitor for (self: ADoExpr, FlowVisitor) */
1926 void nit__flow___ADoExpr___ANode__accept_flow_visitor(val* self, val* p0) {
1927 val* var_v /* var v: FlowVisitor */;
1928 val* var /* : nullable EscapeMark */;
1929 val* var2 /* : nullable EscapeMark */;
1930 var_v = p0;
1931 {
1932 ((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___ADoExpr___ANode__accept_flow_visitor]))(self, p0); /* accept_flow_visitor on <self:ADoExpr>*/
1933 }
1934 {
1935 { /* Inline scope#ADoExpr#break_mark (self) on <self:ADoExpr> */
1936 var2 = self->attrs[COLOR_nit__scope__ADoExpr___break_mark].val; /* _break_mark on <self:ADoExpr> */
1937 var = var2;
1938 RET_LABEL1:(void)0;
1939 }
1940 }
1941 {
1942 nit__flow___nit__flow__FlowVisitor___merge_breaks(var_v, var); /* Direct call flow#FlowVisitor#merge_breaks on <var_v:FlowVisitor>*/
1943 }
1944 RET_LABEL:;
1945 }
1946 /* method flow#AIfExpr#accept_flow_visitor for (self: AIfExpr, FlowVisitor) */
1947 void nit__flow___AIfExpr___ANode__accept_flow_visitor(val* self, val* p0) {
1948 val* var_v /* var v: FlowVisitor */;
1949 val* var /* : AExpr */;
1950 val* var2 /* : AExpr */;
1951 val* var3 /* : FlowContext */;
1952 val* var_after_expr /* var after_expr: FlowContext */;
1953 val* var4 /* : FlowContext */;
1954 val* var6 /* : FlowContext */;
1955 val* var8 /* : nullable AExpr */;
1956 val* var10 /* : nullable AExpr */;
1957 val* var11 /* : FlowContext */;
1958 val* var13 /* : FlowContext */;
1959 val* var_after_then /* var after_then: FlowContext */;
1960 val* var14 /* : FlowContext */;
1961 val* var16 /* : FlowContext */;
1962 val* var18 /* : nullable AExpr */;
1963 val* var20 /* : nullable AExpr */;
1964 val* var21 /* : FlowContext */;
1965 val* var23 /* : FlowContext */;
1966 val* var_after_else /* var after_else: FlowContext */;
1967 val* var24 /* : FlowContext */;
1968 var_v = p0;
1969 {
1970 { /* Inline parser_nodes#AIfExpr#n_expr (self) on <self:AIfExpr> */
1971 var2 = self->attrs[COLOR_nit__parser_nodes__AIfExpr___n_expr].val; /* _n_expr on <self:AIfExpr> */
1972 if (unlikely(var2 == NULL)) {
1973 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
1974 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1857);
1975 fatal_exit(1);
1976 }
1977 var = var2;
1978 RET_LABEL1:(void)0;
1979 }
1980 }
1981 {
1982 var3 = nit__flow___nit__flow__FlowVisitor___visit_expr(var_v, var);
1983 }
1984 var_after_expr = var3;
1985 {
1986 { /* Inline flow#FlowContext#when_true (var_after_expr) on <var_after_expr:FlowContext> */
1987 var6 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <var_after_expr:FlowContext> */
1988 if (unlikely(var6 == NULL)) {
1989 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
1990 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225);
1991 fatal_exit(1);
1992 }
1993 var4 = var6;
1994 RET_LABEL5:(void)0;
1995 }
1996 }
1997 {
1998 { /* Inline flow#FlowVisitor#current_flow_context= (var_v,var4) on <var_v:FlowVisitor> */
1999 var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val = var4; /* _current_flow_context on <var_v:FlowVisitor> */
2000 RET_LABEL7:(void)0;
2001 }
2002 }
2003 {
2004 { /* Inline parser_nodes#AIfExpr#n_then (self) on <self:AIfExpr> */
2005 var10 = self->attrs[COLOR_nit__parser_nodes__AIfExpr___n_then].val; /* _n_then on <self:AIfExpr> */
2006 var8 = var10;
2007 RET_LABEL9:(void)0;
2008 }
2009 }
2010 {
2011 nit___nit__Visitor___enter_visit(var_v, var8); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:FlowVisitor>*/
2012 }
2013 {
2014 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
2015 var13 = var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <var_v:FlowVisitor> */
2016 if (unlikely(var13 == NULL)) {
2017 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
2018 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
2019 fatal_exit(1);
2020 }
2021 var11 = var13;
2022 RET_LABEL12:(void)0;
2023 }
2024 }
2025 var_after_then = var11;
2026 {
2027 { /* Inline flow#FlowContext#when_false (var_after_expr) on <var_after_expr:FlowContext> */
2028 var16 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <var_after_expr:FlowContext> */
2029 if (unlikely(var16 == NULL)) {
2030 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
2031 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 228);
2032 fatal_exit(1);
2033 }
2034 var14 = var16;
2035 RET_LABEL15:(void)0;
2036 }
2037 }
2038 {
2039 { /* Inline flow#FlowVisitor#current_flow_context= (var_v,var14) on <var_v:FlowVisitor> */
2040 var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val = var14; /* _current_flow_context on <var_v:FlowVisitor> */
2041 RET_LABEL17:(void)0;
2042 }
2043 }
2044 {
2045 { /* Inline parser_nodes#AIfExpr#n_else (self) on <self:AIfExpr> */
2046 var20 = self->attrs[COLOR_nit__parser_nodes__AIfExpr___n_else].val; /* _n_else on <self:AIfExpr> */
2047 var18 = var20;
2048 RET_LABEL19:(void)0;
2049 }
2050 }
2051 {
2052 nit___nit__Visitor___enter_visit(var_v, var18); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:FlowVisitor>*/
2053 }
2054 {
2055 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
2056 var23 = var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <var_v:FlowVisitor> */
2057 if (unlikely(var23 == NULL)) {
2058 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
2059 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
2060 fatal_exit(1);
2061 }
2062 var21 = var23;
2063 RET_LABEL22:(void)0;
2064 }
2065 }
2066 var_after_else = var21;
2067 {
2068 var24 = nit__flow___nit__flow__FlowVisitor___make_merge_flow(var_v, var_after_then, var_after_else);
2069 }
2070 RET_LABEL:;
2071 }
2072 /* method flow#AIfexprExpr#accept_flow_visitor for (self: AIfexprExpr, FlowVisitor) */
2073 void nit__flow___AIfexprExpr___ANode__accept_flow_visitor(val* self, val* p0) {
2074 val* var_v /* var v: FlowVisitor */;
2075 val* var /* : AExpr */;
2076 val* var2 /* : AExpr */;
2077 val* var3 /* : FlowContext */;
2078 val* var_after_expr /* var after_expr: FlowContext */;
2079 val* var4 /* : FlowContext */;
2080 val* var6 /* : FlowContext */;
2081 val* var8 /* : AExpr */;
2082 val* var10 /* : AExpr */;
2083 val* var11 /* : FlowContext */;
2084 val* var13 /* : FlowContext */;
2085 val* var_after_then /* var after_then: FlowContext */;
2086 val* var14 /* : FlowContext */;
2087 val* var16 /* : FlowContext */;
2088 val* var18 /* : AExpr */;
2089 val* var20 /* : AExpr */;
2090 val* var21 /* : FlowContext */;
2091 val* var23 /* : FlowContext */;
2092 val* var_after_else /* var after_else: FlowContext */;
2093 val* var24 /* : FlowContext */;
2094 var_v = p0;
2095 {
2096 { /* Inline parser_nodes#AIfexprExpr#n_expr (self) on <self:AIfexprExpr> */
2097 var2 = self->attrs[COLOR_nit__parser_nodes__AIfexprExpr___n_expr].val; /* _n_expr on <self:AIfexprExpr> */
2098 if (unlikely(var2 == NULL)) {
2099 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
2100 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1880);
2101 fatal_exit(1);
2102 }
2103 var = var2;
2104 RET_LABEL1:(void)0;
2105 }
2106 }
2107 {
2108 var3 = nit__flow___nit__flow__FlowVisitor___visit_expr(var_v, var);
2109 }
2110 var_after_expr = var3;
2111 {
2112 { /* Inline flow#FlowContext#when_true (var_after_expr) on <var_after_expr:FlowContext> */
2113 var6 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <var_after_expr:FlowContext> */
2114 if (unlikely(var6 == NULL)) {
2115 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
2116 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225);
2117 fatal_exit(1);
2118 }
2119 var4 = var6;
2120 RET_LABEL5:(void)0;
2121 }
2122 }
2123 {
2124 { /* Inline flow#FlowVisitor#current_flow_context= (var_v,var4) on <var_v:FlowVisitor> */
2125 var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val = var4; /* _current_flow_context on <var_v:FlowVisitor> */
2126 RET_LABEL7:(void)0;
2127 }
2128 }
2129 {
2130 { /* Inline parser_nodes#AIfexprExpr#n_then (self) on <self:AIfexprExpr> */
2131 var10 = self->attrs[COLOR_nit__parser_nodes__AIfexprExpr___n_then].val; /* _n_then on <self:AIfexprExpr> */
2132 if (unlikely(var10 == NULL)) {
2133 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_then");
2134 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1886);
2135 fatal_exit(1);
2136 }
2137 var8 = var10;
2138 RET_LABEL9:(void)0;
2139 }
2140 }
2141 {
2142 nit___nit__Visitor___enter_visit(var_v, var8); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:FlowVisitor>*/
2143 }
2144 {
2145 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
2146 var13 = var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <var_v:FlowVisitor> */
2147 if (unlikely(var13 == NULL)) {
2148 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
2149 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
2150 fatal_exit(1);
2151 }
2152 var11 = var13;
2153 RET_LABEL12:(void)0;
2154 }
2155 }
2156 var_after_then = var11;
2157 {
2158 { /* Inline flow#FlowContext#when_false (var_after_expr) on <var_after_expr:FlowContext> */
2159 var16 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <var_after_expr:FlowContext> */
2160 if (unlikely(var16 == NULL)) {
2161 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
2162 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 228);
2163 fatal_exit(1);
2164 }
2165 var14 = var16;
2166 RET_LABEL15:(void)0;
2167 }
2168 }
2169 {
2170 { /* Inline flow#FlowVisitor#current_flow_context= (var_v,var14) on <var_v:FlowVisitor> */
2171 var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val = var14; /* _current_flow_context on <var_v:FlowVisitor> */
2172 RET_LABEL17:(void)0;
2173 }
2174 }
2175 {
2176 { /* Inline parser_nodes#AIfexprExpr#n_else (self) on <self:AIfexprExpr> */
2177 var20 = self->attrs[COLOR_nit__parser_nodes__AIfexprExpr___n_else].val; /* _n_else on <self:AIfexprExpr> */
2178 if (unlikely(var20 == NULL)) {
2179 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_else");
2180 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1892);
2181 fatal_exit(1);
2182 }
2183 var18 = var20;
2184 RET_LABEL19:(void)0;
2185 }
2186 }
2187 {
2188 nit___nit__Visitor___enter_visit(var_v, var18); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:FlowVisitor>*/
2189 }
2190 {
2191 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
2192 var23 = var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <var_v:FlowVisitor> */
2193 if (unlikely(var23 == NULL)) {
2194 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
2195 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
2196 fatal_exit(1);
2197 }
2198 var21 = var23;
2199 RET_LABEL22:(void)0;
2200 }
2201 }
2202 var_after_else = var21;
2203 {
2204 var24 = nit__flow___nit__flow__FlowVisitor___make_merge_flow(var_v, var_after_then, var_after_else);
2205 }
2206 RET_LABEL:;
2207 }
2208 /* method flow#AWhileExpr#accept_flow_visitor for (self: AWhileExpr, FlowVisitor) */
2209 void nit__flow___AWhileExpr___ANode__accept_flow_visitor(val* self, val* p0) {
2210 val* var_v /* var v: FlowVisitor */;
2211 val* var /* : FlowContext */;
2212 val* var_before_loop /* var before_loop: FlowContext */;
2213 val* var1 /* : AExpr */;
2214 val* var3 /* : AExpr */;
2215 val* var4 /* : FlowContext */;
2216 val* var_after_expr /* var after_expr: FlowContext */;
2217 val* var5 /* : FlowContext */;
2218 val* var7 /* : FlowContext */;
2219 val* var9 /* : nullable AExpr */;
2220 val* var11 /* : nullable AExpr */;
2221 val* var12 /* : FlowContext */;
2222 val* var14 /* : FlowContext */;
2223 val* var_after_block /* var after_block: FlowContext */;
2224 val* var15 /* : nullable EscapeMark */;
2225 val* var17 /* : nullable EscapeMark */;
2226 val* var18 /* : FlowContext */;
2227 val* var20 /* : FlowContext */;
2228 val* var22 /* : nullable EscapeMark */;
2229 val* var24 /* : nullable EscapeMark */;
2230 var_v = p0;
2231 {
2232 var = nit__flow___nit__flow__FlowVisitor___make_sub_flow(var_v);
2233 }
2234 var_before_loop = var;
2235 {
2236 { /* Inline parser_nodes#AWhileExpr#n_expr (self) on <self:AWhileExpr> */
2237 var3 = self->attrs[COLOR_nit__parser_nodes__AWhileExpr___n_expr].val; /* _n_expr on <self:AWhileExpr> */
2238 if (unlikely(var3 == NULL)) {
2239 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
2240 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1904);
2241 fatal_exit(1);
2242 }
2243 var1 = var3;
2244 RET_LABEL2:(void)0;
2245 }
2246 }
2247 {
2248 var4 = nit__flow___nit__flow__FlowVisitor___visit_expr(var_v, var1);
2249 }
2250 var_after_expr = var4;
2251 {
2252 { /* Inline flow#FlowContext#when_true (var_after_expr) on <var_after_expr:FlowContext> */
2253 var7 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <var_after_expr:FlowContext> */
2254 if (unlikely(var7 == NULL)) {
2255 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
2256 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225);
2257 fatal_exit(1);
2258 }
2259 var5 = var7;
2260 RET_LABEL6:(void)0;
2261 }
2262 }
2263 {
2264 { /* Inline flow#FlowVisitor#current_flow_context= (var_v,var5) on <var_v:FlowVisitor> */
2265 var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val = var5; /* _current_flow_context on <var_v:FlowVisitor> */
2266 RET_LABEL8:(void)0;
2267 }
2268 }
2269 {
2270 { /* Inline parser_nodes#AWhileExpr#n_block (self) on <self:AWhileExpr> */
2271 var11 = self->attrs[COLOR_nit__parser_nodes__AWhileExpr___n_block].val; /* _n_block on <self:AWhileExpr> */
2272 var9 = var11;
2273 RET_LABEL10:(void)0;
2274 }
2275 }
2276 {
2277 nit___nit__Visitor___enter_visit(var_v, var9); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:FlowVisitor>*/
2278 }
2279 {
2280 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
2281 var14 = var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <var_v:FlowVisitor> */
2282 if (unlikely(var14 == NULL)) {
2283 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
2284 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
2285 fatal_exit(1);
2286 }
2287 var12 = var14;
2288 RET_LABEL13:(void)0;
2289 }
2290 }
2291 var_after_block = var12;
2292 {
2293 nit___nit__FlowContext___add_loop(var_before_loop, var_after_block); /* Direct call flow#FlowContext#add_loop on <var_before_loop:FlowContext>*/
2294 }
2295 {
2296 { /* Inline scope#AWhileExpr#continue_mark (self) on <self:AWhileExpr> */
2297 var17 = self->attrs[COLOR_nit__scope__AWhileExpr___continue_mark].val; /* _continue_mark on <self:AWhileExpr> */
2298 var15 = var17;
2299 RET_LABEL16:(void)0;
2300 }
2301 }
2302 {
2303 nit__flow___nit__flow__FlowVisitor___merge_continues_to(var_v, var_before_loop, var15); /* Direct call flow#FlowVisitor#merge_continues_to on <var_v:FlowVisitor>*/
2304 }
2305 {
2306 { /* Inline flow#FlowContext#when_false (var_after_expr) on <var_after_expr:FlowContext> */
2307 var20 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <var_after_expr:FlowContext> */
2308 if (unlikely(var20 == NULL)) {
2309 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
2310 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 228);
2311 fatal_exit(1);
2312 }
2313 var18 = var20;
2314 RET_LABEL19:(void)0;
2315 }
2316 }
2317 {
2318 { /* Inline flow#FlowVisitor#current_flow_context= (var_v,var18) on <var_v:FlowVisitor> */
2319 var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val = var18; /* _current_flow_context on <var_v:FlowVisitor> */
2320 RET_LABEL21:(void)0;
2321 }
2322 }
2323 {
2324 { /* Inline scope#AWhileExpr#break_mark (self) on <self:AWhileExpr> */
2325 var24 = self->attrs[COLOR_nit__scope__AWhileExpr___break_mark].val; /* _break_mark on <self:AWhileExpr> */
2326 var22 = var24;
2327 RET_LABEL23:(void)0;
2328 }
2329 }
2330 {
2331 nit__flow___nit__flow__FlowVisitor___merge_breaks(var_v, var22); /* Direct call flow#FlowVisitor#merge_breaks on <var_v:FlowVisitor>*/
2332 }
2333 RET_LABEL:;
2334 }
2335 /* method flow#ALoopExpr#accept_flow_visitor for (self: ALoopExpr, FlowVisitor) */
2336 void nit__flow___ALoopExpr___ANode__accept_flow_visitor(val* self, val* p0) {
2337 val* var_v /* var v: FlowVisitor */;
2338 val* var /* : FlowContext */;
2339 val* var_before_loop /* var before_loop: FlowContext */;
2340 val* var1 /* : nullable AExpr */;
2341 val* var3 /* : nullable AExpr */;
2342 val* var4 /* : FlowContext */;
2343 val* var6 /* : FlowContext */;
2344 val* var_after_block /* var after_block: FlowContext */;
2345 val* var7 /* : nullable EscapeMark */;
2346 val* var9 /* : nullable EscapeMark */;
2347 val* var10 /* : FlowContext */;
2348 val* var11 /* : nullable EscapeMark */;
2349 val* var13 /* : nullable EscapeMark */;
2350 var_v = p0;
2351 {
2352 var = nit__flow___nit__flow__FlowVisitor___make_sub_flow(var_v);
2353 }
2354 var_before_loop = var;
2355 {
2356 { /* Inline parser_nodes#ALoopExpr#n_block (self) on <self:ALoopExpr> */
2357 var3 = self->attrs[COLOR_nit__parser_nodes__ALoopExpr___n_block].val; /* _n_block on <self:ALoopExpr> */
2358 var1 = var3;
2359 RET_LABEL2:(void)0;
2360 }
2361 }
2362 {
2363 nit___nit__Visitor___enter_visit(var_v, var1); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:FlowVisitor>*/
2364 }
2365 {
2366 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
2367 var6 = var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <var_v:FlowVisitor> */
2368 if (unlikely(var6 == NULL)) {
2369 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
2370 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
2371 fatal_exit(1);
2372 }
2373 var4 = var6;
2374 RET_LABEL5:(void)0;
2375 }
2376 }
2377 var_after_block = var4;
2378 {
2379 nit___nit__FlowContext___add_loop(var_before_loop, var_after_block); /* Direct call flow#FlowContext#add_loop on <var_before_loop:FlowContext>*/
2380 }
2381 {
2382 { /* Inline scope#ALoopExpr#continue_mark (self) on <self:ALoopExpr> */
2383 var9 = self->attrs[COLOR_nit__scope__ALoopExpr___continue_mark].val; /* _continue_mark on <self:ALoopExpr> */
2384 var7 = var9;
2385 RET_LABEL8:(void)0;
2386 }
2387 }
2388 {
2389 nit__flow___nit__flow__FlowVisitor___merge_continues_to(var_v, var_before_loop, var7); /* Direct call flow#FlowVisitor#merge_continues_to on <var_v:FlowVisitor>*/
2390 }
2391 {
2392 var10 = nit__flow___nit__flow__FlowVisitor___make_unreachable_flow(var_v);
2393 }
2394 {
2395 { /* Inline scope#ALoopExpr#break_mark (self) on <self:ALoopExpr> */
2396 var13 = self->attrs[COLOR_nit__scope__ALoopExpr___break_mark].val; /* _break_mark on <self:ALoopExpr> */
2397 var11 = var13;
2398 RET_LABEL12:(void)0;
2399 }
2400 }
2401 {
2402 nit__flow___nit__flow__FlowVisitor___merge_breaks(var_v, var11); /* Direct call flow#FlowVisitor#merge_breaks on <var_v:FlowVisitor>*/
2403 }
2404 RET_LABEL:;
2405 }
2406 /* method flow#AForExpr#accept_flow_visitor for (self: AForExpr, FlowVisitor) */
2407 void nit__flow___AForExpr___ANode__accept_flow_visitor(val* self, val* p0) {
2408 val* var_v /* var v: FlowVisitor */;
2409 val* var /* : AExpr */;
2410 val* var2 /* : AExpr */;
2411 val* var3 /* : FlowContext */;
2412 val* var_before_loop /* var before_loop: FlowContext */;
2413 val* var4 /* : nullable AExpr */;
2414 val* var6 /* : nullable AExpr */;
2415 val* var7 /* : FlowContext */;
2416 val* var9 /* : FlowContext */;
2417 val* var_after_block /* var after_block: FlowContext */;
2418 val* var10 /* : nullable EscapeMark */;
2419 val* var12 /* : nullable EscapeMark */;
2420 val* var13 /* : FlowContext */;
2421 val* var15 /* : FlowContext */;
2422 val* var16 /* : FlowContext */;
2423 val* var17 /* : nullable EscapeMark */;
2424 val* var19 /* : nullable EscapeMark */;
2425 var_v = p0;
2426 {
2427 { /* Inline parser_nodes#AForExpr#n_expr (self) on <self:AForExpr> */
2428 var2 = self->attrs[COLOR_nit__parser_nodes__AForExpr___n_expr].val; /* _n_expr on <self:AForExpr> */
2429 if (unlikely(var2 == NULL)) {
2430 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
2431 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1940);
2432 fatal_exit(1);
2433 }
2434 var = var2;
2435 RET_LABEL1:(void)0;
2436 }
2437 }
2438 {
2439 nit___nit__Visitor___enter_visit(var_v, var); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:FlowVisitor>*/
2440 }
2441 {
2442 var3 = nit__flow___nit__flow__FlowVisitor___make_sub_flow(var_v);
2443 }
2444 var_before_loop = var3;
2445 {
2446 { /* Inline parser_nodes#AForExpr#n_block (self) on <self:AForExpr> */
2447 var6 = self->attrs[COLOR_nit__parser_nodes__AForExpr___n_block].val; /* _n_block on <self:AForExpr> */
2448 var4 = var6;
2449 RET_LABEL5:(void)0;
2450 }
2451 }
2452 {
2453 nit___nit__Visitor___enter_visit(var_v, var4); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:FlowVisitor>*/
2454 }
2455 {
2456 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
2457 var9 = var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <var_v:FlowVisitor> */
2458 if (unlikely(var9 == NULL)) {
2459 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
2460 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
2461 fatal_exit(1);
2462 }
2463 var7 = var9;
2464 RET_LABEL8:(void)0;
2465 }
2466 }
2467 var_after_block = var7;
2468 {
2469 nit___nit__FlowContext___add_loop(var_before_loop, var_after_block); /* Direct call flow#FlowContext#add_loop on <var_before_loop:FlowContext>*/
2470 }
2471 {
2472 { /* Inline scope#AForExpr#continue_mark (self) on <self:AForExpr> */
2473 var12 = self->attrs[COLOR_nit__scope__AForExpr___continue_mark].val; /* _continue_mark on <self:AForExpr> */
2474 var10 = var12;
2475 RET_LABEL11:(void)0;
2476 }
2477 }
2478 {
2479 nit__flow___nit__flow__FlowVisitor___merge_continues_to(var_v, var_before_loop, var10); /* Direct call flow#FlowVisitor#merge_continues_to on <var_v:FlowVisitor>*/
2480 }
2481 {
2482 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
2483 var15 = var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <var_v:FlowVisitor> */
2484 if (unlikely(var15 == NULL)) {
2485 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
2486 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
2487 fatal_exit(1);
2488 }
2489 var13 = var15;
2490 RET_LABEL14:(void)0;
2491 }
2492 }
2493 {
2494 var16 = nit__flow___nit__flow__FlowVisitor___make_merge_flow(var_v, var13, var_before_loop);
2495 }
2496 {
2497 { /* Inline scope#AForExpr#break_mark (self) on <self:AForExpr> */
2498 var19 = self->attrs[COLOR_nit__scope__AForExpr___break_mark].val; /* _break_mark on <self:AForExpr> */
2499 var17 = var19;
2500 RET_LABEL18:(void)0;
2501 }
2502 }
2503 {
2504 nit__flow___nit__flow__FlowVisitor___merge_breaks(var_v, var17); /* Direct call flow#FlowVisitor#merge_breaks on <var_v:FlowVisitor>*/
2505 }
2506 RET_LABEL:;
2507 }
2508 /* method flow#AWithExpr#accept_flow_visitor for (self: AWithExpr, FlowVisitor) */
2509 void nit__flow___AWithExpr___ANode__accept_flow_visitor(val* self, val* p0) {
2510 val* var_v /* var v: FlowVisitor */;
2511 val* var /* : nullable EscapeMark */;
2512 val* var2 /* : nullable EscapeMark */;
2513 var_v = p0;
2514 {
2515 ((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___AWithExpr___ANode__accept_flow_visitor]))(self, p0); /* accept_flow_visitor on <self:AWithExpr>*/
2516 }
2517 {
2518 { /* Inline scope#AWithExpr#break_mark (self) on <self:AWithExpr> */
2519 var2 = self->attrs[COLOR_nit__scope__AWithExpr___break_mark].val; /* _break_mark on <self:AWithExpr> */
2520 var = var2;
2521 RET_LABEL1:(void)0;
2522 }
2523 }
2524 {
2525 nit__flow___nit__flow__FlowVisitor___merge_breaks(var_v, var); /* Direct call flow#FlowVisitor#merge_breaks on <var_v:FlowVisitor>*/
2526 }
2527 RET_LABEL:;
2528 }
2529 /* method flow#AAssertExpr#accept_flow_visitor for (self: AAssertExpr, FlowVisitor) */
2530 void nit__flow___AAssertExpr___ANode__accept_flow_visitor(val* self, val* p0) {
2531 val* var_v /* var v: FlowVisitor */;
2532 val* var /* : AExpr */;
2533 val* var2 /* : AExpr */;
2534 val* var3 /* : FlowContext */;
2535 val* var_after_expr /* var after_expr: FlowContext */;
2536 val* var4 /* : FlowContext */;
2537 val* var6 /* : FlowContext */;
2538 val* var8 /* : nullable AExpr */;
2539 val* var10 /* : nullable AExpr */;
2540 val* var11 /* : FlowContext */;
2541 val* var13 /* : FlowContext */;
2542 var_v = p0;
2543 {
2544 { /* Inline parser_nodes#AAssertExpr#n_expr (self) on <self:AAssertExpr> */
2545 var2 = self->attrs[COLOR_nit__parser_nodes__AAssertExpr___n_expr].val; /* _n_expr on <self:AAssertExpr> */
2546 if (unlikely(var2 == NULL)) {
2547 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
2548 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1978);
2549 fatal_exit(1);
2550 }
2551 var = var2;
2552 RET_LABEL1:(void)0;
2553 }
2554 }
2555 {
2556 var3 = nit__flow___nit__flow__FlowVisitor___visit_expr(var_v, var);
2557 }
2558 var_after_expr = var3;
2559 {
2560 { /* Inline flow#FlowContext#when_false (var_after_expr) on <var_after_expr:FlowContext> */
2561 var6 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <var_after_expr:FlowContext> */
2562 if (unlikely(var6 == NULL)) {
2563 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
2564 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 228);
2565 fatal_exit(1);
2566 }
2567 var4 = var6;
2568 RET_LABEL5:(void)0;
2569 }
2570 }
2571 {
2572 { /* Inline flow#FlowVisitor#current_flow_context= (var_v,var4) on <var_v:FlowVisitor> */
2573 var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val = var4; /* _current_flow_context on <var_v:FlowVisitor> */
2574 RET_LABEL7:(void)0;
2575 }
2576 }
2577 {
2578 { /* Inline parser_nodes#AAssertExpr#n_else (self) on <self:AAssertExpr> */
2579 var10 = self->attrs[COLOR_nit__parser_nodes__AAssertExpr___n_else].val; /* _n_else on <self:AAssertExpr> */
2580 var8 = var10;
2581 RET_LABEL9:(void)0;
2582 }
2583 }
2584 {
2585 nit___nit__Visitor___enter_visit(var_v, var8); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:FlowVisitor>*/
2586 }
2587 {
2588 { /* Inline flow#FlowContext#when_true (var_after_expr) on <var_after_expr:FlowContext> */
2589 var13 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <var_after_expr:FlowContext> */
2590 if (unlikely(var13 == NULL)) {
2591 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
2592 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225);
2593 fatal_exit(1);
2594 }
2595 var11 = var13;
2596 RET_LABEL12:(void)0;
2597 }
2598 }
2599 {
2600 { /* Inline flow#FlowVisitor#current_flow_context= (var_v,var11) on <var_v:FlowVisitor> */
2601 var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val = var11; /* _current_flow_context on <var_v:FlowVisitor> */
2602 RET_LABEL14:(void)0;
2603 }
2604 }
2605 RET_LABEL:;
2606 }
2607 /* method flow#AOrExpr#accept_flow_visitor for (self: AOrExpr, FlowVisitor) */
2608 void nit__flow___AOrExpr___ANode__accept_flow_visitor(val* self, val* p0) {
2609 val* var_v /* var v: FlowVisitor */;
2610 val* var /* : AExpr */;
2611 val* var2 /* : AExpr */;
2612 val* var3 /* : FlowContext */;
2613 val* var_after_expr /* var after_expr: FlowContext */;
2614 val* var4 /* : FlowContext */;
2615 val* var6 /* : FlowContext */;
2616 val* var8 /* : AExpr */;
2617 val* var10 /* : AExpr */;
2618 val* var11 /* : FlowContext */;
2619 val* var_after_expr2 /* var after_expr2: FlowContext */;
2620 val* var12 /* : FlowContext */;
2621 val* var14 /* : FlowContext */;
2622 val* var15 /* : FlowContext */;
2623 val* var17 /* : FlowContext */;
2624 val* var18 /* : FlowContext */;
2625 val* var_merge_true /* var merge_true: FlowContext */;
2626 static val* varonce;
2627 val* var19 /* : String */;
2628 char* var20 /* : NativeString */;
2629 val* var21 /* : FlatString */;
2630 val* var23 /* : FlowContext */;
2631 val* var25 /* : FlowContext */;
2632 val* var26 /* : FlowContext */;
2633 var_v = p0;
2634 {
2635 { /* Inline parser_nodes#ABinBoolExpr#n_expr (self) on <self:AOrExpr> */
2636 var2 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr].val; /* _n_expr on <self:AOrExpr> */
2637 if (unlikely(var2 == NULL)) {
2638 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
2639 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2053);
2640 fatal_exit(1);
2641 }
2642 var = var2;
2643 RET_LABEL1:(void)0;
2644 }
2645 }
2646 {
2647 var3 = nit__flow___nit__flow__FlowVisitor___visit_expr(var_v, var);
2648 }
2649 var_after_expr = var3;
2650 {
2651 { /* Inline flow#FlowContext#when_false (var_after_expr) on <var_after_expr:FlowContext> */
2652 var6 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <var_after_expr:FlowContext> */
2653 if (unlikely(var6 == NULL)) {
2654 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
2655 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 228);
2656 fatal_exit(1);
2657 }
2658 var4 = var6;
2659 RET_LABEL5:(void)0;
2660 }
2661 }
2662 {
2663 { /* Inline flow#FlowVisitor#current_flow_context= (var_v,var4) on <var_v:FlowVisitor> */
2664 var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val = var4; /* _current_flow_context on <var_v:FlowVisitor> */
2665 RET_LABEL7:(void)0;
2666 }
2667 }
2668 {
2669 { /* Inline parser_nodes#ABinBoolExpr#n_expr2 (self) on <self:AOrExpr> */
2670 var10 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr2].val; /* _n_expr2 on <self:AOrExpr> */
2671 if (unlikely(var10 == NULL)) {
2672 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2");
2673 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2059);
2674 fatal_exit(1);
2675 }
2676 var8 = var10;
2677 RET_LABEL9:(void)0;
2678 }
2679 }
2680 {
2681 var11 = nit__flow___nit__flow__FlowVisitor___visit_expr(var_v, var8);
2682 }
2683 var_after_expr2 = var11;
2684 {
2685 { /* Inline flow#FlowContext#when_true (var_after_expr) on <var_after_expr:FlowContext> */
2686 var14 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <var_after_expr:FlowContext> */
2687 if (unlikely(var14 == NULL)) {
2688 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
2689 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225);
2690 fatal_exit(1);
2691 }
2692 var12 = var14;
2693 RET_LABEL13:(void)0;
2694 }
2695 }
2696 {
2697 { /* Inline flow#FlowContext#when_true (var_after_expr2) on <var_after_expr2:FlowContext> */
2698 var17 = var_after_expr2->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <var_after_expr2:FlowContext> */
2699 if (unlikely(var17 == NULL)) {
2700 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
2701 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225);
2702 fatal_exit(1);
2703 }
2704 var15 = var17;
2705 RET_LABEL16:(void)0;
2706 }
2707 }
2708 {
2709 var18 = nit__flow___nit__flow__FlowVisitor___make_merge_flow(var_v, var12, var15);
2710 }
2711 var_merge_true = var18;
2712 if (likely(varonce!=NULL)) {
2713 var19 = varonce;
2714 } else {
2715 var20 = "OR TRUE";
2716 var21 = standard___standard__NativeString___to_s_with_length(var20, 7l);
2717 var19 = var21;
2718 varonce = var19;
2719 }
2720 {
2721 { /* Inline flow#FlowContext#name= (var_merge_true,var19) on <var_merge_true:FlowContext> */
2722 var_merge_true->attrs[COLOR_nit__flow__FlowContext___name].val = var19; /* _name on <var_merge_true:FlowContext> */
2723 RET_LABEL22:(void)0;
2724 }
2725 }
2726 {
2727 { /* Inline flow#FlowContext#when_false (var_after_expr2) on <var_after_expr2:FlowContext> */
2728 var25 = var_after_expr2->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <var_after_expr2:FlowContext> */
2729 if (unlikely(var25 == NULL)) {
2730 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
2731 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 228);
2732 fatal_exit(1);
2733 }
2734 var23 = var25;
2735 RET_LABEL24:(void)0;
2736 }
2737 }
2738 {
2739 var26 = nit__flow___nit__flow__FlowVisitor___make_true_false_flow(var_v, var_merge_true, var23);
2740 }
2741 RET_LABEL:;
2742 }
2743 /* method flow#AImpliesExpr#accept_flow_visitor for (self: AImpliesExpr, FlowVisitor) */
2744 void nit__flow___AImpliesExpr___ANode__accept_flow_visitor(val* self, val* p0) {
2745 val* var_v /* var v: FlowVisitor */;
2746 val* var /* : AExpr */;
2747 val* var2 /* : AExpr */;
2748 val* var3 /* : FlowContext */;
2749 val* var_after_expr /* var after_expr: FlowContext */;
2750 val* var4 /* : FlowContext */;
2751 val* var6 /* : FlowContext */;
2752 val* var8 /* : AExpr */;
2753 val* var10 /* : AExpr */;
2754 val* var11 /* : FlowContext */;
2755 val* var_after_expr2 /* var after_expr2: FlowContext */;
2756 val* var12 /* : FlowContext */;
2757 val* var14 /* : FlowContext */;
2758 val* var15 /* : FlowContext */;
2759 val* var17 /* : FlowContext */;
2760 val* var18 /* : FlowContext */;
2761 val* var_merge_true /* var merge_true: FlowContext */;
2762 static val* varonce;
2763 val* var19 /* : String */;
2764 char* var20 /* : NativeString */;
2765 val* var21 /* : FlatString */;
2766 val* var23 /* : FlowContext */;
2767 val* var25 /* : FlowContext */;
2768 val* var26 /* : FlowContext */;
2769 var_v = p0;
2770 {
2771 { /* Inline parser_nodes#ABinBoolExpr#n_expr (self) on <self:AImpliesExpr> */
2772 var2 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr].val; /* _n_expr on <self:AImpliesExpr> */
2773 if (unlikely(var2 == NULL)) {
2774 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
2775 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2053);
2776 fatal_exit(1);
2777 }
2778 var = var2;
2779 RET_LABEL1:(void)0;
2780 }
2781 }
2782 {
2783 var3 = nit__flow___nit__flow__FlowVisitor___visit_expr(var_v, var);
2784 }
2785 var_after_expr = var3;
2786 {
2787 { /* Inline flow#FlowContext#when_true (var_after_expr) on <var_after_expr:FlowContext> */
2788 var6 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <var_after_expr:FlowContext> */
2789 if (unlikely(var6 == NULL)) {
2790 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
2791 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225);
2792 fatal_exit(1);
2793 }
2794 var4 = var6;
2795 RET_LABEL5:(void)0;
2796 }
2797 }
2798 {
2799 { /* Inline flow#FlowVisitor#current_flow_context= (var_v,var4) on <var_v:FlowVisitor> */
2800 var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val = var4; /* _current_flow_context on <var_v:FlowVisitor> */
2801 RET_LABEL7:(void)0;
2802 }
2803 }
2804 {
2805 { /* Inline parser_nodes#ABinBoolExpr#n_expr2 (self) on <self:AImpliesExpr> */
2806 var10 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr2].val; /* _n_expr2 on <self:AImpliesExpr> */
2807 if (unlikely(var10 == NULL)) {
2808 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2");
2809 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2059);
2810 fatal_exit(1);
2811 }
2812 var8 = var10;
2813 RET_LABEL9:(void)0;
2814 }
2815 }
2816 {
2817 var11 = nit__flow___nit__flow__FlowVisitor___visit_expr(var_v, var8);
2818 }
2819 var_after_expr2 = var11;
2820 {
2821 { /* Inline flow#FlowContext#when_false (var_after_expr) on <var_after_expr:FlowContext> */
2822 var14 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <var_after_expr:FlowContext> */
2823 if (unlikely(var14 == NULL)) {
2824 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
2825 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 228);
2826 fatal_exit(1);
2827 }
2828 var12 = var14;
2829 RET_LABEL13:(void)0;
2830 }
2831 }
2832 {
2833 { /* Inline flow#FlowContext#when_true (var_after_expr2) on <var_after_expr2:FlowContext> */
2834 var17 = var_after_expr2->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <var_after_expr2:FlowContext> */
2835 if (unlikely(var17 == NULL)) {
2836 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
2837 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225);
2838 fatal_exit(1);
2839 }
2840 var15 = var17;
2841 RET_LABEL16:(void)0;
2842 }
2843 }
2844 {
2845 var18 = nit__flow___nit__flow__FlowVisitor___make_merge_flow(var_v, var12, var15);
2846 }
2847 var_merge_true = var18;
2848 if (likely(varonce!=NULL)) {
2849 var19 = varonce;
2850 } else {
2851 var20 = "OR TRUE";
2852 var21 = standard___standard__NativeString___to_s_with_length(var20, 7l);
2853 var19 = var21;
2854 varonce = var19;
2855 }
2856 {
2857 { /* Inline flow#FlowContext#name= (var_merge_true,var19) on <var_merge_true:FlowContext> */
2858 var_merge_true->attrs[COLOR_nit__flow__FlowContext___name].val = var19; /* _name on <var_merge_true:FlowContext> */
2859 RET_LABEL22:(void)0;
2860 }
2861 }
2862 {
2863 { /* Inline flow#FlowContext#when_false (var_after_expr2) on <var_after_expr2:FlowContext> */
2864 var25 = var_after_expr2->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <var_after_expr2:FlowContext> */
2865 if (unlikely(var25 == NULL)) {
2866 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
2867 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 228);
2868 fatal_exit(1);
2869 }
2870 var23 = var25;
2871 RET_LABEL24:(void)0;
2872 }
2873 }
2874 {
2875 var26 = nit__flow___nit__flow__FlowVisitor___make_true_false_flow(var_v, var_merge_true, var23);
2876 }
2877 RET_LABEL:;
2878 }
2879 /* method flow#AAndExpr#accept_flow_visitor for (self: AAndExpr, FlowVisitor) */
2880 void nit__flow___AAndExpr___ANode__accept_flow_visitor(val* self, val* p0) {
2881 val* var_v /* var v: FlowVisitor */;
2882 val* var /* : AExpr */;
2883 val* var2 /* : AExpr */;
2884 val* var3 /* : FlowContext */;
2885 val* var_after_expr /* var after_expr: FlowContext */;
2886 val* var4 /* : FlowContext */;
2887 val* var6 /* : FlowContext */;
2888 val* var8 /* : AExpr */;
2889 val* var10 /* : AExpr */;
2890 val* var11 /* : FlowContext */;
2891 val* var_after_expr2 /* var after_expr2: FlowContext */;
2892 val* var12 /* : FlowContext */;
2893 val* var14 /* : FlowContext */;
2894 val* var15 /* : FlowContext */;
2895 val* var17 /* : FlowContext */;
2896 val* var18 /* : FlowContext */;
2897 val* var_merge_false /* var merge_false: FlowContext */;
2898 static val* varonce;
2899 val* var19 /* : String */;
2900 char* var20 /* : NativeString */;
2901 val* var21 /* : FlatString */;
2902 val* var23 /* : FlowContext */;
2903 val* var25 /* : FlowContext */;
2904 val* var26 /* : FlowContext */;
2905 var_v = p0;
2906 {
2907 { /* Inline parser_nodes#ABinBoolExpr#n_expr (self) on <self:AAndExpr> */
2908 var2 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr].val; /* _n_expr on <self:AAndExpr> */
2909 if (unlikely(var2 == NULL)) {
2910 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
2911 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2053);
2912 fatal_exit(1);
2913 }
2914 var = var2;
2915 RET_LABEL1:(void)0;
2916 }
2917 }
2918 {
2919 var3 = nit__flow___nit__flow__FlowVisitor___visit_expr(var_v, var);
2920 }
2921 var_after_expr = var3;
2922 {
2923 { /* Inline flow#FlowContext#when_true (var_after_expr) on <var_after_expr:FlowContext> */
2924 var6 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <var_after_expr:FlowContext> */
2925 if (unlikely(var6 == NULL)) {
2926 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
2927 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225);
2928 fatal_exit(1);
2929 }
2930 var4 = var6;
2931 RET_LABEL5:(void)0;
2932 }
2933 }
2934 {
2935 { /* Inline flow#FlowVisitor#current_flow_context= (var_v,var4) on <var_v:FlowVisitor> */
2936 var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val = var4; /* _current_flow_context on <var_v:FlowVisitor> */
2937 RET_LABEL7:(void)0;
2938 }
2939 }
2940 {
2941 { /* Inline parser_nodes#ABinBoolExpr#n_expr2 (self) on <self:AAndExpr> */
2942 var10 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr2].val; /* _n_expr2 on <self:AAndExpr> */
2943 if (unlikely(var10 == NULL)) {
2944 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2");
2945 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2059);
2946 fatal_exit(1);
2947 }
2948 var8 = var10;
2949 RET_LABEL9:(void)0;
2950 }
2951 }
2952 {
2953 var11 = nit__flow___nit__flow__FlowVisitor___visit_expr(var_v, var8);
2954 }
2955 var_after_expr2 = var11;
2956 {
2957 { /* Inline flow#FlowContext#when_false (var_after_expr) on <var_after_expr:FlowContext> */
2958 var14 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <var_after_expr:FlowContext> */
2959 if (unlikely(var14 == NULL)) {
2960 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
2961 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 228);
2962 fatal_exit(1);
2963 }
2964 var12 = var14;
2965 RET_LABEL13:(void)0;
2966 }
2967 }
2968 {
2969 { /* Inline flow#FlowContext#when_false (var_after_expr2) on <var_after_expr2:FlowContext> */
2970 var17 = var_after_expr2->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <var_after_expr2:FlowContext> */
2971 if (unlikely(var17 == NULL)) {
2972 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
2973 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 228);
2974 fatal_exit(1);
2975 }
2976 var15 = var17;
2977 RET_LABEL16:(void)0;
2978 }
2979 }
2980 {
2981 var18 = nit__flow___nit__flow__FlowVisitor___make_merge_flow(var_v, var12, var15);
2982 }
2983 var_merge_false = var18;
2984 if (likely(varonce!=NULL)) {
2985 var19 = varonce;
2986 } else {
2987 var20 = "AND FALSE";
2988 var21 = standard___standard__NativeString___to_s_with_length(var20, 9l);
2989 var19 = var21;
2990 varonce = var19;
2991 }
2992 {
2993 { /* Inline flow#FlowContext#name= (var_merge_false,var19) on <var_merge_false:FlowContext> */
2994 var_merge_false->attrs[COLOR_nit__flow__FlowContext___name].val = var19; /* _name on <var_merge_false:FlowContext> */
2995 RET_LABEL22:(void)0;
2996 }
2997 }
2998 {
2999 { /* Inline flow#FlowContext#when_true (var_after_expr2) on <var_after_expr2:FlowContext> */
3000 var25 = var_after_expr2->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <var_after_expr2:FlowContext> */
3001 if (unlikely(var25 == NULL)) {
3002 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
3003 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225);
3004 fatal_exit(1);
3005 }
3006 var23 = var25;
3007 RET_LABEL24:(void)0;
3008 }
3009 }
3010 {
3011 var26 = nit__flow___nit__flow__FlowVisitor___make_true_false_flow(var_v, var23, var_merge_false);
3012 }
3013 RET_LABEL:;
3014 }
3015 /* method flow#ANotExpr#accept_flow_visitor for (self: ANotExpr, FlowVisitor) */
3016 void nit__flow___ANotExpr___ANode__accept_flow_visitor(val* self, val* p0) {
3017 val* var_v /* var v: FlowVisitor */;
3018 val* var /* : AExpr */;
3019 val* var2 /* : AExpr */;
3020 val* var3 /* : FlowContext */;
3021 val* var_after_expr /* var after_expr: FlowContext */;
3022 val* var4 /* : FlowContext */;
3023 val* var6 /* : FlowContext */;
3024 val* var7 /* : FlowContext */;
3025 val* var9 /* : FlowContext */;
3026 val* var10 /* : FlowContext */;
3027 var_v = p0;
3028 {
3029 { /* Inline parser_nodes#ANotExpr#n_expr (self) on <self:ANotExpr> */
3030 var2 = self->attrs[COLOR_nit__parser_nodes__ANotExpr___n_expr].val; /* _n_expr on <self:ANotExpr> */
3031 if (unlikely(var2 == NULL)) {
3032 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
3033 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2093);
3034 fatal_exit(1);
3035 }
3036 var = var2;
3037 RET_LABEL1:(void)0;
3038 }
3039 }
3040 {
3041 var3 = nit__flow___nit__flow__FlowVisitor___visit_expr(var_v, var);
3042 }
3043 var_after_expr = var3;
3044 {
3045 { /* Inline flow#FlowContext#when_false (var_after_expr) on <var_after_expr:FlowContext> */
3046 var6 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <var_after_expr:FlowContext> */
3047 if (unlikely(var6 == NULL)) {
3048 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
3049 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 228);
3050 fatal_exit(1);
3051 }
3052 var4 = var6;
3053 RET_LABEL5:(void)0;
3054 }
3055 }
3056 {
3057 { /* Inline flow#FlowContext#when_true (var_after_expr) on <var_after_expr:FlowContext> */
3058 var9 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <var_after_expr:FlowContext> */
3059 if (unlikely(var9 == NULL)) {
3060 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
3061 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225);
3062 fatal_exit(1);
3063 }
3064 var7 = var9;
3065 RET_LABEL8:(void)0;
3066 }
3067 }
3068 {
3069 var10 = nit__flow___nit__flow__FlowVisitor___make_true_false_flow(var_v, var4, var7);
3070 }
3071 RET_LABEL:;
3072 }
3073 /* method flow#AOrElseExpr#accept_flow_visitor for (self: AOrElseExpr, FlowVisitor) */
3074 void nit__flow___AOrElseExpr___ANode__accept_flow_visitor(val* self, val* p0) {
3075 val* var_v /* var v: FlowVisitor */;
3076 var_v = p0;
3077 {
3078 ((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___AOrElseExpr___ANode__accept_flow_visitor]))(self, p0); /* accept_flow_visitor on <self:AOrElseExpr>*/
3079 }
3080 RET_LABEL:;
3081 }
3082 /* method flow#AEqExpr#accept_flow_visitor for (self: AEqExpr, FlowVisitor) */
3083 void nit__flow___AEqExpr___ANode__accept_flow_visitor(val* self, val* p0) {
3084 val* var_v /* var v: FlowVisitor */;
3085 val* var /* : FlowContext */;
3086 var_v = p0;
3087 {
3088 ((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___AEqExpr___ANode__accept_flow_visitor]))(self, p0); /* accept_flow_visitor on <self:AEqExpr>*/
3089 }
3090 {
3091 var = nit__flow___nit__flow__FlowVisitor___make_sub_true_false_flow(var_v);
3092 }
3093 RET_LABEL:;
3094 }
3095 /* method flow#ANeExpr#accept_flow_visitor for (self: ANeExpr, FlowVisitor) */
3096 void nit__flow___ANeExpr___ANode__accept_flow_visitor(val* self, val* p0) {
3097 val* var_v /* var v: FlowVisitor */;
3098 val* var /* : FlowContext */;
3099 var_v = p0;
3100 {
3101 ((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___ANeExpr___ANode__accept_flow_visitor]))(self, p0); /* accept_flow_visitor on <self:ANeExpr>*/
3102 }
3103 {
3104 var = nit__flow___nit__flow__FlowVisitor___make_sub_true_false_flow(var_v);
3105 }
3106 RET_LABEL:;
3107 }
3108 /* method flow#AIsaExpr#accept_flow_visitor for (self: AIsaExpr, FlowVisitor) */
3109 void nit__flow___AIsaExpr___ANode__accept_flow_visitor(val* self, val* p0) {
3110 val* var_v /* var v: FlowVisitor */;
3111 val* var /* : FlowContext */;
3112 var_v = p0;
3113 {
3114 ((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___AIsaExpr___ANode__accept_flow_visitor]))(self, p0); /* accept_flow_visitor on <self:AIsaExpr>*/
3115 }
3116 {
3117 var = nit__flow___nit__flow__FlowVisitor___make_sub_true_false_flow(var_v);
3118 }
3119 RET_LABEL:;
3120 }
3121 /* method flow#AParExpr#accept_flow_visitor for (self: AParExpr, FlowVisitor) */
3122 void nit__flow___AParExpr___ANode__accept_flow_visitor(val* self, val* p0) {
3123 val* var_v /* var v: FlowVisitor */;
3124 val* var /* : AExpr */;
3125 val* var2 /* : AExpr */;
3126 val* var3 /* : FlowContext */;
3127 val* var_after_expr /* var after_expr: FlowContext */;
3128 var_v = p0;
3129 {
3130 { /* Inline parser_nodes#AParExpr#n_expr (self) on <self:AParExpr> */
3131 var2 = self->attrs[COLOR_nit__parser_nodes__AParExpr___n_expr].val; /* _n_expr on <self:AParExpr> */
3132 if (unlikely(var2 == NULL)) {
3133 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
3134 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2637);
3135 fatal_exit(1);
3136 }
3137 var = var2;
3138 RET_LABEL1:(void)0;
3139 }
3140 }
3141 {
3142 var3 = nit__flow___nit__flow__FlowVisitor___visit_expr(var_v, var);
3143 }
3144 var_after_expr = var3;
3145 {
3146 { /* Inline flow#FlowVisitor#current_flow_context= (var_v,var_after_expr) on <var_v:FlowVisitor> */
3147 var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val = var_after_expr; /* _current_flow_context on <var_v:FlowVisitor> */
3148 RET_LABEL4:(void)0;
3149 }
3150 }
3151 RET_LABEL:;
3152 }
3153 /* method flow#AOnceExpr#accept_flow_visitor for (self: AOnceExpr, FlowVisitor) */
3154 void nit__flow___AOnceExpr___ANode__accept_flow_visitor(val* self, val* p0) {
3155 val* var_v /* var v: FlowVisitor */;
3156 val* var /* : AExpr */;
3157 val* var2 /* : AExpr */;
3158 val* var3 /* : FlowContext */;
3159 val* var_after_expr /* var after_expr: FlowContext */;
3160 var_v = p0;
3161 {
3162 { /* Inline parser_nodes#AOnceExpr#n_expr (self) on <self:AOnceExpr> */
3163 var2 = self->attrs[COLOR_nit__parser_nodes__AOnceExpr___n_expr].val; /* _n_expr on <self:AOnceExpr> */
3164 if (unlikely(var2 == NULL)) {
3165 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
3166 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2017);
3167 fatal_exit(1);
3168 }
3169 var = var2;
3170 RET_LABEL1:(void)0;
3171 }
3172 }
3173 {
3174 var3 = nit__flow___nit__flow__FlowVisitor___visit_expr(var_v, var);
3175 }
3176 var_after_expr = var3;
3177 {
3178 { /* Inline flow#FlowVisitor#current_flow_context= (var_v,var_after_expr) on <var_v:FlowVisitor> */
3179 var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val = var_after_expr; /* _current_flow_context on <var_v:FlowVisitor> */
3180 RET_LABEL4:(void)0;
3181 }
3182 }
3183 RET_LABEL:;
3184 }