nitg-s: fix abstract methods in extern classes and add test
[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___64dscope_phase].val; /* @scope_phase on <self:ToolContext> */
7 if (var1 == NULL) {
8 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @scope_phase");
9 fprintf(stderr, " (%s:%d)\n", "src/scope.nit", 25);
10 exit(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 var1 = scope__ToolContext__scope_phase(self);
21 var = var1;
22 RET_LABEL:;
23 return var;
24 }
25 /* method scope#ToolContext#scope_phase= for (self: ToolContext, Phase) */
26 void scope__ToolContext__scope_phase_61d(val* self, val* p0) {
27 self->attrs[COLOR_scope__ToolContext___64dscope_phase].val = p0; /* @scope_phase on <self:ToolContext> */
28 RET_LABEL:;
29 }
30 /* method scope#ToolContext#scope_phase= for (self: Object, Phase) */
31 void VIRTUAL_scope__ToolContext__scope_phase_61d(val* self, val* p0) {
32 scope__ToolContext__scope_phase_61d(self, p0);
33 RET_LABEL:;
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 var_npropdef = p0;
40 var = ((val* (*)(val*))(self->class->vft[COLOR_phase__Phase__toolcontext]))(self) /* toolcontext on <self:ScopePhase>*/;
41 ((void (*)(val*, val*))(var_npropdef->class->vft[COLOR_scope__APropdef__do_scope]))(var_npropdef, var) /* do_scope on <var_npropdef:APropdef>*/;
42 RET_LABEL:;
43 }
44 /* method scope#ScopePhase#process_npropdef for (self: Object, APropdef) */
45 void VIRTUAL_scope__ScopePhase__process_npropdef(val* self, val* p0) {
46 scope__ScopePhase__process_npropdef(self, p0);
47 RET_LABEL:;
48 }
49 /* method scope#Variable#name for (self: Variable): String */
50 val* scope__Variable__name(val* self) {
51 val* var /* : String */;
52 val* var1 /* : String */;
53 var1 = self->attrs[COLOR_scope__Variable___64dname].val; /* @name on <self:Variable> */
54 if (var1 == NULL) {
55 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @name");
56 fprintf(stderr, " (%s:%d)\n", "src/scope.nit", 36);
57 exit(1);
58 }
59 var = var1;
60 RET_LABEL:;
61 return var;
62 }
63 /* method scope#Variable#name for (self: Object): String */
64 val* VIRTUAL_scope__Variable__name(val* self) {
65 val* var /* : String */;
66 val* var1 /* : String */;
67 var1 = scope__Variable__name(self);
68 var = var1;
69 RET_LABEL:;
70 return var;
71 }
72 /* method scope#Variable#name= for (self: Variable, String) */
73 void scope__Variable__name_61d(val* self, val* p0) {
74 self->attrs[COLOR_scope__Variable___64dname].val = p0; /* @name on <self:Variable> */
75 RET_LABEL:;
76 }
77 /* method scope#Variable#name= for (self: Object, String) */
78 void VIRTUAL_scope__Variable__name_61d(val* self, val* p0) {
79 scope__Variable__name_61d(self, p0);
80 RET_LABEL:;
81 }
82 /* method scope#Variable#to_s for (self: Variable): String */
83 val* scope__Variable__to_s(val* self) {
84 val* var /* : String */;
85 val* var1 /* : String */;
86 var1 = ((val* (*)(val*))(self->class->vft[COLOR_scope__Variable__name]))(self) /* name on <self:Variable>*/;
87 var = var1;
88 goto RET_LABEL;
89 RET_LABEL:;
90 return var;
91 }
92 /* method scope#Variable#to_s for (self: Object): String */
93 val* VIRTUAL_scope__Variable__to_s(val* self) {
94 val* var /* : String */;
95 val* var1 /* : String */;
96 var1 = scope__Variable__to_s(self);
97 var = var1;
98 RET_LABEL:;
99 return var;
100 }
101 /* method scope#Variable#init for (self: Variable, String) */
102 void scope__Variable__init(val* self, val* p0) {
103 self->attrs[COLOR_scope__Variable___64dname].val = p0; /* @name on <self:Variable> */
104 RET_LABEL:;
105 }
106 /* method scope#Variable#init for (self: Object, String) */
107 void VIRTUAL_scope__Variable__init(val* self, val* p0) {
108 scope__Variable__init(self, p0);
109 RET_LABEL:;
110 }
111 /* method scope#EscapeMark#name for (self: EscapeMark): nullable String */
112 val* scope__EscapeMark__name(val* self) {
113 val* var /* : nullable String */;
114 val* var1 /* : nullable String */;
115 var1 = self->attrs[COLOR_scope__EscapeMark___64dname].val; /* @name on <self:EscapeMark> */
116 var = var1;
117 RET_LABEL:;
118 return var;
119 }
120 /* method scope#EscapeMark#name for (self: Object): nullable String */
121 val* VIRTUAL_scope__EscapeMark__name(val* self) {
122 val* var /* : nullable String */;
123 val* var1 /* : nullable String */;
124 var1 = scope__EscapeMark__name(self);
125 var = var1;
126 RET_LABEL:;
127 return var;
128 }
129 /* method scope#EscapeMark#name= for (self: EscapeMark, nullable String) */
130 void scope__EscapeMark__name_61d(val* self, val* p0) {
131 self->attrs[COLOR_scope__EscapeMark___64dname].val = p0; /* @name on <self:EscapeMark> */
132 RET_LABEL:;
133 }
134 /* method scope#EscapeMark#name= for (self: Object, nullable String) */
135 void VIRTUAL_scope__EscapeMark__name_61d(val* self, val* p0) {
136 scope__EscapeMark__name_61d(self, p0);
137 RET_LABEL:;
138 }
139 /* method scope#EscapeMark#for_loop for (self: EscapeMark): Bool */
140 short int scope__EscapeMark__for_loop(val* self) {
141 short int var /* : Bool */;
142 short int var1 /* : Bool */;
143 var1 = self->attrs[COLOR_scope__EscapeMark___64dfor_loop].s; /* @for_loop on <self:EscapeMark> */
144 var = var1;
145 RET_LABEL:;
146 return var;
147 }
148 /* method scope#EscapeMark#for_loop for (self: Object): Bool */
149 short int VIRTUAL_scope__EscapeMark__for_loop(val* self) {
150 short int var /* : Bool */;
151 short int var1 /* : Bool */;
152 var1 = scope__EscapeMark__for_loop(self);
153 var = var1;
154 RET_LABEL:;
155 return var;
156 }
157 /* method scope#EscapeMark#for_loop= for (self: EscapeMark, Bool) */
158 void scope__EscapeMark__for_loop_61d(val* self, short int p0) {
159 self->attrs[COLOR_scope__EscapeMark___64dfor_loop].s = p0; /* @for_loop on <self:EscapeMark> */
160 RET_LABEL:;
161 }
162 /* method scope#EscapeMark#for_loop= for (self: Object, Bool) */
163 void VIRTUAL_scope__EscapeMark__for_loop_61d(val* self, short int p0) {
164 scope__EscapeMark__for_loop_61d(self, p0);
165 RET_LABEL:;
166 }
167 /* method scope#EscapeMark#continues for (self: EscapeMark): Array[AContinueExpr] */
168 val* scope__EscapeMark__continues(val* self) {
169 val* var /* : Array[AContinueExpr] */;
170 val* var1 /* : Array[AContinueExpr] */;
171 var1 = self->attrs[COLOR_scope__EscapeMark___64dcontinues].val; /* @continues on <self:EscapeMark> */
172 if (var1 == NULL) {
173 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @continues");
174 fprintf(stderr, " (%s:%d)\n", "src/scope.nit", 53);
175 exit(1);
176 }
177 var = var1;
178 RET_LABEL:;
179 return var;
180 }
181 /* method scope#EscapeMark#continues for (self: Object): Array[AContinueExpr] */
182 val* VIRTUAL_scope__EscapeMark__continues(val* self) {
183 val* var /* : Array[AContinueExpr] */;
184 val* var1 /* : Array[AContinueExpr] */;
185 var1 = scope__EscapeMark__continues(self);
186 var = var1;
187 RET_LABEL:;
188 return var;
189 }
190 /* method scope#EscapeMark#continues= for (self: EscapeMark, Array[AContinueExpr]) */
191 void scope__EscapeMark__continues_61d(val* self, val* p0) {
192 self->attrs[COLOR_scope__EscapeMark___64dcontinues].val = p0; /* @continues on <self:EscapeMark> */
193 RET_LABEL:;
194 }
195 /* method scope#EscapeMark#continues= for (self: Object, Array[AContinueExpr]) */
196 void VIRTUAL_scope__EscapeMark__continues_61d(val* self, val* p0) {
197 scope__EscapeMark__continues_61d(self, p0);
198 RET_LABEL:;
199 }
200 /* method scope#EscapeMark#breaks for (self: EscapeMark): Array[ABreakExpr] */
201 val* scope__EscapeMark__breaks(val* self) {
202 val* var /* : Array[ABreakExpr] */;
203 val* var1 /* : Array[ABreakExpr] */;
204 var1 = self->attrs[COLOR_scope__EscapeMark___64dbreaks].val; /* @breaks on <self:EscapeMark> */
205 if (var1 == NULL) {
206 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @breaks");
207 fprintf(stderr, " (%s:%d)\n", "src/scope.nit", 56);
208 exit(1);
209 }
210 var = var1;
211 RET_LABEL:;
212 return var;
213 }
214 /* method scope#EscapeMark#breaks for (self: Object): Array[ABreakExpr] */
215 val* VIRTUAL_scope__EscapeMark__breaks(val* self) {
216 val* var /* : Array[ABreakExpr] */;
217 val* var1 /* : Array[ABreakExpr] */;
218 var1 = scope__EscapeMark__breaks(self);
219 var = var1;
220 RET_LABEL:;
221 return var;
222 }
223 /* method scope#EscapeMark#breaks= for (self: EscapeMark, Array[ABreakExpr]) */
224 void scope__EscapeMark__breaks_61d(val* self, val* p0) {
225 self->attrs[COLOR_scope__EscapeMark___64dbreaks].val = p0; /* @breaks on <self:EscapeMark> */
226 RET_LABEL:;
227 }
228 /* method scope#EscapeMark#breaks= for (self: Object, Array[ABreakExpr]) */
229 void VIRTUAL_scope__EscapeMark__breaks_61d(val* self, val* p0) {
230 scope__EscapeMark__breaks_61d(self, p0);
231 RET_LABEL:;
232 }
233 /* method scope#EscapeMark#init for (self: EscapeMark, nullable String, Bool) */
234 void scope__EscapeMark__init(val* self, val* p0, short int p1) {
235 self->attrs[COLOR_scope__EscapeMark___64dname].val = p0; /* @name on <self:EscapeMark> */
236 self->attrs[COLOR_scope__EscapeMark___64dfor_loop].s = p1; /* @for_loop on <self:EscapeMark> */
237 RET_LABEL:;
238 }
239 /* method scope#EscapeMark#init for (self: Object, nullable String, Bool) */
240 void VIRTUAL_scope__EscapeMark__init(val* self, val* p0, short int p1) {
241 scope__EscapeMark__init(self, p0, p1);
242 RET_LABEL:;
243 }
244 /* method scope#ScopeVisitor#toolcontext for (self: ScopeVisitor): ToolContext */
245 val* scope__ScopeVisitor__toolcontext(val* self) {
246 val* var /* : ToolContext */;
247 val* var1 /* : ToolContext */;
248 var1 = self->attrs[COLOR_scope__ScopeVisitor___64dtoolcontext].val; /* @toolcontext on <self:ScopeVisitor> */
249 if (var1 == NULL) {
250 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @toolcontext");
251 fprintf(stderr, " (%s:%d)\n", "src/scope.nit", 68);
252 exit(1);
253 }
254 var = var1;
255 RET_LABEL:;
256 return var;
257 }
258 /* method scope#ScopeVisitor#toolcontext for (self: Object): ToolContext */
259 val* VIRTUAL_scope__ScopeVisitor__toolcontext(val* self) {
260 val* var /* : ToolContext */;
261 val* var1 /* : ToolContext */;
262 var1 = scope__ScopeVisitor__toolcontext(self);
263 var = var1;
264 RET_LABEL:;
265 return var;
266 }
267 /* method scope#ScopeVisitor#toolcontext= for (self: ScopeVisitor, ToolContext) */
268 void scope__ScopeVisitor__toolcontext_61d(val* self, val* p0) {
269 self->attrs[COLOR_scope__ScopeVisitor___64dtoolcontext].val = p0; /* @toolcontext on <self:ScopeVisitor> */
270 RET_LABEL:;
271 }
272 /* method scope#ScopeVisitor#toolcontext= for (self: Object, ToolContext) */
273 void VIRTUAL_scope__ScopeVisitor__toolcontext_61d(val* self, val* p0) {
274 scope__ScopeVisitor__toolcontext_61d(self, p0);
275 RET_LABEL:;
276 }
277 /* method scope#ScopeVisitor#selfvariable for (self: ScopeVisitor): Variable */
278 val* scope__ScopeVisitor__selfvariable(val* self) {
279 val* var /* : Variable */;
280 val* var1 /* : Variable */;
281 var1 = self->attrs[COLOR_scope__ScopeVisitor___64dselfvariable].val; /* @selfvariable on <self:ScopeVisitor> */
282 if (var1 == NULL) {
283 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @selfvariable");
284 fprintf(stderr, " (%s:%d)\n", "src/scope.nit", 71);
285 exit(1);
286 }
287 var = var1;
288 RET_LABEL:;
289 return var;
290 }
291 /* method scope#ScopeVisitor#selfvariable for (self: Object): Variable */
292 val* VIRTUAL_scope__ScopeVisitor__selfvariable(val* self) {
293 val* var /* : Variable */;
294 val* var1 /* : Variable */;
295 var1 = scope__ScopeVisitor__selfvariable(self);
296 var = var1;
297 RET_LABEL:;
298 return var;
299 }
300 /* method scope#ScopeVisitor#selfvariable= for (self: ScopeVisitor, Variable) */
301 void scope__ScopeVisitor__selfvariable_61d(val* self, val* p0) {
302 self->attrs[COLOR_scope__ScopeVisitor___64dselfvariable].val = p0; /* @selfvariable on <self:ScopeVisitor> */
303 RET_LABEL:;
304 }
305 /* method scope#ScopeVisitor#selfvariable= for (self: Object, Variable) */
306 void VIRTUAL_scope__ScopeVisitor__selfvariable_61d(val* self, val* p0) {
307 scope__ScopeVisitor__selfvariable_61d(self, p0);
308 RET_LABEL:;
309 }
310 /* method scope#ScopeVisitor#init for (self: ScopeVisitor, ToolContext) */
311 void scope__ScopeVisitor__init(val* self, val* p0) {
312 val* var_toolcontext /* var toolcontext: ToolContext */;
313 val* var /* : List[Scope] */;
314 val* var1 /* : Scope */;
315 var_toolcontext = p0;
316 ((void (*)(val*))(self->class->vft[COLOR_parser_nodes__Visitor__init]))(self) /* init on <self:ScopeVisitor>*/;
317 ((void (*)(val*, val*))(self->class->vft[COLOR_scope__ScopeVisitor__toolcontext_61d]))(self, var_toolcontext) /* toolcontext= on <self:ScopeVisitor>*/;
318 var = ((val* (*)(val*))(self->class->vft[COLOR_scope__ScopeVisitor__scopes]))(self) /* scopes on <self:ScopeVisitor>*/;
319 var1 = NEW_scope__Scope(&type_scope__Scope);
320 ((void (*)(val*))(var1->class->vft[COLOR_scope__Scope__init]))(var1) /* init on <var1:Scope>*/;
321 CHECK_NEW_scope__Scope(var1);
322 ((void (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var, var1) /* add on <var:List[Scope]>*/;
323 RET_LABEL:;
324 }
325 /* method scope#ScopeVisitor#init for (self: Object, ToolContext) */
326 void VIRTUAL_scope__ScopeVisitor__init(val* self, val* p0) {
327 scope__ScopeVisitor__init(self, p0);
328 RET_LABEL:;
329 }
330 /* method scope#ScopeVisitor#scopes for (self: ScopeVisitor): List[Scope] */
331 val* scope__ScopeVisitor__scopes(val* self) {
332 val* var /* : List[Scope] */;
333 val* var1 /* : List[Scope] */;
334 var1 = self->attrs[COLOR_scope__ScopeVisitor___64dscopes].val; /* @scopes on <self:ScopeVisitor> */
335 if (var1 == NULL) {
336 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @scopes");
337 fprintf(stderr, " (%s:%d)\n", "src/scope.nit", 79);
338 exit(1);
339 }
340 var = var1;
341 RET_LABEL:;
342 return var;
343 }
344 /* method scope#ScopeVisitor#scopes for (self: Object): List[Scope] */
345 val* VIRTUAL_scope__ScopeVisitor__scopes(val* self) {
346 val* var /* : List[Scope] */;
347 val* var1 /* : List[Scope] */;
348 var1 = scope__ScopeVisitor__scopes(self);
349 var = var1;
350 RET_LABEL:;
351 return var;
352 }
353 /* method scope#ScopeVisitor#scopes= for (self: ScopeVisitor, List[Scope]) */
354 void scope__ScopeVisitor__scopes_61d(val* self, val* p0) {
355 self->attrs[COLOR_scope__ScopeVisitor___64dscopes].val = p0; /* @scopes on <self:ScopeVisitor> */
356 RET_LABEL:;
357 }
358 /* method scope#ScopeVisitor#scopes= for (self: Object, List[Scope]) */
359 void VIRTUAL_scope__ScopeVisitor__scopes_61d(val* self, val* p0) {
360 scope__ScopeVisitor__scopes_61d(self, p0);
361 RET_LABEL:;
362 }
363 /* method scope#ScopeVisitor#register_variable for (self: ScopeVisitor, ANode, Variable): Bool */
364 short int scope__ScopeVisitor__register_variable(val* self, val* p0, val* p1) {
365 short int var /* : Bool */;
366 val* var_node /* var node: ANode */;
367 val* var_variable /* var variable: Variable */;
368 val* var1 /* : String */;
369 val* var_name /* var name: String */;
370 val* var2 /* : nullable Variable */;
371 val* var_found /* var found: nullable Variable */;
372 val* var3 /* : null */;
373 short int var4 /* : Bool */;
374 static val* varonce;
375 val* var5 /* : String */;
376 char* var6 /* : NativeString */;
377 long var7 /* : Int */;
378 val* var8 /* : String */;
379 static val* varonce9;
380 val* var10 /* : String */;
381 char* var11 /* : NativeString */;
382 long var12 /* : Int */;
383 val* var13 /* : String */;
384 val* var14 /* : Array[Object] */;
385 long var15 /* : Int */;
386 val* var16 /* : NativeArray[Object] */;
387 val* var17 /* : String */;
388 short int var18 /* : Bool */;
389 val* var19 /* : List[Scope] */;
390 val* var20 /* : nullable Object */;
391 val* var21 /* : HashMap[String, Variable] */;
392 short int var22 /* : Bool */;
393 var_node = p0;
394 var_variable = p1;
395 var1 = ((val* (*)(val*))(var_variable->class->vft[COLOR_scope__Variable__name]))(var_variable) /* name on <var_variable:Variable>*/;
396 var_name = var1;
397 var2 = ((val* (*)(val*, val*))(self->class->vft[COLOR_scope__ScopeVisitor__search_variable]))(self, var_name) /* search_variable on <self:ScopeVisitor>*/;
398 var_found = var2;
399 var3 = NULL;
400 if (var_found == NULL) {
401 var4 = 0; /* is null */
402 } else {
403 var4 = 1; /* arg is null and recv is not */
404 }
405 if (var4){
406 if (varonce) {
407 var5 = varonce;
408 } else {
409 var6 = "Error: A variable named `";
410 var7 = 25;
411 var8 = string__NativeString__to_s_with_length(var6, var7);
412 var5 = var8;
413 varonce = var5;
414 }
415 if (varonce9) {
416 var10 = varonce9;
417 } else {
418 var11 = "\' already exists";
419 var12 = 16;
420 var13 = string__NativeString__to_s_with_length(var11, var12);
421 var10 = var13;
422 varonce9 = var10;
423 }
424 var14 = NEW_array__Array(&type_array__Arraykernel__Object);
425 { /* var14 = array_instance Array[Object] */
426 var15 = 3;
427 var16 = NEW_array__NativeArray(var15, &type_array__NativeArraykernel__Object);
428 ((struct instance_array__NativeArray*)var16)->values[0] = (val*) var5;
429 ((struct instance_array__NativeArray*)var16)->values[1] = (val*) var_name;
430 ((struct instance_array__NativeArray*)var16)->values[2] = (val*) var10;
431 ((void (*)(val*, val*, long))(var14->class->vft[COLOR_array__Array__with_native]))(var14, var16, var15) /* with_native on <var14:Array[Object]>*/;
432 CHECK_NEW_array__Array(var14);
433 }
434 var17 = ((val* (*)(val*))(var14->class->vft[COLOR_string__Object__to_s]))(var14) /* to_s on <var14:Array[Object]>*/;
435 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_scope__ScopeVisitor__error]))(self, var_node, var17) /* error on <self:ScopeVisitor>*/;
436 var18 = 0;
437 var = var18;
438 goto RET_LABEL;
439 } else {
440 }
441 var19 = ((val* (*)(val*))(self->class->vft[COLOR_scope__ScopeVisitor__scopes]))(self) /* scopes on <self:ScopeVisitor>*/;
442 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_collection__Collection__first]))(var19) /* first on <var19:List[Scope]>*/;
443 var21 = ((val* (*)(val*))(var20->class->vft[COLOR_scope__Scope__variables]))(var20) /* variables on <var20:nullable Object(Scope)>*/;
444 ((void (*)(val*, val*, val*))(var21->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var21, var_name, var_variable) /* []= on <var21:HashMap[String, Variable]>*/;
445 var22 = 1;
446 var = var22;
447 goto RET_LABEL;
448 RET_LABEL:;
449 return var;
450 }
451 /* method scope#ScopeVisitor#register_variable for (self: Object, ANode, Variable): Bool */
452 short int VIRTUAL_scope__ScopeVisitor__register_variable(val* self, val* p0, val* p1) {
453 short int var /* : Bool */;
454 short int var1 /* : Bool */;
455 var1 = scope__ScopeVisitor__register_variable(self, p0, p1);
456 var = var1;
457 RET_LABEL:;
458 return var;
459 }
460 /* method scope#ScopeVisitor#search_variable for (self: ScopeVisitor, String): nullable Variable */
461 val* scope__ScopeVisitor__search_variable(val* self, val* p0) {
462 val* var /* : nullable Variable */;
463 val* var_name /* var name: String */;
464 val* var1 /* : List[Scope] */;
465 val* var2 /* : Iterator[nullable Object] */;
466 short int var3 /* : Bool */;
467 val* var4 /* : nullable Object */;
468 val* var_scope /* var scope: Scope */;
469 val* var5 /* : nullable Variable */;
470 val* var_res /* var res: nullable Variable */;
471 val* var6 /* : null */;
472 short int var7 /* : Bool */;
473 val* var8 /* : null */;
474 var_name = p0;
475 var1 = ((val* (*)(val*))(self->class->vft[COLOR_scope__ScopeVisitor__scopes]))(self) /* scopes on <self:ScopeVisitor>*/;
476 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__iterator]))(var1) /* iterator on <var1:List[Scope]>*/;
477 for(;;) {
478 var3 = ((short int (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var2) /* is_ok on <var2:Iterator[nullable Object]>*/;
479 if(!var3) break;
480 var4 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__item]))(var2) /* item on <var2:Iterator[nullable Object]>*/;
481 var_scope = var4;
482 var5 = ((val* (*)(val*, val*))(var_scope->class->vft[COLOR_scope__Scope__get_variable]))(var_scope, var_name) /* get_variable on <var_scope:Scope>*/;
483 var_res = var5;
484 var6 = NULL;
485 if (var_res == NULL) {
486 var7 = 0; /* is null */
487 } else {
488 var7 = 1; /* arg is null and recv is not */
489 }
490 if (var7){
491 var = var_res;
492 goto RET_LABEL;
493 } else {
494 }
495 CONTINUE_label: (void)0;
496 ((void (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__next]))(var2) /* next on <var2:Iterator[nullable Object]>*/;
497 }
498 BREAK_label: (void)0;
499 var8 = NULL;
500 var = var8;
501 goto RET_LABEL;
502 RET_LABEL:;
503 return var;
504 }
505 /* method scope#ScopeVisitor#search_variable for (self: Object, String): nullable Variable */
506 val* VIRTUAL_scope__ScopeVisitor__search_variable(val* self, val* p0) {
507 val* var /* : nullable Variable */;
508 val* var1 /* : nullable Variable */;
509 var1 = scope__ScopeVisitor__search_variable(self, p0);
510 var = var1;
511 RET_LABEL:;
512 return var;
513 }
514 /* method scope#ScopeVisitor#visit for (self: ScopeVisitor, ANode) */
515 void scope__ScopeVisitor__visit(val* self, val* p0) {
516 val* var_n /* var n: ANode */;
517 var_n = p0;
518 ((void (*)(val*, val*))(var_n->class->vft[COLOR_scope__ANode__accept_scope_visitor]))(var_n, self) /* accept_scope_visitor on <var_n:ANode>*/;
519 RET_LABEL:;
520 }
521 /* method scope#ScopeVisitor#visit for (self: Object, ANode) */
522 void VIRTUAL_scope__ScopeVisitor__visit(val* self, val* p0) {
523 scope__ScopeVisitor__visit(self, p0);
524 RET_LABEL:;
525 }
526 /* method scope#ScopeVisitor#enter_visit_block for (self: ScopeVisitor, nullable AExpr, nullable EscapeMark) */
527 void scope__ScopeVisitor__enter_visit_block(val* self, val* p0, val* p1) {
528 val* var_node /* var node: nullable AExpr */;
529 val* var_escapemark /* var escapemark: nullable EscapeMark */;
530 val* var /* : null */;
531 short int var1 /* : Bool */;
532 val* var2 /* : Scope */;
533 val* var_scope /* var scope: Scope */;
534 val* var3 /* : List[Scope] */;
535 val* var4 /* : List[Scope] */;
536 val* var5 /* : nullable Object */;
537 var_node = p0;
538 var_escapemark = p1;
539 var = NULL;
540 if (var_node == NULL) {
541 var1 = 1; /* is null */
542 } else {
543 var1 = 0; /* arg is null but recv is not */
544 }
545 if (var1){
546 goto RET_LABEL;
547 } else {
548 }
549 var2 = NEW_scope__Scope(&type_scope__Scope);
550 ((void (*)(val*))(var2->class->vft[COLOR_scope__Scope__init]))(var2) /* init on <var2:Scope>*/;
551 CHECK_NEW_scope__Scope(var2);
552 var_scope = var2;
553 ((void (*)(val*, val*))(var_scope->class->vft[COLOR_scope__Scope__escapemark_61d]))(var_scope, var_escapemark) /* escapemark= on <var_scope:Scope>*/;
554 var3 = ((val* (*)(val*))(self->class->vft[COLOR_scope__ScopeVisitor__scopes]))(self) /* scopes on <self:ScopeVisitor>*/;
555 ((void (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__Sequence__unshift]))(var3, var_scope) /* unshift on <var3:List[Scope]>*/;
556 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(self, var_node) /* enter_visit on <self:ScopeVisitor>*/;
557 var4 = ((val* (*)(val*))(self->class->vft[COLOR_scope__ScopeVisitor__scopes]))(self) /* scopes on <self:ScopeVisitor>*/;
558 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Sequence__shift]))(var4) /* shift on <var4:List[Scope]>*/;
559 var5;
560 RET_LABEL:;
561 }
562 /* method scope#ScopeVisitor#enter_visit_block for (self: Object, nullable AExpr, nullable EscapeMark) */
563 void VIRTUAL_scope__ScopeVisitor__enter_visit_block(val* self, val* p0, val* p1) {
564 scope__ScopeVisitor__enter_visit_block(self, p0, p1);
565 RET_LABEL:;
566 }
567 /* method scope#ScopeVisitor#search_label for (self: ScopeVisitor, String): nullable EscapeMark */
568 val* scope__ScopeVisitor__search_label(val* self, val* p0) {
569 val* var /* : nullable EscapeMark */;
570 val* var_name /* var name: String */;
571 val* var1 /* : List[Scope] */;
572 val* var2 /* : Iterator[nullable Object] */;
573 short int var3 /* : Bool */;
574 val* var4 /* : nullable Object */;
575 val* var_scope /* var scope: Scope */;
576 val* var5 /* : nullable EscapeMark */;
577 val* var_res /* var res: nullable EscapeMark */;
578 short int var6 /* : Bool */;
579 val* var7 /* : null */;
580 short int var8 /* : Bool */;
581 short int var_ /* var : Bool */;
582 val* var9 /* : nullable String */;
583 short int var10 /* : Bool */;
584 val* var11 /* : null */;
585 var_name = p0;
586 var1 = ((val* (*)(val*))(self->class->vft[COLOR_scope__ScopeVisitor__scopes]))(self) /* scopes on <self:ScopeVisitor>*/;
587 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__iterator]))(var1) /* iterator on <var1:List[Scope]>*/;
588 for(;;) {
589 var3 = ((short int (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var2) /* is_ok on <var2:Iterator[nullable Object]>*/;
590 if(!var3) break;
591 var4 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__item]))(var2) /* item on <var2:Iterator[nullable Object]>*/;
592 var_scope = var4;
593 var5 = ((val* (*)(val*))(var_scope->class->vft[COLOR_scope__Scope__escapemark]))(var_scope) /* escapemark on <var_scope:Scope>*/;
594 var_res = var5;
595 var7 = NULL;
596 if (var_res == NULL) {
597 var8 = 0; /* is null */
598 } else {
599 var8 = 1; /* arg is null and recv is not */
600 }
601 var_ = var8;
602 if (var8){
603 var9 = ((val* (*)(val*))(var_res->class->vft[COLOR_scope__EscapeMark__name]))(var_res) /* name on <var_res:nullable EscapeMark(EscapeMark)>*/;
604 if (var9 == NULL) {
605 var10 = 0; /* <var_name:String> cannot be null */
606 } else {
607 var10 = ((short int (*)(val*, val*))(var9->class->vft[COLOR_kernel__Object___61d_61d]))(var9, var_name) /* == on <var9:nullable String>*/;
608 }
609 var6 = var10;
610 } else {
611 var6 = var_;
612 }
613 if (var6){
614 var = var_res;
615 goto RET_LABEL;
616 } else {
617 }
618 CONTINUE_label: (void)0;
619 ((void (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__next]))(var2) /* next on <var2:Iterator[nullable Object]>*/;
620 }
621 BREAK_label: (void)0;
622 var11 = NULL;
623 var = var11;
624 goto RET_LABEL;
625 RET_LABEL:;
626 return var;
627 }
628 /* method scope#ScopeVisitor#search_label for (self: Object, String): nullable EscapeMark */
629 val* VIRTUAL_scope__ScopeVisitor__search_label(val* self, val* p0) {
630 val* var /* : nullable EscapeMark */;
631 val* var1 /* : nullable EscapeMark */;
632 var1 = scope__ScopeVisitor__search_label(self, p0);
633 var = var1;
634 RET_LABEL:;
635 return var;
636 }
637 /* method scope#ScopeVisitor#make_escape_mark for (self: ScopeVisitor, nullable ALabel, Bool): EscapeMark */
638 val* scope__ScopeVisitor__make_escape_mark(val* self, val* p0, short int p1) {
639 val* var /* : EscapeMark */;
640 val* var_nlabel /* var nlabel: nullable ALabel */;
641 short int var_for_loop /* var for_loop: Bool */;
642 val* var1 /* : null */;
643 short int var2 /* : Bool */;
644 val* var3 /* : TId */;
645 val* var4 /* : String */;
646 val* var_name /* var name: nullable String */;
647 val* var5 /* : nullable EscapeMark */;
648 val* var_found /* var found: nullable EscapeMark */;
649 val* var6 /* : null */;
650 short int var7 /* : Bool */;
651 static val* varonce;
652 val* var8 /* : String */;
653 char* var9 /* : NativeString */;
654 long var10 /* : Int */;
655 val* var11 /* : String */;
656 static val* varonce12;
657 val* var13 /* : String */;
658 char* var14 /* : NativeString */;
659 long var15 /* : Int */;
660 val* var16 /* : String */;
661 val* var17 /* : Array[Object] */;
662 long var18 /* : Int */;
663 val* var19 /* : NativeArray[Object] */;
664 val* var20 /* : String */;
665 val* var21 /* : null */;
666 val* var22 /* : EscapeMark */;
667 val* var_res /* var res: EscapeMark */;
668 var_nlabel = p0;
669 var_for_loop = p1;
670 var1 = NULL;
671 if (var_nlabel == NULL) {
672 var2 = 0; /* is null */
673 } else {
674 var2 = 1; /* arg is null and recv is not */
675 }
676 if (var2){
677 var3 = ((val* (*)(val*))(var_nlabel->class->vft[COLOR_parser_nodes__ALabel__n_id]))(var_nlabel) /* n_id on <var_nlabel:nullable ALabel(ALabel)>*/;
678 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_parser_nodes__Token__text]))(var3) /* text on <var3:TId>*/;
679 var_name = var4;
680 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_scope__ScopeVisitor__search_label]))(self, var_name) /* search_label on <self:ScopeVisitor>*/;
681 var_found = var5;
682 var6 = NULL;
683 if (var_found == NULL) {
684 var7 = 0; /* is null */
685 } else {
686 var7 = 1; /* arg is null and recv is not */
687 }
688 if (var7){
689 if (varonce) {
690 var8 = varonce;
691 } else {
692 var9 = "Syntax error: label ";
693 var10 = 20;
694 var11 = string__NativeString__to_s_with_length(var9, var10);
695 var8 = var11;
696 varonce = var8;
697 }
698 if (varonce12) {
699 var13 = varonce12;
700 } else {
701 var14 = " already defined.";
702 var15 = 17;
703 var16 = string__NativeString__to_s_with_length(var14, var15);
704 var13 = var16;
705 varonce12 = var13;
706 }
707 var17 = NEW_array__Array(&type_array__Arraykernel__Object);
708 { /* var17 = array_instance Array[Object] */
709 var18 = 3;
710 var19 = NEW_array__NativeArray(var18, &type_array__NativeArraykernel__Object);
711 ((struct instance_array__NativeArray*)var19)->values[0] = (val*) var8;
712 ((struct instance_array__NativeArray*)var19)->values[1] = (val*) var_name;
713 ((struct instance_array__NativeArray*)var19)->values[2] = (val*) var13;
714 ((void (*)(val*, val*, long))(var17->class->vft[COLOR_array__Array__with_native]))(var17, var19, var18) /* with_native on <var17:Array[Object]>*/;
715 CHECK_NEW_array__Array(var17);
716 }
717 var20 = ((val* (*)(val*))(var17->class->vft[COLOR_string__Object__to_s]))(var17) /* to_s on <var17:Array[Object]>*/;
718 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_scope__ScopeVisitor__error]))(self, var_nlabel, var20) /* error on <self:ScopeVisitor>*/;
719 } else {
720 }
721 } else {
722 var21 = NULL;
723 var_name = var21;
724 }
725 var22 = NEW_scope__EscapeMark(&type_scope__EscapeMark);
726 ((void (*)(val*, val*, short int))(var22->class->vft[COLOR_scope__EscapeMark__init]))(var22, var_name, var_for_loop) /* init on <var22:EscapeMark>*/;
727 CHECK_NEW_scope__EscapeMark(var22);
728 var_res = var22;
729 var = var_res;
730 goto RET_LABEL;
731 RET_LABEL:;
732 return var;
733 }
734 /* method scope#ScopeVisitor#make_escape_mark for (self: Object, nullable ALabel, Bool): EscapeMark */
735 val* VIRTUAL_scope__ScopeVisitor__make_escape_mark(val* self, val* p0, short int p1) {
736 val* var /* : EscapeMark */;
737 val* var1 /* : EscapeMark */;
738 var1 = scope__ScopeVisitor__make_escape_mark(self, p0, p1);
739 var = var1;
740 RET_LABEL:;
741 return var;
742 }
743 /* method scope#ScopeVisitor#get_escapemark for (self: ScopeVisitor, ANode, nullable ALabel): nullable EscapeMark */
744 val* scope__ScopeVisitor__get_escapemark(val* self, val* p0, val* p1) {
745 val* var /* : nullable EscapeMark */;
746 val* var_node /* var node: ANode */;
747 val* var_nlabel /* var nlabel: nullable ALabel */;
748 val* var1 /* : null */;
749 short int var2 /* : Bool */;
750 val* var3 /* : TId */;
751 val* var4 /* : String */;
752 val* var_name /* var name: String */;
753 val* var5 /* : nullable EscapeMark */;
754 val* var_res /* var res: nullable EscapeMark */;
755 val* var6 /* : null */;
756 short int var7 /* : Bool */;
757 static val* varonce;
758 val* var8 /* : String */;
759 char* var9 /* : NativeString */;
760 long var10 /* : Int */;
761 val* var11 /* : String */;
762 static val* varonce12;
763 val* var13 /* : String */;
764 char* var14 /* : NativeString */;
765 long var15 /* : Int */;
766 val* var16 /* : String */;
767 val* var17 /* : Array[Object] */;
768 long var18 /* : Int */;
769 val* var19 /* : NativeArray[Object] */;
770 val* var20 /* : String */;
771 val* var21 /* : null */;
772 val* var22 /* : List[Scope] */;
773 val* var23 /* : Iterator[nullable Object] */;
774 short int var24 /* : Bool */;
775 val* var25 /* : nullable Object */;
776 val* var_scope /* var scope: Scope */;
777 val* var26 /* : nullable EscapeMark */;
778 val* var_res27 /* var res: nullable EscapeMark */;
779 val* var28 /* : null */;
780 short int var29 /* : Bool */;
781 static val* varonce30;
782 val* var31 /* : String */;
783 char* var32 /* : NativeString */;
784 long var33 /* : Int */;
785 val* var34 /* : String */;
786 val* var35 /* : null */;
787 var_node = p0;
788 var_nlabel = p1;
789 var1 = NULL;
790 if (var_nlabel == NULL) {
791 var2 = 0; /* is null */
792 } else {
793 var2 = 1; /* arg is null and recv is not */
794 }
795 if (var2){
796 var3 = ((val* (*)(val*))(var_nlabel->class->vft[COLOR_parser_nodes__ALabel__n_id]))(var_nlabel) /* n_id on <var_nlabel:nullable ALabel(ALabel)>*/;
797 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_parser_nodes__Token__text]))(var3) /* text on <var3:TId>*/;
798 var_name = var4;
799 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_scope__ScopeVisitor__search_label]))(self, var_name) /* search_label on <self:ScopeVisitor>*/;
800 var_res = var5;
801 var6 = NULL;
802 if (var_res == NULL) {
803 var7 = 1; /* is null */
804 } else {
805 var7 = 0; /* arg is null but recv is not */
806 }
807 if (var7){
808 if (varonce) {
809 var8 = varonce;
810 } else {
811 var9 = "Syntax error: invalid label ";
812 var10 = 28;
813 var11 = string__NativeString__to_s_with_length(var9, var10);
814 var8 = var11;
815 varonce = var8;
816 }
817 if (varonce12) {
818 var13 = varonce12;
819 } else {
820 var14 = ".";
821 var15 = 1;
822 var16 = string__NativeString__to_s_with_length(var14, var15);
823 var13 = var16;
824 varonce12 = var13;
825 }
826 var17 = NEW_array__Array(&type_array__Arraykernel__Object);
827 { /* var17 = array_instance Array[Object] */
828 var18 = 3;
829 var19 = NEW_array__NativeArray(var18, &type_array__NativeArraykernel__Object);
830 ((struct instance_array__NativeArray*)var19)->values[0] = (val*) var8;
831 ((struct instance_array__NativeArray*)var19)->values[1] = (val*) var_name;
832 ((struct instance_array__NativeArray*)var19)->values[2] = (val*) var13;
833 ((void (*)(val*, val*, long))(var17->class->vft[COLOR_array__Array__with_native]))(var17, var19, var18) /* with_native on <var17:Array[Object]>*/;
834 CHECK_NEW_array__Array(var17);
835 }
836 var20 = ((val* (*)(val*))(var17->class->vft[COLOR_string__Object__to_s]))(var17) /* to_s on <var17:Array[Object]>*/;
837 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_scope__ScopeVisitor__error]))(self, var_nlabel, var20) /* error on <self:ScopeVisitor>*/;
838 var21 = NULL;
839 var = var21;
840 goto RET_LABEL;
841 } else {
842 }
843 var = var_res;
844 goto RET_LABEL;
845 } else {
846 var22 = ((val* (*)(val*))(self->class->vft[COLOR_scope__ScopeVisitor__scopes]))(self) /* scopes on <self:ScopeVisitor>*/;
847 var23 = ((val* (*)(val*))(var22->class->vft[COLOR_abstract_collection__Collection__iterator]))(var22) /* iterator on <var22:List[Scope]>*/;
848 for(;;) {
849 var24 = ((short int (*)(val*))(var23->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var23) /* is_ok on <var23:Iterator[nullable Object]>*/;
850 if(!var24) break;
851 var25 = ((val* (*)(val*))(var23->class->vft[COLOR_abstract_collection__Iterator__item]))(var23) /* item on <var23:Iterator[nullable Object]>*/;
852 var_scope = var25;
853 var26 = ((val* (*)(val*))(var_scope->class->vft[COLOR_scope__Scope__escapemark]))(var_scope) /* escapemark on <var_scope:Scope>*/;
854 var_res27 = var26;
855 var28 = NULL;
856 if (var_res27 == NULL) {
857 var29 = 0; /* is null */
858 } else {
859 var29 = 1; /* arg is null and recv is not */
860 }
861 if (var29){
862 var = var_res27;
863 goto RET_LABEL;
864 } else {
865 }
866 CONTINUE_label: (void)0;
867 ((void (*)(val*))(var23->class->vft[COLOR_abstract_collection__Iterator__next]))(var23) /* next on <var23:Iterator[nullable Object]>*/;
868 }
869 BREAK_label: (void)0;
870 if (varonce30) {
871 var31 = varonce30;
872 } else {
873 var32 = "Syntax Error: \'break\' statment outside block.";
874 var33 = 45;
875 var34 = string__NativeString__to_s_with_length(var32, var33);
876 var31 = var34;
877 varonce30 = var31;
878 }
879 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_scope__ScopeVisitor__error]))(self, var_node, var31) /* error on <self:ScopeVisitor>*/;
880 var35 = NULL;
881 var = var35;
882 goto RET_LABEL;
883 }
884 RET_LABEL:;
885 return var;
886 }
887 /* method scope#ScopeVisitor#get_escapemark for (self: Object, ANode, nullable ALabel): nullable EscapeMark */
888 val* VIRTUAL_scope__ScopeVisitor__get_escapemark(val* self, val* p0, val* p1) {
889 val* var /* : nullable EscapeMark */;
890 val* var1 /* : nullable EscapeMark */;
891 var1 = scope__ScopeVisitor__get_escapemark(self, p0, p1);
892 var = var1;
893 RET_LABEL:;
894 return var;
895 }
896 /* method scope#ScopeVisitor#error for (self: ScopeVisitor, ANode, String) */
897 void scope__ScopeVisitor__error(val* self, val* p0, val* p1) {
898 val* var_node /* var node: ANode */;
899 val* var_message /* var message: String */;
900 val* var /* : ToolContext */;
901 val* var1 /* : Location */;
902 var_node = p0;
903 var_message = p1;
904 var = ((val* (*)(val*))(self->class->vft[COLOR_scope__ScopeVisitor__toolcontext]))(self) /* toolcontext on <self:ScopeVisitor>*/;
905 var1 = ((val* (*)(val*))(var_node->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_node) /* hot_location on <var_node:ANode>*/;
906 ((void (*)(val*, val*, val*))(var->class->vft[COLOR_toolcontext__ToolContext__error]))(var, var1, var_message) /* error on <var:ToolContext>*/;
907 RET_LABEL:;
908 }
909 /* method scope#ScopeVisitor#error for (self: Object, ANode, String) */
910 void VIRTUAL_scope__ScopeVisitor__error(val* self, val* p0, val* p1) {
911 scope__ScopeVisitor__error(self, p0, p1);
912 RET_LABEL:;
913 }
914 /* method scope#Scope#variables for (self: Scope): HashMap[String, Variable] */
915 val* scope__Scope__variables(val* self) {
916 val* var /* : HashMap[String, Variable] */;
917 val* var1 /* : HashMap[String, Variable] */;
918 var1 = self->attrs[COLOR_scope__Scope___64dvariables].val; /* @variables on <self:Scope> */
919 if (var1 == NULL) {
920 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @variables");
921 fprintf(stderr, " (%s:%d)\n", "src/scope.nit", 192);
922 exit(1);
923 }
924 var = var1;
925 RET_LABEL:;
926 return var;
927 }
928 /* method scope#Scope#variables for (self: Object): HashMap[String, Variable] */
929 val* VIRTUAL_scope__Scope__variables(val* self) {
930 val* var /* : HashMap[String, Variable] */;
931 val* var1 /* : HashMap[String, Variable] */;
932 var1 = scope__Scope__variables(self);
933 var = var1;
934 RET_LABEL:;
935 return var;
936 }
937 /* method scope#Scope#variables= for (self: Scope, HashMap[String, Variable]) */
938 void scope__Scope__variables_61d(val* self, val* p0) {
939 self->attrs[COLOR_scope__Scope___64dvariables].val = p0; /* @variables on <self:Scope> */
940 RET_LABEL:;
941 }
942 /* method scope#Scope#variables= for (self: Object, HashMap[String, Variable]) */
943 void VIRTUAL_scope__Scope__variables_61d(val* self, val* p0) {
944 scope__Scope__variables_61d(self, p0);
945 RET_LABEL:;
946 }
947 /* method scope#Scope#escapemark for (self: Scope): nullable EscapeMark */
948 val* scope__Scope__escapemark(val* self) {
949 val* var /* : nullable EscapeMark */;
950 val* var1 /* : nullable EscapeMark */;
951 var1 = self->attrs[COLOR_scope__Scope___64descapemark].val; /* @escapemark on <self:Scope> */
952 var = var1;
953 RET_LABEL:;
954 return var;
955 }
956 /* method scope#Scope#escapemark for (self: Object): nullable EscapeMark */
957 val* VIRTUAL_scope__Scope__escapemark(val* self) {
958 val* var /* : nullable EscapeMark */;
959 val* var1 /* : nullable EscapeMark */;
960 var1 = scope__Scope__escapemark(self);
961 var = var1;
962 RET_LABEL:;
963 return var;
964 }
965 /* method scope#Scope#escapemark= for (self: Scope, nullable EscapeMark) */
966 void scope__Scope__escapemark_61d(val* self, val* p0) {
967 self->attrs[COLOR_scope__Scope___64descapemark].val = p0; /* @escapemark on <self:Scope> */
968 RET_LABEL:;
969 }
970 /* method scope#Scope#escapemark= for (self: Object, nullable EscapeMark) */
971 void VIRTUAL_scope__Scope__escapemark_61d(val* self, val* p0) {
972 scope__Scope__escapemark_61d(self, p0);
973 RET_LABEL:;
974 }
975 /* method scope#Scope#get_variable for (self: Scope, String): nullable Variable */
976 val* scope__Scope__get_variable(val* self, val* p0) {
977 val* var /* : nullable Variable */;
978 val* var_name /* var name: String */;
979 val* var1 /* : HashMap[String, Variable] */;
980 short int var2 /* : Bool */;
981 val* var3 /* : HashMap[String, Variable] */;
982 val* var4 /* : nullable Object */;
983 val* var5 /* : null */;
984 var_name = p0;
985 var1 = ((val* (*)(val*))(self->class->vft[COLOR_scope__Scope__variables]))(self) /* variables on <self:Scope>*/;
986 var2 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var1, var_name) /* has_key on <var1:HashMap[String, Variable]>*/;
987 if (var2){
988 var3 = ((val* (*)(val*))(self->class->vft[COLOR_scope__Scope__variables]))(self) /* variables on <self:Scope>*/;
989 var4 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var3, var_name) /* [] on <var3:HashMap[String, Variable]>*/;
990 var = var4;
991 goto RET_LABEL;
992 } else {
993 var5 = NULL;
994 var = var5;
995 goto RET_LABEL;
996 }
997 RET_LABEL:;
998 return var;
999 }
1000 /* method scope#Scope#get_variable for (self: Object, String): nullable Variable */
1001 val* VIRTUAL_scope__Scope__get_variable(val* self, val* p0) {
1002 val* var /* : nullable Variable */;
1003 val* var1 /* : nullable Variable */;
1004 var1 = scope__Scope__get_variable(self, p0);
1005 var = var1;
1006 RET_LABEL:;
1007 return var;
1008 }
1009 /* method scope#Scope#init for (self: Scope) */
1010 void scope__Scope__init(val* self) {
1011 RET_LABEL:;
1012 }
1013 /* method scope#Scope#init for (self: Object) */
1014 void VIRTUAL_scope__Scope__init(val* self) {
1015 scope__Scope__init(self);
1016 RET_LABEL:;
1017 }
1018 /* method scope#ANode#accept_scope_visitor for (self: ANode, ScopeVisitor) */
1019 void scope__ANode__accept_scope_visitor(val* self, val* p0) {
1020 val* var_v /* var v: ScopeVisitor */;
1021 var_v = p0;
1022 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__visit_all]))(self, var_v) /* visit_all on <self:ANode>*/;
1023 RET_LABEL:;
1024 }
1025 /* method scope#ANode#accept_scope_visitor for (self: Object, ScopeVisitor) */
1026 void VIRTUAL_scope__ANode__accept_scope_visitor(val* self, val* p0) {
1027 scope__ANode__accept_scope_visitor(self, p0);
1028 RET_LABEL:;
1029 }
1030 /* method scope#APropdef#do_scope for (self: APropdef, ToolContext) */
1031 void scope__APropdef__do_scope(val* self, val* p0) {
1032 val* var_toolcontext /* var toolcontext: ToolContext */;
1033 val* var /* : ScopeVisitor */;
1034 val* var_v /* var v: ScopeVisitor */;
1035 var_toolcontext = p0;
1036 var = NEW_scope__ScopeVisitor(&type_scope__ScopeVisitor);
1037 ((void (*)(val*, val*))(var->class->vft[COLOR_scope__ScopeVisitor__init]))(var, var_toolcontext) /* init on <var:ScopeVisitor>*/;
1038 CHECK_NEW_scope__ScopeVisitor(var);
1039 var_v = var;
1040 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, self) /* enter_visit on <var_v:ScopeVisitor>*/;
1041 RET_LABEL:;
1042 }
1043 /* method scope#APropdef#do_scope for (self: Object, ToolContext) */
1044 void VIRTUAL_scope__APropdef__do_scope(val* self, val* p0) {
1045 scope__APropdef__do_scope(self, p0);
1046 RET_LABEL:;
1047 }
1048 /* method scope#AParam#variable for (self: AParam): nullable Variable */
1049 val* scope__AParam__variable(val* self) {
1050 val* var /* : nullable Variable */;
1051 val* var1 /* : nullable Variable */;
1052 var1 = self->attrs[COLOR_scope__AParam___64dvariable].val; /* @variable on <self:AParam> */
1053 var = var1;
1054 RET_LABEL:;
1055 return var;
1056 }
1057 /* method scope#AParam#variable for (self: Object): nullable Variable */
1058 val* VIRTUAL_scope__AParam__variable(val* self) {
1059 val* var /* : nullable Variable */;
1060 val* var1 /* : nullable Variable */;
1061 var1 = scope__AParam__variable(self);
1062 var = var1;
1063 RET_LABEL:;
1064 return var;
1065 }
1066 /* method scope#AParam#variable= for (self: AParam, nullable Variable) */
1067 void scope__AParam__variable_61d(val* self, val* p0) {
1068 self->attrs[COLOR_scope__AParam___64dvariable].val = p0; /* @variable on <self:AParam> */
1069 RET_LABEL:;
1070 }
1071 /* method scope#AParam#variable= for (self: Object, nullable Variable) */
1072 void VIRTUAL_scope__AParam__variable_61d(val* self, val* p0) {
1073 scope__AParam__variable_61d(self, p0);
1074 RET_LABEL:;
1075 }
1076 /* method scope#AParam#accept_scope_visitor for (self: AParam, ScopeVisitor) */
1077 void scope__AParam__accept_scope_visitor(val* self, val* p0) {
1078 val* var_v /* var v: ScopeVisitor */;
1079 val* var /* : TId */;
1080 val* var_nid /* var nid: TId */;
1081 val* var1 /* : Variable */;
1082 val* var2 /* : String */;
1083 val* var_variable /* var variable: Variable */;
1084 short int var3 /* : Bool */;
1085 var_v = p0;
1086 ((void (*)(val*, val*))(self->class->vft[COLOR_scope__AParam__accept_scope_visitor]))(self, p0) /* accept_scope_visitor on <self:AParam>*/;
1087 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AParam__n_id]))(self) /* n_id on <self:AParam>*/;
1088 var_nid = var;
1089 var1 = NEW_scope__Variable(&type_scope__Variable);
1090 var2 = ((val* (*)(val*))(var_nid->class->vft[COLOR_parser_nodes__Token__text]))(var_nid) /* text on <var_nid:TId>*/;
1091 ((void (*)(val*, val*))(var1->class->vft[COLOR_scope__Variable__init]))(var1, var2) /* init on <var1:Variable>*/;
1092 CHECK_NEW_scope__Variable(var1);
1093 var_variable = var1;
1094 var3 = ((short int (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__register_variable]))(var_v, var_nid, var_variable) /* register_variable on <var_v:ScopeVisitor>*/;
1095 var3;
1096 ((void (*)(val*, val*))(self->class->vft[COLOR_scope__AParam__variable_61d]))(self, var_variable) /* variable= on <self:AParam>*/;
1097 RET_LABEL:;
1098 }
1099 /* method scope#AParam#accept_scope_visitor for (self: Object, ScopeVisitor) */
1100 void VIRTUAL_scope__AParam__accept_scope_visitor(val* self, val* p0) {
1101 scope__AParam__accept_scope_visitor(self, p0);
1102 RET_LABEL:;
1103 }
1104 /* method scope#AVardeclExpr#variable for (self: AVardeclExpr): nullable Variable */
1105 val* scope__AVardeclExpr__variable(val* self) {
1106 val* var /* : nullable Variable */;
1107 val* var1 /* : nullable Variable */;
1108 var1 = self->attrs[COLOR_scope__AVardeclExpr___64dvariable].val; /* @variable on <self:AVardeclExpr> */
1109 var = var1;
1110 RET_LABEL:;
1111 return var;
1112 }
1113 /* method scope#AVardeclExpr#variable for (self: Object): nullable Variable */
1114 val* VIRTUAL_scope__AVardeclExpr__variable(val* self) {
1115 val* var /* : nullable Variable */;
1116 val* var1 /* : nullable Variable */;
1117 var1 = scope__AVardeclExpr__variable(self);
1118 var = var1;
1119 RET_LABEL:;
1120 return var;
1121 }
1122 /* method scope#AVardeclExpr#variable= for (self: AVardeclExpr, nullable Variable) */
1123 void scope__AVardeclExpr__variable_61d(val* self, val* p0) {
1124 self->attrs[COLOR_scope__AVardeclExpr___64dvariable].val = p0; /* @variable on <self:AVardeclExpr> */
1125 RET_LABEL:;
1126 }
1127 /* method scope#AVardeclExpr#variable= for (self: Object, nullable Variable) */
1128 void VIRTUAL_scope__AVardeclExpr__variable_61d(val* self, val* p0) {
1129 scope__AVardeclExpr__variable_61d(self, p0);
1130 RET_LABEL:;
1131 }
1132 /* method scope#AVardeclExpr#accept_scope_visitor for (self: AVardeclExpr, ScopeVisitor) */
1133 void scope__AVardeclExpr__accept_scope_visitor(val* self, val* p0) {
1134 val* var_v /* var v: ScopeVisitor */;
1135 val* var /* : TId */;
1136 val* var_nid /* var nid: TId */;
1137 val* var1 /* : Variable */;
1138 val* var2 /* : String */;
1139 val* var_variable /* var variable: Variable */;
1140 short int var3 /* : Bool */;
1141 var_v = p0;
1142 ((void (*)(val*, val*))(self->class->vft[COLOR_scope__AVardeclExpr__accept_scope_visitor]))(self, p0) /* accept_scope_visitor on <self:AVardeclExpr>*/;
1143 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AVardeclExpr__n_id]))(self) /* n_id on <self:AVardeclExpr>*/;
1144 var_nid = var;
1145 var1 = NEW_scope__Variable(&type_scope__Variable);
1146 var2 = ((val* (*)(val*))(var_nid->class->vft[COLOR_parser_nodes__Token__text]))(var_nid) /* text on <var_nid:TId>*/;
1147 ((void (*)(val*, val*))(var1->class->vft[COLOR_scope__Variable__init]))(var1, var2) /* init on <var1:Variable>*/;
1148 CHECK_NEW_scope__Variable(var1);
1149 var_variable = var1;
1150 var3 = ((short int (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__register_variable]))(var_v, var_nid, var_variable) /* register_variable on <var_v:ScopeVisitor>*/;
1151 var3;
1152 ((void (*)(val*, val*))(self->class->vft[COLOR_scope__AVardeclExpr__variable_61d]))(self, var_variable) /* variable= on <self:AVardeclExpr>*/;
1153 RET_LABEL:;
1154 }
1155 /* method scope#AVardeclExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */
1156 void VIRTUAL_scope__AVardeclExpr__accept_scope_visitor(val* self, val* p0) {
1157 scope__AVardeclExpr__accept_scope_visitor(self, p0);
1158 RET_LABEL:;
1159 }
1160 /* method scope#ASelfExpr#variable for (self: ASelfExpr): nullable Variable */
1161 val* scope__ASelfExpr__variable(val* self) {
1162 val* var /* : nullable Variable */;
1163 val* var1 /* : nullable Variable */;
1164 var1 = self->attrs[COLOR_scope__ASelfExpr___64dvariable].val; /* @variable on <self:ASelfExpr> */
1165 var = var1;
1166 RET_LABEL:;
1167 return var;
1168 }
1169 /* method scope#ASelfExpr#variable for (self: Object): nullable Variable */
1170 val* VIRTUAL_scope__ASelfExpr__variable(val* self) {
1171 val* var /* : nullable Variable */;
1172 val* var1 /* : nullable Variable */;
1173 var1 = scope__ASelfExpr__variable(self);
1174 var = var1;
1175 RET_LABEL:;
1176 return var;
1177 }
1178 /* method scope#ASelfExpr#variable= for (self: ASelfExpr, nullable Variable) */
1179 void scope__ASelfExpr__variable_61d(val* self, val* p0) {
1180 self->attrs[COLOR_scope__ASelfExpr___64dvariable].val = p0; /* @variable on <self:ASelfExpr> */
1181 RET_LABEL:;
1182 }
1183 /* method scope#ASelfExpr#variable= for (self: Object, nullable Variable) */
1184 void VIRTUAL_scope__ASelfExpr__variable_61d(val* self, val* p0) {
1185 scope__ASelfExpr__variable_61d(self, p0);
1186 RET_LABEL:;
1187 }
1188 /* method scope#ASelfExpr#accept_scope_visitor for (self: ASelfExpr, ScopeVisitor) */
1189 void scope__ASelfExpr__accept_scope_visitor(val* self, val* p0) {
1190 val* var_v /* var v: ScopeVisitor */;
1191 val* var /* : Variable */;
1192 var_v = p0;
1193 ((void (*)(val*, val*))(self->class->vft[COLOR_scope__ASelfExpr__accept_scope_visitor]))(self, p0) /* accept_scope_visitor on <self:ASelfExpr>*/;
1194 var = ((val* (*)(val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__selfvariable]))(var_v) /* selfvariable on <var_v:ScopeVisitor>*/;
1195 ((void (*)(val*, val*))(self->class->vft[COLOR_scope__ASelfExpr__variable_61d]))(self, var) /* variable= on <self:ASelfExpr>*/;
1196 RET_LABEL:;
1197 }
1198 /* method scope#ASelfExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */
1199 void VIRTUAL_scope__ASelfExpr__accept_scope_visitor(val* self, val* p0) {
1200 scope__ASelfExpr__accept_scope_visitor(self, p0);
1201 RET_LABEL:;
1202 }
1203 /* method scope#AContinueExpr#escapemark for (self: AContinueExpr): nullable EscapeMark */
1204 val* scope__AContinueExpr__escapemark(val* self) {
1205 val* var /* : nullable EscapeMark */;
1206 val* var1 /* : nullable EscapeMark */;
1207 var1 = self->attrs[COLOR_scope__AContinueExpr___64descapemark].val; /* @escapemark on <self:AContinueExpr> */
1208 var = var1;
1209 RET_LABEL:;
1210 return var;
1211 }
1212 /* method scope#AContinueExpr#escapemark for (self: Object): nullable EscapeMark */
1213 val* VIRTUAL_scope__AContinueExpr__escapemark(val* self) {
1214 val* var /* : nullable EscapeMark */;
1215 val* var1 /* : nullable EscapeMark */;
1216 var1 = scope__AContinueExpr__escapemark(self);
1217 var = var1;
1218 RET_LABEL:;
1219 return var;
1220 }
1221 /* method scope#AContinueExpr#escapemark= for (self: AContinueExpr, nullable EscapeMark) */
1222 void scope__AContinueExpr__escapemark_61d(val* self, val* p0) {
1223 self->attrs[COLOR_scope__AContinueExpr___64descapemark].val = p0; /* @escapemark on <self:AContinueExpr> */
1224 RET_LABEL:;
1225 }
1226 /* method scope#AContinueExpr#escapemark= for (self: Object, nullable EscapeMark) */
1227 void VIRTUAL_scope__AContinueExpr__escapemark_61d(val* self, val* p0) {
1228 scope__AContinueExpr__escapemark_61d(self, p0);
1229 RET_LABEL:;
1230 }
1231 /* method scope#AContinueExpr#accept_scope_visitor for (self: AContinueExpr, ScopeVisitor) */
1232 void scope__AContinueExpr__accept_scope_visitor(val* self, val* p0) {
1233 val* var_v /* var v: ScopeVisitor */;
1234 val* var /* : nullable ALabel */;
1235 val* var1 /* : nullable EscapeMark */;
1236 val* var_escapemark /* var escapemark: nullable EscapeMark */;
1237 val* var2 /* : null */;
1238 short int var3 /* : Bool */;
1239 short int var4 /* : Bool */;
1240 short int var5 /* : Bool */;
1241 static val* varonce;
1242 val* var6 /* : String */;
1243 char* var7 /* : NativeString */;
1244 long var8 /* : Int */;
1245 val* var9 /* : String */;
1246 val* var10 /* : Array[AContinueExpr] */;
1247 var_v = p0;
1248 ((void (*)(val*, val*))(self->class->vft[COLOR_scope__AContinueExpr__accept_scope_visitor]))(self, p0) /* accept_scope_visitor on <self:AContinueExpr>*/;
1249 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ALabelable__n_label]))(self) /* n_label on <self:AContinueExpr>*/;
1250 var1 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__get_escapemark]))(var_v, self, var) /* get_escapemark on <var_v:ScopeVisitor>*/;
1251 var_escapemark = var1;
1252 var2 = NULL;
1253 if (var_escapemark == NULL) {
1254 var3 = 1; /* is null */
1255 } else {
1256 var3 = 0; /* arg is null but recv is not */
1257 }
1258 if (var3){
1259 goto RET_LABEL;
1260 } else {
1261 }
1262 var4 = ((short int (*)(val*))(var_escapemark->class->vft[COLOR_scope__EscapeMark__for_loop]))(var_escapemark) /* for_loop on <var_escapemark:nullable EscapeMark(EscapeMark)>*/;
1263 var5 = !var4;
1264 if (var5){
1265 if (varonce) {
1266 var6 = varonce;
1267 } else {
1268 var7 = "Error: cannot \'continue\', only \'break\'.";
1269 var8 = 39;
1270 var9 = string__NativeString__to_s_with_length(var7, var8);
1271 var6 = var9;
1272 varonce = var6;
1273 }
1274 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__error]))(var_v, self, var6) /* error on <var_v:ScopeVisitor>*/;
1275 } else {
1276 }
1277 var10 = ((val* (*)(val*))(var_escapemark->class->vft[COLOR_scope__EscapeMark__continues]))(var_escapemark) /* continues on <var_escapemark:nullable EscapeMark(EscapeMark)>*/;
1278 ((void (*)(val*, val*))(var10->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var10, self) /* add on <var10:Array[AContinueExpr]>*/;
1279 ((void (*)(val*, val*))(self->class->vft[COLOR_scope__AContinueExpr__escapemark_61d]))(self, var_escapemark) /* escapemark= on <self:AContinueExpr>*/;
1280 RET_LABEL:;
1281 }
1282 /* method scope#AContinueExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */
1283 void VIRTUAL_scope__AContinueExpr__accept_scope_visitor(val* self, val* p0) {
1284 scope__AContinueExpr__accept_scope_visitor(self, p0);
1285 RET_LABEL:;
1286 }
1287 /* method scope#ABreakExpr#escapemark for (self: ABreakExpr): nullable EscapeMark */
1288 val* scope__ABreakExpr__escapemark(val* self) {
1289 val* var /* : nullable EscapeMark */;
1290 val* var1 /* : nullable EscapeMark */;
1291 var1 = self->attrs[COLOR_scope__ABreakExpr___64descapemark].val; /* @escapemark on <self:ABreakExpr> */
1292 var = var1;
1293 RET_LABEL:;
1294 return var;
1295 }
1296 /* method scope#ABreakExpr#escapemark for (self: Object): nullable EscapeMark */
1297 val* VIRTUAL_scope__ABreakExpr__escapemark(val* self) {
1298 val* var /* : nullable EscapeMark */;
1299 val* var1 /* : nullable EscapeMark */;
1300 var1 = scope__ABreakExpr__escapemark(self);
1301 var = var1;
1302 RET_LABEL:;
1303 return var;
1304 }
1305 /* method scope#ABreakExpr#escapemark= for (self: ABreakExpr, nullable EscapeMark) */
1306 void scope__ABreakExpr__escapemark_61d(val* self, val* p0) {
1307 self->attrs[COLOR_scope__ABreakExpr___64descapemark].val = p0; /* @escapemark on <self:ABreakExpr> */
1308 RET_LABEL:;
1309 }
1310 /* method scope#ABreakExpr#escapemark= for (self: Object, nullable EscapeMark) */
1311 void VIRTUAL_scope__ABreakExpr__escapemark_61d(val* self, val* p0) {
1312 scope__ABreakExpr__escapemark_61d(self, p0);
1313 RET_LABEL:;
1314 }
1315 /* method scope#ABreakExpr#accept_scope_visitor for (self: ABreakExpr, ScopeVisitor) */
1316 void scope__ABreakExpr__accept_scope_visitor(val* self, val* p0) {
1317 val* var_v /* var v: ScopeVisitor */;
1318 val* var /* : nullable ALabel */;
1319 val* var1 /* : nullable EscapeMark */;
1320 val* var_escapemark /* var escapemark: nullable EscapeMark */;
1321 val* var2 /* : null */;
1322 short int var3 /* : Bool */;
1323 val* var4 /* : Array[ABreakExpr] */;
1324 var_v = p0;
1325 ((void (*)(val*, val*))(self->class->vft[COLOR_scope__ABreakExpr__accept_scope_visitor]))(self, p0) /* accept_scope_visitor on <self:ABreakExpr>*/;
1326 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ALabelable__n_label]))(self) /* n_label on <self:ABreakExpr>*/;
1327 var1 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__get_escapemark]))(var_v, self, var) /* get_escapemark on <var_v:ScopeVisitor>*/;
1328 var_escapemark = var1;
1329 var2 = NULL;
1330 if (var_escapemark == NULL) {
1331 var3 = 1; /* is null */
1332 } else {
1333 var3 = 0; /* arg is null but recv is not */
1334 }
1335 if (var3){
1336 goto RET_LABEL;
1337 } else {
1338 }
1339 var4 = ((val* (*)(val*))(var_escapemark->class->vft[COLOR_scope__EscapeMark__breaks]))(var_escapemark) /* breaks on <var_escapemark:nullable EscapeMark(EscapeMark)>*/;
1340 ((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var4, self) /* add on <var4:Array[ABreakExpr]>*/;
1341 ((void (*)(val*, val*))(self->class->vft[COLOR_scope__ABreakExpr__escapemark_61d]))(self, var_escapemark) /* escapemark= on <self:ABreakExpr>*/;
1342 RET_LABEL:;
1343 }
1344 /* method scope#ABreakExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */
1345 void VIRTUAL_scope__ABreakExpr__accept_scope_visitor(val* self, val* p0) {
1346 scope__ABreakExpr__accept_scope_visitor(self, p0);
1347 RET_LABEL:;
1348 }
1349 /* method scope#ADoExpr#escapemark for (self: ADoExpr): nullable EscapeMark */
1350 val* scope__ADoExpr__escapemark(val* self) {
1351 val* var /* : nullable EscapeMark */;
1352 val* var1 /* : nullable EscapeMark */;
1353 var1 = self->attrs[COLOR_scope__ADoExpr___64descapemark].val; /* @escapemark on <self:ADoExpr> */
1354 var = var1;
1355 RET_LABEL:;
1356 return var;
1357 }
1358 /* method scope#ADoExpr#escapemark for (self: Object): nullable EscapeMark */
1359 val* VIRTUAL_scope__ADoExpr__escapemark(val* self) {
1360 val* var /* : nullable EscapeMark */;
1361 val* var1 /* : nullable EscapeMark */;
1362 var1 = scope__ADoExpr__escapemark(self);
1363 var = var1;
1364 RET_LABEL:;
1365 return var;
1366 }
1367 /* method scope#ADoExpr#escapemark= for (self: ADoExpr, nullable EscapeMark) */
1368 void scope__ADoExpr__escapemark_61d(val* self, val* p0) {
1369 self->attrs[COLOR_scope__ADoExpr___64descapemark].val = p0; /* @escapemark on <self:ADoExpr> */
1370 RET_LABEL:;
1371 }
1372 /* method scope#ADoExpr#escapemark= for (self: Object, nullable EscapeMark) */
1373 void VIRTUAL_scope__ADoExpr__escapemark_61d(val* self, val* p0) {
1374 scope__ADoExpr__escapemark_61d(self, p0);
1375 RET_LABEL:;
1376 }
1377 /* method scope#ADoExpr#accept_scope_visitor for (self: ADoExpr, ScopeVisitor) */
1378 void scope__ADoExpr__accept_scope_visitor(val* self, val* p0) {
1379 val* var_v /* var v: ScopeVisitor */;
1380 val* var /* : nullable ALabel */;
1381 short int var1 /* : Bool */;
1382 val* var2 /* : EscapeMark */;
1383 val* var3 /* : nullable AExpr */;
1384 val* var4 /* : nullable EscapeMark */;
1385 var_v = p0;
1386 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ALabelable__n_label]))(self) /* n_label on <self:ADoExpr>*/;
1387 var1 = 0;
1388 var2 = ((val* (*)(val*, val*, short int))(var_v->class->vft[COLOR_scope__ScopeVisitor__make_escape_mark]))(var_v, var, var1) /* make_escape_mark on <var_v:ScopeVisitor>*/;
1389 ((void (*)(val*, val*))(self->class->vft[COLOR_scope__ADoExpr__escapemark_61d]))(self, var2) /* escapemark= on <self:ADoExpr>*/;
1390 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ADoExpr__n_block]))(self) /* n_block on <self:ADoExpr>*/;
1391 var4 = ((val* (*)(val*))(self->class->vft[COLOR_scope__ADoExpr__escapemark]))(self) /* escapemark on <self:ADoExpr>*/;
1392 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__enter_visit_block]))(var_v, var3, var4) /* enter_visit_block on <var_v:ScopeVisitor>*/;
1393 RET_LABEL:;
1394 }
1395 /* method scope#ADoExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */
1396 void VIRTUAL_scope__ADoExpr__accept_scope_visitor(val* self, val* p0) {
1397 scope__ADoExpr__accept_scope_visitor(self, p0);
1398 RET_LABEL:;
1399 }
1400 /* method scope#AIfExpr#accept_scope_visitor for (self: AIfExpr, ScopeVisitor) */
1401 void scope__AIfExpr__accept_scope_visitor(val* self, val* p0) {
1402 val* var_v /* var v: ScopeVisitor */;
1403 val* var /* : AExpr */;
1404 val* var1 /* : nullable AExpr */;
1405 val* var2 /* : null */;
1406 val* var3 /* : nullable AExpr */;
1407 val* var4 /* : null */;
1408 var_v = p0;
1409 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfExpr__n_expr]))(self) /* n_expr on <self:AIfExpr>*/;
1410 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:ScopeVisitor>*/;
1411 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfExpr__n_then]))(self) /* n_then on <self:AIfExpr>*/;
1412 var2 = NULL;
1413 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__enter_visit_block]))(var_v, var1, var2) /* enter_visit_block on <var_v:ScopeVisitor>*/;
1414 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfExpr__n_else]))(self) /* n_else on <self:AIfExpr>*/;
1415 var4 = NULL;
1416 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__enter_visit_block]))(var_v, var3, var4) /* enter_visit_block on <var_v:ScopeVisitor>*/;
1417 RET_LABEL:;
1418 }
1419 /* method scope#AIfExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */
1420 void VIRTUAL_scope__AIfExpr__accept_scope_visitor(val* self, val* p0) {
1421 scope__AIfExpr__accept_scope_visitor(self, p0);
1422 RET_LABEL:;
1423 }
1424 /* method scope#AWhileExpr#escapemark for (self: AWhileExpr): nullable EscapeMark */
1425 val* scope__AWhileExpr__escapemark(val* self) {
1426 val* var /* : nullable EscapeMark */;
1427 val* var1 /* : nullable EscapeMark */;
1428 var1 = self->attrs[COLOR_scope__AWhileExpr___64descapemark].val; /* @escapemark on <self:AWhileExpr> */
1429 var = var1;
1430 RET_LABEL:;
1431 return var;
1432 }
1433 /* method scope#AWhileExpr#escapemark for (self: Object): nullable EscapeMark */
1434 val* VIRTUAL_scope__AWhileExpr__escapemark(val* self) {
1435 val* var /* : nullable EscapeMark */;
1436 val* var1 /* : nullable EscapeMark */;
1437 var1 = scope__AWhileExpr__escapemark(self);
1438 var = var1;
1439 RET_LABEL:;
1440 return var;
1441 }
1442 /* method scope#AWhileExpr#escapemark= for (self: AWhileExpr, nullable EscapeMark) */
1443 void scope__AWhileExpr__escapemark_61d(val* self, val* p0) {
1444 self->attrs[COLOR_scope__AWhileExpr___64descapemark].val = p0; /* @escapemark on <self:AWhileExpr> */
1445 RET_LABEL:;
1446 }
1447 /* method scope#AWhileExpr#escapemark= for (self: Object, nullable EscapeMark) */
1448 void VIRTUAL_scope__AWhileExpr__escapemark_61d(val* self, val* p0) {
1449 scope__AWhileExpr__escapemark_61d(self, p0);
1450 RET_LABEL:;
1451 }
1452 /* method scope#AWhileExpr#accept_scope_visitor for (self: AWhileExpr, ScopeVisitor) */
1453 void scope__AWhileExpr__accept_scope_visitor(val* self, val* p0) {
1454 val* var_v /* var v: ScopeVisitor */;
1455 val* var /* : nullable ALabel */;
1456 short int var1 /* : Bool */;
1457 val* var2 /* : EscapeMark */;
1458 val* var_escapemark /* var escapemark: EscapeMark */;
1459 val* var3 /* : AExpr */;
1460 val* var4 /* : nullable AExpr */;
1461 var_v = p0;
1462 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ALabelable__n_label]))(self) /* n_label on <self:AWhileExpr>*/;
1463 var1 = 1;
1464 var2 = ((val* (*)(val*, val*, short int))(var_v->class->vft[COLOR_scope__ScopeVisitor__make_escape_mark]))(var_v, var, var1) /* make_escape_mark on <var_v:ScopeVisitor>*/;
1465 var_escapemark = var2;
1466 ((void (*)(val*, val*))(self->class->vft[COLOR_scope__AWhileExpr__escapemark_61d]))(self, var_escapemark) /* escapemark= on <self:AWhileExpr>*/;
1467 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AWhileExpr__n_expr]))(self) /* n_expr on <self:AWhileExpr>*/;
1468 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var3) /* enter_visit on <var_v:ScopeVisitor>*/;
1469 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AWhileExpr__n_block]))(self) /* n_block on <self:AWhileExpr>*/;
1470 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__enter_visit_block]))(var_v, var4, var_escapemark) /* enter_visit_block on <var_v:ScopeVisitor>*/;
1471 RET_LABEL:;
1472 }
1473 /* method scope#AWhileExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */
1474 void VIRTUAL_scope__AWhileExpr__accept_scope_visitor(val* self, val* p0) {
1475 scope__AWhileExpr__accept_scope_visitor(self, p0);
1476 RET_LABEL:;
1477 }
1478 /* method scope#ALoopExpr#escapemark for (self: ALoopExpr): nullable EscapeMark */
1479 val* scope__ALoopExpr__escapemark(val* self) {
1480 val* var /* : nullable EscapeMark */;
1481 val* var1 /* : nullable EscapeMark */;
1482 var1 = self->attrs[COLOR_scope__ALoopExpr___64descapemark].val; /* @escapemark on <self:ALoopExpr> */
1483 var = var1;
1484 RET_LABEL:;
1485 return var;
1486 }
1487 /* method scope#ALoopExpr#escapemark for (self: Object): nullable EscapeMark */
1488 val* VIRTUAL_scope__ALoopExpr__escapemark(val* self) {
1489 val* var /* : nullable EscapeMark */;
1490 val* var1 /* : nullable EscapeMark */;
1491 var1 = scope__ALoopExpr__escapemark(self);
1492 var = var1;
1493 RET_LABEL:;
1494 return var;
1495 }
1496 /* method scope#ALoopExpr#escapemark= for (self: ALoopExpr, nullable EscapeMark) */
1497 void scope__ALoopExpr__escapemark_61d(val* self, val* p0) {
1498 self->attrs[COLOR_scope__ALoopExpr___64descapemark].val = p0; /* @escapemark on <self:ALoopExpr> */
1499 RET_LABEL:;
1500 }
1501 /* method scope#ALoopExpr#escapemark= for (self: Object, nullable EscapeMark) */
1502 void VIRTUAL_scope__ALoopExpr__escapemark_61d(val* self, val* p0) {
1503 scope__ALoopExpr__escapemark_61d(self, p0);
1504 RET_LABEL:;
1505 }
1506 /* method scope#ALoopExpr#accept_scope_visitor for (self: ALoopExpr, ScopeVisitor) */
1507 void scope__ALoopExpr__accept_scope_visitor(val* self, val* p0) {
1508 val* var_v /* var v: ScopeVisitor */;
1509 val* var /* : nullable ALabel */;
1510 short int var1 /* : Bool */;
1511 val* var2 /* : EscapeMark */;
1512 val* var_escapemark /* var escapemark: EscapeMark */;
1513 val* var3 /* : nullable AExpr */;
1514 var_v = p0;
1515 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ALabelable__n_label]))(self) /* n_label on <self:ALoopExpr>*/;
1516 var1 = 1;
1517 var2 = ((val* (*)(val*, val*, short int))(var_v->class->vft[COLOR_scope__ScopeVisitor__make_escape_mark]))(var_v, var, var1) /* make_escape_mark on <var_v:ScopeVisitor>*/;
1518 var_escapemark = var2;
1519 ((void (*)(val*, val*))(self->class->vft[COLOR_scope__ALoopExpr__escapemark_61d]))(self, var_escapemark) /* escapemark= on <self:ALoopExpr>*/;
1520 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ALoopExpr__n_block]))(self) /* n_block on <self:ALoopExpr>*/;
1521 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__enter_visit_block]))(var_v, var3, var_escapemark) /* enter_visit_block on <var_v:ScopeVisitor>*/;
1522 RET_LABEL:;
1523 }
1524 /* method scope#ALoopExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */
1525 void VIRTUAL_scope__ALoopExpr__accept_scope_visitor(val* self, val* p0) {
1526 scope__ALoopExpr__accept_scope_visitor(self, p0);
1527 RET_LABEL:;
1528 }
1529 /* method scope#AForExpr#variables for (self: AForExpr): nullable Array[Variable] */
1530 val* scope__AForExpr__variables(val* self) {
1531 val* var /* : nullable Array[Variable] */;
1532 val* var1 /* : nullable Array[Variable] */;
1533 var1 = self->attrs[COLOR_scope__AForExpr___64dvariables].val; /* @variables on <self:AForExpr> */
1534 var = var1;
1535 RET_LABEL:;
1536 return var;
1537 }
1538 /* method scope#AForExpr#variables for (self: Object): nullable Array[Variable] */
1539 val* VIRTUAL_scope__AForExpr__variables(val* self) {
1540 val* var /* : nullable Array[Variable] */;
1541 val* var1 /* : nullable Array[Variable] */;
1542 var1 = scope__AForExpr__variables(self);
1543 var = var1;
1544 RET_LABEL:;
1545 return var;
1546 }
1547 /* method scope#AForExpr#variables= for (self: AForExpr, nullable Array[Variable]) */
1548 void scope__AForExpr__variables_61d(val* self, val* p0) {
1549 self->attrs[COLOR_scope__AForExpr___64dvariables].val = p0; /* @variables on <self:AForExpr> */
1550 RET_LABEL:;
1551 }
1552 /* method scope#AForExpr#variables= for (self: Object, nullable Array[Variable]) */
1553 void VIRTUAL_scope__AForExpr__variables_61d(val* self, val* p0) {
1554 scope__AForExpr__variables_61d(self, p0);
1555 RET_LABEL:;
1556 }
1557 /* method scope#AForExpr#escapemark for (self: AForExpr): nullable EscapeMark */
1558 val* scope__AForExpr__escapemark(val* self) {
1559 val* var /* : nullable EscapeMark */;
1560 val* var1 /* : nullable EscapeMark */;
1561 var1 = self->attrs[COLOR_scope__AForExpr___64descapemark].val; /* @escapemark on <self:AForExpr> */
1562 var = var1;
1563 RET_LABEL:;
1564 return var;
1565 }
1566 /* method scope#AForExpr#escapemark for (self: Object): nullable EscapeMark */
1567 val* VIRTUAL_scope__AForExpr__escapemark(val* self) {
1568 val* var /* : nullable EscapeMark */;
1569 val* var1 /* : nullable EscapeMark */;
1570 var1 = scope__AForExpr__escapemark(self);
1571 var = var1;
1572 RET_LABEL:;
1573 return var;
1574 }
1575 /* method scope#AForExpr#escapemark= for (self: AForExpr, nullable EscapeMark) */
1576 void scope__AForExpr__escapemark_61d(val* self, val* p0) {
1577 self->attrs[COLOR_scope__AForExpr___64descapemark].val = p0; /* @escapemark on <self:AForExpr> */
1578 RET_LABEL:;
1579 }
1580 /* method scope#AForExpr#escapemark= for (self: Object, nullable EscapeMark) */
1581 void VIRTUAL_scope__AForExpr__escapemark_61d(val* self, val* p0) {
1582 scope__AForExpr__escapemark_61d(self, p0);
1583 RET_LABEL:;
1584 }
1585 /* method scope#AForExpr#accept_scope_visitor for (self: AForExpr, ScopeVisitor) */
1586 void scope__AForExpr__accept_scope_visitor(val* self, val* p0) {
1587 val* var_v /* var v: ScopeVisitor */;
1588 val* var /* : AExpr */;
1589 val* var1 /* : List[Scope] */;
1590 val* var2 /* : Scope */;
1591 val* var3 /* : Array[Variable] */;
1592 val* var_variables /* var variables: Array[Variable] */;
1593 val* var4 /* : ANodes[TId] */;
1594 val* var5 /* : Iterator[nullable Object] */;
1595 short int var6 /* : Bool */;
1596 val* var7 /* : nullable Object */;
1597 val* var_nid /* var nid: TId */;
1598 val* var8 /* : Variable */;
1599 val* var9 /* : String */;
1600 val* var_va /* var va: Variable */;
1601 short int var10 /* : Bool */;
1602 val* var11 /* : nullable ALabel */;
1603 short int var12 /* : Bool */;
1604 val* var13 /* : EscapeMark */;
1605 val* var_escapemark /* var escapemark: EscapeMark */;
1606 val* var14 /* : nullable AExpr */;
1607 val* var15 /* : List[Scope] */;
1608 val* var16 /* : nullable Object */;
1609 var_v = p0;
1610 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AForExpr__n_expr]))(self) /* n_expr on <self:AForExpr>*/;
1611 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:ScopeVisitor>*/;
1612 var1 = ((val* (*)(val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__scopes]))(var_v) /* scopes on <var_v:ScopeVisitor>*/;
1613 var2 = NEW_scope__Scope(&type_scope__Scope);
1614 ((void (*)(val*))(var2->class->vft[COLOR_scope__Scope__init]))(var2) /* init on <var2:Scope>*/;
1615 CHECK_NEW_scope__Scope(var2);
1616 ((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__Sequence__unshift]))(var1, var2) /* unshift on <var1:List[Scope]>*/;
1617 var3 = NEW_array__Array(&type_array__Arrayscope__Variable);
1618 ((void (*)(val*))(var3->class->vft[COLOR_array__Array__init]))(var3) /* init on <var3:Array[Variable]>*/;
1619 CHECK_NEW_array__Array(var3);
1620 var_variables = var3;
1621 ((void (*)(val*, val*))(self->class->vft[COLOR_scope__AForExpr__variables_61d]))(self, var_variables) /* variables= on <self:AForExpr>*/;
1622 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AForExpr__n_ids]))(self) /* n_ids on <self:AForExpr>*/;
1623 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Collection__iterator]))(var4) /* iterator on <var4:ANodes[TId]>*/;
1624 for(;;) {
1625 var6 = ((short int (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var5) /* is_ok on <var5:Iterator[nullable Object]>*/;
1626 if(!var6) break;
1627 var7 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__item]))(var5) /* item on <var5:Iterator[nullable Object]>*/;
1628 var_nid = var7;
1629 var8 = NEW_scope__Variable(&type_scope__Variable);
1630 var9 = ((val* (*)(val*))(var_nid->class->vft[COLOR_parser_nodes__Token__text]))(var_nid) /* text on <var_nid:TId>*/;
1631 ((void (*)(val*, val*))(var8->class->vft[COLOR_scope__Variable__init]))(var8, var9) /* init on <var8:Variable>*/;
1632 CHECK_NEW_scope__Variable(var8);
1633 var_va = var8;
1634 var10 = ((short int (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__register_variable]))(var_v, var_nid, var_va) /* register_variable on <var_v:ScopeVisitor>*/;
1635 var10;
1636 ((void (*)(val*, val*))(var_variables->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_variables, var_va) /* add on <var_variables:Array[Variable]>*/;
1637 CONTINUE_label: (void)0;
1638 ((void (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__next]))(var5) /* next on <var5:Iterator[nullable Object]>*/;
1639 }
1640 BREAK_label: (void)0;
1641 var11 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ALabelable__n_label]))(self) /* n_label on <self:AForExpr>*/;
1642 var12 = 1;
1643 var13 = ((val* (*)(val*, val*, short int))(var_v->class->vft[COLOR_scope__ScopeVisitor__make_escape_mark]))(var_v, var11, var12) /* make_escape_mark on <var_v:ScopeVisitor>*/;
1644 var_escapemark = var13;
1645 ((void (*)(val*, val*))(self->class->vft[COLOR_scope__AForExpr__escapemark_61d]))(self, var_escapemark) /* escapemark= on <self:AForExpr>*/;
1646 var14 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AForExpr__n_block]))(self) /* n_block on <self:AForExpr>*/;
1647 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__enter_visit_block]))(var_v, var14, var_escapemark) /* enter_visit_block on <var_v:ScopeVisitor>*/;
1648 var15 = ((val* (*)(val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__scopes]))(var_v) /* scopes on <var_v:ScopeVisitor>*/;
1649 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_collection__Sequence__shift]))(var15) /* shift on <var15:List[Scope]>*/;
1650 var16;
1651 RET_LABEL:;
1652 }
1653 /* method scope#AForExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */
1654 void VIRTUAL_scope__AForExpr__accept_scope_visitor(val* self, val* p0) {
1655 scope__AForExpr__accept_scope_visitor(self, p0);
1656 RET_LABEL:;
1657 }
1658 /* method scope#AVarFormExpr#variable for (self: AVarFormExpr): nullable Variable */
1659 val* scope__AVarFormExpr__variable(val* self) {
1660 val* var /* : nullable Variable */;
1661 val* var1 /* : nullable Variable */;
1662 var1 = self->attrs[COLOR_scope__AVarFormExpr___64dvariable].val; /* @variable on <self:AVarFormExpr> */
1663 var = var1;
1664 RET_LABEL:;
1665 return var;
1666 }
1667 /* method scope#AVarFormExpr#variable for (self: Object): nullable Variable */
1668 val* VIRTUAL_scope__AVarFormExpr__variable(val* self) {
1669 val* var /* : nullable Variable */;
1670 val* var1 /* : nullable Variable */;
1671 var1 = scope__AVarFormExpr__variable(self);
1672 var = var1;
1673 RET_LABEL:;
1674 return var;
1675 }
1676 /* method scope#AVarFormExpr#variable= for (self: AVarFormExpr, nullable Variable) */
1677 void scope__AVarFormExpr__variable_61d(val* self, val* p0) {
1678 self->attrs[COLOR_scope__AVarFormExpr___64dvariable].val = p0; /* @variable on <self:AVarFormExpr> */
1679 RET_LABEL:;
1680 }
1681 /* method scope#AVarFormExpr#variable= for (self: Object, nullable Variable) */
1682 void VIRTUAL_scope__AVarFormExpr__variable_61d(val* self, val* p0) {
1683 scope__AVarFormExpr__variable_61d(self, p0);
1684 RET_LABEL:;
1685 }
1686 /* method scope#ACallFormExpr#accept_scope_visitor for (self: ACallFormExpr, ScopeVisitor) */
1687 void scope__ACallFormExpr__accept_scope_visitor(val* self, val* p0) {
1688 val* var_v /* var v: ScopeVisitor */;
1689 val* var /* : AExpr */;
1690 short int var1 /* : Bool */;
1691 int cltype;
1692 int idtype;
1693 val* var2 /* : TId */;
1694 val* var3 /* : String */;
1695 val* var_name /* var name: String */;
1696 val* var4 /* : nullable Variable */;
1697 val* var_variable /* var variable: nullable Variable */;
1698 val* var5 /* : null */;
1699 short int var6 /* : Bool */;
1700 short int var7 /* : Bool */;
1701 val* var8 /* : AExprs */;
1702 val* var9 /* : ANodes[AExpr] */;
1703 short int var10 /* : Bool */;
1704 short int var11 /* : Bool */;
1705 val* var12 /* : AExprs */;
1706 short int var13 /* : Bool */;
1707 int cltype14;
1708 int idtype15;
1709 static val* varonce;
1710 val* var16 /* : String */;
1711 char* var17 /* : NativeString */;
1712 long var18 /* : Int */;
1713 val* var19 /* : String */;
1714 static val* varonce20;
1715 val* var21 /* : String */;
1716 char* var22 /* : NativeString */;
1717 long var23 /* : Int */;
1718 val* var24 /* : String */;
1719 val* var25 /* : Array[Object] */;
1720 long var26 /* : Int */;
1721 val* var27 /* : NativeArray[Object] */;
1722 val* var28 /* : String */;
1723 val* var29 /* : AVarFormExpr */;
1724 val* var_n /* var n: AExpr */;
1725 var_v = p0;
1726 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ACallFormExpr>*/;
1727 /* <var:AExpr> isa AImplicitSelfExpr */
1728 cltype = type_parser_nodes__AImplicitSelfExpr.color;
1729 idtype = type_parser_nodes__AImplicitSelfExpr.id;
1730 if(cltype >= var->type->table_size) {
1731 var1 = 0;
1732 } else {
1733 var1 = var->type->type_table[cltype] == idtype;
1734 }
1735 if (var1){
1736 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_id]))(self) /* n_id on <self:ACallFormExpr>*/;
1737 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_parser_nodes__Token__text]))(var2) /* text on <var2:TId>*/;
1738 var_name = var3;
1739 var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__search_variable]))(var_v, var_name) /* search_variable on <var_v:ScopeVisitor>*/;
1740 var_variable = var4;
1741 var5 = NULL;
1742 if (var_variable == NULL) {
1743 var6 = 0; /* is null */
1744 } else {
1745 var6 = 1; /* arg is null and recv is not */
1746 }
1747 if (var6){
1748 var8 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_args]))(self) /* n_args on <self:ACallFormExpr>*/;
1749 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_parser_nodes__AExprs__n_exprs]))(var8) /* n_exprs on <var8:AExprs>*/;
1750 var10 = ((short int (*)(val*))(var9->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var9) /* is_empty on <var9:ANodes[AExpr]>*/;
1751 var11 = !var10;
1752 if (var11) {
1753 var7 = 1;
1754 } else {
1755 var12 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_args]))(self) /* n_args on <self:ACallFormExpr>*/;
1756 /* <var12:AExprs> isa AParExprs */
1757 cltype14 = type_parser_nodes__AParExprs.color;
1758 idtype15 = type_parser_nodes__AParExprs.id;
1759 if(cltype14 >= var12->type->table_size) {
1760 var13 = 0;
1761 } else {
1762 var13 = var12->type->type_table[cltype14] == idtype15;
1763 }
1764 var7 = var13;
1765 }
1766 if (var7){
1767 if (varonce) {
1768 var16 = varonce;
1769 } else {
1770 var17 = "Error: ";
1771 var18 = 7;
1772 var19 = string__NativeString__to_s_with_length(var17, var18);
1773 var16 = var19;
1774 varonce = var16;
1775 }
1776 if (varonce20) {
1777 var21 = varonce20;
1778 } else {
1779 var22 = " is variable, not a function.";
1780 var23 = 29;
1781 var24 = string__NativeString__to_s_with_length(var22, var23);
1782 var21 = var24;
1783 varonce20 = var21;
1784 }
1785 var25 = NEW_array__Array(&type_array__Arraykernel__Object);
1786 { /* var25 = array_instance Array[Object] */
1787 var26 = 3;
1788 var27 = NEW_array__NativeArray(var26, &type_array__NativeArraykernel__Object);
1789 ((struct instance_array__NativeArray*)var27)->values[0] = (val*) var16;
1790 ((struct instance_array__NativeArray*)var27)->values[1] = (val*) var_name;
1791 ((struct instance_array__NativeArray*)var27)->values[2] = (val*) var21;
1792 ((void (*)(val*, val*, long))(var25->class->vft[COLOR_array__Array__with_native]))(var25, var27, var26) /* with_native on <var25:Array[Object]>*/;
1793 CHECK_NEW_array__Array(var25);
1794 }
1795 var28 = ((val* (*)(val*))(var25->class->vft[COLOR_string__Object__to_s]))(var25) /* to_s on <var25:Array[Object]>*/;
1796 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__error]))(var_v, self, var28) /* error on <var_v:ScopeVisitor>*/;
1797 goto RET_LABEL;
1798 } else {
1799 }
1800 var29 = ((val* (*)(val*, val*))(self->class->vft[COLOR_scope__ACallFormExpr__variable_create]))(self, var_variable) /* variable_create on <self:ACallFormExpr>*/;
1801 var_n = var29;
1802 ((void (*)(val*, val*))(var_n->class->vft[COLOR_scope__AVarFormExpr__variable_61d]))(var_n, var_variable) /* variable= on <var_n:AExpr(AVarFormExpr)>*/;
1803 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__replace_with]))(self, var_n) /* replace_with on <self:ACallFormExpr>*/;
1804 ((void (*)(val*, val*))(var_n->class->vft[COLOR_scope__ANode__accept_scope_visitor]))(var_n, var_v) /* accept_scope_visitor on <var_n:AExpr(AVarFormExpr)>*/;
1805 goto RET_LABEL;
1806 } else {
1807 }
1808 } else {
1809 }
1810 ((void (*)(val*, val*))(self->class->vft[COLOR_scope__ACallFormExpr__accept_scope_visitor]))(self, p0) /* accept_scope_visitor on <self:ACallFormExpr>*/;
1811 RET_LABEL:;
1812 }
1813 /* method scope#ACallFormExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */
1814 void VIRTUAL_scope__ACallFormExpr__accept_scope_visitor(val* self, val* p0) {
1815 scope__ACallFormExpr__accept_scope_visitor(self, p0);
1816 RET_LABEL:;
1817 }
1818 /* method scope#ACallFormExpr#variable_create for (self: ACallFormExpr, Variable): AVarFormExpr */
1819 val* scope__ACallFormExpr__variable_create(val* self, val* p0) {
1820 val* var /* : AVarFormExpr */;
1821 const char* var_class_name;
1822 var_class_name = self == NULL ? "null" : self->type->name;
1823 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "variable_create", var_class_name);
1824 fprintf(stderr, " (%s:%d)\n", "src/scope.nit", 389);
1825 exit(1);
1826 RET_LABEL:;
1827 return var;
1828 }
1829 /* method scope#ACallFormExpr#variable_create for (self: Object, Variable): AVarFormExpr */
1830 val* VIRTUAL_scope__ACallFormExpr__variable_create(val* self, val* p0) {
1831 val* var /* : AVarFormExpr */;
1832 val* var1 /* : AVarFormExpr */;
1833 var1 = scope__ACallFormExpr__variable_create(self, p0);
1834 var = var1;
1835 RET_LABEL:;
1836 return var;
1837 }
1838 /* method scope#ACallExpr#variable_create for (self: ACallExpr, Variable): AVarFormExpr */
1839 val* scope__ACallExpr__variable_create(val* self, val* p0) {
1840 val* var /* : AVarFormExpr */;
1841 val* var_variable /* var variable: Variable */;
1842 val* var1 /* : AVarExpr */;
1843 val* var2 /* : TId */;
1844 var_variable = p0;
1845 var1 = NEW_parser_nodes__AVarExpr(&type_parser_nodes__AVarExpr);
1846 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_id]))(self) /* n_id on <self:ACallExpr>*/;
1847 ((void (*)(val*, val*))(var1->class->vft[COLOR_parser_prod__AVarExpr__init_avarexpr]))(var1, var2) /* init_avarexpr on <var1:AVarExpr>*/;
1848 CHECK_NEW_parser_nodes__AVarExpr(var1);
1849 var = var1;
1850 goto RET_LABEL;
1851 RET_LABEL:;
1852 return var;
1853 }
1854 /* method scope#ACallExpr#variable_create for (self: Object, Variable): AVarFormExpr */
1855 val* VIRTUAL_scope__ACallExpr__variable_create(val* self, val* p0) {
1856 val* var /* : AVarFormExpr */;
1857 val* var1 /* : AVarFormExpr */;
1858 var1 = scope__ACallExpr__variable_create(self, p0);
1859 var = var1;
1860 RET_LABEL:;
1861 return var;
1862 }
1863 /* method scope#ACallAssignExpr#variable_create for (self: ACallAssignExpr, Variable): AVarFormExpr */
1864 val* scope__ACallAssignExpr__variable_create(val* self, val* p0) {
1865 val* var /* : AVarFormExpr */;
1866 val* var_variable /* var variable: Variable */;
1867 val* var1 /* : AVarAssignExpr */;
1868 val* var2 /* : TId */;
1869 val* var3 /* : TAssign */;
1870 val* var4 /* : AExpr */;
1871 var_variable = p0;
1872 var1 = NEW_parser_nodes__AVarAssignExpr(&type_parser_nodes__AVarAssignExpr);
1873 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_id]))(self) /* n_id on <self:ACallAssignExpr>*/;
1874 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssignFormExpr__n_assign]))(self) /* n_assign on <self:ACallAssignExpr>*/;
1875 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssignFormExpr__n_value]))(self) /* n_value on <self:ACallAssignExpr>*/;
1876 ((void (*)(val*, val*, val*, val*))(var1->class->vft[COLOR_parser_prod__AVarAssignExpr__init_avarassignexpr]))(var1, var2, var3, var4) /* init_avarassignexpr on <var1:AVarAssignExpr>*/;
1877 CHECK_NEW_parser_nodes__AVarAssignExpr(var1);
1878 var = var1;
1879 goto RET_LABEL;
1880 RET_LABEL:;
1881 return var;
1882 }
1883 /* method scope#ACallAssignExpr#variable_create for (self: Object, Variable): AVarFormExpr */
1884 val* VIRTUAL_scope__ACallAssignExpr__variable_create(val* self, val* p0) {
1885 val* var /* : AVarFormExpr */;
1886 val* var1 /* : AVarFormExpr */;
1887 var1 = scope__ACallAssignExpr__variable_create(self, p0);
1888 var = var1;
1889 RET_LABEL:;
1890 return var;
1891 }
1892 /* method scope#ACallReassignExpr#variable_create for (self: ACallReassignExpr, Variable): AVarFormExpr */
1893 val* scope__ACallReassignExpr__variable_create(val* self, val* p0) {
1894 val* var /* : AVarFormExpr */;
1895 val* var_variable /* var variable: Variable */;
1896 val* var1 /* : AVarReassignExpr */;
1897 val* var2 /* : TId */;
1898 val* var3 /* : AAssignOp */;
1899 val* var4 /* : AExpr */;
1900 var_variable = p0;
1901 var1 = NEW_parser_nodes__AVarReassignExpr(&type_parser_nodes__AVarReassignExpr);
1902 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_id]))(self) /* n_id on <self:ACallReassignExpr>*/;
1903 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_assign_op]))(self) /* n_assign_op on <self:ACallReassignExpr>*/;
1904 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_value]))(self) /* n_value on <self:ACallReassignExpr>*/;
1905 ((void (*)(val*, val*, val*, val*))(var1->class->vft[COLOR_parser_prod__AVarReassignExpr__init_avarreassignexpr]))(var1, var2, var3, var4) /* init_avarreassignexpr on <var1:AVarReassignExpr>*/;
1906 CHECK_NEW_parser_nodes__AVarReassignExpr(var1);
1907 var = var1;
1908 goto RET_LABEL;
1909 RET_LABEL:;
1910 return var;
1911 }
1912 /* method scope#ACallReassignExpr#variable_create for (self: Object, Variable): AVarFormExpr */
1913 val* VIRTUAL_scope__ACallReassignExpr__variable_create(val* self, val* p0) {
1914 val* var /* : AVarFormExpr */;
1915 val* var1 /* : AVarFormExpr */;
1916 var1 = scope__ACallReassignExpr__variable_create(self, p0);
1917 var = var1;
1918 RET_LABEL:;
1919 return var;
1920 }