NOTICE: Fix years
[nit.git] / c_src / nitc__phase.sep.1.c
1 #include "nitc__phase.sep.0.h"
2 /* method phase#ToolContext#phases for (self: ToolContext): POSet[Phase] */
3 val* nitc__phase___ToolContext___phases(val* self) {
4 val* var /* : POSet[Phase] */;
5 val* var1 /* : POSet[Phase] */;
6 var1 = self->attrs[COLOR_nitc__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_nitc__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* nitc__phase___ToolContext___opt_disable_phase(val* self) {
18 val* var /* : OptionArray */;
19 val* var1 /* : OptionArray */;
20 var1 = self->attrs[COLOR_nitc__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_nitc__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* nitc__phase___ToolContext___opt_sloppy(val* self) {
32 val* var /* : OptionBool */;
33 val* var1 /* : OptionBool */;
34 var1 = self->attrs[COLOR_nitc__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_nitc__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 nitc__phase___ToolContext___core__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_nitc__phase___ToolContext___core__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_nitc__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_nitc__toolcontext, 342);
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_nitc__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_nitc__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_nitc__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_nitc__phase, 33);
87 fatal_exit(1);
88 }
89 var6 = var8;
90 RET_LABEL7:(void)0;
91 }
92 }
93 var9 = NEW_core__Array(&type_core__Array__opts__Option);
94 { /* var9 = array_instance Array[Option] */
95 var10 = NEW_core__NativeArray(2l, &type_core__NativeArray__opts__Option);
96 ((struct instance_core__NativeArray*)var10)->values[0] = (val*) var3;
97 ((struct instance_core__NativeArray*)var10)->values[1] = (val*) var6;
98 {
99 ((void(*)(val* self, val* p0, long p1))(var9->class->vft[COLOR_core__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 nitc__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 /* : IndexedIterator[nullable Object] */;
116 val* var_7 /* var : IndexedIterator[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 /* : String */;
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* var20 /* : nullable Object */;
131 val* var_p /* var p: Phase */;
132 val* var21 /* : POSetElement[Phase] */;
133 val* var23 /* : POSetElement[Phase] */;
134 val* var24 /* : Collection[nullable Object] */;
135 val* var_deps /* var deps: Collection[Phase] */;
136 short int var25 /* : Bool */;
137 val* var26 /* : Sys */;
138 val* var27 /* : Sys */;
139 val* var29 /* : NativeArray[String] */;
140 static val* varonce28;
141 static val* varonce30;
142 val* var31 /* : String */;
143 char* var32 /* : NativeString */;
144 val* var33 /* : String */;
145 static val* varonce34;
146 val* var35 /* : String */;
147 char* var36 /* : NativeString */;
148 val* var37 /* : String */;
149 val* var38 /* : String */;
150 static val* varonce39;
151 val* var40 /* : String */;
152 char* var41 /* : NativeString */;
153 val* var42 /* : String */;
154 val* var43 /* : String */;
155 val* var44 /* : String */;
156 val* var45 /* : Sys */;
157 short int var_found /* var found: Bool */;
158 val* var47 /* : POSet[Phase] */;
159 val* var49 /* : POSet[Phase] */;
160 val* var_50 /* var : POSet[Phase] */;
161 val* var51 /* : Iterator[nullable Object] */;
162 val* var_52 /* var : Iterator[Phase] */;
163 short int var53 /* : Bool */;
164 val* var55 /* : nullable Object */;
165 val* var_p56 /* var p: Phase */;
166 val* var57 /* : String */;
167 short int var58 /* : Bool */;
168 val* var_other /* var other: nullable Object */;
169 short int var60 /* : Bool */;
170 short int var61 /* : Bool */;
171 short int var64 /* : Bool */;
172 val* var66 /* : NativeArray[String] */;
173 static val* varonce65;
174 static val* varonce67;
175 val* var68 /* : String */;
176 char* var69 /* : NativeString */;
177 val* var70 /* : String */;
178 static val* varonce71;
179 val* var72 /* : String */;
180 char* var73 /* : NativeString */;
181 val* var74 /* : String */;
182 val* var75 /* : 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_nitc__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_nitc__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_nitc__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 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
214 }
215 var_7 = var6;
216 for(;;) {
217 {
218 var8 = ((short int(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_7); /* is_ok on <var_7:IndexedIterator[String]>*/
219 }
220 if (var8){
221 } else {
222 goto BREAK_label;
223 }
224 {
225 var9 = ((val*(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_7); /* item on <var_7:IndexedIterator[String]>*/
226 }
227 var_v = var9;
228 if (likely(varonce!=NULL)) {
229 var10 = varonce;
230 } else {
231 var11 = "list";
232 var12 = core__flat___NativeString___to_s_full(var11, 4l, 4l);
233 var10 = var12;
234 varonce = var10;
235 }
236 {
237 var13 = ((short int(*)(val* self, val* p0))(var_v->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_v, var10); /* == on <var_v:String>*/
238 }
239 if (var13){
240 {
241 var14 = nitc__phase___ToolContext___phases_list(self);
242 }
243 var_15 = var14;
244 {
245 var16 = ((val*(*)(val* self))((((long)var_15&3)?class_info[((long)var_15&3)]:var_15->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_15); /* iterator on <var_15:Sequence[Phase]>*/
246 }
247 var_17 = var16;
248 for(;;) {
249 {
250 var18 = ((short int(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_17); /* is_ok on <var_17:IndexedIterator[Phase]>*/
251 }
252 if (var18){
253 } else {
254 goto BREAK_label19;
255 }
256 {
257 var20 = ((val*(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_17); /* item on <var_17:IndexedIterator[Phase]>*/
258 }
259 var_p = var20;
260 {
261 { /* Inline phase#Phase#in_hierarchy (var_p) on <var_p:Phase> */
262 var23 = var_p->attrs[COLOR_nitc__phase__Phase___in_hierarchy].val; /* _in_hierarchy on <var_p:Phase> */
263 if (unlikely(var23 == NULL)) {
264 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_hierarchy");
265 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 203);
266 fatal_exit(1);
267 }
268 var21 = var23;
269 RET_LABEL22:(void)0;
270 }
271 }
272 {
273 var24 = poset___poset__POSetElement___direct_greaters(var21);
274 }
275 var_deps = var24;
276 {
277 var25 = ((short int(*)(val* self))((((long)var_deps&3)?class_info[((long)var_deps&3)]:var_deps->class)->vft[COLOR_core__abstract_collection__Collection__is_empty]))(var_deps); /* is_empty on <var_deps:Collection[Phase]>*/
278 }
279 if (var25){
280 var26 = glob_sys;
281 {
282 core__file___Sys___print(var26, var_p); /* Direct call file#Sys#print on <var26:Sys>*/
283 }
284 } else {
285 var27 = glob_sys;
286 if (unlikely(varonce28==NULL)) {
287 var29 = NEW_core__NativeArray(4l, &type_core__NativeArray__core__String);
288 if (likely(varonce30!=NULL)) {
289 var31 = varonce30;
290 } else {
291 var32 = " (dep: ";
292 var33 = core__flat___NativeString___to_s_full(var32, 7l, 7l);
293 var31 = var33;
294 varonce30 = var31;
295 }
296 ((struct instance_core__NativeArray*)var29)->values[1]=var31;
297 if (likely(varonce34!=NULL)) {
298 var35 = varonce34;
299 } else {
300 var36 = ")";
301 var37 = core__flat___NativeString___to_s_full(var36, 1l, 1l);
302 var35 = var37;
303 varonce34 = var35;
304 }
305 ((struct instance_core__NativeArray*)var29)->values[3]=var35;
306 } else {
307 var29 = varonce28;
308 varonce28 = NULL;
309 }
310 {
311 var38 = ((val*(*)(val* self))(var_p->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_p); /* to_s on <var_p:Phase>*/
312 }
313 ((struct instance_core__NativeArray*)var29)->values[0]=var38;
314 if (likely(varonce39!=NULL)) {
315 var40 = varonce39;
316 } else {
317 var41 = ", ";
318 var42 = core__flat___NativeString___to_s_full(var41, 2l, 2l);
319 var40 = var42;
320 varonce39 = var40;
321 }
322 {
323 var43 = core__abstract_text___Collection___join(var_deps, var40);
324 }
325 ((struct instance_core__NativeArray*)var29)->values[2]=var43;
326 {
327 var44 = ((val*(*)(val* self))(var29->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var29); /* native_to_s on <var29:NativeArray[String]>*/
328 }
329 varonce28 = var29;
330 {
331 core__file___Sys___print(var27, var44); /* Direct call file#Sys#print on <var27:Sys>*/
332 }
333 }
334 {
335 ((void(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_17); /* next on <var_17:IndexedIterator[Phase]>*/
336 }
337 }
338 BREAK_label19: (void)0;
339 {
340 ((void(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_17); /* finish on <var_17:IndexedIterator[Phase]>*/
341 }
342 var45 = glob_sys;
343 {
344 { /* Inline kernel#Sys#exit (var45,0l) on <var45:Sys> */
345 exit(0l);
346 RET_LABEL46:(void)0;
347 }
348 }
349 } else {
350 }
351 var_found = 0;
352 {
353 { /* Inline phase#ToolContext#phases (self) on <self:ToolContext> */
354 var49 = self->attrs[COLOR_nitc__phase__ToolContext___phases].val; /* _phases on <self:ToolContext> */
355 if (unlikely(var49 == NULL)) {
356 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _phases");
357 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 23);
358 fatal_exit(1);
359 }
360 var47 = var49;
361 RET_LABEL48:(void)0;
362 }
363 }
364 var_50 = var47;
365 {
366 var51 = poset___poset__POSet___core__abstract_collection__Collection__iterator(var_50);
367 }
368 var_52 = var51;
369 for(;;) {
370 {
371 var53 = ((short int(*)(val* self))((((long)var_52&3)?class_info[((long)var_52&3)]:var_52->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_52); /* is_ok on <var_52:Iterator[Phase]>*/
372 }
373 if (var53){
374 } else {
375 goto BREAK_label54;
376 }
377 {
378 var55 = ((val*(*)(val* self))((((long)var_52&3)?class_info[((long)var_52&3)]:var_52->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_52); /* item on <var_52:Iterator[Phase]>*/
379 }
380 var_p56 = var55;
381 {
382 var57 = nitc___nitc__Phase___core__abstract_text__Object__to_s(var_p56);
383 }
384 {
385 { /* Inline kernel#Object#!= (var_v,var57) on <var_v:String> */
386 var_other = var57;
387 {
388 var60 = ((short int(*)(val* self, val* p0))(var_v->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_v, var_other); /* == on <var_v:String>*/
389 }
390 var61 = !var60;
391 var58 = var61;
392 goto RET_LABEL59;
393 RET_LABEL59:(void)0;
394 }
395 }
396 if (var58){
397 goto BREAK_label62;
398 } else {
399 }
400 var_found = 1;
401 {
402 { /* Inline phase#Phase#disabled= (var_p56,1) on <var_p56:Phase> */
403 var_p56->attrs[COLOR_nitc__phase__Phase___disabled].s = 1; /* _disabled on <var_p56:Phase> */
404 RET_LABEL63:(void)0;
405 }
406 }
407 BREAK_label62: (void)0;
408 {
409 ((void(*)(val* self))((((long)var_52&3)?class_info[((long)var_52&3)]:var_52->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_52); /* next on <var_52:Iterator[Phase]>*/
410 }
411 }
412 BREAK_label54: (void)0;
413 {
414 ((void(*)(val* self))((((long)var_52&3)?class_info[((long)var_52&3)]:var_52->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_52); /* finish on <var_52:Iterator[Phase]>*/
415 }
416 var64 = !var_found;
417 if (var64){
418 if (unlikely(varonce65==NULL)) {
419 var66 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
420 if (likely(varonce67!=NULL)) {
421 var68 = varonce67;
422 } else {
423 var69 = "Error: no phase named `";
424 var70 = core__flat___NativeString___to_s_full(var69, 23l, 23l);
425 var68 = var70;
426 varonce67 = var68;
427 }
428 ((struct instance_core__NativeArray*)var66)->values[0]=var68;
429 if (likely(varonce71!=NULL)) {
430 var72 = varonce71;
431 } else {
432 var73 = "`. Use `list` to list all phases.";
433 var74 = core__flat___NativeString___to_s_full(var73, 33l, 33l);
434 var72 = var74;
435 varonce71 = var72;
436 }
437 ((struct instance_core__NativeArray*)var66)->values[2]=var72;
438 } else {
439 var66 = varonce65;
440 varonce65 = NULL;
441 }
442 ((struct instance_core__NativeArray*)var66)->values[1]=var_v;
443 {
444 var75 = ((val*(*)(val* self))(var66->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var66); /* native_to_s on <var66:NativeArray[String]>*/
445 }
446 varonce65 = var66;
447 {
448 nitc___nitc__ToolContext___fatal_error(self, ((val*)NULL), var75); /* Direct call toolcontext#ToolContext#fatal_error on <self:ToolContext>*/
449 }
450 } else {
451 }
452 {
453 ((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_7); /* next on <var_7:IndexedIterator[String]>*/
454 }
455 }
456 BREAK_label: (void)0;
457 {
458 ((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_7); /* finish on <var_7:IndexedIterator[String]>*/
459 }
460 {
461 { /* Inline phase#ToolContext#opt_sloppy (self) on <self:ToolContext> */
462 var78 = self->attrs[COLOR_nitc__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_nitc__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_nitc__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* nitc__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_nitc__phase__ToolContext___phases_list].val != NULL; /* _phases_list on <self:ToolContext> */
504 if(likely(var1)) {
505 var2 = self->attrs[COLOR_nitc__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_nitc__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_nitc__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_nitc__phase, 23);
519 fatal_exit(1);
520 }
521 var5 = var7;
522 RET_LABEL6:(void)0;
523 }
524 }
525 {
526 var8 = core__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_nitc__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_nitc__phase, 23);
535 fatal_exit(1);
536 }
537 var9 = var11;
538 RET_LABEL10:(void)0;
539 }
540 }
541 {
542 core___core__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_nitc__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 nitc__phase___ToolContext___semantize_is_lazy(val* self) {
557 short int var /* : Bool */;
558 short int var1 /* : Bool */;
559 var1 = self->attrs[COLOR_nitc__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 nitc__phase___ToolContext___semantize_is_lazy_61d(val* self, short int p0) {
566 self->attrs[COLOR_nitc__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* nitc__phase___ToolContext___phased_modules(val* self) {
571 val* var /* : HashSet[AModule] */;
572 val* var1 /* : HashSet[AModule] */;
573 var1 = self->attrs[COLOR_nitc__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_nitc__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 nitc__phase___ToolContext___run_phases(val* self, val* p0) {
585 val* var_nmodules /* var nmodules: Collection[AModule] */;
586 val* var /* : Sys */;
587 long var1 /* : Int */;
588 long var3 /* : Int */;
589 long var_time0 /* var time0: Int */;
590 static val* varonce;
591 val* var4 /* : String */;
592 char* var5 /* : NativeString */;
593 val* var6 /* : String */;
594 val* var7 /* : Sequence[Phase] */;
595 val* var_phases /* var phases: Sequence[Phase] */;
596 val* var_ /* var : Sequence[Phase] */;
597 val* var8 /* : Iterator[nullable Object] */;
598 val* var_9 /* var : IndexedIterator[Phase] */;
599 short int var10 /* : Bool */;
600 val* var11 /* : nullable Object */;
601 val* var_phase /* var phase: Phase */;
602 val* var13 /* : NativeArray[String] */;
603 static val* varonce12;
604 static val* varonce14;
605 val* var15 /* : String */;
606 char* var16 /* : NativeString */;
607 val* var17 /* : String */;
608 val* var18 /* : String */;
609 val* var19 /* : String */;
610 val* var_20 /* var : Collection[AModule] */;
611 val* var21 /* : Iterator[nullable Object] */;
612 val* var_22 /* var : Iterator[AModule] */;
613 short int var23 /* : Bool */;
614 val* var25 /* : nullable Object */;
615 val* var_nmodule /* var nmodule: AModule */;
616 val* var26 /* : HashSet[AModule] */;
617 val* var28 /* : HashSet[AModule] */;
618 short int var29 /* : Bool */;
619 val* var31 /* : HashSet[AModule] */;
620 val* var33 /* : HashSet[AModule] */;
621 val* var35 /* : NativeArray[String] */;
622 static val* varonce34;
623 static val* varonce36;
624 val* var37 /* : String */;
625 char* var38 /* : NativeString */;
626 val* var39 /* : String */;
627 val* var40 /* : Location */;
628 val* var42 /* : Location */;
629 val* var43 /* : nullable SourceFile */;
630 val* var45 /* : nullable SourceFile */;
631 val* var46 /* : String */;
632 val* var48 /* : String */;
633 val* var49 /* : String */;
634 val* var50 /* : AnnotationPhaseVisitor */;
635 val* var_vannot /* var vannot: AnnotationPhaseVisitor */;
636 val* var_52 /* var : Sequence[Phase] */;
637 val* var53 /* : Iterator[nullable Object] */;
638 val* var_54 /* var : IndexedIterator[Phase] */;
639 short int var55 /* : Bool */;
640 val* var57 /* : nullable Object */;
641 val* var_phase58 /* var phase: Phase */;
642 short int var59 /* : Bool */;
643 short int var61 /* : Bool */;
644 val* var63 /* : ToolContext */;
645 val* var65 /* : ToolContext */;
646 short int var66 /* : Bool */;
647 val* var_other /* var other: nullable Object */;
648 short int var68 /* : Bool */;
649 short int var70 /* : Bool */;
650 long var71 /* : Int */;
651 long var73 /* : Int */;
652 long var_errcount /* var errcount: Int */;
653 long var74 /* : Int */;
654 long var76 /* : Int */;
655 short int var77 /* : Bool */;
656 short int var79 /* : Bool */;
657 short int var80 /* : Bool */;
658 short int var81 /* : Bool */;
659 long var82 /* : Int */;
660 long var84 /* : Int */;
661 val* var85 /* : ANodes[AClassdef] */;
662 val* var87 /* : ANodes[AClassdef] */;
663 val* var_88 /* var : ANodes[AClassdef] */;
664 val* var89 /* : Iterator[ANode] */;
665 val* var_90 /* var : Iterator[AClassdef] */;
666 short int var91 /* : Bool */;
667 val* var93 /* : nullable Object */;
668 val* var_nclassdef /* var nclassdef: AClassdef */;
669 val* var94 /* : ToolContext */;
670 val* var96 /* : ToolContext */;
671 short int var97 /* : Bool */;
672 short int var99 /* : Bool */;
673 short int var101 /* : Bool */;
674 short int var102 /* : Bool */;
675 short int var104 /* : Bool */;
676 short int var105 /* : Bool */;
677 val* var106 /* : ANodes[APropdef] */;
678 val* var108 /* : ANodes[APropdef] */;
679 val* var_109 /* var : ANodes[APropdef] */;
680 val* var110 /* : Iterator[ANode] */;
681 val* var_111 /* var : Iterator[APropdef] */;
682 short int var112 /* : Bool */;
683 val* var114 /* : nullable Object */;
684 val* var_npropdef /* var npropdef: APropdef */;
685 val* var115 /* : ToolContext */;
686 val* var117 /* : ToolContext */;
687 short int var118 /* : Bool */;
688 short int var120 /* : Bool */;
689 short int var122 /* : Bool */;
690 long var123 /* : Int */;
691 long var125 /* : Int */;
692 short int var126 /* : Bool */;
693 short int var128 /* : Bool */;
694 short int var129 /* : Bool */;
695 short int var130 /* : Bool */;
696 val* var131 /* : Array[AAnnotation] */;
697 val* var133 /* : Array[AAnnotation] */;
698 val* var_134 /* var : Array[AAnnotation] */;
699 val* var135 /* : IndexedIterator[nullable Object] */;
700 val* var_136 /* var : IndexedIterator[AAnnotation] */;
701 short int var137 /* : Bool */;
702 val* var139 /* : nullable Object */;
703 val* var_na /* var na: AAnnotation */;
704 val* var140 /* : nullable ANode */;
705 val* var142 /* : nullable ANode */;
706 val* var_p /* var p: nullable ANode */;
707 short int var143 /* : Bool */;
708 int cltype;
709 int idtype;
710 val* var144 /* : nullable ANode */;
711 val* var146 /* : nullable ANode */;
712 short int var147 /* : Bool */;
713 short int var148 /* : Bool */;
714 val* var_other150 /* var other: nullable Object */;
715 short int var151 /* : Bool */;
716 short int var152 /* : Bool */;
717 long var153 /* : Int */;
718 long var155 /* : Int */;
719 short int var156 /* : Bool */;
720 short int var158 /* : Bool */;
721 short int var159 /* : Bool */;
722 short int var160 /* : Bool */;
723 short int var161 /* : Bool */;
724 val* var162 /* : Sys */;
725 long var163 /* : Int */;
726 long var165 /* : Int */;
727 long var_time1 /* var time1: Int */;
728 val* var167 /* : NativeArray[String] */;
729 static val* varonce166;
730 static val* varonce168;
731 val* var169 /* : String */;
732 char* var170 /* : NativeString */;
733 val* var171 /* : String */;
734 static val* varonce172;
735 val* var173 /* : String */;
736 char* var174 /* : NativeString */;
737 val* var175 /* : String */;
738 long var176 /* : Int */;
739 short int var178 /* : Bool */;
740 int cltype179;
741 int idtype180;
742 const char* var_class_name;
743 long var181 /* : Int */;
744 val* var182 /* : String */;
745 val* var183 /* : String */;
746 short int var184 /* : Bool */;
747 var_nmodules = p0;
748 var = glob_sys;
749 {
750 { /* Inline time#Sys#get_time (var) on <var:Sys> */
751 struct nitni_instance* var_for_c_0;
752 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
753 var_for_c_0->value = var;
754 var3 = time___Sys_get_time___impl(var_for_c_0);
755 var1 = var3;
756 goto RET_LABEL2;
757 RET_LABEL2:(void)0;
758 }
759 }
760 var_time0 = var1;
761 if (likely(varonce!=NULL)) {
762 var4 = varonce;
763 } else {
764 var5 = "*** SEMANTIC ANALYSIS ***";
765 var6 = core__flat___NativeString___to_s_full(var5, 25l, 25l);
766 var4 = var6;
767 varonce = var4;
768 }
769 {
770 nitc___nitc__ToolContext___info(self, var4, 1l); /* Direct call toolcontext#ToolContext#info on <self:ToolContext>*/
771 }
772 {
773 var7 = nitc__phase___ToolContext___phases_list(self);
774 }
775 var_phases = var7;
776 var_ = var_phases;
777 {
778 var8 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Sequence[Phase]>*/
779 }
780 var_9 = var8;
781 for(;;) {
782 {
783 var10 = ((short int(*)(val* self))((((long)var_9&3)?class_info[((long)var_9&3)]:var_9->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_9); /* is_ok on <var_9:IndexedIterator[Phase]>*/
784 }
785 if (var10){
786 } else {
787 goto BREAK_label;
788 }
789 {
790 var11 = ((val*(*)(val* self))((((long)var_9&3)?class_info[((long)var_9&3)]:var_9->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_9); /* item on <var_9:IndexedIterator[Phase]>*/
791 }
792 var_phase = var11;
793 if (unlikely(varonce12==NULL)) {
794 var13 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
795 if (likely(varonce14!=NULL)) {
796 var15 = varonce14;
797 } else {
798 var16 = " registered phases: ";
799 var17 = core__flat___NativeString___to_s_full(var16, 20l, 20l);
800 var15 = var17;
801 varonce14 = var15;
802 }
803 ((struct instance_core__NativeArray*)var13)->values[0]=var15;
804 } else {
805 var13 = varonce12;
806 varonce12 = NULL;
807 }
808 {
809 var18 = ((val*(*)(val* self))(var_phase->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_phase); /* to_s on <var_phase:Phase>*/
810 }
811 ((struct instance_core__NativeArray*)var13)->values[1]=var18;
812 {
813 var19 = ((val*(*)(val* self))(var13->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var13); /* native_to_s on <var13:NativeArray[String]>*/
814 }
815 varonce12 = var13;
816 {
817 nitc___nitc__ToolContext___info(self, var19, 2l); /* Direct call toolcontext#ToolContext#info on <self:ToolContext>*/
818 }
819 {
820 ((void(*)(val* self))((((long)var_9&3)?class_info[((long)var_9&3)]:var_9->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_9); /* next on <var_9:IndexedIterator[Phase]>*/
821 }
822 }
823 BREAK_label: (void)0;
824 {
825 ((void(*)(val* self))((((long)var_9&3)?class_info[((long)var_9&3)]:var_9->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_9); /* finish on <var_9:IndexedIterator[Phase]>*/
826 }
827 var_20 = var_nmodules;
828 {
829 var21 = ((val*(*)(val* self))((((long)var_20&3)?class_info[((long)var_20&3)]:var_20->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_20); /* iterator on <var_20:Collection[AModule]>*/
830 }
831 var_22 = var21;
832 for(;;) {
833 {
834 var23 = ((short int(*)(val* self))((((long)var_22&3)?class_info[((long)var_22&3)]:var_22->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_22); /* is_ok on <var_22:Iterator[AModule]>*/
835 }
836 if (var23){
837 } else {
838 goto BREAK_label24;
839 }
840 {
841 var25 = ((val*(*)(val* self))((((long)var_22&3)?class_info[((long)var_22&3)]:var_22->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_22); /* item on <var_22:Iterator[AModule]>*/
842 }
843 var_nmodule = var25;
844 {
845 { /* Inline phase#ToolContext#phased_modules (self) on <self:ToolContext> */
846 var28 = self->attrs[COLOR_nitc__phase__ToolContext___phased_modules].val; /* _phased_modules on <self:ToolContext> */
847 if (unlikely(var28 == NULL)) {
848 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _phased_modules");
849 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 86);
850 fatal_exit(1);
851 }
852 var26 = var28;
853 RET_LABEL27:(void)0;
854 }
855 }
856 {
857 var29 = core___core__HashSet___core__abstract_collection__Collection__has(var26, var_nmodule);
858 }
859 if (var29){
860 goto BREAK_label30;
861 } else {
862 }
863 {
864 { /* Inline phase#ToolContext#phased_modules (self) on <self:ToolContext> */
865 var33 = self->attrs[COLOR_nitc__phase__ToolContext___phased_modules].val; /* _phased_modules on <self:ToolContext> */
866 if (unlikely(var33 == NULL)) {
867 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _phased_modules");
868 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 86);
869 fatal_exit(1);
870 }
871 var31 = var33;
872 RET_LABEL32:(void)0;
873 }
874 }
875 {
876 core___core__HashSet___core__abstract_collection__SimpleCollection__add(var31, var_nmodule); /* Direct call hash_collection#HashSet#add on <var31:HashSet[AModule]>*/
877 }
878 if (unlikely(varonce34==NULL)) {
879 var35 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
880 if (likely(varonce36!=NULL)) {
881 var37 = varonce36;
882 } else {
883 var38 = "Semantic analysis module ";
884 var39 = core__flat___NativeString___to_s_full(var38, 25l, 25l);
885 var37 = var39;
886 varonce36 = var37;
887 }
888 ((struct instance_core__NativeArray*)var35)->values[0]=var37;
889 } else {
890 var35 = varonce34;
891 varonce34 = NULL;
892 }
893 {
894 { /* Inline parser_nodes#ANode#location (var_nmodule) on <var_nmodule:AModule> */
895 var42 = var_nmodule->attrs[COLOR_nitc__parser_nodes__ANode___location].val; /* _location on <var_nmodule:AModule> */
896 if (unlikely(var42 == NULL)) {
897 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
898 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 24);
899 fatal_exit(1);
900 }
901 var40 = var42;
902 RET_LABEL41:(void)0;
903 }
904 }
905 {
906 { /* Inline location#Location#file (var40) on <var40:Location> */
907 var45 = var40->attrs[COLOR_nitc__location__Location___file].val; /* _file on <var40:Location> */
908 var43 = var45;
909 RET_LABEL44:(void)0;
910 }
911 }
912 if (var43 == NULL) {
913 PRINT_ERROR("Runtime error: %s", "Receiver is null");
914 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 106);
915 fatal_exit(1);
916 } else {
917 { /* Inline location#SourceFile#filename (var43) on <var43:nullable SourceFile> */
918 if (unlikely(var43 == NULL)) {
919 PRINT_ERROR("Runtime error: %s", "Receiver is null");
920 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__location, 22);
921 fatal_exit(1);
922 }
923 var48 = var43->attrs[COLOR_nitc__location__SourceFile___filename].val; /* _filename on <var43:nullable SourceFile> */
924 if (unlikely(var48 == NULL)) {
925 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _filename");
926 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__location, 22);
927 fatal_exit(1);
928 }
929 var46 = var48;
930 RET_LABEL47:(void)0;
931 }
932 }
933 ((struct instance_core__NativeArray*)var35)->values[1]=var46;
934 {
935 var49 = ((val*(*)(val* self))(var35->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var35); /* native_to_s on <var35:NativeArray[String]>*/
936 }
937 varonce34 = var35;
938 {
939 nitc___nitc__ToolContext___info(self, var49, 2l); /* Direct call toolcontext#ToolContext#info on <self:ToolContext>*/
940 }
941 var50 = NEW_nitc__phase__AnnotationPhaseVisitor(&type_nitc__phase__AnnotationPhaseVisitor);
942 {
943 { /* Inline kernel#Object#init (var50) on <var50:AnnotationPhaseVisitor> */
944 RET_LABEL51:(void)0;
945 }
946 }
947 var_vannot = var50;
948 {
949 nitc___nitc__Visitor___enter_visit(var_vannot, var_nmodule); /* Direct call parser_nodes#Visitor#enter_visit on <var_vannot:AnnotationPhaseVisitor>*/
950 }
951 var_52 = var_phases;
952 {
953 var53 = ((val*(*)(val* self))((((long)var_52&3)?class_info[((long)var_52&3)]:var_52->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_52); /* iterator on <var_52:Sequence[Phase]>*/
954 }
955 var_54 = var53;
956 for(;;) {
957 {
958 var55 = ((short int(*)(val* self))((((long)var_54&3)?class_info[((long)var_54&3)]:var_54->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_54); /* is_ok on <var_54:IndexedIterator[Phase]>*/
959 }
960 if (var55){
961 } else {
962 goto BREAK_label56;
963 }
964 {
965 var57 = ((val*(*)(val* self))((((long)var_54&3)?class_info[((long)var_54&3)]:var_54->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_54); /* item on <var_54:IndexedIterator[Phase]>*/
966 }
967 var_phase58 = var57;
968 {
969 { /* Inline phase#Phase#disabled (var_phase58) on <var_phase58:Phase> */
970 var61 = var_phase58->attrs[COLOR_nitc__phase__Phase___disabled].s; /* _disabled on <var_phase58:Phase> */
971 var59 = var61;
972 RET_LABEL60:(void)0;
973 }
974 }
975 if (var59){
976 goto BREAK_label62;
977 } else {
978 }
979 {
980 { /* Inline phase#Phase#toolcontext (var_phase58) on <var_phase58:Phase> */
981 var65 = var_phase58->attrs[COLOR_nitc__phase__Phase___toolcontext].val; /* _toolcontext on <var_phase58:Phase> */
982 if (unlikely(var65 == NULL)) {
983 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
984 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 200);
985 fatal_exit(1);
986 }
987 var63 = var65;
988 RET_LABEL64:(void)0;
989 }
990 }
991 {
992 { /* Inline kernel#Object#== (var63,self) on <var63:ToolContext> */
993 var_other = self;
994 {
995 { /* Inline kernel#Object#is_same_instance (var63,var_other) on <var63:ToolContext> */
996 var70 = var63 == var_other;
997 var68 = var70;
998 goto RET_LABEL69;
999 RET_LABEL69:(void)0;
1000 }
1001 }
1002 var66 = var68;
1003 goto RET_LABEL67;
1004 RET_LABEL67:(void)0;
1005 }
1006 }
1007 if (unlikely(!var66)) {
1008 PRINT_ERROR("Runtime error: %s", "Assert failed");
1009 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 113);
1010 fatal_exit(1);
1011 }
1012 {
1013 { /* Inline toolcontext#ToolContext#error_count (self) on <self:ToolContext> */
1014 var73 = self->attrs[COLOR_nitc__toolcontext__ToolContext___error_count].l; /* _error_count on <self:ToolContext> */
1015 var71 = var73;
1016 RET_LABEL72:(void)0;
1017 }
1018 }
1019 var_errcount = var71;
1020 {
1021 ((void(*)(val* self, val* p0))(var_phase58->class->vft[COLOR_nitc__phase__Phase__process_nmodule]))(var_phase58, var_nmodule); /* process_nmodule on <var_phase58:Phase>*/
1022 }
1023 {
1024 { /* Inline toolcontext#ToolContext#error_count (self) on <self:ToolContext> */
1025 var76 = self->attrs[COLOR_nitc__toolcontext__ToolContext___error_count].l; /* _error_count on <self:ToolContext> */
1026 var74 = var76;
1027 RET_LABEL75:(void)0;
1028 }
1029 }
1030 {
1031 { /* Inline kernel#Int#!= (var_errcount,var74) on <var_errcount:Int> */
1032 var79 = var_errcount == var74;
1033 var80 = !var79;
1034 var77 = var80;
1035 goto RET_LABEL78;
1036 RET_LABEL78:(void)0;
1037 }
1038 }
1039 if (var77){
1040 {
1041 var81 = nitc___nitc__ToolContext___check_errors(self);
1042 }
1043 } else {
1044 }
1045 {
1046 { /* Inline toolcontext#ToolContext#error_count (self) on <self:ToolContext> */
1047 var84 = self->attrs[COLOR_nitc__toolcontext__ToolContext___error_count].l; /* _error_count on <self:ToolContext> */
1048 var82 = var84;
1049 RET_LABEL83:(void)0;
1050 }
1051 }
1052 var_errcount = var82;
1053 {
1054 { /* Inline parser_nodes#AModule#n_classdefs (var_nmodule) on <var_nmodule:AModule> */
1055 var87 = var_nmodule->attrs[COLOR_nitc__parser_nodes__AModule___n_classdefs].val; /* _n_classdefs on <var_nmodule:AModule> */
1056 if (unlikely(var87 == NULL)) {
1057 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_classdefs");
1058 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 1062);
1059 fatal_exit(1);
1060 }
1061 var85 = var87;
1062 RET_LABEL86:(void)0;
1063 }
1064 }
1065 var_88 = var85;
1066 {
1067 var89 = nitc___nitc__ANodes___core__abstract_collection__Collection__iterator(var_88);
1068 }
1069 var_90 = var89;
1070 for(;;) {
1071 {
1072 var91 = ((short int(*)(val* self))((((long)var_90&3)?class_info[((long)var_90&3)]:var_90->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_90); /* is_ok on <var_90:Iterator[AClassdef]>*/
1073 }
1074 if (var91){
1075 } else {
1076 goto BREAK_label92;
1077 }
1078 {
1079 var93 = ((val*(*)(val* self))((((long)var_90&3)?class_info[((long)var_90&3)]:var_90->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_90); /* item on <var_90:Iterator[AClassdef]>*/
1080 }
1081 var_nclassdef = var93;
1082 {
1083 { /* Inline phase#Phase#toolcontext (var_phase58) on <var_phase58:Phase> */
1084 var96 = var_phase58->attrs[COLOR_nitc__phase__Phase___toolcontext].val; /* _toolcontext on <var_phase58:Phase> */
1085 if (unlikely(var96 == NULL)) {
1086 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1087 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 200);
1088 fatal_exit(1);
1089 }
1090 var94 = var96;
1091 RET_LABEL95:(void)0;
1092 }
1093 }
1094 {
1095 { /* Inline kernel#Object#== (var94,self) on <var94:ToolContext> */
1096 var_other = self;
1097 {
1098 { /* Inline kernel#Object#is_same_instance (var94,var_other) on <var94:ToolContext> */
1099 var101 = var94 == var_other;
1100 var99 = var101;
1101 goto RET_LABEL100;
1102 RET_LABEL100:(void)0;
1103 }
1104 }
1105 var97 = var99;
1106 goto RET_LABEL98;
1107 RET_LABEL98:(void)0;
1108 }
1109 }
1110 if (unlikely(!var97)) {
1111 PRINT_ERROR("Runtime error: %s", "Assert failed");
1112 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 121);
1113 fatal_exit(1);
1114 }
1115 {
1116 ((void(*)(val* self, val* p0))(var_phase58->class->vft[COLOR_nitc__phase__Phase__process_nclassdef]))(var_phase58, var_nclassdef); /* process_nclassdef on <var_phase58:Phase>*/
1117 }
1118 {
1119 { /* Inline phase#ToolContext#semantize_is_lazy (self) on <self:ToolContext> */
1120 var104 = self->attrs[COLOR_nitc__phase__ToolContext___semantize_is_lazy].s; /* _semantize_is_lazy on <self:ToolContext> */
1121 var102 = var104;
1122 RET_LABEL103:(void)0;
1123 }
1124 }
1125 var105 = !var102;
1126 if (var105){
1127 {
1128 { /* Inline parser_nodes#AClassdef#n_propdefs (var_nclassdef) on <var_nclassdef:AClassdef> */
1129 var108 = var_nclassdef->attrs[COLOR_nitc__parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <var_nclassdef:AClassdef> */
1130 if (unlikely(var108 == NULL)) {
1131 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_propdefs");
1132 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 1155);
1133 fatal_exit(1);
1134 }
1135 var106 = var108;
1136 RET_LABEL107:(void)0;
1137 }
1138 }
1139 var_109 = var106;
1140 {
1141 var110 = nitc___nitc__ANodes___core__abstract_collection__Collection__iterator(var_109);
1142 }
1143 var_111 = var110;
1144 for(;;) {
1145 {
1146 var112 = ((short int(*)(val* self))((((long)var_111&3)?class_info[((long)var_111&3)]:var_111->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_111); /* is_ok on <var_111:Iterator[APropdef]>*/
1147 }
1148 if (var112){
1149 } else {
1150 goto BREAK_label113;
1151 }
1152 {
1153 var114 = ((val*(*)(val* self))((((long)var_111&3)?class_info[((long)var_111&3)]:var_111->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_111); /* item on <var_111:Iterator[APropdef]>*/
1154 }
1155 var_npropdef = var114;
1156 {
1157 { /* Inline phase#Phase#toolcontext (var_phase58) on <var_phase58:Phase> */
1158 var117 = var_phase58->attrs[COLOR_nitc__phase__Phase___toolcontext].val; /* _toolcontext on <var_phase58:Phase> */
1159 if (unlikely(var117 == NULL)) {
1160 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1161 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 200);
1162 fatal_exit(1);
1163 }
1164 var115 = var117;
1165 RET_LABEL116:(void)0;
1166 }
1167 }
1168 {
1169 { /* Inline kernel#Object#== (var115,self) on <var115:ToolContext> */
1170 var_other = self;
1171 {
1172 { /* Inline kernel#Object#is_same_instance (var115,var_other) on <var115:ToolContext> */
1173 var122 = var115 == var_other;
1174 var120 = var122;
1175 goto RET_LABEL121;
1176 RET_LABEL121:(void)0;
1177 }
1178 }
1179 var118 = var120;
1180 goto RET_LABEL119;
1181 RET_LABEL119:(void)0;
1182 }
1183 }
1184 if (unlikely(!var118)) {
1185 PRINT_ERROR("Runtime error: %s", "Assert failed");
1186 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 124);
1187 fatal_exit(1);
1188 }
1189 {
1190 nitc__phase___ToolContext___phase_process_npropdef(self, var_phase58, var_npropdef); /* Direct call phase#ToolContext#phase_process_npropdef on <self:ToolContext>*/
1191 }
1192 {
1193 ((void(*)(val* self))((((long)var_111&3)?class_info[((long)var_111&3)]:var_111->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_111); /* next on <var_111:Iterator[APropdef]>*/
1194 }
1195 }
1196 BREAK_label113: (void)0;
1197 {
1198 ((void(*)(val* self))((((long)var_111&3)?class_info[((long)var_111&3)]:var_111->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_111); /* finish on <var_111:Iterator[APropdef]>*/
1199 }
1200 } else {
1201 }
1202 {
1203 ((void(*)(val* self))((((long)var_90&3)?class_info[((long)var_90&3)]:var_90->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_90); /* next on <var_90:Iterator[AClassdef]>*/
1204 }
1205 }
1206 BREAK_label92: (void)0;
1207 {
1208 ((void(*)(val* self))((((long)var_90&3)?class_info[((long)var_90&3)]:var_90->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_90); /* finish on <var_90:Iterator[AClassdef]>*/
1209 }
1210 {
1211 { /* Inline toolcontext#ToolContext#error_count (self) on <self:ToolContext> */
1212 var125 = self->attrs[COLOR_nitc__toolcontext__ToolContext___error_count].l; /* _error_count on <self:ToolContext> */
1213 var123 = var125;
1214 RET_LABEL124:(void)0;
1215 }
1216 }
1217 {
1218 { /* Inline kernel#Int#!= (var_errcount,var123) on <var_errcount:Int> */
1219 var128 = var_errcount == var123;
1220 var129 = !var128;
1221 var126 = var129;
1222 goto RET_LABEL127;
1223 RET_LABEL127:(void)0;
1224 }
1225 }
1226 if (var126){
1227 {
1228 var130 = nitc___nitc__ToolContext___check_errors(self);
1229 }
1230 } else {
1231 }
1232 {
1233 { /* Inline phase#AnnotationPhaseVisitor#annotations (var_vannot) on <var_vannot:AnnotationPhaseVisitor> */
1234 var133 = var_vannot->attrs[COLOR_nitc__phase__AnnotationPhaseVisitor___annotations].val; /* _annotations on <var_vannot:AnnotationPhaseVisitor> */
1235 if (unlikely(var133 == NULL)) {
1236 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _annotations");
1237 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 187);
1238 fatal_exit(1);
1239 }
1240 var131 = var133;
1241 RET_LABEL132:(void)0;
1242 }
1243 }
1244 var_134 = var131;
1245 {
1246 var135 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_134);
1247 }
1248 var_136 = var135;
1249 for(;;) {
1250 {
1251 var137 = ((short int(*)(val* self))((((long)var_136&3)?class_info[((long)var_136&3)]:var_136->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_136); /* is_ok on <var_136:IndexedIterator[AAnnotation]>*/
1252 }
1253 if (var137){
1254 } else {
1255 goto BREAK_label138;
1256 }
1257 {
1258 var139 = ((val*(*)(val* self))((((long)var_136&3)?class_info[((long)var_136&3)]:var_136->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_136); /* item on <var_136:IndexedIterator[AAnnotation]>*/
1259 }
1260 var_na = var139;
1261 {
1262 { /* Inline parser_nodes#ANode#parent (var_na) on <var_na:AAnnotation> */
1263 var142 = var_na->attrs[COLOR_nitc__parser_nodes__ANode___parent].val; /* _parent on <var_na:AAnnotation> */
1264 var140 = var142;
1265 RET_LABEL141:(void)0;
1266 }
1267 }
1268 var_p = var140;
1269 /* <var_p:nullable ANode> isa AAnnotations */
1270 cltype = type_nitc__AAnnotations.color;
1271 idtype = type_nitc__AAnnotations.id;
1272 if(var_p == NULL) {
1273 var143 = 0;
1274 } else {
1275 if(cltype >= var_p->type->table_size) {
1276 var143 = 0;
1277 } else {
1278 var143 = var_p->type->type_table[cltype] == idtype;
1279 }
1280 }
1281 if (var143){
1282 {
1283 { /* Inline parser_nodes#ANode#parent (var_p) on <var_p:nullable ANode(AAnnotations)> */
1284 var146 = var_p->attrs[COLOR_nitc__parser_nodes__ANode___parent].val; /* _parent on <var_p:nullable ANode(AAnnotations)> */
1285 var144 = var146;
1286 RET_LABEL145:(void)0;
1287 }
1288 }
1289 var_p = var144;
1290 } else {
1291 }
1292 if (var_p == NULL) {
1293 var147 = 0; /* is null */
1294 } else {
1295 var147 = 1; /* arg is null and recv is not */
1296 }
1297 if (0) {
1298 { /* Inline kernel#Object#!= (var_p,((val*)NULL)) on <var_p:nullable ANode> */
1299 var_other150 = ((val*)NULL);
1300 {
1301 var151 = ((short int(*)(val* self, val* p0))(var_p->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_p, var_other150); /* == on <var_p:nullable ANode(ANode)>*/
1302 }
1303 var152 = !var151;
1304 var148 = var152;
1305 goto RET_LABEL149;
1306 RET_LABEL149:(void)0;
1307 }
1308 var147 = var148;
1309 }
1310 if (unlikely(!var147)) {
1311 PRINT_ERROR("Runtime error: %s", "Assert failed");
1312 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 134);
1313 fatal_exit(1);
1314 }
1315 {
1316 ((void(*)(val* self, val* p0, val* p1))(var_phase58->class->vft[COLOR_nitc__phase__Phase__process_annotated_node]))(var_phase58, var_p, var_na); /* process_annotated_node on <var_phase58:Phase>*/
1317 }
1318 {
1319 ((void(*)(val* self))((((long)var_136&3)?class_info[((long)var_136&3)]:var_136->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_136); /* next on <var_136:IndexedIterator[AAnnotation]>*/
1320 }
1321 }
1322 BREAK_label138: (void)0;
1323 {
1324 ((void(*)(val* self))((((long)var_136&3)?class_info[((long)var_136&3)]:var_136->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_136); /* finish on <var_136:IndexedIterator[AAnnotation]>*/
1325 }
1326 {
1327 { /* Inline toolcontext#ToolContext#error_count (self) on <self:ToolContext> */
1328 var155 = self->attrs[COLOR_nitc__toolcontext__ToolContext___error_count].l; /* _error_count on <self:ToolContext> */
1329 var153 = var155;
1330 RET_LABEL154:(void)0;
1331 }
1332 }
1333 {
1334 { /* Inline kernel#Int#!= (var_errcount,var153) on <var_errcount:Int> */
1335 var158 = var_errcount == var153;
1336 var159 = !var158;
1337 var156 = var159;
1338 goto RET_LABEL157;
1339 RET_LABEL157:(void)0;
1340 }
1341 }
1342 if (var156){
1343 {
1344 var160 = nitc___nitc__ToolContext___check_errors(self);
1345 }
1346 } else {
1347 }
1348 BREAK_label62: (void)0;
1349 {
1350 ((void(*)(val* self))((((long)var_54&3)?class_info[((long)var_54&3)]:var_54->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_54); /* next on <var_54:IndexedIterator[Phase]>*/
1351 }
1352 }
1353 BREAK_label56: (void)0;
1354 {
1355 ((void(*)(val* self))((((long)var_54&3)?class_info[((long)var_54&3)]:var_54->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_54); /* finish on <var_54:IndexedIterator[Phase]>*/
1356 }
1357 {
1358 var161 = nitc___nitc__ToolContext___check_errors(self);
1359 }
1360 BREAK_label30: (void)0;
1361 {
1362 ((void(*)(val* self))((((long)var_22&3)?class_info[((long)var_22&3)]:var_22->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_22); /* next on <var_22:Iterator[AModule]>*/
1363 }
1364 }
1365 BREAK_label24: (void)0;
1366 {
1367 ((void(*)(val* self))((((long)var_22&3)?class_info[((long)var_22&3)]:var_22->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_22); /* finish on <var_22:Iterator[AModule]>*/
1368 }
1369 var162 = glob_sys;
1370 {
1371 { /* Inline time#Sys#get_time (var162) on <var162:Sys> */
1372 struct nitni_instance* var_for_c_0;
1373 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
1374 var_for_c_0->value = var162;
1375 var165 = time___Sys_get_time___impl(var_for_c_0);
1376 var163 = var165;
1377 goto RET_LABEL164;
1378 RET_LABEL164:(void)0;
1379 }
1380 }
1381 var_time1 = var163;
1382 if (unlikely(varonce166==NULL)) {
1383 var167 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
1384 if (likely(varonce168!=NULL)) {
1385 var169 = varonce168;
1386 } else {
1387 var170 = "*** END SEMANTIC ANALYSIS: ";
1388 var171 = core__flat___NativeString___to_s_full(var170, 27l, 27l);
1389 var169 = var171;
1390 varonce168 = var169;
1391 }
1392 ((struct instance_core__NativeArray*)var167)->values[0]=var169;
1393 if (likely(varonce172!=NULL)) {
1394 var173 = varonce172;
1395 } else {
1396 var174 = " ***";
1397 var175 = core__flat___NativeString___to_s_full(var174, 4l, 4l);
1398 var173 = var175;
1399 varonce172 = var173;
1400 }
1401 ((struct instance_core__NativeArray*)var167)->values[2]=var173;
1402 } else {
1403 var167 = varonce166;
1404 varonce166 = NULL;
1405 }
1406 {
1407 { /* Inline kernel#Int#- (var_time1,var_time0) on <var_time1:Int> */
1408 /* Covariant cast for argument 0 (i) <var_time0:Int> isa OTHER */
1409 /* <var_time0:Int> isa OTHER */
1410 var178 = 1; /* easy <var_time0:Int> isa OTHER*/
1411 if (unlikely(!var178)) {
1412 var_class_name = type_core__Int.name;
1413 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1414 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
1415 fatal_exit(1);
1416 }
1417 var181 = var_time1 - var_time0;
1418 var176 = var181;
1419 goto RET_LABEL177;
1420 RET_LABEL177:(void)0;
1421 }
1422 }
1423 var182 = core__flat___Int___core__abstract_text__Object__to_s(var176);
1424 ((struct instance_core__NativeArray*)var167)->values[1]=var182;
1425 {
1426 var183 = ((val*(*)(val* self))(var167->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var167); /* native_to_s on <var167:NativeArray[String]>*/
1427 }
1428 varonce166 = var167;
1429 {
1430 nitc___nitc__ToolContext___info(self, var183, 2l); /* Direct call toolcontext#ToolContext#info on <self:ToolContext>*/
1431 }
1432 {
1433 var184 = nitc___nitc__ToolContext___check_errors(self);
1434 }
1435 RET_LABEL:;
1436 }
1437 /* method phase#ToolContext#phase_process_npropdef for (self: ToolContext, Phase, APropdef) */
1438 void nitc__phase___ToolContext___phase_process_npropdef(val* self, val* p0, val* p1) {
1439 val* var_phase /* var phase: Phase */;
1440 val* var_npropdef /* var npropdef: APropdef */;
1441 var_phase = p0;
1442 var_npropdef = p1;
1443 {
1444 ((void(*)(val* self, val* p0))(var_phase->class->vft[COLOR_nitc__phase__Phase__process_npropdef]))(var_phase, var_npropdef); /* process_npropdef on <var_phase:Phase>*/
1445 }
1446 RET_LABEL:;
1447 }
1448 /* method phase#ToolContext#run_phases_on_npropdef for (self: ToolContext, APropdef) */
1449 void nitc__phase___ToolContext___run_phases_on_npropdef(val* self, val* p0) {
1450 val* var_npropdef /* var npropdef: APropdef */;
1451 short int var /* : Bool */;
1452 short int var2 /* : Bool */;
1453 short int var3 /* : Bool */;
1454 short int var4 /* : Bool */;
1455 short int var6 /* : Bool */;
1456 val* var8 /* : Sequence[Phase] */;
1457 val* var_phases /* var phases: Sequence[Phase] */;
1458 val* var_ /* var : Sequence[Phase] */;
1459 val* var9 /* : Iterator[nullable Object] */;
1460 val* var_10 /* var : IndexedIterator[Phase] */;
1461 short int var11 /* : Bool */;
1462 val* var12 /* : nullable Object */;
1463 val* var_phase /* var phase: Phase */;
1464 short int var13 /* : Bool */;
1465 short int var15 /* : Bool */;
1466 val* var17 /* : ToolContext */;
1467 val* var19 /* : ToolContext */;
1468 short int var20 /* : Bool */;
1469 val* var_other /* var other: nullable Object */;
1470 short int var22 /* : Bool */;
1471 short int var24 /* : Bool */;
1472 short int var25 /* : Bool */;
1473 var_npropdef = p0;
1474 {
1475 { /* Inline phase#ToolContext#semantize_is_lazy (self) on <self:ToolContext> */
1476 var2 = self->attrs[COLOR_nitc__phase__ToolContext___semantize_is_lazy].s; /* _semantize_is_lazy on <self:ToolContext> */
1477 var = var2;
1478 RET_LABEL1:(void)0;
1479 }
1480 }
1481 var3 = !var;
1482 if (var3){
1483 goto RET_LABEL;
1484 } else {
1485 }
1486 {
1487 { /* Inline phase#APropdef#is_phased (var_npropdef) on <var_npropdef:APropdef> */
1488 var6 = var_npropdef->attrs[COLOR_nitc__phase__APropdef___is_phased].s; /* _is_phased on <var_npropdef:APropdef> */
1489 var4 = var6;
1490 RET_LABEL5:(void)0;
1491 }
1492 }
1493 if (var4){
1494 goto RET_LABEL;
1495 } else {
1496 }
1497 {
1498 { /* Inline phase#APropdef#is_phased= (var_npropdef,1) on <var_npropdef:APropdef> */
1499 var_npropdef->attrs[COLOR_nitc__phase__APropdef___is_phased].s = 1; /* _is_phased on <var_npropdef:APropdef> */
1500 RET_LABEL7:(void)0;
1501 }
1502 }
1503 {
1504 var8 = nitc__phase___ToolContext___phases_list(self);
1505 }
1506 var_phases = var8;
1507 var_ = var_phases;
1508 {
1509 var9 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Sequence[Phase]>*/
1510 }
1511 var_10 = var9;
1512 for(;;) {
1513 {
1514 var11 = ((short int(*)(val* self))((((long)var_10&3)?class_info[((long)var_10&3)]:var_10->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_10); /* is_ok on <var_10:IndexedIterator[Phase]>*/
1515 }
1516 if (var11){
1517 } else {
1518 goto BREAK_label;
1519 }
1520 {
1521 var12 = ((val*(*)(val* self))((((long)var_10&3)?class_info[((long)var_10&3)]:var_10->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_10); /* item on <var_10:IndexedIterator[Phase]>*/
1522 }
1523 var_phase = var12;
1524 {
1525 { /* Inline phase#Phase#disabled (var_phase) on <var_phase:Phase> */
1526 var15 = var_phase->attrs[COLOR_nitc__phase__Phase___disabled].s; /* _disabled on <var_phase:Phase> */
1527 var13 = var15;
1528 RET_LABEL14:(void)0;
1529 }
1530 }
1531 if (var13){
1532 goto BREAK_label16;
1533 } else {
1534 }
1535 {
1536 { /* Inline phase#Phase#toolcontext (var_phase) on <var_phase:Phase> */
1537 var19 = var_phase->attrs[COLOR_nitc__phase__Phase___toolcontext].val; /* _toolcontext on <var_phase:Phase> */
1538 if (unlikely(var19 == NULL)) {
1539 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1540 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 200);
1541 fatal_exit(1);
1542 }
1543 var17 = var19;
1544 RET_LABEL18:(void)0;
1545 }
1546 }
1547 {
1548 { /* Inline kernel#Object#== (var17,self) on <var17:ToolContext> */
1549 var_other = self;
1550 {
1551 { /* Inline kernel#Object#is_same_instance (var17,var_other) on <var17:ToolContext> */
1552 var24 = var17 == var_other;
1553 var22 = var24;
1554 goto RET_LABEL23;
1555 RET_LABEL23:(void)0;
1556 }
1557 }
1558 var20 = var22;
1559 goto RET_LABEL21;
1560 RET_LABEL21:(void)0;
1561 }
1562 }
1563 if (unlikely(!var20)) {
1564 PRINT_ERROR("Runtime error: %s", "Assert failed");
1565 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 170);
1566 fatal_exit(1);
1567 }
1568 {
1569 nitc__phase___ToolContext___phase_process_npropdef(self, var_phase, var_npropdef); /* Direct call phase#ToolContext#phase_process_npropdef on <self:ToolContext>*/
1570 }
1571 {
1572 var25 = nitc___nitc__ToolContext___check_errors(self);
1573 }
1574 BREAK_label16: (void)0;
1575 {
1576 ((void(*)(val* self))((((long)var_10&3)?class_info[((long)var_10&3)]:var_10->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_10); /* next on <var_10:IndexedIterator[Phase]>*/
1577 }
1578 }
1579 BREAK_label: (void)0;
1580 {
1581 ((void(*)(val* self))((((long)var_10&3)?class_info[((long)var_10&3)]:var_10->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_10); /* finish on <var_10:IndexedIterator[Phase]>*/
1582 }
1583 RET_LABEL:;
1584 }
1585 /* method phase#APropdef#is_phased for (self: APropdef): Bool */
1586 short int nitc__phase___APropdef___is_phased(val* self) {
1587 short int var /* : Bool */;
1588 short int var1 /* : Bool */;
1589 var1 = self->attrs[COLOR_nitc__phase__APropdef___is_phased].s; /* _is_phased on <self:APropdef> */
1590 var = var1;
1591 RET_LABEL:;
1592 return var;
1593 }
1594 /* method phase#APropdef#is_phased= for (self: APropdef, Bool) */
1595 void nitc__phase___APropdef___is_phased_61d(val* self, short int p0) {
1596 self->attrs[COLOR_nitc__phase__APropdef___is_phased].s = p0; /* _is_phased on <self:APropdef> */
1597 RET_LABEL:;
1598 }
1599 /* method phase#AnnotationPhaseVisitor#annotations for (self: AnnotationPhaseVisitor): Array[AAnnotation] */
1600 val* nitc__phase___nitc__phase__AnnotationPhaseVisitor___annotations(val* self) {
1601 val* var /* : Array[AAnnotation] */;
1602 val* var1 /* : Array[AAnnotation] */;
1603 var1 = self->attrs[COLOR_nitc__phase__AnnotationPhaseVisitor___annotations].val; /* _annotations on <self:AnnotationPhaseVisitor> */
1604 if (unlikely(var1 == NULL)) {
1605 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _annotations");
1606 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 187);
1607 fatal_exit(1);
1608 }
1609 var = var1;
1610 RET_LABEL:;
1611 return var;
1612 }
1613 /* method phase#AnnotationPhaseVisitor#visit for (self: AnnotationPhaseVisitor, ANode) */
1614 void nitc__phase___nitc__phase__AnnotationPhaseVisitor___nitc__parser_nodes__Visitor__visit(val* self, val* p0) {
1615 val* var_n /* var n: ANode */;
1616 short int var /* : Bool */;
1617 int cltype;
1618 int idtype;
1619 val* var1 /* : Array[AAnnotation] */;
1620 val* var3 /* : Array[AAnnotation] */;
1621 var_n = p0;
1622 {
1623 ((void(*)(val* self, val* p0))(var_n->class->vft[COLOR_nitc__parser_nodes__ANode__visit_all]))(var_n, self); /* visit_all on <var_n:ANode>*/
1624 }
1625 /* <var_n:ANode> isa AAnnotation */
1626 cltype = type_nitc__AAnnotation.color;
1627 idtype = type_nitc__AAnnotation.id;
1628 if(cltype >= var_n->type->table_size) {
1629 var = 0;
1630 } else {
1631 var = var_n->type->type_table[cltype] == idtype;
1632 }
1633 if (var){
1634 {
1635 { /* Inline phase#AnnotationPhaseVisitor#annotations (self) on <self:AnnotationPhaseVisitor> */
1636 var3 = self->attrs[COLOR_nitc__phase__AnnotationPhaseVisitor___annotations].val; /* _annotations on <self:AnnotationPhaseVisitor> */
1637 if (unlikely(var3 == NULL)) {
1638 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _annotations");
1639 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 187);
1640 fatal_exit(1);
1641 }
1642 var1 = var3;
1643 RET_LABEL2:(void)0;
1644 }
1645 }
1646 {
1647 core___core__Array___core__abstract_collection__SimpleCollection__add(var1, var_n); /* Direct call array#Array#add on <var1:Array[AAnnotation]>*/
1648 }
1649 } else {
1650 }
1651 RET_LABEL:;
1652 }
1653 /* method phase#Phase#toolcontext for (self: Phase): ToolContext */
1654 val* nitc___nitc__Phase___toolcontext(val* self) {
1655 val* var /* : ToolContext */;
1656 val* var1 /* : ToolContext */;
1657 var1 = self->attrs[COLOR_nitc__phase__Phase___toolcontext].val; /* _toolcontext on <self:Phase> */
1658 if (unlikely(var1 == NULL)) {
1659 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1660 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 200);
1661 fatal_exit(1);
1662 }
1663 var = var1;
1664 RET_LABEL:;
1665 return var;
1666 }
1667 /* method phase#Phase#toolcontext= for (self: Phase, ToolContext) */
1668 void nitc___nitc__Phase___toolcontext_61d(val* self, val* p0) {
1669 self->attrs[COLOR_nitc__phase__Phase___toolcontext].val = p0; /* _toolcontext on <self:Phase> */
1670 RET_LABEL:;
1671 }
1672 /* method phase#Phase#in_hierarchy for (self: Phase): POSetElement[Phase] */
1673 val* nitc___nitc__Phase___in_hierarchy(val* self) {
1674 val* var /* : POSetElement[Phase] */;
1675 val* var1 /* : POSetElement[Phase] */;
1676 var1 = self->attrs[COLOR_nitc__phase__Phase___in_hierarchy].val; /* _in_hierarchy on <self:Phase> */
1677 if (unlikely(var1 == NULL)) {
1678 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_hierarchy");
1679 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 203);
1680 fatal_exit(1);
1681 }
1682 var = var1;
1683 RET_LABEL:;
1684 return var;
1685 }
1686 /* method phase#Phase#in_hierarchy= for (self: Phase, POSetElement[Phase]) */
1687 void nitc___nitc__Phase___in_hierarchy_61d(val* self, val* p0) {
1688 self->attrs[COLOR_nitc__phase__Phase___in_hierarchy].val = p0; /* _in_hierarchy on <self:Phase> */
1689 RET_LABEL:;
1690 }
1691 /* method phase#Phase#depends for (self: Phase): nullable Collection[Phase] */
1692 val* nitc___nitc__Phase___depends(val* self) {
1693 val* var /* : nullable Collection[Phase] */;
1694 val* var1 /* : nullable Collection[Phase] */;
1695 var1 = self->attrs[COLOR_nitc__phase__Phase___depends].val; /* _depends on <self:Phase> */
1696 var = var1;
1697 RET_LABEL:;
1698 return var;
1699 }
1700 /* method phase#Phase#depends= for (self: Phase, nullable Collection[Phase]) */
1701 void nitc___nitc__Phase___depends_61d(val* self, val* p0) {
1702 self->attrs[COLOR_nitc__phase__Phase___depends].val = p0; /* _depends on <self:Phase> */
1703 RET_LABEL:;
1704 }
1705 /* method phase#Phase#init for (self: Phase) */
1706 void nitc___nitc__Phase___core__kernel__Object__init(val* self) {
1707 val* var /* : ToolContext */;
1708 val* var2 /* : ToolContext */;
1709 val* var3 /* : POSet[Phase] */;
1710 val* var5 /* : POSet[Phase] */;
1711 val* var6 /* : POSetElement[nullable Object] */;
1712 val* var8 /* : nullable Collection[Phase] */;
1713 val* var10 /* : nullable Collection[Phase] */;
1714 val* var_depends /* var depends: nullable Collection[Phase] */;
1715 short int var11 /* : Bool */;
1716 short int var12 /* : Bool */;
1717 val* var_other /* var other: nullable Object */;
1718 short int var14 /* : Bool */;
1719 short int var15 /* : Bool */;
1720 val* var_ /* var : Collection[Phase] */;
1721 val* var16 /* : Iterator[nullable Object] */;
1722 val* var_17 /* var : Iterator[Phase] */;
1723 short int var18 /* : Bool */;
1724 val* var19 /* : nullable Object */;
1725 val* var_d /* var d: Phase */;
1726 val* var20 /* : ToolContext */;
1727 val* var22 /* : ToolContext */;
1728 val* var23 /* : POSet[Phase] */;
1729 val* var25 /* : POSet[Phase] */;
1730 {
1731 ((void(*)(val* self))(self->class->vft[COLOR_nitc___nitc__Phase___core__kernel__Object__init]))(self); /* init on <self:Phase>*/
1732 }
1733 {
1734 { /* Inline phase#Phase#toolcontext (self) on <self:Phase> */
1735 var2 = self->attrs[COLOR_nitc__phase__Phase___toolcontext].val; /* _toolcontext on <self:Phase> */
1736 if (unlikely(var2 == NULL)) {
1737 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1738 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 200);
1739 fatal_exit(1);
1740 }
1741 var = var2;
1742 RET_LABEL1:(void)0;
1743 }
1744 }
1745 {
1746 { /* Inline phase#ToolContext#phases (var) on <var:ToolContext> */
1747 var5 = var->attrs[COLOR_nitc__phase__ToolContext___phases].val; /* _phases on <var:ToolContext> */
1748 if (unlikely(var5 == NULL)) {
1749 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _phases");
1750 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 23);
1751 fatal_exit(1);
1752 }
1753 var3 = var5;
1754 RET_LABEL4:(void)0;
1755 }
1756 }
1757 {
1758 var6 = poset___poset__POSet___add_node(var3, self);
1759 }
1760 {
1761 { /* Inline phase#Phase#in_hierarchy= (self,var6) on <self:Phase> */
1762 self->attrs[COLOR_nitc__phase__Phase___in_hierarchy].val = var6; /* _in_hierarchy on <self:Phase> */
1763 RET_LABEL7:(void)0;
1764 }
1765 }
1766 {
1767 { /* Inline phase#Phase#depends (self) on <self:Phase> */
1768 var10 = self->attrs[COLOR_nitc__phase__Phase___depends].val; /* _depends on <self:Phase> */
1769 var8 = var10;
1770 RET_LABEL9:(void)0;
1771 }
1772 }
1773 var_depends = var8;
1774 if (var_depends == NULL) {
1775 var11 = 0; /* is null */
1776 } else {
1777 var11 = 1; /* arg is null and recv is not */
1778 }
1779 if (0) {
1780 { /* Inline kernel#Object#!= (var_depends,((val*)NULL)) on <var_depends:nullable Collection[Phase]> */
1781 var_other = ((val*)NULL);
1782 {
1783 var14 = ((short int(*)(val* self, val* p0))((((long)var_depends&3)?class_info[((long)var_depends&3)]:var_depends->class)->vft[COLOR_core__kernel__Object___61d_61d]))(var_depends, var_other); /* == on <var_depends:nullable Collection[Phase](Collection[Phase])>*/
1784 }
1785 var15 = !var14;
1786 var12 = var15;
1787 goto RET_LABEL13;
1788 RET_LABEL13:(void)0;
1789 }
1790 var11 = var12;
1791 }
1792 if (var11){
1793 var_ = var_depends;
1794 {
1795 var16 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Collection[Phase]>*/
1796 }
1797 var_17 = var16;
1798 for(;;) {
1799 {
1800 var18 = ((short int(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_17); /* is_ok on <var_17:Iterator[Phase]>*/
1801 }
1802 if (var18){
1803 } else {
1804 goto BREAK_label;
1805 }
1806 {
1807 var19 = ((val*(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_17); /* item on <var_17:Iterator[Phase]>*/
1808 }
1809 var_d = var19;
1810 {
1811 { /* Inline phase#Phase#toolcontext (self) on <self:Phase> */
1812 var22 = self->attrs[COLOR_nitc__phase__Phase___toolcontext].val; /* _toolcontext on <self:Phase> */
1813 if (unlikely(var22 == NULL)) {
1814 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1815 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 200);
1816 fatal_exit(1);
1817 }
1818 var20 = var22;
1819 RET_LABEL21:(void)0;
1820 }
1821 }
1822 {
1823 { /* Inline phase#ToolContext#phases (var20) on <var20:ToolContext> */
1824 var25 = var20->attrs[COLOR_nitc__phase__ToolContext___phases].val; /* _phases on <var20:ToolContext> */
1825 if (unlikely(var25 == NULL)) {
1826 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _phases");
1827 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 23);
1828 fatal_exit(1);
1829 }
1830 var23 = var25;
1831 RET_LABEL24:(void)0;
1832 }
1833 }
1834 {
1835 poset___poset__POSet___add_edge(var23, self, var_d); /* Direct call poset#POSet#add_edge on <var23:POSet[Phase]>*/
1836 }
1837 {
1838 ((void(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_17); /* next on <var_17:Iterator[Phase]>*/
1839 }
1840 }
1841 BREAK_label: (void)0;
1842 {
1843 ((void(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_17); /* finish on <var_17:Iterator[Phase]>*/
1844 }
1845 } else {
1846 }
1847 RET_LABEL:;
1848 }
1849 /* method phase#Phase#to_s for (self: Phase): String */
1850 val* nitc___nitc__Phase___core__abstract_text__Object__to_s(val* self) {
1851 val* var /* : String */;
1852 val* var1 /* : String */;
1853 static val* varonce;
1854 val* var2 /* : String */;
1855 char* var3 /* : NativeString */;
1856 val* var4 /* : String */;
1857 val* var5 /* : String */;
1858 val* var6 /* : String */;
1859 {
1860 var1 = core__abstract_text___Object___class_name(self);
1861 }
1862 if (likely(varonce!=NULL)) {
1863 var2 = varonce;
1864 } else {
1865 var3 = "Phase";
1866 var4 = core__flat___NativeString___to_s_full(var3, 5l, 5l);
1867 var2 = var4;
1868 varonce = var2;
1869 }
1870 {
1871 var5 = core__file___String___strip_extension(var1, var2);
1872 }
1873 {
1874 var6 = core___core__String___to_snake_case(var5);
1875 }
1876 var = var6;
1877 goto RET_LABEL;
1878 RET_LABEL:;
1879 return var;
1880 }
1881 /* method phase#Phase#disabled for (self: Phase): Bool */
1882 short int nitc___nitc__Phase___disabled(val* self) {
1883 short int var /* : Bool */;
1884 short int var1 /* : Bool */;
1885 var1 = self->attrs[COLOR_nitc__phase__Phase___disabled].s; /* _disabled on <self:Phase> */
1886 var = var1;
1887 RET_LABEL:;
1888 return var;
1889 }
1890 /* method phase#Phase#disabled= for (self: Phase, Bool) */
1891 void nitc___nitc__Phase___disabled_61d(val* self, short int p0) {
1892 self->attrs[COLOR_nitc__phase__Phase___disabled].s = p0; /* _disabled on <self:Phase> */
1893 RET_LABEL:;
1894 }
1895 /* method phase#Phase#process_nmodule for (self: Phase, AModule) */
1896 void nitc___nitc__Phase___process_nmodule(val* self, val* p0) {
1897 val* var_nmodule /* var nmodule: AModule */;
1898 var_nmodule = p0;
1899 RET_LABEL:;
1900 }
1901 /* method phase#Phase#process_nclassdef for (self: Phase, AClassdef) */
1902 void nitc___nitc__Phase___process_nclassdef(val* self, val* p0) {
1903 val* var_nclassdef /* var nclassdef: AClassdef */;
1904 var_nclassdef = p0;
1905 RET_LABEL:;
1906 }
1907 /* method phase#Phase#process_npropdef for (self: Phase, APropdef) */
1908 void nitc___nitc__Phase___process_npropdef(val* self, val* p0) {
1909 val* var_npropdef /* var npropdef: APropdef */;
1910 var_npropdef = p0;
1911 RET_LABEL:;
1912 }
1913 /* method phase#Phase#process_annotated_node for (self: Phase, ANode, AAnnotation) */
1914 void nitc___nitc__Phase___process_annotated_node(val* self, val* p0, val* p1) {
1915 val* var_node /* var node: ANode */;
1916 val* var_nat /* var nat: AAnnotation */;
1917 var_node = p0;
1918 var_nat = p1;
1919 RET_LABEL:;
1920 }