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