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