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