cleanup some remaining nitc
[nit.git] / c_src / local_var_init.sep.1.c
1 #include "local_var_init.sep.0.h"
2 /* method local_var_init#ToolContext#local_var_init_phase for (self: ToolContext): Phase */
3 val* local_var_init__ToolContext__local_var_init_phase(val* self) {
4 val* var /* : Phase */;
5 val* var1 /* : Phase */;
6 var1 = self->attrs[COLOR_local_var_init__ToolContext___64dlocal_var_init_phase].val; /* @local_var_init_phase on <self:ToolContext> */
7 if (var1 == NULL) {
8 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @local_var_init_phase", "src/local_var_init.nit", 26);
9 exit(1);
10 }
11 var = var1;
12 RET_LABEL:;
13 return var;
14 }
15 /* method local_var_init#ToolContext#local_var_init_phase for (self: Object): Phase */
16 val* VIRTUAL_local_var_init__ToolContext__local_var_init_phase(val* self) {
17 val* var /* : Phase */;
18 val* var1 /* : Phase */;
19 var1 = local_var_init__ToolContext__local_var_init_phase(self);
20 var = var1;
21 RET_LABEL:;
22 return var;
23 }
24 /* method local_var_init#ToolContext#local_var_init_phase= for (self: ToolContext, Phase) */
25 void local_var_init__ToolContext__local_var_init_phase_61d(val* self, val* p0) {
26 self->attrs[COLOR_local_var_init__ToolContext___64dlocal_var_init_phase].val = p0; /* @local_var_init_phase on <self:ToolContext> */
27 RET_LABEL:;
28 }
29 /* method local_var_init#ToolContext#local_var_init_phase= for (self: Object, Phase) */
30 void VIRTUAL_local_var_init__ToolContext__local_var_init_phase_61d(val* self, val* p0) {
31 local_var_init__ToolContext__local_var_init_phase_61d(self, p0);
32 RET_LABEL:;
33 }
34 /* method local_var_init#LocalVarInitPhase#process_npropdef for (self: LocalVarInitPhase, APropdef) */
35 void local_var_init__LocalVarInitPhase__process_npropdef(val* self, val* p0) {
36 val* var_npropdef /* var npropdef: APropdef */;
37 val* var /* : ToolContext */;
38 var_npropdef = p0;
39 var = ((val* (*)(val*))(self->class->vft[COLOR_phase__Phase__toolcontext]))(self) /* toolcontext on <self:LocalVarInitPhase>*/;
40 ((void (*)(val*, val*))(var_npropdef->class->vft[COLOR_local_var_init__APropdef__do_local_var_init]))(var_npropdef, var) /* do_local_var_init on <var_npropdef:APropdef>*/;
41 RET_LABEL:;
42 }
43 /* method local_var_init#LocalVarInitPhase#process_npropdef for (self: Object, APropdef) */
44 void VIRTUAL_local_var_init__LocalVarInitPhase__process_npropdef(val* self, val* p0) {
45 local_var_init__LocalVarInitPhase__process_npropdef(self, p0);
46 RET_LABEL:;
47 }
48 /* method local_var_init#APropdef#do_local_var_init for (self: APropdef, ToolContext) */
49 void local_var_init__APropdef__do_local_var_init(val* self, val* p0) {
50 val* var_toolcontext /* var toolcontext: ToolContext */;
51 val* var /* : LocalVarInitVisitor */;
52 val* var_v /* var v: LocalVarInitVisitor */;
53 var_toolcontext = p0;
54 var = NEW_local_var_init__LocalVarInitVisitor(&type_local_var_init__LocalVarInitVisitor);
55 ((void (*)(val*, val*))(var->class->vft[COLOR_local_var_init__LocalVarInitVisitor__init]))(var, var_toolcontext) /* init on <var:LocalVarInitVisitor>*/;
56 CHECK_NEW_local_var_init__LocalVarInitVisitor(var);
57 var_v = var;
58 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, self) /* enter_visit on <var_v:LocalVarInitVisitor>*/;
59 RET_LABEL:;
60 }
61 /* method local_var_init#APropdef#do_local_var_init for (self: Object, ToolContext) */
62 void VIRTUAL_local_var_init__APropdef__do_local_var_init(val* self, val* p0) {
63 local_var_init__APropdef__do_local_var_init(self, p0);
64 RET_LABEL:;
65 }
66 /* method local_var_init#LocalVarInitVisitor#toolcontext for (self: LocalVarInitVisitor): ToolContext */
67 val* local_var_init__LocalVarInitVisitor__toolcontext(val* self) {
68 val* var /* : ToolContext */;
69 val* var1 /* : ToolContext */;
70 var1 = self->attrs[COLOR_local_var_init__LocalVarInitVisitor___64dtoolcontext].val; /* @toolcontext on <self:LocalVarInitVisitor> */
71 if (var1 == NULL) {
72 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @toolcontext", "src/local_var_init.nit", 47);
73 exit(1);
74 }
75 var = var1;
76 RET_LABEL:;
77 return var;
78 }
79 /* method local_var_init#LocalVarInitVisitor#toolcontext for (self: Object): ToolContext */
80 val* VIRTUAL_local_var_init__LocalVarInitVisitor__toolcontext(val* self) {
81 val* var /* : ToolContext */;
82 val* var1 /* : ToolContext */;
83 var1 = local_var_init__LocalVarInitVisitor__toolcontext(self);
84 var = var1;
85 RET_LABEL:;
86 return var;
87 }
88 /* method local_var_init#LocalVarInitVisitor#toolcontext= for (self: LocalVarInitVisitor, ToolContext) */
89 void local_var_init__LocalVarInitVisitor__toolcontext_61d(val* self, val* p0) {
90 self->attrs[COLOR_local_var_init__LocalVarInitVisitor___64dtoolcontext].val = p0; /* @toolcontext on <self:LocalVarInitVisitor> */
91 RET_LABEL:;
92 }
93 /* method local_var_init#LocalVarInitVisitor#toolcontext= for (self: Object, ToolContext) */
94 void VIRTUAL_local_var_init__LocalVarInitVisitor__toolcontext_61d(val* self, val* p0) {
95 local_var_init__LocalVarInitVisitor__toolcontext_61d(self, p0);
96 RET_LABEL:;
97 }
98 /* method local_var_init#LocalVarInitVisitor#init for (self: LocalVarInitVisitor, ToolContext) */
99 void local_var_init__LocalVarInitVisitor__init(val* self, val* p0) {
100 val* var_toolcontext /* var toolcontext: ToolContext */;
101 var_toolcontext = p0;
102 ((void (*)(val*))(self->class->vft[COLOR_parser_nodes__Visitor__init]))(self) /* init on <self:LocalVarInitVisitor>*/;
103 ((void (*)(val*, val*))(self->class->vft[COLOR_local_var_init__LocalVarInitVisitor__toolcontext_61d]))(self, var_toolcontext) /* toolcontext= on <self:LocalVarInitVisitor>*/;
104 RET_LABEL:;
105 }
106 /* method local_var_init#LocalVarInitVisitor#init for (self: Object, ToolContext) */
107 void VIRTUAL_local_var_init__LocalVarInitVisitor__init(val* self, val* p0) {
108 local_var_init__LocalVarInitVisitor__init(self, p0);
109 RET_LABEL:;
110 }
111 /* method local_var_init#LocalVarInitVisitor#maybe_unset_vars for (self: LocalVarInitVisitor): Set[Variable] */
112 val* local_var_init__LocalVarInitVisitor__maybe_unset_vars(val* self) {
113 val* var /* : Set[Variable] */;
114 val* var1 /* : Set[Variable] */;
115 var1 = self->attrs[COLOR_local_var_init__LocalVarInitVisitor___64dmaybe_unset_vars].val; /* @maybe_unset_vars on <self:LocalVarInitVisitor> */
116 if (var1 == NULL) {
117 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @maybe_unset_vars", "src/local_var_init.nit", 54);
118 exit(1);
119 }
120 var = var1;
121 RET_LABEL:;
122 return var;
123 }
124 /* method local_var_init#LocalVarInitVisitor#maybe_unset_vars for (self: Object): Set[Variable] */
125 val* VIRTUAL_local_var_init__LocalVarInitVisitor__maybe_unset_vars(val* self) {
126 val* var /* : Set[Variable] */;
127 val* var1 /* : Set[Variable] */;
128 var1 = local_var_init__LocalVarInitVisitor__maybe_unset_vars(self);
129 var = var1;
130 RET_LABEL:;
131 return var;
132 }
133 /* method local_var_init#LocalVarInitVisitor#maybe_unset_vars= for (self: LocalVarInitVisitor, Set[Variable]) */
134 void local_var_init__LocalVarInitVisitor__maybe_unset_vars_61d(val* self, val* p0) {
135 self->attrs[COLOR_local_var_init__LocalVarInitVisitor___64dmaybe_unset_vars].val = p0; /* @maybe_unset_vars on <self:LocalVarInitVisitor> */
136 RET_LABEL:;
137 }
138 /* method local_var_init#LocalVarInitVisitor#maybe_unset_vars= for (self: Object, Set[Variable]) */
139 void VIRTUAL_local_var_init__LocalVarInitVisitor__maybe_unset_vars_61d(val* self, val* p0) {
140 local_var_init__LocalVarInitVisitor__maybe_unset_vars_61d(self, p0);
141 RET_LABEL:;
142 }
143 /* method local_var_init#LocalVarInitVisitor#mark_is_unset for (self: LocalVarInitVisitor, AExpr, nullable Variable) */
144 void local_var_init__LocalVarInitVisitor__mark_is_unset(val* self, val* p0, val* p1) {
145 val* var_node /* var node: AExpr */;
146 val* var_variable /* var variable: nullable Variable */;
147 val* var /* : null */;
148 short int var1 /* : Bool */;
149 val* var2 /* : Set[Variable] */;
150 var_node = p0;
151 var_variable = p1;
152 var = NULL;
153 if (var_variable == NULL) {
154 var1 = 0; /* is null */
155 } else {
156 var1 = 1; /* arg is null and recv is not */
157 }
158 if (!var1) {
159 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/local_var_init.nit", 59);
160 exit(1);
161 }
162 var2 = ((val* (*)(val*))(self->class->vft[COLOR_local_var_init__LocalVarInitVisitor__maybe_unset_vars]))(self) /* maybe_unset_vars on <self:LocalVarInitVisitor>*/;
163 ((void (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var2, var_variable) /* add on <var2:Set[Variable]>*/;
164 RET_LABEL:;
165 }
166 /* method local_var_init#LocalVarInitVisitor#mark_is_unset for (self: Object, AExpr, nullable Variable) */
167 void VIRTUAL_local_var_init__LocalVarInitVisitor__mark_is_unset(val* self, val* p0, val* p1) {
168 local_var_init__LocalVarInitVisitor__mark_is_unset(self, p0, p1);
169 RET_LABEL:;
170 }
171 /* method local_var_init#LocalVarInitVisitor#mark_is_set for (self: LocalVarInitVisitor, AExpr, nullable Variable) */
172 void local_var_init__LocalVarInitVisitor__mark_is_set(val* self, val* p0, val* p1) {
173 val* var_node /* var node: AExpr */;
174 val* var_variable /* var variable: nullable Variable */;
175 val* var /* : null */;
176 short int var1 /* : Bool */;
177 val* var2 /* : Set[Variable] */;
178 short int var3 /* : Bool */;
179 short int var4 /* : Bool */;
180 val* var5 /* : nullable FlowContext */;
181 val* var_flow /* var flow: FlowContext */;
182 val* var6 /* : Set[Variable] */;
183 var_node = p0;
184 var_variable = p1;
185 var = NULL;
186 if (var_variable == NULL) {
187 var1 = 0; /* is null */
188 } else {
189 var1 = 1; /* arg is null and recv is not */
190 }
191 if (!var1) {
192 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/local_var_init.nit", 65);
193 exit(1);
194 }
195 var2 = ((val* (*)(val*))(self->class->vft[COLOR_local_var_init__LocalVarInitVisitor__maybe_unset_vars]))(self) /* maybe_unset_vars on <self:LocalVarInitVisitor>*/;
196 var3 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__Collection__has]))(var2, var_variable) /* has on <var2:Set[Variable]>*/;
197 var4 = !var3;
198 if (var4){
199 goto RET_LABEL;
200 } else {
201 }
202 var5 = ((val* (*)(val*))(var_node->class->vft[COLOR_flow__AExpr__after_flow_context]))(var_node) /* after_flow_context on <var_node:AExpr>*/;
203 if (var5 == NULL) {
204 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/local_var_init.nit", 68);
205 exit(1);
206 }
207 var_flow = var5;
208 var6 = ((val* (*)(val*))(var_flow->class->vft[COLOR_local_var_init__FlowContext__set_vars]))(var_flow) /* set_vars on <var_flow:FlowContext>*/;
209 ((void (*)(val*, val*))(var6->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var6, var_variable) /* add on <var6:Set[Variable]>*/;
210 RET_LABEL:;
211 }
212 /* method local_var_init#LocalVarInitVisitor#mark_is_set for (self: Object, AExpr, nullable Variable) */
213 void VIRTUAL_local_var_init__LocalVarInitVisitor__mark_is_set(val* self, val* p0, val* p1) {
214 local_var_init__LocalVarInitVisitor__mark_is_set(self, p0, p1);
215 RET_LABEL:;
216 }
217 /* method local_var_init#LocalVarInitVisitor#check_is_set for (self: LocalVarInitVisitor, AExpr, nullable Variable) */
218 void local_var_init__LocalVarInitVisitor__check_is_set(val* self, val* p0, val* p1) {
219 val* var_node /* var node: AExpr */;
220 val* var_variable /* var variable: nullable Variable */;
221 val* var /* : null */;
222 short int var1 /* : Bool */;
223 val* var2 /* : Set[Variable] */;
224 short int var3 /* : Bool */;
225 short int var4 /* : Bool */;
226 val* var5 /* : nullable FlowContext */;
227 val* var_flow /* var flow: FlowContext */;
228 short int var6 /* : Bool */;
229 short int var7 /* : Bool */;
230 val* var8 /* : ToolContext */;
231 val* var9 /* : Location */;
232 static val* varonce;
233 val* var10 /* : String */;
234 char* var11 /* : NativeString */;
235 long var12 /* : Int */;
236 val* var13 /* : String */;
237 static val* varonce14;
238 val* var15 /* : String */;
239 char* var16 /* : NativeString */;
240 long var17 /* : Int */;
241 val* var18 /* : String */;
242 val* var19 /* : Array[Object] */;
243 long var20 /* : Int */;
244 val* var21 /* : NativeArray[Object] */;
245 val* var22 /* : String */;
246 val* var23 /* : Set[Variable] */;
247 var_node = p0;
248 var_variable = p1;
249 var = NULL;
250 if (var_variable == NULL) {
251 var1 = 0; /* is null */
252 } else {
253 var1 = 1; /* arg is null and recv is not */
254 }
255 if (!var1) {
256 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/local_var_init.nit", 74);
257 exit(1);
258 }
259 var2 = ((val* (*)(val*))(self->class->vft[COLOR_local_var_init__LocalVarInitVisitor__maybe_unset_vars]))(self) /* maybe_unset_vars on <self:LocalVarInitVisitor>*/;
260 var3 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__Collection__has]))(var2, var_variable) /* has on <var2:Set[Variable]>*/;
261 var4 = !var3;
262 if (var4){
263 goto RET_LABEL;
264 } else {
265 }
266 var5 = ((val* (*)(val*))(var_node->class->vft[COLOR_flow__AExpr__after_flow_context]))(var_node) /* after_flow_context on <var_node:AExpr>*/;
267 if (var5 == NULL) {
268 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/local_var_init.nit", 77);
269 exit(1);
270 }
271 var_flow = var5;
272 var6 = ((short int (*)(val*, val*))(var_flow->class->vft[COLOR_local_var_init__FlowContext__is_variable_set]))(var_flow, var_variable) /* is_variable_set on <var_flow:FlowContext>*/;
273 var7 = !var6;
274 if (var7){
275 var8 = ((val* (*)(val*))(self->class->vft[COLOR_local_var_init__LocalVarInitVisitor__toolcontext]))(self) /* toolcontext on <self:LocalVarInitVisitor>*/;
276 var9 = ((val* (*)(val*))(var_node->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_node) /* hot_location on <var_node:AExpr>*/;
277 if (varonce) {
278 var10 = varonce;
279 } else {
280 var11 = "Error: variable \'";
281 var12 = 17;
282 var13 = string__NativeString__to_s_with_length(var11, var12);
283 var10 = var13;
284 varonce = var10;
285 }
286 if (varonce14) {
287 var15 = varonce14;
288 } else {
289 var16 = "\' is possibly unset.";
290 var17 = 20;
291 var18 = string__NativeString__to_s_with_length(var16, var17);
292 var15 = var18;
293 varonce14 = var15;
294 }
295 var19 = NEW_array__Array(&type_array__Arraykernel__Object);
296 { /* var19 = array_instance Array[Object] */
297 var20 = 3;
298 var21 = NEW_array__NativeArray(var20, &type_array__NativeArraykernel__Object);
299 ((struct instance_array__NativeArray*)var21)->values[0] = (val*) var10;
300 ((struct instance_array__NativeArray*)var21)->values[1] = (val*) var_variable;
301 ((struct instance_array__NativeArray*)var21)->values[2] = (val*) var15;
302 ((void (*)(val*, val*, long))(var19->class->vft[COLOR_array__Array__with_native]))(var19, var21, var20) /* with_native on <var19:Array[Object]>*/;
303 CHECK_NEW_array__Array(var19);
304 }
305 var22 = ((val* (*)(val*))(var19->class->vft[COLOR_string__Object__to_s]))(var19) /* to_s on <var19:Array[Object]>*/;
306 ((void (*)(val*, val*, val*))(var8->class->vft[COLOR_toolcontext__ToolContext__error]))(var8, var9, var22) /* error on <var8:ToolContext>*/;
307 var23 = ((val* (*)(val*))(self->class->vft[COLOR_local_var_init__LocalVarInitVisitor__maybe_unset_vars]))(self) /* maybe_unset_vars on <self:LocalVarInitVisitor>*/;
308 ((void (*)(val*, val*))(var23->class->vft[COLOR_abstract_collection__RemovableCollection__remove]))(var23, var_variable) /* remove on <var23:Set[Variable]>*/;
309 } else {
310 }
311 RET_LABEL:;
312 }
313 /* method local_var_init#LocalVarInitVisitor#check_is_set for (self: Object, AExpr, nullable Variable) */
314 void VIRTUAL_local_var_init__LocalVarInitVisitor__check_is_set(val* self, val* p0, val* p1) {
315 local_var_init__LocalVarInitVisitor__check_is_set(self, p0, p1);
316 RET_LABEL:;
317 }
318 /* method local_var_init#LocalVarInitVisitor#visit for (self: LocalVarInitVisitor, ANode) */
319 void local_var_init__LocalVarInitVisitor__visit(val* self, val* p0) {
320 val* var_n /* var n: ANode */;
321 var_n = p0;
322 ((void (*)(val*, val*))(var_n->class->vft[COLOR_local_var_init__ANode__accept_local_var_visitor]))(var_n, self) /* accept_local_var_visitor on <var_n:ANode>*/;
323 RET_LABEL:;
324 }
325 /* method local_var_init#LocalVarInitVisitor#visit for (self: Object, ANode) */
326 void VIRTUAL_local_var_init__LocalVarInitVisitor__visit(val* self, val* p0) {
327 local_var_init__LocalVarInitVisitor__visit(self, p0);
328 RET_LABEL:;
329 }
330 /* method local_var_init#FlowContext#set_vars for (self: FlowContext): Set[Variable] */
331 val* local_var_init__FlowContext__set_vars(val* self) {
332 val* var /* : Set[Variable] */;
333 val* var1 /* : Set[Variable] */;
334 var1 = self->attrs[COLOR_local_var_init__FlowContext___64dset_vars].val; /* @set_vars on <self:FlowContext> */
335 if (var1 == NULL) {
336 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @set_vars", "src/local_var_init.nit", 92);
337 exit(1);
338 }
339 var = var1;
340 RET_LABEL:;
341 return var;
342 }
343 /* method local_var_init#FlowContext#set_vars for (self: Object): Set[Variable] */
344 val* VIRTUAL_local_var_init__FlowContext__set_vars(val* self) {
345 val* var /* : Set[Variable] */;
346 val* var1 /* : Set[Variable] */;
347 var1 = local_var_init__FlowContext__set_vars(self);
348 var = var1;
349 RET_LABEL:;
350 return var;
351 }
352 /* method local_var_init#FlowContext#set_vars= for (self: FlowContext, Set[Variable]) */
353 void local_var_init__FlowContext__set_vars_61d(val* self, val* p0) {
354 self->attrs[COLOR_local_var_init__FlowContext___64dset_vars].val = p0; /* @set_vars on <self:FlowContext> */
355 RET_LABEL:;
356 }
357 /* method local_var_init#FlowContext#set_vars= for (self: Object, Set[Variable]) */
358 void VIRTUAL_local_var_init__FlowContext__set_vars_61d(val* self, val* p0) {
359 local_var_init__FlowContext__set_vars_61d(self, p0);
360 RET_LABEL:;
361 }
362 /* method local_var_init#FlowContext#is_variable_set for (self: FlowContext, Variable): Bool */
363 short int local_var_init__FlowContext__is_variable_set(val* self, val* p0) {
364 short int var /* : Bool */;
365 val* var_variable /* var variable: Variable */;
366 val* var1 /* : Set[Variable] */;
367 short int var2 /* : Bool */;
368 short int var3 /* : Bool */;
369 val* var4 /* : Array[FlowContext] */;
370 val* var_previous /* var previous: Array[FlowContext] */;
371 long var5 /* : Int */;
372 long var6 /* : Int */;
373 short int var7 /* : Bool */;
374 short int var9 /* : Bool */;
375 short int var10 /* : Bool */;
376 long var11 /* : Int */;
377 long var12 /* : Int */;
378 short int var13 /* : Bool */;
379 short int var15 /* : Bool */;
380 val* var16 /* : nullable Object */;
381 short int var17 /* : Bool */;
382 val* var18 /* : Array[FlowContext] */;
383 val* var19 /* : Iterator[nullable Object] */;
384 short int var20 /* : Bool */;
385 val* var21 /* : nullable Object */;
386 val* var_p /* var p: FlowContext */;
387 short int var22 /* : Bool */;
388 short int var23 /* : Bool */;
389 short int var24 /* : Bool */;
390 val* var25 /* : Set[Variable] */;
391 short int var26 /* : Bool */;
392 var_variable = p0;
393 var1 = ((val* (*)(val*))(self->class->vft[COLOR_local_var_init__FlowContext__set_vars]))(self) /* set_vars on <self:FlowContext>*/;
394 var2 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__Collection__has]))(var1, var_variable) /* has on <var1:Set[Variable]>*/;
395 if (var2){
396 var3 = 1;
397 var = var3;
398 goto RET_LABEL;
399 } else {
400 }
401 var4 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowContext__previous]))(self) /* previous on <self:FlowContext>*/;
402 var_previous = var4;
403 var5 = ((long (*)(val*))(var_previous->class->vft[COLOR_abstract_collection__Collection__length]))(var_previous) /* length on <var_previous:Array[FlowContext]>*/;
404 var6 = 0;
405 { /* Inline kernel#Int#== (var5,var6) */
406 var9 = var5 == var6;
407 var7 = var9;
408 goto RET_LABEL8;
409 RET_LABEL8:(void)0;
410 }
411 if (var7){
412 var10 = 0;
413 var = var10;
414 goto RET_LABEL;
415 } else {
416 }
417 var11 = ((long (*)(val*))(var_previous->class->vft[COLOR_abstract_collection__Collection__length]))(var_previous) /* length on <var_previous:Array[FlowContext]>*/;
418 var12 = 1;
419 { /* Inline kernel#Int#== (var11,var12) */
420 var15 = var11 == var12;
421 var13 = var15;
422 goto RET_LABEL14;
423 RET_LABEL14:(void)0;
424 }
425 if (var13){
426 var16 = ((val* (*)(val*))(var_previous->class->vft[COLOR_abstract_collection__Collection__first]))(var_previous) /* first on <var_previous:Array[FlowContext]>*/;
427 var17 = ((short int (*)(val*, val*))(var16->class->vft[COLOR_local_var_init__FlowContext__is_variable_set]))(var16, var_variable) /* is_variable_set on <var16:nullable Object(FlowContext)>*/;
428 var = var17;
429 goto RET_LABEL;
430 } else {
431 }
432 var18 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowContext__previous]))(self) /* previous on <self:FlowContext>*/;
433 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_collection__Collection__iterator]))(var18) /* iterator on <var18:Array[FlowContext]>*/;
434 for(;;) {
435 var20 = ((short int (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var19) /* is_ok on <var19:Iterator[nullable Object]>*/;
436 if(!var20) break;
437 var21 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__item]))(var19) /* item on <var19:Iterator[nullable Object]>*/;
438 var_p = var21;
439 var22 = ((short int (*)(val*, val*))(var_p->class->vft[COLOR_local_var_init__FlowContext__is_variable_set]))(var_p, var_variable) /* is_variable_set on <var_p:FlowContext>*/;
440 var23 = !var22;
441 if (var23){
442 var24 = 0;
443 var = var24;
444 goto RET_LABEL;
445 } else {
446 }
447 CONTINUE_label: (void)0;
448 ((void (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__next]))(var19) /* next on <var19:Iterator[nullable Object]>*/;
449 }
450 BREAK_label: (void)0;
451 var25 = ((val* (*)(val*))(self->class->vft[COLOR_local_var_init__FlowContext__set_vars]))(self) /* set_vars on <self:FlowContext>*/;
452 ((void (*)(val*, val*))(var25->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var25, var_variable) /* add on <var25:Set[Variable]>*/;
453 var26 = 1;
454 var = var26;
455 goto RET_LABEL;
456 RET_LABEL:;
457 return var;
458 }
459 /* method local_var_init#FlowContext#is_variable_set for (self: Object, Variable): Bool */
460 short int VIRTUAL_local_var_init__FlowContext__is_variable_set(val* self, val* p0) {
461 short int var /* : Bool */;
462 short int var1 /* : Bool */;
463 var1 = local_var_init__FlowContext__is_variable_set(self, p0);
464 var = var1;
465 RET_LABEL:;
466 return var;
467 }
468 /* method local_var_init#ANode#accept_local_var_visitor for (self: ANode, LocalVarInitVisitor) */
469 void local_var_init__ANode__accept_local_var_visitor(val* self, val* p0) {
470 val* var_v /* var v: LocalVarInitVisitor */;
471 var_v = p0;
472 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__visit_all]))(self, var_v) /* visit_all on <self:ANode>*/;
473 RET_LABEL:;
474 }
475 /* method local_var_init#ANode#accept_local_var_visitor for (self: Object, LocalVarInitVisitor) */
476 void VIRTUAL_local_var_init__ANode__accept_local_var_visitor(val* self, val* p0) {
477 local_var_init__ANode__accept_local_var_visitor(self, p0);
478 RET_LABEL:;
479 }
480 /* method local_var_init#AVardeclExpr#accept_local_var_visitor for (self: AVardeclExpr, LocalVarInitVisitor) */
481 void local_var_init__AVardeclExpr__accept_local_var_visitor(val* self, val* p0) {
482 val* var_v /* var v: LocalVarInitVisitor */;
483 val* var /* : nullable AExpr */;
484 val* var1 /* : null */;
485 short int var2 /* : Bool */;
486 val* var3 /* : nullable Variable */;
487 var_v = p0;
488 ((void (*)(val*, val*))(self->class->vft[COLOR_local_var_init__AVardeclExpr__accept_local_var_visitor]))(self, p0) /* accept_local_var_visitor on <self:AVardeclExpr>*/;
489 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AVardeclExpr__n_expr]))(self) /* n_expr on <self:AVardeclExpr>*/;
490 var1 = NULL;
491 if (var == NULL) {
492 var2 = 1; /* is null */
493 } else {
494 var2 = 0; /* arg is null but recv is not */
495 }
496 if (var2){
497 var3 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVardeclExpr__variable]))(self) /* variable on <self:AVardeclExpr>*/;
498 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_local_var_init__LocalVarInitVisitor__mark_is_unset]))(var_v, self, var3) /* mark_is_unset on <var_v:LocalVarInitVisitor>*/;
499 } else {
500 }
501 RET_LABEL:;
502 }
503 /* method local_var_init#AVardeclExpr#accept_local_var_visitor for (self: Object, LocalVarInitVisitor) */
504 void VIRTUAL_local_var_init__AVardeclExpr__accept_local_var_visitor(val* self, val* p0) {
505 local_var_init__AVardeclExpr__accept_local_var_visitor(self, p0);
506 RET_LABEL:;
507 }
508 /* method local_var_init#AVarExpr#accept_local_var_visitor for (self: AVarExpr, LocalVarInitVisitor) */
509 void local_var_init__AVarExpr__accept_local_var_visitor(val* self, val* p0) {
510 val* var_v /* var v: LocalVarInitVisitor */;
511 val* var /* : nullable Variable */;
512 var_v = p0;
513 ((void (*)(val*, val*))(self->class->vft[COLOR_local_var_init__AVarExpr__accept_local_var_visitor]))(self, p0) /* accept_local_var_visitor on <self:AVarExpr>*/;
514 var = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVarFormExpr__variable]))(self) /* variable on <self:AVarExpr>*/;
515 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_local_var_init__LocalVarInitVisitor__check_is_set]))(var_v, self, var) /* check_is_set on <var_v:LocalVarInitVisitor>*/;
516 RET_LABEL:;
517 }
518 /* method local_var_init#AVarExpr#accept_local_var_visitor for (self: Object, LocalVarInitVisitor) */
519 void VIRTUAL_local_var_init__AVarExpr__accept_local_var_visitor(val* self, val* p0) {
520 local_var_init__AVarExpr__accept_local_var_visitor(self, p0);
521 RET_LABEL:;
522 }
523 /* method local_var_init#AVarAssignExpr#accept_local_var_visitor for (self: AVarAssignExpr, LocalVarInitVisitor) */
524 void local_var_init__AVarAssignExpr__accept_local_var_visitor(val* self, val* p0) {
525 val* var_v /* var v: LocalVarInitVisitor */;
526 val* var /* : nullable Variable */;
527 var_v = p0;
528 ((void (*)(val*, val*))(self->class->vft[COLOR_local_var_init__AVarAssignExpr__accept_local_var_visitor]))(self, p0) /* accept_local_var_visitor on <self:AVarAssignExpr>*/;
529 var = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVarFormExpr__variable]))(self) /* variable on <self:AVarAssignExpr>*/;
530 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_local_var_init__LocalVarInitVisitor__mark_is_set]))(var_v, self, var) /* mark_is_set on <var_v:LocalVarInitVisitor>*/;
531 RET_LABEL:;
532 }
533 /* method local_var_init#AVarAssignExpr#accept_local_var_visitor for (self: Object, LocalVarInitVisitor) */
534 void VIRTUAL_local_var_init__AVarAssignExpr__accept_local_var_visitor(val* self, val* p0) {
535 local_var_init__AVarAssignExpr__accept_local_var_visitor(self, p0);
536 RET_LABEL:;
537 }
538 /* method local_var_init#AVarReassignExpr#accept_local_var_visitor for (self: AVarReassignExpr, LocalVarInitVisitor) */
539 void local_var_init__AVarReassignExpr__accept_local_var_visitor(val* self, val* p0) {
540 val* var_v /* var v: LocalVarInitVisitor */;
541 val* var /* : nullable Variable */;
542 var_v = p0;
543 ((void (*)(val*, val*))(self->class->vft[COLOR_local_var_init__AVarReassignExpr__accept_local_var_visitor]))(self, p0) /* accept_local_var_visitor on <self:AVarReassignExpr>*/;
544 var = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVarFormExpr__variable]))(self) /* variable on <self:AVarReassignExpr>*/;
545 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_local_var_init__LocalVarInitVisitor__check_is_set]))(var_v, self, var) /* check_is_set on <var_v:LocalVarInitVisitor>*/;
546 RET_LABEL:;
547 }
548 /* method local_var_init#AVarReassignExpr#accept_local_var_visitor for (self: Object, LocalVarInitVisitor) */
549 void VIRTUAL_local_var_init__AVarReassignExpr__accept_local_var_visitor(val* self, val* p0) {
550 local_var_init__AVarReassignExpr__accept_local_var_visitor(self, p0);
551 RET_LABEL:;
552 }