README: document nit_env.sh
[nit.git] / c_src / nit__phase.sep.1.c
1 #include "nit__phase.sep.0.h"
2 /* method phase#ToolContext#phases for (self: ToolContext): POSet[Phase] */
3 val* nit__phase___ToolContext___phases(val* self) {
4 val* var /* : POSet[Phase] */;
5 val* var1 /* : POSet[Phase] */;
6 var1 = self->attrs[COLOR_nit__phase__ToolContext___phases].val; /* _phases on <self:ToolContext> */
7 if (unlikely(var1 == NULL)) {
8 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _phases");
9 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 23);
10 fatal_exit(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method phase#ToolContext#opt_disable_phase for (self: ToolContext): OptionArray */
17 val* nit__phase___ToolContext___opt_disable_phase(val* self) {
18 val* var /* : OptionArray */;
19 val* var1 /* : OptionArray */;
20 var1 = self->attrs[COLOR_nit__phase__ToolContext___opt_disable_phase].val; /* _opt_disable_phase on <self:ToolContext> */
21 if (unlikely(var1 == NULL)) {
22 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_disable_phase");
23 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 30);
24 fatal_exit(1);
25 }
26 var = var1;
27 RET_LABEL:;
28 return var;
29 }
30 /* method phase#ToolContext#opt_sloppy for (self: ToolContext): OptionBool */
31 val* nit__phase___ToolContext___opt_sloppy(val* self) {
32 val* var /* : OptionBool */;
33 val* var1 /* : OptionBool */;
34 var1 = self->attrs[COLOR_nit__phase__ToolContext___opt_sloppy].val; /* _opt_sloppy on <self:ToolContext> */
35 if (unlikely(var1 == NULL)) {
36 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_sloppy");
37 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 33);
38 fatal_exit(1);
39 }
40 var = var1;
41 RET_LABEL:;
42 return var;
43 }
44 /* method phase#ToolContext#init for (self: ToolContext) */
45 void nit__phase___ToolContext___standard__kernel__Object__init(val* self) {
46 val* var /* : OptionContext */;
47 val* var2 /* : OptionContext */;
48 val* var3 /* : OptionArray */;
49 val* var5 /* : OptionArray */;
50 val* var6 /* : OptionBool */;
51 val* var8 /* : OptionBool */;
52 val* var9 /* : Array[Option] */;
53 val* var10 /* : NativeArray[Option] */;
54 {
55 ((void(*)(val* self))(self->class->vft[COLOR_nit__phase___ToolContext___standard__kernel__Object__init]))(self); /* init on <self:ToolContext>*/
56 }
57 {
58 { /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
59 var2 = self->attrs[COLOR_nit__toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
60 if (unlikely(var2 == NULL)) {
61 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
62 PRINT_ERROR(" (%s:%d)\n", FILE_nit__toolcontext, 332);
63 fatal_exit(1);
64 }
65 var = var2;
66 RET_LABEL1:(void)0;
67 }
68 }
69 {
70 { /* Inline phase#ToolContext#opt_disable_phase (self) on <self:ToolContext> */
71 var5 = self->attrs[COLOR_nit__phase__ToolContext___opt_disable_phase].val; /* _opt_disable_phase on <self:ToolContext> */
72 if (unlikely(var5 == NULL)) {
73 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_disable_phase");
74 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 30);
75 fatal_exit(1);
76 }
77 var3 = var5;
78 RET_LABEL4:(void)0;
79 }
80 }
81 {
82 { /* Inline phase#ToolContext#opt_sloppy (self) on <self:ToolContext> */
83 var8 = self->attrs[COLOR_nit__phase__ToolContext___opt_sloppy].val; /* _opt_sloppy on <self:ToolContext> */
84 if (unlikely(var8 == NULL)) {
85 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_sloppy");
86 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 33);
87 fatal_exit(1);
88 }
89 var6 = var8;
90 RET_LABEL7:(void)0;
91 }
92 }
93 var9 = NEW_standard__Array(&type_standard__Array__opts__Option);
94 { /* var9 = array_instance Array[Option] */
95 var10 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__opts__Option);
96 ((struct instance_standard__NativeArray*)var10)->values[0] = (val*) var3;
97 ((struct instance_standard__NativeArray*)var10)->values[1] = (val*) var6;
98 {
99 ((void(*)(val* self, val* p0, long p1))(var9->class->vft[COLOR_standard__array__Array__with_native]))(var9, var10, 2l); /* with_native on <var9:Array[Option]>*/
100 }
101 }
102 {
103 opts___opts__OptionContext___add_option(var, var9); /* Direct call opts#OptionContext#add_option on <var:OptionContext>*/
104 }
105 RET_LABEL:;
106 }
107 /* method phase#ToolContext#process_options for (self: ToolContext, Sequence[String]) */
108 void nit__phase___ToolContext___process_options(val* self, val* p0) {
109 val* var_args /* var args: Sequence[String] */;
110 val* var /* : OptionArray */;
111 val* var2 /* : OptionArray */;
112 val* var3 /* : nullable Object */;
113 val* var5 /* : nullable Object */;
114 val* var_ /* var : Array[String] */;
115 val* var6 /* : ArrayIterator[nullable Object] */;
116 val* var_7 /* var : ArrayIterator[String] */;
117 short int var8 /* : Bool */;
118 val* var9 /* : nullable Object */;
119 val* var_v /* var v: String */;
120 static val* varonce;
121 val* var10 /* : String */;
122 char* var11 /* : NativeString */;
123 val* var12 /* : FlatString */;
124 short int var13 /* : Bool */;
125 val* var14 /* : Sequence[Phase] */;
126 val* var_15 /* var : Sequence[Phase] */;
127 val* var16 /* : Iterator[nullable Object] */;
128 val* var_17 /* var : IndexedIterator[Phase] */;
129 short int var18 /* : Bool */;
130 val* var19 /* : nullable Object */;
131 val* var_p /* var p: Phase */;
132 val* var20 /* : POSetElement[Phase] */;
133 val* var22 /* : POSetElement[Phase] */;
134 val* var23 /* : Collection[nullable Object] */;
135 val* var_deps /* var deps: Collection[Phase] */;
136 short int var24 /* : Bool */;
137 val* var25 /* : Sys */;
138 val* var26 /* : Sys */;
139 val* var28 /* : NativeArray[String] */;
140 static val* varonce27;
141 static val* varonce29;
142 val* var30 /* : String */;
143 char* var31 /* : NativeString */;
144 val* var32 /* : FlatString */;
145 static val* varonce33;
146 val* var34 /* : String */;
147 char* var35 /* : NativeString */;
148 val* var36 /* : FlatString */;
149 val* var37 /* : String */;
150 static val* varonce38;
151 val* var39 /* : String */;
152 char* var40 /* : NativeString */;
153 val* var41 /* : FlatString */;
154 val* var42 /* : String */;
155 val* var43 /* : String */;
156 val* var44 /* : Sys */;
157 short int var_found /* var found: Bool */;
158 val* var46 /* : POSet[Phase] */;
159 val* var48 /* : POSet[Phase] */;
160 val* var_49 /* var : POSet[Phase] */;
161 val* var50 /* : Iterator[nullable Object] */;
162 val* var_51 /* var : Iterator[Phase] */;
163 short int var52 /* : Bool */;
164 val* var53 /* : nullable Object */;
165 val* var_p54 /* var p: Phase */;
166 val* var55 /* : String */;
167 short int var56 /* : Bool */;
168 val* var_other /* var other: nullable Object */;
169 short int var58 /* : Bool */;
170 short int var59 /* : Bool */;
171 short int var63 /* : Bool */;
172 val* var65 /* : NativeArray[String] */;
173 static val* varonce64;
174 static val* varonce66;
175 val* var67 /* : String */;
176 char* var68 /* : NativeString */;
177 val* var69 /* : FlatString */;
178 static val* varonce70;
179 val* var71 /* : String */;
180 char* var72 /* : NativeString */;
181 val* var73 /* : FlatString */;
182 val* var74 /* : String */;
183 val* var76 /* : OptionBool */;
184 val* var78 /* : OptionBool */;
185 val* var79 /* : nullable Object */;
186 val* var81 /* : nullable Object */;
187 short int var82 /* : Bool */;
188 var_args = p0;
189 {
190 ((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__phase___ToolContext___process_options]))(self, p0); /* process_options on <self:ToolContext>*/
191 }
192 {
193 { /* Inline phase#ToolContext#opt_disable_phase (self) on <self:ToolContext> */
194 var2 = self->attrs[COLOR_nit__phase__ToolContext___opt_disable_phase].val; /* _opt_disable_phase on <self:ToolContext> */
195 if (unlikely(var2 == NULL)) {
196 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_disable_phase");
197 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 30);
198 fatal_exit(1);
199 }
200 var = var2;
201 RET_LABEL1:(void)0;
202 }
203 }
204 {
205 { /* Inline opts#Option#value (var) on <var:OptionArray> */
206 var5 = var->attrs[COLOR_opts__Option___value].val; /* _value on <var:OptionArray> */
207 var3 = var5;
208 RET_LABEL4:(void)0;
209 }
210 }
211 var_ = var3;
212 {
213 var6 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
214 }
215 var_7 = var6;
216 for(;;) {
217 {
218 var8 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_7);
219 }
220 if (var8){
221 {
222 var9 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_7);
223 }
224 var_v = var9;
225 if (likely(varonce!=NULL)) {
226 var10 = varonce;
227 } else {
228 var11 = "list";
229 var12 = standard___standard__NativeString___to_s_with_length(var11, 4l);
230 var10 = var12;
231 varonce = var10;
232 }
233 {
234 var13 = ((short int(*)(val* self, val* p0))(var_v->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_v, var10); /* == on <var_v:String>*/
235 }
236 if (var13){
237 {
238 var14 = nit__phase___ToolContext___phases_list(self);
239 }
240 var_15 = var14;
241 {
242 var16 = ((val*(*)(val* self))((((long)var_15&3)?class_info[((long)var_15&3)]:var_15->class)->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_15); /* iterator on <var_15:Sequence[Phase]>*/
243 }
244 var_17 = var16;
245 for(;;) {
246 {
247 var18 = ((short int(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_17); /* is_ok on <var_17:IndexedIterator[Phase]>*/
248 }
249 if (var18){
250 {
251 var19 = ((val*(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_17); /* item on <var_17:IndexedIterator[Phase]>*/
252 }
253 var_p = var19;
254 {
255 { /* Inline phase#Phase#in_hierarchy (var_p) on <var_p:Phase> */
256 var22 = var_p->attrs[COLOR_nit__phase__Phase___in_hierarchy].val; /* _in_hierarchy on <var_p:Phase> */
257 if (unlikely(var22 == NULL)) {
258 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_hierarchy");
259 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 203);
260 fatal_exit(1);
261 }
262 var20 = var22;
263 RET_LABEL21:(void)0;
264 }
265 }
266 {
267 var23 = poset___poset__POSetElement___direct_greaters(var20);
268 }
269 var_deps = var23;
270 {
271 var24 = ((short int(*)(val* self))((((long)var_deps&3)?class_info[((long)var_deps&3)]:var_deps->class)->vft[COLOR_standard__abstract_collection__Collection__is_empty]))(var_deps); /* is_empty on <var_deps:Collection[Phase]>*/
272 }
273 if (var24){
274 var25 = glob_sys;
275 {
276 standard__file___Sys___print(var25, var_p); /* Direct call file#Sys#print on <var25:Sys>*/
277 }
278 } else {
279 var26 = glob_sys;
280 if (unlikely(varonce27==NULL)) {
281 var28 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
282 if (likely(varonce29!=NULL)) {
283 var30 = varonce29;
284 } else {
285 var31 = " (dep: ";
286 var32 = standard___standard__NativeString___to_s_with_length(var31, 7l);
287 var30 = var32;
288 varonce29 = var30;
289 }
290 ((struct instance_standard__NativeArray*)var28)->values[1]=var30;
291 if (likely(varonce33!=NULL)) {
292 var34 = varonce33;
293 } else {
294 var35 = ")";
295 var36 = standard___standard__NativeString___to_s_with_length(var35, 1l);
296 var34 = var36;
297 varonce33 = var34;
298 }
299 ((struct instance_standard__NativeArray*)var28)->values[3]=var34;
300 } else {
301 var28 = varonce27;
302 varonce27 = NULL;
303 }
304 {
305 var37 = ((val*(*)(val* self))(var_p->class->vft[COLOR_standard__string__Object__to_s]))(var_p); /* to_s on <var_p:Phase>*/
306 }
307 ((struct instance_standard__NativeArray*)var28)->values[0]=var37;
308 if (likely(varonce38!=NULL)) {
309 var39 = varonce38;
310 } else {
311 var40 = ", ";
312 var41 = standard___standard__NativeString___to_s_with_length(var40, 2l);
313 var39 = var41;
314 varonce38 = var39;
315 }
316 {
317 var42 = standard__string___Collection___join(var_deps, var39);
318 }
319 ((struct instance_standard__NativeArray*)var28)->values[2]=var42;
320 {
321 var43 = ((val*(*)(val* self))(var28->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var28); /* native_to_s on <var28:NativeArray[String]>*/
322 }
323 varonce27 = var28;
324 {
325 standard__file___Sys___print(var26, var43); /* Direct call file#Sys#print on <var26:Sys>*/
326 }
327 }
328 {
329 ((void(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_17); /* next on <var_17:IndexedIterator[Phase]>*/
330 }
331 } else {
332 goto BREAK_label;
333 }
334 }
335 BREAK_label: (void)0;
336 {
337 ((void(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_17); /* finish on <var_17:IndexedIterator[Phase]>*/
338 }
339 var44 = glob_sys;
340 {
341 { /* Inline kernel#Sys#exit (var44,0l) on <var44:Sys> */
342 exit(0l);
343 RET_LABEL45:(void)0;
344 }
345 }
346 } else {
347 }
348 var_found = 0;
349 {
350 { /* Inline phase#ToolContext#phases (self) on <self:ToolContext> */
351 var48 = self->attrs[COLOR_nit__phase__ToolContext___phases].val; /* _phases on <self:ToolContext> */
352 if (unlikely(var48 == NULL)) {
353 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _phases");
354 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 23);
355 fatal_exit(1);
356 }
357 var46 = var48;
358 RET_LABEL47:(void)0;
359 }
360 }
361 var_49 = var46;
362 {
363 var50 = poset___poset__POSet___standard__abstract_collection__Collection__iterator(var_49);
364 }
365 var_51 = var50;
366 for(;;) {
367 {
368 var52 = ((short int(*)(val* self))((((long)var_51&3)?class_info[((long)var_51&3)]:var_51->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_51); /* is_ok on <var_51:Iterator[Phase]>*/
369 }
370 if (var52){
371 {
372 var53 = ((val*(*)(val* self))((((long)var_51&3)?class_info[((long)var_51&3)]:var_51->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_51); /* item on <var_51:Iterator[Phase]>*/
373 }
374 var_p54 = var53;
375 {
376 var55 = nit___nit__Phase___standard__string__Object__to_s(var_p54);
377 }
378 {
379 { /* Inline kernel#Object#!= (var_v,var55) on <var_v:String> */
380 var_other = var55;
381 {
382 var58 = ((short int(*)(val* self, val* p0))(var_v->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_v, var_other); /* == on <var_v:String>*/
383 }
384 var59 = !var58;
385 var56 = var59;
386 goto RET_LABEL57;
387 RET_LABEL57:(void)0;
388 }
389 }
390 if (var56){
391 goto BREAK_label60;
392 } else {
393 }
394 var_found = 1;
395 {
396 { /* Inline phase#Phase#disabled= (var_p54,1) on <var_p54:Phase> */
397 var_p54->attrs[COLOR_nit__phase__Phase___disabled].s = 1; /* _disabled on <var_p54:Phase> */
398 RET_LABEL61:(void)0;
399 }
400 }
401 BREAK_label60: (void)0;
402 {
403 ((void(*)(val* self))((((long)var_51&3)?class_info[((long)var_51&3)]:var_51->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_51); /* next on <var_51:Iterator[Phase]>*/
404 }
405 } else {
406 goto BREAK_label62;
407 }
408 }
409 BREAK_label62: (void)0;
410 {
411 ((void(*)(val* self))((((long)var_51&3)?class_info[((long)var_51&3)]:var_51->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_51); /* finish on <var_51:Iterator[Phase]>*/
412 }
413 var63 = !var_found;
414 if (var63){
415 if (unlikely(varonce64==NULL)) {
416 var65 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
417 if (likely(varonce66!=NULL)) {
418 var67 = varonce66;
419 } else {
420 var68 = "Error: no phase named `";
421 var69 = standard___standard__NativeString___to_s_with_length(var68, 23l);
422 var67 = var69;
423 varonce66 = var67;
424 }
425 ((struct instance_standard__NativeArray*)var65)->values[0]=var67;
426 if (likely(varonce70!=NULL)) {
427 var71 = varonce70;
428 } else {
429 var72 = "`. Use `list` to list all phases.";
430 var73 = standard___standard__NativeString___to_s_with_length(var72, 33l);
431 var71 = var73;
432 varonce70 = var71;
433 }
434 ((struct instance_standard__NativeArray*)var65)->values[2]=var71;
435 } else {
436 var65 = varonce64;
437 varonce64 = NULL;
438 }
439 ((struct instance_standard__NativeArray*)var65)->values[1]=var_v;
440 {
441 var74 = ((val*(*)(val* self))(var65->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var65); /* native_to_s on <var65:NativeArray[String]>*/
442 }
443 varonce64 = var65;
444 {
445 nit___nit__ToolContext___fatal_error(self, ((val*)NULL), var74); /* Direct call toolcontext#ToolContext#fatal_error on <self:ToolContext>*/
446 }
447 } else {
448 }
449 {
450 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_7); /* Direct call array#ArrayIterator#next on <var_7:ArrayIterator[String]>*/
451 }
452 } else {
453 goto BREAK_label75;
454 }
455 }
456 BREAK_label75: (void)0;
457 {
458 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_7); /* Direct call array#ArrayIterator#finish on <var_7:ArrayIterator[String]>*/
459 }
460 {
461 { /* Inline phase#ToolContext#opt_sloppy (self) on <self:ToolContext> */
462 var78 = self->attrs[COLOR_nit__phase__ToolContext___opt_sloppy].val; /* _opt_sloppy on <self:ToolContext> */
463 if (unlikely(var78 == NULL)) {
464 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_sloppy");
465 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 33);
466 fatal_exit(1);
467 }
468 var76 = var78;
469 RET_LABEL77:(void)0;
470 }
471 }
472 {
473 { /* Inline opts#Option#value (var76) on <var76:OptionBool> */
474 var81 = var76->attrs[COLOR_opts__Option___value].val; /* _value on <var76:OptionBool> */
475 var79 = var81;
476 RET_LABEL80:(void)0;
477 }
478 }
479 var82 = (short int)((long)(var79)>>2);
480 if (var82){
481 {
482 { /* Inline phase#ToolContext#semantize_is_lazy= (self,1) on <self:ToolContext> */
483 self->attrs[COLOR_nit__phase__ToolContext___semantize_is_lazy].s = 1; /* _semantize_is_lazy on <self:ToolContext> */
484 RET_LABEL83:(void)0;
485 }
486 }
487 } else {
488 }
489 RET_LABEL:;
490 }
491 /* method phase#ToolContext#phases_list for (self: ToolContext): Sequence[Phase] */
492 val* nit__phase___ToolContext___phases_list(val* self) {
493 val* var /* : Sequence[Phase] */;
494 short int var1 /* : Bool */;
495 val* var2 /* : Sequence[Phase] */;
496 val* var3 /* : Sequence[Phase] */;
497 val* var5 /* : POSet[Phase] */;
498 val* var7 /* : POSet[Phase] */;
499 val* var8 /* : Array[nullable Object] */;
500 val* var_phases /* var phases: Array[Phase] */;
501 val* var9 /* : POSet[Phase] */;
502 val* var11 /* : POSet[Phase] */;
503 var1 = self->attrs[COLOR_nit__phase__ToolContext___phases_list].val != NULL; /* _phases_list on <self:ToolContext> */
504 if(likely(var1)) {
505 var2 = self->attrs[COLOR_nit__phase__ToolContext___phases_list].val; /* _phases_list on <self:ToolContext> */
506 if (unlikely(var2 == NULL)) {
507 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _phases_list");
508 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 72);
509 fatal_exit(1);
510 }
511 } else {
512 {
513 {
514 { /* Inline phase#ToolContext#phases (self) on <self:ToolContext> */
515 var7 = self->attrs[COLOR_nit__phase__ToolContext___phases].val; /* _phases on <self:ToolContext> */
516 if (unlikely(var7 == NULL)) {
517 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _phases");
518 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 23);
519 fatal_exit(1);
520 }
521 var5 = var7;
522 RET_LABEL6:(void)0;
523 }
524 }
525 {
526 var8 = standard__array___Collection___to_a(var5);
527 }
528 var_phases = var8;
529 {
530 { /* Inline phase#ToolContext#phases (self) on <self:ToolContext> */
531 var11 = self->attrs[COLOR_nit__phase__ToolContext___phases].val; /* _phases on <self:ToolContext> */
532 if (unlikely(var11 == NULL)) {
533 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _phases");
534 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 23);
535 fatal_exit(1);
536 }
537 var9 = var11;
538 RET_LABEL10:(void)0;
539 }
540 }
541 {
542 standard___standard__Comparator___sort(var9, var_phases); /* Direct call sorter#Comparator#sort on <var9:POSet[Phase]>*/
543 }
544 var3 = var_phases;
545 goto RET_LABEL4;
546 RET_LABEL4:(void)0;
547 }
548 self->attrs[COLOR_nit__phase__ToolContext___phases_list].val = var3; /* _phases_list on <self:ToolContext> */
549 var2 = var3;
550 }
551 var = var2;
552 RET_LABEL:;
553 return var;
554 }
555 /* method phase#ToolContext#semantize_is_lazy for (self: ToolContext): Bool */
556 short int nit__phase___ToolContext___semantize_is_lazy(val* self) {
557 short int var /* : Bool */;
558 short int var1 /* : Bool */;
559 var1 = self->attrs[COLOR_nit__phase__ToolContext___semantize_is_lazy].s; /* _semantize_is_lazy on <self:ToolContext> */
560 var = var1;
561 RET_LABEL:;
562 return var;
563 }
564 /* method phase#ToolContext#semantize_is_lazy= for (self: ToolContext, Bool) */
565 void nit__phase___ToolContext___semantize_is_lazy_61d(val* self, short int p0) {
566 self->attrs[COLOR_nit__phase__ToolContext___semantize_is_lazy].s = p0; /* _semantize_is_lazy on <self:ToolContext> */
567 RET_LABEL:;
568 }
569 /* method phase#ToolContext#phased_modules for (self: ToolContext): HashSet[AModule] */
570 val* nit__phase___ToolContext___phased_modules(val* self) {
571 val* var /* : HashSet[AModule] */;
572 val* var1 /* : HashSet[AModule] */;
573 var1 = self->attrs[COLOR_nit__phase__ToolContext___phased_modules].val; /* _phased_modules on <self:ToolContext> */
574 if (unlikely(var1 == NULL)) {
575 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _phased_modules");
576 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 86);
577 fatal_exit(1);
578 }
579 var = var1;
580 RET_LABEL:;
581 return var;
582 }
583 /* method phase#ToolContext#run_phases for (self: ToolContext, Collection[AModule]) */
584 void nit__phase___ToolContext___run_phases(val* self, val* p0) {
585 val* var_nmodules /* var nmodules: Collection[AModule] */;
586 long var /* : Int */;
587 long var2 /* : Int for extern */;
588 long var_time0 /* var time0: Int */;
589 static val* varonce;
590 val* var3 /* : String */;
591 char* var4 /* : NativeString */;
592 val* var5 /* : FlatString */;
593 val* var6 /* : Sequence[Phase] */;
594 val* var_phases /* var phases: Sequence[Phase] */;
595 val* var_ /* var : Sequence[Phase] */;
596 val* var7 /* : Iterator[nullable Object] */;
597 val* var_8 /* var : IndexedIterator[Phase] */;
598 short int var9 /* : Bool */;
599 val* var10 /* : nullable Object */;
600 val* var_phase /* var phase: Phase */;
601 val* var12 /* : NativeArray[String] */;
602 static val* varonce11;
603 static val* varonce13;
604 val* var14 /* : String */;
605 char* var15 /* : NativeString */;
606 val* var16 /* : FlatString */;
607 val* var17 /* : String */;
608 val* var18 /* : String */;
609 val* var_19 /* var : Collection[AModule] */;
610 val* var20 /* : Iterator[nullable Object] */;
611 val* var_21 /* var : Iterator[AModule] */;
612 short int var22 /* : Bool */;
613 val* var23 /* : nullable Object */;
614 val* var_nmodule /* var nmodule: AModule */;
615 val* var24 /* : HashSet[AModule] */;
616 val* var26 /* : HashSet[AModule] */;
617 short int var27 /* : Bool */;
618 val* var29 /* : HashSet[AModule] */;
619 val* var31 /* : HashSet[AModule] */;
620 val* var33 /* : NativeArray[String] */;
621 static val* varonce32;
622 static val* varonce34;
623 val* var35 /* : String */;
624 char* var36 /* : NativeString */;
625 val* var37 /* : FlatString */;
626 val* var38 /* : Location */;
627 val* var40 /* : Location */;
628 val* var41 /* : nullable SourceFile */;
629 val* var43 /* : nullable SourceFile */;
630 val* var44 /* : String */;
631 val* var46 /* : String */;
632 val* var47 /* : String */;
633 val* var48 /* : AnnotationPhaseVisitor */;
634 val* var_vannot /* var vannot: AnnotationPhaseVisitor */;
635 val* var_50 /* var : Sequence[Phase] */;
636 val* var51 /* : Iterator[nullable Object] */;
637 val* var_52 /* var : IndexedIterator[Phase] */;
638 short int var53 /* : Bool */;
639 val* var54 /* : nullable Object */;
640 val* var_phase55 /* var phase: Phase */;
641 short int var56 /* : Bool */;
642 short int var58 /* : Bool */;
643 val* var60 /* : ToolContext */;
644 val* var62 /* : ToolContext */;
645 short int var63 /* : Bool */;
646 val* var_other /* var other: nullable Object */;
647 short int var65 /* : Bool */;
648 short int var67 /* : Bool */;
649 long var68 /* : Int */;
650 long var70 /* : Int */;
651 long var_errcount /* var errcount: Int */;
652 long var71 /* : Int */;
653 long var73 /* : Int */;
654 short int var74 /* : Bool */;
655 short int var76 /* : Bool */;
656 short int var77 /* : Bool */;
657 short int var78 /* : Bool */;
658 long var79 /* : Int */;
659 long var81 /* : Int */;
660 val* var82 /* : ANodes[AClassdef] */;
661 val* var84 /* : ANodes[AClassdef] */;
662 val* var_85 /* var : ANodes[AClassdef] */;
663 val* var86 /* : Iterator[ANode] */;
664 val* var_87 /* var : Iterator[AClassdef] */;
665 short int var88 /* : Bool */;
666 val* var89 /* : nullable Object */;
667 val* var_nclassdef /* var nclassdef: AClassdef */;
668 val* var90 /* : ToolContext */;
669 val* var92 /* : ToolContext */;
670 short int var93 /* : Bool */;
671 short int var95 /* : Bool */;
672 short int var97 /* : Bool */;
673 short int var98 /* : Bool */;
674 short int var100 /* : Bool */;
675 short int var101 /* : Bool */;
676 val* var102 /* : ANodes[APropdef] */;
677 val* var104 /* : ANodes[APropdef] */;
678 val* var_105 /* var : ANodes[APropdef] */;
679 val* var106 /* : Iterator[ANode] */;
680 val* var_107 /* var : Iterator[APropdef] */;
681 short int var108 /* : Bool */;
682 val* var109 /* : nullable Object */;
683 val* var_npropdef /* var npropdef: APropdef */;
684 val* var110 /* : ToolContext */;
685 val* var112 /* : ToolContext */;
686 short int var113 /* : Bool */;
687 short int var115 /* : Bool */;
688 short int var117 /* : Bool */;
689 long var120 /* : Int */;
690 long var122 /* : Int */;
691 short int var123 /* : Bool */;
692 short int var125 /* : Bool */;
693 short int var126 /* : Bool */;
694 short int var127 /* : Bool */;
695 val* var128 /* : Array[AAnnotation] */;
696 val* var130 /* : Array[AAnnotation] */;
697 val* var_131 /* var : Array[AAnnotation] */;
698 val* var132 /* : ArrayIterator[nullable Object] */;
699 val* var_133 /* var : ArrayIterator[AAnnotation] */;
700 short int var134 /* : Bool */;
701 val* var135 /* : nullable Object */;
702 val* var_na /* var na: AAnnotation */;
703 val* var136 /* : nullable ANode */;
704 val* var138 /* : nullable ANode */;
705 val* var_p /* var p: nullable ANode */;
706 short int var139 /* : Bool */;
707 int cltype;
708 int idtype;
709 val* var140 /* : nullable ANode */;
710 val* var142 /* : nullable ANode */;
711 short int var143 /* : Bool */;
712 short int var144 /* : Bool */;
713 val* var_other146 /* var other: nullable Object */;
714 short int var147 /* : Bool */;
715 short int var148 /* : Bool */;
716 long var150 /* : Int */;
717 long var152 /* : Int */;
718 short int var153 /* : Bool */;
719 short int var155 /* : Bool */;
720 short int var156 /* : Bool */;
721 short int var157 /* : Bool */;
722 short int var159 /* : Bool */;
723 long var161 /* : Int */;
724 long var163 /* : Int for extern */;
725 long var_time1 /* var time1: Int */;
726 val* var165 /* : NativeArray[String] */;
727 static val* varonce164;
728 static val* varonce166;
729 val* var167 /* : String */;
730 char* var168 /* : NativeString */;
731 val* var169 /* : FlatString */;
732 static val* varonce170;
733 val* var171 /* : String */;
734 char* var172 /* : NativeString */;
735 val* var173 /* : FlatString */;
736 long var174 /* : Int */;
737 short int var176 /* : Bool */;
738 int cltype177;
739 int idtype178;
740 const char* var_class_name;
741 long var179 /* : Int */;
742 val* var180 /* : String */;
743 val* var181 /* : String */;
744 short int var182 /* : Bool */;
745 var_nmodules = p0;
746 {
747 { /* Inline time#Object#get_time (self) on <self:ToolContext> */
748 var2 = kernel_Any_Any_get_time_0(self);
749 var = var2;
750 goto RET_LABEL1;
751 RET_LABEL1:(void)0;
752 }
753 }
754 var_time0 = var;
755 if (likely(varonce!=NULL)) {
756 var3 = varonce;
757 } else {
758 var4 = "*** SEMANTIC ANALYSIS ***";
759 var5 = standard___standard__NativeString___to_s_with_length(var4, 25l);
760 var3 = var5;
761 varonce = var3;
762 }
763 {
764 nit___nit__ToolContext___info(self, var3, 1l); /* Direct call toolcontext#ToolContext#info on <self:ToolContext>*/
765 }
766 {
767 var6 = nit__phase___ToolContext___phases_list(self);
768 }
769 var_phases = var6;
770 var_ = var_phases;
771 {
772 var7 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Sequence[Phase]>*/
773 }
774 var_8 = var7;
775 for(;;) {
776 {
777 var9 = ((short int(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_8); /* is_ok on <var_8:IndexedIterator[Phase]>*/
778 }
779 if (var9){
780 {
781 var10 = ((val*(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_8); /* item on <var_8:IndexedIterator[Phase]>*/
782 }
783 var_phase = var10;
784 if (unlikely(varonce11==NULL)) {
785 var12 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
786 if (likely(varonce13!=NULL)) {
787 var14 = varonce13;
788 } else {
789 var15 = " registered phases: ";
790 var16 = standard___standard__NativeString___to_s_with_length(var15, 20l);
791 var14 = var16;
792 varonce13 = var14;
793 }
794 ((struct instance_standard__NativeArray*)var12)->values[0]=var14;
795 } else {
796 var12 = varonce11;
797 varonce11 = NULL;
798 }
799 {
800 var17 = ((val*(*)(val* self))(var_phase->class->vft[COLOR_standard__string__Object__to_s]))(var_phase); /* to_s on <var_phase:Phase>*/
801 }
802 ((struct instance_standard__NativeArray*)var12)->values[1]=var17;
803 {
804 var18 = ((val*(*)(val* self))(var12->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var12); /* native_to_s on <var12:NativeArray[String]>*/
805 }
806 varonce11 = var12;
807 {
808 nit___nit__ToolContext___info(self, var18, 2l); /* Direct call toolcontext#ToolContext#info on <self:ToolContext>*/
809 }
810 {
811 ((void(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_8); /* next on <var_8:IndexedIterator[Phase]>*/
812 }
813 } else {
814 goto BREAK_label;
815 }
816 }
817 BREAK_label: (void)0;
818 {
819 ((void(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_8); /* finish on <var_8:IndexedIterator[Phase]>*/
820 }
821 var_19 = var_nmodules;
822 {
823 var20 = ((val*(*)(val* self))((((long)var_19&3)?class_info[((long)var_19&3)]:var_19->class)->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_19); /* iterator on <var_19:Collection[AModule]>*/
824 }
825 var_21 = var20;
826 for(;;) {
827 {
828 var22 = ((short int(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_21); /* is_ok on <var_21:Iterator[AModule]>*/
829 }
830 if (var22){
831 {
832 var23 = ((val*(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_21); /* item on <var_21:Iterator[AModule]>*/
833 }
834 var_nmodule = var23;
835 {
836 { /* Inline phase#ToolContext#phased_modules (self) on <self:ToolContext> */
837 var26 = self->attrs[COLOR_nit__phase__ToolContext___phased_modules].val; /* _phased_modules on <self:ToolContext> */
838 if (unlikely(var26 == NULL)) {
839 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _phased_modules");
840 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 86);
841 fatal_exit(1);
842 }
843 var24 = var26;
844 RET_LABEL25:(void)0;
845 }
846 }
847 {
848 var27 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var24, var_nmodule);
849 }
850 if (var27){
851 goto BREAK_label28;
852 } else {
853 }
854 {
855 { /* Inline phase#ToolContext#phased_modules (self) on <self:ToolContext> */
856 var31 = self->attrs[COLOR_nit__phase__ToolContext___phased_modules].val; /* _phased_modules on <self:ToolContext> */
857 if (unlikely(var31 == NULL)) {
858 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _phased_modules");
859 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 86);
860 fatal_exit(1);
861 }
862 var29 = var31;
863 RET_LABEL30:(void)0;
864 }
865 }
866 {
867 standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var29, var_nmodule); /* Direct call hash_collection#HashSet#add on <var29:HashSet[AModule]>*/
868 }
869 if (unlikely(varonce32==NULL)) {
870 var33 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
871 if (likely(varonce34!=NULL)) {
872 var35 = varonce34;
873 } else {
874 var36 = "Semantic analysis module ";
875 var37 = standard___standard__NativeString___to_s_with_length(var36, 25l);
876 var35 = var37;
877 varonce34 = var35;
878 }
879 ((struct instance_standard__NativeArray*)var33)->values[0]=var35;
880 } else {
881 var33 = varonce32;
882 varonce32 = NULL;
883 }
884 {
885 { /* Inline parser_nodes#ANode#location (var_nmodule) on <var_nmodule:AModule> */
886 var40 = var_nmodule->attrs[COLOR_nit__parser_nodes__ANode___location].val; /* _location on <var_nmodule:AModule> */
887 if (unlikely(var40 == NULL)) {
888 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
889 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 24);
890 fatal_exit(1);
891 }
892 var38 = var40;
893 RET_LABEL39:(void)0;
894 }
895 }
896 {
897 { /* Inline location#Location#file (var38) on <var38:Location> */
898 var43 = var38->attrs[COLOR_nit__location__Location___file].val; /* _file on <var38:Location> */
899 var41 = var43;
900 RET_LABEL42:(void)0;
901 }
902 }
903 if (var41 == NULL) {
904 PRINT_ERROR("Runtime error: %s", "Receiver is null");
905 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 106);
906 fatal_exit(1);
907 } else {
908 { /* Inline location#SourceFile#filename (var41) on <var41:nullable SourceFile> */
909 if (unlikely(var41 == NULL)) {
910 PRINT_ERROR("Runtime error: %s", "Receiver is null");
911 PRINT_ERROR(" (%s:%d)\n", FILE_nit__location, 22);
912 fatal_exit(1);
913 }
914 var46 = var41->attrs[COLOR_nit__location__SourceFile___filename].val; /* _filename on <var41:nullable SourceFile> */
915 if (unlikely(var46 == NULL)) {
916 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _filename");
917 PRINT_ERROR(" (%s:%d)\n", FILE_nit__location, 22);
918 fatal_exit(1);
919 }
920 var44 = var46;
921 RET_LABEL45:(void)0;
922 }
923 }
924 ((struct instance_standard__NativeArray*)var33)->values[1]=var44;
925 {
926 var47 = ((val*(*)(val* self))(var33->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var33); /* native_to_s on <var33:NativeArray[String]>*/
927 }
928 varonce32 = var33;
929 {
930 nit___nit__ToolContext___info(self, var47, 2l); /* Direct call toolcontext#ToolContext#info on <self:ToolContext>*/
931 }
932 var48 = NEW_nit__phase__AnnotationPhaseVisitor(&type_nit__phase__AnnotationPhaseVisitor);
933 {
934 { /* Inline kernel#Object#init (var48) on <var48:AnnotationPhaseVisitor> */
935 RET_LABEL49:(void)0;
936 }
937 }
938 var_vannot = var48;
939 {
940 nit___nit__Visitor___enter_visit(var_vannot, var_nmodule); /* Direct call parser_nodes#Visitor#enter_visit on <var_vannot:AnnotationPhaseVisitor>*/
941 }
942 var_50 = var_phases;
943 {
944 var51 = ((val*(*)(val* self))((((long)var_50&3)?class_info[((long)var_50&3)]:var_50->class)->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_50); /* iterator on <var_50:Sequence[Phase]>*/
945 }
946 var_52 = var51;
947 for(;;) {
948 {
949 var53 = ((short int(*)(val* self))((((long)var_52&3)?class_info[((long)var_52&3)]:var_52->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_52); /* is_ok on <var_52:IndexedIterator[Phase]>*/
950 }
951 if (var53){
952 {
953 var54 = ((val*(*)(val* self))((((long)var_52&3)?class_info[((long)var_52&3)]:var_52->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_52); /* item on <var_52:IndexedIterator[Phase]>*/
954 }
955 var_phase55 = var54;
956 {
957 { /* Inline phase#Phase#disabled (var_phase55) on <var_phase55:Phase> */
958 var58 = var_phase55->attrs[COLOR_nit__phase__Phase___disabled].s; /* _disabled on <var_phase55:Phase> */
959 var56 = var58;
960 RET_LABEL57:(void)0;
961 }
962 }
963 if (var56){
964 goto BREAK_label59;
965 } else {
966 }
967 {
968 { /* Inline phase#Phase#toolcontext (var_phase55) on <var_phase55:Phase> */
969 var62 = var_phase55->attrs[COLOR_nit__phase__Phase___toolcontext].val; /* _toolcontext on <var_phase55:Phase> */
970 if (unlikely(var62 == NULL)) {
971 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
972 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 200);
973 fatal_exit(1);
974 }
975 var60 = var62;
976 RET_LABEL61:(void)0;
977 }
978 }
979 {
980 { /* Inline kernel#Object#== (var60,self) on <var60:ToolContext> */
981 var_other = self;
982 {
983 { /* Inline kernel#Object#is_same_instance (var60,var_other) on <var60:ToolContext> */
984 var67 = var60 == var_other;
985 var65 = var67;
986 goto RET_LABEL66;
987 RET_LABEL66:(void)0;
988 }
989 }
990 var63 = var65;
991 goto RET_LABEL64;
992 RET_LABEL64:(void)0;
993 }
994 }
995 if (unlikely(!var63)) {
996 PRINT_ERROR("Runtime error: %s", "Assert failed");
997 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 113);
998 fatal_exit(1);
999 }
1000 {
1001 { /* Inline toolcontext#ToolContext#error_count (self) on <self:ToolContext> */
1002 var70 = self->attrs[COLOR_nit__toolcontext__ToolContext___error_count].l; /* _error_count on <self:ToolContext> */
1003 var68 = var70;
1004 RET_LABEL69:(void)0;
1005 }
1006 }
1007 var_errcount = var68;
1008 {
1009 ((void(*)(val* self, val* p0))(var_phase55->class->vft[COLOR_nit__phase__Phase__process_nmodule]))(var_phase55, var_nmodule); /* process_nmodule on <var_phase55:Phase>*/
1010 }
1011 {
1012 { /* Inline toolcontext#ToolContext#error_count (self) on <self:ToolContext> */
1013 var73 = self->attrs[COLOR_nit__toolcontext__ToolContext___error_count].l; /* _error_count on <self:ToolContext> */
1014 var71 = var73;
1015 RET_LABEL72:(void)0;
1016 }
1017 }
1018 {
1019 { /* Inline kernel#Int#!= (var_errcount,var71) on <var_errcount:Int> */
1020 var76 = var_errcount == var71;
1021 var77 = !var76;
1022 var74 = var77;
1023 goto RET_LABEL75;
1024 RET_LABEL75:(void)0;
1025 }
1026 }
1027 if (var74){
1028 {
1029 var78 = nit___nit__ToolContext___check_errors(self);
1030 }
1031 } else {
1032 }
1033 {
1034 { /* Inline toolcontext#ToolContext#error_count (self) on <self:ToolContext> */
1035 var81 = self->attrs[COLOR_nit__toolcontext__ToolContext___error_count].l; /* _error_count on <self:ToolContext> */
1036 var79 = var81;
1037 RET_LABEL80:(void)0;
1038 }
1039 }
1040 var_errcount = var79;
1041 {
1042 { /* Inline parser_nodes#AModule#n_classdefs (var_nmodule) on <var_nmodule:AModule> */
1043 var84 = var_nmodule->attrs[COLOR_nit__parser_nodes__AModule___n_classdefs].val; /* _n_classdefs on <var_nmodule:AModule> */
1044 if (unlikely(var84 == NULL)) {
1045 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_classdefs");
1046 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1096);
1047 fatal_exit(1);
1048 }
1049 var82 = var84;
1050 RET_LABEL83:(void)0;
1051 }
1052 }
1053 var_85 = var82;
1054 {
1055 var86 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_85);
1056 }
1057 var_87 = var86;
1058 for(;;) {
1059 {
1060 var88 = ((short int(*)(val* self))((((long)var_87&3)?class_info[((long)var_87&3)]:var_87->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_87); /* is_ok on <var_87:Iterator[AClassdef]>*/
1061 }
1062 if (var88){
1063 {
1064 var89 = ((val*(*)(val* self))((((long)var_87&3)?class_info[((long)var_87&3)]:var_87->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_87); /* item on <var_87:Iterator[AClassdef]>*/
1065 }
1066 var_nclassdef = var89;
1067 {
1068 { /* Inline phase#Phase#toolcontext (var_phase55) on <var_phase55:Phase> */
1069 var92 = var_phase55->attrs[COLOR_nit__phase__Phase___toolcontext].val; /* _toolcontext on <var_phase55:Phase> */
1070 if (unlikely(var92 == NULL)) {
1071 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1072 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 200);
1073 fatal_exit(1);
1074 }
1075 var90 = var92;
1076 RET_LABEL91:(void)0;
1077 }
1078 }
1079 {
1080 { /* Inline kernel#Object#== (var90,self) on <var90:ToolContext> */
1081 var_other = self;
1082 {
1083 { /* Inline kernel#Object#is_same_instance (var90,var_other) on <var90:ToolContext> */
1084 var97 = var90 == var_other;
1085 var95 = var97;
1086 goto RET_LABEL96;
1087 RET_LABEL96:(void)0;
1088 }
1089 }
1090 var93 = var95;
1091 goto RET_LABEL94;
1092 RET_LABEL94:(void)0;
1093 }
1094 }
1095 if (unlikely(!var93)) {
1096 PRINT_ERROR("Runtime error: %s", "Assert failed");
1097 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 121);
1098 fatal_exit(1);
1099 }
1100 {
1101 ((void(*)(val* self, val* p0))(var_phase55->class->vft[COLOR_nit__phase__Phase__process_nclassdef]))(var_phase55, var_nclassdef); /* process_nclassdef on <var_phase55:Phase>*/
1102 }
1103 {
1104 { /* Inline phase#ToolContext#semantize_is_lazy (self) on <self:ToolContext> */
1105 var100 = self->attrs[COLOR_nit__phase__ToolContext___semantize_is_lazy].s; /* _semantize_is_lazy on <self:ToolContext> */
1106 var98 = var100;
1107 RET_LABEL99:(void)0;
1108 }
1109 }
1110 var101 = !var98;
1111 if (var101){
1112 {
1113 { /* Inline parser_nodes#AClassdef#n_propdefs (var_nclassdef) on <var_nclassdef:AClassdef> */
1114 var104 = var_nclassdef->attrs[COLOR_nit__parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <var_nclassdef:AClassdef> */
1115 if (unlikely(var104 == NULL)) {
1116 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_propdefs");
1117 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1189);
1118 fatal_exit(1);
1119 }
1120 var102 = var104;
1121 RET_LABEL103:(void)0;
1122 }
1123 }
1124 var_105 = var102;
1125 {
1126 var106 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_105);
1127 }
1128 var_107 = var106;
1129 for(;;) {
1130 {
1131 var108 = ((short int(*)(val* self))((((long)var_107&3)?class_info[((long)var_107&3)]:var_107->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_107); /* is_ok on <var_107:Iterator[APropdef]>*/
1132 }
1133 if (var108){
1134 {
1135 var109 = ((val*(*)(val* self))((((long)var_107&3)?class_info[((long)var_107&3)]:var_107->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_107); /* item on <var_107:Iterator[APropdef]>*/
1136 }
1137 var_npropdef = var109;
1138 {
1139 { /* Inline phase#Phase#toolcontext (var_phase55) on <var_phase55:Phase> */
1140 var112 = var_phase55->attrs[COLOR_nit__phase__Phase___toolcontext].val; /* _toolcontext on <var_phase55:Phase> */
1141 if (unlikely(var112 == NULL)) {
1142 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1143 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 200);
1144 fatal_exit(1);
1145 }
1146 var110 = var112;
1147 RET_LABEL111:(void)0;
1148 }
1149 }
1150 {
1151 { /* Inline kernel#Object#== (var110,self) on <var110:ToolContext> */
1152 var_other = self;
1153 {
1154 { /* Inline kernel#Object#is_same_instance (var110,var_other) on <var110:ToolContext> */
1155 var117 = var110 == var_other;
1156 var115 = var117;
1157 goto RET_LABEL116;
1158 RET_LABEL116:(void)0;
1159 }
1160 }
1161 var113 = var115;
1162 goto RET_LABEL114;
1163 RET_LABEL114:(void)0;
1164 }
1165 }
1166 if (unlikely(!var113)) {
1167 PRINT_ERROR("Runtime error: %s", "Assert failed");
1168 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 124);
1169 fatal_exit(1);
1170 }
1171 {
1172 nit__phase___ToolContext___phase_process_npropdef(self, var_phase55, var_npropdef); /* Direct call phase#ToolContext#phase_process_npropdef on <self:ToolContext>*/
1173 }
1174 {
1175 ((void(*)(val* self))((((long)var_107&3)?class_info[((long)var_107&3)]:var_107->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_107); /* next on <var_107:Iterator[APropdef]>*/
1176 }
1177 } else {
1178 goto BREAK_label118;
1179 }
1180 }
1181 BREAK_label118: (void)0;
1182 {
1183 ((void(*)(val* self))((((long)var_107&3)?class_info[((long)var_107&3)]:var_107->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_107); /* finish on <var_107:Iterator[APropdef]>*/
1184 }
1185 } else {
1186 }
1187 {
1188 ((void(*)(val* self))((((long)var_87&3)?class_info[((long)var_87&3)]:var_87->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_87); /* next on <var_87:Iterator[AClassdef]>*/
1189 }
1190 } else {
1191 goto BREAK_label119;
1192 }
1193 }
1194 BREAK_label119: (void)0;
1195 {
1196 ((void(*)(val* self))((((long)var_87&3)?class_info[((long)var_87&3)]:var_87->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_87); /* finish on <var_87:Iterator[AClassdef]>*/
1197 }
1198 {
1199 { /* Inline toolcontext#ToolContext#error_count (self) on <self:ToolContext> */
1200 var122 = self->attrs[COLOR_nit__toolcontext__ToolContext___error_count].l; /* _error_count on <self:ToolContext> */
1201 var120 = var122;
1202 RET_LABEL121:(void)0;
1203 }
1204 }
1205 {
1206 { /* Inline kernel#Int#!= (var_errcount,var120) on <var_errcount:Int> */
1207 var125 = var_errcount == var120;
1208 var126 = !var125;
1209 var123 = var126;
1210 goto RET_LABEL124;
1211 RET_LABEL124:(void)0;
1212 }
1213 }
1214 if (var123){
1215 {
1216 var127 = nit___nit__ToolContext___check_errors(self);
1217 }
1218 } else {
1219 }
1220 {
1221 { /* Inline phase#AnnotationPhaseVisitor#annotations (var_vannot) on <var_vannot:AnnotationPhaseVisitor> */
1222 var130 = var_vannot->attrs[COLOR_nit__phase__AnnotationPhaseVisitor___annotations].val; /* _annotations on <var_vannot:AnnotationPhaseVisitor> */
1223 if (unlikely(var130 == NULL)) {
1224 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _annotations");
1225 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 187);
1226 fatal_exit(1);
1227 }
1228 var128 = var130;
1229 RET_LABEL129:(void)0;
1230 }
1231 }
1232 var_131 = var128;
1233 {
1234 var132 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_131);
1235 }
1236 var_133 = var132;
1237 for(;;) {
1238 {
1239 var134 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_133);
1240 }
1241 if (var134){
1242 {
1243 var135 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_133);
1244 }
1245 var_na = var135;
1246 {
1247 { /* Inline parser_nodes#ANode#parent (var_na) on <var_na:AAnnotation> */
1248 var138 = var_na->attrs[COLOR_nit__parser_nodes__ANode___parent].val; /* _parent on <var_na:AAnnotation> */
1249 var136 = var138;
1250 RET_LABEL137:(void)0;
1251 }
1252 }
1253 var_p = var136;
1254 /* <var_p:nullable ANode> isa AAnnotations */
1255 cltype = type_nit__AAnnotations.color;
1256 idtype = type_nit__AAnnotations.id;
1257 if(var_p == NULL) {
1258 var139 = 0;
1259 } else {
1260 if(cltype >= var_p->type->table_size) {
1261 var139 = 0;
1262 } else {
1263 var139 = var_p->type->type_table[cltype] == idtype;
1264 }
1265 }
1266 if (var139){
1267 {
1268 { /* Inline parser_nodes#ANode#parent (var_p) on <var_p:nullable ANode(AAnnotations)> */
1269 var142 = var_p->attrs[COLOR_nit__parser_nodes__ANode___parent].val; /* _parent on <var_p:nullable ANode(AAnnotations)> */
1270 var140 = var142;
1271 RET_LABEL141:(void)0;
1272 }
1273 }
1274 var_p = var140;
1275 } else {
1276 }
1277 if (var_p == NULL) {
1278 var143 = 0; /* is null */
1279 } else {
1280 var143 = 1; /* arg is null and recv is not */
1281 }
1282 if (0) {
1283 { /* Inline kernel#Object#!= (var_p,((val*)NULL)) on <var_p:nullable ANode> */
1284 var_other146 = ((val*)NULL);
1285 {
1286 var147 = ((short int(*)(val* self, val* p0))(var_p->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_p, var_other146); /* == on <var_p:nullable ANode(ANode)>*/
1287 }
1288 var148 = !var147;
1289 var144 = var148;
1290 goto RET_LABEL145;
1291 RET_LABEL145:(void)0;
1292 }
1293 var143 = var144;
1294 }
1295 if (unlikely(!var143)) {
1296 PRINT_ERROR("Runtime error: %s", "Assert failed");
1297 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 134);
1298 fatal_exit(1);
1299 }
1300 {
1301 ((void(*)(val* self, val* p0, val* p1))(var_phase55->class->vft[COLOR_nit__phase__Phase__process_annotated_node]))(var_phase55, var_p, var_na); /* process_annotated_node on <var_phase55:Phase>*/
1302 }
1303 {
1304 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_133); /* Direct call array#ArrayIterator#next on <var_133:ArrayIterator[AAnnotation]>*/
1305 }
1306 } else {
1307 goto BREAK_label149;
1308 }
1309 }
1310 BREAK_label149: (void)0;
1311 {
1312 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_133); /* Direct call array#ArrayIterator#finish on <var_133:ArrayIterator[AAnnotation]>*/
1313 }
1314 {
1315 { /* Inline toolcontext#ToolContext#error_count (self) on <self:ToolContext> */
1316 var152 = self->attrs[COLOR_nit__toolcontext__ToolContext___error_count].l; /* _error_count on <self:ToolContext> */
1317 var150 = var152;
1318 RET_LABEL151:(void)0;
1319 }
1320 }
1321 {
1322 { /* Inline kernel#Int#!= (var_errcount,var150) on <var_errcount:Int> */
1323 var155 = var_errcount == var150;
1324 var156 = !var155;
1325 var153 = var156;
1326 goto RET_LABEL154;
1327 RET_LABEL154:(void)0;
1328 }
1329 }
1330 if (var153){
1331 {
1332 var157 = nit___nit__ToolContext___check_errors(self);
1333 }
1334 } else {
1335 }
1336 BREAK_label59: (void)0;
1337 {
1338 ((void(*)(val* self))((((long)var_52&3)?class_info[((long)var_52&3)]:var_52->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_52); /* next on <var_52:IndexedIterator[Phase]>*/
1339 }
1340 } else {
1341 goto BREAK_label158;
1342 }
1343 }
1344 BREAK_label158: (void)0;
1345 {
1346 ((void(*)(val* self))((((long)var_52&3)?class_info[((long)var_52&3)]:var_52->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_52); /* finish on <var_52:IndexedIterator[Phase]>*/
1347 }
1348 {
1349 var159 = nit___nit__ToolContext___check_errors(self);
1350 }
1351 BREAK_label28: (void)0;
1352 {
1353 ((void(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_21); /* next on <var_21:Iterator[AModule]>*/
1354 }
1355 } else {
1356 goto BREAK_label160;
1357 }
1358 }
1359 BREAK_label160: (void)0;
1360 {
1361 ((void(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_21); /* finish on <var_21:Iterator[AModule]>*/
1362 }
1363 {
1364 { /* Inline time#Object#get_time (self) on <self:ToolContext> */
1365 var163 = kernel_Any_Any_get_time_0(self);
1366 var161 = var163;
1367 goto RET_LABEL162;
1368 RET_LABEL162:(void)0;
1369 }
1370 }
1371 var_time1 = var161;
1372 if (unlikely(varonce164==NULL)) {
1373 var165 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
1374 if (likely(varonce166!=NULL)) {
1375 var167 = varonce166;
1376 } else {
1377 var168 = "*** END SEMANTIC ANALYSIS: ";
1378 var169 = standard___standard__NativeString___to_s_with_length(var168, 27l);
1379 var167 = var169;
1380 varonce166 = var167;
1381 }
1382 ((struct instance_standard__NativeArray*)var165)->values[0]=var167;
1383 if (likely(varonce170!=NULL)) {
1384 var171 = varonce170;
1385 } else {
1386 var172 = " ***";
1387 var173 = standard___standard__NativeString___to_s_with_length(var172, 4l);
1388 var171 = var173;
1389 varonce170 = var171;
1390 }
1391 ((struct instance_standard__NativeArray*)var165)->values[2]=var171;
1392 } else {
1393 var165 = varonce164;
1394 varonce164 = NULL;
1395 }
1396 {
1397 { /* Inline kernel#Int#- (var_time1,var_time0) on <var_time1:Int> */
1398 /* Covariant cast for argument 0 (i) <var_time0:Int> isa OTHER */
1399 /* <var_time0:Int> isa OTHER */
1400 var176 = 1; /* easy <var_time0:Int> isa OTHER*/
1401 if (unlikely(!var176)) {
1402 var_class_name = type_standard__Int.name;
1403 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1404 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
1405 fatal_exit(1);
1406 }
1407 var179 = var_time1 - var_time0;
1408 var174 = var179;
1409 goto RET_LABEL175;
1410 RET_LABEL175:(void)0;
1411 }
1412 }
1413 var180 = standard__string___Int___Object__to_s(var174);
1414 ((struct instance_standard__NativeArray*)var165)->values[1]=var180;
1415 {
1416 var181 = ((val*(*)(val* self))(var165->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var165); /* native_to_s on <var165:NativeArray[String]>*/
1417 }
1418 varonce164 = var165;
1419 {
1420 nit___nit__ToolContext___info(self, var181, 2l); /* Direct call toolcontext#ToolContext#info on <self:ToolContext>*/
1421 }
1422 {
1423 var182 = nit___nit__ToolContext___check_errors(self);
1424 }
1425 RET_LABEL:;
1426 }
1427 /* method phase#ToolContext#phase_process_npropdef for (self: ToolContext, Phase, APropdef) */
1428 void nit__phase___ToolContext___phase_process_npropdef(val* self, val* p0, val* p1) {
1429 val* var_phase /* var phase: Phase */;
1430 val* var_npropdef /* var npropdef: APropdef */;
1431 var_phase = p0;
1432 var_npropdef = p1;
1433 {
1434 ((void(*)(val* self, val* p0))(var_phase->class->vft[COLOR_nit__phase__Phase__process_npropdef]))(var_phase, var_npropdef); /* process_npropdef on <var_phase:Phase>*/
1435 }
1436 RET_LABEL:;
1437 }
1438 /* method phase#ToolContext#run_phases_on_npropdef for (self: ToolContext, APropdef) */
1439 void nit__phase___ToolContext___run_phases_on_npropdef(val* self, val* p0) {
1440 val* var_npropdef /* var npropdef: APropdef */;
1441 short int var /* : Bool */;
1442 short int var2 /* : Bool */;
1443 short int var3 /* : Bool */;
1444 short int var4 /* : Bool */;
1445 short int var6 /* : Bool */;
1446 val* var8 /* : Sequence[Phase] */;
1447 val* var_phases /* var phases: Sequence[Phase] */;
1448 val* var_ /* var : Sequence[Phase] */;
1449 val* var9 /* : Iterator[nullable Object] */;
1450 val* var_10 /* var : IndexedIterator[Phase] */;
1451 short int var11 /* : Bool */;
1452 val* var12 /* : nullable Object */;
1453 val* var_phase /* var phase: Phase */;
1454 short int var13 /* : Bool */;
1455 short int var15 /* : Bool */;
1456 val* var16 /* : ToolContext */;
1457 val* var18 /* : ToolContext */;
1458 short int var19 /* : Bool */;
1459 val* var_other /* var other: nullable Object */;
1460 short int var21 /* : Bool */;
1461 short int var23 /* : Bool */;
1462 short int var24 /* : Bool */;
1463 var_npropdef = p0;
1464 {
1465 { /* Inline phase#ToolContext#semantize_is_lazy (self) on <self:ToolContext> */
1466 var2 = self->attrs[COLOR_nit__phase__ToolContext___semantize_is_lazy].s; /* _semantize_is_lazy on <self:ToolContext> */
1467 var = var2;
1468 RET_LABEL1:(void)0;
1469 }
1470 }
1471 var3 = !var;
1472 if (var3){
1473 goto RET_LABEL;
1474 } else {
1475 }
1476 {
1477 { /* Inline phase#APropdef#is_phased (var_npropdef) on <var_npropdef:APropdef> */
1478 var6 = var_npropdef->attrs[COLOR_nit__phase__APropdef___is_phased].s; /* _is_phased on <var_npropdef:APropdef> */
1479 var4 = var6;
1480 RET_LABEL5:(void)0;
1481 }
1482 }
1483 if (var4){
1484 goto RET_LABEL;
1485 } else {
1486 }
1487 {
1488 { /* Inline phase#APropdef#is_phased= (var_npropdef,1) on <var_npropdef:APropdef> */
1489 var_npropdef->attrs[COLOR_nit__phase__APropdef___is_phased].s = 1; /* _is_phased on <var_npropdef:APropdef> */
1490 RET_LABEL7:(void)0;
1491 }
1492 }
1493 {
1494 var8 = nit__phase___ToolContext___phases_list(self);
1495 }
1496 var_phases = var8;
1497 var_ = var_phases;
1498 {
1499 var9 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Sequence[Phase]>*/
1500 }
1501 var_10 = var9;
1502 for(;;) {
1503 {
1504 var11 = ((short int(*)(val* self))((((long)var_10&3)?class_info[((long)var_10&3)]:var_10->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_10); /* is_ok on <var_10:IndexedIterator[Phase]>*/
1505 }
1506 if (var11){
1507 {
1508 var12 = ((val*(*)(val* self))((((long)var_10&3)?class_info[((long)var_10&3)]:var_10->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_10); /* item on <var_10:IndexedIterator[Phase]>*/
1509 }
1510 var_phase = var12;
1511 {
1512 { /* Inline phase#Phase#disabled (var_phase) on <var_phase:Phase> */
1513 var15 = var_phase->attrs[COLOR_nit__phase__Phase___disabled].s; /* _disabled on <var_phase:Phase> */
1514 var13 = var15;
1515 RET_LABEL14:(void)0;
1516 }
1517 }
1518 if (var13){
1519 goto BREAK_label;
1520 } else {
1521 }
1522 {
1523 { /* Inline phase#Phase#toolcontext (var_phase) on <var_phase:Phase> */
1524 var18 = var_phase->attrs[COLOR_nit__phase__Phase___toolcontext].val; /* _toolcontext on <var_phase:Phase> */
1525 if (unlikely(var18 == NULL)) {
1526 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1527 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 200);
1528 fatal_exit(1);
1529 }
1530 var16 = var18;
1531 RET_LABEL17:(void)0;
1532 }
1533 }
1534 {
1535 { /* Inline kernel#Object#== (var16,self) on <var16:ToolContext> */
1536 var_other = self;
1537 {
1538 { /* Inline kernel#Object#is_same_instance (var16,var_other) on <var16:ToolContext> */
1539 var23 = var16 == var_other;
1540 var21 = var23;
1541 goto RET_LABEL22;
1542 RET_LABEL22:(void)0;
1543 }
1544 }
1545 var19 = var21;
1546 goto RET_LABEL20;
1547 RET_LABEL20:(void)0;
1548 }
1549 }
1550 if (unlikely(!var19)) {
1551 PRINT_ERROR("Runtime error: %s", "Assert failed");
1552 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 170);
1553 fatal_exit(1);
1554 }
1555 {
1556 nit__phase___ToolContext___phase_process_npropdef(self, var_phase, var_npropdef); /* Direct call phase#ToolContext#phase_process_npropdef on <self:ToolContext>*/
1557 }
1558 {
1559 var24 = nit___nit__ToolContext___check_errors(self);
1560 }
1561 BREAK_label: (void)0;
1562 {
1563 ((void(*)(val* self))((((long)var_10&3)?class_info[((long)var_10&3)]:var_10->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_10); /* next on <var_10:IndexedIterator[Phase]>*/
1564 }
1565 } else {
1566 goto BREAK_label25;
1567 }
1568 }
1569 BREAK_label25: (void)0;
1570 {
1571 ((void(*)(val* self))((((long)var_10&3)?class_info[((long)var_10&3)]:var_10->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_10); /* finish on <var_10:IndexedIterator[Phase]>*/
1572 }
1573 RET_LABEL:;
1574 }
1575 /* method phase#APropdef#is_phased for (self: APropdef): Bool */
1576 short int nit__phase___APropdef___is_phased(val* self) {
1577 short int var /* : Bool */;
1578 short int var1 /* : Bool */;
1579 var1 = self->attrs[COLOR_nit__phase__APropdef___is_phased].s; /* _is_phased on <self:APropdef> */
1580 var = var1;
1581 RET_LABEL:;
1582 return var;
1583 }
1584 /* method phase#APropdef#is_phased= for (self: APropdef, Bool) */
1585 void nit__phase___APropdef___is_phased_61d(val* self, short int p0) {
1586 self->attrs[COLOR_nit__phase__APropdef___is_phased].s = p0; /* _is_phased on <self:APropdef> */
1587 RET_LABEL:;
1588 }
1589 /* method phase#AnnotationPhaseVisitor#annotations for (self: AnnotationPhaseVisitor): Array[AAnnotation] */
1590 val* nit__phase___nit__phase__AnnotationPhaseVisitor___annotations(val* self) {
1591 val* var /* : Array[AAnnotation] */;
1592 val* var1 /* : Array[AAnnotation] */;
1593 var1 = self->attrs[COLOR_nit__phase__AnnotationPhaseVisitor___annotations].val; /* _annotations on <self:AnnotationPhaseVisitor> */
1594 if (unlikely(var1 == NULL)) {
1595 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _annotations");
1596 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 187);
1597 fatal_exit(1);
1598 }
1599 var = var1;
1600 RET_LABEL:;
1601 return var;
1602 }
1603 /* method phase#AnnotationPhaseVisitor#visit for (self: AnnotationPhaseVisitor, ANode) */
1604 void nit__phase___nit__phase__AnnotationPhaseVisitor___nit__parser_nodes__Visitor__visit(val* self, val* p0) {
1605 val* var_n /* var n: ANode */;
1606 short int var /* : Bool */;
1607 int cltype;
1608 int idtype;
1609 val* var1 /* : Array[AAnnotation] */;
1610 val* var3 /* : Array[AAnnotation] */;
1611 var_n = p0;
1612 {
1613 ((void(*)(val* self, val* p0))(var_n->class->vft[COLOR_nit__parser_nodes__ANode__visit_all]))(var_n, self); /* visit_all on <var_n:ANode>*/
1614 }
1615 /* <var_n:ANode> isa AAnnotation */
1616 cltype = type_nit__AAnnotation.color;
1617 idtype = type_nit__AAnnotation.id;
1618 if(cltype >= var_n->type->table_size) {
1619 var = 0;
1620 } else {
1621 var = var_n->type->type_table[cltype] == idtype;
1622 }
1623 if (var){
1624 {
1625 { /* Inline phase#AnnotationPhaseVisitor#annotations (self) on <self:AnnotationPhaseVisitor> */
1626 var3 = self->attrs[COLOR_nit__phase__AnnotationPhaseVisitor___annotations].val; /* _annotations on <self:AnnotationPhaseVisitor> */
1627 if (unlikely(var3 == NULL)) {
1628 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _annotations");
1629 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 187);
1630 fatal_exit(1);
1631 }
1632 var1 = var3;
1633 RET_LABEL2:(void)0;
1634 }
1635 }
1636 {
1637 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var1, var_n); /* Direct call array#Array#add on <var1:Array[AAnnotation]>*/
1638 }
1639 } else {
1640 }
1641 RET_LABEL:;
1642 }
1643 /* method phase#Phase#toolcontext for (self: Phase): ToolContext */
1644 val* nit___nit__Phase___toolcontext(val* self) {
1645 val* var /* : ToolContext */;
1646 val* var1 /* : ToolContext */;
1647 var1 = self->attrs[COLOR_nit__phase__Phase___toolcontext].val; /* _toolcontext on <self:Phase> */
1648 if (unlikely(var1 == NULL)) {
1649 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1650 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 200);
1651 fatal_exit(1);
1652 }
1653 var = var1;
1654 RET_LABEL:;
1655 return var;
1656 }
1657 /* method phase#Phase#toolcontext= for (self: Phase, ToolContext) */
1658 void nit___nit__Phase___toolcontext_61d(val* self, val* p0) {
1659 self->attrs[COLOR_nit__phase__Phase___toolcontext].val = p0; /* _toolcontext on <self:Phase> */
1660 RET_LABEL:;
1661 }
1662 /* method phase#Phase#in_hierarchy for (self: Phase): POSetElement[Phase] */
1663 val* nit___nit__Phase___in_hierarchy(val* self) {
1664 val* var /* : POSetElement[Phase] */;
1665 val* var1 /* : POSetElement[Phase] */;
1666 var1 = self->attrs[COLOR_nit__phase__Phase___in_hierarchy].val; /* _in_hierarchy on <self:Phase> */
1667 if (unlikely(var1 == NULL)) {
1668 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_hierarchy");
1669 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 203);
1670 fatal_exit(1);
1671 }
1672 var = var1;
1673 RET_LABEL:;
1674 return var;
1675 }
1676 /* method phase#Phase#in_hierarchy= for (self: Phase, POSetElement[Phase]) */
1677 void nit___nit__Phase___in_hierarchy_61d(val* self, val* p0) {
1678 self->attrs[COLOR_nit__phase__Phase___in_hierarchy].val = p0; /* _in_hierarchy on <self:Phase> */
1679 RET_LABEL:;
1680 }
1681 /* method phase#Phase#depends for (self: Phase): nullable Collection[Phase] */
1682 val* nit___nit__Phase___depends(val* self) {
1683 val* var /* : nullable Collection[Phase] */;
1684 val* var1 /* : nullable Collection[Phase] */;
1685 var1 = self->attrs[COLOR_nit__phase__Phase___depends].val; /* _depends on <self:Phase> */
1686 var = var1;
1687 RET_LABEL:;
1688 return var;
1689 }
1690 /* method phase#Phase#depends= for (self: Phase, nullable Collection[Phase]) */
1691 void nit___nit__Phase___depends_61d(val* self, val* p0) {
1692 self->attrs[COLOR_nit__phase__Phase___depends].val = p0; /* _depends on <self:Phase> */
1693 RET_LABEL:;
1694 }
1695 /* method phase#Phase#init for (self: Phase) */
1696 void nit___nit__Phase___standard__kernel__Object__init(val* self) {
1697 val* var /* : ToolContext */;
1698 val* var2 /* : ToolContext */;
1699 val* var3 /* : POSet[Phase] */;
1700 val* var5 /* : POSet[Phase] */;
1701 val* var6 /* : POSetElement[nullable Object] */;
1702 val* var8 /* : nullable Collection[Phase] */;
1703 val* var10 /* : nullable Collection[Phase] */;
1704 val* var_depends /* var depends: nullable Collection[Phase] */;
1705 short int var11 /* : Bool */;
1706 short int var12 /* : Bool */;
1707 val* var_other /* var other: nullable Object */;
1708 short int var14 /* : Bool */;
1709 short int var15 /* : Bool */;
1710 val* var_ /* var : Collection[Phase] */;
1711 val* var16 /* : Iterator[nullable Object] */;
1712 val* var_17 /* var : Iterator[Phase] */;
1713 short int var18 /* : Bool */;
1714 val* var19 /* : nullable Object */;
1715 val* var_d /* var d: Phase */;
1716 val* var20 /* : ToolContext */;
1717 val* var22 /* : ToolContext */;
1718 val* var23 /* : POSet[Phase] */;
1719 val* var25 /* : POSet[Phase] */;
1720 {
1721 { /* Inline phase#Phase#toolcontext (self) on <self:Phase> */
1722 var2 = self->attrs[COLOR_nit__phase__Phase___toolcontext].val; /* _toolcontext on <self:Phase> */
1723 if (unlikely(var2 == NULL)) {
1724 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1725 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 200);
1726 fatal_exit(1);
1727 }
1728 var = var2;
1729 RET_LABEL1:(void)0;
1730 }
1731 }
1732 {
1733 { /* Inline phase#ToolContext#phases (var) on <var:ToolContext> */
1734 var5 = var->attrs[COLOR_nit__phase__ToolContext___phases].val; /* _phases on <var:ToolContext> */
1735 if (unlikely(var5 == NULL)) {
1736 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _phases");
1737 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 23);
1738 fatal_exit(1);
1739 }
1740 var3 = var5;
1741 RET_LABEL4:(void)0;
1742 }
1743 }
1744 {
1745 var6 = poset___poset__POSet___add_node(var3, self);
1746 }
1747 {
1748 { /* Inline phase#Phase#in_hierarchy= (self,var6) on <self:Phase> */
1749 self->attrs[COLOR_nit__phase__Phase___in_hierarchy].val = var6; /* _in_hierarchy on <self:Phase> */
1750 RET_LABEL7:(void)0;
1751 }
1752 }
1753 {
1754 { /* Inline phase#Phase#depends (self) on <self:Phase> */
1755 var10 = self->attrs[COLOR_nit__phase__Phase___depends].val; /* _depends on <self:Phase> */
1756 var8 = var10;
1757 RET_LABEL9:(void)0;
1758 }
1759 }
1760 var_depends = var8;
1761 if (var_depends == NULL) {
1762 var11 = 0; /* is null */
1763 } else {
1764 var11 = 1; /* arg is null and recv is not */
1765 }
1766 if (0) {
1767 { /* Inline kernel#Object#!= (var_depends,((val*)NULL)) on <var_depends:nullable Collection[Phase]> */
1768 var_other = ((val*)NULL);
1769 {
1770 var14 = ((short int(*)(val* self, val* p0))((((long)var_depends&3)?class_info[((long)var_depends&3)]:var_depends->class)->vft[COLOR_standard__kernel__Object___61d_61d]))(var_depends, var_other); /* == on <var_depends:nullable Collection[Phase](Collection[Phase])>*/
1771 }
1772 var15 = !var14;
1773 var12 = var15;
1774 goto RET_LABEL13;
1775 RET_LABEL13:(void)0;
1776 }
1777 var11 = var12;
1778 }
1779 if (var11){
1780 var_ = var_depends;
1781 {
1782 var16 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Collection[Phase]>*/
1783 }
1784 var_17 = var16;
1785 for(;;) {
1786 {
1787 var18 = ((short int(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_17); /* is_ok on <var_17:Iterator[Phase]>*/
1788 }
1789 if (var18){
1790 {
1791 var19 = ((val*(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_17); /* item on <var_17:Iterator[Phase]>*/
1792 }
1793 var_d = var19;
1794 {
1795 { /* Inline phase#Phase#toolcontext (self) on <self:Phase> */
1796 var22 = self->attrs[COLOR_nit__phase__Phase___toolcontext].val; /* _toolcontext on <self:Phase> */
1797 if (unlikely(var22 == NULL)) {
1798 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1799 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 200);
1800 fatal_exit(1);
1801 }
1802 var20 = var22;
1803 RET_LABEL21:(void)0;
1804 }
1805 }
1806 {
1807 { /* Inline phase#ToolContext#phases (var20) on <var20:ToolContext> */
1808 var25 = var20->attrs[COLOR_nit__phase__ToolContext___phases].val; /* _phases on <var20:ToolContext> */
1809 if (unlikely(var25 == NULL)) {
1810 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _phases");
1811 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 23);
1812 fatal_exit(1);
1813 }
1814 var23 = var25;
1815 RET_LABEL24:(void)0;
1816 }
1817 }
1818 {
1819 poset___poset__POSet___add_edge(var23, self, var_d); /* Direct call poset#POSet#add_edge on <var23:POSet[Phase]>*/
1820 }
1821 {
1822 ((void(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_17); /* next on <var_17:Iterator[Phase]>*/
1823 }
1824 } else {
1825 goto BREAK_label;
1826 }
1827 }
1828 BREAK_label: (void)0;
1829 {
1830 ((void(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_17); /* finish on <var_17:Iterator[Phase]>*/
1831 }
1832 } else {
1833 }
1834 RET_LABEL:;
1835 }
1836 /* method phase#Phase#to_s for (self: Phase): String */
1837 val* nit___nit__Phase___standard__string__Object__to_s(val* self) {
1838 val* var /* : String */;
1839 val* var1 /* : String */;
1840 static val* varonce;
1841 val* var2 /* : String */;
1842 char* var3 /* : NativeString */;
1843 val* var4 /* : FlatString */;
1844 val* var5 /* : String */;
1845 val* var6 /* : String */;
1846 {
1847 var1 = standard__string___Object___class_name(self);
1848 }
1849 if (likely(varonce!=NULL)) {
1850 var2 = varonce;
1851 } else {
1852 var3 = "Phase";
1853 var4 = standard___standard__NativeString___to_s_with_length(var3, 5l);
1854 var2 = var4;
1855 varonce = var2;
1856 }
1857 {
1858 var5 = standard__file___String___strip_extension(var1, var2);
1859 }
1860 {
1861 var6 = standard___standard__String___to_snake_case(var5);
1862 }
1863 var = var6;
1864 goto RET_LABEL;
1865 RET_LABEL:;
1866 return var;
1867 }
1868 /* method phase#Phase#disabled for (self: Phase): Bool */
1869 short int nit___nit__Phase___disabled(val* self) {
1870 short int var /* : Bool */;
1871 short int var1 /* : Bool */;
1872 var1 = self->attrs[COLOR_nit__phase__Phase___disabled].s; /* _disabled on <self:Phase> */
1873 var = var1;
1874 RET_LABEL:;
1875 return var;
1876 }
1877 /* method phase#Phase#disabled= for (self: Phase, Bool) */
1878 void nit___nit__Phase___disabled_61d(val* self, short int p0) {
1879 self->attrs[COLOR_nit__phase__Phase___disabled].s = p0; /* _disabled on <self:Phase> */
1880 RET_LABEL:;
1881 }
1882 /* method phase#Phase#process_nmodule for (self: Phase, AModule) */
1883 void nit___nit__Phase___process_nmodule(val* self, val* p0) {
1884 val* var_nmodule /* var nmodule: AModule */;
1885 var_nmodule = p0;
1886 RET_LABEL:;
1887 }
1888 /* method phase#Phase#process_nclassdef for (self: Phase, AClassdef) */
1889 void nit___nit__Phase___process_nclassdef(val* self, val* p0) {
1890 val* var_nclassdef /* var nclassdef: AClassdef */;
1891 var_nclassdef = p0;
1892 RET_LABEL:;
1893 }
1894 /* method phase#Phase#process_npropdef for (self: Phase, APropdef) */
1895 void nit___nit__Phase___process_npropdef(val* self, val* p0) {
1896 val* var_npropdef /* var npropdef: APropdef */;
1897 var_npropdef = p0;
1898 RET_LABEL:;
1899 }
1900 /* method phase#Phase#process_annotated_node for (self: Phase, ANode, AAnnotation) */
1901 void nit___nit__Phase___process_annotated_node(val* self, val* p0, val* p1) {
1902 val* var_node /* var node: ANode */;
1903 val* var_nat /* var nat: AAnnotation */;
1904 var_node = p0;
1905 var_nat = p1;
1906 RET_LABEL:;
1907 }