pep8analysis: intro a feature to clear the list of errors/notes
[nit.git] / c_src / flow.sep.1.c
1 #include "flow.sep.0.h"
2 /* method flow#ToolContext#flow_phase for (self: ToolContext): Phase */
3 val* flow__ToolContext__flow_phase(val* self) {
4 val* var /* : Phase */;
5 val* var1 /* : Phase */;
6 var1 = self->attrs[COLOR_flow__ToolContext___64dflow_phase].val; /* @flow_phase on <self:ToolContext> */
7 if (var1 == NULL) {
8 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @flow_phase");
9 fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 26);
10 show_backtrace(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method flow#ToolContext#flow_phase for (self: Object): Phase */
17 val* VIRTUAL_flow__ToolContext__flow_phase(val* self) {
18 val* var /* : Phase */;
19 val* var1 /* : Phase */;
20 var1 = flow__ToolContext__flow_phase(self);
21 var = var1;
22 RET_LABEL:;
23 return var;
24 }
25 /* method flow#ToolContext#flow_phase= for (self: ToolContext, Phase) */
26 void flow__ToolContext__flow_phase_61d(val* self, val* p0) {
27 self->attrs[COLOR_flow__ToolContext___64dflow_phase].val = p0; /* @flow_phase on <self:ToolContext> */
28 RET_LABEL:;
29 }
30 /* method flow#ToolContext#flow_phase= for (self: Object, Phase) */
31 void VIRTUAL_flow__ToolContext__flow_phase_61d(val* self, val* p0) {
32 flow__ToolContext__flow_phase_61d(self, p0);
33 RET_LABEL:;
34 }
35 /* method flow#FlowPhase#process_npropdef for (self: FlowPhase, APropdef) */
36 void flow__FlowPhase__process_npropdef(val* self, val* p0) {
37 val* var_npropdef /* var npropdef: APropdef */;
38 val* var /* : ToolContext */;
39 var_npropdef = p0;
40 var = ((val* (*)(val*))(self->class->vft[COLOR_phase__Phase__toolcontext]))(self) /* toolcontext on <self:FlowPhase>*/;
41 ((void (*)(val*, val*))(var_npropdef->class->vft[COLOR_flow__APropdef__do_flow]))(var_npropdef, var) /* do_flow on <var_npropdef:APropdef>*/;
42 RET_LABEL:;
43 }
44 /* method flow#FlowPhase#process_npropdef for (self: Object, APropdef) */
45 void VIRTUAL_flow__FlowPhase__process_npropdef(val* self, val* p0) {
46 flow__FlowPhase__process_npropdef(self, p0);
47 RET_LABEL:;
48 }
49 /* method flow#FlowVisitor#current_flow_context for (self: FlowVisitor): FlowContext */
50 val* flow__FlowVisitor__current_flow_context(val* self) {
51 val* var /* : FlowContext */;
52 val* var1 /* : FlowContext */;
53 var1 = self->attrs[COLOR_flow__FlowVisitor___64dcurrent_flow_context].val; /* @current_flow_context on <self:FlowVisitor> */
54 if (var1 == NULL) {
55 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @current_flow_context");
56 fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 39);
57 show_backtrace(1);
58 }
59 var = var1;
60 RET_LABEL:;
61 return var;
62 }
63 /* method flow#FlowVisitor#current_flow_context for (self: Object): FlowContext */
64 val* VIRTUAL_flow__FlowVisitor__current_flow_context(val* self) {
65 val* var /* : FlowContext */;
66 val* var1 /* : FlowContext */;
67 var1 = flow__FlowVisitor__current_flow_context(self);
68 var = var1;
69 RET_LABEL:;
70 return var;
71 }
72 /* method flow#FlowVisitor#current_flow_context= for (self: FlowVisitor, FlowContext) */
73 void flow__FlowVisitor__current_flow_context_61d(val* self, val* p0) {
74 self->attrs[COLOR_flow__FlowVisitor___64dcurrent_flow_context].val = p0; /* @current_flow_context on <self:FlowVisitor> */
75 RET_LABEL:;
76 }
77 /* method flow#FlowVisitor#current_flow_context= for (self: Object, FlowContext) */
78 void VIRTUAL_flow__FlowVisitor__current_flow_context_61d(val* self, val* p0) {
79 flow__FlowVisitor__current_flow_context_61d(self, p0);
80 RET_LABEL:;
81 }
82 /* method flow#FlowVisitor#toolcontext for (self: FlowVisitor): ToolContext */
83 val* flow__FlowVisitor__toolcontext(val* self) {
84 val* var /* : ToolContext */;
85 val* var1 /* : ToolContext */;
86 var1 = self->attrs[COLOR_flow__FlowVisitor___64dtoolcontext].val; /* @toolcontext on <self:FlowVisitor> */
87 if (var1 == NULL) {
88 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @toolcontext");
89 fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 41);
90 show_backtrace(1);
91 }
92 var = var1;
93 RET_LABEL:;
94 return var;
95 }
96 /* method flow#FlowVisitor#toolcontext for (self: Object): ToolContext */
97 val* VIRTUAL_flow__FlowVisitor__toolcontext(val* self) {
98 val* var /* : ToolContext */;
99 val* var1 /* : ToolContext */;
100 var1 = flow__FlowVisitor__toolcontext(self);
101 var = var1;
102 RET_LABEL:;
103 return var;
104 }
105 /* method flow#FlowVisitor#toolcontext= for (self: FlowVisitor, ToolContext) */
106 void flow__FlowVisitor__toolcontext_61d(val* self, val* p0) {
107 self->attrs[COLOR_flow__FlowVisitor___64dtoolcontext].val = p0; /* @toolcontext on <self:FlowVisitor> */
108 RET_LABEL:;
109 }
110 /* method flow#FlowVisitor#toolcontext= for (self: Object, ToolContext) */
111 void VIRTUAL_flow__FlowVisitor__toolcontext_61d(val* self, val* p0) {
112 flow__FlowVisitor__toolcontext_61d(self, p0);
113 RET_LABEL:;
114 }
115 /* method flow#FlowVisitor#init for (self: FlowVisitor, ToolContext) */
116 void flow__FlowVisitor__init(val* self, val* p0) {
117 val* var_toolcontext /* var toolcontext: ToolContext */;
118 val* var /* : FlowContext */;
119 val* var1 /* : Array[FlowContext] */;
120 val* var2 /* : FlowContext */;
121 val* var3 /* : FlowContext */;
122 short int var4 /* : Bool */;
123 var_toolcontext = p0;
124 ((void (*)(val*))(self->class->vft[COLOR_parser_nodes__Visitor__init]))(self) /* init on <self:FlowVisitor>*/;
125 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__FlowVisitor__toolcontext_61d]))(self, var_toolcontext) /* toolcontext= on <self:FlowVisitor>*/;
126 var = NEW_flow__FlowContext(&type_flow__FlowContext);
127 ((void (*)(val*))(var->class->vft[COLOR_flow__FlowContext__init]))(var) /* init on <var:FlowContext>*/;
128 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(self, var) /* current_flow_context= on <self:FlowVisitor>*/;
129 var1 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__flows]))(self) /* flows on <self:FlowVisitor>*/;
130 var2 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(self) /* current_flow_context on <self:FlowVisitor>*/;
131 ((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var1, var2) /* add on <var1:Array[FlowContext]>*/;
132 var3 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(self) /* current_flow_context on <self:FlowVisitor>*/;
133 var4 = 1;
134 ((void (*)(val*, short int))(var3->class->vft[COLOR_flow__FlowContext__is_start_61d]))(var3, var4) /* is_start= on <var3:FlowContext>*/;
135 RET_LABEL:;
136 }
137 /* method flow#FlowVisitor#init for (self: Object, ToolContext) */
138 void VIRTUAL_flow__FlowVisitor__init(val* self, val* p0) {
139 flow__FlowVisitor__init(self, p0);
140 RET_LABEL:;
141 }
142 /* method flow#FlowVisitor#first for (self: FlowVisitor): nullable ANode */
143 val* flow__FlowVisitor__first(val* self) {
144 val* var /* : nullable ANode */;
145 val* var1 /* : nullable ANode */;
146 var1 = self->attrs[COLOR_flow__FlowVisitor___64dfirst].val; /* @first on <self:FlowVisitor> */
147 var = var1;
148 RET_LABEL:;
149 return var;
150 }
151 /* method flow#FlowVisitor#first for (self: Object): nullable ANode */
152 val* VIRTUAL_flow__FlowVisitor__first(val* self) {
153 val* var /* : nullable ANode */;
154 val* var1 /* : nullable ANode */;
155 var1 = flow__FlowVisitor__first(self);
156 var = var1;
157 RET_LABEL:;
158 return var;
159 }
160 /* method flow#FlowVisitor#first= for (self: FlowVisitor, nullable ANode) */
161 void flow__FlowVisitor__first_61d(val* self, val* p0) {
162 self->attrs[COLOR_flow__FlowVisitor___64dfirst].val = p0; /* @first on <self:FlowVisitor> */
163 RET_LABEL:;
164 }
165 /* method flow#FlowVisitor#first= for (self: Object, nullable ANode) */
166 void VIRTUAL_flow__FlowVisitor__first_61d(val* self, val* p0) {
167 flow__FlowVisitor__first_61d(self, p0);
168 RET_LABEL:;
169 }
170 /* method flow#FlowVisitor#visit for (self: FlowVisitor, ANode) */
171 void flow__FlowVisitor__visit(val* self, val* p0) {
172 val* var_node /* var node: ANode */;
173 val* var /* : nullable ANode */;
174 val* var1 /* : null */;
175 short int var2 /* : Bool */;
176 val* var3 /* : FlowContext */;
177 val* var4 /* : nullable ANode */;
178 val* var5 /* : null */;
179 short int var6 /* : Bool */;
180 val* var7 /* : FlowContext */;
181 short int var8 /* : Bool */;
182 int cltype;
183 int idtype;
184 val* var9 /* : FlowContext */;
185 val* var_flow /* var flow: FlowContext */;
186 short int var10 /* : Bool */;
187 val* var11 /* : FlowContext */;
188 short int var12 /* : Bool */;
189 short int var_ /* var : Bool */;
190 val* var13 /* : FlowContext */;
191 short int var14 /* : Bool */;
192 val* var15 /* : FlowContext */;
193 val* var16 /* : FlowContext */;
194 static val* varonce;
195 val* var17 /* : String */;
196 char* var18 /* : NativeString */;
197 long var19 /* : Int */;
198 val* var20 /* : String */;
199 val* var21 /* : nullable ANode */;
200 short int var22 /* : Bool */;
201 var_node = p0;
202 var = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__first]))(self) /* first on <self:FlowVisitor>*/;
203 var1 = NULL;
204 if (var == NULL) {
205 var2 = 1; /* is null */
206 } else {
207 var2 = 0; /* arg is null but recv is not */
208 }
209 if (var2){
210 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__FlowVisitor__first_61d]))(self, var_node) /* first= on <self:FlowVisitor>*/;
211 } else {
212 }
213 var3 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(self) /* current_flow_context on <self:FlowVisitor>*/;
214 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_flow__FlowContext__node]))(var3) /* node on <var3:FlowContext>*/;
215 var5 = NULL;
216 if (var4 == NULL) {
217 var6 = 1; /* is null */
218 } else {
219 var6 = 0; /* arg is null but recv is not */
220 }
221 if (var6){
222 var7 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(self) /* current_flow_context on <self:FlowVisitor>*/;
223 ((void (*)(val*, val*))(var7->class->vft[COLOR_flow__FlowContext__node_61d]))(var7, var_node) /* node= on <var7:FlowContext>*/;
224 } else {
225 }
226 ((void (*)(val*, val*))(var_node->class->vft[COLOR_flow__ANode__accept_flow_visitor]))(var_node, self) /* accept_flow_visitor on <var_node:ANode>*/;
227 /* <var_node:ANode> isa AExpr */
228 cltype = type_parser_nodes__AExpr.color;
229 idtype = type_parser_nodes__AExpr.id;
230 if(cltype >= var_node->type->table_size) {
231 var8 = 0;
232 } else {
233 var8 = var_node->type->type_table[cltype] == idtype;
234 }
235 if (var8){
236 var9 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(self) /* current_flow_context on <self:FlowVisitor>*/;
237 var_flow = var9;
238 ((void (*)(val*, val*))(var_node->class->vft[COLOR_flow__AExpr__after_flow_context_61d]))(var_node, var_flow) /* after_flow_context= on <var_node:ANode(AExpr)>*/;
239 var11 = ((val* (*)(val*))(var_flow->class->vft[COLOR_flow__FlowContext__when_true]))(var_flow) /* when_true on <var_flow:FlowContext>*/;
240 var12 = ((short int (*)(val*, val*))(var11->class->vft[COLOR_kernel__Object___33d_61d]))(var11, var_flow) /* != on <var11:FlowContext>*/;
241 var_ = var12;
242 if (var12){
243 var10 = var_;
244 } else {
245 var13 = ((val* (*)(val*))(var_flow->class->vft[COLOR_flow__FlowContext__when_false]))(var_flow) /* when_false on <var_flow:FlowContext>*/;
246 var14 = ((short int (*)(val*, val*))(var13->class->vft[COLOR_kernel__Object___33d_61d]))(var13, var_flow) /* != on <var13:FlowContext>*/;
247 var10 = var14;
248 }
249 if (var10){
250 var15 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__make_sub_flow]))(self) /* make_sub_flow on <self:FlowVisitor>*/;
251 var15;
252 var16 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(self) /* current_flow_context on <self:FlowVisitor>*/;
253 if (varonce) {
254 var17 = varonce;
255 } else {
256 var18 = "AUTOSUB";
257 var19 = 7;
258 var20 = string__NativeString__to_s_with_length(var18, var19);
259 var17 = var20;
260 varonce = var17;
261 }
262 ((void (*)(val*, val*))(var16->class->vft[COLOR_flow__FlowContext__name_61d]))(var16, var17) /* name= on <var16:FlowContext>*/;
263 } else {
264 }
265 } else {
266 }
267 var21 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__first]))(self) /* first on <self:FlowVisitor>*/;
268 if (var21 == NULL) {
269 var22 = 0; /* <var_node:ANode> cannot be null */
270 } else {
271 var22 = ((short int (*)(val*, val*))(var21->class->vft[COLOR_kernel__Object___61d_61d]))(var21, var_node) /* == on <var21:nullable ANode>*/;
272 }
273 if (var22){
274 } else {
275 }
276 RET_LABEL:;
277 }
278 /* method flow#FlowVisitor#visit for (self: Object, ANode) */
279 void VIRTUAL_flow__FlowVisitor__visit(val* self, val* p0) {
280 flow__FlowVisitor__visit(self, p0);
281 RET_LABEL:;
282 }
283 /* method flow#FlowVisitor#visit_expr for (self: FlowVisitor, AExpr): FlowContext */
284 val* flow__FlowVisitor__visit_expr(val* self, val* p0) {
285 val* var /* : FlowContext */;
286 val* var_node /* var node: AExpr */;
287 val* var1 /* : nullable FlowContext */;
288 var_node = p0;
289 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(self, var_node) /* enter_visit on <self:FlowVisitor>*/;
290 var1 = ((val* (*)(val*))(var_node->class->vft[COLOR_flow__AExpr__after_flow_context]))(var_node) /* after_flow_context on <var_node:AExpr>*/;
291 if (var1 == NULL) {
292 fprintf(stderr, "Runtime error: %s", "Cast failed");
293 fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 77);
294 show_backtrace(1);
295 }
296 var = var1;
297 goto RET_LABEL;
298 RET_LABEL:;
299 return var;
300 }
301 /* method flow#FlowVisitor#visit_expr for (self: Object, AExpr): FlowContext */
302 val* VIRTUAL_flow__FlowVisitor__visit_expr(val* self, val* p0) {
303 val* var /* : FlowContext */;
304 val* var1 /* : FlowContext */;
305 var1 = flow__FlowVisitor__visit_expr(self, p0);
306 var = var1;
307 RET_LABEL:;
308 return var;
309 }
310 /* method flow#FlowVisitor#flows for (self: FlowVisitor): Array[FlowContext] */
311 val* flow__FlowVisitor__flows(val* self) {
312 val* var /* : Array[FlowContext] */;
313 val* var1 /* : Array[FlowContext] */;
314 var1 = self->attrs[COLOR_flow__FlowVisitor___64dflows].val; /* @flows on <self:FlowVisitor> */
315 if (var1 == NULL) {
316 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @flows");
317 fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 80);
318 show_backtrace(1);
319 }
320 var = var1;
321 RET_LABEL:;
322 return var;
323 }
324 /* method flow#FlowVisitor#flows for (self: Object): Array[FlowContext] */
325 val* VIRTUAL_flow__FlowVisitor__flows(val* self) {
326 val* var /* : Array[FlowContext] */;
327 val* var1 /* : Array[FlowContext] */;
328 var1 = flow__FlowVisitor__flows(self);
329 var = var1;
330 RET_LABEL:;
331 return var;
332 }
333 /* method flow#FlowVisitor#flows= for (self: FlowVisitor, Array[FlowContext]) */
334 void flow__FlowVisitor__flows_61d(val* self, val* p0) {
335 self->attrs[COLOR_flow__FlowVisitor___64dflows].val = p0; /* @flows on <self:FlowVisitor> */
336 RET_LABEL:;
337 }
338 /* method flow#FlowVisitor#flows= for (self: Object, Array[FlowContext]) */
339 void VIRTUAL_flow__FlowVisitor__flows_61d(val* self, val* p0) {
340 flow__FlowVisitor__flows_61d(self, p0);
341 RET_LABEL:;
342 }
343 /* method flow#FlowVisitor#printflow for (self: FlowVisitor) */
344 void flow__FlowVisitor__printflow(val* self) {
345 val* var /* : OFStream */;
346 static val* varonce;
347 val* var1 /* : String */;
348 char* var2 /* : NativeString */;
349 long var3 /* : Int */;
350 val* var4 /* : String */;
351 val* var_file /* var file: OFStream */;
352 static val* varonce5;
353 val* var6 /* : String */;
354 char* var7 /* : NativeString */;
355 long var8 /* : Int */;
356 val* var9 /* : String */;
357 val* var10 /* : Array[FlowContext] */;
358 val* var11 /* : Iterator[nullable Object] */;
359 short int var12 /* : Bool */;
360 val* var13 /* : nullable Object */;
361 val* var_f /* var f: FlowContext */;
362 static val* varonce14;
363 val* var15 /* : String */;
364 char* var16 /* : NativeString */;
365 long var17 /* : Int */;
366 val* var18 /* : String */;
367 val* var_s /* var s: String */;
368 val* var19 /* : nullable ANode */;
369 short int var20 /* : Bool */;
370 int cltype;
371 int idtype;
372 val* var21 /* : Array[Object] */;
373 long var22 /* : Int */;
374 val* var_ /* var : Array[Object] */;
375 static val* varonce23;
376 val* var24 /* : String */;
377 char* var25 /* : NativeString */;
378 long var26 /* : Int */;
379 val* var27 /* : String */;
380 val* var28 /* : nullable ANode */;
381 short int var29 /* : Bool */;
382 int cltype30;
383 int idtype31;
384 const char* var_class_name;
385 val* var32 /* : nullable FlowContext */;
386 long var33 /* : Int */;
387 val* var34 /* : nullable Object */;
388 static val* varonce35;
389 val* var36 /* : String */;
390 char* var37 /* : NativeString */;
391 long var38 /* : Int */;
392 val* var39 /* : String */;
393 val* var40 /* : String */;
394 static val* varonce41;
395 val* var42 /* : String */;
396 char* var43 /* : NativeString */;
397 long var44 /* : Int */;
398 val* var45 /* : String */;
399 long var46 /* : Int */;
400 static val* varonce47;
401 val* var48 /* : String */;
402 char* var49 /* : NativeString */;
403 long var50 /* : Int */;
404 val* var51 /* : String */;
405 long var52 /* : Int */;
406 static val* varonce53;
407 val* var54 /* : String */;
408 char* var55 /* : NativeString */;
409 long var56 /* : Int */;
410 val* var57 /* : String */;
411 val* var58 /* : nullable ANode */;
412 val* var59 /* : Location */;
413 static val* varonce60;
414 val* var61 /* : String */;
415 char* var62 /* : NativeString */;
416 long var63 /* : Int */;
417 val* var64 /* : String */;
418 val* var65 /* : nullable ANode */;
419 val* var66 /* : String */;
420 static val* varonce67;
421 val* var68 /* : String */;
422 char* var69 /* : NativeString */;
423 long var70 /* : Int */;
424 val* var71 /* : String */;
425 val* var72 /* : String */;
426 static val* varonce73;
427 val* var74 /* : String */;
428 char* var75 /* : NativeString */;
429 long var76 /* : Int */;
430 val* var77 /* : String */;
431 val* var78 /* : Array[Object] */;
432 long var79 /* : Int */;
433 val* var80 /* : NativeArray[Object] */;
434 val* var81 /* : Object */;
435 val* var82 /* : Object */;
436 val* var83 /* : String */;
437 val* var84 /* : Array[FlowContext] */;
438 val* var85 /* : Iterator[nullable Object] */;
439 short int var86 /* : Bool */;
440 val* var87 /* : nullable Object */;
441 val* var_p /* var p: FlowContext */;
442 static val* varonce88;
443 val* var89 /* : String */;
444 char* var90 /* : NativeString */;
445 long var91 /* : Int */;
446 val* var92 /* : String */;
447 long var93 /* : Int */;
448 static val* varonce94;
449 val* var95 /* : String */;
450 char* var96 /* : NativeString */;
451 long var97 /* : Int */;
452 val* var98 /* : String */;
453 long var99 /* : Int */;
454 static val* varonce100;
455 val* var101 /* : String */;
456 char* var102 /* : NativeString */;
457 long var103 /* : Int */;
458 val* var104 /* : String */;
459 val* var105 /* : Array[Object] */;
460 long var106 /* : Int */;
461 val* var107 /* : NativeArray[Object] */;
462 val* var108 /* : Object */;
463 val* var109 /* : Object */;
464 val* var110 /* : String */;
465 val* var111 /* : FlowContext */;
466 short int var112 /* : Bool */;
467 static val* varonce113;
468 val* var114 /* : String */;
469 char* var115 /* : NativeString */;
470 long var116 /* : Int */;
471 val* var117 /* : String */;
472 long var118 /* : Int */;
473 static val* varonce119;
474 val* var120 /* : String */;
475 char* var121 /* : NativeString */;
476 long var122 /* : Int */;
477 val* var123 /* : String */;
478 val* var124 /* : FlowContext */;
479 long var125 /* : Int */;
480 static val* varonce126;
481 val* var127 /* : String */;
482 char* var128 /* : NativeString */;
483 long var129 /* : Int */;
484 val* var130 /* : String */;
485 val* var131 /* : Array[Object] */;
486 long var132 /* : Int */;
487 val* var133 /* : NativeArray[Object] */;
488 val* var134 /* : Object */;
489 val* var135 /* : Object */;
490 val* var136 /* : String */;
491 val* var137 /* : FlowContext */;
492 short int var138 /* : Bool */;
493 static val* varonce139;
494 val* var140 /* : String */;
495 char* var141 /* : NativeString */;
496 long var142 /* : Int */;
497 val* var143 /* : String */;
498 long var144 /* : Int */;
499 static val* varonce145;
500 val* var146 /* : String */;
501 char* var147 /* : NativeString */;
502 long var148 /* : Int */;
503 val* var149 /* : String */;
504 val* var150 /* : FlowContext */;
505 long var151 /* : Int */;
506 static val* varonce152;
507 val* var153 /* : String */;
508 char* var154 /* : NativeString */;
509 long var155 /* : Int */;
510 val* var156 /* : String */;
511 val* var157 /* : Array[Object] */;
512 long var158 /* : Int */;
513 val* var159 /* : NativeArray[Object] */;
514 val* var160 /* : Object */;
515 val* var161 /* : Object */;
516 val* var162 /* : String */;
517 static val* varonce164;
518 val* var165 /* : String */;
519 char* var166 /* : NativeString */;
520 long var167 /* : Int */;
521 val* var168 /* : String */;
522 var = NEW_file__OFStream(&type_file__OFStream);
523 if (varonce) {
524 var1 = varonce;
525 } else {
526 var2 = "flow.dot";
527 var3 = 8;
528 var4 = string__NativeString__to_s_with_length(var2, var3);
529 var1 = var4;
530 varonce = var1;
531 }
532 ((void (*)(val*, val*))(var->class->vft[COLOR_file__OFStream__open]))(var, var1) /* open on <var:OFStream>*/;
533 var_file = var;
534 if (varonce5) {
535 var6 = varonce5;
536 } else {
537 var7 = "digraph {\n";
538 var8 = 10;
539 var9 = string__NativeString__to_s_with_length(var7, var8);
540 var6 = var9;
541 varonce5 = var6;
542 }
543 ((void (*)(val*, val*))(var_file->class->vft[COLOR_stream__OStream__write]))(var_file, var6) /* write on <var_file:OFStream>*/;
544 var10 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__flows]))(self) /* flows on <self:FlowVisitor>*/;
545 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Collection__iterator]))(var10) /* iterator on <var10:Array[FlowContext]>*/;
546 for(;;) {
547 var12 = ((short int (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var11) /* is_ok on <var11:Iterator[nullable Object]>*/;
548 if(!var12) break;
549 var13 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__item]))(var11) /* item on <var11:Iterator[nullable Object]>*/;
550 var_f = var13;
551 if (varonce14) {
552 var15 = varonce14;
553 } else {
554 var16 = "";
555 var17 = 0;
556 var18 = string__NativeString__to_s_with_length(var16, var17);
557 var15 = var18;
558 varonce14 = var15;
559 }
560 var_s = var15;
561 var19 = ((val* (*)(val*))(var_f->class->vft[COLOR_flow__FlowContext__node]))(var_f) /* node on <var_f:FlowContext>*/;
562 /* <var19:nullable ANode> isa AExpr */
563 cltype = type_parser_nodes__AExpr.color;
564 idtype = type_parser_nodes__AExpr.id;
565 if(var19 == NULL) {
566 var20 = 0;
567 } else {
568 if(cltype >= var19->type->table_size) {
569 var20 = 0;
570 } else {
571 var20 = var19->type->type_table[cltype] == idtype;
572 }
573 }
574 if (var20){
575 var21 = NEW_array__Array(&type_array__Arraykernel__Object);
576 var22 = 3;
577 ((void (*)(val*, long))(var21->class->vft[COLOR_array__Array__with_capacity]))(var21, var22) /* with_capacity on <var21:Array[Object]>*/;
578 var_ = var21;
579 if (varonce23) {
580 var24 = varonce23;
581 } else {
582 var25 = "\\nmain=";
583 var26 = 7;
584 var27 = string__NativeString__to_s_with_length(var25, var26);
585 var24 = var27;
586 varonce23 = var24;
587 }
588 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var24) /* add on <var_:Array[Object]>*/;
589 var28 = ((val* (*)(val*))(var_f->class->vft[COLOR_flow__FlowContext__node]))(var_f) /* node on <var_f:FlowContext>*/;
590 /* <var28:nullable ANode> isa AExpr */
591 cltype30 = type_parser_nodes__AExpr.color;
592 idtype31 = type_parser_nodes__AExpr.id;
593 if(var28 == NULL) {
594 var29 = 0;
595 } else {
596 if(cltype30 >= var28->type->table_size) {
597 var29 = 0;
598 } else {
599 var29 = var28->type->type_table[cltype30] == idtype31;
600 }
601 }
602 if (!var29) {
603 var_class_name = var28 == NULL ? "null" : var28->type->name;
604 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AExpr", var_class_name);
605 fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 89);
606 show_backtrace(1);
607 }
608 var32 = ((val* (*)(val*))(var28->class->vft[COLOR_flow__AExpr__after_flow_context]))(var28) /* after_flow_context on <var28:nullable ANode(AExpr)>*/;
609 if (var32 == NULL) {
610 fprintf(stderr, "Runtime error: %s", "Receiver is null");
611 fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 89);
612 show_backtrace(1);
613 } else {
614 var33 = ((long (*)(val*))(var32->class->vft[COLOR_kernel__Object__object_id]))(var32) /* object_id on <var32:nullable FlowContext>*/;
615 }
616 var34 = BOX_kernel__Int(var33); /* autobox from Int to nullable Object */
617 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var34) /* add on <var_:Array[Object]>*/;
618 if (varonce35) {
619 var36 = varonce35;
620 } else {
621 var37 = "";
622 var38 = 0;
623 var39 = string__NativeString__to_s_with_length(var37, var38);
624 var36 = var39;
625 varonce35 = var36;
626 }
627 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var36) /* add on <var_:Array[Object]>*/;
628 var40 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
629 var_s = var40;
630 } else {
631 }
632 if (varonce41) {
633 var42 = varonce41;
634 } else {
635 var43 = "F";
636 var44 = 1;
637 var45 = string__NativeString__to_s_with_length(var43, var44);
638 var42 = var45;
639 varonce41 = var42;
640 }
641 var46 = ((long (*)(val*))(var_f->class->vft[COLOR_kernel__Object__object_id]))(var_f) /* object_id on <var_f:FlowContext>*/;
642 if (varonce47) {
643 var48 = varonce47;
644 } else {
645 var49 = " [label=\"";
646 var50 = 9;
647 var51 = string__NativeString__to_s_with_length(var49, var50);
648 var48 = var51;
649 varonce47 = var48;
650 }
651 var52 = ((long (*)(val*))(var_f->class->vft[COLOR_kernel__Object__object_id]))(var_f) /* object_id on <var_f:FlowContext>*/;
652 if (varonce53) {
653 var54 = varonce53;
654 } else {
655 var55 = "\\n";
656 var56 = 2;
657 var57 = string__NativeString__to_s_with_length(var55, var56);
658 var54 = var57;
659 varonce53 = var54;
660 }
661 var58 = ((val* (*)(val*))(var_f->class->vft[COLOR_flow__FlowContext__node]))(var_f) /* node on <var_f:FlowContext>*/;
662 if (var58 == NULL) {
663 fprintf(stderr, "Runtime error: %s", "Receiver is null");
664 fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 91);
665 show_backtrace(1);
666 } else {
667 var59 = ((val* (*)(val*))(var58->class->vft[COLOR_parser_nodes__ANode__location]))(var58) /* location on <var58:nullable ANode>*/;
668 }
669 if (varonce60) {
670 var61 = varonce60;
671 } else {
672 var62 = "\\n";
673 var63 = 2;
674 var64 = string__NativeString__to_s_with_length(var62, var63);
675 var61 = var64;
676 varonce60 = var61;
677 }
678 var65 = ((val* (*)(val*))(var_f->class->vft[COLOR_flow__FlowContext__node]))(var_f) /* node on <var_f:FlowContext>*/;
679 if (var65 == NULL) {
680 fprintf(stderr, "Runtime error: %s", "Receiver is null");
681 fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 91);
682 show_backtrace(1);
683 } else {
684 var66 = ((val* (*)(val*))(var65->class->vft[COLOR_string__Object__class_name]))(var65) /* class_name on <var65:nullable ANode>*/;
685 }
686 if (varonce67) {
687 var68 = varonce67;
688 } else {
689 var69 = "\\n";
690 var70 = 2;
691 var71 = string__NativeString__to_s_with_length(var69, var70);
692 var68 = var71;
693 varonce67 = var68;
694 }
695 var72 = ((val* (*)(val*))(var_f->class->vft[COLOR_flow__FlowContext__name]))(var_f) /* name on <var_f:FlowContext>*/;
696 if (varonce73) {
697 var74 = varonce73;
698 } else {
699 var75 = "\"];\n";
700 var76 = 4;
701 var77 = string__NativeString__to_s_with_length(var75, var76);
702 var74 = var77;
703 varonce73 = var74;
704 }
705 var78 = NEW_array__Array(&type_array__Arraykernel__Object);
706 { /* var78 = array_instance Array[Object] */
707 var79 = 12;
708 var80 = NEW_array__NativeArray(var79, &type_array__NativeArraykernel__Object);
709 ((struct instance_array__NativeArray*)var80)->values[0] = (val*) var42;
710 var81 = BOX_kernel__Int(var46); /* autobox from Int to Object */
711 ((struct instance_array__NativeArray*)var80)->values[1] = (val*) var81;
712 ((struct instance_array__NativeArray*)var80)->values[2] = (val*) var48;
713 var82 = BOX_kernel__Int(var52); /* autobox from Int to Object */
714 ((struct instance_array__NativeArray*)var80)->values[3] = (val*) var82;
715 ((struct instance_array__NativeArray*)var80)->values[4] = (val*) var54;
716 ((struct instance_array__NativeArray*)var80)->values[5] = (val*) var59;
717 ((struct instance_array__NativeArray*)var80)->values[6] = (val*) var61;
718 ((struct instance_array__NativeArray*)var80)->values[7] = (val*) var66;
719 ((struct instance_array__NativeArray*)var80)->values[8] = (val*) var68;
720 ((struct instance_array__NativeArray*)var80)->values[9] = (val*) var72;
721 ((struct instance_array__NativeArray*)var80)->values[10] = (val*) var_s;
722 ((struct instance_array__NativeArray*)var80)->values[11] = (val*) var74;
723 ((void (*)(val*, val*, long))(var78->class->vft[COLOR_array__Array__with_native]))(var78, var80, var79) /* with_native on <var78:Array[Object]>*/;
724 }
725 var83 = ((val* (*)(val*))(var78->class->vft[COLOR_string__Object__to_s]))(var78) /* to_s on <var78:Array[Object]>*/;
726 ((void (*)(val*, val*))(var_file->class->vft[COLOR_stream__OStream__write]))(var_file, var83) /* write on <var_file:OFStream>*/;
727 var84 = ((val* (*)(val*))(var_f->class->vft[COLOR_flow__FlowContext__previous]))(var_f) /* previous on <var_f:FlowContext>*/;
728 var85 = ((val* (*)(val*))(var84->class->vft[COLOR_abstract_collection__Collection__iterator]))(var84) /* iterator on <var84:Array[FlowContext]>*/;
729 for(;;) {
730 var86 = ((short int (*)(val*))(var85->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var85) /* is_ok on <var85:Iterator[nullable Object]>*/;
731 if(!var86) break;
732 var87 = ((val* (*)(val*))(var85->class->vft[COLOR_abstract_collection__Iterator__item]))(var85) /* item on <var85:Iterator[nullable Object]>*/;
733 var_p = var87;
734 if (varonce88) {
735 var89 = varonce88;
736 } else {
737 var90 = "F";
738 var91 = 1;
739 var92 = string__NativeString__to_s_with_length(var90, var91);
740 var89 = var92;
741 varonce88 = var89;
742 }
743 var93 = ((long (*)(val*))(var_p->class->vft[COLOR_kernel__Object__object_id]))(var_p) /* object_id on <var_p:FlowContext>*/;
744 if (varonce94) {
745 var95 = varonce94;
746 } else {
747 var96 = " -> F";
748 var97 = 5;
749 var98 = string__NativeString__to_s_with_length(var96, var97);
750 var95 = var98;
751 varonce94 = var95;
752 }
753 var99 = ((long (*)(val*))(var_f->class->vft[COLOR_kernel__Object__object_id]))(var_f) /* object_id on <var_f:FlowContext>*/;
754 if (varonce100) {
755 var101 = varonce100;
756 } else {
757 var102 = ";\n";
758 var103 = 2;
759 var104 = string__NativeString__to_s_with_length(var102, var103);
760 var101 = var104;
761 varonce100 = var101;
762 }
763 var105 = NEW_array__Array(&type_array__Arraykernel__Object);
764 { /* var105 = array_instance Array[Object] */
765 var106 = 5;
766 var107 = NEW_array__NativeArray(var106, &type_array__NativeArraykernel__Object);
767 ((struct instance_array__NativeArray*)var107)->values[0] = (val*) var89;
768 var108 = BOX_kernel__Int(var93); /* autobox from Int to Object */
769 ((struct instance_array__NativeArray*)var107)->values[1] = (val*) var108;
770 ((struct instance_array__NativeArray*)var107)->values[2] = (val*) var95;
771 var109 = BOX_kernel__Int(var99); /* autobox from Int to Object */
772 ((struct instance_array__NativeArray*)var107)->values[3] = (val*) var109;
773 ((struct instance_array__NativeArray*)var107)->values[4] = (val*) var101;
774 ((void (*)(val*, val*, long))(var105->class->vft[COLOR_array__Array__with_native]))(var105, var107, var106) /* with_native on <var105:Array[Object]>*/;
775 }
776 var110 = ((val* (*)(val*))(var105->class->vft[COLOR_string__Object__to_s]))(var105) /* to_s on <var105:Array[Object]>*/;
777 ((void (*)(val*, val*))(var_file->class->vft[COLOR_stream__OStream__write]))(var_file, var110) /* write on <var_file:OFStream>*/;
778 CONTINUE_label: (void)0;
779 ((void (*)(val*))(var85->class->vft[COLOR_abstract_collection__Iterator__next]))(var85) /* next on <var85:Iterator[nullable Object]>*/;
780 }
781 BREAK_label: (void)0;
782 var111 = ((val* (*)(val*))(var_f->class->vft[COLOR_flow__FlowContext__when_true]))(var_f) /* when_true on <var_f:FlowContext>*/;
783 var112 = ((short int (*)(val*, val*))(var111->class->vft[COLOR_kernel__Object___33d_61d]))(var111, var_f) /* != on <var111:FlowContext>*/;
784 if (var112){
785 if (varonce113) {
786 var114 = varonce113;
787 } else {
788 var115 = "F";
789 var116 = 1;
790 var117 = string__NativeString__to_s_with_length(var115, var116);
791 var114 = var117;
792 varonce113 = var114;
793 }
794 var118 = ((long (*)(val*))(var_f->class->vft[COLOR_kernel__Object__object_id]))(var_f) /* object_id on <var_f:FlowContext>*/;
795 if (varonce119) {
796 var120 = varonce119;
797 } else {
798 var121 = " -> F";
799 var122 = 5;
800 var123 = string__NativeString__to_s_with_length(var121, var122);
801 var120 = var123;
802 varonce119 = var120;
803 }
804 var124 = ((val* (*)(val*))(var_f->class->vft[COLOR_flow__FlowContext__when_true]))(var_f) /* when_true on <var_f:FlowContext>*/;
805 var125 = ((long (*)(val*))(var124->class->vft[COLOR_kernel__Object__object_id]))(var124) /* object_id on <var124:FlowContext>*/;
806 if (varonce126) {
807 var127 = varonce126;
808 } else {
809 var128 = "[label=TRUE, style=dotted];\n";
810 var129 = 28;
811 var130 = string__NativeString__to_s_with_length(var128, var129);
812 var127 = var130;
813 varonce126 = var127;
814 }
815 var131 = NEW_array__Array(&type_array__Arraykernel__Object);
816 { /* var131 = array_instance Array[Object] */
817 var132 = 5;
818 var133 = NEW_array__NativeArray(var132, &type_array__NativeArraykernel__Object);
819 ((struct instance_array__NativeArray*)var133)->values[0] = (val*) var114;
820 var134 = BOX_kernel__Int(var118); /* autobox from Int to Object */
821 ((struct instance_array__NativeArray*)var133)->values[1] = (val*) var134;
822 ((struct instance_array__NativeArray*)var133)->values[2] = (val*) var120;
823 var135 = BOX_kernel__Int(var125); /* autobox from Int to Object */
824 ((struct instance_array__NativeArray*)var133)->values[3] = (val*) var135;
825 ((struct instance_array__NativeArray*)var133)->values[4] = (val*) var127;
826 ((void (*)(val*, val*, long))(var131->class->vft[COLOR_array__Array__with_native]))(var131, var133, var132) /* with_native on <var131:Array[Object]>*/;
827 }
828 var136 = ((val* (*)(val*))(var131->class->vft[COLOR_string__Object__to_s]))(var131) /* to_s on <var131:Array[Object]>*/;
829 ((void (*)(val*, val*))(var_file->class->vft[COLOR_stream__OStream__write]))(var_file, var136) /* write on <var_file:OFStream>*/;
830 } else {
831 }
832 var137 = ((val* (*)(val*))(var_f->class->vft[COLOR_flow__FlowContext__when_false]))(var_f) /* when_false on <var_f:FlowContext>*/;
833 var138 = ((short int (*)(val*, val*))(var137->class->vft[COLOR_kernel__Object___33d_61d]))(var137, var_f) /* != on <var137:FlowContext>*/;
834 if (var138){
835 if (varonce139) {
836 var140 = varonce139;
837 } else {
838 var141 = "F";
839 var142 = 1;
840 var143 = string__NativeString__to_s_with_length(var141, var142);
841 var140 = var143;
842 varonce139 = var140;
843 }
844 var144 = ((long (*)(val*))(var_f->class->vft[COLOR_kernel__Object__object_id]))(var_f) /* object_id on <var_f:FlowContext>*/;
845 if (varonce145) {
846 var146 = varonce145;
847 } else {
848 var147 = " -> F";
849 var148 = 5;
850 var149 = string__NativeString__to_s_with_length(var147, var148);
851 var146 = var149;
852 varonce145 = var146;
853 }
854 var150 = ((val* (*)(val*))(var_f->class->vft[COLOR_flow__FlowContext__when_false]))(var_f) /* when_false on <var_f:FlowContext>*/;
855 var151 = ((long (*)(val*))(var150->class->vft[COLOR_kernel__Object__object_id]))(var150) /* object_id on <var150:FlowContext>*/;
856 if (varonce152) {
857 var153 = varonce152;
858 } else {
859 var154 = "[label=FALSE,style=dotted];\n";
860 var155 = 28;
861 var156 = string__NativeString__to_s_with_length(var154, var155);
862 var153 = var156;
863 varonce152 = var153;
864 }
865 var157 = NEW_array__Array(&type_array__Arraykernel__Object);
866 { /* var157 = array_instance Array[Object] */
867 var158 = 5;
868 var159 = NEW_array__NativeArray(var158, &type_array__NativeArraykernel__Object);
869 ((struct instance_array__NativeArray*)var159)->values[0] = (val*) var140;
870 var160 = BOX_kernel__Int(var144); /* autobox from Int to Object */
871 ((struct instance_array__NativeArray*)var159)->values[1] = (val*) var160;
872 ((struct instance_array__NativeArray*)var159)->values[2] = (val*) var146;
873 var161 = BOX_kernel__Int(var151); /* autobox from Int to Object */
874 ((struct instance_array__NativeArray*)var159)->values[3] = (val*) var161;
875 ((struct instance_array__NativeArray*)var159)->values[4] = (val*) var153;
876 ((void (*)(val*, val*, long))(var157->class->vft[COLOR_array__Array__with_native]))(var157, var159, var158) /* with_native on <var157:Array[Object]>*/;
877 }
878 var162 = ((val* (*)(val*))(var157->class->vft[COLOR_string__Object__to_s]))(var157) /* to_s on <var157:Array[Object]>*/;
879 ((void (*)(val*, val*))(var_file->class->vft[COLOR_stream__OStream__write]))(var_file, var162) /* write on <var_file:OFStream>*/;
880 } else {
881 }
882 CONTINUE_label163: (void)0;
883 ((void (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__next]))(var11) /* next on <var11:Iterator[nullable Object]>*/;
884 }
885 BREAK_label163: (void)0;
886 if (varonce164) {
887 var165 = varonce164;
888 } else {
889 var166 = "}\n";
890 var167 = 2;
891 var168 = string__NativeString__to_s_with_length(var166, var167);
892 var165 = var168;
893 varonce164 = var165;
894 }
895 ((void (*)(val*, val*))(var_file->class->vft[COLOR_stream__OStream__write]))(var_file, var165) /* write on <var_file:OFStream>*/;
896 ((void (*)(val*))(var_file->class->vft[COLOR_stream__IOS__close]))(var_file) /* close on <var_file:OFStream>*/;
897 RET_LABEL:;
898 }
899 /* method flow#FlowVisitor#printflow for (self: Object) */
900 void VIRTUAL_flow__FlowVisitor__printflow(val* self) {
901 flow__FlowVisitor__printflow(self);
902 RET_LABEL:;
903 }
904 /* method flow#FlowVisitor#make_sub_flow for (self: FlowVisitor): FlowContext */
905 val* flow__FlowVisitor__make_sub_flow(val* self) {
906 val* var /* : FlowContext */;
907 val* var1 /* : FlowContext */;
908 val* var_flow /* var flow: FlowContext */;
909 val* var2 /* : Array[FlowContext] */;
910 val* var3 /* : nullable ANode */;
911 val* var4 /* : FlowContext */;
912 var1 = NEW_flow__FlowContext(&type_flow__FlowContext);
913 ((void (*)(val*))(var1->class->vft[COLOR_flow__FlowContext__init]))(var1) /* init on <var1:FlowContext>*/;
914 var_flow = var1;
915 var2 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__flows]))(self) /* flows on <self:FlowVisitor>*/;
916 ((void (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var2, var_flow) /* add on <var2:Array[FlowContext]>*/;
917 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__Visitor__current_node]))(self) /* current_node on <self:FlowVisitor>*/;
918 ((void (*)(val*, val*))(var_flow->class->vft[COLOR_flow__FlowContext__node_61d]))(var_flow, var3) /* node= on <var_flow:FlowContext>*/;
919 var4 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(self) /* current_flow_context on <self:FlowVisitor>*/;
920 ((void (*)(val*, val*))(var_flow->class->vft[COLOR_flow__FlowContext__add_previous]))(var_flow, var4) /* add_previous on <var_flow:FlowContext>*/;
921 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(self, var_flow) /* current_flow_context= on <self:FlowVisitor>*/;
922 var = var_flow;
923 goto RET_LABEL;
924 RET_LABEL:;
925 return var;
926 }
927 /* method flow#FlowVisitor#make_sub_flow for (self: Object): FlowContext */
928 val* VIRTUAL_flow__FlowVisitor__make_sub_flow(val* self) {
929 val* var /* : FlowContext */;
930 val* var1 /* : FlowContext */;
931 var1 = flow__FlowVisitor__make_sub_flow(self);
932 var = var1;
933 RET_LABEL:;
934 return var;
935 }
936 /* method flow#FlowVisitor#make_merge_flow for (self: FlowVisitor, FlowContext, FlowContext): FlowContext */
937 val* flow__FlowVisitor__make_merge_flow(val* self, val* p0, val* p1) {
938 val* var /* : FlowContext */;
939 val* var_flow1 /* var flow1: FlowContext */;
940 val* var_flow2 /* var flow2: FlowContext */;
941 val* var1 /* : FlowContext */;
942 val* var_flow /* var flow: FlowContext */;
943 val* var2 /* : Array[FlowContext] */;
944 val* var3 /* : nullable ANode */;
945 var_flow1 = p0;
946 var_flow2 = p1;
947 var1 = NEW_flow__FlowContext(&type_flow__FlowContext);
948 ((void (*)(val*))(var1->class->vft[COLOR_flow__FlowContext__init]))(var1) /* init on <var1:FlowContext>*/;
949 var_flow = var1;
950 var2 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__flows]))(self) /* flows on <self:FlowVisitor>*/;
951 ((void (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var2, var_flow) /* add on <var2:Array[FlowContext]>*/;
952 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__Visitor__current_node]))(self) /* current_node on <self:FlowVisitor>*/;
953 ((void (*)(val*, val*))(var_flow->class->vft[COLOR_flow__FlowContext__node_61d]))(var_flow, var3) /* node= on <var_flow:FlowContext>*/;
954 ((void (*)(val*, val*))(var_flow->class->vft[COLOR_flow__FlowContext__add_previous]))(var_flow, var_flow1) /* add_previous on <var_flow:FlowContext>*/;
955 ((void (*)(val*, val*))(var_flow->class->vft[COLOR_flow__FlowContext__add_previous]))(var_flow, var_flow2) /* add_previous on <var_flow:FlowContext>*/;
956 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(self, var_flow) /* current_flow_context= on <self:FlowVisitor>*/;
957 var = var_flow;
958 goto RET_LABEL;
959 RET_LABEL:;
960 return var;
961 }
962 /* method flow#FlowVisitor#make_merge_flow for (self: Object, FlowContext, FlowContext): FlowContext */
963 val* VIRTUAL_flow__FlowVisitor__make_merge_flow(val* self, val* p0, val* p1) {
964 val* var /* : FlowContext */;
965 val* var1 /* : FlowContext */;
966 var1 = flow__FlowVisitor__make_merge_flow(self, p0, p1);
967 var = var1;
968 RET_LABEL:;
969 return var;
970 }
971 /* method flow#FlowVisitor#make_true_false_flow for (self: FlowVisitor, FlowContext, FlowContext): FlowContext */
972 val* flow__FlowVisitor__make_true_false_flow(val* self, val* p0, val* p1) {
973 val* var /* : FlowContext */;
974 val* var_true_flow /* var true_flow: FlowContext */;
975 val* var_false_flow /* var false_flow: FlowContext */;
976 val* var1 /* : FlowContext */;
977 val* var_flow /* var flow: FlowContext */;
978 val* var2 /* : Array[FlowContext] */;
979 val* var3 /* : nullable ANode */;
980 var_true_flow = p0;
981 var_false_flow = p1;
982 var1 = NEW_flow__FlowContext(&type_flow__FlowContext);
983 ((void (*)(val*))(var1->class->vft[COLOR_flow__FlowContext__init]))(var1) /* init on <var1:FlowContext>*/;
984 var_flow = var1;
985 var2 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__flows]))(self) /* flows on <self:FlowVisitor>*/;
986 ((void (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var2, var_flow) /* add on <var2:Array[FlowContext]>*/;
987 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__Visitor__current_node]))(self) /* current_node on <self:FlowVisitor>*/;
988 ((void (*)(val*, val*))(var_flow->class->vft[COLOR_flow__FlowContext__node_61d]))(var_flow, var3) /* node= on <var_flow:FlowContext>*/;
989 ((void (*)(val*, val*))(var_flow->class->vft[COLOR_flow__FlowContext__add_previous]))(var_flow, var_true_flow) /* add_previous on <var_flow:FlowContext>*/;
990 ((void (*)(val*, val*))(var_flow->class->vft[COLOR_flow__FlowContext__add_previous]))(var_flow, var_false_flow) /* add_previous on <var_flow:FlowContext>*/;
991 ((void (*)(val*, val*))(var_flow->class->vft[COLOR_flow__FlowContext__when_true_61d]))(var_flow, var_true_flow) /* when_true= on <var_flow:FlowContext>*/;
992 ((void (*)(val*, val*))(var_flow->class->vft[COLOR_flow__FlowContext__when_false_61d]))(var_flow, var_false_flow) /* when_false= on <var_flow:FlowContext>*/;
993 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(self, var_flow) /* current_flow_context= on <self:FlowVisitor>*/;
994 var = var_flow;
995 goto RET_LABEL;
996 RET_LABEL:;
997 return var;
998 }
999 /* method flow#FlowVisitor#make_true_false_flow for (self: Object, FlowContext, FlowContext): FlowContext */
1000 val* VIRTUAL_flow__FlowVisitor__make_true_false_flow(val* self, val* p0, val* p1) {
1001 val* var /* : FlowContext */;
1002 val* var1 /* : FlowContext */;
1003 var1 = flow__FlowVisitor__make_true_false_flow(self, p0, p1);
1004 var = var1;
1005 RET_LABEL:;
1006 return var;
1007 }
1008 /* method flow#FlowVisitor#make_sub_true_false_flow for (self: FlowVisitor): FlowContext */
1009 val* flow__FlowVisitor__make_sub_true_false_flow(val* self) {
1010 val* var /* : FlowContext */;
1011 val* var1 /* : FlowContext */;
1012 val* var_orig_flow /* var orig_flow: FlowContext */;
1013 val* var2 /* : FlowContext */;
1014 val* var_true_flow /* var true_flow: FlowContext */;
1015 val* var3 /* : Array[FlowContext] */;
1016 val* var4 /* : nullable ANode */;
1017 static val* varonce;
1018 val* var5 /* : String */;
1019 char* var6 /* : NativeString */;
1020 long var7 /* : Int */;
1021 val* var8 /* : String */;
1022 val* var9 /* : FlowContext */;
1023 val* var_false_flow /* var false_flow: FlowContext */;
1024 val* var10 /* : Array[FlowContext] */;
1025 val* var11 /* : nullable ANode */;
1026 static val* varonce12;
1027 val* var13 /* : String */;
1028 char* var14 /* : NativeString */;
1029 long var15 /* : Int */;
1030 val* var16 /* : String */;
1031 val* var17 /* : FlowContext */;
1032 var1 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(self) /* current_flow_context on <self:FlowVisitor>*/;
1033 var_orig_flow = var1;
1034 var2 = NEW_flow__FlowContext(&type_flow__FlowContext);
1035 ((void (*)(val*))(var2->class->vft[COLOR_flow__FlowContext__init]))(var2) /* init on <var2:FlowContext>*/;
1036 var_true_flow = var2;
1037 var3 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__flows]))(self) /* flows on <self:FlowVisitor>*/;
1038 ((void (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var3, var_true_flow) /* add on <var3:Array[FlowContext]>*/;
1039 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__Visitor__current_node]))(self) /* current_node on <self:FlowVisitor>*/;
1040 ((void (*)(val*, val*))(var_true_flow->class->vft[COLOR_flow__FlowContext__node_61d]))(var_true_flow, var4) /* node= on <var_true_flow:FlowContext>*/;
1041 ((void (*)(val*, val*))(var_true_flow->class->vft[COLOR_flow__FlowContext__add_previous]))(var_true_flow, var_orig_flow) /* add_previous on <var_true_flow:FlowContext>*/;
1042 if (varonce) {
1043 var5 = varonce;
1044 } else {
1045 var6 = "TRUE";
1046 var7 = 4;
1047 var8 = string__NativeString__to_s_with_length(var6, var7);
1048 var5 = var8;
1049 varonce = var5;
1050 }
1051 ((void (*)(val*, val*))(var_true_flow->class->vft[COLOR_flow__FlowContext__name_61d]))(var_true_flow, var5) /* name= on <var_true_flow:FlowContext>*/;
1052 var9 = NEW_flow__FlowContext(&type_flow__FlowContext);
1053 ((void (*)(val*))(var9->class->vft[COLOR_flow__FlowContext__init]))(var9) /* init on <var9:FlowContext>*/;
1054 var_false_flow = var9;
1055 var10 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__flows]))(self) /* flows on <self:FlowVisitor>*/;
1056 ((void (*)(val*, val*))(var10->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var10, var_false_flow) /* add on <var10:Array[FlowContext]>*/;
1057 var11 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__Visitor__current_node]))(self) /* current_node on <self:FlowVisitor>*/;
1058 ((void (*)(val*, val*))(var_false_flow->class->vft[COLOR_flow__FlowContext__node_61d]))(var_false_flow, var11) /* node= on <var_false_flow:FlowContext>*/;
1059 ((void (*)(val*, val*))(var_false_flow->class->vft[COLOR_flow__FlowContext__add_previous]))(var_false_flow, var_orig_flow) /* add_previous on <var_false_flow:FlowContext>*/;
1060 if (varonce12) {
1061 var13 = varonce12;
1062 } else {
1063 var14 = "FALSE";
1064 var15 = 5;
1065 var16 = string__NativeString__to_s_with_length(var14, var15);
1066 var13 = var16;
1067 varonce12 = var13;
1068 }
1069 ((void (*)(val*, val*))(var_false_flow->class->vft[COLOR_flow__FlowContext__name_61d]))(var_false_flow, var13) /* name= on <var_false_flow:FlowContext>*/;
1070 var17 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_flow__FlowVisitor__make_true_false_flow]))(self, var_true_flow, var_false_flow) /* make_true_false_flow on <self:FlowVisitor>*/;
1071 var = var17;
1072 goto RET_LABEL;
1073 RET_LABEL:;
1074 return var;
1075 }
1076 /* method flow#FlowVisitor#make_sub_true_false_flow for (self: Object): FlowContext */
1077 val* VIRTUAL_flow__FlowVisitor__make_sub_true_false_flow(val* self) {
1078 val* var /* : FlowContext */;
1079 val* var1 /* : FlowContext */;
1080 var1 = flow__FlowVisitor__make_sub_true_false_flow(self);
1081 var = var1;
1082 RET_LABEL:;
1083 return var;
1084 }
1085 /* method flow#FlowVisitor#make_unreachable_flow for (self: FlowVisitor): FlowContext */
1086 val* flow__FlowVisitor__make_unreachable_flow(val* self) {
1087 val* var /* : FlowContext */;
1088 val* var1 /* : FlowContext */;
1089 val* var_flow /* var flow: FlowContext */;
1090 val* var2 /* : Array[FlowContext] */;
1091 val* var3 /* : nullable ANode */;
1092 val* var4 /* : FlowContext */;
1093 short int var5 /* : Bool */;
1094 var1 = NEW_flow__FlowContext(&type_flow__FlowContext);
1095 ((void (*)(val*))(var1->class->vft[COLOR_flow__FlowContext__init]))(var1) /* init on <var1:FlowContext>*/;
1096 var_flow = var1;
1097 var2 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__flows]))(self) /* flows on <self:FlowVisitor>*/;
1098 ((void (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var2, var_flow) /* add on <var2:Array[FlowContext]>*/;
1099 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__Visitor__current_node]))(self) /* current_node on <self:FlowVisitor>*/;
1100 ((void (*)(val*, val*))(var_flow->class->vft[COLOR_flow__FlowContext__node_61d]))(var_flow, var3) /* node= on <var_flow:FlowContext>*/;
1101 var4 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(self) /* current_flow_context on <self:FlowVisitor>*/;
1102 ((void (*)(val*, val*))(var_flow->class->vft[COLOR_flow__FlowContext__add_previous]))(var_flow, var4) /* add_previous on <var_flow:FlowContext>*/;
1103 var5 = 1;
1104 ((void (*)(val*, short int))(var_flow->class->vft[COLOR_flow__FlowContext__is_marked_unreachable_61d]))(var_flow, var5) /* is_marked_unreachable= on <var_flow:FlowContext>*/;
1105 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(self, var_flow) /* current_flow_context= on <self:FlowVisitor>*/;
1106 var = var_flow;
1107 goto RET_LABEL;
1108 RET_LABEL:;
1109 return var;
1110 }
1111 /* method flow#FlowVisitor#make_unreachable_flow for (self: Object): FlowContext */
1112 val* VIRTUAL_flow__FlowVisitor__make_unreachable_flow(val* self) {
1113 val* var /* : FlowContext */;
1114 val* var1 /* : FlowContext */;
1115 var1 = flow__FlowVisitor__make_unreachable_flow(self);
1116 var = var1;
1117 RET_LABEL:;
1118 return var;
1119 }
1120 /* method flow#FlowVisitor#merge_continues_to for (self: FlowVisitor, FlowContext, nullable EscapeMark) */
1121 void flow__FlowVisitor__merge_continues_to(val* self, val* p0, val* p1) {
1122 val* var_before_loop /* var before_loop: FlowContext */;
1123 val* var_escapemark /* var escapemark: nullable EscapeMark */;
1124 val* var /* : null */;
1125 short int var1 /* : Bool */;
1126 val* var2 /* : Array[AContinueExpr] */;
1127 val* var3 /* : Iterator[nullable Object] */;
1128 short int var4 /* : Bool */;
1129 val* var5 /* : nullable Object */;
1130 val* var_b /* var b: AContinueExpr */;
1131 val* var6 /* : nullable FlowContext */;
1132 val* var_before /* var before: nullable FlowContext */;
1133 val* var7 /* : null */;
1134 short int var8 /* : Bool */;
1135 var_before_loop = p0;
1136 var_escapemark = p1;
1137 var = NULL;
1138 if (var_escapemark == NULL) {
1139 var1 = 1; /* is null */
1140 } else {
1141 var1 = 0; /* arg is null but recv is not */
1142 }
1143 if (var1){
1144 goto RET_LABEL;
1145 } else {
1146 }
1147 var2 = ((val* (*)(val*))(var_escapemark->class->vft[COLOR_scope__EscapeMark__continues]))(var_escapemark) /* continues on <var_escapemark:nullable EscapeMark(EscapeMark)>*/;
1148 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:Array[AContinueExpr]>*/;
1149 for(;;) {
1150 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
1151 if(!var4) break;
1152 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
1153 var_b = var5;
1154 var6 = ((val* (*)(val*))(var_b->class->vft[COLOR_flow__AContinueExpr__before_flow_context]))(var_b) /* before_flow_context on <var_b:AContinueExpr>*/;
1155 var_before = var6;
1156 var7 = NULL;
1157 if (var_before == NULL) {
1158 var8 = 1; /* is null */
1159 } else {
1160 var8 = 0; /* arg is null but recv is not */
1161 }
1162 if (var8){
1163 goto CONTINUE_label;
1164 } else {
1165 }
1166 ((void (*)(val*, val*))(var_before_loop->class->vft[COLOR_flow__FlowContext__add_loop]))(var_before_loop, var_before) /* add_loop on <var_before_loop:FlowContext>*/;
1167 CONTINUE_label: (void)0;
1168 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
1169 }
1170 BREAK_label: (void)0;
1171 RET_LABEL:;
1172 }
1173 /* method flow#FlowVisitor#merge_continues_to for (self: Object, FlowContext, nullable EscapeMark) */
1174 void VIRTUAL_flow__FlowVisitor__merge_continues_to(val* self, val* p0, val* p1) {
1175 flow__FlowVisitor__merge_continues_to(self, p0, p1);
1176 RET_LABEL:;
1177 }
1178 /* method flow#FlowVisitor#merge_breaks for (self: FlowVisitor, nullable EscapeMark) */
1179 void flow__FlowVisitor__merge_breaks(val* self, val* p0) {
1180 val* var_escapemark /* var escapemark: nullable EscapeMark */;
1181 val* var /* : null */;
1182 short int var1 /* : Bool */;
1183 val* var2 /* : Array[ABreakExpr] */;
1184 val* var3 /* : Iterator[nullable Object] */;
1185 short int var4 /* : Bool */;
1186 val* var5 /* : nullable Object */;
1187 val* var_b /* var b: ABreakExpr */;
1188 val* var6 /* : nullable FlowContext */;
1189 val* var_before /* var before: nullable FlowContext */;
1190 val* var7 /* : null */;
1191 short int var8 /* : Bool */;
1192 val* var9 /* : FlowContext */;
1193 val* var10 /* : FlowContext */;
1194 var_escapemark = p0;
1195 var = NULL;
1196 if (var_escapemark == NULL) {
1197 var1 = 1; /* is null */
1198 } else {
1199 var1 = 0; /* arg is null but recv is not */
1200 }
1201 if (var1){
1202 goto RET_LABEL;
1203 } else {
1204 }
1205 var2 = ((val* (*)(val*))(var_escapemark->class->vft[COLOR_scope__EscapeMark__breaks]))(var_escapemark) /* breaks on <var_escapemark:nullable EscapeMark(EscapeMark)>*/;
1206 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:Array[ABreakExpr]>*/;
1207 for(;;) {
1208 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
1209 if(!var4) break;
1210 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
1211 var_b = var5;
1212 var6 = ((val* (*)(val*))(var_b->class->vft[COLOR_flow__ABreakExpr__before_flow_context]))(var_b) /* before_flow_context on <var_b:ABreakExpr>*/;
1213 var_before = var6;
1214 var7 = NULL;
1215 if (var_before == NULL) {
1216 var8 = 1; /* is null */
1217 } else {
1218 var8 = 0; /* arg is null but recv is not */
1219 }
1220 if (var8){
1221 goto CONTINUE_label;
1222 } else {
1223 }
1224 var9 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(self) /* current_flow_context on <self:FlowVisitor>*/;
1225 var10 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_flow__FlowVisitor__make_merge_flow]))(self, var9, var_before) /* make_merge_flow on <self:FlowVisitor>*/;
1226 var10;
1227 CONTINUE_label: (void)0;
1228 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
1229 }
1230 BREAK_label: (void)0;
1231 RET_LABEL:;
1232 }
1233 /* method flow#FlowVisitor#merge_breaks for (self: Object, nullable EscapeMark) */
1234 void VIRTUAL_flow__FlowVisitor__merge_breaks(val* self, val* p0) {
1235 flow__FlowVisitor__merge_breaks(self, p0);
1236 RET_LABEL:;
1237 }
1238 /* method flow#FlowContext#previous for (self: FlowContext): Array[FlowContext] */
1239 val* flow__FlowContext__previous(val* self) {
1240 val* var /* : Array[FlowContext] */;
1241 val* var1 /* : Array[FlowContext] */;
1242 var1 = self->attrs[COLOR_flow__FlowContext___64dprevious].val; /* @previous on <self:FlowContext> */
1243 if (var1 == NULL) {
1244 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @previous");
1245 fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 192);
1246 show_backtrace(1);
1247 }
1248 var = var1;
1249 RET_LABEL:;
1250 return var;
1251 }
1252 /* method flow#FlowContext#previous for (self: Object): Array[FlowContext] */
1253 val* VIRTUAL_flow__FlowContext__previous(val* self) {
1254 val* var /* : Array[FlowContext] */;
1255 val* var1 /* : Array[FlowContext] */;
1256 var1 = flow__FlowContext__previous(self);
1257 var = var1;
1258 RET_LABEL:;
1259 return var;
1260 }
1261 /* method flow#FlowContext#previous= for (self: FlowContext, Array[FlowContext]) */
1262 void flow__FlowContext__previous_61d(val* self, val* p0) {
1263 self->attrs[COLOR_flow__FlowContext___64dprevious].val = p0; /* @previous on <self:FlowContext> */
1264 RET_LABEL:;
1265 }
1266 /* method flow#FlowContext#previous= for (self: Object, Array[FlowContext]) */
1267 void VIRTUAL_flow__FlowContext__previous_61d(val* self, val* p0) {
1268 flow__FlowContext__previous_61d(self, p0);
1269 RET_LABEL:;
1270 }
1271 /* method flow#FlowContext#loops for (self: FlowContext): Array[FlowContext] */
1272 val* flow__FlowContext__loops(val* self) {
1273 val* var /* : Array[FlowContext] */;
1274 val* var1 /* : Array[FlowContext] */;
1275 var1 = self->attrs[COLOR_flow__FlowContext___64dloops].val; /* @loops on <self:FlowContext> */
1276 if (var1 == NULL) {
1277 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @loops");
1278 fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 195);
1279 show_backtrace(1);
1280 }
1281 var = var1;
1282 RET_LABEL:;
1283 return var;
1284 }
1285 /* method flow#FlowContext#loops for (self: Object): Array[FlowContext] */
1286 val* VIRTUAL_flow__FlowContext__loops(val* self) {
1287 val* var /* : Array[FlowContext] */;
1288 val* var1 /* : Array[FlowContext] */;
1289 var1 = flow__FlowContext__loops(self);
1290 var = var1;
1291 RET_LABEL:;
1292 return var;
1293 }
1294 /* method flow#FlowContext#loops= for (self: FlowContext, Array[FlowContext]) */
1295 void flow__FlowContext__loops_61d(val* self, val* p0) {
1296 self->attrs[COLOR_flow__FlowContext___64dloops].val = p0; /* @loops on <self:FlowContext> */
1297 RET_LABEL:;
1298 }
1299 /* method flow#FlowContext#loops= for (self: Object, Array[FlowContext]) */
1300 void VIRTUAL_flow__FlowContext__loops_61d(val* self, val* p0) {
1301 flow__FlowContext__loops_61d(self, p0);
1302 RET_LABEL:;
1303 }
1304 /* method flow#FlowContext#is_marked_unreachable for (self: FlowContext): Bool */
1305 short int flow__FlowContext__is_marked_unreachable(val* self) {
1306 short int var /* : Bool */;
1307 short int var1 /* : Bool */;
1308 var1 = self->attrs[COLOR_flow__FlowContext___64dis_marked_unreachable].s; /* @is_marked_unreachable on <self:FlowContext> */
1309 var = var1;
1310 RET_LABEL:;
1311 return var;
1312 }
1313 /* method flow#FlowContext#is_marked_unreachable for (self: Object): Bool */
1314 short int VIRTUAL_flow__FlowContext__is_marked_unreachable(val* self) {
1315 short int var /* : Bool */;
1316 short int var1 /* : Bool */;
1317 var1 = flow__FlowContext__is_marked_unreachable(self);
1318 var = var1;
1319 RET_LABEL:;
1320 return var;
1321 }
1322 /* method flow#FlowContext#is_marked_unreachable= for (self: FlowContext, Bool) */
1323 void flow__FlowContext__is_marked_unreachable_61d(val* self, short int p0) {
1324 self->attrs[COLOR_flow__FlowContext___64dis_marked_unreachable].s = p0; /* @is_marked_unreachable on <self:FlowContext> */
1325 RET_LABEL:;
1326 }
1327 /* method flow#FlowContext#is_marked_unreachable= for (self: Object, Bool) */
1328 void VIRTUAL_flow__FlowContext__is_marked_unreachable_61d(val* self, short int p0) {
1329 flow__FlowContext__is_marked_unreachable_61d(self, p0);
1330 RET_LABEL:;
1331 }
1332 /* method flow#FlowContext#is_unreachable for (self: FlowContext): Bool */
1333 short int flow__FlowContext__is_unreachable(val* self) {
1334 short int var /* : Bool */;
1335 short int var1 /* : Bool */;
1336 short int var2 /* : Bool */;
1337 short int var3 /* : Bool */;
1338 short int var4 /* : Bool */;
1339 val* var5 /* : Array[FlowContext] */;
1340 long var6 /* : Int */;
1341 long var7 /* : Int */;
1342 short int var8 /* : Bool */;
1343 short int var10 /* : Bool */;
1344 short int var11 /* : Bool */;
1345 short int var12 /* : Bool */;
1346 var1 = ((short int (*)(val*))(self->class->vft[COLOR_flow__FlowContext__is_marked_unreachable]))(self) /* is_marked_unreachable on <self:FlowContext>*/;
1347 if (var1){
1348 var2 = 1;
1349 var = var2;
1350 goto RET_LABEL;
1351 } else {
1352 }
1353 var3 = ((short int (*)(val*))(self->class->vft[COLOR_flow__FlowContext__is_start]))(self) /* is_start on <self:FlowContext>*/;
1354 if (var3){
1355 var4 = 0;
1356 var = var4;
1357 goto RET_LABEL;
1358 } else {
1359 }
1360 var5 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowContext__previous]))(self) /* previous on <self:FlowContext>*/;
1361 var6 = ((long (*)(val*))(var5->class->vft[COLOR_abstract_collection__Collection__length]))(var5) /* length on <var5:Array[FlowContext]>*/;
1362 var7 = 0;
1363 { /* Inline kernel#Int#== (var6,var7) */
1364 var10 = var6 == var7;
1365 var8 = var10;
1366 goto RET_LABEL9;
1367 RET_LABEL9:(void)0;
1368 }
1369 if (var8){
1370 var11 = 1;
1371 var = var11;
1372 goto RET_LABEL;
1373 } else {
1374 }
1375 var12 = 0;
1376 var = var12;
1377 goto RET_LABEL;
1378 RET_LABEL:;
1379 return var;
1380 }
1381 /* method flow#FlowContext#is_unreachable for (self: Object): Bool */
1382 short int VIRTUAL_flow__FlowContext__is_unreachable(val* self) {
1383 short int var /* : Bool */;
1384 short int var1 /* : Bool */;
1385 var1 = flow__FlowContext__is_unreachable(self);
1386 var = var1;
1387 RET_LABEL:;
1388 return var;
1389 }
1390 /* method flow#FlowContext#is_already_unreachable for (self: FlowContext): Bool */
1391 short int flow__FlowContext__is_already_unreachable(val* self) {
1392 short int var /* : Bool */;
1393 short int var1 /* : Bool */;
1394 var1 = self->attrs[COLOR_flow__FlowContext___64dis_already_unreachable].s; /* @is_already_unreachable on <self:FlowContext> */
1395 var = var1;
1396 RET_LABEL:;
1397 return var;
1398 }
1399 /* method flow#FlowContext#is_already_unreachable for (self: Object): Bool */
1400 short int VIRTUAL_flow__FlowContext__is_already_unreachable(val* self) {
1401 short int var /* : Bool */;
1402 short int var1 /* : Bool */;
1403 var1 = flow__FlowContext__is_already_unreachable(self);
1404 var = var1;
1405 RET_LABEL:;
1406 return var;
1407 }
1408 /* method flow#FlowContext#is_already_unreachable= for (self: FlowContext, Bool) */
1409 void flow__FlowContext__is_already_unreachable_61d(val* self, short int p0) {
1410 self->attrs[COLOR_flow__FlowContext___64dis_already_unreachable].s = p0; /* @is_already_unreachable on <self:FlowContext> */
1411 RET_LABEL:;
1412 }
1413 /* method flow#FlowContext#is_already_unreachable= for (self: Object, Bool) */
1414 void VIRTUAL_flow__FlowContext__is_already_unreachable_61d(val* self, short int p0) {
1415 flow__FlowContext__is_already_unreachable_61d(self, p0);
1416 RET_LABEL:;
1417 }
1418 /* method flow#FlowContext#is_start for (self: FlowContext): Bool */
1419 short int flow__FlowContext__is_start(val* self) {
1420 short int var /* : Bool */;
1421 short int var1 /* : Bool */;
1422 var1 = self->attrs[COLOR_flow__FlowContext___64dis_start].s; /* @is_start on <self:FlowContext> */
1423 var = var1;
1424 RET_LABEL:;
1425 return var;
1426 }
1427 /* method flow#FlowContext#is_start for (self: Object): Bool */
1428 short int VIRTUAL_flow__FlowContext__is_start(val* self) {
1429 short int var /* : Bool */;
1430 short int var1 /* : Bool */;
1431 var1 = flow__FlowContext__is_start(self);
1432 var = var1;
1433 RET_LABEL:;
1434 return var;
1435 }
1436 /* method flow#FlowContext#is_start= for (self: FlowContext, Bool) */
1437 void flow__FlowContext__is_start_61d(val* self, short int p0) {
1438 self->attrs[COLOR_flow__FlowContext___64dis_start].s = p0; /* @is_start on <self:FlowContext> */
1439 RET_LABEL:;
1440 }
1441 /* method flow#FlowContext#is_start= for (self: Object, Bool) */
1442 void VIRTUAL_flow__FlowContext__is_start_61d(val* self, short int p0) {
1443 flow__FlowContext__is_start_61d(self, p0);
1444 RET_LABEL:;
1445 }
1446 /* method flow#FlowContext#node for (self: FlowContext): nullable ANode */
1447 val* flow__FlowContext__node(val* self) {
1448 val* var /* : nullable ANode */;
1449 val* var1 /* : nullable ANode */;
1450 var1 = self->attrs[COLOR_flow__FlowContext___64dnode].val; /* @node on <self:FlowContext> */
1451 var = var1;
1452 RET_LABEL:;
1453 return var;
1454 }
1455 /* method flow#FlowContext#node for (self: Object): nullable ANode */
1456 val* VIRTUAL_flow__FlowContext__node(val* self) {
1457 val* var /* : nullable ANode */;
1458 val* var1 /* : nullable ANode */;
1459 var1 = flow__FlowContext__node(self);
1460 var = var1;
1461 RET_LABEL:;
1462 return var;
1463 }
1464 /* method flow#FlowContext#node= for (self: FlowContext, nullable ANode) */
1465 void flow__FlowContext__node_61d(val* self, val* p0) {
1466 self->attrs[COLOR_flow__FlowContext___64dnode].val = p0; /* @node on <self:FlowContext> */
1467 RET_LABEL:;
1468 }
1469 /* method flow#FlowContext#node= for (self: Object, nullable ANode) */
1470 void VIRTUAL_flow__FlowContext__node_61d(val* self, val* p0) {
1471 flow__FlowContext__node_61d(self, p0);
1472 RET_LABEL:;
1473 }
1474 /* method flow#FlowContext#name for (self: FlowContext): String */
1475 val* flow__FlowContext__name(val* self) {
1476 val* var /* : String */;
1477 val* var1 /* : String */;
1478 var1 = self->attrs[COLOR_flow__FlowContext___64dname].val; /* @name on <self:FlowContext> */
1479 if (var1 == NULL) {
1480 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @name");
1481 fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 225);
1482 show_backtrace(1);
1483 }
1484 var = var1;
1485 RET_LABEL:;
1486 return var;
1487 }
1488 /* method flow#FlowContext#name for (self: Object): String */
1489 val* VIRTUAL_flow__FlowContext__name(val* self) {
1490 val* var /* : String */;
1491 val* var1 /* : String */;
1492 var1 = flow__FlowContext__name(self);
1493 var = var1;
1494 RET_LABEL:;
1495 return var;
1496 }
1497 /* method flow#FlowContext#name= for (self: FlowContext, String) */
1498 void flow__FlowContext__name_61d(val* self, val* p0) {
1499 self->attrs[COLOR_flow__FlowContext___64dname].val = p0; /* @name on <self:FlowContext> */
1500 RET_LABEL:;
1501 }
1502 /* method flow#FlowContext#name= for (self: Object, String) */
1503 void VIRTUAL_flow__FlowContext__name_61d(val* self, val* p0) {
1504 flow__FlowContext__name_61d(self, p0);
1505 RET_LABEL:;
1506 }
1507 /* method flow#FlowContext#when_true for (self: FlowContext): FlowContext */
1508 val* flow__FlowContext__when_true(val* self) {
1509 val* var /* : FlowContext */;
1510 val* var1 /* : FlowContext */;
1511 var1 = self->attrs[COLOR_flow__FlowContext___64dwhen_true].val; /* @when_true on <self:FlowContext> */
1512 if (var1 == NULL) {
1513 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @when_true");
1514 fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 228);
1515 show_backtrace(1);
1516 }
1517 var = var1;
1518 RET_LABEL:;
1519 return var;
1520 }
1521 /* method flow#FlowContext#when_true for (self: Object): FlowContext */
1522 val* VIRTUAL_flow__FlowContext__when_true(val* self) {
1523 val* var /* : FlowContext */;
1524 val* var1 /* : FlowContext */;
1525 var1 = flow__FlowContext__when_true(self);
1526 var = var1;
1527 RET_LABEL:;
1528 return var;
1529 }
1530 /* method flow#FlowContext#when_true= for (self: FlowContext, FlowContext) */
1531 void flow__FlowContext__when_true_61d(val* self, val* p0) {
1532 self->attrs[COLOR_flow__FlowContext___64dwhen_true].val = p0; /* @when_true on <self:FlowContext> */
1533 RET_LABEL:;
1534 }
1535 /* method flow#FlowContext#when_true= for (self: Object, FlowContext) */
1536 void VIRTUAL_flow__FlowContext__when_true_61d(val* self, val* p0) {
1537 flow__FlowContext__when_true_61d(self, p0);
1538 RET_LABEL:;
1539 }
1540 /* method flow#FlowContext#when_false for (self: FlowContext): FlowContext */
1541 val* flow__FlowContext__when_false(val* self) {
1542 val* var /* : FlowContext */;
1543 val* var1 /* : FlowContext */;
1544 var1 = self->attrs[COLOR_flow__FlowContext___64dwhen_false].val; /* @when_false on <self:FlowContext> */
1545 if (var1 == NULL) {
1546 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @when_false");
1547 fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 231);
1548 show_backtrace(1);
1549 }
1550 var = var1;
1551 RET_LABEL:;
1552 return var;
1553 }
1554 /* method flow#FlowContext#when_false for (self: Object): FlowContext */
1555 val* VIRTUAL_flow__FlowContext__when_false(val* self) {
1556 val* var /* : FlowContext */;
1557 val* var1 /* : FlowContext */;
1558 var1 = flow__FlowContext__when_false(self);
1559 var = var1;
1560 RET_LABEL:;
1561 return var;
1562 }
1563 /* method flow#FlowContext#when_false= for (self: FlowContext, FlowContext) */
1564 void flow__FlowContext__when_false_61d(val* self, val* p0) {
1565 self->attrs[COLOR_flow__FlowContext___64dwhen_false].val = p0; /* @when_false on <self:FlowContext> */
1566 RET_LABEL:;
1567 }
1568 /* method flow#FlowContext#when_false= for (self: Object, FlowContext) */
1569 void VIRTUAL_flow__FlowContext__when_false_61d(val* self, val* p0) {
1570 flow__FlowContext__when_false_61d(self, p0);
1571 RET_LABEL:;
1572 }
1573 /* method flow#FlowContext#add_previous for (self: FlowContext, FlowContext) */
1574 void flow__FlowContext__add_previous(val* self, val* p0) {
1575 val* var_flow /* var flow: FlowContext */;
1576 short int var /* : Bool */;
1577 short int var1 /* : Bool */;
1578 short int var2 /* : Bool */;
1579 short int var_ /* var : Bool */;
1580 val* var3 /* : Array[FlowContext] */;
1581 short int var4 /* : Bool */;
1582 short int var5 /* : Bool */;
1583 val* var6 /* : Array[FlowContext] */;
1584 var_flow = p0;
1585 var1 = ((short int (*)(val*))(var_flow->class->vft[COLOR_flow__FlowContext__is_unreachable]))(var_flow) /* is_unreachable on <var_flow:FlowContext>*/;
1586 var2 = !var1;
1587 var_ = var2;
1588 if (var2){
1589 var3 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowContext__previous]))(self) /* previous on <self:FlowContext>*/;
1590 var4 = ((short int (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__Collection__has]))(var3, var_flow) /* has on <var3:Array[FlowContext]>*/;
1591 var5 = !var4;
1592 var = var5;
1593 } else {
1594 var = var_;
1595 }
1596 if (var){
1597 var6 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowContext__previous]))(self) /* previous on <self:FlowContext>*/;
1598 ((void (*)(val*, val*))(var6->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var6, var_flow) /* add on <var6:Array[FlowContext]>*/;
1599 } else {
1600 }
1601 RET_LABEL:;
1602 }
1603 /* method flow#FlowContext#add_previous for (self: Object, FlowContext) */
1604 void VIRTUAL_flow__FlowContext__add_previous(val* self, val* p0) {
1605 flow__FlowContext__add_previous(self, p0);
1606 RET_LABEL:;
1607 }
1608 /* method flow#FlowContext#add_loop for (self: FlowContext, FlowContext) */
1609 void flow__FlowContext__add_loop(val* self, val* p0) {
1610 val* var_flow /* var flow: FlowContext */;
1611 short int var /* : Bool */;
1612 short int var1 /* : Bool */;
1613 short int var2 /* : Bool */;
1614 short int var_ /* var : Bool */;
1615 val* var3 /* : Array[FlowContext] */;
1616 short int var4 /* : Bool */;
1617 short int var5 /* : Bool */;
1618 val* var6 /* : Array[FlowContext] */;
1619 var_flow = p0;
1620 var1 = ((short int (*)(val*))(var_flow->class->vft[COLOR_flow__FlowContext__is_unreachable]))(var_flow) /* is_unreachable on <var_flow:FlowContext>*/;
1621 var2 = !var1;
1622 var_ = var2;
1623 if (var2){
1624 var3 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowContext__previous]))(self) /* previous on <self:FlowContext>*/;
1625 var4 = ((short int (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__Collection__has]))(var3, var_flow) /* has on <var3:Array[FlowContext]>*/;
1626 var5 = !var4;
1627 var = var5;
1628 } else {
1629 var = var_;
1630 }
1631 if (var){
1632 var6 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowContext__loops]))(self) /* loops on <self:FlowContext>*/;
1633 ((void (*)(val*, val*))(var6->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var6, var_flow) /* add on <var6:Array[FlowContext]>*/;
1634 } else {
1635 }
1636 RET_LABEL:;
1637 }
1638 /* method flow#FlowContext#add_loop for (self: Object, FlowContext) */
1639 void VIRTUAL_flow__FlowContext__add_loop(val* self, val* p0) {
1640 flow__FlowContext__add_loop(self, p0);
1641 RET_LABEL:;
1642 }
1643 /* method flow#FlowContext#init for (self: FlowContext) */
1644 void flow__FlowContext__init(val* self) {
1645 RET_LABEL:;
1646 }
1647 /* method flow#FlowContext#init for (self: Object) */
1648 void VIRTUAL_flow__FlowContext__init(val* self) {
1649 flow__FlowContext__init(self);
1650 RET_LABEL:;
1651 }
1652 /* method flow#ANode#accept_flow_visitor for (self: ANode, FlowVisitor) */
1653 void flow__ANode__accept_flow_visitor(val* self, val* p0) {
1654 val* var_v /* var v: FlowVisitor */;
1655 var_v = p0;
1656 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__visit_all]))(self, var_v) /* visit_all on <self:ANode>*/;
1657 RET_LABEL:;
1658 }
1659 /* method flow#ANode#accept_flow_visitor for (self: Object, FlowVisitor) */
1660 void VIRTUAL_flow__ANode__accept_flow_visitor(val* self, val* p0) {
1661 flow__ANode__accept_flow_visitor(self, p0);
1662 RET_LABEL:;
1663 }
1664 /* method flow#APropdef#do_flow for (self: APropdef, ToolContext) */
1665 void flow__APropdef__do_flow(val* self, val* p0) {
1666 val* var_toolcontext /* var toolcontext: ToolContext */;
1667 val* var /* : FlowVisitor */;
1668 val* var_v /* var v: FlowVisitor */;
1669 var_toolcontext = p0;
1670 var = NEW_flow__FlowVisitor(&type_flow__FlowVisitor);
1671 ((void (*)(val*, val*))(var->class->vft[COLOR_flow__FlowVisitor__init]))(var, var_toolcontext) /* init on <var:FlowVisitor>*/;
1672 var_v = var;
1673 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, self) /* enter_visit on <var_v:FlowVisitor>*/;
1674 RET_LABEL:;
1675 }
1676 /* method flow#APropdef#do_flow for (self: Object, ToolContext) */
1677 void VIRTUAL_flow__APropdef__do_flow(val* self, val* p0) {
1678 flow__APropdef__do_flow(self, p0);
1679 RET_LABEL:;
1680 }
1681 /* method flow#APropdef#before_flow_context for (self: APropdef): nullable FlowContext */
1682 val* flow__APropdef__before_flow_context(val* self) {
1683 val* var /* : nullable FlowContext */;
1684 val* var1 /* : nullable FlowContext */;
1685 var1 = self->attrs[COLOR_flow__APropdef___64dbefore_flow_context].val; /* @before_flow_context on <self:APropdef> */
1686 var = var1;
1687 RET_LABEL:;
1688 return var;
1689 }
1690 /* method flow#APropdef#before_flow_context for (self: Object): nullable FlowContext */
1691 val* VIRTUAL_flow__APropdef__before_flow_context(val* self) {
1692 val* var /* : nullable FlowContext */;
1693 val* var1 /* : nullable FlowContext */;
1694 var1 = flow__APropdef__before_flow_context(self);
1695 var = var1;
1696 RET_LABEL:;
1697 return var;
1698 }
1699 /* method flow#APropdef#before_flow_context= for (self: APropdef, nullable FlowContext) */
1700 void flow__APropdef__before_flow_context_61d(val* self, val* p0) {
1701 self->attrs[COLOR_flow__APropdef___64dbefore_flow_context].val = p0; /* @before_flow_context on <self:APropdef> */
1702 RET_LABEL:;
1703 }
1704 /* method flow#APropdef#before_flow_context= for (self: Object, nullable FlowContext) */
1705 void VIRTUAL_flow__APropdef__before_flow_context_61d(val* self, val* p0) {
1706 flow__APropdef__before_flow_context_61d(self, p0);
1707 RET_LABEL:;
1708 }
1709 /* method flow#APropdef#after_flow_context for (self: APropdef): nullable FlowContext */
1710 val* flow__APropdef__after_flow_context(val* self) {
1711 val* var /* : nullable FlowContext */;
1712 val* var1 /* : nullable FlowContext */;
1713 var1 = self->attrs[COLOR_flow__APropdef___64dafter_flow_context].val; /* @after_flow_context on <self:APropdef> */
1714 var = var1;
1715 RET_LABEL:;
1716 return var;
1717 }
1718 /* method flow#APropdef#after_flow_context for (self: Object): nullable FlowContext */
1719 val* VIRTUAL_flow__APropdef__after_flow_context(val* self) {
1720 val* var /* : nullable FlowContext */;
1721 val* var1 /* : nullable FlowContext */;
1722 var1 = flow__APropdef__after_flow_context(self);
1723 var = var1;
1724 RET_LABEL:;
1725 return var;
1726 }
1727 /* method flow#APropdef#after_flow_context= for (self: APropdef, nullable FlowContext) */
1728 void flow__APropdef__after_flow_context_61d(val* self, val* p0) {
1729 self->attrs[COLOR_flow__APropdef___64dafter_flow_context].val = p0; /* @after_flow_context on <self:APropdef> */
1730 RET_LABEL:;
1731 }
1732 /* method flow#APropdef#after_flow_context= for (self: Object, nullable FlowContext) */
1733 void VIRTUAL_flow__APropdef__after_flow_context_61d(val* self, val* p0) {
1734 flow__APropdef__after_flow_context_61d(self, p0);
1735 RET_LABEL:;
1736 }
1737 /* method flow#APropdef#accept_flow_visitor for (self: APropdef, FlowVisitor) */
1738 void flow__APropdef__accept_flow_visitor(val* self, val* p0) {
1739 val* var_v /* var v: FlowVisitor */;
1740 val* var /* : FlowContext */;
1741 val* var1 /* : FlowContext */;
1742 var_v = p0;
1743 var = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(var_v) /* current_flow_context on <var_v:FlowVisitor>*/;
1744 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__APropdef__before_flow_context_61d]))(self, var) /* before_flow_context= on <self:APropdef>*/;
1745 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__APropdef__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:APropdef>*/;
1746 var1 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(var_v) /* current_flow_context on <var_v:FlowVisitor>*/;
1747 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__APropdef__after_flow_context_61d]))(self, var1) /* after_flow_context= on <self:APropdef>*/;
1748 RET_LABEL:;
1749 }
1750 /* method flow#APropdef#accept_flow_visitor for (self: Object, FlowVisitor) */
1751 void VIRTUAL_flow__APropdef__accept_flow_visitor(val* self, val* p0) {
1752 flow__APropdef__accept_flow_visitor(self, p0);
1753 RET_LABEL:;
1754 }
1755 /* method flow#AExpr#after_flow_context for (self: AExpr): nullable FlowContext */
1756 val* flow__AExpr__after_flow_context(val* self) {
1757 val* var /* : nullable FlowContext */;
1758 val* var1 /* : nullable FlowContext */;
1759 var1 = self->attrs[COLOR_flow__AExpr___64dafter_flow_context].val; /* @after_flow_context on <self:AExpr> */
1760 var = var1;
1761 RET_LABEL:;
1762 return var;
1763 }
1764 /* method flow#AExpr#after_flow_context for (self: Object): nullable FlowContext */
1765 val* VIRTUAL_flow__AExpr__after_flow_context(val* self) {
1766 val* var /* : nullable FlowContext */;
1767 val* var1 /* : nullable FlowContext */;
1768 var1 = flow__AExpr__after_flow_context(self);
1769 var = var1;
1770 RET_LABEL:;
1771 return var;
1772 }
1773 /* method flow#AExpr#after_flow_context= for (self: AExpr, nullable FlowContext) */
1774 void flow__AExpr__after_flow_context_61d(val* self, val* p0) {
1775 self->attrs[COLOR_flow__AExpr___64dafter_flow_context].val = p0; /* @after_flow_context on <self:AExpr> */
1776 RET_LABEL:;
1777 }
1778 /* method flow#AExpr#after_flow_context= for (self: Object, nullable FlowContext) */
1779 void VIRTUAL_flow__AExpr__after_flow_context_61d(val* self, val* p0) {
1780 flow__AExpr__after_flow_context_61d(self, p0);
1781 RET_LABEL:;
1782 }
1783 /* method flow#AVarAssignExpr#accept_flow_visitor for (self: AVarAssignExpr, FlowVisitor) */
1784 void flow__AVarAssignExpr__accept_flow_visitor(val* self, val* p0) {
1785 val* var_v /* var v: FlowVisitor */;
1786 val* var /* : FlowContext */;
1787 var_v = p0;
1788 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__AVarAssignExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:AVarAssignExpr>*/;
1789 var = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_sub_flow]))(var_v) /* make_sub_flow on <var_v:FlowVisitor>*/;
1790 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context_61d]))(self, var) /* after_flow_context= on <self:AVarAssignExpr>*/;
1791 RET_LABEL:;
1792 }
1793 /* method flow#AVarAssignExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
1794 void VIRTUAL_flow__AVarAssignExpr__accept_flow_visitor(val* self, val* p0) {
1795 flow__AVarAssignExpr__accept_flow_visitor(self, p0);
1796 RET_LABEL:;
1797 }
1798 /* method flow#AReassignFormExpr#accept_flow_visitor for (self: AReassignFormExpr, FlowVisitor) */
1799 void flow__AReassignFormExpr__accept_flow_visitor(val* self, val* p0) {
1800 val* var_v /* var v: FlowVisitor */;
1801 val* var /* : FlowContext */;
1802 var_v = p0;
1803 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__AReassignFormExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:AReassignFormExpr>*/;
1804 var = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_sub_flow]))(var_v) /* make_sub_flow on <var_v:FlowVisitor>*/;
1805 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context_61d]))(self, var) /* after_flow_context= on <self:AReassignFormExpr>*/;
1806 RET_LABEL:;
1807 }
1808 /* method flow#AReassignFormExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
1809 void VIRTUAL_flow__AReassignFormExpr__accept_flow_visitor(val* self, val* p0) {
1810 flow__AReassignFormExpr__accept_flow_visitor(self, p0);
1811 RET_LABEL:;
1812 }
1813 /* method flow#ABlockExpr#accept_flow_visitor for (self: ABlockExpr, FlowVisitor) */
1814 void flow__ABlockExpr__accept_flow_visitor(val* self, val* p0) {
1815 val* var_v /* var v: FlowVisitor */;
1816 val* var /* : ANodes[AExpr] */;
1817 val* var1 /* : Iterator[nullable Object] */;
1818 short int var2 /* : Bool */;
1819 val* var3 /* : nullable Object */;
1820 val* var_e /* var e: AExpr */;
1821 val* var4 /* : FlowContext */;
1822 short int var5 /* : Bool */;
1823 short int var6 /* : Bool */;
1824 val* var7 /* : FlowContext */;
1825 short int var8 /* : Bool */;
1826 short int var9 /* : Bool */;
1827 val* var10 /* : FlowContext */;
1828 short int var11 /* : Bool */;
1829 val* var12 /* : ToolContext */;
1830 val* var13 /* : Location */;
1831 static val* varonce;
1832 val* var14 /* : String */;
1833 char* var15 /* : NativeString */;
1834 long var16 /* : Int */;
1835 val* var17 /* : String */;
1836 var_v = p0;
1837 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABlockExpr__n_expr]))(self) /* n_expr on <self:ABlockExpr>*/;
1838 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_collection__Collection__iterator]))(var) /* iterator on <var:ANodes[AExpr]>*/;
1839 for(;;) {
1840 var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var1) /* is_ok on <var1:Iterator[nullable Object]>*/;
1841 if(!var2) break;
1842 var3 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__item]))(var1) /* item on <var1:Iterator[nullable Object]>*/;
1843 var_e = var3;
1844 var4 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(var_v) /* current_flow_context on <var_v:FlowVisitor>*/;
1845 var5 = ((short int (*)(val*))(var4->class->vft[COLOR_flow__FlowContext__is_unreachable]))(var4) /* is_unreachable on <var4:FlowContext>*/;
1846 var6 = !var5;
1847 if (var6){
1848 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var_e) /* enter_visit on <var_v:FlowVisitor>*/;
1849 } else {
1850 var7 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(var_v) /* current_flow_context on <var_v:FlowVisitor>*/;
1851 var8 = ((short int (*)(val*))(var7->class->vft[COLOR_flow__FlowContext__is_already_unreachable]))(var7) /* is_already_unreachable on <var7:FlowContext>*/;
1852 var9 = !var8;
1853 if (var9){
1854 var10 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(var_v) /* current_flow_context on <var_v:FlowVisitor>*/;
1855 var11 = 1;
1856 ((void (*)(val*, short int))(var10->class->vft[COLOR_flow__FlowContext__is_already_unreachable_61d]))(var10, var11) /* is_already_unreachable= on <var10:FlowContext>*/;
1857 var12 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__toolcontext]))(var_v) /* toolcontext on <var_v:FlowVisitor>*/;
1858 var13 = ((val* (*)(val*))(var_e->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_e) /* hot_location on <var_e:AExpr>*/;
1859 if (varonce) {
1860 var14 = varonce;
1861 } else {
1862 var15 = "Error: unreachable statement.";
1863 var16 = 29;
1864 var17 = string__NativeString__to_s_with_length(var15, var16);
1865 var14 = var17;
1866 varonce = var14;
1867 }
1868 ((void (*)(val*, val*, val*))(var12->class->vft[COLOR_toolcontext__ToolContext__error]))(var12, var13, var14) /* error on <var12:ToolContext>*/;
1869 } else {
1870 }
1871 }
1872 CONTINUE_label: (void)0;
1873 ((void (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__next]))(var1) /* next on <var1:Iterator[nullable Object]>*/;
1874 }
1875 BREAK_label: (void)0;
1876 RET_LABEL:;
1877 }
1878 /* method flow#ABlockExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
1879 void VIRTUAL_flow__ABlockExpr__accept_flow_visitor(val* self, val* p0) {
1880 flow__ABlockExpr__accept_flow_visitor(self, p0);
1881 RET_LABEL:;
1882 }
1883 /* method flow#AReturnExpr#accept_flow_visitor for (self: AReturnExpr, FlowVisitor) */
1884 void flow__AReturnExpr__accept_flow_visitor(val* self, val* p0) {
1885 val* var_v /* var v: FlowVisitor */;
1886 val* var /* : FlowContext */;
1887 var_v = p0;
1888 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__AReturnExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:AReturnExpr>*/;
1889 var = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_unreachable_flow]))(var_v) /* make_unreachable_flow on <var_v:FlowVisitor>*/;
1890 var;
1891 RET_LABEL:;
1892 }
1893 /* method flow#AReturnExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
1894 void VIRTUAL_flow__AReturnExpr__accept_flow_visitor(val* self, val* p0) {
1895 flow__AReturnExpr__accept_flow_visitor(self, p0);
1896 RET_LABEL:;
1897 }
1898 /* method flow#AContinueExpr#before_flow_context for (self: AContinueExpr): nullable FlowContext */
1899 val* flow__AContinueExpr__before_flow_context(val* self) {
1900 val* var /* : nullable FlowContext */;
1901 val* var1 /* : nullable FlowContext */;
1902 val* var_after /* var after: nullable FlowContext */;
1903 val* var2 /* : null */;
1904 short int var3 /* : Bool */;
1905 val* var4 /* : null */;
1906 val* var5 /* : Array[FlowContext] */;
1907 val* var6 /* : nullable Object */;
1908 var1 = ((val* (*)(val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context]))(self) /* after_flow_context on <self:AContinueExpr>*/;
1909 var_after = var1;
1910 var2 = NULL;
1911 if (var_after == NULL) {
1912 var3 = 1; /* is null */
1913 } else {
1914 var3 = 0; /* arg is null but recv is not */
1915 }
1916 if (var3){
1917 var4 = NULL;
1918 var = var4;
1919 goto RET_LABEL;
1920 } else {
1921 }
1922 var5 = ((val* (*)(val*))(var_after->class->vft[COLOR_flow__FlowContext__previous]))(var_after) /* previous on <var_after:nullable FlowContext(FlowContext)>*/;
1923 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Collection__first]))(var5) /* first on <var5:Array[FlowContext]>*/;
1924 var = var6;
1925 goto RET_LABEL;
1926 RET_LABEL:;
1927 return var;
1928 }
1929 /* method flow#AContinueExpr#before_flow_context for (self: Object): nullable FlowContext */
1930 val* VIRTUAL_flow__AContinueExpr__before_flow_context(val* self) {
1931 val* var /* : nullable FlowContext */;
1932 val* var1 /* : nullable FlowContext */;
1933 var1 = flow__AContinueExpr__before_flow_context(self);
1934 var = var1;
1935 RET_LABEL:;
1936 return var;
1937 }
1938 /* method flow#AContinueExpr#accept_flow_visitor for (self: AContinueExpr, FlowVisitor) */
1939 void flow__AContinueExpr__accept_flow_visitor(val* self, val* p0) {
1940 val* var_v /* var v: FlowVisitor */;
1941 val* var /* : FlowContext */;
1942 var_v = p0;
1943 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__AContinueExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:AContinueExpr>*/;
1944 var = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_unreachable_flow]))(var_v) /* make_unreachable_flow on <var_v:FlowVisitor>*/;
1945 var;
1946 RET_LABEL:;
1947 }
1948 /* method flow#AContinueExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
1949 void VIRTUAL_flow__AContinueExpr__accept_flow_visitor(val* self, val* p0) {
1950 flow__AContinueExpr__accept_flow_visitor(self, p0);
1951 RET_LABEL:;
1952 }
1953 /* method flow#ABreakExpr#before_flow_context for (self: ABreakExpr): nullable FlowContext */
1954 val* flow__ABreakExpr__before_flow_context(val* self) {
1955 val* var /* : nullable FlowContext */;
1956 val* var1 /* : nullable FlowContext */;
1957 val* var_after /* var after: nullable FlowContext */;
1958 val* var2 /* : null */;
1959 short int var3 /* : Bool */;
1960 val* var4 /* : null */;
1961 val* var5 /* : Array[FlowContext] */;
1962 val* var6 /* : nullable Object */;
1963 var1 = ((val* (*)(val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context]))(self) /* after_flow_context on <self:ABreakExpr>*/;
1964 var_after = var1;
1965 var2 = NULL;
1966 if (var_after == NULL) {
1967 var3 = 1; /* is null */
1968 } else {
1969 var3 = 0; /* arg is null but recv is not */
1970 }
1971 if (var3){
1972 var4 = NULL;
1973 var = var4;
1974 goto RET_LABEL;
1975 } else {
1976 }
1977 var5 = ((val* (*)(val*))(var_after->class->vft[COLOR_flow__FlowContext__previous]))(var_after) /* previous on <var_after:nullable FlowContext(FlowContext)>*/;
1978 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Collection__first]))(var5) /* first on <var5:Array[FlowContext]>*/;
1979 var = var6;
1980 goto RET_LABEL;
1981 RET_LABEL:;
1982 return var;
1983 }
1984 /* method flow#ABreakExpr#before_flow_context for (self: Object): nullable FlowContext */
1985 val* VIRTUAL_flow__ABreakExpr__before_flow_context(val* self) {
1986 val* var /* : nullable FlowContext */;
1987 val* var1 /* : nullable FlowContext */;
1988 var1 = flow__ABreakExpr__before_flow_context(self);
1989 var = var1;
1990 RET_LABEL:;
1991 return var;
1992 }
1993 /* method flow#ABreakExpr#accept_flow_visitor for (self: ABreakExpr, FlowVisitor) */
1994 void flow__ABreakExpr__accept_flow_visitor(val* self, val* p0) {
1995 val* var_v /* var v: FlowVisitor */;
1996 val* var /* : FlowContext */;
1997 var_v = p0;
1998 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__ABreakExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:ABreakExpr>*/;
1999 var = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_unreachable_flow]))(var_v) /* make_unreachable_flow on <var_v:FlowVisitor>*/;
2000 var;
2001 RET_LABEL:;
2002 }
2003 /* method flow#ABreakExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2004 void VIRTUAL_flow__ABreakExpr__accept_flow_visitor(val* self, val* p0) {
2005 flow__ABreakExpr__accept_flow_visitor(self, p0);
2006 RET_LABEL:;
2007 }
2008 /* method flow#AAbortExpr#accept_flow_visitor for (self: AAbortExpr, FlowVisitor) */
2009 void flow__AAbortExpr__accept_flow_visitor(val* self, val* p0) {
2010 val* var_v /* var v: FlowVisitor */;
2011 val* var /* : FlowContext */;
2012 var_v = p0;
2013 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__AAbortExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:AAbortExpr>*/;
2014 var = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_unreachable_flow]))(var_v) /* make_unreachable_flow on <var_v:FlowVisitor>*/;
2015 var;
2016 RET_LABEL:;
2017 }
2018 /* method flow#AAbortExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2019 void VIRTUAL_flow__AAbortExpr__accept_flow_visitor(val* self, val* p0) {
2020 flow__AAbortExpr__accept_flow_visitor(self, p0);
2021 RET_LABEL:;
2022 }
2023 /* method flow#ADoExpr#accept_flow_visitor for (self: ADoExpr, FlowVisitor) */
2024 void flow__ADoExpr__accept_flow_visitor(val* self, val* p0) {
2025 val* var_v /* var v: FlowVisitor */;
2026 val* var /* : nullable EscapeMark */;
2027 var_v = p0;
2028 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__ADoExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:ADoExpr>*/;
2029 var = ((val* (*)(val*))(self->class->vft[COLOR_scope__ADoExpr__escapemark]))(self) /* escapemark on <self:ADoExpr>*/;
2030 ((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__merge_breaks]))(var_v, var) /* merge_breaks on <var_v:FlowVisitor>*/;
2031 RET_LABEL:;
2032 }
2033 /* method flow#ADoExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2034 void VIRTUAL_flow__ADoExpr__accept_flow_visitor(val* self, val* p0) {
2035 flow__ADoExpr__accept_flow_visitor(self, p0);
2036 RET_LABEL:;
2037 }
2038 /* method flow#AIfExpr#accept_flow_visitor for (self: AIfExpr, FlowVisitor) */
2039 void flow__AIfExpr__accept_flow_visitor(val* self, val* p0) {
2040 val* var_v /* var v: FlowVisitor */;
2041 val* var /* : AExpr */;
2042 val* var1 /* : FlowContext */;
2043 val* var_after_expr /* var after_expr: FlowContext */;
2044 val* var2 /* : FlowContext */;
2045 val* var3 /* : nullable AExpr */;
2046 val* var4 /* : FlowContext */;
2047 val* var_after_then /* var after_then: FlowContext */;
2048 val* var5 /* : FlowContext */;
2049 val* var6 /* : nullable AExpr */;
2050 val* var7 /* : FlowContext */;
2051 val* var_after_else /* var after_else: FlowContext */;
2052 val* var8 /* : FlowContext */;
2053 var_v = p0;
2054 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfExpr__n_expr]))(self) /* n_expr on <self:AIfExpr>*/;
2055 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:FlowVisitor>*/;
2056 var_after_expr = var1;
2057 var2 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_true]))(var_after_expr) /* when_true on <var_after_expr:FlowContext>*/;
2058 ((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(var_v, var2) /* current_flow_context= on <var_v:FlowVisitor>*/;
2059 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfExpr__n_then]))(self) /* n_then on <self:AIfExpr>*/;
2060 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var3) /* enter_visit on <var_v:FlowVisitor>*/;
2061 var4 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(var_v) /* current_flow_context on <var_v:FlowVisitor>*/;
2062 var_after_then = var4;
2063 var5 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_false]))(var_after_expr) /* when_false on <var_after_expr:FlowContext>*/;
2064 ((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(var_v, var5) /* current_flow_context= on <var_v:FlowVisitor>*/;
2065 var6 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfExpr__n_else]))(self) /* n_else on <self:AIfExpr>*/;
2066 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var6) /* enter_visit on <var_v:FlowVisitor>*/;
2067 var7 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(var_v) /* current_flow_context on <var_v:FlowVisitor>*/;
2068 var_after_else = var7;
2069 var8 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_merge_flow]))(var_v, var_after_then, var_after_else) /* make_merge_flow on <var_v:FlowVisitor>*/;
2070 var8;
2071 RET_LABEL:;
2072 }
2073 /* method flow#AIfExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2074 void VIRTUAL_flow__AIfExpr__accept_flow_visitor(val* self, val* p0) {
2075 flow__AIfExpr__accept_flow_visitor(self, p0);
2076 RET_LABEL:;
2077 }
2078 /* method flow#AIfexprExpr#accept_flow_visitor for (self: AIfexprExpr, FlowVisitor) */
2079 void flow__AIfexprExpr__accept_flow_visitor(val* self, val* p0) {
2080 val* var_v /* var v: FlowVisitor */;
2081 val* var /* : AExpr */;
2082 val* var1 /* : FlowContext */;
2083 val* var_after_expr /* var after_expr: FlowContext */;
2084 val* var2 /* : FlowContext */;
2085 val* var3 /* : AExpr */;
2086 val* var4 /* : FlowContext */;
2087 val* var_after_then /* var after_then: FlowContext */;
2088 val* var5 /* : FlowContext */;
2089 val* var6 /* : AExpr */;
2090 val* var7 /* : FlowContext */;
2091 val* var_after_else /* var after_else: FlowContext */;
2092 val* var8 /* : FlowContext */;
2093 var_v = p0;
2094 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfexprExpr__n_expr]))(self) /* n_expr on <self:AIfexprExpr>*/;
2095 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:FlowVisitor>*/;
2096 var_after_expr = var1;
2097 var2 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_true]))(var_after_expr) /* when_true on <var_after_expr:FlowContext>*/;
2098 ((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(var_v, var2) /* current_flow_context= on <var_v:FlowVisitor>*/;
2099 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfexprExpr__n_then]))(self) /* n_then on <self:AIfexprExpr>*/;
2100 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var3) /* enter_visit on <var_v:FlowVisitor>*/;
2101 var4 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(var_v) /* current_flow_context on <var_v:FlowVisitor>*/;
2102 var_after_then = var4;
2103 var5 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_false]))(var_after_expr) /* when_false on <var_after_expr:FlowContext>*/;
2104 ((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(var_v, var5) /* current_flow_context= on <var_v:FlowVisitor>*/;
2105 var6 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfexprExpr__n_else]))(self) /* n_else on <self:AIfexprExpr>*/;
2106 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var6) /* enter_visit on <var_v:FlowVisitor>*/;
2107 var7 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(var_v) /* current_flow_context on <var_v:FlowVisitor>*/;
2108 var_after_else = var7;
2109 var8 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_merge_flow]))(var_v, var_after_then, var_after_else) /* make_merge_flow on <var_v:FlowVisitor>*/;
2110 var8;
2111 RET_LABEL:;
2112 }
2113 /* method flow#AIfexprExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2114 void VIRTUAL_flow__AIfexprExpr__accept_flow_visitor(val* self, val* p0) {
2115 flow__AIfexprExpr__accept_flow_visitor(self, p0);
2116 RET_LABEL:;
2117 }
2118 /* method flow#AWhileExpr#accept_flow_visitor for (self: AWhileExpr, FlowVisitor) */
2119 void flow__AWhileExpr__accept_flow_visitor(val* self, val* p0) {
2120 val* var_v /* var v: FlowVisitor */;
2121 val* var /* : FlowContext */;
2122 val* var_before_loop /* var before_loop: FlowContext */;
2123 val* var1 /* : AExpr */;
2124 val* var2 /* : FlowContext */;
2125 val* var_after_expr /* var after_expr: FlowContext */;
2126 val* var3 /* : FlowContext */;
2127 val* var4 /* : nullable AExpr */;
2128 val* var5 /* : FlowContext */;
2129 val* var_after_block /* var after_block: FlowContext */;
2130 val* var6 /* : nullable EscapeMark */;
2131 val* var7 /* : FlowContext */;
2132 val* var8 /* : nullable EscapeMark */;
2133 var_v = p0;
2134 var = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_sub_flow]))(var_v) /* make_sub_flow on <var_v:FlowVisitor>*/;
2135 var_before_loop = var;
2136 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AWhileExpr__n_expr]))(self) /* n_expr on <self:AWhileExpr>*/;
2137 var2 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__visit_expr]))(var_v, var1) /* visit_expr on <var_v:FlowVisitor>*/;
2138 var_after_expr = var2;
2139 var3 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_true]))(var_after_expr) /* when_true on <var_after_expr:FlowContext>*/;
2140 ((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(var_v, var3) /* current_flow_context= on <var_v:FlowVisitor>*/;
2141 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AWhileExpr__n_block]))(self) /* n_block on <self:AWhileExpr>*/;
2142 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var4) /* enter_visit on <var_v:FlowVisitor>*/;
2143 var5 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(var_v) /* current_flow_context on <var_v:FlowVisitor>*/;
2144 var_after_block = var5;
2145 ((void (*)(val*, val*))(var_before_loop->class->vft[COLOR_flow__FlowContext__add_loop]))(var_before_loop, var_after_block) /* add_loop on <var_before_loop:FlowContext>*/;
2146 var6 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AWhileExpr__escapemark]))(self) /* escapemark on <self:AWhileExpr>*/;
2147 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__merge_continues_to]))(var_v, var_after_block, var6) /* merge_continues_to on <var_v:FlowVisitor>*/;
2148 var7 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_false]))(var_after_expr) /* when_false on <var_after_expr:FlowContext>*/;
2149 ((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(var_v, var7) /* current_flow_context= on <var_v:FlowVisitor>*/;
2150 var8 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AWhileExpr__escapemark]))(self) /* escapemark on <self:AWhileExpr>*/;
2151 ((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__merge_breaks]))(var_v, var8) /* merge_breaks on <var_v:FlowVisitor>*/;
2152 RET_LABEL:;
2153 }
2154 /* method flow#AWhileExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2155 void VIRTUAL_flow__AWhileExpr__accept_flow_visitor(val* self, val* p0) {
2156 flow__AWhileExpr__accept_flow_visitor(self, p0);
2157 RET_LABEL:;
2158 }
2159 /* method flow#ALoopExpr#accept_flow_visitor for (self: ALoopExpr, FlowVisitor) */
2160 void flow__ALoopExpr__accept_flow_visitor(val* self, val* p0) {
2161 val* var_v /* var v: FlowVisitor */;
2162 val* var /* : FlowContext */;
2163 val* var_before_loop /* var before_loop: FlowContext */;
2164 val* var1 /* : nullable AExpr */;
2165 val* var2 /* : FlowContext */;
2166 val* var_after_block /* var after_block: FlowContext */;
2167 val* var3 /* : nullable EscapeMark */;
2168 val* var4 /* : FlowContext */;
2169 val* var5 /* : nullable EscapeMark */;
2170 var_v = p0;
2171 var = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_sub_flow]))(var_v) /* make_sub_flow on <var_v:FlowVisitor>*/;
2172 var_before_loop = var;
2173 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ALoopExpr__n_block]))(self) /* n_block on <self:ALoopExpr>*/;
2174 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var1) /* enter_visit on <var_v:FlowVisitor>*/;
2175 var2 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(var_v) /* current_flow_context on <var_v:FlowVisitor>*/;
2176 var_after_block = var2;
2177 ((void (*)(val*, val*))(var_before_loop->class->vft[COLOR_flow__FlowContext__add_loop]))(var_before_loop, var_after_block) /* add_loop on <var_before_loop:FlowContext>*/;
2178 var3 = ((val* (*)(val*))(self->class->vft[COLOR_scope__ALoopExpr__escapemark]))(self) /* escapemark on <self:ALoopExpr>*/;
2179 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__merge_continues_to]))(var_v, var_after_block, var3) /* merge_continues_to on <var_v:FlowVisitor>*/;
2180 var4 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_unreachable_flow]))(var_v) /* make_unreachable_flow on <var_v:FlowVisitor>*/;
2181 var4;
2182 var5 = ((val* (*)(val*))(self->class->vft[COLOR_scope__ALoopExpr__escapemark]))(self) /* escapemark on <self:ALoopExpr>*/;
2183 ((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__merge_breaks]))(var_v, var5) /* merge_breaks on <var_v:FlowVisitor>*/;
2184 RET_LABEL:;
2185 }
2186 /* method flow#ALoopExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2187 void VIRTUAL_flow__ALoopExpr__accept_flow_visitor(val* self, val* p0) {
2188 flow__ALoopExpr__accept_flow_visitor(self, p0);
2189 RET_LABEL:;
2190 }
2191 /* method flow#AForExpr#accept_flow_visitor for (self: AForExpr, FlowVisitor) */
2192 void flow__AForExpr__accept_flow_visitor(val* self, val* p0) {
2193 val* var_v /* var v: FlowVisitor */;
2194 val* var /* : AExpr */;
2195 val* var1 /* : FlowContext */;
2196 val* var_before_loop /* var before_loop: FlowContext */;
2197 val* var2 /* : nullable AExpr */;
2198 val* var3 /* : FlowContext */;
2199 val* var_after_block /* var after_block: FlowContext */;
2200 val* var4 /* : nullable EscapeMark */;
2201 val* var5 /* : FlowContext */;
2202 val* var6 /* : FlowContext */;
2203 val* var7 /* : nullable EscapeMark */;
2204 var_v = p0;
2205 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AForExpr__n_expr]))(self) /* n_expr on <self:AForExpr>*/;
2206 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:FlowVisitor>*/;
2207 var1 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_sub_flow]))(var_v) /* make_sub_flow on <var_v:FlowVisitor>*/;
2208 var_before_loop = var1;
2209 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AForExpr__n_block]))(self) /* n_block on <self:AForExpr>*/;
2210 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var2) /* enter_visit on <var_v:FlowVisitor>*/;
2211 var3 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(var_v) /* current_flow_context on <var_v:FlowVisitor>*/;
2212 var_after_block = var3;
2213 ((void (*)(val*, val*))(var_before_loop->class->vft[COLOR_flow__FlowContext__add_loop]))(var_before_loop, var_after_block) /* add_loop on <var_before_loop:FlowContext>*/;
2214 var4 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AForExpr__escapemark]))(self) /* escapemark on <self:AForExpr>*/;
2215 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__merge_continues_to]))(var_v, var_after_block, var4) /* merge_continues_to on <var_v:FlowVisitor>*/;
2216 var5 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(var_v) /* current_flow_context on <var_v:FlowVisitor>*/;
2217 var6 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_merge_flow]))(var_v, var5, var_before_loop) /* make_merge_flow on <var_v:FlowVisitor>*/;
2218 var6;
2219 var7 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AForExpr__escapemark]))(self) /* escapemark on <self:AForExpr>*/;
2220 ((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__merge_breaks]))(var_v, var7) /* merge_breaks on <var_v:FlowVisitor>*/;
2221 RET_LABEL:;
2222 }
2223 /* method flow#AForExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2224 void VIRTUAL_flow__AForExpr__accept_flow_visitor(val* self, val* p0) {
2225 flow__AForExpr__accept_flow_visitor(self, p0);
2226 RET_LABEL:;
2227 }
2228 /* method flow#AAssertExpr#accept_flow_visitor for (self: AAssertExpr, FlowVisitor) */
2229 void flow__AAssertExpr__accept_flow_visitor(val* self, val* p0) {
2230 val* var_v /* var v: FlowVisitor */;
2231 val* var /* : AExpr */;
2232 val* var1 /* : FlowContext */;
2233 val* var_after_expr /* var after_expr: FlowContext */;
2234 val* var2 /* : FlowContext */;
2235 val* var3 /* : nullable AExpr */;
2236 val* var4 /* : FlowContext */;
2237 var_v = p0;
2238 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssertExpr__n_expr]))(self) /* n_expr on <self:AAssertExpr>*/;
2239 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:FlowVisitor>*/;
2240 var_after_expr = var1;
2241 var2 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_false]))(var_after_expr) /* when_false on <var_after_expr:FlowContext>*/;
2242 ((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(var_v, var2) /* current_flow_context= on <var_v:FlowVisitor>*/;
2243 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssertExpr__n_else]))(self) /* n_else on <self:AAssertExpr>*/;
2244 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var3) /* enter_visit on <var_v:FlowVisitor>*/;
2245 var4 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_true]))(var_after_expr) /* when_true on <var_after_expr:FlowContext>*/;
2246 ((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(var_v, var4) /* current_flow_context= on <var_v:FlowVisitor>*/;
2247 RET_LABEL:;
2248 }
2249 /* method flow#AAssertExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2250 void VIRTUAL_flow__AAssertExpr__accept_flow_visitor(val* self, val* p0) {
2251 flow__AAssertExpr__accept_flow_visitor(self, p0);
2252 RET_LABEL:;
2253 }
2254 /* method flow#AOrExpr#accept_flow_visitor for (self: AOrExpr, FlowVisitor) */
2255 void flow__AOrExpr__accept_flow_visitor(val* self, val* p0) {
2256 val* var_v /* var v: FlowVisitor */;
2257 val* var /* : AExpr */;
2258 val* var1 /* : FlowContext */;
2259 val* var_after_expr /* var after_expr: FlowContext */;
2260 val* var2 /* : FlowContext */;
2261 val* var3 /* : AExpr */;
2262 val* var4 /* : FlowContext */;
2263 val* var_after_expr2 /* var after_expr2: FlowContext */;
2264 val* var5 /* : FlowContext */;
2265 val* var6 /* : FlowContext */;
2266 val* var7 /* : FlowContext */;
2267 val* var_merge_true /* var merge_true: FlowContext */;
2268 static val* varonce;
2269 val* var8 /* : String */;
2270 char* var9 /* : NativeString */;
2271 long var10 /* : Int */;
2272 val* var11 /* : String */;
2273 val* var12 /* : FlowContext */;
2274 val* var13 /* : FlowContext */;
2275 var_v = p0;
2276 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrExpr__n_expr]))(self) /* n_expr on <self:AOrExpr>*/;
2277 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:FlowVisitor>*/;
2278 var_after_expr = var1;
2279 var2 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_false]))(var_after_expr) /* when_false on <var_after_expr:FlowContext>*/;
2280 ((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(var_v, var2) /* current_flow_context= on <var_v:FlowVisitor>*/;
2281 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrExpr__n_expr2]))(self) /* n_expr2 on <self:AOrExpr>*/;
2282 var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__visit_expr]))(var_v, var3) /* visit_expr on <var_v:FlowVisitor>*/;
2283 var_after_expr2 = var4;
2284 var5 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_true]))(var_after_expr) /* when_true on <var_after_expr:FlowContext>*/;
2285 var6 = ((val* (*)(val*))(var_after_expr2->class->vft[COLOR_flow__FlowContext__when_true]))(var_after_expr2) /* when_true on <var_after_expr2:FlowContext>*/;
2286 var7 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_merge_flow]))(var_v, var5, var6) /* make_merge_flow on <var_v:FlowVisitor>*/;
2287 var_merge_true = var7;
2288 if (varonce) {
2289 var8 = varonce;
2290 } else {
2291 var9 = "OR TRUE";
2292 var10 = 7;
2293 var11 = string__NativeString__to_s_with_length(var9, var10);
2294 var8 = var11;
2295 varonce = var8;
2296 }
2297 ((void (*)(val*, val*))(var_merge_true->class->vft[COLOR_flow__FlowContext__name_61d]))(var_merge_true, var8) /* name= on <var_merge_true:FlowContext>*/;
2298 var12 = ((val* (*)(val*))(var_after_expr2->class->vft[COLOR_flow__FlowContext__when_false]))(var_after_expr2) /* when_false on <var_after_expr2:FlowContext>*/;
2299 var13 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_true_false_flow]))(var_v, var_merge_true, var12) /* make_true_false_flow on <var_v:FlowVisitor>*/;
2300 var13;
2301 RET_LABEL:;
2302 }
2303 /* method flow#AOrExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2304 void VIRTUAL_flow__AOrExpr__accept_flow_visitor(val* self, val* p0) {
2305 flow__AOrExpr__accept_flow_visitor(self, p0);
2306 RET_LABEL:;
2307 }
2308 /* method flow#AImpliesExpr#accept_flow_visitor for (self: AImpliesExpr, FlowVisitor) */
2309 void flow__AImpliesExpr__accept_flow_visitor(val* self, val* p0) {
2310 val* var_v /* var v: FlowVisitor */;
2311 val* var /* : AExpr */;
2312 val* var1 /* : FlowContext */;
2313 val* var_after_expr /* var after_expr: FlowContext */;
2314 val* var2 /* : FlowContext */;
2315 val* var3 /* : AExpr */;
2316 val* var4 /* : FlowContext */;
2317 val* var_after_expr2 /* var after_expr2: FlowContext */;
2318 val* var5 /* : FlowContext */;
2319 val* var6 /* : FlowContext */;
2320 val* var7 /* : FlowContext */;
2321 val* var_merge_true /* var merge_true: FlowContext */;
2322 static val* varonce;
2323 val* var8 /* : String */;
2324 char* var9 /* : NativeString */;
2325 long var10 /* : Int */;
2326 val* var11 /* : String */;
2327 val* var12 /* : FlowContext */;
2328 val* var13 /* : FlowContext */;
2329 var_v = p0;
2330 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AImpliesExpr__n_expr]))(self) /* n_expr on <self:AImpliesExpr>*/;
2331 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:FlowVisitor>*/;
2332 var_after_expr = var1;
2333 var2 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_true]))(var_after_expr) /* when_true on <var_after_expr:FlowContext>*/;
2334 ((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(var_v, var2) /* current_flow_context= on <var_v:FlowVisitor>*/;
2335 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AImpliesExpr__n_expr2]))(self) /* n_expr2 on <self:AImpliesExpr>*/;
2336 var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__visit_expr]))(var_v, var3) /* visit_expr on <var_v:FlowVisitor>*/;
2337 var_after_expr2 = var4;
2338 var5 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_false]))(var_after_expr) /* when_false on <var_after_expr:FlowContext>*/;
2339 var6 = ((val* (*)(val*))(var_after_expr2->class->vft[COLOR_flow__FlowContext__when_true]))(var_after_expr2) /* when_true on <var_after_expr2:FlowContext>*/;
2340 var7 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_merge_flow]))(var_v, var5, var6) /* make_merge_flow on <var_v:FlowVisitor>*/;
2341 var_merge_true = var7;
2342 if (varonce) {
2343 var8 = varonce;
2344 } else {
2345 var9 = "OR TRUE";
2346 var10 = 7;
2347 var11 = string__NativeString__to_s_with_length(var9, var10);
2348 var8 = var11;
2349 varonce = var8;
2350 }
2351 ((void (*)(val*, val*))(var_merge_true->class->vft[COLOR_flow__FlowContext__name_61d]))(var_merge_true, var8) /* name= on <var_merge_true:FlowContext>*/;
2352 var12 = ((val* (*)(val*))(var_after_expr2->class->vft[COLOR_flow__FlowContext__when_false]))(var_after_expr2) /* when_false on <var_after_expr2:FlowContext>*/;
2353 var13 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_true_false_flow]))(var_v, var_merge_true, var12) /* make_true_false_flow on <var_v:FlowVisitor>*/;
2354 var13;
2355 RET_LABEL:;
2356 }
2357 /* method flow#AImpliesExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2358 void VIRTUAL_flow__AImpliesExpr__accept_flow_visitor(val* self, val* p0) {
2359 flow__AImpliesExpr__accept_flow_visitor(self, p0);
2360 RET_LABEL:;
2361 }
2362 /* method flow#AAndExpr#accept_flow_visitor for (self: AAndExpr, FlowVisitor) */
2363 void flow__AAndExpr__accept_flow_visitor(val* self, val* p0) {
2364 val* var_v /* var v: FlowVisitor */;
2365 val* var /* : AExpr */;
2366 val* var1 /* : FlowContext */;
2367 val* var_after_expr /* var after_expr: FlowContext */;
2368 val* var2 /* : FlowContext */;
2369 val* var3 /* : AExpr */;
2370 val* var4 /* : FlowContext */;
2371 val* var_after_expr2 /* var after_expr2: FlowContext */;
2372 val* var5 /* : FlowContext */;
2373 val* var6 /* : FlowContext */;
2374 val* var7 /* : FlowContext */;
2375 val* var_merge_false /* var merge_false: FlowContext */;
2376 static val* varonce;
2377 val* var8 /* : String */;
2378 char* var9 /* : NativeString */;
2379 long var10 /* : Int */;
2380 val* var11 /* : String */;
2381 val* var12 /* : FlowContext */;
2382 val* var13 /* : FlowContext */;
2383 var_v = p0;
2384 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAndExpr__n_expr]))(self) /* n_expr on <self:AAndExpr>*/;
2385 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:FlowVisitor>*/;
2386 var_after_expr = var1;
2387 var2 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_true]))(var_after_expr) /* when_true on <var_after_expr:FlowContext>*/;
2388 ((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(var_v, var2) /* current_flow_context= on <var_v:FlowVisitor>*/;
2389 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAndExpr__n_expr2]))(self) /* n_expr2 on <self:AAndExpr>*/;
2390 var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__visit_expr]))(var_v, var3) /* visit_expr on <var_v:FlowVisitor>*/;
2391 var_after_expr2 = var4;
2392 var5 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_false]))(var_after_expr) /* when_false on <var_after_expr:FlowContext>*/;
2393 var6 = ((val* (*)(val*))(var_after_expr2->class->vft[COLOR_flow__FlowContext__when_false]))(var_after_expr2) /* when_false on <var_after_expr2:FlowContext>*/;
2394 var7 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_merge_flow]))(var_v, var5, var6) /* make_merge_flow on <var_v:FlowVisitor>*/;
2395 var_merge_false = var7;
2396 if (varonce) {
2397 var8 = varonce;
2398 } else {
2399 var9 = "AND FALSE";
2400 var10 = 9;
2401 var11 = string__NativeString__to_s_with_length(var9, var10);
2402 var8 = var11;
2403 varonce = var8;
2404 }
2405 ((void (*)(val*, val*))(var_merge_false->class->vft[COLOR_flow__FlowContext__name_61d]))(var_merge_false, var8) /* name= on <var_merge_false:FlowContext>*/;
2406 var12 = ((val* (*)(val*))(var_after_expr2->class->vft[COLOR_flow__FlowContext__when_true]))(var_after_expr2) /* when_true on <var_after_expr2:FlowContext>*/;
2407 var13 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_true_false_flow]))(var_v, var12, var_merge_false) /* make_true_false_flow on <var_v:FlowVisitor>*/;
2408 var13;
2409 RET_LABEL:;
2410 }
2411 /* method flow#AAndExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2412 void VIRTUAL_flow__AAndExpr__accept_flow_visitor(val* self, val* p0) {
2413 flow__AAndExpr__accept_flow_visitor(self, p0);
2414 RET_LABEL:;
2415 }
2416 /* method flow#ANotExpr#accept_flow_visitor for (self: ANotExpr, FlowVisitor) */
2417 void flow__ANotExpr__accept_flow_visitor(val* self, val* p0) {
2418 val* var_v /* var v: FlowVisitor */;
2419 val* var /* : AExpr */;
2420 val* var1 /* : FlowContext */;
2421 val* var_after_expr /* var after_expr: FlowContext */;
2422 val* var2 /* : FlowContext */;
2423 val* var3 /* : FlowContext */;
2424 val* var4 /* : FlowContext */;
2425 var_v = p0;
2426 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANotExpr__n_expr]))(self) /* n_expr on <self:ANotExpr>*/;
2427 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:FlowVisitor>*/;
2428 var_after_expr = var1;
2429 var2 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_false]))(var_after_expr) /* when_false on <var_after_expr:FlowContext>*/;
2430 var3 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_true]))(var_after_expr) /* when_true on <var_after_expr:FlowContext>*/;
2431 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_true_false_flow]))(var_v, var2, var3) /* make_true_false_flow on <var_v:FlowVisitor>*/;
2432 var4;
2433 RET_LABEL:;
2434 }
2435 /* method flow#ANotExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2436 void VIRTUAL_flow__ANotExpr__accept_flow_visitor(val* self, val* p0) {
2437 flow__ANotExpr__accept_flow_visitor(self, p0);
2438 RET_LABEL:;
2439 }
2440 /* method flow#AOrElseExpr#accept_flow_visitor for (self: AOrElseExpr, FlowVisitor) */
2441 void flow__AOrElseExpr__accept_flow_visitor(val* self, val* p0) {
2442 val* var_v /* var v: FlowVisitor */;
2443 var_v = p0;
2444 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__AOrElseExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:AOrElseExpr>*/;
2445 RET_LABEL:;
2446 }
2447 /* method flow#AOrElseExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2448 void VIRTUAL_flow__AOrElseExpr__accept_flow_visitor(val* self, val* p0) {
2449 flow__AOrElseExpr__accept_flow_visitor(self, p0);
2450 RET_LABEL:;
2451 }
2452 /* method flow#AEqExpr#accept_flow_visitor for (self: AEqExpr, FlowVisitor) */
2453 void flow__AEqExpr__accept_flow_visitor(val* self, val* p0) {
2454 val* var_v /* var v: FlowVisitor */;
2455 val* var /* : FlowContext */;
2456 var_v = p0;
2457 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__AEqExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:AEqExpr>*/;
2458 var = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_sub_true_false_flow]))(var_v) /* make_sub_true_false_flow on <var_v:FlowVisitor>*/;
2459 var;
2460 RET_LABEL:;
2461 }
2462 /* method flow#AEqExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2463 void VIRTUAL_flow__AEqExpr__accept_flow_visitor(val* self, val* p0) {
2464 flow__AEqExpr__accept_flow_visitor(self, p0);
2465 RET_LABEL:;
2466 }
2467 /* method flow#ANeExpr#accept_flow_visitor for (self: ANeExpr, FlowVisitor) */
2468 void flow__ANeExpr__accept_flow_visitor(val* self, val* p0) {
2469 val* var_v /* var v: FlowVisitor */;
2470 val* var /* : FlowContext */;
2471 var_v = p0;
2472 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__ANeExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:ANeExpr>*/;
2473 var = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_sub_true_false_flow]))(var_v) /* make_sub_true_false_flow on <var_v:FlowVisitor>*/;
2474 var;
2475 RET_LABEL:;
2476 }
2477 /* method flow#ANeExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2478 void VIRTUAL_flow__ANeExpr__accept_flow_visitor(val* self, val* p0) {
2479 flow__ANeExpr__accept_flow_visitor(self, p0);
2480 RET_LABEL:;
2481 }
2482 /* method flow#AIsaExpr#accept_flow_visitor for (self: AIsaExpr, FlowVisitor) */
2483 void flow__AIsaExpr__accept_flow_visitor(val* self, val* p0) {
2484 val* var_v /* var v: FlowVisitor */;
2485 val* var /* : FlowContext */;
2486 var_v = p0;
2487 ((void (*)(val*, val*))(self->class->vft[COLOR_flow__AIsaExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:AIsaExpr>*/;
2488 var = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_sub_true_false_flow]))(var_v) /* make_sub_true_false_flow on <var_v:FlowVisitor>*/;
2489 var;
2490 RET_LABEL:;
2491 }
2492 /* method flow#AIsaExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2493 void VIRTUAL_flow__AIsaExpr__accept_flow_visitor(val* self, val* p0) {
2494 flow__AIsaExpr__accept_flow_visitor(self, p0);
2495 RET_LABEL:;
2496 }
2497 /* method flow#AProxyExpr#accept_flow_visitor for (self: AProxyExpr, FlowVisitor) */
2498 void flow__AProxyExpr__accept_flow_visitor(val* self, val* p0) {
2499 val* var_v /* var v: FlowVisitor */;
2500 val* var /* : AExpr */;
2501 val* var1 /* : FlowContext */;
2502 val* var_after_expr /* var after_expr: FlowContext */;
2503 var_v = p0;
2504 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AProxyExpr__n_expr]))(self) /* n_expr on <self:AProxyExpr>*/;
2505 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:FlowVisitor>*/;
2506 var_after_expr = var1;
2507 ((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(var_v, var_after_expr) /* current_flow_context= on <var_v:FlowVisitor>*/;
2508 RET_LABEL:;
2509 }
2510 /* method flow#AProxyExpr#accept_flow_visitor for (self: Object, FlowVisitor) */
2511 void VIRTUAL_flow__AProxyExpr__accept_flow_visitor(val* self, val* p0) {
2512 flow__AProxyExpr__accept_flow_visitor(self, p0);
2513 RET_LABEL:;
2514 }