example: intro an emscripten wrapper around fibonacci
[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 show_backtrace(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 }
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", "Receiver is null");
257 fprintf(stderr, " (%s:%d)\n", "src/phase.nit", 51);
258 show_backtrace(1);
259 } else {
260 var31 = ((val* (*)(val*))(var30->class->vft[COLOR_location__SourceFile__filename]))(var30) /* filename on <var30:nullable SourceFile>*/;
261 }
262 var32 = NEW_array__Array(&type_array__Arraykernel__Object);
263 { /* var32 = array_instance Array[Object] */
264 var33 = 2;
265 var34 = NEW_array__NativeArray(var33, &type_array__NativeArraykernel__Object);
266 ((struct instance_array__NativeArray*)var34)->values[0] = (val*) var25;
267 ((struct instance_array__NativeArray*)var34)->values[1] = (val*) var31;
268 ((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[Object]>*/;
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 }
297 var50 = ((val* (*)(val*))(var47->class->vft[COLOR_string__Object__to_s]))(var47) /* to_s on <var47:Array[Object]>*/;
298 var51 = 3;
299 ((void (*)(val*, val*, long))(self->class->vft[COLOR_toolcontext__ToolContext__info]))(self, var50, var51) /* info on <self:ToolContext>*/;
300 var52 = ((val* (*)(val*))(var_phase40->class->vft[COLOR_phase__Phase__toolcontext]))(var_phase40) /* toolcontext on <var_phase40:Phase>*/;
301 var53 = ((short int (*)(val*, val*))(var52->class->vft[COLOR_kernel__Object___61d_61d]))(var52, self) /* == on <var52:ToolContext>*/;
302 if (!var53) {
303 fprintf(stderr, "Runtime error: %s", "Assert failed");
304 fprintf(stderr, " (%s:%d)\n", "src/phase.nit", 54);
305 show_backtrace(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 }
362 var81 = ((val* (*)(val*))(var78->class->vft[COLOR_string__Object__to_s]))(var78) /* to_s on <var78:Array[Object]>*/;
363 var82 = 3;
364 ((void (*)(val*, val*, long))(self->class->vft[COLOR_toolcontext__ToolContext__info]))(self, var81, var82) /* info on <self:ToolContext>*/;
365 var83 = ((val* (*)(val*))(var_phase40->class->vft[COLOR_phase__Phase__toolcontext]))(var_phase40) /* toolcontext on <var_phase40:Phase>*/;
366 var84 = ((short int (*)(val*, val*))(var83->class->vft[COLOR_kernel__Object___61d_61d]))(var83, self) /* == on <var83:ToolContext>*/;
367 if (!var84) {
368 fprintf(stderr, "Runtime error: %s", "Assert failed");
369 fprintf(stderr, " (%s:%d)\n", "src/phase.nit", 64);
370 show_backtrace(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", "Assert failed");
384 fprintf(stderr, " (%s:%d)\n", "src/phase.nit", 67);
385 show_backtrace(1);
386 }
387 ((void (*)(val*, val*))(var_phase40->class->vft[COLOR_phase__Phase__process_npropdef]))(var_phase40, var_npropdef) /* process_npropdef on <var_phase40:Phase>*/;
388 CONTINUE_label91: (void)0;
389 ((void (*)(val*))(var86->class->vft[COLOR_abstract_collection__Iterator__next]))(var86) /* next on <var86:Iterator[nullable Object]>*/;
390 }
391 BREAK_label91: (void)0;
392 CONTINUE_label92: (void)0;
393 ((void (*)(val*))(var63->class->vft[COLOR_abstract_collection__Iterator__next]))(var63) /* next on <var63:Iterator[nullable Object]>*/;
394 }
395 BREAK_label92: (void)0;
396 var93 = ((long (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__error_count]))(self) /* error_count on <self:ToolContext>*/;
397 { /* Inline kernel#Int#!= (var_errcount,var93) */
398 var96 = var_errcount == var93;
399 var97 = !var96;
400 var94 = var97;
401 goto RET_LABEL95;
402 RET_LABEL95:(void)0;
403 }
404 if (var94){
405 ((void (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__check_errors]))(self) /* check_errors on <self:ToolContext>*/;
406 goto BREAK_label60;
407 } else {
408 }
409 var98 = NEW_phase__AnnotationPhaseVisitor(&type_phase__AnnotationPhaseVisitor);
410 ((void (*)(val*, val*))(var98->class->vft[COLOR_phase__AnnotationPhaseVisitor__init]))(var98, var_phase40) /* init on <var98:AnnotationPhaseVisitor>*/;
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 }
471 var123 = ((val* (*)(val*))(var119->class->vft[COLOR_string__Object__to_s]))(var119) /* to_s on <var119:Array[Object]>*/;
472 var124 = 2;
473 ((void (*)(val*, val*, long))(self->class->vft[COLOR_toolcontext__ToolContext__info]))(self, var123, var124) /* info on <self:ToolContext>*/;
474 RET_LABEL:;
475 }
476 /* method phase#ToolContext#run_phases for (self: Object, Collection[AModule]) */
477 void VIRTUAL_phase__ToolContext__run_phases(val* self, val* p0) {
478 phase__ToolContext__run_phases(self, p0);
479 RET_LABEL:;
480 }
481 /* method phase#AnnotationPhaseVisitor#phase for (self: AnnotationPhaseVisitor): Phase */
482 val* phase__AnnotationPhaseVisitor__phase(val* self) {
483 val* var /* : Phase */;
484 val* var1 /* : Phase */;
485 var1 = self->attrs[COLOR_phase__AnnotationPhaseVisitor___64dphase].val; /* @phase on <self:AnnotationPhaseVisitor> */
486 if (var1 == NULL) {
487 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @phase");
488 fprintf(stderr, " (%s:%d)\n", "src/phase.nit", 93);
489 show_backtrace(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", "Receiver is null");
551 fprintf(stderr, " (%s:%d)\n", "src/phase.nit", 100);
552 show_backtrace(1);
553 } else {
554 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_parser_nodes__ANode__parent]))(var2) /* parent on <var2:nullable ANode>*/;
555 }
556 if (var3 == NULL) {
557 fprintf(stderr, "Runtime error: %s", "Cast failed");
558 fprintf(stderr, " (%s:%d)\n", "src/phase.nit", 100);
559 show_backtrace(1);
560 }
561 ((void (*)(val*, val*, val*))(var1->class->vft[COLOR_phase__Phase__process_annotated_node]))(var1, var3, var_n) /* process_annotated_node on <var1:Phase>*/;
562 } else {
563 }
564 RET_LABEL:;
565 }
566 /* method phase#AnnotationPhaseVisitor#visit for (self: Object, ANode) */
567 void VIRTUAL_phase__AnnotationPhaseVisitor__visit(val* self, val* p0) {
568 phase__AnnotationPhaseVisitor__visit(self, p0);
569 RET_LABEL:;
570 }
571 /* method phase#Phase#toolcontext for (self: Phase): ToolContext */
572 val* phase__Phase__toolcontext(val* self) {
573 val* var /* : ToolContext */;
574 val* var1 /* : ToolContext */;
575 var1 = self->attrs[COLOR_phase__Phase___64dtoolcontext].val; /* @toolcontext on <self:Phase> */
576 if (var1 == NULL) {
577 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @toolcontext");
578 fprintf(stderr, " (%s:%d)\n", "src/phase.nit", 107);
579 show_backtrace(1);
580 }
581 var = var1;
582 RET_LABEL:;
583 return var;
584 }
585 /* method phase#Phase#toolcontext for (self: Object): ToolContext */
586 val* VIRTUAL_phase__Phase__toolcontext(val* self) {
587 val* var /* : ToolContext */;
588 val* var1 /* : ToolContext */;
589 var1 = phase__Phase__toolcontext(self);
590 var = var1;
591 RET_LABEL:;
592 return var;
593 }
594 /* method phase#Phase#toolcontext= for (self: Phase, ToolContext) */
595 void phase__Phase__toolcontext_61d(val* self, val* p0) {
596 self->attrs[COLOR_phase__Phase___64dtoolcontext].val = p0; /* @toolcontext on <self:Phase> */
597 RET_LABEL:;
598 }
599 /* method phase#Phase#toolcontext= for (self: Object, ToolContext) */
600 void VIRTUAL_phase__Phase__toolcontext_61d(val* self, val* p0) {
601 phase__Phase__toolcontext_61d(self, p0);
602 RET_LABEL:;
603 }
604 /* method phase#Phase#in_hierarchy for (self: Phase): POSetElement[Phase] */
605 val* phase__Phase__in_hierarchy(val* self) {
606 val* var /* : POSetElement[Phase] */;
607 val* var1 /* : POSetElement[Phase] */;
608 var1 = self->attrs[COLOR_phase__Phase___64din_hierarchy].val; /* @in_hierarchy on <self:Phase> */
609 if (var1 == NULL) {
610 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @in_hierarchy");
611 fprintf(stderr, " (%s:%d)\n", "src/phase.nit", 110);
612 show_backtrace(1);
613 }
614 var = var1;
615 RET_LABEL:;
616 return var;
617 }
618 /* method phase#Phase#in_hierarchy for (self: Object): POSetElement[Phase] */
619 val* VIRTUAL_phase__Phase__in_hierarchy(val* self) {
620 val* var /* : POSetElement[Phase] */;
621 val* var1 /* : POSetElement[Phase] */;
622 var1 = phase__Phase__in_hierarchy(self);
623 var = var1;
624 RET_LABEL:;
625 return var;
626 }
627 /* method phase#Phase#in_hierarchy= for (self: Phase, POSetElement[Phase]) */
628 void phase__Phase__in_hierarchy_61d(val* self, val* p0) {
629 self->attrs[COLOR_phase__Phase___64din_hierarchy].val = p0; /* @in_hierarchy on <self:Phase> */
630 RET_LABEL:;
631 }
632 /* method phase#Phase#in_hierarchy= for (self: Object, POSetElement[Phase]) */
633 void VIRTUAL_phase__Phase__in_hierarchy_61d(val* self, val* p0) {
634 phase__Phase__in_hierarchy_61d(self, p0);
635 RET_LABEL:;
636 }
637 /* method phase#Phase#init for (self: Phase, ToolContext, nullable Collection[Phase]) */
638 void phase__Phase__init(val* self, val* p0, val* p1) {
639 val* var_toolcontext /* var toolcontext: ToolContext */;
640 val* var_depends /* var depends: nullable Collection[Phase] */;
641 val* var /* : POSet[Phase] */;
642 val* var1 /* : POSetElement[Object] */;
643 val* var2 /* : null */;
644 short int var3 /* : Bool */;
645 val* var4 /* : Iterator[nullable Object] */;
646 short int var5 /* : Bool */;
647 val* var6 /* : nullable Object */;
648 val* var_d /* var d: Phase */;
649 val* var7 /* : POSet[Phase] */;
650 var_toolcontext = p0;
651 var_depends = p1;
652 ((void (*)(val*, val*))(self->class->vft[COLOR_phase__Phase__toolcontext_61d]))(self, var_toolcontext) /* toolcontext= on <self:Phase>*/;
653 var = ((val* (*)(val*))(var_toolcontext->class->vft[COLOR_phase__ToolContext__phases]))(var_toolcontext) /* phases on <var_toolcontext:ToolContext>*/;
654 var1 = ((val* (*)(val*, val*))(var->class->vft[COLOR_poset__POSet__add_node]))(var, self) /* add_node on <var:POSet[Phase]>*/;
655 ((void (*)(val*, val*))(self->class->vft[COLOR_phase__Phase__in_hierarchy_61d]))(self, var1) /* in_hierarchy= on <self:Phase>*/;
656 var2 = NULL;
657 if (var_depends == NULL) {
658 var3 = 0; /* is null */
659 } else {
660 var3 = 1; /* arg is null and recv is not */
661 }
662 if (var3){
663 var4 = ((val* (*)(val*))(var_depends->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_depends) /* iterator on <var_depends:nullable Collection[Phase](Collection[Phase])>*/;
664 for(;;) {
665 var5 = ((short int (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var4) /* is_ok on <var4:Iterator[nullable Object]>*/;
666 if(!var5) break;
667 var6 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__item]))(var4) /* item on <var4:Iterator[nullable Object]>*/;
668 var_d = var6;
669 var7 = ((val* (*)(val*))(var_toolcontext->class->vft[COLOR_phase__ToolContext__phases]))(var_toolcontext) /* phases on <var_toolcontext:ToolContext>*/;
670 ((void (*)(val*, val*, val*))(var7->class->vft[COLOR_poset__POSet__add_edge]))(var7, self, var_d) /* add_edge on <var7:POSet[Phase]>*/;
671 CONTINUE_label: (void)0;
672 ((void (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__next]))(var4) /* next on <var4:Iterator[nullable Object]>*/;
673 }
674 BREAK_label: (void)0;
675 } else {
676 }
677 RET_LABEL:;
678 }
679 /* method phase#Phase#init for (self: Object, ToolContext, nullable Collection[Phase]) */
680 void VIRTUAL_phase__Phase__init(val* self, val* p0, val* p1) {
681 phase__Phase__init(self, p0, p1);
682 RET_LABEL:;
683 }
684 /* method phase#Phase#process_nmodule for (self: Phase, AModule) */
685 void phase__Phase__process_nmodule(val* self, val* p0) {
686 val* var_nmodule /* var nmodule: AModule */;
687 var_nmodule = p0;
688 RET_LABEL:;
689 }
690 /* method phase#Phase#process_nmodule for (self: Object, AModule) */
691 void VIRTUAL_phase__Phase__process_nmodule(val* self, val* p0) {
692 phase__Phase__process_nmodule(self, p0);
693 RET_LABEL:;
694 }
695 /* method phase#Phase#process_nclassdef for (self: Phase, AClassdef) */
696 void phase__Phase__process_nclassdef(val* self, val* p0) {
697 val* var_nclassdef /* var nclassdef: AClassdef */;
698 var_nclassdef = p0;
699 RET_LABEL:;
700 }
701 /* method phase#Phase#process_nclassdef for (self: Object, AClassdef) */
702 void VIRTUAL_phase__Phase__process_nclassdef(val* self, val* p0) {
703 phase__Phase__process_nclassdef(self, p0);
704 RET_LABEL:;
705 }
706 /* method phase#Phase#process_npropdef for (self: Phase, APropdef) */
707 void phase__Phase__process_npropdef(val* self, val* p0) {
708 val* var_npropdef /* var npropdef: APropdef */;
709 var_npropdef = p0;
710 RET_LABEL:;
711 }
712 /* method phase#Phase#process_npropdef for (self: Object, APropdef) */
713 void VIRTUAL_phase__Phase__process_npropdef(val* self, val* p0) {
714 phase__Phase__process_npropdef(self, p0);
715 RET_LABEL:;
716 }
717 /* method phase#Phase#process_annotated_node for (self: Phase, ANode, AAnnotation) */
718 void phase__Phase__process_annotated_node(val* self, val* p0, val* p1) {
719 val* var_node /* var node: ANode */;
720 val* var_nat /* var nat: AAnnotation */;
721 var_node = p0;
722 var_nat = p1;
723 RET_LABEL:;
724 }
725 /* method phase#Phase#process_annotated_node for (self: Object, ANode, AAnnotation) */
726 void VIRTUAL_phase__Phase__process_annotated_node(val* self, val* p0, val* p1) {
727 phase__Phase__process_annotated_node(self, p0, p1);
728 RET_LABEL:;
729 }