c_src: Fix uname in Makefile
[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___local_var_init_phase].val; /* _local_var_init_phase on <self:ToolContext> */
7 if (unlikely(var1 == NULL)) {
8 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _local_var_init_phase");
9 PRINT_ERROR(" (%s:%d)\n", "src/local_var_init.nit", 26);
10 show_backtrace(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method local_var_init#ToolContext#local_var_init_phase for (self: Object): Phase */
17 val* VIRTUAL_local_var_init__ToolContext__local_var_init_phase(val* self) {
18 val* var /* : Phase */;
19 val* var1 /* : Phase */;
20 val* var3 /* : Phase */;
21 { /* Inline local_var_init#ToolContext#local_var_init_phase (self) on <self:Object(ToolContext)> */
22 var3 = self->attrs[COLOR_local_var_init__ToolContext___local_var_init_phase].val; /* _local_var_init_phase on <self:Object(ToolContext)> */
23 if (unlikely(var3 == NULL)) {
24 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _local_var_init_phase");
25 PRINT_ERROR(" (%s:%d)\n", "src/local_var_init.nit", 26);
26 show_backtrace(1);
27 }
28 var1 = var3;
29 RET_LABEL2:(void)0;
30 }
31 var = var1;
32 RET_LABEL:;
33 return var;
34 }
35 /* method local_var_init#LocalVarInitPhase#process_npropdef for (self: LocalVarInitPhase, APropdef) */
36 void local_var_init__LocalVarInitPhase__process_npropdef(val* self, val* p0) {
37 val* var_npropdef /* var npropdef: APropdef */;
38 val* var /* : ToolContext */;
39 val* var2 /* : ToolContext */;
40 var_npropdef = p0;
41 {
42 { /* Inline phase#Phase#toolcontext (self) on <self:LocalVarInitPhase> */
43 var2 = self->attrs[COLOR_phase__Phase___toolcontext].val; /* _toolcontext on <self:LocalVarInitPhase> */
44 if (unlikely(var2 == NULL)) {
45 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
46 PRINT_ERROR(" (%s:%d)\n", "src/phase.nit", 145);
47 show_backtrace(1);
48 }
49 var = var2;
50 RET_LABEL1:(void)0;
51 }
52 }
53 {
54 local_var_init__APropdef__do_local_var_init(var_npropdef, var); /* Direct call local_var_init#APropdef#do_local_var_init on <var_npropdef:APropdef>*/
55 }
56 RET_LABEL:;
57 }
58 /* method local_var_init#LocalVarInitPhase#process_npropdef for (self: Object, APropdef) */
59 void VIRTUAL_local_var_init__LocalVarInitPhase__process_npropdef(val* self, val* p0) {
60 local_var_init__LocalVarInitPhase__process_npropdef(self, p0); /* Direct call local_var_init#LocalVarInitPhase#process_npropdef on <self:Object(LocalVarInitPhase)>*/
61 RET_LABEL:;
62 }
63 /* method local_var_init#APropdef#do_local_var_init for (self: APropdef, ToolContext) */
64 void local_var_init__APropdef__do_local_var_init(val* self, val* p0) {
65 val* var_toolcontext /* var toolcontext: ToolContext */;
66 val* var /* : LocalVarInitVisitor */;
67 val* var_v /* var v: LocalVarInitVisitor */;
68 var_toolcontext = p0;
69 var = NEW_local_var_init__LocalVarInitVisitor(&type_local_var_init__LocalVarInitVisitor);
70 {
71 local_var_init__LocalVarInitVisitor__init(var, var_toolcontext); /* Direct call local_var_init#LocalVarInitVisitor#init on <var:LocalVarInitVisitor>*/
72 }
73 var_v = var;
74 {
75 parser_nodes__Visitor__enter_visit(var_v, self); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:LocalVarInitVisitor>*/
76 }
77 RET_LABEL:;
78 }
79 /* method local_var_init#APropdef#do_local_var_init for (self: Object, ToolContext) */
80 void VIRTUAL_local_var_init__APropdef__do_local_var_init(val* self, val* p0) {
81 local_var_init__APropdef__do_local_var_init(self, p0); /* Direct call local_var_init#APropdef#do_local_var_init on <self:Object(APropdef)>*/
82 RET_LABEL:;
83 }
84 /* method local_var_init#LocalVarInitVisitor#toolcontext for (self: LocalVarInitVisitor): ToolContext */
85 val* local_var_init__LocalVarInitVisitor__toolcontext(val* self) {
86 val* var /* : ToolContext */;
87 val* var1 /* : ToolContext */;
88 var1 = self->attrs[COLOR_local_var_init__LocalVarInitVisitor___toolcontext].val; /* _toolcontext on <self:LocalVarInitVisitor> */
89 if (unlikely(var1 == NULL)) {
90 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
91 PRINT_ERROR(" (%s:%d)\n", "src/local_var_init.nit", 47);
92 show_backtrace(1);
93 }
94 var = var1;
95 RET_LABEL:;
96 return var;
97 }
98 /* method local_var_init#LocalVarInitVisitor#toolcontext for (self: Object): ToolContext */
99 val* VIRTUAL_local_var_init__LocalVarInitVisitor__toolcontext(val* self) {
100 val* var /* : ToolContext */;
101 val* var1 /* : ToolContext */;
102 val* var3 /* : ToolContext */;
103 { /* Inline local_var_init#LocalVarInitVisitor#toolcontext (self) on <self:Object(LocalVarInitVisitor)> */
104 var3 = self->attrs[COLOR_local_var_init__LocalVarInitVisitor___toolcontext].val; /* _toolcontext on <self:Object(LocalVarInitVisitor)> */
105 if (unlikely(var3 == NULL)) {
106 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
107 PRINT_ERROR(" (%s:%d)\n", "src/local_var_init.nit", 47);
108 show_backtrace(1);
109 }
110 var1 = var3;
111 RET_LABEL2:(void)0;
112 }
113 var = var1;
114 RET_LABEL:;
115 return var;
116 }
117 /* method local_var_init#LocalVarInitVisitor#toolcontext= for (self: LocalVarInitVisitor, ToolContext) */
118 void local_var_init__LocalVarInitVisitor__toolcontext_61d(val* self, val* p0) {
119 self->attrs[COLOR_local_var_init__LocalVarInitVisitor___toolcontext].val = p0; /* _toolcontext on <self:LocalVarInitVisitor> */
120 RET_LABEL:;
121 }
122 /* method local_var_init#LocalVarInitVisitor#toolcontext= for (self: Object, ToolContext) */
123 void VIRTUAL_local_var_init__LocalVarInitVisitor__toolcontext_61d(val* self, val* p0) {
124 { /* Inline local_var_init#LocalVarInitVisitor#toolcontext= (self,p0) on <self:Object(LocalVarInitVisitor)> */
125 self->attrs[COLOR_local_var_init__LocalVarInitVisitor___toolcontext].val = p0; /* _toolcontext on <self:Object(LocalVarInitVisitor)> */
126 RET_LABEL1:(void)0;
127 }
128 RET_LABEL:;
129 }
130 /* method local_var_init#LocalVarInitVisitor#init for (self: LocalVarInitVisitor, ToolContext) */
131 void local_var_init__LocalVarInitVisitor__init(val* self, val* p0) {
132 val* var_toolcontext /* var toolcontext: ToolContext */;
133 {
134 { /* Inline parser_nodes#Visitor#init (self) on <self:LocalVarInitVisitor> */
135 RET_LABEL1:(void)0;
136 }
137 }
138 var_toolcontext = p0;
139 {
140 { /* Inline local_var_init#LocalVarInitVisitor#toolcontext= (self,var_toolcontext) on <self:LocalVarInitVisitor> */
141 self->attrs[COLOR_local_var_init__LocalVarInitVisitor___toolcontext].val = var_toolcontext; /* _toolcontext on <self:LocalVarInitVisitor> */
142 RET_LABEL2:(void)0;
143 }
144 }
145 RET_LABEL:;
146 }
147 /* method local_var_init#LocalVarInitVisitor#init for (self: Object, ToolContext) */
148 void VIRTUAL_local_var_init__LocalVarInitVisitor__init(val* self, val* p0) {
149 local_var_init__LocalVarInitVisitor__init(self, p0); /* Direct call local_var_init#LocalVarInitVisitor#init on <self:Object(LocalVarInitVisitor)>*/
150 RET_LABEL:;
151 }
152 /* method local_var_init#LocalVarInitVisitor#maybe_unset_vars for (self: LocalVarInitVisitor): Set[Variable] */
153 val* local_var_init__LocalVarInitVisitor__maybe_unset_vars(val* self) {
154 val* var /* : Set[Variable] */;
155 val* var1 /* : Set[Variable] */;
156 var1 = self->attrs[COLOR_local_var_init__LocalVarInitVisitor___maybe_unset_vars].val; /* _maybe_unset_vars on <self:LocalVarInitVisitor> */
157 if (unlikely(var1 == NULL)) {
158 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _maybe_unset_vars");
159 PRINT_ERROR(" (%s:%d)\n", "src/local_var_init.nit", 54);
160 show_backtrace(1);
161 }
162 var = var1;
163 RET_LABEL:;
164 return var;
165 }
166 /* method local_var_init#LocalVarInitVisitor#maybe_unset_vars for (self: Object): Set[Variable] */
167 val* VIRTUAL_local_var_init__LocalVarInitVisitor__maybe_unset_vars(val* self) {
168 val* var /* : Set[Variable] */;
169 val* var1 /* : Set[Variable] */;
170 val* var3 /* : Set[Variable] */;
171 { /* Inline local_var_init#LocalVarInitVisitor#maybe_unset_vars (self) on <self:Object(LocalVarInitVisitor)> */
172 var3 = self->attrs[COLOR_local_var_init__LocalVarInitVisitor___maybe_unset_vars].val; /* _maybe_unset_vars on <self:Object(LocalVarInitVisitor)> */
173 if (unlikely(var3 == NULL)) {
174 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _maybe_unset_vars");
175 PRINT_ERROR(" (%s:%d)\n", "src/local_var_init.nit", 54);
176 show_backtrace(1);
177 }
178 var1 = var3;
179 RET_LABEL2:(void)0;
180 }
181 var = var1;
182 RET_LABEL:;
183 return var;
184 }
185 /* method local_var_init#LocalVarInitVisitor#mark_is_unset for (self: LocalVarInitVisitor, AExpr, nullable Variable) */
186 void local_var_init__LocalVarInitVisitor__mark_is_unset(val* self, val* p0, val* p1) {
187 val* var_node /* var node: AExpr */;
188 val* var_variable /* var variable: nullable Variable */;
189 val* var /* : null */;
190 short int var1 /* : Bool */;
191 short int var2 /* : Bool */;
192 val* var_other /* var other: nullable Object */;
193 short int var4 /* : Bool */;
194 short int var5 /* : Bool */;
195 short int var6 /* : Bool */;
196 val* var7 /* : Set[Variable] */;
197 val* var9 /* : Set[Variable] */;
198 var_node = p0;
199 var_variable = p1;
200 var = NULL;
201 if (var_variable == NULL) {
202 var1 = 0; /* is null */
203 } else {
204 var1 = 1; /* arg is null and recv is not */
205 }
206 if (0) {
207 { /* Inline kernel#Object#!= (var_variable,var) on <var_variable:nullable Variable> */
208 var_other = var;
209 {
210 var5 = ((short int (*)(val*, val*))(var_variable->class->vft[COLOR_kernel__Object___61d_61d]))(var_variable, var_other) /* == on <var_variable:nullable Variable(Variable)>*/;
211 var4 = var5;
212 }
213 var6 = !var4;
214 var2 = var6;
215 goto RET_LABEL3;
216 RET_LABEL3:(void)0;
217 }
218 var1 = var2;
219 }
220 if (unlikely(!var1)) {
221 PRINT_ERROR("Runtime error: %s", "Assert failed");
222 PRINT_ERROR(" (%s:%d)\n", "src/local_var_init.nit", 59);
223 show_backtrace(1);
224 }
225 {
226 { /* Inline local_var_init#LocalVarInitVisitor#maybe_unset_vars (self) on <self:LocalVarInitVisitor> */
227 var9 = self->attrs[COLOR_local_var_init__LocalVarInitVisitor___maybe_unset_vars].val; /* _maybe_unset_vars on <self:LocalVarInitVisitor> */
228 if (unlikely(var9 == NULL)) {
229 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _maybe_unset_vars");
230 PRINT_ERROR(" (%s:%d)\n", "src/local_var_init.nit", 54);
231 show_backtrace(1);
232 }
233 var7 = var9;
234 RET_LABEL8:(void)0;
235 }
236 }
237 {
238 ((void (*)(val*, val*))(var7->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var7, var_variable) /* add on <var7:Set[Variable]>*/;
239 }
240 RET_LABEL:;
241 }
242 /* method local_var_init#LocalVarInitVisitor#mark_is_unset for (self: Object, AExpr, nullable Variable) */
243 void VIRTUAL_local_var_init__LocalVarInitVisitor__mark_is_unset(val* self, val* p0, val* p1) {
244 local_var_init__LocalVarInitVisitor__mark_is_unset(self, p0, p1); /* Direct call local_var_init#LocalVarInitVisitor#mark_is_unset on <self:Object(LocalVarInitVisitor)>*/
245 RET_LABEL:;
246 }
247 /* method local_var_init#LocalVarInitVisitor#mark_is_set for (self: LocalVarInitVisitor, AExpr, nullable Variable) */
248 void local_var_init__LocalVarInitVisitor__mark_is_set(val* self, val* p0, val* p1) {
249 val* var_node /* var node: AExpr */;
250 val* var_variable /* var variable: nullable Variable */;
251 val* var /* : null */;
252 short int var1 /* : Bool */;
253 short int var2 /* : Bool */;
254 val* var_other /* var other: nullable Object */;
255 short int var4 /* : Bool */;
256 short int var5 /* : Bool */;
257 short int var6 /* : Bool */;
258 val* var7 /* : Set[Variable] */;
259 val* var9 /* : Set[Variable] */;
260 short int var10 /* : Bool */;
261 short int var11 /* : Bool */;
262 val* var12 /* : nullable FlowContext */;
263 val* var14 /* : nullable FlowContext */;
264 val* var_flow /* var flow: FlowContext */;
265 val* var15 /* : Set[Variable] */;
266 val* var17 /* : Set[Variable] */;
267 var_node = p0;
268 var_variable = p1;
269 var = NULL;
270 if (var_variable == NULL) {
271 var1 = 0; /* is null */
272 } else {
273 var1 = 1; /* arg is null and recv is not */
274 }
275 if (0) {
276 { /* Inline kernel#Object#!= (var_variable,var) on <var_variable:nullable Variable> */
277 var_other = var;
278 {
279 var5 = ((short int (*)(val*, val*))(var_variable->class->vft[COLOR_kernel__Object___61d_61d]))(var_variable, var_other) /* == on <var_variable:nullable Variable(Variable)>*/;
280 var4 = var5;
281 }
282 var6 = !var4;
283 var2 = var6;
284 goto RET_LABEL3;
285 RET_LABEL3:(void)0;
286 }
287 var1 = var2;
288 }
289 if (unlikely(!var1)) {
290 PRINT_ERROR("Runtime error: %s", "Assert failed");
291 PRINT_ERROR(" (%s:%d)\n", "src/local_var_init.nit", 65);
292 show_backtrace(1);
293 }
294 {
295 { /* Inline local_var_init#LocalVarInitVisitor#maybe_unset_vars (self) on <self:LocalVarInitVisitor> */
296 var9 = self->attrs[COLOR_local_var_init__LocalVarInitVisitor___maybe_unset_vars].val; /* _maybe_unset_vars on <self:LocalVarInitVisitor> */
297 if (unlikely(var9 == NULL)) {
298 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _maybe_unset_vars");
299 PRINT_ERROR(" (%s:%d)\n", "src/local_var_init.nit", 54);
300 show_backtrace(1);
301 }
302 var7 = var9;
303 RET_LABEL8:(void)0;
304 }
305 }
306 {
307 var10 = ((short int (*)(val*, val*))(var7->class->vft[COLOR_abstract_collection__Collection__has]))(var7, var_variable) /* has on <var7:Set[Variable]>*/;
308 }
309 var11 = !var10;
310 if (var11){
311 goto RET_LABEL;
312 } else {
313 }
314 {
315 { /* Inline flow#AExpr#after_flow_context (var_node) on <var_node:AExpr> */
316 var14 = var_node->attrs[COLOR_flow__AExpr___after_flow_context].val; /* _after_flow_context on <var_node:AExpr> */
317 var12 = var14;
318 RET_LABEL13:(void)0;
319 }
320 }
321 if (unlikely(var12 == NULL)) {
322 PRINT_ERROR("Runtime error: %s", "Cast failed");
323 PRINT_ERROR(" (%s:%d)\n", "src/local_var_init.nit", 68);
324 show_backtrace(1);
325 }
326 var_flow = var12;
327 {
328 { /* Inline local_var_init#FlowContext#set_vars (var_flow) on <var_flow:FlowContext> */
329 var17 = var_flow->attrs[COLOR_local_var_init__FlowContext___set_vars].val; /* _set_vars on <var_flow:FlowContext> */
330 if (unlikely(var17 == NULL)) {
331 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _set_vars");
332 PRINT_ERROR(" (%s:%d)\n", "src/local_var_init.nit", 92);
333 show_backtrace(1);
334 }
335 var15 = var17;
336 RET_LABEL16:(void)0;
337 }
338 }
339 {
340 ((void (*)(val*, val*))(var15->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var15, var_variable) /* add on <var15:Set[Variable]>*/;
341 }
342 RET_LABEL:;
343 }
344 /* method local_var_init#LocalVarInitVisitor#mark_is_set for (self: Object, AExpr, nullable Variable) */
345 void VIRTUAL_local_var_init__LocalVarInitVisitor__mark_is_set(val* self, val* p0, val* p1) {
346 local_var_init__LocalVarInitVisitor__mark_is_set(self, p0, p1); /* Direct call local_var_init#LocalVarInitVisitor#mark_is_set on <self:Object(LocalVarInitVisitor)>*/
347 RET_LABEL:;
348 }
349 /* method local_var_init#LocalVarInitVisitor#check_is_set for (self: LocalVarInitVisitor, AExpr, nullable Variable) */
350 void local_var_init__LocalVarInitVisitor__check_is_set(val* self, val* p0, val* p1) {
351 val* var_node /* var node: AExpr */;
352 val* var_variable /* var variable: nullable Variable */;
353 val* var /* : null */;
354 short int var1 /* : Bool */;
355 short int var2 /* : Bool */;
356 val* var_other /* var other: nullable Object */;
357 short int var4 /* : Bool */;
358 short int var5 /* : Bool */;
359 short int var6 /* : Bool */;
360 val* var7 /* : Set[Variable] */;
361 val* var9 /* : Set[Variable] */;
362 short int var10 /* : Bool */;
363 short int var11 /* : Bool */;
364 val* var12 /* : nullable FlowContext */;
365 val* var14 /* : nullable FlowContext */;
366 val* var_flow /* var flow: FlowContext */;
367 short int var15 /* : Bool */;
368 short int var16 /* : Bool */;
369 val* var17 /* : ToolContext */;
370 val* var19 /* : ToolContext */;
371 val* var20 /* : Location */;
372 static val* varonce;
373 val* var21 /* : String */;
374 char* var22 /* : NativeString */;
375 long var23 /* : Int */;
376 val* var24 /* : FlatString */;
377 static val* varonce25;
378 val* var26 /* : String */;
379 char* var27 /* : NativeString */;
380 long var28 /* : Int */;
381 val* var29 /* : FlatString */;
382 val* var30 /* : Array[Object] */;
383 long var31 /* : Int */;
384 val* var32 /* : NativeArray[Object] */;
385 val* var33 /* : String */;
386 val* var34 /* : Set[Variable] */;
387 val* var36 /* : Set[Variable] */;
388 var_node = p0;
389 var_variable = p1;
390 var = NULL;
391 if (var_variable == NULL) {
392 var1 = 0; /* is null */
393 } else {
394 var1 = 1; /* arg is null and recv is not */
395 }
396 if (0) {
397 { /* Inline kernel#Object#!= (var_variable,var) on <var_variable:nullable Variable> */
398 var_other = var;
399 {
400 var5 = ((short int (*)(val*, val*))(var_variable->class->vft[COLOR_kernel__Object___61d_61d]))(var_variable, var_other) /* == on <var_variable:nullable Variable(Variable)>*/;
401 var4 = var5;
402 }
403 var6 = !var4;
404 var2 = var6;
405 goto RET_LABEL3;
406 RET_LABEL3:(void)0;
407 }
408 var1 = var2;
409 }
410 if (unlikely(!var1)) {
411 PRINT_ERROR("Runtime error: %s", "Assert failed");
412 PRINT_ERROR(" (%s:%d)\n", "src/local_var_init.nit", 74);
413 show_backtrace(1);
414 }
415 {
416 { /* Inline local_var_init#LocalVarInitVisitor#maybe_unset_vars (self) on <self:LocalVarInitVisitor> */
417 var9 = self->attrs[COLOR_local_var_init__LocalVarInitVisitor___maybe_unset_vars].val; /* _maybe_unset_vars on <self:LocalVarInitVisitor> */
418 if (unlikely(var9 == NULL)) {
419 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _maybe_unset_vars");
420 PRINT_ERROR(" (%s:%d)\n", "src/local_var_init.nit", 54);
421 show_backtrace(1);
422 }
423 var7 = var9;
424 RET_LABEL8:(void)0;
425 }
426 }
427 {
428 var10 = ((short int (*)(val*, val*))(var7->class->vft[COLOR_abstract_collection__Collection__has]))(var7, var_variable) /* has on <var7:Set[Variable]>*/;
429 }
430 var11 = !var10;
431 if (var11){
432 goto RET_LABEL;
433 } else {
434 }
435 {
436 { /* Inline flow#AExpr#after_flow_context (var_node) on <var_node:AExpr> */
437 var14 = var_node->attrs[COLOR_flow__AExpr___after_flow_context].val; /* _after_flow_context on <var_node:AExpr> */
438 var12 = var14;
439 RET_LABEL13:(void)0;
440 }
441 }
442 if (unlikely(var12 == NULL)) {
443 PRINT_ERROR("Runtime error: %s", "Cast failed");
444 PRINT_ERROR(" (%s:%d)\n", "src/local_var_init.nit", 77);
445 show_backtrace(1);
446 }
447 var_flow = var12;
448 {
449 var15 = local_var_init__FlowContext__is_variable_set(var_flow, var_variable);
450 }
451 var16 = !var15;
452 if (var16){
453 {
454 { /* Inline local_var_init#LocalVarInitVisitor#toolcontext (self) on <self:LocalVarInitVisitor> */
455 var19 = self->attrs[COLOR_local_var_init__LocalVarInitVisitor___toolcontext].val; /* _toolcontext on <self:LocalVarInitVisitor> */
456 if (unlikely(var19 == NULL)) {
457 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
458 PRINT_ERROR(" (%s:%d)\n", "src/local_var_init.nit", 47);
459 show_backtrace(1);
460 }
461 var17 = var19;
462 RET_LABEL18:(void)0;
463 }
464 }
465 {
466 var20 = parser_nodes__ANode__hot_location(var_node);
467 }
468 if (varonce) {
469 var21 = varonce;
470 } else {
471 var22 = "Error: variable \'";
472 var23 = 17;
473 var24 = string__NativeString__to_s_with_length(var22, var23);
474 var21 = var24;
475 varonce = var21;
476 }
477 if (varonce25) {
478 var26 = varonce25;
479 } else {
480 var27 = "\' is possibly unset.";
481 var28 = 20;
482 var29 = string__NativeString__to_s_with_length(var27, var28);
483 var26 = var29;
484 varonce25 = var26;
485 }
486 var30 = NEW_array__Array(&type_array__Arraykernel__Object);
487 { /* var30 = array_instance Array[Object] */
488 var31 = 3;
489 var32 = NEW_array__NativeArray(var31, &type_array__NativeArraykernel__Object);
490 ((struct instance_array__NativeArray*)var32)->values[0] = (val*) var21;
491 ((struct instance_array__NativeArray*)var32)->values[1] = (val*) var_variable;
492 ((struct instance_array__NativeArray*)var32)->values[2] = (val*) var26;
493 {
494 ((void (*)(val*, val*, long))(var30->class->vft[COLOR_array__Array__with_native]))(var30, var32, var31) /* with_native on <var30:Array[Object]>*/;
495 }
496 }
497 {
498 var33 = ((val* (*)(val*))(var30->class->vft[COLOR_string__Object__to_s]))(var30) /* to_s on <var30:Array[Object]>*/;
499 }
500 {
501 toolcontext__ToolContext__error(var17, var20, var33); /* Direct call toolcontext#ToolContext#error on <var17:ToolContext>*/
502 }
503 {
504 { /* Inline local_var_init#LocalVarInitVisitor#maybe_unset_vars (self) on <self:LocalVarInitVisitor> */
505 var36 = self->attrs[COLOR_local_var_init__LocalVarInitVisitor___maybe_unset_vars].val; /* _maybe_unset_vars on <self:LocalVarInitVisitor> */
506 if (unlikely(var36 == NULL)) {
507 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _maybe_unset_vars");
508 PRINT_ERROR(" (%s:%d)\n", "src/local_var_init.nit", 54);
509 show_backtrace(1);
510 }
511 var34 = var36;
512 RET_LABEL35:(void)0;
513 }
514 }
515 {
516 ((void (*)(val*, val*))(var34->class->vft[COLOR_abstract_collection__RemovableCollection__remove]))(var34, var_variable) /* remove on <var34:Set[Variable]>*/;
517 }
518 } else {
519 }
520 RET_LABEL:;
521 }
522 /* method local_var_init#LocalVarInitVisitor#check_is_set for (self: Object, AExpr, nullable Variable) */
523 void VIRTUAL_local_var_init__LocalVarInitVisitor__check_is_set(val* self, val* p0, val* p1) {
524 local_var_init__LocalVarInitVisitor__check_is_set(self, p0, p1); /* Direct call local_var_init#LocalVarInitVisitor#check_is_set on <self:Object(LocalVarInitVisitor)>*/
525 RET_LABEL:;
526 }
527 /* method local_var_init#LocalVarInitVisitor#visit for (self: LocalVarInitVisitor, ANode) */
528 void local_var_init__LocalVarInitVisitor__visit(val* self, val* p0) {
529 val* var_n /* var n: ANode */;
530 var_n = p0;
531 {
532 ((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>*/;
533 }
534 RET_LABEL:;
535 }
536 /* method local_var_init#LocalVarInitVisitor#visit for (self: Object, ANode) */
537 void VIRTUAL_local_var_init__LocalVarInitVisitor__visit(val* self, val* p0) {
538 local_var_init__LocalVarInitVisitor__visit(self, p0); /* Direct call local_var_init#LocalVarInitVisitor#visit on <self:Object(LocalVarInitVisitor)>*/
539 RET_LABEL:;
540 }
541 /* method local_var_init#FlowContext#set_vars for (self: FlowContext): Set[Variable] */
542 val* local_var_init__FlowContext__set_vars(val* self) {
543 val* var /* : Set[Variable] */;
544 val* var1 /* : Set[Variable] */;
545 var1 = self->attrs[COLOR_local_var_init__FlowContext___set_vars].val; /* _set_vars on <self:FlowContext> */
546 if (unlikely(var1 == NULL)) {
547 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _set_vars");
548 PRINT_ERROR(" (%s:%d)\n", "src/local_var_init.nit", 92);
549 show_backtrace(1);
550 }
551 var = var1;
552 RET_LABEL:;
553 return var;
554 }
555 /* method local_var_init#FlowContext#set_vars for (self: Object): Set[Variable] */
556 val* VIRTUAL_local_var_init__FlowContext__set_vars(val* self) {
557 val* var /* : Set[Variable] */;
558 val* var1 /* : Set[Variable] */;
559 val* var3 /* : Set[Variable] */;
560 { /* Inline local_var_init#FlowContext#set_vars (self) on <self:Object(FlowContext)> */
561 var3 = self->attrs[COLOR_local_var_init__FlowContext___set_vars].val; /* _set_vars on <self:Object(FlowContext)> */
562 if (unlikely(var3 == NULL)) {
563 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _set_vars");
564 PRINT_ERROR(" (%s:%d)\n", "src/local_var_init.nit", 92);
565 show_backtrace(1);
566 }
567 var1 = var3;
568 RET_LABEL2:(void)0;
569 }
570 var = var1;
571 RET_LABEL:;
572 return var;
573 }
574 /* method local_var_init#FlowContext#is_variable_set for (self: FlowContext, Variable): Bool */
575 short int local_var_init__FlowContext__is_variable_set(val* self, val* p0) {
576 short int var /* : Bool */;
577 val* var_variable /* var variable: Variable */;
578 val* var1 /* : Set[Variable] */;
579 val* var3 /* : Set[Variable] */;
580 short int var4 /* : Bool */;
581 short int var5 /* : Bool */;
582 val* var6 /* : Array[FlowContext] */;
583 val* var8 /* : Array[FlowContext] */;
584 val* var_previous /* var previous: Array[FlowContext] */;
585 long var9 /* : Int */;
586 long var10 /* : Int */;
587 short int var11 /* : Bool */;
588 short int var12 /* : Bool */;
589 short int var14 /* : Bool */;
590 short int var15 /* : Bool */;
591 long var16 /* : Int */;
592 long var17 /* : Int */;
593 short int var18 /* : Bool */;
594 short int var19 /* : Bool */;
595 short int var21 /* : Bool */;
596 val* var22 /* : nullable Object */;
597 short int var23 /* : Bool */;
598 val* var24 /* : Array[FlowContext] */;
599 val* var26 /* : Array[FlowContext] */;
600 val* var27 /* : ArrayIterator[nullable Object] */;
601 short int var28 /* : Bool */;
602 val* var29 /* : nullable Object */;
603 val* var_p /* var p: FlowContext */;
604 short int var30 /* : Bool */;
605 short int var31 /* : Bool */;
606 short int var32 /* : Bool */;
607 val* var33 /* : Set[Variable] */;
608 val* var35 /* : Set[Variable] */;
609 short int var36 /* : Bool */;
610 var_variable = p0;
611 {
612 { /* Inline local_var_init#FlowContext#set_vars (self) on <self:FlowContext> */
613 var3 = self->attrs[COLOR_local_var_init__FlowContext___set_vars].val; /* _set_vars on <self:FlowContext> */
614 if (unlikely(var3 == NULL)) {
615 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _set_vars");
616 PRINT_ERROR(" (%s:%d)\n", "src/local_var_init.nit", 92);
617 show_backtrace(1);
618 }
619 var1 = var3;
620 RET_LABEL2:(void)0;
621 }
622 }
623 {
624 var4 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__Collection__has]))(var1, var_variable) /* has on <var1:Set[Variable]>*/;
625 }
626 if (var4){
627 var5 = 1;
628 var = var5;
629 goto RET_LABEL;
630 } else {
631 }
632 {
633 { /* Inline flow#FlowContext#previous (self) on <self:FlowContext> */
634 var8 = self->attrs[COLOR_flow__FlowContext___previous].val; /* _previous on <self:FlowContext> */
635 if (unlikely(var8 == NULL)) {
636 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
637 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 192);
638 show_backtrace(1);
639 }
640 var6 = var8;
641 RET_LABEL7:(void)0;
642 }
643 }
644 var_previous = var6;
645 {
646 var9 = array__AbstractArrayRead__length(var_previous);
647 }
648 var10 = 0;
649 {
650 { /* Inline kernel#Int#== (var9,var10) on <var9:Int> */
651 var14 = var9 == var10;
652 var12 = var14;
653 goto RET_LABEL13;
654 RET_LABEL13:(void)0;
655 }
656 var11 = var12;
657 }
658 if (var11){
659 var15 = 0;
660 var = var15;
661 goto RET_LABEL;
662 } else {
663 }
664 {
665 var16 = array__AbstractArrayRead__length(var_previous);
666 }
667 var17 = 1;
668 {
669 { /* Inline kernel#Int#== (var16,var17) on <var16:Int> */
670 var21 = var16 == var17;
671 var19 = var21;
672 goto RET_LABEL20;
673 RET_LABEL20:(void)0;
674 }
675 var18 = var19;
676 }
677 if (var18){
678 {
679 var22 = abstract_collection__SequenceRead__first(var_previous);
680 }
681 {
682 var23 = local_var_init__FlowContext__is_variable_set(var22, var_variable);
683 }
684 var = var23;
685 goto RET_LABEL;
686 } else {
687 }
688 {
689 { /* Inline flow#FlowContext#previous (self) on <self:FlowContext> */
690 var26 = self->attrs[COLOR_flow__FlowContext___previous].val; /* _previous on <self:FlowContext> */
691 if (unlikely(var26 == NULL)) {
692 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
693 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 192);
694 show_backtrace(1);
695 }
696 var24 = var26;
697 RET_LABEL25:(void)0;
698 }
699 }
700 {
701 var27 = array__AbstractArrayRead__iterator(var24);
702 }
703 for(;;) {
704 {
705 var28 = array__ArrayIterator__is_ok(var27);
706 }
707 if(!var28) break;
708 {
709 var29 = array__ArrayIterator__item(var27);
710 }
711 var_p = var29;
712 {
713 var30 = local_var_init__FlowContext__is_variable_set(var_p, var_variable);
714 }
715 var31 = !var30;
716 if (var31){
717 var32 = 0;
718 var = var32;
719 goto RET_LABEL;
720 } else {
721 }
722 CONTINUE_label: (void)0;
723 {
724 array__ArrayIterator__next(var27); /* Direct call array#ArrayIterator#next on <var27:ArrayIterator[nullable Object]>*/
725 }
726 }
727 BREAK_label: (void)0;
728 {
729 { /* Inline local_var_init#FlowContext#set_vars (self) on <self:FlowContext> */
730 var35 = self->attrs[COLOR_local_var_init__FlowContext___set_vars].val; /* _set_vars on <self:FlowContext> */
731 if (unlikely(var35 == NULL)) {
732 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _set_vars");
733 PRINT_ERROR(" (%s:%d)\n", "src/local_var_init.nit", 92);
734 show_backtrace(1);
735 }
736 var33 = var35;
737 RET_LABEL34:(void)0;
738 }
739 }
740 {
741 ((void (*)(val*, val*))(var33->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var33, var_variable) /* add on <var33:Set[Variable]>*/;
742 }
743 var36 = 1;
744 var = var36;
745 goto RET_LABEL;
746 RET_LABEL:;
747 return var;
748 }
749 /* method local_var_init#FlowContext#is_variable_set for (self: Object, Variable): Bool */
750 short int VIRTUAL_local_var_init__FlowContext__is_variable_set(val* self, val* p0) {
751 short int var /* : Bool */;
752 short int var1 /* : Bool */;
753 var1 = local_var_init__FlowContext__is_variable_set(self, p0);
754 var = var1;
755 RET_LABEL:;
756 return var;
757 }
758 /* method local_var_init#ANode#accept_local_var_visitor for (self: ANode, LocalVarInitVisitor) */
759 void local_var_init__ANode__accept_local_var_visitor(val* self, val* p0) {
760 val* var_v /* var v: LocalVarInitVisitor */;
761 var_v = p0;
762 {
763 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__visit_all]))(self, var_v) /* visit_all on <self:ANode>*/;
764 }
765 RET_LABEL:;
766 }
767 /* method local_var_init#ANode#accept_local_var_visitor for (self: Object, LocalVarInitVisitor) */
768 void VIRTUAL_local_var_init__ANode__accept_local_var_visitor(val* self, val* p0) {
769 local_var_init__ANode__accept_local_var_visitor(self, p0); /* Direct call local_var_init#ANode#accept_local_var_visitor on <self:Object(ANode)>*/
770 RET_LABEL:;
771 }
772 /* method local_var_init#AVardeclExpr#accept_local_var_visitor for (self: AVardeclExpr, LocalVarInitVisitor) */
773 void local_var_init__AVardeclExpr__accept_local_var_visitor(val* self, val* p0) {
774 val* var_v /* var v: LocalVarInitVisitor */;
775 val* var /* : nullable AExpr */;
776 val* var1 /* : null */;
777 short int var2 /* : Bool */;
778 short int var3 /* : Bool */;
779 val* var_other /* var other: nullable Object */;
780 short int var5 /* : Bool */;
781 short int var7 /* : Bool */;
782 val* var8 /* : nullable Variable */;
783 val* var10 /* : nullable Variable */;
784 var_v = p0;
785 {
786 ((void (*)(val*, val*))(self->class->vft[COLOR_local_var_init__AVardeclExpr__accept_local_var_visitor]))(self, p0) /* accept_local_var_visitor on <self:AVardeclExpr>*/;
787 }
788 {
789 var = parser_nodes__AVardeclExpr__n_expr(self);
790 }
791 var1 = NULL;
792 if (var == NULL) {
793 var2 = 1; /* is null */
794 } else {
795 var2 = 0; /* arg is null but recv is not */
796 }
797 if (0) {
798 { /* Inline kernel#Object#== (var,var1) on <var:nullable AExpr> */
799 var_other = var1;
800 {
801 { /* Inline kernel#Object#is_same_instance (var,var_other) on <var:nullable AExpr(AExpr)> */
802 var7 = var == var_other;
803 var5 = var7;
804 goto RET_LABEL6;
805 RET_LABEL6:(void)0;
806 }
807 }
808 var3 = var5;
809 goto RET_LABEL4;
810 RET_LABEL4:(void)0;
811 }
812 var2 = var3;
813 }
814 if (var2){
815 {
816 { /* Inline scope#AVardeclExpr#variable (self) on <self:AVardeclExpr> */
817 var10 = self->attrs[COLOR_scope__AVardeclExpr___variable].val; /* _variable on <self:AVardeclExpr> */
818 var8 = var10;
819 RET_LABEL9:(void)0;
820 }
821 }
822 {
823 local_var_init__LocalVarInitVisitor__mark_is_unset(var_v, self, var8); /* Direct call local_var_init#LocalVarInitVisitor#mark_is_unset on <var_v:LocalVarInitVisitor>*/
824 }
825 } else {
826 }
827 RET_LABEL:;
828 }
829 /* method local_var_init#AVardeclExpr#accept_local_var_visitor for (self: Object, LocalVarInitVisitor) */
830 void VIRTUAL_local_var_init__AVardeclExpr__accept_local_var_visitor(val* self, val* p0) {
831 local_var_init__AVardeclExpr__accept_local_var_visitor(self, p0); /* Direct call local_var_init#AVardeclExpr#accept_local_var_visitor on <self:Object(AVardeclExpr)>*/
832 RET_LABEL:;
833 }
834 /* method local_var_init#AVarExpr#accept_local_var_visitor for (self: AVarExpr, LocalVarInitVisitor) */
835 void local_var_init__AVarExpr__accept_local_var_visitor(val* self, val* p0) {
836 val* var_v /* var v: LocalVarInitVisitor */;
837 val* var /* : nullable Variable */;
838 val* var2 /* : nullable Variable */;
839 var_v = p0;
840 {
841 ((void (*)(val*, val*))(self->class->vft[COLOR_local_var_init__AVarExpr__accept_local_var_visitor]))(self, p0) /* accept_local_var_visitor on <self:AVarExpr>*/;
842 }
843 {
844 { /* Inline scope#AVarFormExpr#variable (self) on <self:AVarExpr> */
845 var2 = self->attrs[COLOR_scope__AVarFormExpr___variable].val; /* _variable on <self:AVarExpr> */
846 var = var2;
847 RET_LABEL1:(void)0;
848 }
849 }
850 {
851 local_var_init__LocalVarInitVisitor__check_is_set(var_v, self, var); /* Direct call local_var_init#LocalVarInitVisitor#check_is_set on <var_v:LocalVarInitVisitor>*/
852 }
853 RET_LABEL:;
854 }
855 /* method local_var_init#AVarExpr#accept_local_var_visitor for (self: Object, LocalVarInitVisitor) */
856 void VIRTUAL_local_var_init__AVarExpr__accept_local_var_visitor(val* self, val* p0) {
857 local_var_init__AVarExpr__accept_local_var_visitor(self, p0); /* Direct call local_var_init#AVarExpr#accept_local_var_visitor on <self:Object(AVarExpr)>*/
858 RET_LABEL:;
859 }
860 /* method local_var_init#AVarAssignExpr#accept_local_var_visitor for (self: AVarAssignExpr, LocalVarInitVisitor) */
861 void local_var_init__AVarAssignExpr__accept_local_var_visitor(val* self, val* p0) {
862 val* var_v /* var v: LocalVarInitVisitor */;
863 val* var /* : nullable Variable */;
864 val* var2 /* : nullable Variable */;
865 var_v = p0;
866 {
867 ((void (*)(val*, val*))(self->class->vft[COLOR_local_var_init__AVarAssignExpr__accept_local_var_visitor]))(self, p0) /* accept_local_var_visitor on <self:AVarAssignExpr>*/;
868 }
869 {
870 { /* Inline scope#AVarFormExpr#variable (self) on <self:AVarAssignExpr> */
871 var2 = self->attrs[COLOR_scope__AVarFormExpr___variable].val; /* _variable on <self:AVarAssignExpr> */
872 var = var2;
873 RET_LABEL1:(void)0;
874 }
875 }
876 {
877 local_var_init__LocalVarInitVisitor__mark_is_set(var_v, self, var); /* Direct call local_var_init#LocalVarInitVisitor#mark_is_set on <var_v:LocalVarInitVisitor>*/
878 }
879 RET_LABEL:;
880 }
881 /* method local_var_init#AVarAssignExpr#accept_local_var_visitor for (self: Object, LocalVarInitVisitor) */
882 void VIRTUAL_local_var_init__AVarAssignExpr__accept_local_var_visitor(val* self, val* p0) {
883 local_var_init__AVarAssignExpr__accept_local_var_visitor(self, p0); /* Direct call local_var_init#AVarAssignExpr#accept_local_var_visitor on <self:Object(AVarAssignExpr)>*/
884 RET_LABEL:;
885 }
886 /* method local_var_init#AVarReassignExpr#accept_local_var_visitor for (self: AVarReassignExpr, LocalVarInitVisitor) */
887 void local_var_init__AVarReassignExpr__accept_local_var_visitor(val* self, val* p0) {
888 val* var_v /* var v: LocalVarInitVisitor */;
889 val* var /* : nullable Variable */;
890 val* var2 /* : nullable Variable */;
891 var_v = p0;
892 {
893 ((void (*)(val*, val*))(self->class->vft[COLOR_local_var_init__AVarReassignExpr__accept_local_var_visitor]))(self, p0) /* accept_local_var_visitor on <self:AVarReassignExpr>*/;
894 }
895 {
896 { /* Inline scope#AVarFormExpr#variable (self) on <self:AVarReassignExpr> */
897 var2 = self->attrs[COLOR_scope__AVarFormExpr___variable].val; /* _variable on <self:AVarReassignExpr> */
898 var = var2;
899 RET_LABEL1:(void)0;
900 }
901 }
902 {
903 local_var_init__LocalVarInitVisitor__check_is_set(var_v, self, var); /* Direct call local_var_init#LocalVarInitVisitor#check_is_set on <var_v:LocalVarInitVisitor>*/
904 }
905 RET_LABEL:;
906 }
907 /* method local_var_init#AVarReassignExpr#accept_local_var_visitor for (self: Object, LocalVarInitVisitor) */
908 void VIRTUAL_local_var_init__AVarReassignExpr__accept_local_var_visitor(val* self, val* p0) {
909 local_var_init__AVarReassignExpr__accept_local_var_visitor(self, p0); /* Direct call local_var_init#AVarReassignExpr#accept_local_var_visitor on <self:Object(AVarReassignExpr)>*/
910 RET_LABEL:;
911 }