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