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