debugger: Added method to clean the object model when injecting code at runtime.
[nit.git] / c_src / phase.sep.1.c
1 #include "phase.sep.0.h"
2 /* method phase#ToolContext#phases for (self: ToolContext): POSet[Phase] */
3 val* phase__ToolContext__phases(val* self) {
4 val* var /* : POSet[Phase] */;
5 val* var1 /* : POSet[Phase] */;
6 var1 = self->attrs[COLOR_phase__ToolContext___64dphases].val; /* @phases on <self:ToolContext> */
7 if (var1 == NULL) {
8 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @phases");
9 fprintf(stderr, " (%s:%d)\n", "src/phase.nit", 23);
10 exit(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method phase#ToolContext#phases for (self: Object): POSet[Phase] */
17 val* VIRTUAL_phase__ToolContext__phases(val* self) {
18 val* var /* : POSet[Phase] */;
19 val* var1 /* : POSet[Phase] */;
20 var1 = phase__ToolContext__phases(self);
21 var = var1;
22 RET_LABEL:;
23 return var;
24 }
25 /* method phase#ToolContext#phases= for (self: ToolContext, POSet[Phase]) */
26 void phase__ToolContext__phases_61d(val* self, val* p0) {
27 self->attrs[COLOR_phase__ToolContext___64dphases].val = p0; /* @phases on <self:ToolContext> */
28 RET_LABEL:;
29 }
30 /* method phase#ToolContext#phases= for (self: Object, POSet[Phase]) */
31 void VIRTUAL_phase__ToolContext__phases_61d(val* self, val* p0) {
32 phase__ToolContext__phases_61d(self, p0);
33 RET_LABEL:;
34 }
35 /* method phase#ToolContext#phases_list for (self: ToolContext): Sequence[Phase] */
36 val* phase__ToolContext__phases_list(val* self) {
37 val* var /* : Sequence[Phase] */;
38 val* var1 /* : POSet[Phase] */;
39 val* var2 /* : Array[nullable Object] */;
40 val* var_phases /* var phases: Array[Phase] */;
41 val* var3 /* : POSet[Phase] */;
42 var1 = ((val* (*)(val*))(self->class->vft[COLOR_phase__ToolContext__phases]))(self) /* phases on <self:ToolContext>*/;
43 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_array__Collection__to_a]))(var1) /* to_a on <var1:POSet[Phase]>*/;
44 var_phases = var2;
45 var3 = ((val* (*)(val*))(self->class->vft[COLOR_phase__ToolContext__phases]))(self) /* phases on <self:ToolContext>*/;
46 ((void (*)(val*, val*))(var3->class->vft[COLOR_sorter__AbstractSorter__sort]))(var3, var_phases) /* sort on <var3:POSet[Phase]>*/;
47 var = var_phases;
48 goto RET_LABEL;
49 RET_LABEL:;
50 return var;
51 }
52 /* method phase#ToolContext#phases_list for (self: Object): Sequence[Phase] */
53 val* VIRTUAL_phase__ToolContext__phases_list(val* self) {
54 val* var /* : Sequence[Phase] */;
55 val* var1 /* : Sequence[Phase] */;
56 var1 = phase__ToolContext__phases_list(self);
57 var = var1;
58 RET_LABEL:;
59 return var;
60 }
61 /* method phase#ToolContext#run_phases for (self: ToolContext, Collection[AModule]) */
62 void phase__ToolContext__run_phases(val* self, val* p0) {
63 val* var_nmodules /* var nmodules: Collection[AModule] */;
64 long var /* : Int */;
65 long var_time0 /* var time0: Int */;
66 static val* varonce;
67 val* var1 /* : String */;
68 char* var2 /* : NativeString */;
69 long var3 /* : Int */;
70 val* var4 /* : String */;
71 long var5 /* : Int */;
72 val* var6 /* : Sequence[Phase] */;
73 val* var_phases /* var phases: Sequence[Phase] */;
74 val* var7 /* : Iterator[nullable Object] */;
75 short int var8 /* : Bool */;
76 val* var9 /* : nullable Object */;
77 val* var_phase /* var phase: Phase */;
78 static val* varonce10;
79 val* var11 /* : String */;
80 char* var12 /* : NativeString */;
81 long var13 /* : Int */;
82 val* var14 /* : String */;
83 val* var15 /* : String */;
84 val* var16 /* : Array[Object] */;
85 long var17 /* : Int */;
86 val* var18 /* : NativeArray[Object] */;
87 val* var19 /* : String */;
88 long var20 /* : Int */;
89 val* var21 /* : Iterator[nullable Object] */;
90 short int var22 /* : Bool */;
91 val* var23 /* : nullable Object */;
92 val* var_nmodule /* var nmodule: AModule */;
93 static val* varonce24;
94 val* var25 /* : String */;
95 char* var26 /* : NativeString */;
96 long var27 /* : Int */;
97 val* var28 /* : String */;
98 val* var29 /* : Location */;
99 val* var30 /* : nullable SourceFile */;
100 val* var31 /* : String */;
101 val* var32 /* : Array[Object] */;
102 long var33 /* : Int */;
103 val* var34 /* : NativeArray[Object] */;
104 val* var35 /* : String */;
105 long var36 /* : Int */;
106 val* var37 /* : Iterator[nullable Object] */;
107 short int var38 /* : Bool */;
108 val* var39 /* : nullable Object */;
109 val* var_phase40 /* var phase: Phase */;
110 static val* varonce41;
111 val* var42 /* : String */;
112 char* var43 /* : NativeString */;
113 long var44 /* : Int */;
114 val* var45 /* : String */;
115 val* var46 /* : String */;
116 val* var47 /* : Array[Object] */;
117 long var48 /* : Int */;
118 val* var49 /* : NativeArray[Object] */;
119 val* var50 /* : String */;
120 long var51 /* : Int */;
121 val* var52 /* : ToolContext */;
122 short int var53 /* : Bool */;
123 long var54 /* : Int */;
124 long var_errcount /* var errcount: Int */;
125 long var55 /* : Int */;
126 short int var56 /* : Bool */;
127 short int var58 /* : Bool */;
128 short int var59 /* : Bool */;
129 long var61 /* : Int */;
130 val* var62 /* : ANodes[AClassdef] */;
131 val* var63 /* : Iterator[nullable Object] */;
132 short int var64 /* : Bool */;
133 val* var65 /* : nullable Object */;
134 val* var_nclassdef /* var nclassdef: AClassdef */;
135 static val* varonce66;
136 val* var67 /* : String */;
137 char* var68 /* : NativeString */;
138 long var69 /* : Int */;
139 val* var70 /* : String */;
140 val* var71 /* : String */;
141 static val* varonce72;
142 val* var73 /* : String */;
143 char* var74 /* : NativeString */;
144 long var75 /* : Int */;
145 val* var76 /* : String */;
146 val* var77 /* : Location */;
147 val* var78 /* : Array[Object] */;
148 long var79 /* : Int */;
149 val* var80 /* : NativeArray[Object] */;
150 val* var81 /* : String */;
151 long var82 /* : Int */;
152 val* var83 /* : ToolContext */;
153 short int var84 /* : Bool */;
154 val* var85 /* : ANodes[APropdef] */;
155 val* var86 /* : Iterator[nullable Object] */;
156 short int var87 /* : Bool */;
157 val* var88 /* : nullable Object */;
158 val* var_npropdef /* var npropdef: APropdef */;
159 val* var89 /* : ToolContext */;
160 short int var90 /* : Bool */;
161 long var93 /* : Int */;
162 short int var94 /* : Bool */;
163 short int var96 /* : Bool */;
164 short int var97 /* : Bool */;
165 val* var98 /* : AnnotationPhaseVisitor */;
166 val* var_v /* var v: AnnotationPhaseVisitor */;
167 long var99 /* : Int */;
168 short int var100 /* : Bool */;
169 short int var102 /* : Bool */;
170 short int var103 /* : Bool */;
171 long var105 /* : Int */;
172 long var_time1 /* var time1: Int */;
173 static val* varonce106;
174 val* var107 /* : String */;
175 char* var108 /* : NativeString */;
176 long var109 /* : Int */;
177 val* var110 /* : String */;
178 long var111 /* : Int */;
179 long var113 /* : Int */;
180 static val* varonce114;
181 val* var115 /* : String */;
182 char* var116 /* : NativeString */;
183 long var117 /* : Int */;
184 val* var118 /* : String */;
185 val* var119 /* : Array[Object] */;
186 long var120 /* : Int */;
187 val* var121 /* : NativeArray[Object] */;
188 val* var122 /* : Object */;
189 val* var123 /* : String */;
190 long var124 /* : Int */;
191 var_nmodules = p0;
192 var = ((long (*)(val*))(self->class->vft[COLOR_time__Object__get_time]))(self) /* get_time on <self:ToolContext>*/;
193 var_time0 = var;
194 if (varonce) {
195 var1 = varonce;
196 } else {
197 var2 = "*** SEMANTIC ANALYSIS ***";
198 var3 = 25;
199 var4 = string__NativeString__to_s_with_length(var2, var3);
200 var1 = var4;
201 varonce = var1;
202 }
203 var5 = 1;
204 ((void (*)(val*, val*, long))(self->class->vft[COLOR_toolcontext__ToolContext__info]))(self, var1, var5) /* info on <self:ToolContext>*/;
205 var6 = ((val* (*)(val*))(self->class->vft[COLOR_phase__ToolContext__phases_list]))(self) /* phases_list on <self:ToolContext>*/;
206 var_phases = var6;
207 var7 = ((val* (*)(val*))(var_phases->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_phases) /* iterator on <var_phases:Sequence[Phase]>*/;
208 for(;;) {
209 var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on <var7:Iterator[nullable Object]>*/;
210 if(!var8) break;
211 var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
212 var_phase = var9;
213 if (varonce10) {
214 var11 = varonce10;
215 } else {
216 var12 = " registered phases: ";
217 var13 = 20;
218 var14 = string__NativeString__to_s_with_length(var12, var13);
219 var11 = var14;
220 varonce10 = var11;
221 }
222 var15 = ((val* (*)(val*))(var_phase->class->vft[COLOR_string__Object__class_name]))(var_phase) /* class_name on <var_phase:Phase>*/;
223 var16 = NEW_array__Array(&type_array__Arraykernel__Object);
224 { /* var16 = array_instance Array[Object] */
225 var17 = 2;
226 var18 = NEW_array__NativeArray(var17, &type_array__NativeArraykernel__Object);
227 ((struct instance_array__NativeArray*)var18)->values[0] = (val*) var11;
228 ((struct instance_array__NativeArray*)var18)->values[1] = (val*) var15;
229 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[Object]>*/;
230 CHECK_NEW_array__Array(var16);
231 }
232 var19 = ((val* (*)(val*))(var16->class->vft[COLOR_string__Object__to_s]))(var16) /* to_s on <var16:Array[Object]>*/;
233 var20 = 2;
234 ((void (*)(val*, val*, long))(self->class->vft[COLOR_toolcontext__ToolContext__info]))(self, var19, var20) /* info on <self:ToolContext>*/;
235 CONTINUE_label: (void)0;
236 ((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
237 }
238 BREAK_label: (void)0;
239 var21 = ((val* (*)(val*))(var_nmodules->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_nmodules) /* iterator on <var_nmodules:Collection[AModule]>*/;
240 for(;;) {
241 var22 = ((short int (*)(val*))(var21->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var21) /* is_ok on <var21:Iterator[nullable Object]>*/;
242 if(!var22) break;
243 var23 = ((val* (*)(val*))(var21->class->vft[COLOR_abstract_collection__Iterator__item]))(var21) /* item on <var21:Iterator[nullable Object]>*/;
244 var_nmodule = var23;
245 if (varonce24) {
246 var25 = varonce24;
247 } else {
248 var26 = "Semantic analysis module ";
249 var27 = 25;
250 var28 = string__NativeString__to_s_with_length(var26, var27);
251 var25 = var28;
252 varonce24 = var25;
253 }
254 var29 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__ANode__location]))(var_nmodule) /* location on <var_nmodule:AModule>*/;
255 var30 = ((val* (*)(val*))(var29->class->vft[COLOR_location__Location__file]))(var29) /* file on <var29:Location>*/;
256 if (var30 == NULL) {
257 fprintf(stderr, "Runtime error: %s", "Reciever is null");
258 fprintf(stderr, " (%s:%d)\n", "src/phase.nit", 51);
259 exit(1);
260 } else {
261 var31 = ((val* (*)(val*))(var30->class->vft[COLOR_location__SourceFile__filename]))(var30) /* filename on <var30:nullable SourceFile>*/;
262 }
263 var32 = NEW_array__Array(&type_array__Arraykernel__Object);
264 { /* var32 = array_instance Array[Object] */
265 var33 = 2;
266 var34 = NEW_array__NativeArray(var33, &type_array__NativeArraykernel__Object);
267 ((struct instance_array__NativeArray*)var34)->values[0] = (val*) var25;
268 ((struct instance_array__NativeArray*)var34)->values[1] = (val*) var31;
269 ((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[Object]>*/;
270 CHECK_NEW_array__Array(var32);
271 }
272 var35 = ((val* (*)(val*))(var32->class->vft[COLOR_string__Object__to_s]))(var32) /* to_s on <var32:Array[Object]>*/;
273 var36 = 2;
274 ((void (*)(val*, val*, long))(self->class->vft[COLOR_toolcontext__ToolContext__info]))(self, var35, var36) /* info on <self:ToolContext>*/;
275 var37 = ((val* (*)(val*))(var_phases->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_phases) /* iterator on <var_phases:Sequence[Phase]>*/;
276 for(;;) {
277 var38 = ((short int (*)(val*))(var37->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var37) /* is_ok on <var37:Iterator[nullable Object]>*/;
278 if(!var38) break;
279 var39 = ((val* (*)(val*))(var37->class->vft[COLOR_abstract_collection__Iterator__item]))(var37) /* item on <var37:Iterator[nullable Object]>*/;
280 var_phase40 = var39;
281 if (varonce41) {
282 var42 = varonce41;
283 } else {
284 var43 = " phase: ";
285 var44 = 8;
286 var45 = string__NativeString__to_s_with_length(var43, var44);
287 var42 = var45;
288 varonce41 = var42;
289 }
290 var46 = ((val* (*)(val*))(var_phase40->class->vft[COLOR_string__Object__class_name]))(var_phase40) /* class_name on <var_phase40:Phase>*/;
291 var47 = NEW_array__Array(&type_array__Arraykernel__Object);
292 { /* var47 = array_instance Array[Object] */
293 var48 = 2;
294 var49 = NEW_array__NativeArray(var48, &type_array__NativeArraykernel__Object);
295 ((struct instance_array__NativeArray*)var49)->values[0] = (val*) var42;
296 ((struct instance_array__NativeArray*)var49)->values[1] = (val*) var46;
297 ((void (*)(val*, val*, long))(var47->class->vft[COLOR_array__Array__with_native]))(var47, var49, var48) /* with_native on <var47:Array[Object]>*/;
298 CHECK_NEW_array__Array(var47);
299 }
300 var50 = ((val* (*)(val*))(var47->class->vft[COLOR_string__Object__to_s]))(var47) /* to_s on <var47:Array[Object]>*/;
301 var51 = 3;
302 ((void (*)(val*, val*, long))(self->class->vft[COLOR_toolcontext__ToolContext__info]))(self, var50, var51) /* info on <self:ToolContext>*/;
303 var52 = ((val* (*)(val*))(var_phase40->class->vft[COLOR_phase__Phase__toolcontext]))(var_phase40) /* toolcontext on <var_phase40:Phase>*/;
304 var53 = ((short int (*)(val*, val*))(var52->class->vft[COLOR_kernel__Object___61d_61d]))(var52, self) /* == on <var52:ToolContext>*/;
305 if (!var53) {
306 fprintf(stderr, "Runtime error: %s", "Assert failed");
307 fprintf(stderr, " (%s:%d)\n", "src/phase.nit", 54);
308 exit(1);
309 }
310 var54 = ((long (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__error_count]))(self) /* error_count on <self:ToolContext>*/;
311 var_errcount = var54;
312 ((void (*)(val*, val*))(var_phase40->class->vft[COLOR_phase__Phase__process_nmodule]))(var_phase40, var_nmodule) /* process_nmodule on <var_phase40:Phase>*/;
313 var55 = ((long (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__error_count]))(self) /* error_count on <self:ToolContext>*/;
314 { /* Inline kernel#Int#!= (var_errcount,var55) */
315 var58 = var_errcount == var55;
316 var59 = !var58;
317 var56 = var59;
318 goto RET_LABEL57;
319 RET_LABEL57:(void)0;
320 }
321 if (var56){
322 ((void (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__check_errors]))(self) /* check_errors on <self:ToolContext>*/;
323 goto BREAK_label60;
324 } else {
325 }
326 var61 = ((long (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__error_count]))(self) /* error_count on <self:ToolContext>*/;
327 var_errcount = var61;
328 var62 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__AModule__n_classdefs]))(var_nmodule) /* n_classdefs on <var_nmodule:AModule>*/;
329 var63 = ((val* (*)(val*))(var62->class->vft[COLOR_abstract_collection__Collection__iterator]))(var62) /* iterator on <var62:ANodes[AClassdef]>*/;
330 for(;;) {
331 var64 = ((short int (*)(val*))(var63->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var63) /* is_ok on <var63:Iterator[nullable Object]>*/;
332 if(!var64) break;
333 var65 = ((val* (*)(val*))(var63->class->vft[COLOR_abstract_collection__Iterator__item]))(var63) /* item on <var63:Iterator[nullable Object]>*/;
334 var_nclassdef = var65;
335 if (varonce66) {
336 var67 = varonce66;
337 } else {
338 var68 = " phase: ";
339 var69 = 8;
340 var70 = string__NativeString__to_s_with_length(var68, var69);
341 var67 = var70;
342 varonce66 = var67;
343 }
344 var71 = ((val* (*)(val*))(var_phase40->class->vft[COLOR_string__Object__class_name]))(var_phase40) /* class_name on <var_phase40:Phase>*/;
345 if (varonce72) {
346 var73 = varonce72;
347 } else {
348 var74 = " for ";
349 var75 = 5;
350 var76 = string__NativeString__to_s_with_length(var74, var75);
351 var73 = var76;
352 varonce72 = var73;
353 }
354 var77 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__ANode__location]))(var_nclassdef) /* location on <var_nclassdef:AClassdef>*/;
355 var78 = NEW_array__Array(&type_array__Arraykernel__Object);
356 { /* var78 = array_instance Array[Object] */
357 var79 = 4;
358 var80 = NEW_array__NativeArray(var79, &type_array__NativeArraykernel__Object);
359 ((struct instance_array__NativeArray*)var80)->values[0] = (val*) var67;
360 ((struct instance_array__NativeArray*)var80)->values[1] = (val*) var71;
361 ((struct instance_array__NativeArray*)var80)->values[2] = (val*) var73;
362 ((struct instance_array__NativeArray*)var80)->values[3] = (val*) var77;
363 ((void (*)(val*, val*, long))(var78->class->vft[COLOR_array__Array__with_native]))(var78, var80, var79) /* with_native on <var78:Array[Object]>*/;
364 CHECK_NEW_array__Array(var78);
365 }
366 var81 = ((val* (*)(val*))(var78->class->vft[COLOR_string__Object__to_s]))(var78) /* to_s on <var78:Array[Object]>*/;
367 var82 = 3;
368 ((void (*)(val*, val*, long))(self->class->vft[COLOR_toolcontext__ToolContext__info]))(self, var81, var82) /* info on <self:ToolContext>*/;
369 var83 = ((val* (*)(val*))(var_phase40->class->vft[COLOR_phase__Phase__toolcontext]))(var_phase40) /* toolcontext on <var_phase40:Phase>*/;
370 var84 = ((short int (*)(val*, val*))(var83->class->vft[COLOR_kernel__Object___61d_61d]))(var83, self) /* == on <var83:ToolContext>*/;
371 if (!var84) {
372 fprintf(stderr, "Runtime error: %s", "Assert failed");
373 fprintf(stderr, " (%s:%d)\n", "src/phase.nit", 64);
374 exit(1);
375 }
376 ((void (*)(val*, val*))(var_phase40->class->vft[COLOR_phase__Phase__process_nclassdef]))(var_phase40, var_nclassdef) /* process_nclassdef on <var_phase40:Phase>*/;
377 var85 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__AClassdef__n_propdefs]))(var_nclassdef) /* n_propdefs on <var_nclassdef:AClassdef>*/;
378 var86 = ((val* (*)(val*))(var85->class->vft[COLOR_abstract_collection__Collection__iterator]))(var85) /* iterator on <var85:ANodes[APropdef]>*/;
379 for(;;) {
380 var87 = ((short int (*)(val*))(var86->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var86) /* is_ok on <var86:Iterator[nullable Object]>*/;
381 if(!var87) break;
382 var88 = ((val* (*)(val*))(var86->class->vft[COLOR_abstract_collection__Iterator__item]))(var86) /* item on <var86:Iterator[nullable Object]>*/;
383 var_npropdef = var88;
384 var89 = ((val* (*)(val*))(var_phase40->class->vft[COLOR_phase__Phase__toolcontext]))(var_phase40) /* toolcontext on <var_phase40:Phase>*/;
385 var90 = ((short int (*)(val*, val*))(var89->class->vft[COLOR_kernel__Object___61d_61d]))(var89, self) /* == on <var89:ToolContext>*/;
386 if (!var90) {
387 fprintf(stderr, "Runtime error: %s", "Assert failed");
388 fprintf(stderr, " (%s:%d)\n", "src/phase.nit", 67);
389 exit(1);
390 }
391 ((void (*)(val*, val*))(var_phase40->class->vft[COLOR_phase__Phase__process_npropdef]))(var_phase40, var_npropdef) /* process_npropdef on <var_phase40:Phase>*/;
392 CONTINUE_label91: (void)0;
393 ((void (*)(val*))(var86->class->vft[COLOR_abstract_collection__Iterator__next]))(var86) /* next on <var86:Iterator[nullable Object]>*/;
394 }
395 BREAK_label91: (void)0;
396 CONTINUE_label92: (void)0;
397 ((void (*)(val*))(var63->class->vft[COLOR_abstract_collection__Iterator__next]))(var63) /* next on <var63:Iterator[nullable Object]>*/;
398 }
399 BREAK_label92: (void)0;
400 var93 = ((long (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__error_count]))(self) /* error_count on <self:ToolContext>*/;
401 { /* Inline kernel#Int#!= (var_errcount,var93) */
402 var96 = var_errcount == var93;
403 var97 = !var96;
404 var94 = var97;
405 goto RET_LABEL95;
406 RET_LABEL95:(void)0;
407 }
408 if (var94){
409 ((void (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__check_errors]))(self) /* check_errors on <self:ToolContext>*/;
410 goto BREAK_label60;
411 } else {
412 }
413 var98 = NEW_phase__AnnotationPhaseVisitor(&type_phase__AnnotationPhaseVisitor);
414 ((void (*)(val*, val*))(var98->class->vft[COLOR_phase__AnnotationPhaseVisitor__init]))(var98, var_phase40) /* init on <var98:AnnotationPhaseVisitor>*/;
415 CHECK_NEW_phase__AnnotationPhaseVisitor(var98);
416 var_v = var98;
417 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var_nmodule) /* enter_visit on <var_v:AnnotationPhaseVisitor>*/;
418 var99 = ((long (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__error_count]))(self) /* error_count on <self:ToolContext>*/;
419 { /* Inline kernel#Int#!= (var_errcount,var99) */
420 var102 = var_errcount == var99;
421 var103 = !var102;
422 var100 = var103;
423 goto RET_LABEL101;
424 RET_LABEL101:(void)0;
425 }
426 if (var100){
427 ((void (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__check_errors]))(self) /* check_errors on <self:ToolContext>*/;
428 goto BREAK_label60;
429 } else {
430 }
431 CONTINUE_label60: (void)0;
432 ((void (*)(val*))(var37->class->vft[COLOR_abstract_collection__Iterator__next]))(var37) /* next on <var37:Iterator[nullable Object]>*/;
433 }
434 BREAK_label60: (void)0;
435 ((void (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__check_errors]))(self) /* check_errors on <self:ToolContext>*/;
436 CONTINUE_label104: (void)0;
437 ((void (*)(val*))(var21->class->vft[COLOR_abstract_collection__Iterator__next]))(var21) /* next on <var21:Iterator[nullable Object]>*/;
438 }
439 BREAK_label104: (void)0;
440 var105 = ((long (*)(val*))(self->class->vft[COLOR_time__Object__get_time]))(self) /* get_time on <self:ToolContext>*/;
441 var_time1 = var105;
442 if (varonce106) {
443 var107 = varonce106;
444 } else {
445 var108 = "*** END SEMANTIC ANALYSIS: ";
446 var109 = 27;
447 var110 = string__NativeString__to_s_with_length(var108, var109);
448 var107 = var110;
449 varonce106 = var107;
450 }
451 { /* Inline kernel#Int#- (var_time1,var_time0) */
452 var113 = var_time1 - var_time0;
453 var111 = var113;
454 goto RET_LABEL112;
455 RET_LABEL112:(void)0;
456 }
457 if (varonce114) {
458 var115 = varonce114;
459 } else {
460 var116 = " ***";
461 var117 = 4;
462 var118 = string__NativeString__to_s_with_length(var116, var117);
463 var115 = var118;
464 varonce114 = var115;
465 }
466 var119 = NEW_array__Array(&type_array__Arraykernel__Object);
467 { /* var119 = array_instance Array[Object] */
468 var120 = 3;
469 var121 = NEW_array__NativeArray(var120, &type_array__NativeArraykernel__Object);
470 ((struct instance_array__NativeArray*)var121)->values[0] = (val*) var107;
471 var122 = BOX_kernel__Int(var111); /* autobox from Int to Object */
472 ((struct instance_array__NativeArray*)var121)->values[1] = (val*) var122;
473 ((struct instance_array__NativeArray*)var121)->values[2] = (val*) var115;
474 ((void (*)(val*, val*, long))(var119->class->vft[COLOR_array__Array__with_native]))(var119, var121, var120) /* with_native on <var119:Array[Object]>*/;
475 CHECK_NEW_array__Array(var119);
476 }
477 var123 = ((val* (*)(val*))(var119->class->vft[COLOR_string__Object__to_s]))(var119) /* to_s on <var119:Array[Object]>*/;
478 var124 = 2;
479 ((void (*)(val*, val*, long))(self->class->vft[COLOR_toolcontext__ToolContext__info]))(self, var123, var124) /* info on <self:ToolContext>*/;
480 RET_LABEL:;
481 }
482 /* method phase#ToolContext#run_phases for (self: Object, Collection[AModule]) */
483 void VIRTUAL_phase__ToolContext__run_phases(val* self, val* p0) {
484 phase__ToolContext__run_phases(self, p0);
485 RET_LABEL:;
486 }
487 /* method phase#AnnotationPhaseVisitor#phase for (self: AnnotationPhaseVisitor): Phase */
488 val* phase__AnnotationPhaseVisitor__phase(val* self) {
489 val* var /* : Phase */;
490 val* var1 /* : Phase */;
491 var1 = self->attrs[COLOR_phase__AnnotationPhaseVisitor___64dphase].val; /* @phase on <self:AnnotationPhaseVisitor> */
492 if (var1 == NULL) {
493 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @phase");
494 fprintf(stderr, " (%s:%d)\n", "src/phase.nit", 93);
495 exit(1);
496 }
497 var = var1;
498 RET_LABEL:;
499 return var;
500 }
501 /* method phase#AnnotationPhaseVisitor#phase for (self: Object): Phase */
502 val* VIRTUAL_phase__AnnotationPhaseVisitor__phase(val* self) {
503 val* var /* : Phase */;
504 val* var1 /* : Phase */;
505 var1 = phase__AnnotationPhaseVisitor__phase(self);
506 var = var1;
507 RET_LABEL:;
508 return var;
509 }
510 /* method phase#AnnotationPhaseVisitor#phase= for (self: AnnotationPhaseVisitor, Phase) */
511 void phase__AnnotationPhaseVisitor__phase_61d(val* self, val* p0) {
512 self->attrs[COLOR_phase__AnnotationPhaseVisitor___64dphase].val = p0; /* @phase on <self:AnnotationPhaseVisitor> */
513 RET_LABEL:;
514 }
515 /* method phase#AnnotationPhaseVisitor#phase= for (self: Object, Phase) */
516 void VIRTUAL_phase__AnnotationPhaseVisitor__phase_61d(val* self, val* p0) {
517 phase__AnnotationPhaseVisitor__phase_61d(self, p0);
518 RET_LABEL:;
519 }
520 /* method phase#AnnotationPhaseVisitor#init for (self: AnnotationPhaseVisitor, Phase) */
521 void phase__AnnotationPhaseVisitor__init(val* self, val* p0) {
522 val* var_phase /* var phase: Phase */;
523 var_phase = p0;
524 ((void (*)(val*))(self->class->vft[COLOR_parser_nodes__Visitor__init]))(self) /* init on <self:AnnotationPhaseVisitor>*/;
525 ((void (*)(val*, val*))(self->class->vft[COLOR_phase__AnnotationPhaseVisitor__phase_61d]))(self, var_phase) /* phase= on <self:AnnotationPhaseVisitor>*/;
526 RET_LABEL:;
527 }
528 /* method phase#AnnotationPhaseVisitor#init for (self: Object, Phase) */
529 void VIRTUAL_phase__AnnotationPhaseVisitor__init(val* self, val* p0) {
530 phase__AnnotationPhaseVisitor__init(self, p0);
531 RET_LABEL:;
532 }
533 /* method phase#AnnotationPhaseVisitor#visit for (self: AnnotationPhaseVisitor, ANode) */
534 void phase__AnnotationPhaseVisitor__visit(val* self, val* p0) {
535 val* var_n /* var n: ANode */;
536 short int var /* : Bool */;
537 int cltype;
538 int idtype;
539 val* var1 /* : Phase */;
540 val* var2 /* : nullable ANode */;
541 val* var3 /* : nullable ANode */;
542 var_n = p0;
543 ((void (*)(val*, val*))(var_n->class->vft[COLOR_parser_nodes__ANode__visit_all]))(var_n, self) /* visit_all on <var_n:ANode>*/;
544 /* <var_n:ANode> isa AAnnotation */
545 cltype = type_parser_nodes__AAnnotation.color;
546 idtype = type_parser_nodes__AAnnotation.id;
547 if(cltype >= var_n->type->table_size) {
548 var = 0;
549 } else {
550 var = var_n->type->type_table[cltype] == idtype;
551 }
552 if (var){
553 var1 = ((val* (*)(val*))(self->class->vft[COLOR_phase__AnnotationPhaseVisitor__phase]))(self) /* phase on <self:AnnotationPhaseVisitor>*/;
554 var2 = ((val* (*)(val*))(var_n->class->vft[COLOR_parser_nodes__ANode__parent]))(var_n) /* parent on <var_n:ANode(AAnnotation)>*/;
555 if (var2 == NULL) {
556 fprintf(stderr, "Runtime error: %s", "Reciever is null");
557 fprintf(stderr, " (%s:%d)\n", "src/phase.nit", 100);
558 exit(1);
559 } else {
560 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_parser_nodes__ANode__parent]))(var2) /* parent on <var2:nullable ANode>*/;
561 }
562 if (var3 == NULL) {
563 fprintf(stderr, "Runtime error: %s", "Cast failed");
564 fprintf(stderr, " (%s:%d)\n", "src/phase.nit", 100);
565 exit(1);
566 }
567 ((void (*)(val*, val*, val*))(var1->class->vft[COLOR_phase__Phase__process_annotated_node]))(var1, var3, var_n) /* process_annotated_node on <var1:Phase>*/;
568 } else {
569 }
570 RET_LABEL:;
571 }
572 /* method phase#AnnotationPhaseVisitor#visit for (self: Object, ANode) */
573 void VIRTUAL_phase__AnnotationPhaseVisitor__visit(val* self, val* p0) {
574 phase__AnnotationPhaseVisitor__visit(self, p0);
575 RET_LABEL:;
576 }
577 /* method phase#Phase#toolcontext for (self: Phase): ToolContext */
578 val* phase__Phase__toolcontext(val* self) {
579 val* var /* : ToolContext */;
580 val* var1 /* : ToolContext */;
581 var1 = self->attrs[COLOR_phase__Phase___64dtoolcontext].val; /* @toolcontext on <self:Phase> */
582 if (var1 == NULL) {
583 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @toolcontext");
584 fprintf(stderr, " (%s:%d)\n", "src/phase.nit", 107);
585 exit(1);
586 }
587 var = var1;
588 RET_LABEL:;
589 return var;
590 }
591 /* method phase#Phase#toolcontext for (self: Object): ToolContext */
592 val* VIRTUAL_phase__Phase__toolcontext(val* self) {
593 val* var /* : ToolContext */;
594 val* var1 /* : ToolContext */;
595 var1 = phase__Phase__toolcontext(self);
596 var = var1;
597 RET_LABEL:;
598 return var;
599 }
600 /* method phase#Phase#toolcontext= for (self: Phase, ToolContext) */
601 void phase__Phase__toolcontext_61d(val* self, val* p0) {
602 self->attrs[COLOR_phase__Phase___64dtoolcontext].val = p0; /* @toolcontext on <self:Phase> */
603 RET_LABEL:;
604 }
605 /* method phase#Phase#toolcontext= for (self: Object, ToolContext) */
606 void VIRTUAL_phase__Phase__toolcontext_61d(val* self, val* p0) {
607 phase__Phase__toolcontext_61d(self, p0);
608 RET_LABEL:;
609 }
610 /* method phase#Phase#in_hierarchy for (self: Phase): POSetElement[Phase] */
611 val* phase__Phase__in_hierarchy(val* self) {
612 val* var /* : POSetElement[Phase] */;
613 val* var1 /* : POSetElement[Phase] */;
614 var1 = self->attrs[COLOR_phase__Phase___64din_hierarchy].val; /* @in_hierarchy on <self:Phase> */
615 if (var1 == NULL) {
616 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @in_hierarchy");
617 fprintf(stderr, " (%s:%d)\n", "src/phase.nit", 110);
618 exit(1);
619 }
620 var = var1;
621 RET_LABEL:;
622 return var;
623 }
624 /* method phase#Phase#in_hierarchy for (self: Object): POSetElement[Phase] */
625 val* VIRTUAL_phase__Phase__in_hierarchy(val* self) {
626 val* var /* : POSetElement[Phase] */;
627 val* var1 /* : POSetElement[Phase] */;
628 var1 = phase__Phase__in_hierarchy(self);
629 var = var1;
630 RET_LABEL:;
631 return var;
632 }
633 /* method phase#Phase#in_hierarchy= for (self: Phase, POSetElement[Phase]) */
634 void phase__Phase__in_hierarchy_61d(val* self, val* p0) {
635 self->attrs[COLOR_phase__Phase___64din_hierarchy].val = p0; /* @in_hierarchy on <self:Phase> */
636 RET_LABEL:;
637 }
638 /* method phase#Phase#in_hierarchy= for (self: Object, POSetElement[Phase]) */
639 void VIRTUAL_phase__Phase__in_hierarchy_61d(val* self, val* p0) {
640 phase__Phase__in_hierarchy_61d(self, p0);
641 RET_LABEL:;
642 }
643 /* method phase#Phase#init for (self: Phase, ToolContext, nullable Collection[Phase]) */
644 void phase__Phase__init(val* self, val* p0, val* p1) {
645 val* var_toolcontext /* var toolcontext: ToolContext */;
646 val* var_depends /* var depends: nullable Collection[Phase] */;
647 val* var /* : POSet[Phase] */;
648 val* var1 /* : POSetElement[Object] */;
649 val* var2 /* : null */;
650 short int var3 /* : Bool */;
651 val* var4 /* : Iterator[nullable Object] */;
652 short int var5 /* : Bool */;
653 val* var6 /* : nullable Object */;
654 val* var_d /* var d: Phase */;
655 val* var7 /* : POSet[Phase] */;
656 var_toolcontext = p0;
657 var_depends = p1;
658 ((void (*)(val*, val*))(self->class->vft[COLOR_phase__Phase__toolcontext_61d]))(self, var_toolcontext) /* toolcontext= on <self:Phase>*/;
659 var = ((val* (*)(val*))(var_toolcontext->class->vft[COLOR_phase__ToolContext__phases]))(var_toolcontext) /* phases on <var_toolcontext:ToolContext>*/;
660 var1 = ((val* (*)(val*, val*))(var->class->vft[COLOR_poset__POSet__add_node]))(var, self) /* add_node on <var:POSet[Phase]>*/;
661 ((void (*)(val*, val*))(self->class->vft[COLOR_phase__Phase__in_hierarchy_61d]))(self, var1) /* in_hierarchy= on <self:Phase>*/;
662 var2 = NULL;
663 if (var_depends == NULL) {
664 var3 = 0; /* is null */
665 } else {
666 var3 = 1; /* arg is null and recv is not */
667 }
668 if (var3){
669 var4 = ((val* (*)(val*))(var_depends->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_depends) /* iterator on <var_depends:nullable Collection[Phase](Collection[Phase])>*/;
670 for(;;) {
671 var5 = ((short int (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var4) /* is_ok on <var4:Iterator[nullable Object]>*/;
672 if(!var5) break;
673 var6 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__item]))(var4) /* item on <var4:Iterator[nullable Object]>*/;
674 var_d = var6;
675 var7 = ((val* (*)(val*))(var_toolcontext->class->vft[COLOR_phase__ToolContext__phases]))(var_toolcontext) /* phases on <var_toolcontext:ToolContext>*/;
676 ((void (*)(val*, val*, val*))(var7->class->vft[COLOR_poset__POSet__add_edge]))(var7, self, var_d) /* add_edge on <var7:POSet[Phase]>*/;
677 CONTINUE_label: (void)0;
678 ((void (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__next]))(var4) /* next on <var4:Iterator[nullable Object]>*/;
679 }
680 BREAK_label: (void)0;
681 } else {
682 }
683 RET_LABEL:;
684 }
685 /* method phase#Phase#init for (self: Object, ToolContext, nullable Collection[Phase]) */
686 void VIRTUAL_phase__Phase__init(val* self, val* p0, val* p1) {
687 phase__Phase__init(self, p0, p1);
688 RET_LABEL:;
689 }
690 /* method phase#Phase#process_nmodule for (self: Phase, AModule) */
691 void phase__Phase__process_nmodule(val* self, val* p0) {
692 val* var_nmodule /* var nmodule: AModule */;
693 var_nmodule = p0;
694 RET_LABEL:;
695 }
696 /* method phase#Phase#process_nmodule for (self: Object, AModule) */
697 void VIRTUAL_phase__Phase__process_nmodule(val* self, val* p0) {
698 phase__Phase__process_nmodule(self, p0);
699 RET_LABEL:;
700 }
701 /* method phase#Phase#process_nclassdef for (self: Phase, AClassdef) */
702 void phase__Phase__process_nclassdef(val* self, val* p0) {
703 val* var_nclassdef /* var nclassdef: AClassdef */;
704 var_nclassdef = p0;
705 RET_LABEL:;
706 }
707 /* method phase#Phase#process_nclassdef for (self: Object, AClassdef) */
708 void VIRTUAL_phase__Phase__process_nclassdef(val* self, val* p0) {
709 phase__Phase__process_nclassdef(self, p0);
710 RET_LABEL:;
711 }
712 /* method phase#Phase#process_npropdef for (self: Phase, APropdef) */
713 void phase__Phase__process_npropdef(val* self, val* p0) {
714 val* var_npropdef /* var npropdef: APropdef */;
715 var_npropdef = p0;
716 RET_LABEL:;
717 }
718 /* method phase#Phase#process_npropdef for (self: Object, APropdef) */
719 void VIRTUAL_phase__Phase__process_npropdef(val* self, val* p0) {
720 phase__Phase__process_npropdef(self, p0);
721 RET_LABEL:;
722 }
723 /* method phase#Phase#process_annotated_node for (self: Phase, ANode, AAnnotation) */
724 void phase__Phase__process_annotated_node(val* self, val* p0, val* p1) {
725 val* var_node /* var node: ANode */;
726 val* var_nat /* var nat: AAnnotation */;
727 var_node = p0;
728 var_nat = p1;
729 RET_LABEL:;
730 }
731 /* method phase#Phase#process_annotated_node for (self: Object, ANode, AAnnotation) */
732 void VIRTUAL_phase__Phase__process_annotated_node(val* self, val* p0, val* p1) {
733 phase__Phase__process_annotated_node(self, p0, p1);
734 RET_LABEL:;
735 }