misc/jenkins: fix checklicense.sh
[nit.git] / c_src / scope.sep.1.c
1 #include "scope.sep.0.h"
2 /* method scope#ToolContext#scope_phase for (self: ToolContext): Phase */
3 val* scope__ToolContext__scope_phase(val* self) {
4 val* var /* : Phase */;
5 val* var1 /* : Phase */;
6 var1 = self->attrs[COLOR_scope__ToolContext___scope_phase].val; /* _scope_phase on <self:ToolContext> */
7 if (unlikely(var1 == NULL)) {
8 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scope_phase");
9 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 25);
10 show_backtrace(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method scope#ToolContext#scope_phase for (self: Object): Phase */
17 val* VIRTUAL_scope__ToolContext__scope_phase(val* self) {
18 val* var /* : Phase */;
19 val* var1 /* : Phase */;
20 val* var3 /* : Phase */;
21 { /* Inline scope#ToolContext#scope_phase (self) on <self:Object(ToolContext)> */
22 var3 = self->attrs[COLOR_scope__ToolContext___scope_phase].val; /* _scope_phase on <self:Object(ToolContext)> */
23 if (unlikely(var3 == NULL)) {
24 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scope_phase");
25 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 25);
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 scope#ScopePhase#process_npropdef for (self: ScopePhase, APropdef) */
36 void scope__ScopePhase__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:ScopePhase> */
43 var2 = self->attrs[COLOR_phase__Phase___toolcontext].val; /* _toolcontext on <self:ScopePhase> */
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 scope__APropdef__do_scope(var_npropdef, var); /* Direct call scope#APropdef#do_scope on <var_npropdef:APropdef>*/
55 }
56 RET_LABEL:;
57 }
58 /* method scope#ScopePhase#process_npropdef for (self: Object, APropdef) */
59 void VIRTUAL_scope__ScopePhase__process_npropdef(val* self, val* p0) {
60 scope__ScopePhase__process_npropdef(self, p0); /* Direct call scope#ScopePhase#process_npropdef on <self:Object(ScopePhase)>*/
61 RET_LABEL:;
62 }
63 /* method scope#Variable#name for (self: Variable): String */
64 val* scope__Variable__name(val* self) {
65 val* var /* : String */;
66 val* var1 /* : String */;
67 var1 = self->attrs[COLOR_scope__Variable___name].val; /* _name on <self:Variable> */
68 if (unlikely(var1 == NULL)) {
69 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
70 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 36);
71 show_backtrace(1);
72 }
73 var = var1;
74 RET_LABEL:;
75 return var;
76 }
77 /* method scope#Variable#name for (self: Object): String */
78 val* VIRTUAL_scope__Variable__name(val* self) {
79 val* var /* : String */;
80 val* var1 /* : String */;
81 val* var3 /* : String */;
82 { /* Inline scope#Variable#name (self) on <self:Object(Variable)> */
83 var3 = self->attrs[COLOR_scope__Variable___name].val; /* _name on <self:Object(Variable)> */
84 if (unlikely(var3 == NULL)) {
85 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
86 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 36);
87 show_backtrace(1);
88 }
89 var1 = var3;
90 RET_LABEL2:(void)0;
91 }
92 var = var1;
93 RET_LABEL:;
94 return var;
95 }
96 /* method scope#Variable#to_s for (self: Variable): String */
97 val* scope__Variable__to_s(val* self) {
98 val* var /* : String */;
99 val* var1 /* : String */;
100 val* var3 /* : String */;
101 {
102 { /* Inline scope#Variable#name (self) on <self:Variable> */
103 var3 = self->attrs[COLOR_scope__Variable___name].val; /* _name on <self:Variable> */
104 if (unlikely(var3 == NULL)) {
105 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
106 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 36);
107 show_backtrace(1);
108 }
109 var1 = var3;
110 RET_LABEL2:(void)0;
111 }
112 }
113 var = var1;
114 goto RET_LABEL;
115 RET_LABEL:;
116 return var;
117 }
118 /* method scope#Variable#to_s for (self: Object): String */
119 val* VIRTUAL_scope__Variable__to_s(val* self) {
120 val* var /* : String */;
121 val* var1 /* : String */;
122 var1 = scope__Variable__to_s(self);
123 var = var1;
124 RET_LABEL:;
125 return var;
126 }
127 /* method scope#Variable#init for (self: Variable, String) */
128 void scope__Variable__init(val* self, val* p0) {
129 self->attrs[COLOR_scope__Variable___name].val = p0; /* _name on <self:Variable> */
130 RET_LABEL:;
131 }
132 /* method scope#Variable#init for (self: Object, String) */
133 void VIRTUAL_scope__Variable__init(val* self, val* p0) {
134 { /* Inline scope#Variable#init (self,p0) on <self:Object(Variable)> */
135 self->attrs[COLOR_scope__Variable___name].val = p0; /* _name on <self:Object(Variable)> */
136 RET_LABEL1:(void)0;
137 }
138 RET_LABEL:;
139 }
140 /* method scope#EscapeMark#name for (self: EscapeMark): nullable String */
141 val* scope__EscapeMark__name(val* self) {
142 val* var /* : nullable String */;
143 val* var1 /* : nullable String */;
144 var1 = self->attrs[COLOR_scope__EscapeMark___name].val; /* _name on <self:EscapeMark> */
145 var = var1;
146 RET_LABEL:;
147 return var;
148 }
149 /* method scope#EscapeMark#name for (self: Object): nullable String */
150 val* VIRTUAL_scope__EscapeMark__name(val* self) {
151 val* var /* : nullable String */;
152 val* var1 /* : nullable String */;
153 val* var3 /* : nullable String */;
154 { /* Inline scope#EscapeMark#name (self) on <self:Object(EscapeMark)> */
155 var3 = self->attrs[COLOR_scope__EscapeMark___name].val; /* _name on <self:Object(EscapeMark)> */
156 var1 = var3;
157 RET_LABEL2:(void)0;
158 }
159 var = var1;
160 RET_LABEL:;
161 return var;
162 }
163 /* method scope#EscapeMark#for_loop for (self: EscapeMark): Bool */
164 short int scope__EscapeMark__for_loop(val* self) {
165 short int var /* : Bool */;
166 short int var1 /* : Bool */;
167 var1 = self->attrs[COLOR_scope__EscapeMark___for_loop].s; /* _for_loop on <self:EscapeMark> */
168 var = var1;
169 RET_LABEL:;
170 return var;
171 }
172 /* method scope#EscapeMark#for_loop for (self: Object): Bool */
173 short int VIRTUAL_scope__EscapeMark__for_loop(val* self) {
174 short int var /* : Bool */;
175 short int var1 /* : Bool */;
176 short int var3 /* : Bool */;
177 { /* Inline scope#EscapeMark#for_loop (self) on <self:Object(EscapeMark)> */
178 var3 = self->attrs[COLOR_scope__EscapeMark___for_loop].s; /* _for_loop on <self:Object(EscapeMark)> */
179 var1 = var3;
180 RET_LABEL2:(void)0;
181 }
182 var = var1;
183 RET_LABEL:;
184 return var;
185 }
186 /* method scope#EscapeMark#continues for (self: EscapeMark): Array[AContinueExpr] */
187 val* scope__EscapeMark__continues(val* self) {
188 val* var /* : Array[AContinueExpr] */;
189 val* var1 /* : Array[AContinueExpr] */;
190 var1 = self->attrs[COLOR_scope__EscapeMark___continues].val; /* _continues on <self:EscapeMark> */
191 if (unlikely(var1 == NULL)) {
192 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _continues");
193 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 53);
194 show_backtrace(1);
195 }
196 var = var1;
197 RET_LABEL:;
198 return var;
199 }
200 /* method scope#EscapeMark#continues for (self: Object): Array[AContinueExpr] */
201 val* VIRTUAL_scope__EscapeMark__continues(val* self) {
202 val* var /* : Array[AContinueExpr] */;
203 val* var1 /* : Array[AContinueExpr] */;
204 val* var3 /* : Array[AContinueExpr] */;
205 { /* Inline scope#EscapeMark#continues (self) on <self:Object(EscapeMark)> */
206 var3 = self->attrs[COLOR_scope__EscapeMark___continues].val; /* _continues on <self:Object(EscapeMark)> */
207 if (unlikely(var3 == NULL)) {
208 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _continues");
209 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 53);
210 show_backtrace(1);
211 }
212 var1 = var3;
213 RET_LABEL2:(void)0;
214 }
215 var = var1;
216 RET_LABEL:;
217 return var;
218 }
219 /* method scope#EscapeMark#breaks for (self: EscapeMark): Array[ABreakExpr] */
220 val* scope__EscapeMark__breaks(val* self) {
221 val* var /* : Array[ABreakExpr] */;
222 val* var1 /* : Array[ABreakExpr] */;
223 var1 = self->attrs[COLOR_scope__EscapeMark___breaks].val; /* _breaks on <self:EscapeMark> */
224 if (unlikely(var1 == NULL)) {
225 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _breaks");
226 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 56);
227 show_backtrace(1);
228 }
229 var = var1;
230 RET_LABEL:;
231 return var;
232 }
233 /* method scope#EscapeMark#breaks for (self: Object): Array[ABreakExpr] */
234 val* VIRTUAL_scope__EscapeMark__breaks(val* self) {
235 val* var /* : Array[ABreakExpr] */;
236 val* var1 /* : Array[ABreakExpr] */;
237 val* var3 /* : Array[ABreakExpr] */;
238 { /* Inline scope#EscapeMark#breaks (self) on <self:Object(EscapeMark)> */
239 var3 = self->attrs[COLOR_scope__EscapeMark___breaks].val; /* _breaks on <self:Object(EscapeMark)> */
240 if (unlikely(var3 == NULL)) {
241 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _breaks");
242 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 56);
243 show_backtrace(1);
244 }
245 var1 = var3;
246 RET_LABEL2:(void)0;
247 }
248 var = var1;
249 RET_LABEL:;
250 return var;
251 }
252 /* method scope#EscapeMark#init for (self: EscapeMark, nullable String, Bool) */
253 void scope__EscapeMark__init(val* self, val* p0, short int p1) {
254 self->attrs[COLOR_scope__EscapeMark___name].val = p0; /* _name on <self:EscapeMark> */
255 self->attrs[COLOR_scope__EscapeMark___for_loop].s = p1; /* _for_loop on <self:EscapeMark> */
256 RET_LABEL:;
257 }
258 /* method scope#EscapeMark#init for (self: Object, nullable String, Bool) */
259 void VIRTUAL_scope__EscapeMark__init(val* self, val* p0, short int p1) {
260 { /* Inline scope#EscapeMark#init (self,p0,p1) on <self:Object(EscapeMark)> */
261 self->attrs[COLOR_scope__EscapeMark___name].val = p0; /* _name on <self:Object(EscapeMark)> */
262 self->attrs[COLOR_scope__EscapeMark___for_loop].s = p1; /* _for_loop on <self:Object(EscapeMark)> */
263 RET_LABEL1:(void)0;
264 }
265 RET_LABEL:;
266 }
267 /* method scope#ScopeVisitor#toolcontext for (self: ScopeVisitor): ToolContext */
268 val* scope__ScopeVisitor__toolcontext(val* self) {
269 val* var /* : ToolContext */;
270 val* var1 /* : ToolContext */;
271 var1 = self->attrs[COLOR_scope__ScopeVisitor___toolcontext].val; /* _toolcontext on <self:ScopeVisitor> */
272 if (unlikely(var1 == NULL)) {
273 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
274 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 68);
275 show_backtrace(1);
276 }
277 var = var1;
278 RET_LABEL:;
279 return var;
280 }
281 /* method scope#ScopeVisitor#toolcontext for (self: Object): ToolContext */
282 val* VIRTUAL_scope__ScopeVisitor__toolcontext(val* self) {
283 val* var /* : ToolContext */;
284 val* var1 /* : ToolContext */;
285 val* var3 /* : ToolContext */;
286 { /* Inline scope#ScopeVisitor#toolcontext (self) on <self:Object(ScopeVisitor)> */
287 var3 = self->attrs[COLOR_scope__ScopeVisitor___toolcontext].val; /* _toolcontext on <self:Object(ScopeVisitor)> */
288 if (unlikely(var3 == NULL)) {
289 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
290 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 68);
291 show_backtrace(1);
292 }
293 var1 = var3;
294 RET_LABEL2:(void)0;
295 }
296 var = var1;
297 RET_LABEL:;
298 return var;
299 }
300 /* method scope#ScopeVisitor#toolcontext= for (self: ScopeVisitor, ToolContext) */
301 void scope__ScopeVisitor__toolcontext_61d(val* self, val* p0) {
302 self->attrs[COLOR_scope__ScopeVisitor___toolcontext].val = p0; /* _toolcontext on <self:ScopeVisitor> */
303 RET_LABEL:;
304 }
305 /* method scope#ScopeVisitor#toolcontext= for (self: Object, ToolContext) */
306 void VIRTUAL_scope__ScopeVisitor__toolcontext_61d(val* self, val* p0) {
307 { /* Inline scope#ScopeVisitor#toolcontext= (self,p0) on <self:Object(ScopeVisitor)> */
308 self->attrs[COLOR_scope__ScopeVisitor___toolcontext].val = p0; /* _toolcontext on <self:Object(ScopeVisitor)> */
309 RET_LABEL1:(void)0;
310 }
311 RET_LABEL:;
312 }
313 /* method scope#ScopeVisitor#selfvariable for (self: ScopeVisitor): Variable */
314 val* scope__ScopeVisitor__selfvariable(val* self) {
315 val* var /* : Variable */;
316 val* var1 /* : Variable */;
317 var1 = self->attrs[COLOR_scope__ScopeVisitor___selfvariable].val; /* _selfvariable on <self:ScopeVisitor> */
318 if (unlikely(var1 == NULL)) {
319 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _selfvariable");
320 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 71);
321 show_backtrace(1);
322 }
323 var = var1;
324 RET_LABEL:;
325 return var;
326 }
327 /* method scope#ScopeVisitor#selfvariable for (self: Object): Variable */
328 val* VIRTUAL_scope__ScopeVisitor__selfvariable(val* self) {
329 val* var /* : Variable */;
330 val* var1 /* : Variable */;
331 val* var3 /* : Variable */;
332 { /* Inline scope#ScopeVisitor#selfvariable (self) on <self:Object(ScopeVisitor)> */
333 var3 = self->attrs[COLOR_scope__ScopeVisitor___selfvariable].val; /* _selfvariable on <self:Object(ScopeVisitor)> */
334 if (unlikely(var3 == NULL)) {
335 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _selfvariable");
336 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 71);
337 show_backtrace(1);
338 }
339 var1 = var3;
340 RET_LABEL2:(void)0;
341 }
342 var = var1;
343 RET_LABEL:;
344 return var;
345 }
346 /* method scope#ScopeVisitor#init for (self: ScopeVisitor, ToolContext) */
347 void scope__ScopeVisitor__init(val* self, val* p0) {
348 val* var_toolcontext /* var toolcontext: ToolContext */;
349 val* var /* : List[Scope] */;
350 val* var4 /* : List[Scope] */;
351 val* var5 /* : Scope */;
352 {
353 { /* Inline parser_nodes#Visitor#init (self) on <self:ScopeVisitor> */
354 RET_LABEL1:(void)0;
355 }
356 }
357 var_toolcontext = p0;
358 {
359 { /* Inline scope#ScopeVisitor#toolcontext= (self,var_toolcontext) on <self:ScopeVisitor> */
360 self->attrs[COLOR_scope__ScopeVisitor___toolcontext].val = var_toolcontext; /* _toolcontext on <self:ScopeVisitor> */
361 RET_LABEL2:(void)0;
362 }
363 }
364 {
365 { /* Inline scope#ScopeVisitor#scopes (self) on <self:ScopeVisitor> */
366 var4 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <self:ScopeVisitor> */
367 if (unlikely(var4 == NULL)) {
368 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes");
369 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 79);
370 show_backtrace(1);
371 }
372 var = var4;
373 RET_LABEL3:(void)0;
374 }
375 }
376 var5 = NEW_scope__Scope(&type_scope__Scope);
377 {
378 { /* Inline scope#Scope#init (var5) on <var5:Scope> */
379 RET_LABEL6:(void)0;
380 }
381 }
382 {
383 abstract_collection__Sequence__add(var, var5); /* Direct call abstract_collection#Sequence#add on <var:List[Scope]>*/
384 }
385 RET_LABEL:;
386 }
387 /* method scope#ScopeVisitor#init for (self: Object, ToolContext) */
388 void VIRTUAL_scope__ScopeVisitor__init(val* self, val* p0) {
389 scope__ScopeVisitor__init(self, p0); /* Direct call scope#ScopeVisitor#init on <self:Object(ScopeVisitor)>*/
390 RET_LABEL:;
391 }
392 /* method scope#ScopeVisitor#scopes for (self: ScopeVisitor): List[Scope] */
393 val* scope__ScopeVisitor__scopes(val* self) {
394 val* var /* : List[Scope] */;
395 val* var1 /* : List[Scope] */;
396 var1 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <self:ScopeVisitor> */
397 if (unlikely(var1 == NULL)) {
398 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes");
399 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 79);
400 show_backtrace(1);
401 }
402 var = var1;
403 RET_LABEL:;
404 return var;
405 }
406 /* method scope#ScopeVisitor#scopes for (self: Object): List[Scope] */
407 val* VIRTUAL_scope__ScopeVisitor__scopes(val* self) {
408 val* var /* : List[Scope] */;
409 val* var1 /* : List[Scope] */;
410 val* var3 /* : List[Scope] */;
411 { /* Inline scope#ScopeVisitor#scopes (self) on <self:Object(ScopeVisitor)> */
412 var3 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <self:Object(ScopeVisitor)> */
413 if (unlikely(var3 == NULL)) {
414 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes");
415 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 79);
416 show_backtrace(1);
417 }
418 var1 = var3;
419 RET_LABEL2:(void)0;
420 }
421 var = var1;
422 RET_LABEL:;
423 return var;
424 }
425 /* method scope#ScopeVisitor#register_variable for (self: ScopeVisitor, ANode, Variable): Bool */
426 short int scope__ScopeVisitor__register_variable(val* self, val* p0, val* p1) {
427 short int var /* : Bool */;
428 val* var_node /* var node: ANode */;
429 val* var_variable /* var variable: Variable */;
430 val* var1 /* : String */;
431 val* var3 /* : String */;
432 val* var_name /* var name: String */;
433 val* var4 /* : nullable Variable */;
434 val* var_found /* var found: nullable Variable */;
435 val* var5 /* : null */;
436 short int var6 /* : Bool */;
437 short int var7 /* : Bool */;
438 val* var_other /* var other: nullable Object */;
439 short int var9 /* : Bool */;
440 short int var10 /* : Bool */;
441 short int var11 /* : Bool */;
442 static val* varonce;
443 val* var12 /* : String */;
444 char* var13 /* : NativeString */;
445 long var14 /* : Int */;
446 val* var15 /* : FlatString */;
447 static val* varonce16;
448 val* var17 /* : String */;
449 char* var18 /* : NativeString */;
450 long var19 /* : Int */;
451 val* var20 /* : FlatString */;
452 val* var21 /* : Array[Object] */;
453 long var22 /* : Int */;
454 val* var23 /* : NativeArray[Object] */;
455 val* var24 /* : String */;
456 short int var25 /* : Bool */;
457 val* var26 /* : List[Scope] */;
458 val* var28 /* : List[Scope] */;
459 val* var29 /* : nullable Object */;
460 val* var30 /* : HashMap[String, Variable] */;
461 val* var32 /* : HashMap[String, Variable] */;
462 short int var33 /* : Bool */;
463 var_node = p0;
464 var_variable = p1;
465 {
466 { /* Inline scope#Variable#name (var_variable) on <var_variable:Variable> */
467 var3 = var_variable->attrs[COLOR_scope__Variable___name].val; /* _name on <var_variable:Variable> */
468 if (unlikely(var3 == NULL)) {
469 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
470 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 36);
471 show_backtrace(1);
472 }
473 var1 = var3;
474 RET_LABEL2:(void)0;
475 }
476 }
477 var_name = var1;
478 {
479 var4 = scope__ScopeVisitor__search_variable(self, var_name);
480 }
481 var_found = var4;
482 var5 = NULL;
483 if (var_found == NULL) {
484 var6 = 0; /* is null */
485 } else {
486 var6 = 1; /* arg is null and recv is not */
487 }
488 if (0) {
489 { /* Inline kernel#Object#!= (var_found,var5) on <var_found:nullable Variable> */
490 var_other = var5;
491 {
492 var10 = ((short int (*)(val*, val*))(var_found->class->vft[COLOR_kernel__Object___61d_61d]))(var_found, var_other) /* == on <var_found:nullable Variable(Variable)>*/;
493 var9 = var10;
494 }
495 var11 = !var9;
496 var7 = var11;
497 goto RET_LABEL8;
498 RET_LABEL8:(void)0;
499 }
500 var6 = var7;
501 }
502 if (var6){
503 if (varonce) {
504 var12 = varonce;
505 } else {
506 var13 = "Error: A variable named `";
507 var14 = 25;
508 var15 = string__NativeString__to_s_with_length(var13, var14);
509 var12 = var15;
510 varonce = var12;
511 }
512 if (varonce16) {
513 var17 = varonce16;
514 } else {
515 var18 = "\' already exists";
516 var19 = 16;
517 var20 = string__NativeString__to_s_with_length(var18, var19);
518 var17 = var20;
519 varonce16 = var17;
520 }
521 var21 = NEW_array__Array(&type_array__Arraykernel__Object);
522 { /* var21 = array_instance Array[Object] */
523 var22 = 3;
524 var23 = NEW_array__NativeArray(var22, &type_array__NativeArraykernel__Object);
525 ((struct instance_array__NativeArray*)var23)->values[0] = (val*) var12;
526 ((struct instance_array__NativeArray*)var23)->values[1] = (val*) var_name;
527 ((struct instance_array__NativeArray*)var23)->values[2] = (val*) var17;
528 {
529 ((void (*)(val*, val*, long))(var21->class->vft[COLOR_array__Array__with_native]))(var21, var23, var22) /* with_native on <var21:Array[Object]>*/;
530 }
531 }
532 {
533 var24 = ((val* (*)(val*))(var21->class->vft[COLOR_string__Object__to_s]))(var21) /* to_s on <var21:Array[Object]>*/;
534 }
535 {
536 scope__ScopeVisitor__error(self, var_node, var24); /* Direct call scope#ScopeVisitor#error on <self:ScopeVisitor>*/
537 }
538 var25 = 0;
539 var = var25;
540 goto RET_LABEL;
541 } else {
542 }
543 {
544 { /* Inline scope#ScopeVisitor#scopes (self) on <self:ScopeVisitor> */
545 var28 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <self:ScopeVisitor> */
546 if (unlikely(var28 == NULL)) {
547 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes");
548 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 79);
549 show_backtrace(1);
550 }
551 var26 = var28;
552 RET_LABEL27:(void)0;
553 }
554 }
555 {
556 var29 = list__List__first(var26);
557 }
558 {
559 { /* Inline scope#Scope#variables (var29) on <var29:nullable Object(Scope)> */
560 var32 = var29->attrs[COLOR_scope__Scope___variables].val; /* _variables on <var29:nullable Object(Scope)> */
561 if (unlikely(var32 == NULL)) {
562 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _variables");
563 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 210);
564 show_backtrace(1);
565 }
566 var30 = var32;
567 RET_LABEL31:(void)0;
568 }
569 }
570 {
571 hash_collection__HashMap___91d_93d_61d(var30, var_name, var_variable); /* Direct call hash_collection#HashMap#[]= on <var30:HashMap[String, Variable]>*/
572 }
573 var33 = 1;
574 var = var33;
575 goto RET_LABEL;
576 RET_LABEL:;
577 return var;
578 }
579 /* method scope#ScopeVisitor#register_variable for (self: Object, ANode, Variable): Bool */
580 short int VIRTUAL_scope__ScopeVisitor__register_variable(val* self, val* p0, val* p1) {
581 short int var /* : Bool */;
582 short int var1 /* : Bool */;
583 var1 = scope__ScopeVisitor__register_variable(self, p0, p1);
584 var = var1;
585 RET_LABEL:;
586 return var;
587 }
588 /* method scope#ScopeVisitor#search_variable for (self: ScopeVisitor, String): nullable Variable */
589 val* scope__ScopeVisitor__search_variable(val* self, val* p0) {
590 val* var /* : nullable Variable */;
591 val* var_name /* var name: String */;
592 val* var1 /* : List[Scope] */;
593 val* var3 /* : List[Scope] */;
594 val* var4 /* : ListIterator[nullable Object] */;
595 short int var5 /* : Bool */;
596 val* var6 /* : nullable Object */;
597 val* var_scope /* var scope: Scope */;
598 val* var7 /* : nullable Variable */;
599 val* var_res /* var res: nullable Variable */;
600 val* var8 /* : null */;
601 short int var9 /* : Bool */;
602 short int var10 /* : Bool */;
603 val* var_other /* var other: nullable Object */;
604 short int var12 /* : Bool */;
605 short int var13 /* : Bool */;
606 short int var14 /* : Bool */;
607 val* var15 /* : null */;
608 var_name = p0;
609 {
610 { /* Inline scope#ScopeVisitor#scopes (self) on <self:ScopeVisitor> */
611 var3 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <self:ScopeVisitor> */
612 if (unlikely(var3 == NULL)) {
613 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes");
614 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 79);
615 show_backtrace(1);
616 }
617 var1 = var3;
618 RET_LABEL2:(void)0;
619 }
620 }
621 {
622 var4 = list__List__iterator(var1);
623 }
624 for(;;) {
625 {
626 var5 = list__ListIterator__is_ok(var4);
627 }
628 if(!var5) break;
629 {
630 var6 = list__ListIterator__item(var4);
631 }
632 var_scope = var6;
633 {
634 var7 = scope__Scope__get_variable(var_scope, var_name);
635 }
636 var_res = var7;
637 var8 = NULL;
638 if (var_res == NULL) {
639 var9 = 0; /* is null */
640 } else {
641 var9 = 1; /* arg is null and recv is not */
642 }
643 if (0) {
644 { /* Inline kernel#Object#!= (var_res,var8) on <var_res:nullable Variable> */
645 var_other = var8;
646 {
647 var13 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable Variable(Variable)>*/;
648 var12 = var13;
649 }
650 var14 = !var12;
651 var10 = var14;
652 goto RET_LABEL11;
653 RET_LABEL11:(void)0;
654 }
655 var9 = var10;
656 }
657 if (var9){
658 var = var_res;
659 goto RET_LABEL;
660 } else {
661 }
662 CONTINUE_label: (void)0;
663 {
664 list__ListIterator__next(var4); /* Direct call list#ListIterator#next on <var4:ListIterator[nullable Object]>*/
665 }
666 }
667 BREAK_label: (void)0;
668 var15 = NULL;
669 var = var15;
670 goto RET_LABEL;
671 RET_LABEL:;
672 return var;
673 }
674 /* method scope#ScopeVisitor#search_variable for (self: Object, String): nullable Variable */
675 val* VIRTUAL_scope__ScopeVisitor__search_variable(val* self, val* p0) {
676 val* var /* : nullable Variable */;
677 val* var1 /* : nullable Variable */;
678 var1 = scope__ScopeVisitor__search_variable(self, p0);
679 var = var1;
680 RET_LABEL:;
681 return var;
682 }
683 /* method scope#ScopeVisitor#visit for (self: ScopeVisitor, ANode) */
684 void scope__ScopeVisitor__visit(val* self, val* p0) {
685 val* var_n /* var n: ANode */;
686 var_n = p0;
687 {
688 ((void (*)(val*, val*))(var_n->class->vft[COLOR_scope__ANode__accept_scope_visitor]))(var_n, self) /* accept_scope_visitor on <var_n:ANode>*/;
689 }
690 RET_LABEL:;
691 }
692 /* method scope#ScopeVisitor#visit for (self: Object, ANode) */
693 void VIRTUAL_scope__ScopeVisitor__visit(val* self, val* p0) {
694 scope__ScopeVisitor__visit(self, p0); /* Direct call scope#ScopeVisitor#visit on <self:Object(ScopeVisitor)>*/
695 RET_LABEL:;
696 }
697 /* method scope#ScopeVisitor#enter_visit_block for (self: ScopeVisitor, nullable AExpr, nullable EscapeMark) */
698 void scope__ScopeVisitor__enter_visit_block(val* self, val* p0, val* p1) {
699 val* var_node /* var node: nullable AExpr */;
700 val* var_escapemark /* var escapemark: nullable EscapeMark */;
701 val* var /* : null */;
702 short int var1 /* : Bool */;
703 short int var2 /* : Bool */;
704 val* var_other /* var other: nullable Object */;
705 short int var4 /* : Bool */;
706 short int var6 /* : Bool */;
707 val* var7 /* : Scope */;
708 val* var_scope /* var scope: Scope */;
709 val* var10 /* : List[Scope] */;
710 val* var12 /* : List[Scope] */;
711 val* var13 /* : List[Scope] */;
712 val* var15 /* : List[Scope] */;
713 val* var16 /* : nullable Object */;
714 var_node = p0;
715 var_escapemark = p1;
716 var = NULL;
717 if (var_node == NULL) {
718 var1 = 1; /* is null */
719 } else {
720 var1 = 0; /* arg is null but recv is not */
721 }
722 if (0) {
723 { /* Inline kernel#Object#== (var_node,var) on <var_node:nullable AExpr> */
724 var_other = var;
725 {
726 { /* Inline kernel#Object#is_same_instance (var_node,var_other) on <var_node:nullable AExpr(AExpr)> */
727 var6 = var_node == var_other;
728 var4 = var6;
729 goto RET_LABEL5;
730 RET_LABEL5:(void)0;
731 }
732 }
733 var2 = var4;
734 goto RET_LABEL3;
735 RET_LABEL3:(void)0;
736 }
737 var1 = var2;
738 }
739 if (var1){
740 goto RET_LABEL;
741 } else {
742 }
743 var7 = NEW_scope__Scope(&type_scope__Scope);
744 {
745 { /* Inline scope#Scope#init (var7) on <var7:Scope> */
746 RET_LABEL8:(void)0;
747 }
748 }
749 var_scope = var7;
750 {
751 { /* Inline scope#Scope#escapemark= (var_scope,var_escapemark) on <var_scope:Scope> */
752 var_scope->attrs[COLOR_scope__Scope___escapemark].val = var_escapemark; /* _escapemark on <var_scope:Scope> */
753 RET_LABEL9:(void)0;
754 }
755 }
756 {
757 { /* Inline scope#ScopeVisitor#scopes (self) on <self:ScopeVisitor> */
758 var12 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <self:ScopeVisitor> */
759 if (unlikely(var12 == NULL)) {
760 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes");
761 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 79);
762 show_backtrace(1);
763 }
764 var10 = var12;
765 RET_LABEL11:(void)0;
766 }
767 }
768 {
769 list__List__unshift(var10, var_scope); /* Direct call list#List#unshift on <var10:List[Scope]>*/
770 }
771 {
772 parser_nodes__Visitor__enter_visit(self, var_node); /* Direct call parser_nodes#Visitor#enter_visit on <self:ScopeVisitor>*/
773 }
774 {
775 { /* Inline scope#ScopeVisitor#scopes (self) on <self:ScopeVisitor> */
776 var15 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <self:ScopeVisitor> */
777 if (unlikely(var15 == NULL)) {
778 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes");
779 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 79);
780 show_backtrace(1);
781 }
782 var13 = var15;
783 RET_LABEL14:(void)0;
784 }
785 }
786 {
787 var16 = list__List__shift(var13);
788 }
789 var16;
790 RET_LABEL:;
791 }
792 /* method scope#ScopeVisitor#enter_visit_block for (self: Object, nullable AExpr, nullable EscapeMark) */
793 void VIRTUAL_scope__ScopeVisitor__enter_visit_block(val* self, val* p0, val* p1) {
794 scope__ScopeVisitor__enter_visit_block(self, p0, p1); /* Direct call scope#ScopeVisitor#enter_visit_block on <self:Object(ScopeVisitor)>*/
795 RET_LABEL:;
796 }
797 /* method scope#ScopeVisitor#search_label for (self: ScopeVisitor, String): nullable EscapeMark */
798 val* scope__ScopeVisitor__search_label(val* self, val* p0) {
799 val* var /* : nullable EscapeMark */;
800 val* var_name /* var name: String */;
801 val* var1 /* : List[Scope] */;
802 val* var3 /* : List[Scope] */;
803 val* var4 /* : ListIterator[nullable Object] */;
804 short int var5 /* : Bool */;
805 val* var6 /* : nullable Object */;
806 val* var_scope /* var scope: Scope */;
807 val* var7 /* : nullable EscapeMark */;
808 val* var9 /* : nullable EscapeMark */;
809 val* var_res /* var res: nullable EscapeMark */;
810 short int var10 /* : Bool */;
811 val* var11 /* : null */;
812 short int var12 /* : Bool */;
813 short int var13 /* : Bool */;
814 val* var_other /* var other: nullable Object */;
815 short int var15 /* : Bool */;
816 short int var16 /* : Bool */;
817 short int var17 /* : Bool */;
818 short int var_ /* var : Bool */;
819 val* var18 /* : nullable String */;
820 val* var20 /* : nullable String */;
821 short int var21 /* : Bool */;
822 short int var22 /* : Bool */;
823 val* var23 /* : null */;
824 var_name = p0;
825 {
826 { /* Inline scope#ScopeVisitor#scopes (self) on <self:ScopeVisitor> */
827 var3 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <self:ScopeVisitor> */
828 if (unlikely(var3 == NULL)) {
829 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes");
830 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 79);
831 show_backtrace(1);
832 }
833 var1 = var3;
834 RET_LABEL2:(void)0;
835 }
836 }
837 {
838 var4 = list__List__iterator(var1);
839 }
840 for(;;) {
841 {
842 var5 = list__ListIterator__is_ok(var4);
843 }
844 if(!var5) break;
845 {
846 var6 = list__ListIterator__item(var4);
847 }
848 var_scope = var6;
849 {
850 { /* Inline scope#Scope#escapemark (var_scope) on <var_scope:Scope> */
851 var9 = var_scope->attrs[COLOR_scope__Scope___escapemark].val; /* _escapemark on <var_scope:Scope> */
852 var7 = var9;
853 RET_LABEL8:(void)0;
854 }
855 }
856 var_res = var7;
857 var11 = NULL;
858 if (var_res == NULL) {
859 var12 = 0; /* is null */
860 } else {
861 var12 = 1; /* arg is null and recv is not */
862 }
863 if (0) {
864 { /* Inline kernel#Object#!= (var_res,var11) on <var_res:nullable EscapeMark> */
865 var_other = var11;
866 {
867 var16 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable EscapeMark(EscapeMark)>*/;
868 var15 = var16;
869 }
870 var17 = !var15;
871 var13 = var17;
872 goto RET_LABEL14;
873 RET_LABEL14:(void)0;
874 }
875 var12 = var13;
876 }
877 var_ = var12;
878 if (var12){
879 {
880 { /* Inline scope#EscapeMark#name (var_res) on <var_res:nullable EscapeMark(EscapeMark)> */
881 var20 = var_res->attrs[COLOR_scope__EscapeMark___name].val; /* _name on <var_res:nullable EscapeMark(EscapeMark)> */
882 var18 = var20;
883 RET_LABEL19:(void)0;
884 }
885 }
886 if (var18 == NULL) {
887 var21 = 0; /* <var_name:String> cannot be null */
888 } else {
889 var22 = string__FlatString___61d_61d(var18, var_name);
890 var21 = var22;
891 }
892 var10 = var21;
893 } else {
894 var10 = var_;
895 }
896 if (var10){
897 var = var_res;
898 goto RET_LABEL;
899 } else {
900 }
901 CONTINUE_label: (void)0;
902 {
903 list__ListIterator__next(var4); /* Direct call list#ListIterator#next on <var4:ListIterator[nullable Object]>*/
904 }
905 }
906 BREAK_label: (void)0;
907 var23 = NULL;
908 var = var23;
909 goto RET_LABEL;
910 RET_LABEL:;
911 return var;
912 }
913 /* method scope#ScopeVisitor#search_label for (self: Object, String): nullable EscapeMark */
914 val* VIRTUAL_scope__ScopeVisitor__search_label(val* self, val* p0) {
915 val* var /* : nullable EscapeMark */;
916 val* var1 /* : nullable EscapeMark */;
917 var1 = scope__ScopeVisitor__search_label(self, p0);
918 var = var1;
919 RET_LABEL:;
920 return var;
921 }
922 /* method scope#ScopeVisitor#make_escape_mark for (self: ScopeVisitor, nullable ALabel, Bool): EscapeMark */
923 val* scope__ScopeVisitor__make_escape_mark(val* self, val* p0, short int p1) {
924 val* var /* : EscapeMark */;
925 val* var_nlabel /* var nlabel: nullable ALabel */;
926 short int var_for_loop /* var for_loop: Bool */;
927 val* var1 /* : null */;
928 short int var2 /* : Bool */;
929 short int var3 /* : Bool */;
930 val* var_other /* var other: nullable Object */;
931 short int var5 /* : Bool */;
932 short int var6 /* : Bool */;
933 short int var7 /* : Bool */;
934 val* var8 /* : nullable TId */;
935 val* var_nid /* var nid: nullable TId */;
936 val* var9 /* : null */;
937 short int var10 /* : Bool */;
938 short int var11 /* : Bool */;
939 val* var_other13 /* var other: nullable Object */;
940 short int var14 /* : Bool */;
941 short int var16 /* : Bool */;
942 static val* varonce;
943 val* var17 /* : String */;
944 char* var18 /* : NativeString */;
945 long var19 /* : Int */;
946 val* var20 /* : FlatString */;
947 val* var21 /* : nullable EscapeMark */;
948 val* var_res /* var res: nullable EscapeMark */;
949 val* var22 /* : null */;
950 short int var23 /* : Bool */;
951 short int var24 /* : Bool */;
952 short int var26 /* : Bool */;
953 short int var27 /* : Bool */;
954 short int var28 /* : Bool */;
955 static val* varonce29;
956 val* var30 /* : String */;
957 char* var31 /* : NativeString */;
958 long var32 /* : Int */;
959 val* var33 /* : FlatString */;
960 static val* varonce34;
961 val* var35 /* : String */;
962 char* var36 /* : NativeString */;
963 long var37 /* : Int */;
964 val* var38 /* : FlatString */;
965 val* var_name /* var name: nullable String */;
966 val* var39 /* : String */;
967 val* var40 /* : nullable EscapeMark */;
968 val* var_found /* var found: nullable EscapeMark */;
969 val* var41 /* : null */;
970 short int var42 /* : Bool */;
971 short int var43 /* : Bool */;
972 short int var45 /* : Bool */;
973 short int var46 /* : Bool */;
974 short int var47 /* : Bool */;
975 static val* varonce48;
976 val* var49 /* : String */;
977 char* var50 /* : NativeString */;
978 long var51 /* : Int */;
979 val* var52 /* : FlatString */;
980 static val* varonce53;
981 val* var54 /* : String */;
982 char* var55 /* : NativeString */;
983 long var56 /* : Int */;
984 val* var57 /* : FlatString */;
985 val* var58 /* : Array[Object] */;
986 long var59 /* : Int */;
987 val* var60 /* : NativeArray[Object] */;
988 val* var61 /* : String */;
989 val* var62 /* : null */;
990 val* var63 /* : EscapeMark */;
991 val* var_res65 /* var res: EscapeMark */;
992 var_nlabel = p0;
993 var_for_loop = p1;
994 var1 = NULL;
995 if (var_nlabel == NULL) {
996 var2 = 0; /* is null */
997 } else {
998 var2 = 1; /* arg is null and recv is not */
999 }
1000 if (0) {
1001 { /* Inline kernel#Object#!= (var_nlabel,var1) on <var_nlabel:nullable ALabel> */
1002 var_other = var1;
1003 {
1004 var6 = ((short int (*)(val*, val*))(var_nlabel->class->vft[COLOR_kernel__Object___61d_61d]))(var_nlabel, var_other) /* == on <var_nlabel:nullable ALabel(ALabel)>*/;
1005 var5 = var6;
1006 }
1007 var7 = !var5;
1008 var3 = var7;
1009 goto RET_LABEL4;
1010 RET_LABEL4:(void)0;
1011 }
1012 var2 = var3;
1013 }
1014 if (var2){
1015 {
1016 var8 = parser_nodes__ALabel__n_id(var_nlabel);
1017 }
1018 var_nid = var8;
1019 var9 = NULL;
1020 if (var_nid == NULL) {
1021 var10 = 1; /* is null */
1022 } else {
1023 var10 = 0; /* arg is null but recv is not */
1024 }
1025 if (0) {
1026 { /* Inline kernel#Object#== (var_nid,var9) on <var_nid:nullable TId> */
1027 var_other13 = var9;
1028 {
1029 { /* Inline kernel#Object#is_same_instance (var_nid,var_other13) on <var_nid:nullable TId(TId)> */
1030 var16 = var_nid == var_other13;
1031 var14 = var16;
1032 goto RET_LABEL15;
1033 RET_LABEL15:(void)0;
1034 }
1035 }
1036 var11 = var14;
1037 goto RET_LABEL12;
1038 RET_LABEL12:(void)0;
1039 }
1040 var10 = var11;
1041 }
1042 if (var10){
1043 if (varonce) {
1044 var17 = varonce;
1045 } else {
1046 var18 = "";
1047 var19 = 0;
1048 var20 = string__NativeString__to_s_with_length(var18, var19);
1049 var17 = var20;
1050 varonce = var17;
1051 }
1052 {
1053 var21 = scope__ScopeVisitor__search_label(self, var17);
1054 }
1055 var_res = var21;
1056 var22 = NULL;
1057 if (var_res == NULL) {
1058 var23 = 0; /* is null */
1059 } else {
1060 var23 = 1; /* arg is null and recv is not */
1061 }
1062 if (0) {
1063 { /* Inline kernel#Object#!= (var_res,var22) on <var_res:nullable EscapeMark> */
1064 var_other = var22;
1065 {
1066 var27 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable EscapeMark(EscapeMark)>*/;
1067 var26 = var27;
1068 }
1069 var28 = !var26;
1070 var24 = var28;
1071 goto RET_LABEL25;
1072 RET_LABEL25:(void)0;
1073 }
1074 var23 = var24;
1075 }
1076 if (var23){
1077 if (varonce29) {
1078 var30 = varonce29;
1079 } else {
1080 var31 = "Syntax error: anonymous label already defined.";
1081 var32 = 46;
1082 var33 = string__NativeString__to_s_with_length(var31, var32);
1083 var30 = var33;
1084 varonce29 = var30;
1085 }
1086 {
1087 scope__ScopeVisitor__error(self, var_nlabel, var30); /* Direct call scope#ScopeVisitor#error on <self:ScopeVisitor>*/
1088 }
1089 } else {
1090 }
1091 if (varonce34) {
1092 var35 = varonce34;
1093 } else {
1094 var36 = "";
1095 var37 = 0;
1096 var38 = string__NativeString__to_s_with_length(var36, var37);
1097 var35 = var38;
1098 varonce34 = var35;
1099 }
1100 var_name = var35;
1101 } else {
1102 {
1103 var39 = lexer_work__Token__text(var_nid);
1104 }
1105 var_name = var39;
1106 {
1107 var40 = scope__ScopeVisitor__search_label(self, var_name);
1108 }
1109 var_found = var40;
1110 var41 = NULL;
1111 if (var_found == NULL) {
1112 var42 = 0; /* is null */
1113 } else {
1114 var42 = 1; /* arg is null and recv is not */
1115 }
1116 if (0) {
1117 { /* Inline kernel#Object#!= (var_found,var41) on <var_found:nullable EscapeMark> */
1118 var_other = var41;
1119 {
1120 var46 = ((short int (*)(val*, val*))(var_found->class->vft[COLOR_kernel__Object___61d_61d]))(var_found, var_other) /* == on <var_found:nullable EscapeMark(EscapeMark)>*/;
1121 var45 = var46;
1122 }
1123 var47 = !var45;
1124 var43 = var47;
1125 goto RET_LABEL44;
1126 RET_LABEL44:(void)0;
1127 }
1128 var42 = var43;
1129 }
1130 if (var42){
1131 if (varonce48) {
1132 var49 = varonce48;
1133 } else {
1134 var50 = "Syntax error: label ";
1135 var51 = 20;
1136 var52 = string__NativeString__to_s_with_length(var50, var51);
1137 var49 = var52;
1138 varonce48 = var49;
1139 }
1140 if (varonce53) {
1141 var54 = varonce53;
1142 } else {
1143 var55 = " already defined.";
1144 var56 = 17;
1145 var57 = string__NativeString__to_s_with_length(var55, var56);
1146 var54 = var57;
1147 varonce53 = var54;
1148 }
1149 var58 = NEW_array__Array(&type_array__Arraykernel__Object);
1150 { /* var58 = array_instance Array[Object] */
1151 var59 = 3;
1152 var60 = NEW_array__NativeArray(var59, &type_array__NativeArraykernel__Object);
1153 ((struct instance_array__NativeArray*)var60)->values[0] = (val*) var49;
1154 ((struct instance_array__NativeArray*)var60)->values[1] = (val*) var_name;
1155 ((struct instance_array__NativeArray*)var60)->values[2] = (val*) var54;
1156 {
1157 ((void (*)(val*, val*, long))(var58->class->vft[COLOR_array__Array__with_native]))(var58, var60, var59) /* with_native on <var58:Array[Object]>*/;
1158 }
1159 }
1160 {
1161 var61 = ((val* (*)(val*))(var58->class->vft[COLOR_string__Object__to_s]))(var58) /* to_s on <var58:Array[Object]>*/;
1162 }
1163 {
1164 scope__ScopeVisitor__error(self, var_nlabel, var61); /* Direct call scope#ScopeVisitor#error on <self:ScopeVisitor>*/
1165 }
1166 } else {
1167 }
1168 }
1169 } else {
1170 var62 = NULL;
1171 var_name = var62;
1172 }
1173 var63 = NEW_scope__EscapeMark(&type_scope__EscapeMark);
1174 {
1175 { /* Inline scope#EscapeMark#init (var63,var_name,var_for_loop) on <var63:EscapeMark> */
1176 var63->attrs[COLOR_scope__EscapeMark___name].val = var_name; /* _name on <var63:EscapeMark> */
1177 var63->attrs[COLOR_scope__EscapeMark___for_loop].s = var_for_loop; /* _for_loop on <var63:EscapeMark> */
1178 RET_LABEL64:(void)0;
1179 }
1180 }
1181 var_res65 = var63;
1182 var = var_res65;
1183 goto RET_LABEL;
1184 RET_LABEL:;
1185 return var;
1186 }
1187 /* method scope#ScopeVisitor#make_escape_mark for (self: Object, nullable ALabel, Bool): EscapeMark */
1188 val* VIRTUAL_scope__ScopeVisitor__make_escape_mark(val* self, val* p0, short int p1) {
1189 val* var /* : EscapeMark */;
1190 val* var1 /* : EscapeMark */;
1191 var1 = scope__ScopeVisitor__make_escape_mark(self, p0, p1);
1192 var = var1;
1193 RET_LABEL:;
1194 return var;
1195 }
1196 /* method scope#ScopeVisitor#get_escapemark for (self: ScopeVisitor, ANode, nullable ALabel): nullable EscapeMark */
1197 val* scope__ScopeVisitor__get_escapemark(val* self, val* p0, val* p1) {
1198 val* var /* : nullable EscapeMark */;
1199 val* var_node /* var node: ANode */;
1200 val* var_nlabel /* var nlabel: nullable ALabel */;
1201 val* var1 /* : null */;
1202 short int var2 /* : Bool */;
1203 short int var3 /* : Bool */;
1204 val* var_other /* var other: nullable Object */;
1205 short int var5 /* : Bool */;
1206 short int var6 /* : Bool */;
1207 short int var7 /* : Bool */;
1208 val* var8 /* : nullable TId */;
1209 val* var_nid /* var nid: nullable TId */;
1210 val* var9 /* : null */;
1211 short int var10 /* : Bool */;
1212 short int var11 /* : Bool */;
1213 val* var_other13 /* var other: nullable Object */;
1214 short int var14 /* : Bool */;
1215 short int var16 /* : Bool */;
1216 static val* varonce;
1217 val* var17 /* : String */;
1218 char* var18 /* : NativeString */;
1219 long var19 /* : Int */;
1220 val* var20 /* : FlatString */;
1221 val* var21 /* : nullable EscapeMark */;
1222 val* var_res /* var res: nullable EscapeMark */;
1223 val* var22 /* : null */;
1224 short int var23 /* : Bool */;
1225 short int var24 /* : Bool */;
1226 short int var26 /* : Bool */;
1227 short int var28 /* : Bool */;
1228 static val* varonce29;
1229 val* var30 /* : String */;
1230 char* var31 /* : NativeString */;
1231 long var32 /* : Int */;
1232 val* var33 /* : FlatString */;
1233 val* var34 /* : null */;
1234 val* var35 /* : String */;
1235 val* var_name /* var name: String */;
1236 val* var36 /* : nullable EscapeMark */;
1237 val* var_res37 /* var res: nullable EscapeMark */;
1238 val* var38 /* : null */;
1239 short int var39 /* : Bool */;
1240 short int var40 /* : Bool */;
1241 short int var42 /* : Bool */;
1242 short int var44 /* : Bool */;
1243 static val* varonce45;
1244 val* var46 /* : String */;
1245 char* var47 /* : NativeString */;
1246 long var48 /* : Int */;
1247 val* var49 /* : FlatString */;
1248 static val* varonce50;
1249 val* var51 /* : String */;
1250 char* var52 /* : NativeString */;
1251 long var53 /* : Int */;
1252 val* var54 /* : FlatString */;
1253 val* var55 /* : Array[Object] */;
1254 long var56 /* : Int */;
1255 val* var57 /* : NativeArray[Object] */;
1256 val* var58 /* : String */;
1257 val* var59 /* : null */;
1258 val* var60 /* : List[Scope] */;
1259 val* var62 /* : List[Scope] */;
1260 val* var63 /* : ListIterator[nullable Object] */;
1261 short int var64 /* : Bool */;
1262 val* var65 /* : nullable Object */;
1263 val* var_scope /* var scope: Scope */;
1264 val* var66 /* : nullable EscapeMark */;
1265 val* var68 /* : nullable EscapeMark */;
1266 val* var_res69 /* var res: nullable EscapeMark */;
1267 val* var70 /* : null */;
1268 short int var71 /* : Bool */;
1269 short int var72 /* : Bool */;
1270 short int var74 /* : Bool */;
1271 short int var75 /* : Bool */;
1272 short int var76 /* : Bool */;
1273 static val* varonce77;
1274 val* var78 /* : String */;
1275 char* var79 /* : NativeString */;
1276 long var80 /* : Int */;
1277 val* var81 /* : FlatString */;
1278 val* var82 /* : null */;
1279 var_node = p0;
1280 var_nlabel = p1;
1281 var1 = NULL;
1282 if (var_nlabel == NULL) {
1283 var2 = 0; /* is null */
1284 } else {
1285 var2 = 1; /* arg is null and recv is not */
1286 }
1287 if (0) {
1288 { /* Inline kernel#Object#!= (var_nlabel,var1) on <var_nlabel:nullable ALabel> */
1289 var_other = var1;
1290 {
1291 var6 = ((short int (*)(val*, val*))(var_nlabel->class->vft[COLOR_kernel__Object___61d_61d]))(var_nlabel, var_other) /* == on <var_nlabel:nullable ALabel(ALabel)>*/;
1292 var5 = var6;
1293 }
1294 var7 = !var5;
1295 var3 = var7;
1296 goto RET_LABEL4;
1297 RET_LABEL4:(void)0;
1298 }
1299 var2 = var3;
1300 }
1301 if (var2){
1302 {
1303 var8 = parser_nodes__ALabel__n_id(var_nlabel);
1304 }
1305 var_nid = var8;
1306 var9 = NULL;
1307 if (var_nid == NULL) {
1308 var10 = 1; /* is null */
1309 } else {
1310 var10 = 0; /* arg is null but recv is not */
1311 }
1312 if (0) {
1313 { /* Inline kernel#Object#== (var_nid,var9) on <var_nid:nullable TId> */
1314 var_other13 = var9;
1315 {
1316 { /* Inline kernel#Object#is_same_instance (var_nid,var_other13) on <var_nid:nullable TId(TId)> */
1317 var16 = var_nid == var_other13;
1318 var14 = var16;
1319 goto RET_LABEL15;
1320 RET_LABEL15:(void)0;
1321 }
1322 }
1323 var11 = var14;
1324 goto RET_LABEL12;
1325 RET_LABEL12:(void)0;
1326 }
1327 var10 = var11;
1328 }
1329 if (var10){
1330 if (varonce) {
1331 var17 = varonce;
1332 } else {
1333 var18 = "";
1334 var19 = 0;
1335 var20 = string__NativeString__to_s_with_length(var18, var19);
1336 var17 = var20;
1337 varonce = var17;
1338 }
1339 {
1340 var21 = scope__ScopeVisitor__search_label(self, var17);
1341 }
1342 var_res = var21;
1343 var22 = NULL;
1344 if (var_res == NULL) {
1345 var23 = 1; /* is null */
1346 } else {
1347 var23 = 0; /* arg is null but recv is not */
1348 }
1349 if (0) {
1350 { /* Inline kernel#Object#== (var_res,var22) on <var_res:nullable EscapeMark> */
1351 var_other13 = var22;
1352 {
1353 { /* Inline kernel#Object#is_same_instance (var_res,var_other13) on <var_res:nullable EscapeMark(EscapeMark)> */
1354 var28 = var_res == var_other13;
1355 var26 = var28;
1356 goto RET_LABEL27;
1357 RET_LABEL27:(void)0;
1358 }
1359 }
1360 var24 = var26;
1361 goto RET_LABEL25;
1362 RET_LABEL25:(void)0;
1363 }
1364 var23 = var24;
1365 }
1366 if (var23){
1367 if (varonce29) {
1368 var30 = varonce29;
1369 } else {
1370 var31 = "Syntax error: invalid anonymous label.";
1371 var32 = 38;
1372 var33 = string__NativeString__to_s_with_length(var31, var32);
1373 var30 = var33;
1374 varonce29 = var30;
1375 }
1376 {
1377 scope__ScopeVisitor__error(self, var_nlabel, var30); /* Direct call scope#ScopeVisitor#error on <self:ScopeVisitor>*/
1378 }
1379 var34 = NULL;
1380 var = var34;
1381 goto RET_LABEL;
1382 } else {
1383 }
1384 var = var_res;
1385 goto RET_LABEL;
1386 } else {
1387 }
1388 {
1389 var35 = lexer_work__Token__text(var_nid);
1390 }
1391 var_name = var35;
1392 {
1393 var36 = scope__ScopeVisitor__search_label(self, var_name);
1394 }
1395 var_res37 = var36;
1396 var38 = NULL;
1397 if (var_res37 == NULL) {
1398 var39 = 1; /* is null */
1399 } else {
1400 var39 = 0; /* arg is null but recv is not */
1401 }
1402 if (0) {
1403 { /* Inline kernel#Object#== (var_res37,var38) on <var_res37:nullable EscapeMark> */
1404 var_other13 = var38;
1405 {
1406 { /* Inline kernel#Object#is_same_instance (var_res37,var_other13) on <var_res37:nullable EscapeMark(EscapeMark)> */
1407 var44 = var_res37 == var_other13;
1408 var42 = var44;
1409 goto RET_LABEL43;
1410 RET_LABEL43:(void)0;
1411 }
1412 }
1413 var40 = var42;
1414 goto RET_LABEL41;
1415 RET_LABEL41:(void)0;
1416 }
1417 var39 = var40;
1418 }
1419 if (var39){
1420 if (varonce45) {
1421 var46 = varonce45;
1422 } else {
1423 var47 = "Syntax error: invalid label ";
1424 var48 = 28;
1425 var49 = string__NativeString__to_s_with_length(var47, var48);
1426 var46 = var49;
1427 varonce45 = var46;
1428 }
1429 if (varonce50) {
1430 var51 = varonce50;
1431 } else {
1432 var52 = ".";
1433 var53 = 1;
1434 var54 = string__NativeString__to_s_with_length(var52, var53);
1435 var51 = var54;
1436 varonce50 = var51;
1437 }
1438 var55 = NEW_array__Array(&type_array__Arraykernel__Object);
1439 { /* var55 = array_instance Array[Object] */
1440 var56 = 3;
1441 var57 = NEW_array__NativeArray(var56, &type_array__NativeArraykernel__Object);
1442 ((struct instance_array__NativeArray*)var57)->values[0] = (val*) var46;
1443 ((struct instance_array__NativeArray*)var57)->values[1] = (val*) var_name;
1444 ((struct instance_array__NativeArray*)var57)->values[2] = (val*) var51;
1445 {
1446 ((void (*)(val*, val*, long))(var55->class->vft[COLOR_array__Array__with_native]))(var55, var57, var56) /* with_native on <var55:Array[Object]>*/;
1447 }
1448 }
1449 {
1450 var58 = ((val* (*)(val*))(var55->class->vft[COLOR_string__Object__to_s]))(var55) /* to_s on <var55:Array[Object]>*/;
1451 }
1452 {
1453 scope__ScopeVisitor__error(self, var_nlabel, var58); /* Direct call scope#ScopeVisitor#error on <self:ScopeVisitor>*/
1454 }
1455 var59 = NULL;
1456 var = var59;
1457 goto RET_LABEL;
1458 } else {
1459 }
1460 var = var_res37;
1461 goto RET_LABEL;
1462 } else {
1463 {
1464 { /* Inline scope#ScopeVisitor#scopes (self) on <self:ScopeVisitor> */
1465 var62 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <self:ScopeVisitor> */
1466 if (unlikely(var62 == NULL)) {
1467 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes");
1468 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 79);
1469 show_backtrace(1);
1470 }
1471 var60 = var62;
1472 RET_LABEL61:(void)0;
1473 }
1474 }
1475 {
1476 var63 = list__List__iterator(var60);
1477 }
1478 for(;;) {
1479 {
1480 var64 = list__ListIterator__is_ok(var63);
1481 }
1482 if(!var64) break;
1483 {
1484 var65 = list__ListIterator__item(var63);
1485 }
1486 var_scope = var65;
1487 {
1488 { /* Inline scope#Scope#escapemark (var_scope) on <var_scope:Scope> */
1489 var68 = var_scope->attrs[COLOR_scope__Scope___escapemark].val; /* _escapemark on <var_scope:Scope> */
1490 var66 = var68;
1491 RET_LABEL67:(void)0;
1492 }
1493 }
1494 var_res69 = var66;
1495 var70 = NULL;
1496 if (var_res69 == NULL) {
1497 var71 = 0; /* is null */
1498 } else {
1499 var71 = 1; /* arg is null and recv is not */
1500 }
1501 if (0) {
1502 { /* Inline kernel#Object#!= (var_res69,var70) on <var_res69:nullable EscapeMark> */
1503 var_other = var70;
1504 {
1505 var75 = ((short int (*)(val*, val*))(var_res69->class->vft[COLOR_kernel__Object___61d_61d]))(var_res69, var_other) /* == on <var_res69:nullable EscapeMark(EscapeMark)>*/;
1506 var74 = var75;
1507 }
1508 var76 = !var74;
1509 var72 = var76;
1510 goto RET_LABEL73;
1511 RET_LABEL73:(void)0;
1512 }
1513 var71 = var72;
1514 }
1515 if (var71){
1516 var = var_res69;
1517 goto RET_LABEL;
1518 } else {
1519 }
1520 CONTINUE_label: (void)0;
1521 {
1522 list__ListIterator__next(var63); /* Direct call list#ListIterator#next on <var63:ListIterator[nullable Object]>*/
1523 }
1524 }
1525 BREAK_label: (void)0;
1526 if (varonce77) {
1527 var78 = varonce77;
1528 } else {
1529 var79 = "Syntax Error: \'break\' statment outside block.";
1530 var80 = 45;
1531 var81 = string__NativeString__to_s_with_length(var79, var80);
1532 var78 = var81;
1533 varonce77 = var78;
1534 }
1535 {
1536 scope__ScopeVisitor__error(self, var_node, var78); /* Direct call scope#ScopeVisitor#error on <self:ScopeVisitor>*/
1537 }
1538 var82 = NULL;
1539 var = var82;
1540 goto RET_LABEL;
1541 }
1542 RET_LABEL:;
1543 return var;
1544 }
1545 /* method scope#ScopeVisitor#get_escapemark for (self: Object, ANode, nullable ALabel): nullable EscapeMark */
1546 val* VIRTUAL_scope__ScopeVisitor__get_escapemark(val* self, val* p0, val* p1) {
1547 val* var /* : nullable EscapeMark */;
1548 val* var1 /* : nullable EscapeMark */;
1549 var1 = scope__ScopeVisitor__get_escapemark(self, p0, p1);
1550 var = var1;
1551 RET_LABEL:;
1552 return var;
1553 }
1554 /* method scope#ScopeVisitor#error for (self: ScopeVisitor, ANode, String) */
1555 void scope__ScopeVisitor__error(val* self, val* p0, val* p1) {
1556 val* var_node /* var node: ANode */;
1557 val* var_message /* var message: String */;
1558 val* var /* : ToolContext */;
1559 val* var2 /* : ToolContext */;
1560 val* var3 /* : Location */;
1561 var_node = p0;
1562 var_message = p1;
1563 {
1564 { /* Inline scope#ScopeVisitor#toolcontext (self) on <self:ScopeVisitor> */
1565 var2 = self->attrs[COLOR_scope__ScopeVisitor___toolcontext].val; /* _toolcontext on <self:ScopeVisitor> */
1566 if (unlikely(var2 == NULL)) {
1567 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1568 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 68);
1569 show_backtrace(1);
1570 }
1571 var = var2;
1572 RET_LABEL1:(void)0;
1573 }
1574 }
1575 {
1576 var3 = ((val* (*)(val*))(var_node->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_node) /* hot_location on <var_node:ANode>*/;
1577 }
1578 {
1579 toolcontext__ToolContext__error(var, var3, var_message); /* Direct call toolcontext#ToolContext#error on <var:ToolContext>*/
1580 }
1581 RET_LABEL:;
1582 }
1583 /* method scope#ScopeVisitor#error for (self: Object, ANode, String) */
1584 void VIRTUAL_scope__ScopeVisitor__error(val* self, val* p0, val* p1) {
1585 scope__ScopeVisitor__error(self, p0, p1); /* Direct call scope#ScopeVisitor#error on <self:Object(ScopeVisitor)>*/
1586 RET_LABEL:;
1587 }
1588 /* method scope#Scope#variables for (self: Scope): HashMap[String, Variable] */
1589 val* scope__Scope__variables(val* self) {
1590 val* var /* : HashMap[String, Variable] */;
1591 val* var1 /* : HashMap[String, Variable] */;
1592 var1 = self->attrs[COLOR_scope__Scope___variables].val; /* _variables on <self:Scope> */
1593 if (unlikely(var1 == NULL)) {
1594 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _variables");
1595 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 210);
1596 show_backtrace(1);
1597 }
1598 var = var1;
1599 RET_LABEL:;
1600 return var;
1601 }
1602 /* method scope#Scope#variables for (self: Object): HashMap[String, Variable] */
1603 val* VIRTUAL_scope__Scope__variables(val* self) {
1604 val* var /* : HashMap[String, Variable] */;
1605 val* var1 /* : HashMap[String, Variable] */;
1606 val* var3 /* : HashMap[String, Variable] */;
1607 { /* Inline scope#Scope#variables (self) on <self:Object(Scope)> */
1608 var3 = self->attrs[COLOR_scope__Scope___variables].val; /* _variables on <self:Object(Scope)> */
1609 if (unlikely(var3 == NULL)) {
1610 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _variables");
1611 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 210);
1612 show_backtrace(1);
1613 }
1614 var1 = var3;
1615 RET_LABEL2:(void)0;
1616 }
1617 var = var1;
1618 RET_LABEL:;
1619 return var;
1620 }
1621 /* method scope#Scope#escapemark for (self: Scope): nullable EscapeMark */
1622 val* scope__Scope__escapemark(val* self) {
1623 val* var /* : nullable EscapeMark */;
1624 val* var1 /* : nullable EscapeMark */;
1625 var1 = self->attrs[COLOR_scope__Scope___escapemark].val; /* _escapemark on <self:Scope> */
1626 var = var1;
1627 RET_LABEL:;
1628 return var;
1629 }
1630 /* method scope#Scope#escapemark for (self: Object): nullable EscapeMark */
1631 val* VIRTUAL_scope__Scope__escapemark(val* self) {
1632 val* var /* : nullable EscapeMark */;
1633 val* var1 /* : nullable EscapeMark */;
1634 val* var3 /* : nullable EscapeMark */;
1635 { /* Inline scope#Scope#escapemark (self) on <self:Object(Scope)> */
1636 var3 = self->attrs[COLOR_scope__Scope___escapemark].val; /* _escapemark on <self:Object(Scope)> */
1637 var1 = var3;
1638 RET_LABEL2:(void)0;
1639 }
1640 var = var1;
1641 RET_LABEL:;
1642 return var;
1643 }
1644 /* method scope#Scope#escapemark= for (self: Scope, nullable EscapeMark) */
1645 void scope__Scope__escapemark_61d(val* self, val* p0) {
1646 self->attrs[COLOR_scope__Scope___escapemark].val = p0; /* _escapemark on <self:Scope> */
1647 RET_LABEL:;
1648 }
1649 /* method scope#Scope#escapemark= for (self: Object, nullable EscapeMark) */
1650 void VIRTUAL_scope__Scope__escapemark_61d(val* self, val* p0) {
1651 { /* Inline scope#Scope#escapemark= (self,p0) on <self:Object(Scope)> */
1652 self->attrs[COLOR_scope__Scope___escapemark].val = p0; /* _escapemark on <self:Object(Scope)> */
1653 RET_LABEL1:(void)0;
1654 }
1655 RET_LABEL:;
1656 }
1657 /* method scope#Scope#get_variable for (self: Scope, String): nullable Variable */
1658 val* scope__Scope__get_variable(val* self, val* p0) {
1659 val* var /* : nullable Variable */;
1660 val* var_name /* var name: String */;
1661 val* var1 /* : HashMap[String, Variable] */;
1662 val* var3 /* : HashMap[String, Variable] */;
1663 short int var4 /* : Bool */;
1664 val* var5 /* : HashMap[String, Variable] */;
1665 val* var7 /* : HashMap[String, Variable] */;
1666 val* var8 /* : nullable Object */;
1667 val* var9 /* : null */;
1668 var_name = p0;
1669 {
1670 { /* Inline scope#Scope#variables (self) on <self:Scope> */
1671 var3 = self->attrs[COLOR_scope__Scope___variables].val; /* _variables on <self:Scope> */
1672 if (unlikely(var3 == NULL)) {
1673 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _variables");
1674 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 210);
1675 show_backtrace(1);
1676 }
1677 var1 = var3;
1678 RET_LABEL2:(void)0;
1679 }
1680 }
1681 {
1682 var4 = abstract_collection__MapRead__has_key(var1, var_name);
1683 }
1684 if (var4){
1685 {
1686 { /* Inline scope#Scope#variables (self) on <self:Scope> */
1687 var7 = self->attrs[COLOR_scope__Scope___variables].val; /* _variables on <self:Scope> */
1688 if (unlikely(var7 == NULL)) {
1689 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _variables");
1690 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 210);
1691 show_backtrace(1);
1692 }
1693 var5 = var7;
1694 RET_LABEL6:(void)0;
1695 }
1696 }
1697 {
1698 var8 = hash_collection__HashMap___91d_93d(var5, var_name);
1699 }
1700 var = var8;
1701 goto RET_LABEL;
1702 } else {
1703 var9 = NULL;
1704 var = var9;
1705 goto RET_LABEL;
1706 }
1707 RET_LABEL:;
1708 return var;
1709 }
1710 /* method scope#Scope#get_variable for (self: Object, String): nullable Variable */
1711 val* VIRTUAL_scope__Scope__get_variable(val* self, val* p0) {
1712 val* var /* : nullable Variable */;
1713 val* var1 /* : nullable Variable */;
1714 var1 = scope__Scope__get_variable(self, p0);
1715 var = var1;
1716 RET_LABEL:;
1717 return var;
1718 }
1719 /* method scope#Scope#init for (self: Scope) */
1720 void scope__Scope__init(val* self) {
1721 RET_LABEL:;
1722 }
1723 /* method scope#Scope#init for (self: Object) */
1724 void VIRTUAL_scope__Scope__init(val* self) {
1725 { /* Inline scope#Scope#init (self) on <self:Object(Scope)> */
1726 RET_LABEL1:(void)0;
1727 }
1728 RET_LABEL:;
1729 }
1730 /* method scope#ANode#accept_scope_visitor for (self: ANode, ScopeVisitor) */
1731 void scope__ANode__accept_scope_visitor(val* self, val* p0) {
1732 val* var_v /* var v: ScopeVisitor */;
1733 var_v = p0;
1734 {
1735 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__visit_all]))(self, var_v) /* visit_all on <self:ANode>*/;
1736 }
1737 RET_LABEL:;
1738 }
1739 /* method scope#ANode#accept_scope_visitor for (self: Object, ScopeVisitor) */
1740 void VIRTUAL_scope__ANode__accept_scope_visitor(val* self, val* p0) {
1741 scope__ANode__accept_scope_visitor(self, p0); /* Direct call scope#ANode#accept_scope_visitor on <self:Object(ANode)>*/
1742 RET_LABEL:;
1743 }
1744 /* method scope#APropdef#do_scope for (self: APropdef, ToolContext) */
1745 void scope__APropdef__do_scope(val* self, val* p0) {
1746 val* var_toolcontext /* var toolcontext: ToolContext */;
1747 val* var /* : ScopeVisitor */;
1748 val* var_v /* var v: ScopeVisitor */;
1749 var_toolcontext = p0;
1750 var = NEW_scope__ScopeVisitor(&type_scope__ScopeVisitor);
1751 {
1752 scope__ScopeVisitor__init(var, var_toolcontext); /* Direct call scope#ScopeVisitor#init on <var:ScopeVisitor>*/
1753 }
1754 var_v = var;
1755 {
1756 parser_nodes__Visitor__enter_visit(var_v, self); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:ScopeVisitor>*/
1757 }
1758 RET_LABEL:;
1759 }
1760 /* method scope#APropdef#do_scope for (self: Object, ToolContext) */
1761 void VIRTUAL_scope__APropdef__do_scope(val* self, val* p0) {
1762 scope__APropdef__do_scope(self, p0); /* Direct call scope#APropdef#do_scope on <self:Object(APropdef)>*/
1763 RET_LABEL:;
1764 }
1765 /* method scope#AParam#variable for (self: AParam): nullable Variable */
1766 val* scope__AParam__variable(val* self) {
1767 val* var /* : nullable Variable */;
1768 val* var1 /* : nullable Variable */;
1769 var1 = self->attrs[COLOR_scope__AParam___variable].val; /* _variable on <self:AParam> */
1770 var = var1;
1771 RET_LABEL:;
1772 return var;
1773 }
1774 /* method scope#AParam#variable for (self: Object): nullable Variable */
1775 val* VIRTUAL_scope__AParam__variable(val* self) {
1776 val* var /* : nullable Variable */;
1777 val* var1 /* : nullable Variable */;
1778 val* var3 /* : nullable Variable */;
1779 { /* Inline scope#AParam#variable (self) on <self:Object(AParam)> */
1780 var3 = self->attrs[COLOR_scope__AParam___variable].val; /* _variable on <self:Object(AParam)> */
1781 var1 = var3;
1782 RET_LABEL2:(void)0;
1783 }
1784 var = var1;
1785 RET_LABEL:;
1786 return var;
1787 }
1788 /* method scope#AParam#variable= for (self: AParam, nullable Variable) */
1789 void scope__AParam__variable_61d(val* self, val* p0) {
1790 self->attrs[COLOR_scope__AParam___variable].val = p0; /* _variable on <self:AParam> */
1791 RET_LABEL:;
1792 }
1793 /* method scope#AParam#variable= for (self: Object, nullable Variable) */
1794 void VIRTUAL_scope__AParam__variable_61d(val* self, val* p0) {
1795 { /* Inline scope#AParam#variable= (self,p0) on <self:Object(AParam)> */
1796 self->attrs[COLOR_scope__AParam___variable].val = p0; /* _variable on <self:Object(AParam)> */
1797 RET_LABEL1:(void)0;
1798 }
1799 RET_LABEL:;
1800 }
1801 /* method scope#AParam#accept_scope_visitor for (self: AParam, ScopeVisitor) */
1802 void scope__AParam__accept_scope_visitor(val* self, val* p0) {
1803 val* var_v /* var v: ScopeVisitor */;
1804 val* var /* : TId */;
1805 val* var_nid /* var nid: TId */;
1806 val* var1 /* : Variable */;
1807 val* var2 /* : String */;
1808 val* var_variable /* var variable: Variable */;
1809 short int var4 /* : Bool */;
1810 var_v = p0;
1811 {
1812 ((void (*)(val*, val*))(self->class->vft[COLOR_scope__AParam__accept_scope_visitor]))(self, p0) /* accept_scope_visitor on <self:AParam>*/;
1813 }
1814 {
1815 var = parser_nodes__AParam__n_id(self);
1816 }
1817 var_nid = var;
1818 var1 = NEW_scope__Variable(&type_scope__Variable);
1819 {
1820 var2 = lexer_work__Token__text(var_nid);
1821 }
1822 {
1823 { /* Inline scope#Variable#init (var1,var2) on <var1:Variable> */
1824 var1->attrs[COLOR_scope__Variable___name].val = var2; /* _name on <var1:Variable> */
1825 RET_LABEL3:(void)0;
1826 }
1827 }
1828 var_variable = var1;
1829 {
1830 var4 = scope__ScopeVisitor__register_variable(var_v, var_nid, var_variable);
1831 }
1832 var4;
1833 {
1834 { /* Inline scope#AParam#variable= (self,var_variable) on <self:AParam> */
1835 self->attrs[COLOR_scope__AParam___variable].val = var_variable; /* _variable on <self:AParam> */
1836 RET_LABEL5:(void)0;
1837 }
1838 }
1839 RET_LABEL:;
1840 }
1841 /* method scope#AParam#accept_scope_visitor for (self: Object, ScopeVisitor) */
1842 void VIRTUAL_scope__AParam__accept_scope_visitor(val* self, val* p0) {
1843 scope__AParam__accept_scope_visitor(self, p0); /* Direct call scope#AParam#accept_scope_visitor on <self:Object(AParam)>*/
1844 RET_LABEL:;
1845 }
1846 /* method scope#AVardeclExpr#variable for (self: AVardeclExpr): nullable Variable */
1847 val* scope__AVardeclExpr__variable(val* self) {
1848 val* var /* : nullable Variable */;
1849 val* var1 /* : nullable Variable */;
1850 var1 = self->attrs[COLOR_scope__AVardeclExpr___variable].val; /* _variable on <self:AVardeclExpr> */
1851 var = var1;
1852 RET_LABEL:;
1853 return var;
1854 }
1855 /* method scope#AVardeclExpr#variable for (self: Object): nullable Variable */
1856 val* VIRTUAL_scope__AVardeclExpr__variable(val* self) {
1857 val* var /* : nullable Variable */;
1858 val* var1 /* : nullable Variable */;
1859 val* var3 /* : nullable Variable */;
1860 { /* Inline scope#AVardeclExpr#variable (self) on <self:Object(AVardeclExpr)> */
1861 var3 = self->attrs[COLOR_scope__AVardeclExpr___variable].val; /* _variable on <self:Object(AVardeclExpr)> */
1862 var1 = var3;
1863 RET_LABEL2:(void)0;
1864 }
1865 var = var1;
1866 RET_LABEL:;
1867 return var;
1868 }
1869 /* method scope#AVardeclExpr#variable= for (self: AVardeclExpr, nullable Variable) */
1870 void scope__AVardeclExpr__variable_61d(val* self, val* p0) {
1871 self->attrs[COLOR_scope__AVardeclExpr___variable].val = p0; /* _variable on <self:AVardeclExpr> */
1872 RET_LABEL:;
1873 }
1874 /* method scope#AVardeclExpr#variable= for (self: Object, nullable Variable) */
1875 void VIRTUAL_scope__AVardeclExpr__variable_61d(val* self, val* p0) {
1876 { /* Inline scope#AVardeclExpr#variable= (self,p0) on <self:Object(AVardeclExpr)> */
1877 self->attrs[COLOR_scope__AVardeclExpr___variable].val = p0; /* _variable on <self:Object(AVardeclExpr)> */
1878 RET_LABEL1:(void)0;
1879 }
1880 RET_LABEL:;
1881 }
1882 /* method scope#AVardeclExpr#accept_scope_visitor for (self: AVardeclExpr, ScopeVisitor) */
1883 void scope__AVardeclExpr__accept_scope_visitor(val* self, val* p0) {
1884 val* var_v /* var v: ScopeVisitor */;
1885 val* var /* : TId */;
1886 val* var_nid /* var nid: TId */;
1887 val* var1 /* : Variable */;
1888 val* var2 /* : String */;
1889 val* var_variable /* var variable: Variable */;
1890 short int var4 /* : Bool */;
1891 var_v = p0;
1892 {
1893 ((void (*)(val*, val*))(self->class->vft[COLOR_scope__AVardeclExpr__accept_scope_visitor]))(self, p0) /* accept_scope_visitor on <self:AVardeclExpr>*/;
1894 }
1895 {
1896 var = parser_nodes__AVardeclExpr__n_id(self);
1897 }
1898 var_nid = var;
1899 var1 = NEW_scope__Variable(&type_scope__Variable);
1900 {
1901 var2 = lexer_work__Token__text(var_nid);
1902 }
1903 {
1904 { /* Inline scope#Variable#init (var1,var2) on <var1:Variable> */
1905 var1->attrs[COLOR_scope__Variable___name].val = var2; /* _name on <var1:Variable> */
1906 RET_LABEL3:(void)0;
1907 }
1908 }
1909 var_variable = var1;
1910 {
1911 var4 = scope__ScopeVisitor__register_variable(var_v, var_nid, var_variable);
1912 }
1913 var4;
1914 {
1915 { /* Inline scope#AVardeclExpr#variable= (self,var_variable) on <self:AVardeclExpr> */
1916 self->attrs[COLOR_scope__AVardeclExpr___variable].val = var_variable; /* _variable on <self:AVardeclExpr> */
1917 RET_LABEL5:(void)0;
1918 }
1919 }
1920 RET_LABEL:;
1921 }
1922 /* method scope#AVardeclExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */
1923 void VIRTUAL_scope__AVardeclExpr__accept_scope_visitor(val* self, val* p0) {
1924 scope__AVardeclExpr__accept_scope_visitor(self, p0); /* Direct call scope#AVardeclExpr#accept_scope_visitor on <self:Object(AVardeclExpr)>*/
1925 RET_LABEL:;
1926 }
1927 /* method scope#ASelfExpr#variable= for (self: ASelfExpr, nullable Variable) */
1928 void scope__ASelfExpr__variable_61d(val* self, val* p0) {
1929 self->attrs[COLOR_scope__ASelfExpr___variable].val = p0; /* _variable on <self:ASelfExpr> */
1930 RET_LABEL:;
1931 }
1932 /* method scope#ASelfExpr#variable= for (self: Object, nullable Variable) */
1933 void VIRTUAL_scope__ASelfExpr__variable_61d(val* self, val* p0) {
1934 { /* Inline scope#ASelfExpr#variable= (self,p0) on <self:Object(ASelfExpr)> */
1935 self->attrs[COLOR_scope__ASelfExpr___variable].val = p0; /* _variable on <self:Object(ASelfExpr)> */
1936 RET_LABEL1:(void)0;
1937 }
1938 RET_LABEL:;
1939 }
1940 /* method scope#ASelfExpr#accept_scope_visitor for (self: ASelfExpr, ScopeVisitor) */
1941 void scope__ASelfExpr__accept_scope_visitor(val* self, val* p0) {
1942 val* var_v /* var v: ScopeVisitor */;
1943 val* var /* : Variable */;
1944 val* var2 /* : Variable */;
1945 var_v = p0;
1946 {
1947 ((void (*)(val*, val*))(self->class->vft[COLOR_scope__ASelfExpr__accept_scope_visitor]))(self, p0) /* accept_scope_visitor on <self:ASelfExpr>*/;
1948 }
1949 {
1950 { /* Inline scope#ScopeVisitor#selfvariable (var_v) on <var_v:ScopeVisitor> */
1951 var2 = var_v->attrs[COLOR_scope__ScopeVisitor___selfvariable].val; /* _selfvariable on <var_v:ScopeVisitor> */
1952 if (unlikely(var2 == NULL)) {
1953 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _selfvariable");
1954 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 71);
1955 show_backtrace(1);
1956 }
1957 var = var2;
1958 RET_LABEL1:(void)0;
1959 }
1960 }
1961 {
1962 { /* Inline scope#ASelfExpr#variable= (self,var) on <self:ASelfExpr> */
1963 self->attrs[COLOR_scope__ASelfExpr___variable].val = var; /* _variable on <self:ASelfExpr> */
1964 RET_LABEL3:(void)0;
1965 }
1966 }
1967 RET_LABEL:;
1968 }
1969 /* method scope#ASelfExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */
1970 void VIRTUAL_scope__ASelfExpr__accept_scope_visitor(val* self, val* p0) {
1971 scope__ASelfExpr__accept_scope_visitor(self, p0); /* Direct call scope#ASelfExpr#accept_scope_visitor on <self:Object(ASelfExpr)>*/
1972 RET_LABEL:;
1973 }
1974 /* method scope#AContinueExpr#escapemark for (self: AContinueExpr): nullable EscapeMark */
1975 val* scope__AContinueExpr__escapemark(val* self) {
1976 val* var /* : nullable EscapeMark */;
1977 val* var1 /* : nullable EscapeMark */;
1978 var1 = self->attrs[COLOR_scope__AContinueExpr___escapemark].val; /* _escapemark on <self:AContinueExpr> */
1979 var = var1;
1980 RET_LABEL:;
1981 return var;
1982 }
1983 /* method scope#AContinueExpr#escapemark for (self: Object): nullable EscapeMark */
1984 val* VIRTUAL_scope__AContinueExpr__escapemark(val* self) {
1985 val* var /* : nullable EscapeMark */;
1986 val* var1 /* : nullable EscapeMark */;
1987 val* var3 /* : nullable EscapeMark */;
1988 { /* Inline scope#AContinueExpr#escapemark (self) on <self:Object(AContinueExpr)> */
1989 var3 = self->attrs[COLOR_scope__AContinueExpr___escapemark].val; /* _escapemark on <self:Object(AContinueExpr)> */
1990 var1 = var3;
1991 RET_LABEL2:(void)0;
1992 }
1993 var = var1;
1994 RET_LABEL:;
1995 return var;
1996 }
1997 /* method scope#AContinueExpr#escapemark= for (self: AContinueExpr, nullable EscapeMark) */
1998 void scope__AContinueExpr__escapemark_61d(val* self, val* p0) {
1999 self->attrs[COLOR_scope__AContinueExpr___escapemark].val = p0; /* _escapemark on <self:AContinueExpr> */
2000 RET_LABEL:;
2001 }
2002 /* method scope#AContinueExpr#escapemark= for (self: Object, nullable EscapeMark) */
2003 void VIRTUAL_scope__AContinueExpr__escapemark_61d(val* self, val* p0) {
2004 { /* Inline scope#AContinueExpr#escapemark= (self,p0) on <self:Object(AContinueExpr)> */
2005 self->attrs[COLOR_scope__AContinueExpr___escapemark].val = p0; /* _escapemark on <self:Object(AContinueExpr)> */
2006 RET_LABEL1:(void)0;
2007 }
2008 RET_LABEL:;
2009 }
2010 /* method scope#AContinueExpr#accept_scope_visitor for (self: AContinueExpr, ScopeVisitor) */
2011 void scope__AContinueExpr__accept_scope_visitor(val* self, val* p0) {
2012 val* var_v /* var v: ScopeVisitor */;
2013 val* var /* : nullable ALabel */;
2014 val* var1 /* : nullable EscapeMark */;
2015 val* var_escapemark /* var escapemark: nullable EscapeMark */;
2016 val* var2 /* : null */;
2017 short int var3 /* : Bool */;
2018 short int var4 /* : Bool */;
2019 val* var_other /* var other: nullable Object */;
2020 short int var6 /* : Bool */;
2021 short int var8 /* : Bool */;
2022 short int var9 /* : Bool */;
2023 short int var11 /* : Bool */;
2024 short int var12 /* : Bool */;
2025 static val* varonce;
2026 val* var13 /* : String */;
2027 char* var14 /* : NativeString */;
2028 long var15 /* : Int */;
2029 val* var16 /* : FlatString */;
2030 val* var17 /* : Array[AContinueExpr] */;
2031 val* var19 /* : Array[AContinueExpr] */;
2032 var_v = p0;
2033 {
2034 ((void (*)(val*, val*))(self->class->vft[COLOR_scope__AContinueExpr__accept_scope_visitor]))(self, p0) /* accept_scope_visitor on <self:AContinueExpr>*/;
2035 }
2036 {
2037 var = parser_nodes__ALabelable__n_label(self);
2038 }
2039 {
2040 var1 = scope__ScopeVisitor__get_escapemark(var_v, self, var);
2041 }
2042 var_escapemark = var1;
2043 var2 = NULL;
2044 if (var_escapemark == NULL) {
2045 var3 = 1; /* is null */
2046 } else {
2047 var3 = 0; /* arg is null but recv is not */
2048 }
2049 if (0) {
2050 { /* Inline kernel#Object#== (var_escapemark,var2) on <var_escapemark:nullable EscapeMark> */
2051 var_other = var2;
2052 {
2053 { /* Inline kernel#Object#is_same_instance (var_escapemark,var_other) on <var_escapemark:nullable EscapeMark(EscapeMark)> */
2054 var8 = var_escapemark == var_other;
2055 var6 = var8;
2056 goto RET_LABEL7;
2057 RET_LABEL7:(void)0;
2058 }
2059 }
2060 var4 = var6;
2061 goto RET_LABEL5;
2062 RET_LABEL5:(void)0;
2063 }
2064 var3 = var4;
2065 }
2066 if (var3){
2067 goto RET_LABEL;
2068 } else {
2069 }
2070 {
2071 { /* Inline scope#EscapeMark#for_loop (var_escapemark) on <var_escapemark:nullable EscapeMark(EscapeMark)> */
2072 var11 = var_escapemark->attrs[COLOR_scope__EscapeMark___for_loop].s; /* _for_loop on <var_escapemark:nullable EscapeMark(EscapeMark)> */
2073 var9 = var11;
2074 RET_LABEL10:(void)0;
2075 }
2076 }
2077 var12 = !var9;
2078 if (var12){
2079 if (varonce) {
2080 var13 = varonce;
2081 } else {
2082 var14 = "Error: cannot \'continue\', only \'break\'.";
2083 var15 = 39;
2084 var16 = string__NativeString__to_s_with_length(var14, var15);
2085 var13 = var16;
2086 varonce = var13;
2087 }
2088 {
2089 scope__ScopeVisitor__error(var_v, self, var13); /* Direct call scope#ScopeVisitor#error on <var_v:ScopeVisitor>*/
2090 }
2091 } else {
2092 }
2093 {
2094 { /* Inline scope#EscapeMark#continues (var_escapemark) on <var_escapemark:nullable EscapeMark(EscapeMark)> */
2095 var19 = var_escapemark->attrs[COLOR_scope__EscapeMark___continues].val; /* _continues on <var_escapemark:nullable EscapeMark(EscapeMark)> */
2096 if (unlikely(var19 == NULL)) {
2097 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _continues");
2098 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 53);
2099 show_backtrace(1);
2100 }
2101 var17 = var19;
2102 RET_LABEL18:(void)0;
2103 }
2104 }
2105 {
2106 array__Array__add(var17, self); /* Direct call array#Array#add on <var17:Array[AContinueExpr]>*/
2107 }
2108 {
2109 { /* Inline scope#AContinueExpr#escapemark= (self,var_escapemark) on <self:AContinueExpr> */
2110 self->attrs[COLOR_scope__AContinueExpr___escapemark].val = var_escapemark; /* _escapemark on <self:AContinueExpr> */
2111 RET_LABEL20:(void)0;
2112 }
2113 }
2114 RET_LABEL:;
2115 }
2116 /* method scope#AContinueExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */
2117 void VIRTUAL_scope__AContinueExpr__accept_scope_visitor(val* self, val* p0) {
2118 scope__AContinueExpr__accept_scope_visitor(self, p0); /* Direct call scope#AContinueExpr#accept_scope_visitor on <self:Object(AContinueExpr)>*/
2119 RET_LABEL:;
2120 }
2121 /* method scope#ABreakExpr#escapemark for (self: ABreakExpr): nullable EscapeMark */
2122 val* scope__ABreakExpr__escapemark(val* self) {
2123 val* var /* : nullable EscapeMark */;
2124 val* var1 /* : nullable EscapeMark */;
2125 var1 = self->attrs[COLOR_scope__ABreakExpr___escapemark].val; /* _escapemark on <self:ABreakExpr> */
2126 var = var1;
2127 RET_LABEL:;
2128 return var;
2129 }
2130 /* method scope#ABreakExpr#escapemark for (self: Object): nullable EscapeMark */
2131 val* VIRTUAL_scope__ABreakExpr__escapemark(val* self) {
2132 val* var /* : nullable EscapeMark */;
2133 val* var1 /* : nullable EscapeMark */;
2134 val* var3 /* : nullable EscapeMark */;
2135 { /* Inline scope#ABreakExpr#escapemark (self) on <self:Object(ABreakExpr)> */
2136 var3 = self->attrs[COLOR_scope__ABreakExpr___escapemark].val; /* _escapemark on <self:Object(ABreakExpr)> */
2137 var1 = var3;
2138 RET_LABEL2:(void)0;
2139 }
2140 var = var1;
2141 RET_LABEL:;
2142 return var;
2143 }
2144 /* method scope#ABreakExpr#escapemark= for (self: ABreakExpr, nullable EscapeMark) */
2145 void scope__ABreakExpr__escapemark_61d(val* self, val* p0) {
2146 self->attrs[COLOR_scope__ABreakExpr___escapemark].val = p0; /* _escapemark on <self:ABreakExpr> */
2147 RET_LABEL:;
2148 }
2149 /* method scope#ABreakExpr#escapemark= for (self: Object, nullable EscapeMark) */
2150 void VIRTUAL_scope__ABreakExpr__escapemark_61d(val* self, val* p0) {
2151 { /* Inline scope#ABreakExpr#escapemark= (self,p0) on <self:Object(ABreakExpr)> */
2152 self->attrs[COLOR_scope__ABreakExpr___escapemark].val = p0; /* _escapemark on <self:Object(ABreakExpr)> */
2153 RET_LABEL1:(void)0;
2154 }
2155 RET_LABEL:;
2156 }
2157 /* method scope#ABreakExpr#accept_scope_visitor for (self: ABreakExpr, ScopeVisitor) */
2158 void scope__ABreakExpr__accept_scope_visitor(val* self, val* p0) {
2159 val* var_v /* var v: ScopeVisitor */;
2160 val* var /* : nullable ALabel */;
2161 val* var1 /* : nullable EscapeMark */;
2162 val* var_escapemark /* var escapemark: nullable EscapeMark */;
2163 val* var2 /* : null */;
2164 short int var3 /* : Bool */;
2165 short int var4 /* : Bool */;
2166 val* var_other /* var other: nullable Object */;
2167 short int var6 /* : Bool */;
2168 short int var8 /* : Bool */;
2169 val* var9 /* : Array[ABreakExpr] */;
2170 val* var11 /* : Array[ABreakExpr] */;
2171 var_v = p0;
2172 {
2173 ((void (*)(val*, val*))(self->class->vft[COLOR_scope__ABreakExpr__accept_scope_visitor]))(self, p0) /* accept_scope_visitor on <self:ABreakExpr>*/;
2174 }
2175 {
2176 var = parser_nodes__ALabelable__n_label(self);
2177 }
2178 {
2179 var1 = scope__ScopeVisitor__get_escapemark(var_v, self, var);
2180 }
2181 var_escapemark = var1;
2182 var2 = NULL;
2183 if (var_escapemark == NULL) {
2184 var3 = 1; /* is null */
2185 } else {
2186 var3 = 0; /* arg is null but recv is not */
2187 }
2188 if (0) {
2189 { /* Inline kernel#Object#== (var_escapemark,var2) on <var_escapemark:nullable EscapeMark> */
2190 var_other = var2;
2191 {
2192 { /* Inline kernel#Object#is_same_instance (var_escapemark,var_other) on <var_escapemark:nullable EscapeMark(EscapeMark)> */
2193 var8 = var_escapemark == var_other;
2194 var6 = var8;
2195 goto RET_LABEL7;
2196 RET_LABEL7:(void)0;
2197 }
2198 }
2199 var4 = var6;
2200 goto RET_LABEL5;
2201 RET_LABEL5:(void)0;
2202 }
2203 var3 = var4;
2204 }
2205 if (var3){
2206 goto RET_LABEL;
2207 } else {
2208 }
2209 {
2210 { /* Inline scope#EscapeMark#breaks (var_escapemark) on <var_escapemark:nullable EscapeMark(EscapeMark)> */
2211 var11 = var_escapemark->attrs[COLOR_scope__EscapeMark___breaks].val; /* _breaks on <var_escapemark:nullable EscapeMark(EscapeMark)> */
2212 if (unlikely(var11 == NULL)) {
2213 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _breaks");
2214 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 56);
2215 show_backtrace(1);
2216 }
2217 var9 = var11;
2218 RET_LABEL10:(void)0;
2219 }
2220 }
2221 {
2222 array__Array__add(var9, self); /* Direct call array#Array#add on <var9:Array[ABreakExpr]>*/
2223 }
2224 {
2225 { /* Inline scope#ABreakExpr#escapemark= (self,var_escapemark) on <self:ABreakExpr> */
2226 self->attrs[COLOR_scope__ABreakExpr___escapemark].val = var_escapemark; /* _escapemark on <self:ABreakExpr> */
2227 RET_LABEL12:(void)0;
2228 }
2229 }
2230 RET_LABEL:;
2231 }
2232 /* method scope#ABreakExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */
2233 void VIRTUAL_scope__ABreakExpr__accept_scope_visitor(val* self, val* p0) {
2234 scope__ABreakExpr__accept_scope_visitor(self, p0); /* Direct call scope#ABreakExpr#accept_scope_visitor on <self:Object(ABreakExpr)>*/
2235 RET_LABEL:;
2236 }
2237 /* method scope#ADoExpr#escapemark for (self: ADoExpr): nullable EscapeMark */
2238 val* scope__ADoExpr__escapemark(val* self) {
2239 val* var /* : nullable EscapeMark */;
2240 val* var1 /* : nullable EscapeMark */;
2241 var1 = self->attrs[COLOR_scope__ADoExpr___escapemark].val; /* _escapemark on <self:ADoExpr> */
2242 var = var1;
2243 RET_LABEL:;
2244 return var;
2245 }
2246 /* method scope#ADoExpr#escapemark for (self: Object): nullable EscapeMark */
2247 val* VIRTUAL_scope__ADoExpr__escapemark(val* self) {
2248 val* var /* : nullable EscapeMark */;
2249 val* var1 /* : nullable EscapeMark */;
2250 val* var3 /* : nullable EscapeMark */;
2251 { /* Inline scope#ADoExpr#escapemark (self) on <self:Object(ADoExpr)> */
2252 var3 = self->attrs[COLOR_scope__ADoExpr___escapemark].val; /* _escapemark on <self:Object(ADoExpr)> */
2253 var1 = var3;
2254 RET_LABEL2:(void)0;
2255 }
2256 var = var1;
2257 RET_LABEL:;
2258 return var;
2259 }
2260 /* method scope#ADoExpr#escapemark= for (self: ADoExpr, nullable EscapeMark) */
2261 void scope__ADoExpr__escapemark_61d(val* self, val* p0) {
2262 self->attrs[COLOR_scope__ADoExpr___escapemark].val = p0; /* _escapemark on <self:ADoExpr> */
2263 RET_LABEL:;
2264 }
2265 /* method scope#ADoExpr#escapemark= for (self: Object, nullable EscapeMark) */
2266 void VIRTUAL_scope__ADoExpr__escapemark_61d(val* self, val* p0) {
2267 { /* Inline scope#ADoExpr#escapemark= (self,p0) on <self:Object(ADoExpr)> */
2268 self->attrs[COLOR_scope__ADoExpr___escapemark].val = p0; /* _escapemark on <self:Object(ADoExpr)> */
2269 RET_LABEL1:(void)0;
2270 }
2271 RET_LABEL:;
2272 }
2273 /* method scope#ADoExpr#accept_scope_visitor for (self: ADoExpr, ScopeVisitor) */
2274 void scope__ADoExpr__accept_scope_visitor(val* self, val* p0) {
2275 val* var_v /* var v: ScopeVisitor */;
2276 val* var /* : nullable ALabel */;
2277 short int var1 /* : Bool */;
2278 val* var2 /* : EscapeMark */;
2279 val* var4 /* : nullable AExpr */;
2280 val* var5 /* : nullable EscapeMark */;
2281 val* var7 /* : nullable EscapeMark */;
2282 var_v = p0;
2283 {
2284 var = parser_nodes__ALabelable__n_label(self);
2285 }
2286 var1 = 0;
2287 {
2288 var2 = scope__ScopeVisitor__make_escape_mark(var_v, var, var1);
2289 }
2290 {
2291 { /* Inline scope#ADoExpr#escapemark= (self,var2) on <self:ADoExpr> */
2292 self->attrs[COLOR_scope__ADoExpr___escapemark].val = var2; /* _escapemark on <self:ADoExpr> */
2293 RET_LABEL3:(void)0;
2294 }
2295 }
2296 {
2297 var4 = parser_nodes__ADoExpr__n_block(self);
2298 }
2299 {
2300 { /* Inline scope#ADoExpr#escapemark (self) on <self:ADoExpr> */
2301 var7 = self->attrs[COLOR_scope__ADoExpr___escapemark].val; /* _escapemark on <self:ADoExpr> */
2302 var5 = var7;
2303 RET_LABEL6:(void)0;
2304 }
2305 }
2306 {
2307 scope__ScopeVisitor__enter_visit_block(var_v, var4, var5); /* Direct call scope#ScopeVisitor#enter_visit_block on <var_v:ScopeVisitor>*/
2308 }
2309 RET_LABEL:;
2310 }
2311 /* method scope#ADoExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */
2312 void VIRTUAL_scope__ADoExpr__accept_scope_visitor(val* self, val* p0) {
2313 scope__ADoExpr__accept_scope_visitor(self, p0); /* Direct call scope#ADoExpr#accept_scope_visitor on <self:Object(ADoExpr)>*/
2314 RET_LABEL:;
2315 }
2316 /* method scope#AIfExpr#accept_scope_visitor for (self: AIfExpr, ScopeVisitor) */
2317 void scope__AIfExpr__accept_scope_visitor(val* self, val* p0) {
2318 val* var_v /* var v: ScopeVisitor */;
2319 val* var /* : AExpr */;
2320 val* var1 /* : nullable AExpr */;
2321 val* var2 /* : null */;
2322 val* var3 /* : nullable AExpr */;
2323 val* var4 /* : null */;
2324 var_v = p0;
2325 {
2326 var = parser_nodes__AIfExpr__n_expr(self);
2327 }
2328 {
2329 parser_nodes__Visitor__enter_visit(var_v, var); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:ScopeVisitor>*/
2330 }
2331 {
2332 var1 = parser_nodes__AIfExpr__n_then(self);
2333 }
2334 var2 = NULL;
2335 {
2336 scope__ScopeVisitor__enter_visit_block(var_v, var1, var2); /* Direct call scope#ScopeVisitor#enter_visit_block on <var_v:ScopeVisitor>*/
2337 }
2338 {
2339 var3 = parser_nodes__AIfExpr__n_else(self);
2340 }
2341 var4 = NULL;
2342 {
2343 scope__ScopeVisitor__enter_visit_block(var_v, var3, var4); /* Direct call scope#ScopeVisitor#enter_visit_block on <var_v:ScopeVisitor>*/
2344 }
2345 RET_LABEL:;
2346 }
2347 /* method scope#AIfExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */
2348 void VIRTUAL_scope__AIfExpr__accept_scope_visitor(val* self, val* p0) {
2349 scope__AIfExpr__accept_scope_visitor(self, p0); /* Direct call scope#AIfExpr#accept_scope_visitor on <self:Object(AIfExpr)>*/
2350 RET_LABEL:;
2351 }
2352 /* method scope#AWhileExpr#escapemark for (self: AWhileExpr): nullable EscapeMark */
2353 val* scope__AWhileExpr__escapemark(val* self) {
2354 val* var /* : nullable EscapeMark */;
2355 val* var1 /* : nullable EscapeMark */;
2356 var1 = self->attrs[COLOR_scope__AWhileExpr___escapemark].val; /* _escapemark on <self:AWhileExpr> */
2357 var = var1;
2358 RET_LABEL:;
2359 return var;
2360 }
2361 /* method scope#AWhileExpr#escapemark for (self: Object): nullable EscapeMark */
2362 val* VIRTUAL_scope__AWhileExpr__escapemark(val* self) {
2363 val* var /* : nullable EscapeMark */;
2364 val* var1 /* : nullable EscapeMark */;
2365 val* var3 /* : nullable EscapeMark */;
2366 { /* Inline scope#AWhileExpr#escapemark (self) on <self:Object(AWhileExpr)> */
2367 var3 = self->attrs[COLOR_scope__AWhileExpr___escapemark].val; /* _escapemark on <self:Object(AWhileExpr)> */
2368 var1 = var3;
2369 RET_LABEL2:(void)0;
2370 }
2371 var = var1;
2372 RET_LABEL:;
2373 return var;
2374 }
2375 /* method scope#AWhileExpr#escapemark= for (self: AWhileExpr, nullable EscapeMark) */
2376 void scope__AWhileExpr__escapemark_61d(val* self, val* p0) {
2377 self->attrs[COLOR_scope__AWhileExpr___escapemark].val = p0; /* _escapemark on <self:AWhileExpr> */
2378 RET_LABEL:;
2379 }
2380 /* method scope#AWhileExpr#escapemark= for (self: Object, nullable EscapeMark) */
2381 void VIRTUAL_scope__AWhileExpr__escapemark_61d(val* self, val* p0) {
2382 { /* Inline scope#AWhileExpr#escapemark= (self,p0) on <self:Object(AWhileExpr)> */
2383 self->attrs[COLOR_scope__AWhileExpr___escapemark].val = p0; /* _escapemark on <self:Object(AWhileExpr)> */
2384 RET_LABEL1:(void)0;
2385 }
2386 RET_LABEL:;
2387 }
2388 /* method scope#AWhileExpr#accept_scope_visitor for (self: AWhileExpr, ScopeVisitor) */
2389 void scope__AWhileExpr__accept_scope_visitor(val* self, val* p0) {
2390 val* var_v /* var v: ScopeVisitor */;
2391 val* var /* : nullable ALabel */;
2392 short int var1 /* : Bool */;
2393 val* var2 /* : EscapeMark */;
2394 val* var_escapemark /* var escapemark: EscapeMark */;
2395 val* var4 /* : AExpr */;
2396 val* var5 /* : nullable AExpr */;
2397 var_v = p0;
2398 {
2399 var = parser_nodes__ALabelable__n_label(self);
2400 }
2401 var1 = 1;
2402 {
2403 var2 = scope__ScopeVisitor__make_escape_mark(var_v, var, var1);
2404 }
2405 var_escapemark = var2;
2406 {
2407 { /* Inline scope#AWhileExpr#escapemark= (self,var_escapemark) on <self:AWhileExpr> */
2408 self->attrs[COLOR_scope__AWhileExpr___escapemark].val = var_escapemark; /* _escapemark on <self:AWhileExpr> */
2409 RET_LABEL3:(void)0;
2410 }
2411 }
2412 {
2413 var4 = parser_nodes__AWhileExpr__n_expr(self);
2414 }
2415 {
2416 parser_nodes__Visitor__enter_visit(var_v, var4); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:ScopeVisitor>*/
2417 }
2418 {
2419 var5 = parser_nodes__AWhileExpr__n_block(self);
2420 }
2421 {
2422 scope__ScopeVisitor__enter_visit_block(var_v, var5, var_escapemark); /* Direct call scope#ScopeVisitor#enter_visit_block on <var_v:ScopeVisitor>*/
2423 }
2424 RET_LABEL:;
2425 }
2426 /* method scope#AWhileExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */
2427 void VIRTUAL_scope__AWhileExpr__accept_scope_visitor(val* self, val* p0) {
2428 scope__AWhileExpr__accept_scope_visitor(self, p0); /* Direct call scope#AWhileExpr#accept_scope_visitor on <self:Object(AWhileExpr)>*/
2429 RET_LABEL:;
2430 }
2431 /* method scope#ALoopExpr#escapemark for (self: ALoopExpr): nullable EscapeMark */
2432 val* scope__ALoopExpr__escapemark(val* self) {
2433 val* var /* : nullable EscapeMark */;
2434 val* var1 /* : nullable EscapeMark */;
2435 var1 = self->attrs[COLOR_scope__ALoopExpr___escapemark].val; /* _escapemark on <self:ALoopExpr> */
2436 var = var1;
2437 RET_LABEL:;
2438 return var;
2439 }
2440 /* method scope#ALoopExpr#escapemark for (self: Object): nullable EscapeMark */
2441 val* VIRTUAL_scope__ALoopExpr__escapemark(val* self) {
2442 val* var /* : nullable EscapeMark */;
2443 val* var1 /* : nullable EscapeMark */;
2444 val* var3 /* : nullable EscapeMark */;
2445 { /* Inline scope#ALoopExpr#escapemark (self) on <self:Object(ALoopExpr)> */
2446 var3 = self->attrs[COLOR_scope__ALoopExpr___escapemark].val; /* _escapemark on <self:Object(ALoopExpr)> */
2447 var1 = var3;
2448 RET_LABEL2:(void)0;
2449 }
2450 var = var1;
2451 RET_LABEL:;
2452 return var;
2453 }
2454 /* method scope#ALoopExpr#escapemark= for (self: ALoopExpr, nullable EscapeMark) */
2455 void scope__ALoopExpr__escapemark_61d(val* self, val* p0) {
2456 self->attrs[COLOR_scope__ALoopExpr___escapemark].val = p0; /* _escapemark on <self:ALoopExpr> */
2457 RET_LABEL:;
2458 }
2459 /* method scope#ALoopExpr#escapemark= for (self: Object, nullable EscapeMark) */
2460 void VIRTUAL_scope__ALoopExpr__escapemark_61d(val* self, val* p0) {
2461 { /* Inline scope#ALoopExpr#escapemark= (self,p0) on <self:Object(ALoopExpr)> */
2462 self->attrs[COLOR_scope__ALoopExpr___escapemark].val = p0; /* _escapemark on <self:Object(ALoopExpr)> */
2463 RET_LABEL1:(void)0;
2464 }
2465 RET_LABEL:;
2466 }
2467 /* method scope#ALoopExpr#accept_scope_visitor for (self: ALoopExpr, ScopeVisitor) */
2468 void scope__ALoopExpr__accept_scope_visitor(val* self, val* p0) {
2469 val* var_v /* var v: ScopeVisitor */;
2470 val* var /* : nullable ALabel */;
2471 short int var1 /* : Bool */;
2472 val* var2 /* : EscapeMark */;
2473 val* var_escapemark /* var escapemark: EscapeMark */;
2474 val* var4 /* : nullable AExpr */;
2475 var_v = p0;
2476 {
2477 var = parser_nodes__ALabelable__n_label(self);
2478 }
2479 var1 = 1;
2480 {
2481 var2 = scope__ScopeVisitor__make_escape_mark(var_v, var, var1);
2482 }
2483 var_escapemark = var2;
2484 {
2485 { /* Inline scope#ALoopExpr#escapemark= (self,var_escapemark) on <self:ALoopExpr> */
2486 self->attrs[COLOR_scope__ALoopExpr___escapemark].val = var_escapemark; /* _escapemark on <self:ALoopExpr> */
2487 RET_LABEL3:(void)0;
2488 }
2489 }
2490 {
2491 var4 = parser_nodes__ALoopExpr__n_block(self);
2492 }
2493 {
2494 scope__ScopeVisitor__enter_visit_block(var_v, var4, var_escapemark); /* Direct call scope#ScopeVisitor#enter_visit_block on <var_v:ScopeVisitor>*/
2495 }
2496 RET_LABEL:;
2497 }
2498 /* method scope#ALoopExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */
2499 void VIRTUAL_scope__ALoopExpr__accept_scope_visitor(val* self, val* p0) {
2500 scope__ALoopExpr__accept_scope_visitor(self, p0); /* Direct call scope#ALoopExpr#accept_scope_visitor on <self:Object(ALoopExpr)>*/
2501 RET_LABEL:;
2502 }
2503 /* method scope#AForExpr#variables for (self: AForExpr): nullable Array[Variable] */
2504 val* scope__AForExpr__variables(val* self) {
2505 val* var /* : nullable Array[Variable] */;
2506 val* var1 /* : nullable Array[Variable] */;
2507 var1 = self->attrs[COLOR_scope__AForExpr___variables].val; /* _variables on <self:AForExpr> */
2508 var = var1;
2509 RET_LABEL:;
2510 return var;
2511 }
2512 /* method scope#AForExpr#variables for (self: Object): nullable Array[Variable] */
2513 val* VIRTUAL_scope__AForExpr__variables(val* self) {
2514 val* var /* : nullable Array[Variable] */;
2515 val* var1 /* : nullable Array[Variable] */;
2516 val* var3 /* : nullable Array[Variable] */;
2517 { /* Inline scope#AForExpr#variables (self) on <self:Object(AForExpr)> */
2518 var3 = self->attrs[COLOR_scope__AForExpr___variables].val; /* _variables on <self:Object(AForExpr)> */
2519 var1 = var3;
2520 RET_LABEL2:(void)0;
2521 }
2522 var = var1;
2523 RET_LABEL:;
2524 return var;
2525 }
2526 /* method scope#AForExpr#variables= for (self: AForExpr, nullable Array[Variable]) */
2527 void scope__AForExpr__variables_61d(val* self, val* p0) {
2528 self->attrs[COLOR_scope__AForExpr___variables].val = p0; /* _variables on <self:AForExpr> */
2529 RET_LABEL:;
2530 }
2531 /* method scope#AForExpr#variables= for (self: Object, nullable Array[Variable]) */
2532 void VIRTUAL_scope__AForExpr__variables_61d(val* self, val* p0) {
2533 { /* Inline scope#AForExpr#variables= (self,p0) on <self:Object(AForExpr)> */
2534 self->attrs[COLOR_scope__AForExpr___variables].val = p0; /* _variables on <self:Object(AForExpr)> */
2535 RET_LABEL1:(void)0;
2536 }
2537 RET_LABEL:;
2538 }
2539 /* method scope#AForExpr#escapemark for (self: AForExpr): nullable EscapeMark */
2540 val* scope__AForExpr__escapemark(val* self) {
2541 val* var /* : nullable EscapeMark */;
2542 val* var1 /* : nullable EscapeMark */;
2543 var1 = self->attrs[COLOR_scope__AForExpr___escapemark].val; /* _escapemark on <self:AForExpr> */
2544 var = var1;
2545 RET_LABEL:;
2546 return var;
2547 }
2548 /* method scope#AForExpr#escapemark for (self: Object): nullable EscapeMark */
2549 val* VIRTUAL_scope__AForExpr__escapemark(val* self) {
2550 val* var /* : nullable EscapeMark */;
2551 val* var1 /* : nullable EscapeMark */;
2552 val* var3 /* : nullable EscapeMark */;
2553 { /* Inline scope#AForExpr#escapemark (self) on <self:Object(AForExpr)> */
2554 var3 = self->attrs[COLOR_scope__AForExpr___escapemark].val; /* _escapemark on <self:Object(AForExpr)> */
2555 var1 = var3;
2556 RET_LABEL2:(void)0;
2557 }
2558 var = var1;
2559 RET_LABEL:;
2560 return var;
2561 }
2562 /* method scope#AForExpr#escapemark= for (self: AForExpr, nullable EscapeMark) */
2563 void scope__AForExpr__escapemark_61d(val* self, val* p0) {
2564 self->attrs[COLOR_scope__AForExpr___escapemark].val = p0; /* _escapemark on <self:AForExpr> */
2565 RET_LABEL:;
2566 }
2567 /* method scope#AForExpr#escapemark= for (self: Object, nullable EscapeMark) */
2568 void VIRTUAL_scope__AForExpr__escapemark_61d(val* self, val* p0) {
2569 { /* Inline scope#AForExpr#escapemark= (self,p0) on <self:Object(AForExpr)> */
2570 self->attrs[COLOR_scope__AForExpr___escapemark].val = p0; /* _escapemark on <self:Object(AForExpr)> */
2571 RET_LABEL1:(void)0;
2572 }
2573 RET_LABEL:;
2574 }
2575 /* method scope#AForExpr#accept_scope_visitor for (self: AForExpr, ScopeVisitor) */
2576 void scope__AForExpr__accept_scope_visitor(val* self, val* p0) {
2577 val* var_v /* var v: ScopeVisitor */;
2578 val* var /* : AExpr */;
2579 val* var1 /* : List[Scope] */;
2580 val* var3 /* : List[Scope] */;
2581 val* var4 /* : Scope */;
2582 val* var6 /* : Array[Variable] */;
2583 val* var_variables /* var variables: Array[Variable] */;
2584 val* var8 /* : ANodes[TId] */;
2585 val* var10 /* : ANodes[TId] */;
2586 val* var11 /* : Iterator[ANode] */;
2587 short int var12 /* : Bool */;
2588 val* var13 /* : nullable Object */;
2589 val* var_nid /* var nid: TId */;
2590 val* var14 /* : Variable */;
2591 val* var15 /* : String */;
2592 val* var_va /* var va: Variable */;
2593 short int var17 /* : Bool */;
2594 val* var18 /* : nullable ALabel */;
2595 short int var19 /* : Bool */;
2596 val* var20 /* : EscapeMark */;
2597 val* var_escapemark /* var escapemark: EscapeMark */;
2598 val* var22 /* : nullable AExpr */;
2599 val* var23 /* : List[Scope] */;
2600 val* var25 /* : List[Scope] */;
2601 val* var26 /* : nullable Object */;
2602 var_v = p0;
2603 {
2604 var = parser_nodes__AForExpr__n_expr(self);
2605 }
2606 {
2607 parser_nodes__Visitor__enter_visit(var_v, var); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:ScopeVisitor>*/
2608 }
2609 {
2610 { /* Inline scope#ScopeVisitor#scopes (var_v) on <var_v:ScopeVisitor> */
2611 var3 = var_v->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <var_v:ScopeVisitor> */
2612 if (unlikely(var3 == NULL)) {
2613 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes");
2614 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 79);
2615 show_backtrace(1);
2616 }
2617 var1 = var3;
2618 RET_LABEL2:(void)0;
2619 }
2620 }
2621 var4 = NEW_scope__Scope(&type_scope__Scope);
2622 {
2623 { /* Inline scope#Scope#init (var4) on <var4:Scope> */
2624 RET_LABEL5:(void)0;
2625 }
2626 }
2627 {
2628 list__List__unshift(var1, var4); /* Direct call list#List#unshift on <var1:List[Scope]>*/
2629 }
2630 var6 = NEW_array__Array(&type_array__Arrayscope__Variable);
2631 {
2632 array__Array__init(var6); /* Direct call array#Array#init on <var6:Array[Variable]>*/
2633 }
2634 var_variables = var6;
2635 {
2636 { /* Inline scope#AForExpr#variables= (self,var_variables) on <self:AForExpr> */
2637 self->attrs[COLOR_scope__AForExpr___variables].val = var_variables; /* _variables on <self:AForExpr> */
2638 RET_LABEL7:(void)0;
2639 }
2640 }
2641 {
2642 { /* Inline parser_nodes#AForExpr#n_ids (self) on <self:AForExpr> */
2643 var10 = self->attrs[COLOR_parser_nodes__AForExpr___n_ids].val; /* _n_ids on <self:AForExpr> */
2644 if (unlikely(var10 == NULL)) {
2645 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_ids");
2646 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 1604);
2647 show_backtrace(1);
2648 }
2649 var8 = var10;
2650 RET_LABEL9:(void)0;
2651 }
2652 }
2653 {
2654 var11 = parser_nodes__ANodes__iterator(var8);
2655 }
2656 for(;;) {
2657 {
2658 var12 = ((short int (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var11) /* is_ok on <var11:Iterator[ANode]>*/;
2659 }
2660 if(!var12) break;
2661 {
2662 var13 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__item]))(var11) /* item on <var11:Iterator[ANode]>*/;
2663 }
2664 var_nid = var13;
2665 var14 = NEW_scope__Variable(&type_scope__Variable);
2666 {
2667 var15 = lexer_work__Token__text(var_nid);
2668 }
2669 {
2670 { /* Inline scope#Variable#init (var14,var15) on <var14:Variable> */
2671 var14->attrs[COLOR_scope__Variable___name].val = var15; /* _name on <var14:Variable> */
2672 RET_LABEL16:(void)0;
2673 }
2674 }
2675 var_va = var14;
2676 {
2677 var17 = scope__ScopeVisitor__register_variable(var_v, var_nid, var_va);
2678 }
2679 var17;
2680 {
2681 array__Array__add(var_variables, var_va); /* Direct call array#Array#add on <var_variables:Array[Variable]>*/
2682 }
2683 CONTINUE_label: (void)0;
2684 {
2685 ((void (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__next]))(var11) /* next on <var11:Iterator[ANode]>*/;
2686 }
2687 }
2688 BREAK_label: (void)0;
2689 {
2690 var18 = parser_nodes__ALabelable__n_label(self);
2691 }
2692 var19 = 1;
2693 {
2694 var20 = scope__ScopeVisitor__make_escape_mark(var_v, var18, var19);
2695 }
2696 var_escapemark = var20;
2697 {
2698 { /* Inline scope#AForExpr#escapemark= (self,var_escapemark) on <self:AForExpr> */
2699 self->attrs[COLOR_scope__AForExpr___escapemark].val = var_escapemark; /* _escapemark on <self:AForExpr> */
2700 RET_LABEL21:(void)0;
2701 }
2702 }
2703 {
2704 var22 = parser_nodes__AForExpr__n_block(self);
2705 }
2706 {
2707 scope__ScopeVisitor__enter_visit_block(var_v, var22, var_escapemark); /* Direct call scope#ScopeVisitor#enter_visit_block on <var_v:ScopeVisitor>*/
2708 }
2709 {
2710 { /* Inline scope#ScopeVisitor#scopes (var_v) on <var_v:ScopeVisitor> */
2711 var25 = var_v->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <var_v:ScopeVisitor> */
2712 if (unlikely(var25 == NULL)) {
2713 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes");
2714 PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 79);
2715 show_backtrace(1);
2716 }
2717 var23 = var25;
2718 RET_LABEL24:(void)0;
2719 }
2720 }
2721 {
2722 var26 = list__List__shift(var23);
2723 }
2724 var26;
2725 RET_LABEL:;
2726 }
2727 /* method scope#AForExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */
2728 void VIRTUAL_scope__AForExpr__accept_scope_visitor(val* self, val* p0) {
2729 scope__AForExpr__accept_scope_visitor(self, p0); /* Direct call scope#AForExpr#accept_scope_visitor on <self:Object(AForExpr)>*/
2730 RET_LABEL:;
2731 }
2732 /* method scope#AVarFormExpr#variable for (self: AVarFormExpr): nullable Variable */
2733 val* scope__AVarFormExpr__variable(val* self) {
2734 val* var /* : nullable Variable */;
2735 val* var1 /* : nullable Variable */;
2736 var1 = self->attrs[COLOR_scope__AVarFormExpr___variable].val; /* _variable on <self:AVarFormExpr> */
2737 var = var1;
2738 RET_LABEL:;
2739 return var;
2740 }
2741 /* method scope#AVarFormExpr#variable for (self: Object): nullable Variable */
2742 val* VIRTUAL_scope__AVarFormExpr__variable(val* self) {
2743 val* var /* : nullable Variable */;
2744 val* var1 /* : nullable Variable */;
2745 val* var3 /* : nullable Variable */;
2746 { /* Inline scope#AVarFormExpr#variable (self) on <self:Object(AVarFormExpr)> */
2747 var3 = self->attrs[COLOR_scope__AVarFormExpr___variable].val; /* _variable on <self:Object(AVarFormExpr)> */
2748 var1 = var3;
2749 RET_LABEL2:(void)0;
2750 }
2751 var = var1;
2752 RET_LABEL:;
2753 return var;
2754 }
2755 /* method scope#AVarFormExpr#variable= for (self: AVarFormExpr, nullable Variable) */
2756 void scope__AVarFormExpr__variable_61d(val* self, val* p0) {
2757 self->attrs[COLOR_scope__AVarFormExpr___variable].val = p0; /* _variable on <self:AVarFormExpr> */
2758 RET_LABEL:;
2759 }
2760 /* method scope#AVarFormExpr#variable= for (self: Object, nullable Variable) */
2761 void VIRTUAL_scope__AVarFormExpr__variable_61d(val* self, val* p0) {
2762 { /* Inline scope#AVarFormExpr#variable= (self,p0) on <self:Object(AVarFormExpr)> */
2763 self->attrs[COLOR_scope__AVarFormExpr___variable].val = p0; /* _variable on <self:Object(AVarFormExpr)> */
2764 RET_LABEL1:(void)0;
2765 }
2766 RET_LABEL:;
2767 }
2768 /* method scope#ACallFormExpr#accept_scope_visitor for (self: ACallFormExpr, ScopeVisitor) */
2769 void scope__ACallFormExpr__accept_scope_visitor(val* self, val* p0) {
2770 val* var_v /* var v: ScopeVisitor */;
2771 val* var /* : AExpr */;
2772 short int var1 /* : Bool */;
2773 int cltype;
2774 int idtype;
2775 val* var2 /* : TId */;
2776 val* var3 /* : String */;
2777 val* var_name /* var name: String */;
2778 val* var4 /* : nullable Variable */;
2779 val* var_variable /* var variable: nullable Variable */;
2780 val* var5 /* : null */;
2781 short int var6 /* : Bool */;
2782 short int var7 /* : Bool */;
2783 val* var_other /* var other: nullable Object */;
2784 short int var9 /* : Bool */;
2785 short int var10 /* : Bool */;
2786 short int var11 /* : Bool */;
2787 short int var12 /* : Bool */;
2788 val* var13 /* : AExprs */;
2789 val* var14 /* : ANodes[AExpr] */;
2790 val* var16 /* : ANodes[AExpr] */;
2791 short int var17 /* : Bool */;
2792 short int var18 /* : Bool */;
2793 short int var_ /* var : Bool */;
2794 val* var19 /* : AExprs */;
2795 short int var20 /* : Bool */;
2796 int cltype21;
2797 int idtype22;
2798 static val* varonce;
2799 val* var23 /* : String */;
2800 char* var24 /* : NativeString */;
2801 long var25 /* : Int */;
2802 val* var26 /* : FlatString */;
2803 static val* varonce27;
2804 val* var28 /* : String */;
2805 char* var29 /* : NativeString */;
2806 long var30 /* : Int */;
2807 val* var31 /* : FlatString */;
2808 val* var32 /* : Array[Object] */;
2809 long var33 /* : Int */;
2810 val* var34 /* : NativeArray[Object] */;
2811 val* var35 /* : String */;
2812 val* var36 /* : AVarFormExpr */;
2813 val* var_n /* var n: AExpr */;
2814 var_v = p0;
2815 {
2816 var = parser_nodes__ASendExpr__n_expr(self);
2817 }
2818 /* <var:AExpr> isa AImplicitSelfExpr */
2819 cltype = type_parser_nodes__AImplicitSelfExpr.color;
2820 idtype = type_parser_nodes__AImplicitSelfExpr.id;
2821 if(cltype >= var->type->table_size) {
2822 var1 = 0;
2823 } else {
2824 var1 = var->type->type_table[cltype] == idtype;
2825 }
2826 if (var1){
2827 {
2828 var2 = parser_nodes__ACallFormExpr__n_id(self);
2829 }
2830 {
2831 var3 = lexer_work__Token__text(var2);
2832 }
2833 var_name = var3;
2834 {
2835 var4 = scope__ScopeVisitor__search_variable(var_v, var_name);
2836 }
2837 var_variable = var4;
2838 var5 = NULL;
2839 if (var_variable == NULL) {
2840 var6 = 0; /* is null */
2841 } else {
2842 var6 = 1; /* arg is null and recv is not */
2843 }
2844 if (0) {
2845 { /* Inline kernel#Object#!= (var_variable,var5) on <var_variable:nullable Variable> */
2846 var_other = var5;
2847 {
2848 var10 = ((short int (*)(val*, val*))(var_variable->class->vft[COLOR_kernel__Object___61d_61d]))(var_variable, var_other) /* == on <var_variable:nullable Variable(Variable)>*/;
2849 var9 = var10;
2850 }
2851 var11 = !var9;
2852 var7 = var11;
2853 goto RET_LABEL8;
2854 RET_LABEL8:(void)0;
2855 }
2856 var6 = var7;
2857 }
2858 if (var6){
2859 {
2860 var13 = parser_nodes__ACallFormExpr__n_args(self);
2861 }
2862 {
2863 { /* Inline parser_nodes#AExprs#n_exprs (var13) on <var13:AExprs> */
2864 var16 = var13->attrs[COLOR_parser_nodes__AExprs___n_exprs].val; /* _n_exprs on <var13:AExprs> */
2865 if (unlikely(var16 == NULL)) {
2866 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs");
2867 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 2274);
2868 show_backtrace(1);
2869 }
2870 var14 = var16;
2871 RET_LABEL15:(void)0;
2872 }
2873 }
2874 {
2875 var17 = parser_nodes__ANodes__is_empty(var14);
2876 }
2877 var18 = !var17;
2878 var_ = var18;
2879 if (var18){
2880 var12 = var_;
2881 } else {
2882 {
2883 var19 = parser_nodes__ACallFormExpr__n_args(self);
2884 }
2885 /* <var19:AExprs> isa AParExprs */
2886 cltype21 = type_parser_nodes__AParExprs.color;
2887 idtype22 = type_parser_nodes__AParExprs.id;
2888 if(cltype21 >= var19->type->table_size) {
2889 var20 = 0;
2890 } else {
2891 var20 = var19->type->type_table[cltype21] == idtype22;
2892 }
2893 var12 = var20;
2894 }
2895 if (var12){
2896 if (varonce) {
2897 var23 = varonce;
2898 } else {
2899 var24 = "Error: ";
2900 var25 = 7;
2901 var26 = string__NativeString__to_s_with_length(var24, var25);
2902 var23 = var26;
2903 varonce = var23;
2904 }
2905 if (varonce27) {
2906 var28 = varonce27;
2907 } else {
2908 var29 = " is variable, not a function.";
2909 var30 = 29;
2910 var31 = string__NativeString__to_s_with_length(var29, var30);
2911 var28 = var31;
2912 varonce27 = var28;
2913 }
2914 var32 = NEW_array__Array(&type_array__Arraykernel__Object);
2915 { /* var32 = array_instance Array[Object] */
2916 var33 = 3;
2917 var34 = NEW_array__NativeArray(var33, &type_array__NativeArraykernel__Object);
2918 ((struct instance_array__NativeArray*)var34)->values[0] = (val*) var23;
2919 ((struct instance_array__NativeArray*)var34)->values[1] = (val*) var_name;
2920 ((struct instance_array__NativeArray*)var34)->values[2] = (val*) var28;
2921 {
2922 ((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[Object]>*/;
2923 }
2924 }
2925 {
2926 var35 = ((val* (*)(val*))(var32->class->vft[COLOR_string__Object__to_s]))(var32) /* to_s on <var32:Array[Object]>*/;
2927 }
2928 {
2929 scope__ScopeVisitor__error(var_v, self, var35); /* Direct call scope#ScopeVisitor#error on <var_v:ScopeVisitor>*/
2930 }
2931 goto RET_LABEL;
2932 } else {
2933 }
2934 {
2935 var36 = ((val* (*)(val*, val*))(self->class->vft[COLOR_scope__ACallFormExpr__variable_create]))(self, var_variable) /* variable_create on <self:ACallFormExpr>*/;
2936 }
2937 var_n = var36;
2938 {
2939 { /* Inline scope#AVarFormExpr#variable= (var_n,var_variable) on <var_n:AExpr(AVarFormExpr)> */
2940 var_n->attrs[COLOR_scope__AVarFormExpr___variable].val = var_variable; /* _variable on <var_n:AExpr(AVarFormExpr)> */
2941 RET_LABEL37:(void)0;
2942 }
2943 }
2944 {
2945 parser_nodes__Prod__replace_with(self, var_n); /* Direct call parser_nodes#Prod#replace_with on <self:ACallFormExpr>*/
2946 }
2947 {
2948 scope__ANode__accept_scope_visitor(var_n, var_v); /* Direct call scope#ANode#accept_scope_visitor on <var_n:AExpr(AVarFormExpr)>*/
2949 }
2950 goto RET_LABEL;
2951 } else {
2952 }
2953 } else {
2954 }
2955 {
2956 ((void (*)(val*, val*))(self->class->vft[COLOR_scope__ACallFormExpr__accept_scope_visitor]))(self, p0) /* accept_scope_visitor on <self:ACallFormExpr>*/;
2957 }
2958 RET_LABEL:;
2959 }
2960 /* method scope#ACallFormExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */
2961 void VIRTUAL_scope__ACallFormExpr__accept_scope_visitor(val* self, val* p0) {
2962 scope__ACallFormExpr__accept_scope_visitor(self, p0); /* Direct call scope#ACallFormExpr#accept_scope_visitor on <self:Object(ACallFormExpr)>*/
2963 RET_LABEL:;
2964 }
2965 /* method scope#ACallExpr#variable_create for (self: ACallExpr, Variable): AVarFormExpr */
2966 val* scope__ACallExpr__variable_create(val* self, val* p0) {
2967 val* var /* : AVarFormExpr */;
2968 val* var_variable /* var variable: Variable */;
2969 val* var1 /* : AVarExpr */;
2970 val* var2 /* : TId */;
2971 var_variable = p0;
2972 var1 = NEW_parser_nodes__AVarExpr(&type_parser_nodes__AVarExpr);
2973 {
2974 var2 = parser_nodes__ACallFormExpr__n_id(self);
2975 }
2976 {
2977 parser_prod__AVarExpr__init_avarexpr(var1, var2); /* Direct call parser_prod#AVarExpr#init_avarexpr on <var1:AVarExpr>*/
2978 }
2979 var = var1;
2980 goto RET_LABEL;
2981 RET_LABEL:;
2982 return var;
2983 }
2984 /* method scope#ACallExpr#variable_create for (self: Object, Variable): AVarFormExpr */
2985 val* VIRTUAL_scope__ACallExpr__variable_create(val* self, val* p0) {
2986 val* var /* : AVarFormExpr */;
2987 val* var1 /* : AVarFormExpr */;
2988 var1 = scope__ACallExpr__variable_create(self, p0);
2989 var = var1;
2990 RET_LABEL:;
2991 return var;
2992 }
2993 /* method scope#ACallAssignExpr#variable_create for (self: ACallAssignExpr, Variable): AVarFormExpr */
2994 val* scope__ACallAssignExpr__variable_create(val* self, val* p0) {
2995 val* var /* : AVarFormExpr */;
2996 val* var_variable /* var variable: Variable */;
2997 val* var1 /* : AVarAssignExpr */;
2998 val* var2 /* : TId */;
2999 val* var3 /* : TAssign */;
3000 val* var4 /* : AExpr */;
3001 var_variable = p0;
3002 var1 = NEW_parser_nodes__AVarAssignExpr(&type_parser_nodes__AVarAssignExpr);
3003 {
3004 var2 = parser_nodes__ACallFormExpr__n_id(self);
3005 }
3006 {
3007 var3 = parser_nodes__AAssignFormExpr__n_assign(self);
3008 }
3009 {
3010 var4 = parser_nodes__AAssignFormExpr__n_value(self);
3011 }
3012 {
3013 parser_prod__AVarAssignExpr__init_avarassignexpr(var1, var2, var3, var4); /* Direct call parser_prod#AVarAssignExpr#init_avarassignexpr on <var1:AVarAssignExpr>*/
3014 }
3015 var = var1;
3016 goto RET_LABEL;
3017 RET_LABEL:;
3018 return var;
3019 }
3020 /* method scope#ACallAssignExpr#variable_create for (self: Object, Variable): AVarFormExpr */
3021 val* VIRTUAL_scope__ACallAssignExpr__variable_create(val* self, val* p0) {
3022 val* var /* : AVarFormExpr */;
3023 val* var1 /* : AVarFormExpr */;
3024 var1 = scope__ACallAssignExpr__variable_create(self, p0);
3025 var = var1;
3026 RET_LABEL:;
3027 return var;
3028 }
3029 /* method scope#ACallReassignExpr#variable_create for (self: ACallReassignExpr, Variable): AVarFormExpr */
3030 val* scope__ACallReassignExpr__variable_create(val* self, val* p0) {
3031 val* var /* : AVarFormExpr */;
3032 val* var_variable /* var variable: Variable */;
3033 val* var1 /* : AVarReassignExpr */;
3034 val* var2 /* : TId */;
3035 val* var3 /* : AAssignOp */;
3036 val* var4 /* : AExpr */;
3037 var_variable = p0;
3038 var1 = NEW_parser_nodes__AVarReassignExpr(&type_parser_nodes__AVarReassignExpr);
3039 {
3040 var2 = parser_nodes__ACallFormExpr__n_id(self);
3041 }
3042 {
3043 var3 = parser_nodes__AReassignFormExpr__n_assign_op(self);
3044 }
3045 {
3046 var4 = parser_nodes__AReassignFormExpr__n_value(self);
3047 }
3048 {
3049 parser_prod__AVarReassignExpr__init_avarreassignexpr(var1, var2, var3, var4); /* Direct call parser_prod#AVarReassignExpr#init_avarreassignexpr on <var1:AVarReassignExpr>*/
3050 }
3051 var = var1;
3052 goto RET_LABEL;
3053 RET_LABEL:;
3054 return var;
3055 }
3056 /* method scope#ACallReassignExpr#variable_create for (self: Object, Variable): AVarFormExpr */
3057 val* VIRTUAL_scope__ACallReassignExpr__variable_create(val* self, val* p0) {
3058 val* var /* : AVarFormExpr */;
3059 val* var1 /* : AVarFormExpr */;
3060 var1 = scope__ACallReassignExpr__variable_create(self, p0);
3061 var = var1;
3062 RET_LABEL:;
3063 return var;
3064 }