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