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