misc/vim: inform the user when no results are found
[nit.git] / c_src / nit__separate_compiler.sep.3.c
1 #include "nit__separate_compiler.sep.0.h"
2 /* method separate_compiler#SeparateCompilerVisitor#box_extern for (self: SeparateCompilerVisitor, RuntimeVariable, MType): RuntimeVariable */
3 val* nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__box_extern(val* self, val* p0, val* p1) {
4 val* var /* : RuntimeVariable */;
5 val* var_value /* var value: RuntimeVariable */;
6 val* var_mtype /* var mtype: MType */;
7 short int var1 /* : Bool */;
8 short int var2 /* : Bool */;
9 short int var3 /* : Bool */;
10 int cltype;
11 int idtype;
12 short int var_ /* var : Bool */;
13 val* var4 /* : MClass */;
14 val* var6 /* : MClass */;
15 val* var7 /* : MClassKind */;
16 val* var9 /* : MClassKind */;
17 val* var10 /* : MClassKind */;
18 short int var11 /* : Bool */;
19 val* var_other /* var other: nullable Object */;
20 short int var13 /* : Bool */;
21 short int var15 /* : Bool */;
22 short int var_16 /* var : Bool */;
23 val* var17 /* : MClass */;
24 val* var19 /* : MClass */;
25 val* var20 /* : String */;
26 val* var22 /* : String */;
27 static val* varonce;
28 val* var23 /* : String */;
29 char* var24 /* : NativeString */;
30 long var25 /* : Int */;
31 val* var26 /* : FlatString */;
32 short int var27 /* : Bool */;
33 val* var_other29 /* var other: nullable Object */;
34 short int var30 /* : Bool */;
35 short int var31 /* : Bool */;
36 val* var32 /* : AbstractCompiler */;
37 val* var34 /* : AbstractCompiler */;
38 val* var35 /* : MModule */;
39 val* var37 /* : MModule */;
40 val* var38 /* : MClassType */;
41 val* var_valtype /* var valtype: MClassType */;
42 val* var39 /* : RuntimeVariable */;
43 val* var_res /* var res: RuntimeVariable */;
44 short int var40 /* : Bool */;
45 val* var41 /* : AbstractCompiler */;
46 val* var43 /* : AbstractCompiler */;
47 val* var44 /* : nullable RapidTypeAnalysis */;
48 val* var46 /* : nullable RapidTypeAnalysis */;
49 val* var47 /* : null */;
50 short int var48 /* : Bool */;
51 short int var49 /* : Bool */;
52 short int var51 /* : Bool */;
53 short int var52 /* : Bool */;
54 short int var_53 /* var : Bool */;
55 val* var54 /* : AbstractCompiler */;
56 val* var56 /* : AbstractCompiler */;
57 val* var57 /* : nullable RapidTypeAnalysis */;
58 val* var59 /* : nullable RapidTypeAnalysis */;
59 val* var60 /* : HashSet[MClassType] */;
60 val* var62 /* : HashSet[MClassType] */;
61 val* var63 /* : MType */;
62 val* var65 /* : MType */;
63 short int var66 /* : Bool */;
64 int cltype67;
65 int idtype68;
66 const char* var_class_name;
67 short int var69 /* : Bool */;
68 short int var70 /* : Bool */;
69 static val* varonce71;
70 val* var72 /* : String */;
71 char* var73 /* : NativeString */;
72 long var74 /* : Int */;
73 val* var75 /* : FlatString */;
74 val* var76 /* : MType */;
75 val* var78 /* : MType */;
76 static val* varonce79;
77 val* var80 /* : String */;
78 char* var81 /* : NativeString */;
79 long var82 /* : Int */;
80 val* var83 /* : FlatString */;
81 val* var84 /* : MType */;
82 val* var86 /* : MType */;
83 static val* varonce87;
84 val* var88 /* : String */;
85 char* var89 /* : NativeString */;
86 long var90 /* : Int */;
87 val* var91 /* : FlatString */;
88 val* var92 /* : Array[Object] */;
89 long var93 /* : Int */;
90 val* var94 /* : NativeArray[Object] */;
91 val* var95 /* : String */;
92 static val* varonce96;
93 val* var97 /* : String */;
94 char* var98 /* : NativeString */;
95 long var99 /* : Int */;
96 val* var100 /* : FlatString */;
97 static val* varonce101;
98 val* var102 /* : String */;
99 char* var103 /* : NativeString */;
100 long var104 /* : Int */;
101 val* var105 /* : FlatString */;
102 val* var106 /* : String */;
103 val* var107 /* : Array[Object] */;
104 long var108 /* : Int */;
105 val* var109 /* : NativeArray[Object] */;
106 val* var110 /* : String */;
107 static val* varonce111;
108 val* var112 /* : String */;
109 char* var113 /* : NativeString */;
110 long var114 /* : Int */;
111 val* var115 /* : FlatString */;
112 val* var116 /* : String */;
113 static val* varonce117;
114 val* var118 /* : String */;
115 char* var119 /* : NativeString */;
116 long var120 /* : Int */;
117 val* var121 /* : FlatString */;
118 static val* varonce122;
119 val* var123 /* : String */;
120 char* var124 /* : NativeString */;
121 long var125 /* : Int */;
122 val* var126 /* : FlatString */;
123 val* var127 /* : MType */;
124 val* var129 /* : MType */;
125 static val* varonce130;
126 val* var131 /* : String */;
127 char* var132 /* : NativeString */;
128 long var133 /* : Int */;
129 val* var134 /* : FlatString */;
130 val* var135 /* : Array[Object] */;
131 long var136 /* : Int */;
132 val* var137 /* : NativeArray[Object] */;
133 val* var138 /* : String */;
134 static val* varonce139;
135 val* var140 /* : String */;
136 char* var141 /* : NativeString */;
137 long var142 /* : Int */;
138 val* var143 /* : FlatString */;
139 val* var144 /* : String */;
140 val* var145 /* : Array[Object] */;
141 long var146 /* : Int */;
142 val* var147 /* : NativeArray[Object] */;
143 val* var148 /* : String */;
144 static val* varonce149;
145 val* var150 /* : String */;
146 char* var151 /* : NativeString */;
147 long var152 /* : Int */;
148 val* var153 /* : FlatString */;
149 val* var154 /* : String */;
150 static val* varonce155;
151 val* var156 /* : String */;
152 char* var157 /* : NativeString */;
153 long var158 /* : Int */;
154 val* var159 /* : FlatString */;
155 val* var160 /* : Array[Object] */;
156 long var161 /* : Int */;
157 val* var162 /* : NativeArray[Object] */;
158 val* var163 /* : String */;
159 static val* varonce164;
160 val* var165 /* : String */;
161 char* var166 /* : NativeString */;
162 long var167 /* : Int */;
163 val* var168 /* : FlatString */;
164 val* var169 /* : String */;
165 val* var170 /* : Array[Object] */;
166 long var171 /* : Int */;
167 val* var172 /* : NativeArray[Object] */;
168 val* var173 /* : String */;
169 static val* varonce174;
170 val* var175 /* : String */;
171 char* var176 /* : NativeString */;
172 long var177 /* : Int */;
173 val* var178 /* : FlatString */;
174 val* var179 /* : String */;
175 static val* varonce180;
176 val* var181 /* : String */;
177 char* var182 /* : NativeString */;
178 long var183 /* : Int */;
179 val* var184 /* : FlatString */;
180 val* var185 /* : Array[Object] */;
181 long var186 /* : Int */;
182 val* var187 /* : NativeArray[Object] */;
183 val* var188 /* : String */;
184 var_value = p0;
185 var_mtype = p1;
186 /* <var_mtype:MType> isa MClassType */
187 cltype = type_nit__MClassType.color;
188 idtype = type_nit__MClassType.id;
189 if(cltype >= var_mtype->type->table_size) {
190 var3 = 0;
191 } else {
192 var3 = var_mtype->type->type_table[cltype] == idtype;
193 }
194 var_ = var3;
195 if (var3){
196 {
197 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MClassType)> */
198 var6 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
199 if (unlikely(var6 == NULL)) {
200 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
201 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
202 show_backtrace(1);
203 }
204 var4 = var6;
205 RET_LABEL5:(void)0;
206 }
207 }
208 {
209 { /* Inline model#MClass#kind (var4) on <var4:MClass> */
210 var9 = var4->attrs[COLOR_nit__model__MClass___kind].val; /* _kind on <var4:MClass> */
211 if (unlikely(var9 == NULL)) {
212 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
213 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 399);
214 show_backtrace(1);
215 }
216 var7 = var9;
217 RET_LABEL8:(void)0;
218 }
219 }
220 {
221 var10 = nit__model___standard__Object___extern_kind(self);
222 }
223 {
224 { /* Inline kernel#Object#== (var7,var10) on <var7:MClassKind> */
225 var_other = var10;
226 {
227 { /* Inline kernel#Object#is_same_instance (var7,var_other) on <var7:MClassKind> */
228 var15 = var7 == var_other;
229 var13 = var15;
230 goto RET_LABEL14;
231 RET_LABEL14:(void)0;
232 }
233 }
234 var11 = var13;
235 goto RET_LABEL12;
236 RET_LABEL12:(void)0;
237 }
238 }
239 var2 = var11;
240 } else {
241 var2 = var_;
242 }
243 var_16 = var2;
244 if (var2){
245 {
246 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MClassType)> */
247 var19 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
248 if (unlikely(var19 == NULL)) {
249 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
250 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
251 show_backtrace(1);
252 }
253 var17 = var19;
254 RET_LABEL18:(void)0;
255 }
256 }
257 {
258 { /* Inline model#MClass#name (var17) on <var17:MClass> */
259 var22 = var17->attrs[COLOR_nit__model__MClass___name].val; /* _name on <var17:MClass> */
260 if (unlikely(var22 == NULL)) {
261 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
262 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 348);
263 show_backtrace(1);
264 }
265 var20 = var22;
266 RET_LABEL21:(void)0;
267 }
268 }
269 if (varonce) {
270 var23 = varonce;
271 } else {
272 var24 = "NativeString";
273 var25 = 12;
274 var26 = standard___standard__NativeString___to_s_with_length(var24, var25);
275 var23 = var26;
276 varonce = var23;
277 }
278 {
279 { /* Inline kernel#Object#!= (var20,var23) on <var20:String> */
280 var_other29 = var23;
281 {
282 var30 = ((short int (*)(val* self, val* p0))(var20->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var20, var_other29) /* == on <var20:String>*/;
283 }
284 var31 = !var30;
285 var27 = var31;
286 goto RET_LABEL28;
287 RET_LABEL28:(void)0;
288 }
289 }
290 var1 = var27;
291 } else {
292 var1 = var_16;
293 }
294 if (var1){
295 {
296 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
297 var34 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
298 if (unlikely(var34 == NULL)) {
299 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
300 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
301 show_backtrace(1);
302 }
303 var32 = var34;
304 RET_LABEL33:(void)0;
305 }
306 }
307 {
308 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (var32) on <var32:AbstractCompiler(SeparateCompiler)> */
309 var37 = var32->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var32:AbstractCompiler(SeparateCompiler)> */
310 if (unlikely(var37 == NULL)) {
311 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
312 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 474);
313 show_backtrace(1);
314 }
315 var35 = var37;
316 RET_LABEL36:(void)0;
317 }
318 }
319 {
320 var38 = nit__model___MModule___pointer_type(var35);
321 }
322 var_valtype = var38;
323 {
324 var39 = nit___nit__AbstractCompilerVisitor___new_var(self, var_mtype);
325 }
326 var_res = var39;
327 {
328 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
329 var43 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
330 if (unlikely(var43 == NULL)) {
331 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
332 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
333 show_backtrace(1);
334 }
335 var41 = var43;
336 RET_LABEL42:(void)0;
337 }
338 }
339 {
340 { /* Inline separate_compiler#SeparateCompiler#runtime_type_analysis (var41) on <var41:AbstractCompiler(SeparateCompiler)> */
341 var46 = var41->attrs[COLOR_nit__separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on <var41:AbstractCompiler(SeparateCompiler)> */
342 var44 = var46;
343 RET_LABEL45:(void)0;
344 }
345 }
346 var47 = NULL;
347 if (var44 == NULL) {
348 var48 = 0; /* is null */
349 } else {
350 var48 = 1; /* arg is null and recv is not */
351 }
352 if (0) {
353 { /* Inline kernel#Object#!= (var44,var47) on <var44:nullable RapidTypeAnalysis> */
354 var_other29 = var47;
355 {
356 var51 = ((short int (*)(val* self, val* p0))(var44->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var44, var_other29) /* == on <var44:nullable RapidTypeAnalysis(RapidTypeAnalysis)>*/;
357 }
358 var52 = !var51;
359 var49 = var52;
360 goto RET_LABEL50;
361 RET_LABEL50:(void)0;
362 }
363 var48 = var49;
364 }
365 var_53 = var48;
366 if (var48){
367 {
368 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
369 var56 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
370 if (unlikely(var56 == NULL)) {
371 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
372 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
373 show_backtrace(1);
374 }
375 var54 = var56;
376 RET_LABEL55:(void)0;
377 }
378 }
379 {
380 { /* Inline separate_compiler#SeparateCompiler#runtime_type_analysis (var54) on <var54:AbstractCompiler(SeparateCompiler)> */
381 var59 = var54->attrs[COLOR_nit__separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on <var54:AbstractCompiler(SeparateCompiler)> */
382 var57 = var59;
383 RET_LABEL58:(void)0;
384 }
385 }
386 if (var57 == NULL) {
387 PRINT_ERROR("Runtime error: %s", "Receiver is null");
388 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1043);
389 show_backtrace(1);
390 } else {
391 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (var57) on <var57:nullable RapidTypeAnalysis> */
392 if (unlikely(var57 == NULL)) {
393 PRINT_ERROR("Runtime error: %s", "Receiver is null");
394 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 53);
395 show_backtrace(1);
396 }
397 var62 = var57->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <var57:nullable RapidTypeAnalysis> */
398 if (unlikely(var62 == NULL)) {
399 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
400 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 53);
401 show_backtrace(1);
402 }
403 var60 = var62;
404 RET_LABEL61:(void)0;
405 }
406 }
407 {
408 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
409 var65 = var_value->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
410 if (unlikely(var65 == NULL)) {
411 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
412 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1680);
413 show_backtrace(1);
414 }
415 var63 = var65;
416 RET_LABEL64:(void)0;
417 }
418 }
419 /* <var63:MType> isa MClassType */
420 cltype67 = type_nit__MClassType.color;
421 idtype68 = type_nit__MClassType.id;
422 if(cltype67 >= var63->type->table_size) {
423 var66 = 0;
424 } else {
425 var66 = var63->type->type_table[cltype67] == idtype68;
426 }
427 if (unlikely(!var66)) {
428 var_class_name = var63 == NULL ? "null" : var63->type->name;
429 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
430 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1043);
431 show_backtrace(1);
432 }
433 {
434 var69 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var60, var63);
435 }
436 var70 = !var69;
437 var40 = var70;
438 } else {
439 var40 = var_53;
440 }
441 if (var40){
442 if (varonce71) {
443 var72 = varonce71;
444 } else {
445 var73 = "/*no boxing of ";
446 var74 = 15;
447 var75 = standard___standard__NativeString___to_s_with_length(var73, var74);
448 var72 = var75;
449 varonce71 = var72;
450 }
451 {
452 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
453 var78 = var_value->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
454 if (unlikely(var78 == NULL)) {
455 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
456 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1680);
457 show_backtrace(1);
458 }
459 var76 = var78;
460 RET_LABEL77:(void)0;
461 }
462 }
463 if (varonce79) {
464 var80 = varonce79;
465 } else {
466 var81 = ": ";
467 var82 = 2;
468 var83 = standard___standard__NativeString___to_s_with_length(var81, var82);
469 var80 = var83;
470 varonce79 = var80;
471 }
472 {
473 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
474 var86 = var_value->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
475 if (unlikely(var86 == NULL)) {
476 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
477 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1680);
478 show_backtrace(1);
479 }
480 var84 = var86;
481 RET_LABEL85:(void)0;
482 }
483 }
484 if (varonce87) {
485 var88 = varonce87;
486 } else {
487 var89 = " is not live! */";
488 var90 = 16;
489 var91 = standard___standard__NativeString___to_s_with_length(var89, var90);
490 var88 = var91;
491 varonce87 = var88;
492 }
493 var92 = NEW_standard__Array(&type_standard__Array__standard__Object);
494 { /* var92 = array_instance Array[Object] */
495 var93 = 5;
496 var94 = NEW_standard__NativeArray(var93, &type_standard__NativeArray__standard__Object);
497 ((struct instance_standard__NativeArray*)var94)->values[0] = (val*) var72;
498 ((struct instance_standard__NativeArray*)var94)->values[1] = (val*) var76;
499 ((struct instance_standard__NativeArray*)var94)->values[2] = (val*) var80;
500 ((struct instance_standard__NativeArray*)var94)->values[3] = (val*) var84;
501 ((struct instance_standard__NativeArray*)var94)->values[4] = (val*) var88;
502 {
503 ((void (*)(val* self, val* p0, long p1))(var92->class->vft[COLOR_standard__array__Array__with_native]))(var92, var94, var93) /* with_native on <var92:Array[Object]>*/;
504 }
505 }
506 {
507 var95 = ((val* (*)(val* self))(var92->class->vft[COLOR_standard__string__Object__to_s]))(var92) /* to_s on <var92:Array[Object]>*/;
508 }
509 {
510 nit___nit__AbstractCompilerVisitor___add(self, var95); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
511 }
512 if (varonce96) {
513 var97 = varonce96;
514 } else {
515 var98 = "PRINT_ERROR(\"Dead code executed!\\n\"); show_backtrace(1);";
516 var99 = 56;
517 var100 = standard___standard__NativeString___to_s_with_length(var98, var99);
518 var97 = var100;
519 varonce96 = var97;
520 }
521 {
522 nit___nit__AbstractCompilerVisitor___add(self, var97); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
523 }
524 var = var_res;
525 goto RET_LABEL;
526 } else {
527 }
528 if (varonce101) {
529 var102 = varonce101;
530 } else {
531 var103 = "BOX_";
532 var104 = 4;
533 var105 = standard___standard__NativeString___to_s_with_length(var103, var104);
534 var102 = var105;
535 varonce101 = var102;
536 }
537 {
538 var106 = ((val* (*)(val* self))(var_valtype->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var_valtype) /* c_name on <var_valtype:MClassType>*/;
539 }
540 var107 = NEW_standard__Array(&type_standard__Array__standard__Object);
541 { /* var107 = array_instance Array[Object] */
542 var108 = 2;
543 var109 = NEW_standard__NativeArray(var108, &type_standard__NativeArray__standard__Object);
544 ((struct instance_standard__NativeArray*)var109)->values[0] = (val*) var102;
545 ((struct instance_standard__NativeArray*)var109)->values[1] = (val*) var106;
546 {
547 ((void (*)(val* self, val* p0, long p1))(var107->class->vft[COLOR_standard__array__Array__with_native]))(var107, var109, var108) /* with_native on <var107:Array[Object]>*/;
548 }
549 }
550 {
551 var110 = ((val* (*)(val* self))(var107->class->vft[COLOR_standard__string__Object__to_s]))(var107) /* to_s on <var107:Array[Object]>*/;
552 }
553 {
554 nit___nit__AbstractCompilerVisitor___require_declaration(self, var110); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
555 }
556 if (varonce111) {
557 var112 = varonce111;
558 } else {
559 var113 = " = BOX_";
560 var114 = 7;
561 var115 = standard___standard__NativeString___to_s_with_length(var113, var114);
562 var112 = var115;
563 varonce111 = var112;
564 }
565 {
566 var116 = ((val* (*)(val* self))(var_valtype->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var_valtype) /* c_name on <var_valtype:MClassType>*/;
567 }
568 if (varonce117) {
569 var118 = varonce117;
570 } else {
571 var119 = "(";
572 var120 = 1;
573 var121 = standard___standard__NativeString___to_s_with_length(var119, var120);
574 var118 = var121;
575 varonce117 = var118;
576 }
577 if (varonce122) {
578 var123 = varonce122;
579 } else {
580 var124 = "); /* boxing ";
581 var125 = 13;
582 var126 = standard___standard__NativeString___to_s_with_length(var124, var125);
583 var123 = var126;
584 varonce122 = var123;
585 }
586 {
587 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
588 var129 = var_value->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
589 if (unlikely(var129 == NULL)) {
590 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
591 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1680);
592 show_backtrace(1);
593 }
594 var127 = var129;
595 RET_LABEL128:(void)0;
596 }
597 }
598 if (varonce130) {
599 var131 = varonce130;
600 } else {
601 var132 = " */";
602 var133 = 3;
603 var134 = standard___standard__NativeString___to_s_with_length(var132, var133);
604 var131 = var134;
605 varonce130 = var131;
606 }
607 var135 = NEW_standard__Array(&type_standard__Array__standard__Object);
608 { /* var135 = array_instance Array[Object] */
609 var136 = 8;
610 var137 = NEW_standard__NativeArray(var136, &type_standard__NativeArray__standard__Object);
611 ((struct instance_standard__NativeArray*)var137)->values[0] = (val*) var_res;
612 ((struct instance_standard__NativeArray*)var137)->values[1] = (val*) var112;
613 ((struct instance_standard__NativeArray*)var137)->values[2] = (val*) var116;
614 ((struct instance_standard__NativeArray*)var137)->values[3] = (val*) var118;
615 ((struct instance_standard__NativeArray*)var137)->values[4] = (val*) var_value;
616 ((struct instance_standard__NativeArray*)var137)->values[5] = (val*) var123;
617 ((struct instance_standard__NativeArray*)var137)->values[6] = (val*) var127;
618 ((struct instance_standard__NativeArray*)var137)->values[7] = (val*) var131;
619 {
620 ((void (*)(val* self, val* p0, long p1))(var135->class->vft[COLOR_standard__array__Array__with_native]))(var135, var137, var136) /* with_native on <var135:Array[Object]>*/;
621 }
622 }
623 {
624 var138 = ((val* (*)(val* self))(var135->class->vft[COLOR_standard__string__Object__to_s]))(var135) /* to_s on <var135:Array[Object]>*/;
625 }
626 {
627 nit___nit__AbstractCompilerVisitor___add(self, var138); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
628 }
629 if (varonce139) {
630 var140 = varonce139;
631 } else {
632 var141 = "type_";
633 var142 = 5;
634 var143 = standard___standard__NativeString___to_s_with_length(var141, var142);
635 var140 = var143;
636 varonce139 = var140;
637 }
638 {
639 var144 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var_mtype) /* c_name on <var_mtype:MType(MClassType)>*/;
640 }
641 var145 = NEW_standard__Array(&type_standard__Array__standard__Object);
642 { /* var145 = array_instance Array[Object] */
643 var146 = 2;
644 var147 = NEW_standard__NativeArray(var146, &type_standard__NativeArray__standard__Object);
645 ((struct instance_standard__NativeArray*)var147)->values[0] = (val*) var140;
646 ((struct instance_standard__NativeArray*)var147)->values[1] = (val*) var144;
647 {
648 ((void (*)(val* self, val* p0, long p1))(var145->class->vft[COLOR_standard__array__Array__with_native]))(var145, var147, var146) /* with_native on <var145:Array[Object]>*/;
649 }
650 }
651 {
652 var148 = ((val* (*)(val* self))(var145->class->vft[COLOR_standard__string__Object__to_s]))(var145) /* to_s on <var145:Array[Object]>*/;
653 }
654 {
655 nit___nit__AbstractCompilerVisitor___require_declaration(self, var148); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
656 }
657 if (varonce149) {
658 var150 = varonce149;
659 } else {
660 var151 = "->type = &type_";
661 var152 = 15;
662 var153 = standard___standard__NativeString___to_s_with_length(var151, var152);
663 var150 = var153;
664 varonce149 = var150;
665 }
666 {
667 var154 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var_mtype) /* c_name on <var_mtype:MType(MClassType)>*/;
668 }
669 if (varonce155) {
670 var156 = varonce155;
671 } else {
672 var157 = ";";
673 var158 = 1;
674 var159 = standard___standard__NativeString___to_s_with_length(var157, var158);
675 var156 = var159;
676 varonce155 = var156;
677 }
678 var160 = NEW_standard__Array(&type_standard__Array__standard__Object);
679 { /* var160 = array_instance Array[Object] */
680 var161 = 4;
681 var162 = NEW_standard__NativeArray(var161, &type_standard__NativeArray__standard__Object);
682 ((struct instance_standard__NativeArray*)var162)->values[0] = (val*) var_res;
683 ((struct instance_standard__NativeArray*)var162)->values[1] = (val*) var150;
684 ((struct instance_standard__NativeArray*)var162)->values[2] = (val*) var154;
685 ((struct instance_standard__NativeArray*)var162)->values[3] = (val*) var156;
686 {
687 ((void (*)(val* self, val* p0, long p1))(var160->class->vft[COLOR_standard__array__Array__with_native]))(var160, var162, var161) /* with_native on <var160:Array[Object]>*/;
688 }
689 }
690 {
691 var163 = ((val* (*)(val* self))(var160->class->vft[COLOR_standard__string__Object__to_s]))(var160) /* to_s on <var160:Array[Object]>*/;
692 }
693 {
694 nit___nit__AbstractCompilerVisitor___add(self, var163); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
695 }
696 if (varonce164) {
697 var165 = varonce164;
698 } else {
699 var166 = "class_";
700 var167 = 6;
701 var168 = standard___standard__NativeString___to_s_with_length(var166, var167);
702 var165 = var168;
703 varonce164 = var165;
704 }
705 {
706 var169 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var_mtype) /* c_name on <var_mtype:MType(MClassType)>*/;
707 }
708 var170 = NEW_standard__Array(&type_standard__Array__standard__Object);
709 { /* var170 = array_instance Array[Object] */
710 var171 = 2;
711 var172 = NEW_standard__NativeArray(var171, &type_standard__NativeArray__standard__Object);
712 ((struct instance_standard__NativeArray*)var172)->values[0] = (val*) var165;
713 ((struct instance_standard__NativeArray*)var172)->values[1] = (val*) var169;
714 {
715 ((void (*)(val* self, val* p0, long p1))(var170->class->vft[COLOR_standard__array__Array__with_native]))(var170, var172, var171) /* with_native on <var170:Array[Object]>*/;
716 }
717 }
718 {
719 var173 = ((val* (*)(val* self))(var170->class->vft[COLOR_standard__string__Object__to_s]))(var170) /* to_s on <var170:Array[Object]>*/;
720 }
721 {
722 nit___nit__AbstractCompilerVisitor___require_declaration(self, var173); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
723 }
724 if (varonce174) {
725 var175 = varonce174;
726 } else {
727 var176 = "->class = &class_";
728 var177 = 17;
729 var178 = standard___standard__NativeString___to_s_with_length(var176, var177);
730 var175 = var178;
731 varonce174 = var175;
732 }
733 {
734 var179 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var_mtype) /* c_name on <var_mtype:MType(MClassType)>*/;
735 }
736 if (varonce180) {
737 var181 = varonce180;
738 } else {
739 var182 = ";";
740 var183 = 1;
741 var184 = standard___standard__NativeString___to_s_with_length(var182, var183);
742 var181 = var184;
743 varonce180 = var181;
744 }
745 var185 = NEW_standard__Array(&type_standard__Array__standard__Object);
746 { /* var185 = array_instance Array[Object] */
747 var186 = 4;
748 var187 = NEW_standard__NativeArray(var186, &type_standard__NativeArray__standard__Object);
749 ((struct instance_standard__NativeArray*)var187)->values[0] = (val*) var_res;
750 ((struct instance_standard__NativeArray*)var187)->values[1] = (val*) var175;
751 ((struct instance_standard__NativeArray*)var187)->values[2] = (val*) var179;
752 ((struct instance_standard__NativeArray*)var187)->values[3] = (val*) var181;
753 {
754 ((void (*)(val* self, val* p0, long p1))(var185->class->vft[COLOR_standard__array__Array__with_native]))(var185, var187, var186) /* with_native on <var185:Array[Object]>*/;
755 }
756 }
757 {
758 var188 = ((val* (*)(val* self))(var185->class->vft[COLOR_standard__string__Object__to_s]))(var185) /* to_s on <var185:Array[Object]>*/;
759 }
760 {
761 nit___nit__AbstractCompilerVisitor___add(self, var188); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
762 }
763 var = var_res;
764 goto RET_LABEL;
765 } else {
766 var = var_value;
767 goto RET_LABEL;
768 }
769 RET_LABEL:;
770 return var;
771 }
772 /* method separate_compiler#SeparateCompilerVisitor#type_info for (self: SeparateCompilerVisitor, RuntimeVariable): String */
773 val* nit___nit__SeparateCompilerVisitor___type_info(val* self, val* p0) {
774 val* var /* : String */;
775 val* var_value /* var value: RuntimeVariable */;
776 val* var1 /* : MType */;
777 val* var3 /* : MType */;
778 val* var4 /* : String */;
779 static val* varonce;
780 val* var5 /* : String */;
781 char* var6 /* : NativeString */;
782 long var7 /* : Int */;
783 val* var8 /* : FlatString */;
784 short int var9 /* : Bool */;
785 static val* varonce10;
786 val* var11 /* : String */;
787 char* var12 /* : NativeString */;
788 long var13 /* : Int */;
789 val* var14 /* : FlatString */;
790 val* var15 /* : Array[Object] */;
791 long var16 /* : Int */;
792 val* var17 /* : NativeArray[Object] */;
793 val* var18 /* : String */;
794 val* var19 /* : AbstractCompiler */;
795 val* var21 /* : AbstractCompiler */;
796 val* var22 /* : Set[MType] */;
797 val* var24 /* : Set[MType] */;
798 val* var25 /* : MType */;
799 val* var27 /* : MType */;
800 static val* varonce28;
801 val* var29 /* : String */;
802 char* var30 /* : NativeString */;
803 long var31 /* : Int */;
804 val* var32 /* : FlatString */;
805 val* var33 /* : MType */;
806 val* var35 /* : MType */;
807 val* var36 /* : String */;
808 val* var37 /* : Array[Object] */;
809 long var38 /* : Int */;
810 val* var39 /* : NativeArray[Object] */;
811 val* var40 /* : String */;
812 static val* varonce41;
813 val* var42 /* : String */;
814 char* var43 /* : NativeString */;
815 long var44 /* : Int */;
816 val* var45 /* : FlatString */;
817 val* var46 /* : MType */;
818 val* var48 /* : MType */;
819 val* var49 /* : String */;
820 static val* varonce50;
821 val* var51 /* : String */;
822 char* var52 /* : NativeString */;
823 long var53 /* : Int */;
824 val* var54 /* : FlatString */;
825 val* var55 /* : Array[Object] */;
826 long var56 /* : Int */;
827 val* var57 /* : NativeArray[Object] */;
828 val* var58 /* : String */;
829 var_value = p0;
830 {
831 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
832 var3 = var_value->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
833 if (unlikely(var3 == NULL)) {
834 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
835 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1680);
836 show_backtrace(1);
837 }
838 var1 = var3;
839 RET_LABEL2:(void)0;
840 }
841 }
842 {
843 var4 = ((val* (*)(val* self))(var1->class->vft[COLOR_nit__abstract_compiler__MType__ctype]))(var1) /* ctype on <var1:MType>*/;
844 }
845 if (varonce) {
846 var5 = varonce;
847 } else {
848 var6 = "val*";
849 var7 = 4;
850 var8 = standard___standard__NativeString___to_s_with_length(var6, var7);
851 var5 = var8;
852 varonce = var5;
853 }
854 {
855 var9 = ((short int (*)(val* self, val* p0))(var4->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var4, var5) /* == on <var4:String>*/;
856 }
857 if (var9){
858 if (varonce10) {
859 var11 = varonce10;
860 } else {
861 var12 = "->type";
862 var13 = 6;
863 var14 = standard___standard__NativeString___to_s_with_length(var12, var13);
864 var11 = var14;
865 varonce10 = var11;
866 }
867 var15 = NEW_standard__Array(&type_standard__Array__standard__Object);
868 { /* var15 = array_instance Array[Object] */
869 var16 = 2;
870 var17 = NEW_standard__NativeArray(var16, &type_standard__NativeArray__standard__Object);
871 ((struct instance_standard__NativeArray*)var17)->values[0] = (val*) var_value;
872 ((struct instance_standard__NativeArray*)var17)->values[1] = (val*) var11;
873 {
874 ((void (*)(val* self, val* p0, long p1))(var15->class->vft[COLOR_standard__array__Array__with_native]))(var15, var17, var16) /* with_native on <var15:Array[Object]>*/;
875 }
876 }
877 {
878 var18 = ((val* (*)(val* self))(var15->class->vft[COLOR_standard__string__Object__to_s]))(var15) /* to_s on <var15:Array[Object]>*/;
879 }
880 var = var18;
881 goto RET_LABEL;
882 } else {
883 {
884 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
885 var21 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
886 if (unlikely(var21 == NULL)) {
887 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
888 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
889 show_backtrace(1);
890 }
891 var19 = var21;
892 RET_LABEL20:(void)0;
893 }
894 }
895 {
896 { /* Inline separate_compiler#SeparateCompiler#undead_types (var19) on <var19:AbstractCompiler(SeparateCompiler)> */
897 var24 = var19->attrs[COLOR_nit__separate_compiler__SeparateCompiler___undead_types].val; /* _undead_types on <var19:AbstractCompiler(SeparateCompiler)> */
898 if (unlikely(var24 == NULL)) {
899 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _undead_types");
900 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 121);
901 show_backtrace(1);
902 }
903 var22 = var24;
904 RET_LABEL23:(void)0;
905 }
906 }
907 {
908 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
909 var27 = var_value->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
910 if (unlikely(var27 == NULL)) {
911 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
912 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1680);
913 show_backtrace(1);
914 }
915 var25 = var27;
916 RET_LABEL26:(void)0;
917 }
918 }
919 {
920 ((void (*)(val* self, val* p0))(var22->class->vft[COLOR_standard__abstract_collection__SimpleCollection__add]))(var22, var25) /* add on <var22:Set[MType]>*/;
921 }
922 if (varonce28) {
923 var29 = varonce28;
924 } else {
925 var30 = "type_";
926 var31 = 5;
927 var32 = standard___standard__NativeString___to_s_with_length(var30, var31);
928 var29 = var32;
929 varonce28 = var29;
930 }
931 {
932 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
933 var35 = var_value->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
934 if (unlikely(var35 == NULL)) {
935 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
936 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1680);
937 show_backtrace(1);
938 }
939 var33 = var35;
940 RET_LABEL34:(void)0;
941 }
942 }
943 {
944 var36 = ((val* (*)(val* self))(var33->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var33) /* c_name on <var33:MType>*/;
945 }
946 var37 = NEW_standard__Array(&type_standard__Array__standard__Object);
947 { /* var37 = array_instance Array[Object] */
948 var38 = 2;
949 var39 = NEW_standard__NativeArray(var38, &type_standard__NativeArray__standard__Object);
950 ((struct instance_standard__NativeArray*)var39)->values[0] = (val*) var29;
951 ((struct instance_standard__NativeArray*)var39)->values[1] = (val*) var36;
952 {
953 ((void (*)(val* self, val* p0, long p1))(var37->class->vft[COLOR_standard__array__Array__with_native]))(var37, var39, var38) /* with_native on <var37:Array[Object]>*/;
954 }
955 }
956 {
957 var40 = ((val* (*)(val* self))(var37->class->vft[COLOR_standard__string__Object__to_s]))(var37) /* to_s on <var37:Array[Object]>*/;
958 }
959 {
960 nit___nit__AbstractCompilerVisitor___require_declaration(self, var40); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
961 }
962 if (varonce41) {
963 var42 = varonce41;
964 } else {
965 var43 = "(&type_";
966 var44 = 7;
967 var45 = standard___standard__NativeString___to_s_with_length(var43, var44);
968 var42 = var45;
969 varonce41 = var42;
970 }
971 {
972 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
973 var48 = var_value->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
974 if (unlikely(var48 == NULL)) {
975 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
976 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1680);
977 show_backtrace(1);
978 }
979 var46 = var48;
980 RET_LABEL47:(void)0;
981 }
982 }
983 {
984 var49 = ((val* (*)(val* self))(var46->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var46) /* c_name on <var46:MType>*/;
985 }
986 if (varonce50) {
987 var51 = varonce50;
988 } else {
989 var52 = ")";
990 var53 = 1;
991 var54 = standard___standard__NativeString___to_s_with_length(var52, var53);
992 var51 = var54;
993 varonce50 = var51;
994 }
995 var55 = NEW_standard__Array(&type_standard__Array__standard__Object);
996 { /* var55 = array_instance Array[Object] */
997 var56 = 3;
998 var57 = NEW_standard__NativeArray(var56, &type_standard__NativeArray__standard__Object);
999 ((struct instance_standard__NativeArray*)var57)->values[0] = (val*) var42;
1000 ((struct instance_standard__NativeArray*)var57)->values[1] = (val*) var49;
1001 ((struct instance_standard__NativeArray*)var57)->values[2] = (val*) var51;
1002 {
1003 ((void (*)(val* self, val* p0, long p1))(var55->class->vft[COLOR_standard__array__Array__with_native]))(var55, var57, var56) /* with_native on <var55:Array[Object]>*/;
1004 }
1005 }
1006 {
1007 var58 = ((val* (*)(val* self))(var55->class->vft[COLOR_standard__string__Object__to_s]))(var55) /* to_s on <var55:Array[Object]>*/;
1008 }
1009 var = var58;
1010 goto RET_LABEL;
1011 }
1012 RET_LABEL:;
1013 return var;
1014 }
1015 /* method separate_compiler#SeparateCompilerVisitor#compile_callsite for (self: SeparateCompilerVisitor, CallSite, Array[RuntimeVariable]): nullable RuntimeVariable */
1016 val* nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__compile_callsite(val* self, val* p0, val* p1) {
1017 val* var /* : nullable RuntimeVariable */;
1018 val* var_callsite /* var callsite: CallSite */;
1019 val* var_args /* var args: Array[RuntimeVariable] */;
1020 val* var1 /* : AbstractCompiler */;
1021 val* var3 /* : AbstractCompiler */;
1022 val* var4 /* : nullable RapidTypeAnalysis */;
1023 val* var6 /* : nullable RapidTypeAnalysis */;
1024 val* var_rta /* var rta: nullable RapidTypeAnalysis */;
1025 val* var7 /* : MMethod */;
1026 val* var9 /* : MMethod */;
1027 val* var_mmethod /* var mmethod: MMethod */;
1028 short int var10 /* : Bool */;
1029 short int var11 /* : Bool */;
1030 val* var12 /* : AbstractCompiler */;
1031 val* var14 /* : AbstractCompiler */;
1032 val* var15 /* : ModelBuilder */;
1033 val* var17 /* : ModelBuilder */;
1034 val* var18 /* : ToolContext */;
1035 val* var20 /* : ToolContext */;
1036 val* var21 /* : OptionBool */;
1037 val* var23 /* : OptionBool */;
1038 val* var24 /* : nullable Object */;
1039 val* var26 /* : nullable Object */;
1040 short int var27 /* : Bool */;
1041 short int var_ /* var : Bool */;
1042 val* var28 /* : null */;
1043 short int var29 /* : Bool */;
1044 short int var30 /* : Bool */;
1045 val* var_other /* var other: nullable Object */;
1046 short int var32 /* : Bool */;
1047 short int var33 /* : Bool */;
1048 short int var_34 /* var : Bool */;
1049 val* var35 /* : MMethodDef */;
1050 val* var37 /* : MMethodDef */;
1051 val* var38 /* : Array[MProperty] */;
1052 val* var40 /* : Array[MProperty] */;
1053 short int var41 /* : Bool */;
1054 val* var42 /* : Set[MMethodDef] */;
1055 val* var_tgs /* var tgs: Set[MMethodDef] */;
1056 long var43 /* : Int */;
1057 long var44 /* : Int */;
1058 short int var45 /* : Bool */;
1059 short int var47 /* : Bool */;
1060 val* var48 /* : nullable RuntimeVariable */;
1061 val* var_res0 /* var res0: nullable RuntimeVariable */;
1062 val* var49 /* : nullable Object */;
1063 val* var50 /* : nullable Object */;
1064 val* var51 /* : MClassDef */;
1065 val* var53 /* : MClassDef */;
1066 val* var54 /* : MClassType */;
1067 val* var56 /* : MClassType */;
1068 val* var57 /* : nullable RuntimeVariable */;
1069 val* var_res /* var res: nullable RuntimeVariable */;
1070 val* var58 /* : null */;
1071 short int var59 /* : Bool */;
1072 short int var60 /* : Bool */;
1073 short int var62 /* : Bool */;
1074 short int var63 /* : Bool */;
1075 val* var64 /* : null */;
1076 short int var65 /* : Bool */;
1077 short int var66 /* : Bool */;
1078 short int var68 /* : Bool */;
1079 short int var69 /* : Bool */;
1080 static val* varonce;
1081 val* var70 /* : String */;
1082 char* var71 /* : NativeString */;
1083 long var72 /* : Int */;
1084 val* var73 /* : FlatString */;
1085 val* var74 /* : nullable RuntimeVariable */;
1086 var_callsite = p0;
1087 var_args = p1;
1088 {
1089 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
1090 var3 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
1091 if (unlikely(var3 == NULL)) {
1092 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1093 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
1094 show_backtrace(1);
1095 }
1096 var1 = var3;
1097 RET_LABEL2:(void)0;
1098 }
1099 }
1100 {
1101 { /* Inline separate_compiler#SeparateCompiler#runtime_type_analysis (var1) on <var1:AbstractCompiler(SeparateCompiler)> */
1102 var6 = var1->attrs[COLOR_nit__separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on <var1:AbstractCompiler(SeparateCompiler)> */
1103 var4 = var6;
1104 RET_LABEL5:(void)0;
1105 }
1106 }
1107 var_rta = var4;
1108 {
1109 { /* Inline typing#CallSite#mproperty (var_callsite) on <var_callsite:CallSite> */
1110 var9 = var_callsite->attrs[COLOR_nit__typing__CallSite___mproperty].val; /* _mproperty on <var_callsite:CallSite> */
1111 if (unlikely(var9 == NULL)) {
1112 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
1113 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 487);
1114 show_backtrace(1);
1115 }
1116 var7 = var9;
1117 RET_LABEL8:(void)0;
1118 }
1119 }
1120 var_mmethod = var7;
1121 {
1122 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
1123 var14 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
1124 if (unlikely(var14 == NULL)) {
1125 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1126 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
1127 show_backtrace(1);
1128 }
1129 var12 = var14;
1130 RET_LABEL13:(void)0;
1131 }
1132 }
1133 {
1134 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var12) on <var12:AbstractCompiler(SeparateCompiler)> */
1135 var17 = var12->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var12:AbstractCompiler(SeparateCompiler)> */
1136 if (unlikely(var17 == NULL)) {
1137 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
1138 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
1139 show_backtrace(1);
1140 }
1141 var15 = var17;
1142 RET_LABEL16:(void)0;
1143 }
1144 }
1145 {
1146 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var15) on <var15:ModelBuilder> */
1147 var20 = var15->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var15:ModelBuilder> */
1148 if (unlikely(var20 == NULL)) {
1149 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1150 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
1151 show_backtrace(1);
1152 }
1153 var18 = var20;
1154 RET_LABEL19:(void)0;
1155 }
1156 }
1157 {
1158 { /* Inline separate_compiler#ToolContext#opt_direct_call_monomorph (var18) on <var18:ToolContext> */
1159 var23 = var18->attrs[COLOR_nit__separate_compiler__ToolContext___opt_direct_call_monomorph].val; /* _opt_direct_call_monomorph on <var18:ToolContext> */
1160 if (unlikely(var23 == NULL)) {
1161 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_direct_call_monomorph");
1162 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 39);
1163 show_backtrace(1);
1164 }
1165 var21 = var23;
1166 RET_LABEL22:(void)0;
1167 }
1168 }
1169 {
1170 { /* Inline opts#Option#value (var21) on <var21:OptionBool> */
1171 var26 = var21->attrs[COLOR_opts__Option___value].val; /* _value on <var21:OptionBool> */
1172 var24 = var26;
1173 RET_LABEL25:(void)0;
1174 }
1175 }
1176 var27 = ((struct instance_standard__Bool*)var24)->value; /* autounbox from nullable Object to Bool */;
1177 var_ = var27;
1178 if (var27){
1179 var28 = NULL;
1180 if (var_rta == NULL) {
1181 var29 = 0; /* is null */
1182 } else {
1183 var29 = 1; /* arg is null and recv is not */
1184 }
1185 if (0) {
1186 { /* Inline kernel#Object#!= (var_rta,var28) on <var_rta:nullable RapidTypeAnalysis> */
1187 var_other = var28;
1188 {
1189 var32 = ((short int (*)(val* self, val* p0))(var_rta->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_rta, var_other) /* == on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)>*/;
1190 }
1191 var33 = !var32;
1192 var30 = var33;
1193 goto RET_LABEL31;
1194 RET_LABEL31:(void)0;
1195 }
1196 var29 = var30;
1197 }
1198 var11 = var29;
1199 } else {
1200 var11 = var_;
1201 }
1202 var_34 = var11;
1203 if (var11){
1204 {
1205 { /* Inline typing#CallSite#mpropdef (var_callsite) on <var_callsite:CallSite> */
1206 var37 = var_callsite->attrs[COLOR_nit__typing__CallSite___mpropdef].val; /* _mpropdef on <var_callsite:CallSite> */
1207 if (unlikely(var37 == NULL)) {
1208 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
1209 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 490);
1210 show_backtrace(1);
1211 }
1212 var35 = var37;
1213 RET_LABEL36:(void)0;
1214 }
1215 }
1216 {
1217 { /* Inline model#MMethodDef#initializers (var35) on <var35:MMethodDef> */
1218 var40 = var35->attrs[COLOR_nit__model__MMethodDef___initializers].val; /* _initializers on <var35:MMethodDef> */
1219 if (unlikely(var40 == NULL)) {
1220 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
1221 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2146);
1222 show_backtrace(1);
1223 }
1224 var38 = var40;
1225 RET_LABEL39:(void)0;
1226 }
1227 }
1228 {
1229 var41 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var38);
1230 }
1231 var10 = var41;
1232 } else {
1233 var10 = var_34;
1234 }
1235 if (var10){
1236 {
1237 var42 = nit___nit__RapidTypeAnalysis___live_targets(var_rta, var_callsite);
1238 }
1239 var_tgs = var42;
1240 {
1241 var43 = ((long (*)(val* self))(var_tgs->class->vft[COLOR_standard__abstract_collection__Collection__length]))(var_tgs) /* length on <var_tgs:Set[MMethodDef]>*/;
1242 }
1243 var44 = 1;
1244 {
1245 { /* Inline kernel#Int#== (var43,var44) on <var43:Int> */
1246 var47 = var43 == var44;
1247 var45 = var47;
1248 goto RET_LABEL46;
1249 RET_LABEL46:(void)0;
1250 }
1251 }
1252 if (var45){
1253 {
1254 var48 = nit___nit__SeparateCompilerVisitor___before_send(self, var_mmethod, var_args);
1255 }
1256 var_res0 = var48;
1257 {
1258 var49 = ((val* (*)(val* self))(var_tgs->class->vft[COLOR_standard__abstract_collection__Collection__first]))(var_tgs) /* first on <var_tgs:Set[MMethodDef]>*/;
1259 }
1260 {
1261 var50 = ((val* (*)(val* self))(var_tgs->class->vft[COLOR_standard__abstract_collection__Collection__first]))(var_tgs) /* first on <var_tgs:Set[MMethodDef]>*/;
1262 }
1263 {
1264 { /* Inline model#MPropDef#mclassdef (var50) on <var50:nullable Object(MMethodDef)> */
1265 var53 = var50->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var50:nullable Object(MMethodDef)> */
1266 if (unlikely(var53 == NULL)) {
1267 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
1268 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2010);
1269 show_backtrace(1);
1270 }
1271 var51 = var53;
1272 RET_LABEL52:(void)0;
1273 }
1274 }
1275 {
1276 { /* Inline model#MClassDef#bound_mtype (var51) on <var51:MClassDef> */
1277 var56 = var51->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var51:MClassDef> */
1278 if (unlikely(var56 == NULL)) {
1279 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
1280 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
1281 show_backtrace(1);
1282 }
1283 var54 = var56;
1284 RET_LABEL55:(void)0;
1285 }
1286 }
1287 {
1288 var57 = nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__call(self, var49, var54, var_args);
1289 }
1290 var_res = var57;
1291 var58 = NULL;
1292 if (var_res0 == NULL) {
1293 var59 = 0; /* is null */
1294 } else {
1295 var59 = 1; /* arg is null and recv is not */
1296 }
1297 if (0) {
1298 { /* Inline kernel#Object#!= (var_res0,var58) on <var_res0:nullable RuntimeVariable> */
1299 var_other = var58;
1300 {
1301 var62 = ((short int (*)(val* self, val* p0))(var_res0->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_res0, var_other) /* == on <var_res0:nullable RuntimeVariable(RuntimeVariable)>*/;
1302 }
1303 var63 = !var62;
1304 var60 = var63;
1305 goto RET_LABEL61;
1306 RET_LABEL61:(void)0;
1307 }
1308 var59 = var60;
1309 }
1310 if (var59){
1311 var64 = NULL;
1312 if (var_res == NULL) {
1313 var65 = 0; /* is null */
1314 } else {
1315 var65 = 1; /* arg is null and recv is not */
1316 }
1317 if (0) {
1318 { /* Inline kernel#Object#!= (var_res,var64) on <var_res:nullable RuntimeVariable> */
1319 var_other = var64;
1320 {
1321 var68 = ((short int (*)(val* self, val* p0))(var_res->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable RuntimeVariable(RuntimeVariable)>*/;
1322 }
1323 var69 = !var68;
1324 var66 = var69;
1325 goto RET_LABEL67;
1326 RET_LABEL67:(void)0;
1327 }
1328 var65 = var66;
1329 }
1330 if (unlikely(!var65)) {
1331 PRINT_ERROR("Runtime error: %s", "Assert failed");
1332 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1085);
1333 show_backtrace(1);
1334 }
1335 {
1336 nit___nit__AbstractCompilerVisitor___assign(self, var_res0, var_res); /* Direct call abstract_compiler#AbstractCompilerVisitor#assign on <self:SeparateCompilerVisitor>*/
1337 }
1338 var_res = var_res0;
1339 } else {
1340 }
1341 if (varonce) {
1342 var70 = varonce;
1343 } else {
1344 var71 = "}";
1345 var72 = 1;
1346 var73 = standard___standard__NativeString___to_s_with_length(var71, var72);
1347 var70 = var73;
1348 varonce = var70;
1349 }
1350 {
1351 nit___nit__AbstractCompilerVisitor___add(self, var70); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
1352 }
1353 var = var_res;
1354 goto RET_LABEL;
1355 } else {
1356 }
1357 } else {
1358 }
1359 {
1360 var74 = ((val* (*)(val* self, val* p0, val* p1))(self->class->vft[COLOR_nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__compile_callsite]))(self, p0, p1) /* compile_callsite on <self:SeparateCompilerVisitor>*/;
1361 }
1362 var = var74;
1363 goto RET_LABEL;
1364 RET_LABEL:;
1365 return var;
1366 }
1367 /* method separate_compiler#SeparateCompilerVisitor#send for (self: SeparateCompilerVisitor, MMethod, Array[RuntimeVariable]): nullable RuntimeVariable */
1368 val* nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__send(val* self, val* p0, val* p1) {
1369 val* var /* : nullable RuntimeVariable */;
1370 val* var_mmethod /* var mmethod: MMethod */;
1371 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
1372 val* var1 /* : nullable Object */;
1373 val* var2 /* : MType */;
1374 val* var4 /* : MType */;
1375 val* var5 /* : String */;
1376 static val* varonce;
1377 val* var6 /* : String */;
1378 char* var7 /* : NativeString */;
1379 long var8 /* : Int */;
1380 val* var9 /* : FlatString */;
1381 short int var10 /* : Bool */;
1382 val* var_other /* var other: nullable Object */;
1383 short int var12 /* : Bool */;
1384 short int var13 /* : Bool */;
1385 val* var14 /* : AbstractCompiler */;
1386 val* var16 /* : AbstractCompiler */;
1387 val* var17 /* : MModule */;
1388 val* var19 /* : MModule */;
1389 val* var_m /* var m: MModule */;
1390 val* var20 /* : AbstractCompiler */;
1391 val* var22 /* : AbstractCompiler */;
1392 val* var23 /* : AbstractCompiler */;
1393 val* var25 /* : AbstractCompiler */;
1394 val* var26 /* : MModule */;
1395 val* var28 /* : MModule */;
1396 val* var30 /* : nullable Object */;
1397 val* var31 /* : MType */;
1398 val* var33 /* : MType */;
1399 val* var34 /* : nullable RuntimeVariable */;
1400 val* var_res /* var res: nullable RuntimeVariable */;
1401 val* var35 /* : AbstractCompiler */;
1402 val* var37 /* : AbstractCompiler */;
1403 val* var39 /* : String */;
1404 val* var40 /* : nullable RuntimeVariable */;
1405 var_mmethod = p0;
1406 var_arguments = p1;
1407 {
1408 var1 = standard___standard__SequenceRead___Collection__first(var_arguments);
1409 }
1410 {
1411 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var1) on <var1:nullable Object(RuntimeVariable)> */
1412 var4 = var1->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var1:nullable Object(RuntimeVariable)> */
1413 if (unlikely(var4 == NULL)) {
1414 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
1415 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1683);
1416 show_backtrace(1);
1417 }
1418 var2 = var4;
1419 RET_LABEL3:(void)0;
1420 }
1421 }
1422 {
1423 var5 = ((val* (*)(val* self))(var2->class->vft[COLOR_nit__abstract_compiler__MType__ctype]))(var2) /* ctype on <var2:MType>*/;
1424 }
1425 if (varonce) {
1426 var6 = varonce;
1427 } else {
1428 var7 = "val*";
1429 var8 = 4;
1430 var9 = standard___standard__NativeString___to_s_with_length(var7, var8);
1431 var6 = var9;
1432 varonce = var6;
1433 }
1434 {
1435 { /* Inline kernel#Object#!= (var5,var6) on <var5:String> */
1436 var_other = var6;
1437 {
1438 var12 = ((short int (*)(val* self, val* p0))(var5->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var5, var_other) /* == on <var5:String>*/;
1439 }
1440 var13 = !var12;
1441 var10 = var13;
1442 goto RET_LABEL11;
1443 RET_LABEL11:(void)0;
1444 }
1445 }
1446 if (var10){
1447 {
1448 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
1449 var16 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
1450 if (unlikely(var16 == NULL)) {
1451 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1452 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
1453 show_backtrace(1);
1454 }
1455 var14 = var16;
1456 RET_LABEL15:(void)0;
1457 }
1458 }
1459 {
1460 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (var14) on <var14:AbstractCompiler(SeparateCompiler)> */
1461 var19 = var14->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var14:AbstractCompiler(SeparateCompiler)> */
1462 if (unlikely(var19 == NULL)) {
1463 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1464 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 474);
1465 show_backtrace(1);
1466 }
1467 var17 = var19;
1468 RET_LABEL18:(void)0;
1469 }
1470 }
1471 var_m = var17;
1472 {
1473 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
1474 var22 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
1475 if (unlikely(var22 == NULL)) {
1476 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1477 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
1478 show_backtrace(1);
1479 }
1480 var20 = var22;
1481 RET_LABEL21:(void)0;
1482 }
1483 }
1484 {
1485 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
1486 var25 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
1487 if (unlikely(var25 == NULL)) {
1488 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1489 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
1490 show_backtrace(1);
1491 }
1492 var23 = var25;
1493 RET_LABEL24:(void)0;
1494 }
1495 }
1496 {
1497 { /* Inline abstract_compiler#AbstractCompiler#realmainmodule (var23) on <var23:AbstractCompiler(SeparateCompiler)> */
1498 var28 = var23->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___realmainmodule].val; /* _realmainmodule on <var23:AbstractCompiler(SeparateCompiler)> */
1499 if (unlikely(var28 == NULL)) {
1500 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _realmainmodule");
1501 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 478);
1502 show_backtrace(1);
1503 }
1504 var26 = var28;
1505 RET_LABEL27:(void)0;
1506 }
1507 }
1508 {
1509 { /* Inline abstract_compiler#AbstractCompiler#mainmodule= (var20,var26) on <var20:AbstractCompiler(SeparateCompiler)> */
1510 var20->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val = var26; /* _mainmodule on <var20:AbstractCompiler(SeparateCompiler)> */
1511 RET_LABEL29:(void)0;
1512 }
1513 }
1514 {
1515 var30 = standard___standard__SequenceRead___Collection__first(var_arguments);
1516 }
1517 {
1518 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var30) on <var30:nullable Object(RuntimeVariable)> */
1519 var33 = var30->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var30:nullable Object(RuntimeVariable)> */
1520 if (unlikely(var33 == NULL)) {
1521 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
1522 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1683);
1523 show_backtrace(1);
1524 }
1525 var31 = var33;
1526 RET_LABEL32:(void)0;
1527 }
1528 }
1529 {
1530 var34 = nit___nit__AbstractCompilerVisitor___monomorphic_send(self, var_mmethod, var31, var_arguments);
1531 }
1532 var_res = var34;
1533 {
1534 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
1535 var37 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
1536 if (unlikely(var37 == NULL)) {
1537 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1538 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
1539 show_backtrace(1);
1540 }
1541 var35 = var37;
1542 RET_LABEL36:(void)0;
1543 }
1544 }
1545 {
1546 { /* Inline abstract_compiler#AbstractCompiler#mainmodule= (var35,var_m) on <var35:AbstractCompiler(SeparateCompiler)> */
1547 var35->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val = var_m; /* _mainmodule on <var35:AbstractCompiler(SeparateCompiler)> */
1548 RET_LABEL38:(void)0;
1549 }
1550 }
1551 var = var_res;
1552 goto RET_LABEL;
1553 } else {
1554 }
1555 {
1556 var39 = nit__separate_compiler___MEntity___const_color(var_mmethod);
1557 }
1558 {
1559 var40 = nit___nit__SeparateCompilerVisitor___table_send(self, var_mmethod, var_arguments, var39);
1560 }
1561 var = var40;
1562 goto RET_LABEL;
1563 RET_LABEL:;
1564 return var;
1565 }
1566 /* method separate_compiler#SeparateCompilerVisitor#before_send for (self: SeparateCompilerVisitor, MMethod, Array[RuntimeVariable]): nullable RuntimeVariable */
1567 val* nit___nit__SeparateCompilerVisitor___before_send(val* self, val* p0, val* p1) {
1568 val* var /* : nullable RuntimeVariable */;
1569 val* var_mmethod /* var mmethod: MMethod */;
1570 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
1571 val* var1 /* : null */;
1572 val* var_res /* var res: nullable RuntimeVariable */;
1573 val* var2 /* : nullable Object */;
1574 val* var_recv /* var recv: RuntimeVariable */;
1575 short int var3 /* : Bool */;
1576 short int var4 /* : Bool */;
1577 val* var5 /* : AbstractCompiler */;
1578 val* var7 /* : AbstractCompiler */;
1579 val* var8 /* : ModelBuilder */;
1580 val* var10 /* : ModelBuilder */;
1581 val* var11 /* : ToolContext */;
1582 val* var13 /* : ToolContext */;
1583 val* var14 /* : OptionBool */;
1584 val* var16 /* : OptionBool */;
1585 val* var17 /* : nullable Object */;
1586 val* var19 /* : nullable Object */;
1587 short int var20 /* : Bool */;
1588 short int var21 /* : Bool */;
1589 short int var_ /* var : Bool */;
1590 val* var22 /* : String */;
1591 val* var24 /* : String */;
1592 static val* varonce;
1593 val* var25 /* : String */;
1594 char* var26 /* : NativeString */;
1595 long var27 /* : Int */;
1596 val* var28 /* : FlatString */;
1597 short int var29 /* : Bool */;
1598 short int var_30 /* var : Bool */;
1599 val* var31 /* : String */;
1600 val* var33 /* : String */;
1601 static val* varonce34;
1602 val* var35 /* : String */;
1603 char* var36 /* : NativeString */;
1604 long var37 /* : Int */;
1605 val* var38 /* : FlatString */;
1606 short int var39 /* : Bool */;
1607 short int var_consider_null /* var consider_null: Bool */;
1608 short int var40 /* : Bool */;
1609 short int var41 /* : Bool */;
1610 val* var42 /* : MType */;
1611 val* var44 /* : MType */;
1612 short int var45 /* : Bool */;
1613 int cltype;
1614 int idtype;
1615 short int var_46 /* var : Bool */;
1616 val* var47 /* : MType */;
1617 val* var49 /* : MType */;
1618 short int var50 /* : Bool */;
1619 int cltype51;
1620 int idtype52;
1621 short int var_53 /* var : Bool */;
1622 short int var_maybenull /* var maybenull: Bool */;
1623 static val* varonce54;
1624 val* var55 /* : String */;
1625 char* var56 /* : NativeString */;
1626 long var57 /* : Int */;
1627 val* var58 /* : FlatString */;
1628 static val* varonce59;
1629 val* var60 /* : String */;
1630 char* var61 /* : NativeString */;
1631 long var62 /* : Int */;
1632 val* var63 /* : FlatString */;
1633 val* var64 /* : Array[Object] */;
1634 long var65 /* : Int */;
1635 val* var66 /* : NativeArray[Object] */;
1636 val* var67 /* : String */;
1637 short int var68 /* : Bool */;
1638 val* var69 /* : String */;
1639 val* var71 /* : String */;
1640 static val* varonce72;
1641 val* var73 /* : String */;
1642 char* var74 /* : NativeString */;
1643 long var75 /* : Int */;
1644 val* var76 /* : FlatString */;
1645 short int var77 /* : Bool */;
1646 short int var_78 /* var : Bool */;
1647 val* var79 /* : String */;
1648 val* var81 /* : String */;
1649 static val* varonce82;
1650 val* var83 /* : String */;
1651 char* var84 /* : NativeString */;
1652 long var85 /* : Int */;
1653 val* var86 /* : FlatString */;
1654 short int var87 /* : Bool */;
1655 val* var88 /* : MClassType */;
1656 val* var89 /* : RuntimeVariable */;
1657 long var90 /* : Int */;
1658 val* var91 /* : nullable Object */;
1659 val* var_arg /* var arg: RuntimeVariable */;
1660 val* var92 /* : MType */;
1661 val* var94 /* : MType */;
1662 short int var95 /* : Bool */;
1663 int cltype96;
1664 int idtype97;
1665 static val* varonce98;
1666 val* var99 /* : String */;
1667 char* var100 /* : NativeString */;
1668 long var101 /* : Int */;
1669 val* var102 /* : FlatString */;
1670 static val* varonce103;
1671 val* var104 /* : String */;
1672 char* var105 /* : NativeString */;
1673 long var106 /* : Int */;
1674 val* var107 /* : FlatString */;
1675 val* var108 /* : Array[Object] */;
1676 long var109 /* : Int */;
1677 val* var110 /* : NativeArray[Object] */;
1678 val* var111 /* : String */;
1679 val* var112 /* : MType */;
1680 val* var114 /* : MType */;
1681 short int var115 /* : Bool */;
1682 int cltype116;
1683 int idtype117;
1684 static val* varonce118;
1685 val* var119 /* : String */;
1686 char* var120 /* : NativeString */;
1687 long var121 /* : Int */;
1688 val* var122 /* : FlatString */;
1689 val* var123 /* : Array[Object] */;
1690 long var124 /* : Int */;
1691 val* var125 /* : NativeArray[Object] */;
1692 val* var126 /* : String */;
1693 static val* varonce127;
1694 val* var128 /* : String */;
1695 char* var129 /* : NativeString */;
1696 long var130 /* : Int */;
1697 val* var131 /* : FlatString */;
1698 val* var132 /* : String */;
1699 static val* varonce133;
1700 val* var134 /* : String */;
1701 char* var135 /* : NativeString */;
1702 long var136 /* : Int */;
1703 val* var137 /* : FlatString */;
1704 val* var138 /* : Array[Object] */;
1705 long var139 /* : Int */;
1706 val* var140 /* : NativeArray[Object] */;
1707 val* var141 /* : String */;
1708 val* var142 /* : String */;
1709 val* var144 /* : String */;
1710 static val* varonce145;
1711 val* var146 /* : String */;
1712 char* var147 /* : NativeString */;
1713 long var148 /* : Int */;
1714 val* var149 /* : FlatString */;
1715 short int var150 /* : Bool */;
1716 val* var151 /* : MClassType */;
1717 val* var152 /* : RuntimeVariable */;
1718 long var153 /* : Int */;
1719 val* var154 /* : nullable Object */;
1720 val* var_arg155 /* var arg: RuntimeVariable */;
1721 val* var156 /* : MType */;
1722 val* var158 /* : MType */;
1723 short int var159 /* : Bool */;
1724 int cltype160;
1725 int idtype161;
1726 static val* varonce162;
1727 val* var163 /* : String */;
1728 char* var164 /* : NativeString */;
1729 long var165 /* : Int */;
1730 val* var166 /* : FlatString */;
1731 static val* varonce167;
1732 val* var168 /* : String */;
1733 char* var169 /* : NativeString */;
1734 long var170 /* : Int */;
1735 val* var171 /* : FlatString */;
1736 val* var172 /* : Array[Object] */;
1737 long var173 /* : Int */;
1738 val* var174 /* : NativeArray[Object] */;
1739 val* var175 /* : String */;
1740 val* var176 /* : MType */;
1741 val* var178 /* : MType */;
1742 short int var179 /* : Bool */;
1743 int cltype180;
1744 int idtype181;
1745 static val* varonce182;
1746 val* var183 /* : String */;
1747 char* var184 /* : NativeString */;
1748 long var185 /* : Int */;
1749 val* var186 /* : FlatString */;
1750 val* var187 /* : Array[Object] */;
1751 long var188 /* : Int */;
1752 val* var189 /* : NativeArray[Object] */;
1753 val* var190 /* : String */;
1754 static val* varonce191;
1755 val* var192 /* : String */;
1756 char* var193 /* : NativeString */;
1757 long var194 /* : Int */;
1758 val* var195 /* : FlatString */;
1759 val* var196 /* : String */;
1760 static val* varonce197;
1761 val* var198 /* : String */;
1762 char* var199 /* : NativeString */;
1763 long var200 /* : Int */;
1764 val* var201 /* : FlatString */;
1765 val* var202 /* : Array[Object] */;
1766 long var203 /* : Int */;
1767 val* var204 /* : NativeArray[Object] */;
1768 val* var205 /* : String */;
1769 static val* varonce206;
1770 val* var207 /* : String */;
1771 char* var208 /* : NativeString */;
1772 long var209 /* : Int */;
1773 val* var210 /* : FlatString */;
1774 static val* varonce211;
1775 val* var212 /* : String */;
1776 char* var213 /* : NativeString */;
1777 long var214 /* : Int */;
1778 val* var215 /* : FlatString */;
1779 static val* varonce216;
1780 val* var217 /* : String */;
1781 char* var218 /* : NativeString */;
1782 long var219 /* : Int */;
1783 val* var220 /* : FlatString */;
1784 short int var221 /* : Bool */;
1785 val* var222 /* : AbstractCompiler */;
1786 val* var224 /* : AbstractCompiler */;
1787 val* var225 /* : ModelBuilder */;
1788 val* var227 /* : ModelBuilder */;
1789 val* var228 /* : ToolContext */;
1790 val* var230 /* : ToolContext */;
1791 val* var231 /* : OptionBool */;
1792 val* var233 /* : OptionBool */;
1793 val* var234 /* : nullable Object */;
1794 val* var236 /* : nullable Object */;
1795 short int var237 /* : Bool */;
1796 short int var238 /* : Bool */;
1797 short int var_239 /* var : Bool */;
1798 short int var240 /* : Bool */;
1799 short int var241 /* : Bool */;
1800 val* var242 /* : String */;
1801 val* var244 /* : String */;
1802 static val* varonce245;
1803 val* var246 /* : String */;
1804 char* var247 /* : NativeString */;
1805 long var248 /* : Int */;
1806 val* var249 /* : FlatString */;
1807 short int var250 /* : Bool */;
1808 short int var_251 /* var : Bool */;
1809 val* var252 /* : String */;
1810 val* var254 /* : String */;
1811 static val* varonce255;
1812 val* var256 /* : String */;
1813 char* var257 /* : NativeString */;
1814 long var258 /* : Int */;
1815 val* var259 /* : FlatString */;
1816 short int var260 /* : Bool */;
1817 short int var_261 /* var : Bool */;
1818 val* var262 /* : String */;
1819 val* var264 /* : String */;
1820 static val* varonce265;
1821 val* var266 /* : String */;
1822 char* var267 /* : NativeString */;
1823 long var268 /* : Int */;
1824 val* var269 /* : FlatString */;
1825 short int var270 /* : Bool */;
1826 long var271 /* : Int */;
1827 val* var272 /* : nullable Object */;
1828 val* var_arg273 /* var arg: RuntimeVariable */;
1829 val* var274 /* : MType */;
1830 val* var276 /* : MType */;
1831 short int var277 /* : Bool */;
1832 int cltype278;
1833 int idtype279;
1834 val* var280 /* : null */;
1835 short int var281 /* : Bool */;
1836 short int var282 /* : Bool */;
1837 val* var_other /* var other: nullable Object */;
1838 short int var284 /* : Bool */;
1839 short int var286 /* : Bool */;
1840 val* var287 /* : MClassType */;
1841 val* var288 /* : RuntimeVariable */;
1842 val* var289 /* : String */;
1843 val* var291 /* : String */;
1844 static val* varonce292;
1845 val* var293 /* : String */;
1846 char* var294 /* : NativeString */;
1847 long var295 /* : Int */;
1848 val* var296 /* : FlatString */;
1849 short int var297 /* : Bool */;
1850 static val* varonce298;
1851 val* var299 /* : String */;
1852 char* var300 /* : NativeString */;
1853 long var301 /* : Int */;
1854 val* var302 /* : FlatString */;
1855 val* var303 /* : Array[Object] */;
1856 long var304 /* : Int */;
1857 val* var305 /* : NativeArray[Object] */;
1858 val* var306 /* : String */;
1859 static val* varonce307;
1860 val* var308 /* : String */;
1861 char* var309 /* : NativeString */;
1862 long var310 /* : Int */;
1863 val* var311 /* : FlatString */;
1864 val* var312 /* : Array[Object] */;
1865 long var313 /* : Int */;
1866 val* var314 /* : NativeArray[Object] */;
1867 val* var315 /* : String */;
1868 static val* varonce316;
1869 val* var317 /* : String */;
1870 char* var318 /* : NativeString */;
1871 long var319 /* : Int */;
1872 val* var320 /* : FlatString */;
1873 static val* varonce321;
1874 val* var322 /* : String */;
1875 char* var323 /* : NativeString */;
1876 long var324 /* : Int */;
1877 val* var325 /* : FlatString */;
1878 var_mmethod = p0;
1879 var_arguments = p1;
1880 var1 = NULL;
1881 var_res = var1;
1882 {
1883 var2 = standard___standard__SequenceRead___Collection__first(var_arguments);
1884 }
1885 var_recv = var2;
1886 {
1887 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
1888 var7 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
1889 if (unlikely(var7 == NULL)) {
1890 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1891 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
1892 show_backtrace(1);
1893 }
1894 var5 = var7;
1895 RET_LABEL6:(void)0;
1896 }
1897 }
1898 {
1899 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var5) on <var5:AbstractCompiler(SeparateCompiler)> */
1900 var10 = var5->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var5:AbstractCompiler(SeparateCompiler)> */
1901 if (unlikely(var10 == NULL)) {
1902 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
1903 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
1904 show_backtrace(1);
1905 }
1906 var8 = var10;
1907 RET_LABEL9:(void)0;
1908 }
1909 }
1910 {
1911 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var8) on <var8:ModelBuilder> */
1912 var13 = var8->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var8:ModelBuilder> */
1913 if (unlikely(var13 == NULL)) {
1914 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1915 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
1916 show_backtrace(1);
1917 }
1918 var11 = var13;
1919 RET_LABEL12:(void)0;
1920 }
1921 }
1922 {
1923 { /* Inline abstract_compiler#ToolContext#opt_no_check_null (var11) on <var11:ToolContext> */
1924 var16 = var11->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_no_check_null].val; /* _opt_no_check_null on <var11:ToolContext> */
1925 if (unlikely(var16 == NULL)) {
1926 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_null");
1927 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 55);
1928 show_backtrace(1);
1929 }
1930 var14 = var16;
1931 RET_LABEL15:(void)0;
1932 }
1933 }
1934 {
1935 { /* Inline opts#Option#value (var14) on <var14:OptionBool> */
1936 var19 = var14->attrs[COLOR_opts__Option___value].val; /* _value on <var14:OptionBool> */
1937 var17 = var19;
1938 RET_LABEL18:(void)0;
1939 }
1940 }
1941 var20 = ((struct instance_standard__Bool*)var17)->value; /* autounbox from nullable Object to Bool */;
1942 var21 = !var20;
1943 var_ = var21;
1944 if (var21){
1945 var4 = var_;
1946 } else {
1947 {
1948 { /* Inline model#MProperty#name (var_mmethod) on <var_mmethod:MMethod> */
1949 var24 = var_mmethod->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var_mmethod:MMethod> */
1950 if (unlikely(var24 == NULL)) {
1951 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1952 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1741);
1953 show_backtrace(1);
1954 }
1955 var22 = var24;
1956 RET_LABEL23:(void)0;
1957 }
1958 }
1959 if (varonce) {
1960 var25 = varonce;
1961 } else {
1962 var26 = "==";
1963 var27 = 2;
1964 var28 = standard___standard__NativeString___to_s_with_length(var26, var27);
1965 var25 = var28;
1966 varonce = var25;
1967 }
1968 {
1969 var29 = ((short int (*)(val* self, val* p0))(var22->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var22, var25) /* == on <var22:String>*/;
1970 }
1971 var4 = var29;
1972 }
1973 var_30 = var4;
1974 if (var4){
1975 var3 = var_30;
1976 } else {
1977 {
1978 { /* Inline model#MProperty#name (var_mmethod) on <var_mmethod:MMethod> */
1979 var33 = var_mmethod->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var_mmethod:MMethod> */
1980 if (unlikely(var33 == NULL)) {
1981 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1982 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1741);
1983 show_backtrace(1);
1984 }
1985 var31 = var33;
1986 RET_LABEL32:(void)0;
1987 }
1988 }
1989 if (varonce34) {
1990 var35 = varonce34;
1991 } else {
1992 var36 = "!=";
1993 var37 = 2;
1994 var38 = standard___standard__NativeString___to_s_with_length(var36, var37);
1995 var35 = var38;
1996 varonce34 = var35;
1997 }
1998 {
1999 var39 = ((short int (*)(val* self, val* p0))(var31->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var31, var35) /* == on <var31:String>*/;
2000 }
2001 var3 = var39;
2002 }
2003 var_consider_null = var3;
2004 {
2005 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_recv) on <var_recv:RuntimeVariable> */
2006 var44 = var_recv->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_recv:RuntimeVariable> */
2007 if (unlikely(var44 == NULL)) {
2008 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
2009 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1683);
2010 show_backtrace(1);
2011 }
2012 var42 = var44;
2013 RET_LABEL43:(void)0;
2014 }
2015 }
2016 /* <var42:MType> isa MNullableType */
2017 cltype = type_nit__MNullableType.color;
2018 idtype = type_nit__MNullableType.id;
2019 if(cltype >= var42->type->table_size) {
2020 var45 = 0;
2021 } else {
2022 var45 = var42->type->type_table[cltype] == idtype;
2023 }
2024 var_46 = var45;
2025 if (var45){
2026 var41 = var_46;
2027 } else {
2028 {
2029 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_recv) on <var_recv:RuntimeVariable> */
2030 var49 = var_recv->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_recv:RuntimeVariable> */
2031 if (unlikely(var49 == NULL)) {
2032 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
2033 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1683);
2034 show_backtrace(1);
2035 }
2036 var47 = var49;
2037 RET_LABEL48:(void)0;
2038 }
2039 }
2040 /* <var47:MType> isa MNullType */
2041 cltype51 = type_nit__MNullType.color;
2042 idtype52 = type_nit__MNullType.id;
2043 if(cltype51 >= var47->type->table_size) {
2044 var50 = 0;
2045 } else {
2046 var50 = var47->type->type_table[cltype51] == idtype52;
2047 }
2048 var41 = var50;
2049 }
2050 var_53 = var41;
2051 if (var41){
2052 var40 = var_consider_null;
2053 } else {
2054 var40 = var_53;
2055 }
2056 var_maybenull = var40;
2057 if (var_maybenull){
2058 if (varonce54) {
2059 var55 = varonce54;
2060 } else {
2061 var56 = "if (";
2062 var57 = 4;
2063 var58 = standard___standard__NativeString___to_s_with_length(var56, var57);
2064 var55 = var58;
2065 varonce54 = var55;
2066 }
2067 if (varonce59) {
2068 var60 = varonce59;
2069 } else {
2070 var61 = " == NULL) {";
2071 var62 = 11;
2072 var63 = standard___standard__NativeString___to_s_with_length(var61, var62);
2073 var60 = var63;
2074 varonce59 = var60;
2075 }
2076 var64 = NEW_standard__Array(&type_standard__Array__standard__Object);
2077 { /* var64 = array_instance Array[Object] */
2078 var65 = 3;
2079 var66 = NEW_standard__NativeArray(var65, &type_standard__NativeArray__standard__Object);
2080 ((struct instance_standard__NativeArray*)var66)->values[0] = (val*) var55;
2081 ((struct instance_standard__NativeArray*)var66)->values[1] = (val*) var_recv;
2082 ((struct instance_standard__NativeArray*)var66)->values[2] = (val*) var60;
2083 {
2084 ((void (*)(val* self, val* p0, long p1))(var64->class->vft[COLOR_standard__array__Array__with_native]))(var64, var66, var65) /* with_native on <var64:Array[Object]>*/;
2085 }
2086 }
2087 {
2088 var67 = ((val* (*)(val* self))(var64->class->vft[COLOR_standard__string__Object__to_s]))(var64) /* to_s on <var64:Array[Object]>*/;
2089 }
2090 {
2091 nit___nit__AbstractCompilerVisitor___add(self, var67); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2092 }
2093 {
2094 { /* Inline model#MProperty#name (var_mmethod) on <var_mmethod:MMethod> */
2095 var71 = var_mmethod->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var_mmethod:MMethod> */
2096 if (unlikely(var71 == NULL)) {
2097 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2098 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1741);
2099 show_backtrace(1);
2100 }
2101 var69 = var71;
2102 RET_LABEL70:(void)0;
2103 }
2104 }
2105 if (varonce72) {
2106 var73 = varonce72;
2107 } else {
2108 var74 = "==";
2109 var75 = 2;
2110 var76 = standard___standard__NativeString___to_s_with_length(var74, var75);
2111 var73 = var76;
2112 varonce72 = var73;
2113 }
2114 {
2115 var77 = ((short int (*)(val* self, val* p0))(var69->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var69, var73) /* == on <var69:String>*/;
2116 }
2117 var_78 = var77;
2118 if (var77){
2119 var68 = var_78;
2120 } else {
2121 {
2122 { /* Inline model#MProperty#name (var_mmethod) on <var_mmethod:MMethod> */
2123 var81 = var_mmethod->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var_mmethod:MMethod> */
2124 if (unlikely(var81 == NULL)) {
2125 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2126 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1741);
2127 show_backtrace(1);
2128 }
2129 var79 = var81;
2130 RET_LABEL80:(void)0;
2131 }
2132 }
2133 if (varonce82) {
2134 var83 = varonce82;
2135 } else {
2136 var84 = "is_same_instance";
2137 var85 = 16;
2138 var86 = standard___standard__NativeString___to_s_with_length(var84, var85);
2139 var83 = var86;
2140 varonce82 = var83;
2141 }
2142 {
2143 var87 = ((short int (*)(val* self, val* p0))(var79->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var79, var83) /* == on <var79:String>*/;
2144 }
2145 var68 = var87;
2146 }
2147 if (var68){
2148 {
2149 var88 = nit___nit__AbstractCompilerVisitor___bool_type(self);
2150 }
2151 {
2152 var89 = nit___nit__AbstractCompilerVisitor___new_var(self, var88);
2153 }
2154 var_res = var89;
2155 var90 = 1;
2156 {
2157 var91 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var_arguments, var90);
2158 }
2159 var_arg = var91;
2160 {
2161 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_arg) on <var_arg:RuntimeVariable> */
2162 var94 = var_arg->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_arg:RuntimeVariable> */
2163 if (unlikely(var94 == NULL)) {
2164 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
2165 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1683);
2166 show_backtrace(1);
2167 }
2168 var92 = var94;
2169 RET_LABEL93:(void)0;
2170 }
2171 }
2172 /* <var92:MType> isa MNullableType */
2173 cltype96 = type_nit__MNullableType.color;
2174 idtype97 = type_nit__MNullableType.id;
2175 if(cltype96 >= var92->type->table_size) {
2176 var95 = 0;
2177 } else {
2178 var95 = var92->type->type_table[cltype96] == idtype97;
2179 }
2180 if (var95){
2181 if (varonce98) {
2182 var99 = varonce98;
2183 } else {
2184 var100 = " = (";
2185 var101 = 4;
2186 var102 = standard___standard__NativeString___to_s_with_length(var100, var101);
2187 var99 = var102;
2188 varonce98 = var99;
2189 }
2190 if (varonce103) {
2191 var104 = varonce103;
2192 } else {
2193 var105 = " == NULL);";
2194 var106 = 10;
2195 var107 = standard___standard__NativeString___to_s_with_length(var105, var106);
2196 var104 = var107;
2197 varonce103 = var104;
2198 }
2199 var108 = NEW_standard__Array(&type_standard__Array__standard__Object);
2200 { /* var108 = array_instance Array[Object] */
2201 var109 = 4;
2202 var110 = NEW_standard__NativeArray(var109, &type_standard__NativeArray__standard__Object);
2203 ((struct instance_standard__NativeArray*)var110)->values[0] = (val*) var_res;
2204 ((struct instance_standard__NativeArray*)var110)->values[1] = (val*) var99;
2205 ((struct instance_standard__NativeArray*)var110)->values[2] = (val*) var_arg;
2206 ((struct instance_standard__NativeArray*)var110)->values[3] = (val*) var104;
2207 {
2208 ((void (*)(val* self, val* p0, long p1))(var108->class->vft[COLOR_standard__array__Array__with_native]))(var108, var110, var109) /* with_native on <var108:Array[Object]>*/;
2209 }
2210 }
2211 {
2212 var111 = ((val* (*)(val* self))(var108->class->vft[COLOR_standard__string__Object__to_s]))(var108) /* to_s on <var108:Array[Object]>*/;
2213 }
2214 {
2215 nit___nit__AbstractCompilerVisitor___add(self, var111); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2216 }
2217 } else {
2218 {
2219 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_arg) on <var_arg:RuntimeVariable> */
2220 var114 = var_arg->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_arg:RuntimeVariable> */
2221 if (unlikely(var114 == NULL)) {
2222 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
2223 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1683);
2224 show_backtrace(1);
2225 }
2226 var112 = var114;
2227 RET_LABEL113:(void)0;
2228 }
2229 }
2230 /* <var112:MType> isa MNullType */
2231 cltype116 = type_nit__MNullType.color;
2232 idtype117 = type_nit__MNullType.id;
2233 if(cltype116 >= var112->type->table_size) {
2234 var115 = 0;
2235 } else {
2236 var115 = var112->type->type_table[cltype116] == idtype117;
2237 }
2238 if (var115){
2239 if (varonce118) {
2240 var119 = varonce118;
2241 } else {
2242 var120 = " = 1; /* is null */";
2243 var121 = 19;
2244 var122 = standard___standard__NativeString___to_s_with_length(var120, var121);
2245 var119 = var122;
2246 varonce118 = var119;
2247 }
2248 var123 = NEW_standard__Array(&type_standard__Array__standard__Object);
2249 { /* var123 = array_instance Array[Object] */
2250 var124 = 2;
2251 var125 = NEW_standard__NativeArray(var124, &type_standard__NativeArray__standard__Object);
2252 ((struct instance_standard__NativeArray*)var125)->values[0] = (val*) var_res;
2253 ((struct instance_standard__NativeArray*)var125)->values[1] = (val*) var119;
2254 {
2255 ((void (*)(val* self, val* p0, long p1))(var123->class->vft[COLOR_standard__array__Array__with_native]))(var123, var125, var124) /* with_native on <var123:Array[Object]>*/;
2256 }
2257 }
2258 {
2259 var126 = ((val* (*)(val* self))(var123->class->vft[COLOR_standard__string__Object__to_s]))(var123) /* to_s on <var123:Array[Object]>*/;
2260 }
2261 {
2262 nit___nit__AbstractCompilerVisitor___add(self, var126); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2263 }
2264 } else {
2265 if (varonce127) {
2266 var128 = varonce127;
2267 } else {
2268 var129 = " = 0; /* ";
2269 var130 = 9;
2270 var131 = standard___standard__NativeString___to_s_with_length(var129, var130);
2271 var128 = var131;
2272 varonce127 = var128;
2273 }
2274 {
2275 var132 = nit___nit__RuntimeVariable___standard__string__Object__inspect(var_arg);
2276 }
2277 if (varonce133) {
2278 var134 = varonce133;
2279 } else {
2280 var135 = " cannot be null */";
2281 var136 = 18;
2282 var137 = standard___standard__NativeString___to_s_with_length(var135, var136);
2283 var134 = var137;
2284 varonce133 = var134;
2285 }
2286 var138 = NEW_standard__Array(&type_standard__Array__standard__Object);
2287 { /* var138 = array_instance Array[Object] */
2288 var139 = 4;
2289 var140 = NEW_standard__NativeArray(var139, &type_standard__NativeArray__standard__Object);
2290 ((struct instance_standard__NativeArray*)var140)->values[0] = (val*) var_res;
2291 ((struct instance_standard__NativeArray*)var140)->values[1] = (val*) var128;
2292 ((struct instance_standard__NativeArray*)var140)->values[2] = (val*) var132;
2293 ((struct instance_standard__NativeArray*)var140)->values[3] = (val*) var134;
2294 {
2295 ((void (*)(val* self, val* p0, long p1))(var138->class->vft[COLOR_standard__array__Array__with_native]))(var138, var140, var139) /* with_native on <var138:Array[Object]>*/;
2296 }
2297 }
2298 {
2299 var141 = ((val* (*)(val* self))(var138->class->vft[COLOR_standard__string__Object__to_s]))(var138) /* to_s on <var138:Array[Object]>*/;
2300 }
2301 {
2302 nit___nit__AbstractCompilerVisitor___add(self, var141); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2303 }
2304 }
2305 }
2306 } else {
2307 {
2308 { /* Inline model#MProperty#name (var_mmethod) on <var_mmethod:MMethod> */
2309 var144 = var_mmethod->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var_mmethod:MMethod> */
2310 if (unlikely(var144 == NULL)) {
2311 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2312 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1741);
2313 show_backtrace(1);
2314 }
2315 var142 = var144;
2316 RET_LABEL143:(void)0;
2317 }
2318 }
2319 if (varonce145) {
2320 var146 = varonce145;
2321 } else {
2322 var147 = "!=";
2323 var148 = 2;
2324 var149 = standard___standard__NativeString___to_s_with_length(var147, var148);
2325 var146 = var149;
2326 varonce145 = var146;
2327 }
2328 {
2329 var150 = ((short int (*)(val* self, val* p0))(var142->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var142, var146) /* == on <var142:String>*/;
2330 }
2331 if (var150){
2332 {
2333 var151 = nit___nit__AbstractCompilerVisitor___bool_type(self);
2334 }
2335 {
2336 var152 = nit___nit__AbstractCompilerVisitor___new_var(self, var151);
2337 }
2338 var_res = var152;
2339 var153 = 1;
2340 {
2341 var154 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var_arguments, var153);
2342 }
2343 var_arg155 = var154;
2344 {
2345 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_arg155) on <var_arg155:RuntimeVariable> */
2346 var158 = var_arg155->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_arg155:RuntimeVariable> */
2347 if (unlikely(var158 == NULL)) {
2348 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
2349 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1683);
2350 show_backtrace(1);
2351 }
2352 var156 = var158;
2353 RET_LABEL157:(void)0;
2354 }
2355 }
2356 /* <var156:MType> isa MNullableType */
2357 cltype160 = type_nit__MNullableType.color;
2358 idtype161 = type_nit__MNullableType.id;
2359 if(cltype160 >= var156->type->table_size) {
2360 var159 = 0;
2361 } else {
2362 var159 = var156->type->type_table[cltype160] == idtype161;
2363 }
2364 if (var159){
2365 if (varonce162) {
2366 var163 = varonce162;
2367 } else {
2368 var164 = " = (";
2369 var165 = 4;
2370 var166 = standard___standard__NativeString___to_s_with_length(var164, var165);
2371 var163 = var166;
2372 varonce162 = var163;
2373 }
2374 if (varonce167) {
2375 var168 = varonce167;
2376 } else {
2377 var169 = " != NULL);";
2378 var170 = 10;
2379 var171 = standard___standard__NativeString___to_s_with_length(var169, var170);
2380 var168 = var171;
2381 varonce167 = var168;
2382 }
2383 var172 = NEW_standard__Array(&type_standard__Array__standard__Object);
2384 { /* var172 = array_instance Array[Object] */
2385 var173 = 4;
2386 var174 = NEW_standard__NativeArray(var173, &type_standard__NativeArray__standard__Object);
2387 ((struct instance_standard__NativeArray*)var174)->values[0] = (val*) var_res;
2388 ((struct instance_standard__NativeArray*)var174)->values[1] = (val*) var163;
2389 ((struct instance_standard__NativeArray*)var174)->values[2] = (val*) var_arg155;
2390 ((struct instance_standard__NativeArray*)var174)->values[3] = (val*) var168;
2391 {
2392 ((void (*)(val* self, val* p0, long p1))(var172->class->vft[COLOR_standard__array__Array__with_native]))(var172, var174, var173) /* with_native on <var172:Array[Object]>*/;
2393 }
2394 }
2395 {
2396 var175 = ((val* (*)(val* self))(var172->class->vft[COLOR_standard__string__Object__to_s]))(var172) /* to_s on <var172:Array[Object]>*/;
2397 }
2398 {
2399 nit___nit__AbstractCompilerVisitor___add(self, var175); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2400 }
2401 } else {
2402 {
2403 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_arg155) on <var_arg155:RuntimeVariable> */
2404 var178 = var_arg155->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_arg155:RuntimeVariable> */
2405 if (unlikely(var178 == NULL)) {
2406 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
2407 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1683);
2408 show_backtrace(1);
2409 }
2410 var176 = var178;
2411 RET_LABEL177:(void)0;
2412 }
2413 }
2414 /* <var176:MType> isa MNullType */
2415 cltype180 = type_nit__MNullType.color;
2416 idtype181 = type_nit__MNullType.id;
2417 if(cltype180 >= var176->type->table_size) {
2418 var179 = 0;
2419 } else {
2420 var179 = var176->type->type_table[cltype180] == idtype181;
2421 }
2422 if (var179){
2423 if (varonce182) {
2424 var183 = varonce182;
2425 } else {
2426 var184 = " = 0; /* is null */";
2427 var185 = 19;
2428 var186 = standard___standard__NativeString___to_s_with_length(var184, var185);
2429 var183 = var186;
2430 varonce182 = var183;
2431 }
2432 var187 = NEW_standard__Array(&type_standard__Array__standard__Object);
2433 { /* var187 = array_instance Array[Object] */
2434 var188 = 2;
2435 var189 = NEW_standard__NativeArray(var188, &type_standard__NativeArray__standard__Object);
2436 ((struct instance_standard__NativeArray*)var189)->values[0] = (val*) var_res;
2437 ((struct instance_standard__NativeArray*)var189)->values[1] = (val*) var183;
2438 {
2439 ((void (*)(val* self, val* p0, long p1))(var187->class->vft[COLOR_standard__array__Array__with_native]))(var187, var189, var188) /* with_native on <var187:Array[Object]>*/;
2440 }
2441 }
2442 {
2443 var190 = ((val* (*)(val* self))(var187->class->vft[COLOR_standard__string__Object__to_s]))(var187) /* to_s on <var187:Array[Object]>*/;
2444 }
2445 {
2446 nit___nit__AbstractCompilerVisitor___add(self, var190); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2447 }
2448 } else {
2449 if (varonce191) {
2450 var192 = varonce191;
2451 } else {
2452 var193 = " = 1; /* ";
2453 var194 = 9;
2454 var195 = standard___standard__NativeString___to_s_with_length(var193, var194);
2455 var192 = var195;
2456 varonce191 = var192;
2457 }
2458 {
2459 var196 = nit___nit__RuntimeVariable___standard__string__Object__inspect(var_arg155);
2460 }
2461 if (varonce197) {
2462 var198 = varonce197;
2463 } else {
2464 var199 = " cannot be null */";
2465 var200 = 18;
2466 var201 = standard___standard__NativeString___to_s_with_length(var199, var200);
2467 var198 = var201;
2468 varonce197 = var198;
2469 }
2470 var202 = NEW_standard__Array(&type_standard__Array__standard__Object);
2471 { /* var202 = array_instance Array[Object] */
2472 var203 = 4;
2473 var204 = NEW_standard__NativeArray(var203, &type_standard__NativeArray__standard__Object);
2474 ((struct instance_standard__NativeArray*)var204)->values[0] = (val*) var_res;
2475 ((struct instance_standard__NativeArray*)var204)->values[1] = (val*) var192;
2476 ((struct instance_standard__NativeArray*)var204)->values[2] = (val*) var196;
2477 ((struct instance_standard__NativeArray*)var204)->values[3] = (val*) var198;
2478 {
2479 ((void (*)(val* self, val* p0, long p1))(var202->class->vft[COLOR_standard__array__Array__with_native]))(var202, var204, var203) /* with_native on <var202:Array[Object]>*/;
2480 }
2481 }
2482 {
2483 var205 = ((val* (*)(val* self))(var202->class->vft[COLOR_standard__string__Object__to_s]))(var202) /* to_s on <var202:Array[Object]>*/;
2484 }
2485 {
2486 nit___nit__AbstractCompilerVisitor___add(self, var205); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2487 }
2488 }
2489 }
2490 } else {
2491 if (varonce206) {
2492 var207 = varonce206;
2493 } else {
2494 var208 = "Receiver is null";
2495 var209 = 16;
2496 var210 = standard___standard__NativeString___to_s_with_length(var208, var209);
2497 var207 = var210;
2498 varonce206 = var207;
2499 }
2500 {
2501 nit___nit__AbstractCompilerVisitor___add_abort(self, var207); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <self:SeparateCompilerVisitor>*/
2502 }
2503 }
2504 }
2505 if (varonce211) {
2506 var212 = varonce211;
2507 } else {
2508 var213 = "} else {";
2509 var214 = 8;
2510 var215 = standard___standard__NativeString___to_s_with_length(var213, var214);
2511 var212 = var215;
2512 varonce211 = var212;
2513 }
2514 {
2515 nit___nit__AbstractCompilerVisitor___add(self, var212); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2516 }
2517 } else {
2518 if (varonce216) {
2519 var217 = varonce216;
2520 } else {
2521 var218 = "{";
2522 var219 = 1;
2523 var220 = standard___standard__NativeString___to_s_with_length(var218, var219);
2524 var217 = var220;
2525 varonce216 = var217;
2526 }
2527 {
2528 nit___nit__AbstractCompilerVisitor___add(self, var217); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2529 }
2530 }
2531 {
2532 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
2533 var224 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
2534 if (unlikely(var224 == NULL)) {
2535 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
2536 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
2537 show_backtrace(1);
2538 }
2539 var222 = var224;
2540 RET_LABEL223:(void)0;
2541 }
2542 }
2543 {
2544 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var222) on <var222:AbstractCompiler(SeparateCompiler)> */
2545 var227 = var222->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var222:AbstractCompiler(SeparateCompiler)> */
2546 if (unlikely(var227 == NULL)) {
2547 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
2548 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
2549 show_backtrace(1);
2550 }
2551 var225 = var227;
2552 RET_LABEL226:(void)0;
2553 }
2554 }
2555 {
2556 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var225) on <var225:ModelBuilder> */
2557 var230 = var225->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var225:ModelBuilder> */
2558 if (unlikely(var230 == NULL)) {
2559 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
2560 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
2561 show_backtrace(1);
2562 }
2563 var228 = var230;
2564 RET_LABEL229:(void)0;
2565 }
2566 }
2567 {
2568 { /* Inline separate_compiler#ToolContext#opt_no_shortcut_equate (var228) on <var228:ToolContext> */
2569 var233 = var228->attrs[COLOR_nit__separate_compiler__ToolContext___opt_no_shortcut_equate].val; /* _opt_no_shortcut_equate on <var228:ToolContext> */
2570 if (unlikely(var233 == NULL)) {
2571 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_shortcut_equate");
2572 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 30);
2573 show_backtrace(1);
2574 }
2575 var231 = var233;
2576 RET_LABEL232:(void)0;
2577 }
2578 }
2579 {
2580 { /* Inline opts#Option#value (var231) on <var231:OptionBool> */
2581 var236 = var231->attrs[COLOR_opts__Option___value].val; /* _value on <var231:OptionBool> */
2582 var234 = var236;
2583 RET_LABEL235:(void)0;
2584 }
2585 }
2586 var237 = ((struct instance_standard__Bool*)var234)->value; /* autounbox from nullable Object to Bool */;
2587 var238 = !var237;
2588 var_239 = var238;
2589 if (var238){
2590 {
2591 { /* Inline model#MProperty#name (var_mmethod) on <var_mmethod:MMethod> */
2592 var244 = var_mmethod->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var_mmethod:MMethod> */
2593 if (unlikely(var244 == NULL)) {
2594 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2595 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1741);
2596 show_backtrace(1);
2597 }
2598 var242 = var244;
2599 RET_LABEL243:(void)0;
2600 }
2601 }
2602 if (varonce245) {
2603 var246 = varonce245;
2604 } else {
2605 var247 = "==";
2606 var248 = 2;
2607 var249 = standard___standard__NativeString___to_s_with_length(var247, var248);
2608 var246 = var249;
2609 varonce245 = var246;
2610 }
2611 {
2612 var250 = ((short int (*)(val* self, val* p0))(var242->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var242, var246) /* == on <var242:String>*/;
2613 }
2614 var_251 = var250;
2615 if (var250){
2616 var241 = var_251;
2617 } else {
2618 {
2619 { /* Inline model#MProperty#name (var_mmethod) on <var_mmethod:MMethod> */
2620 var254 = var_mmethod->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var_mmethod:MMethod> */
2621 if (unlikely(var254 == NULL)) {
2622 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2623 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1741);
2624 show_backtrace(1);
2625 }
2626 var252 = var254;
2627 RET_LABEL253:(void)0;
2628 }
2629 }
2630 if (varonce255) {
2631 var256 = varonce255;
2632 } else {
2633 var257 = "!=";
2634 var258 = 2;
2635 var259 = standard___standard__NativeString___to_s_with_length(var257, var258);
2636 var256 = var259;
2637 varonce255 = var256;
2638 }
2639 {
2640 var260 = ((short int (*)(val* self, val* p0))(var252->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var252, var256) /* == on <var252:String>*/;
2641 }
2642 var241 = var260;
2643 }
2644 var_261 = var241;
2645 if (var241){
2646 var240 = var_261;
2647 } else {
2648 {
2649 { /* Inline model#MProperty#name (var_mmethod) on <var_mmethod:MMethod> */
2650 var264 = var_mmethod->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var_mmethod:MMethod> */
2651 if (unlikely(var264 == NULL)) {
2652 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2653 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1741);
2654 show_backtrace(1);
2655 }
2656 var262 = var264;
2657 RET_LABEL263:(void)0;
2658 }
2659 }
2660 if (varonce265) {
2661 var266 = varonce265;
2662 } else {
2663 var267 = "is_same_instance";
2664 var268 = 16;
2665 var269 = standard___standard__NativeString___to_s_with_length(var267, var268);
2666 var266 = var269;
2667 varonce265 = var266;
2668 }
2669 {
2670 var270 = ((short int (*)(val* self, val* p0))(var262->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var262, var266) /* == on <var262:String>*/;
2671 }
2672 var240 = var270;
2673 }
2674 var221 = var240;
2675 } else {
2676 var221 = var_239;
2677 }
2678 if (var221){
2679 var271 = 1;
2680 {
2681 var272 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var_arguments, var271);
2682 }
2683 var_arg273 = var272;
2684 {
2685 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_arg273) on <var_arg273:RuntimeVariable> */
2686 var276 = var_arg273->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_arg273:RuntimeVariable> */
2687 if (unlikely(var276 == NULL)) {
2688 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
2689 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1683);
2690 show_backtrace(1);
2691 }
2692 var274 = var276;
2693 RET_LABEL275:(void)0;
2694 }
2695 }
2696 /* <var274:MType> isa MNullType */
2697 cltype278 = type_nit__MNullType.color;
2698 idtype279 = type_nit__MNullType.id;
2699 if(cltype278 >= var274->type->table_size) {
2700 var277 = 0;
2701 } else {
2702 var277 = var274->type->type_table[cltype278] == idtype279;
2703 }
2704 if (var277){
2705 var280 = NULL;
2706 if (var_res == NULL) {
2707 var281 = 1; /* is null */
2708 } else {
2709 var281 = 0; /* arg is null but recv is not */
2710 }
2711 if (0) {
2712 { /* Inline kernel#Object#== (var_res,var280) on <var_res:nullable RuntimeVariable> */
2713 var_other = var280;
2714 {
2715 { /* Inline kernel#Object#is_same_instance (var_res,var_other) on <var_res:nullable RuntimeVariable(RuntimeVariable)> */
2716 var286 = var_res == var_other;
2717 var284 = var286;
2718 goto RET_LABEL285;
2719 RET_LABEL285:(void)0;
2720 }
2721 }
2722 var282 = var284;
2723 goto RET_LABEL283;
2724 RET_LABEL283:(void)0;
2725 }
2726 var281 = var282;
2727 }
2728 if (var281){
2729 {
2730 var287 = nit___nit__AbstractCompilerVisitor___bool_type(self);
2731 }
2732 {
2733 var288 = nit___nit__AbstractCompilerVisitor___new_var(self, var287);
2734 }
2735 var_res = var288;
2736 } else {
2737 }
2738 {
2739 { /* Inline model#MProperty#name (var_mmethod) on <var_mmethod:MMethod> */
2740 var291 = var_mmethod->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var_mmethod:MMethod> */
2741 if (unlikely(var291 == NULL)) {
2742 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2743 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1741);
2744 show_backtrace(1);
2745 }
2746 var289 = var291;
2747 RET_LABEL290:(void)0;
2748 }
2749 }
2750 if (varonce292) {
2751 var293 = varonce292;
2752 } else {
2753 var294 = "!=";
2754 var295 = 2;
2755 var296 = standard___standard__NativeString___to_s_with_length(var294, var295);
2756 var293 = var296;
2757 varonce292 = var293;
2758 }
2759 {
2760 var297 = ((short int (*)(val* self, val* p0))(var289->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var289, var293) /* == on <var289:String>*/;
2761 }
2762 if (var297){
2763 if (varonce298) {
2764 var299 = varonce298;
2765 } else {
2766 var300 = " = 1; /* arg is null and recv is not */";
2767 var301 = 39;
2768 var302 = standard___standard__NativeString___to_s_with_length(var300, var301);
2769 var299 = var302;
2770 varonce298 = var299;
2771 }
2772 var303 = NEW_standard__Array(&type_standard__Array__standard__Object);
2773 { /* var303 = array_instance Array[Object] */
2774 var304 = 2;
2775 var305 = NEW_standard__NativeArray(var304, &type_standard__NativeArray__standard__Object);
2776 ((struct instance_standard__NativeArray*)var305)->values[0] = (val*) var_res;
2777 ((struct instance_standard__NativeArray*)var305)->values[1] = (val*) var299;
2778 {
2779 ((void (*)(val* self, val* p0, long p1))(var303->class->vft[COLOR_standard__array__Array__with_native]))(var303, var305, var304) /* with_native on <var303:Array[Object]>*/;
2780 }
2781 }
2782 {
2783 var306 = ((val* (*)(val* self))(var303->class->vft[COLOR_standard__string__Object__to_s]))(var303) /* to_s on <var303:Array[Object]>*/;
2784 }
2785 {
2786 nit___nit__AbstractCompilerVisitor___add(self, var306); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2787 }
2788 } else {
2789 if (varonce307) {
2790 var308 = varonce307;
2791 } else {
2792 var309 = " = 0; /* arg is null but recv is not */";
2793 var310 = 39;
2794 var311 = standard___standard__NativeString___to_s_with_length(var309, var310);
2795 var308 = var311;
2796 varonce307 = var308;
2797 }
2798 var312 = NEW_standard__Array(&type_standard__Array__standard__Object);
2799 { /* var312 = array_instance Array[Object] */
2800 var313 = 2;
2801 var314 = NEW_standard__NativeArray(var313, &type_standard__NativeArray__standard__Object);
2802 ((struct instance_standard__NativeArray*)var314)->values[0] = (val*) var_res;
2803 ((struct instance_standard__NativeArray*)var314)->values[1] = (val*) var308;
2804 {
2805 ((void (*)(val* self, val* p0, long p1))(var312->class->vft[COLOR_standard__array__Array__with_native]))(var312, var314, var313) /* with_native on <var312:Array[Object]>*/;
2806 }
2807 }
2808 {
2809 var315 = ((val* (*)(val* self))(var312->class->vft[COLOR_standard__string__Object__to_s]))(var312) /* to_s on <var312:Array[Object]>*/;
2810 }
2811 {
2812 nit___nit__AbstractCompilerVisitor___add(self, var315); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2813 }
2814 }
2815 if (varonce316) {
2816 var317 = varonce316;
2817 } else {
2818 var318 = "}";
2819 var319 = 1;
2820 var320 = standard___standard__NativeString___to_s_with_length(var318, var319);
2821 var317 = var320;
2822 varonce316 = var317;
2823 }
2824 {
2825 nit___nit__AbstractCompilerVisitor___add(self, var317); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2826 }
2827 if (varonce321) {
2828 var322 = varonce321;
2829 } else {
2830 var323 = "if (0) {";
2831 var324 = 8;
2832 var325 = standard___standard__NativeString___to_s_with_length(var323, var324);
2833 var322 = var325;
2834 varonce321 = var322;
2835 }
2836 {
2837 nit___nit__AbstractCompilerVisitor___add(self, var322); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2838 }
2839 } else {
2840 }
2841 } else {
2842 }
2843 var = var_res;
2844 goto RET_LABEL;
2845 RET_LABEL:;
2846 return var;
2847 }
2848 /* method separate_compiler#SeparateCompilerVisitor#table_send for (self: SeparateCompilerVisitor, MMethod, Array[RuntimeVariable], String): nullable RuntimeVariable */
2849 val* nit___nit__SeparateCompilerVisitor___table_send(val* self, val* p0, val* p1, val* p2) {
2850 val* var /* : nullable RuntimeVariable */;
2851 val* var_mmethod /* var mmethod: MMethod */;
2852 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
2853 val* var_const_color /* var const_color: String */;
2854 val* var1 /* : AbstractCompiler */;
2855 val* var3 /* : AbstractCompiler */;
2856 val* var4 /* : ModelBuilder */;
2857 val* var6 /* : ModelBuilder */;
2858 val* var_ /* var : ModelBuilder */;
2859 long var7 /* : Int */;
2860 long var9 /* : Int */;
2861 long var10 /* : Int */;
2862 long var11 /* : Int */;
2863 short int var13 /* : Bool */;
2864 int cltype;
2865 int idtype;
2866 const char* var_class_name;
2867 long var14 /* : Int */;
2868 val* var16 /* : AbstractCompiler */;
2869 val* var18 /* : AbstractCompiler */;
2870 val* var19 /* : ModelBuilder */;
2871 val* var21 /* : ModelBuilder */;
2872 val* var22 /* : ToolContext */;
2873 val* var24 /* : ToolContext */;
2874 val* var25 /* : OptionBool */;
2875 val* var27 /* : OptionBool */;
2876 val* var28 /* : nullable Object */;
2877 val* var30 /* : nullable Object */;
2878 short int var31 /* : Bool */;
2879 static val* varonce;
2880 val* var32 /* : String */;
2881 char* var33 /* : NativeString */;
2882 long var34 /* : Int */;
2883 val* var35 /* : FlatString */;
2884 long var36 /* : Int */;
2885 long var38 /* : Int */;
2886 val* var39 /* : MPropDef */;
2887 val* var41 /* : MPropDef */;
2888 val* var42 /* : nullable MSignature */;
2889 val* var44 /* : nullable MSignature */;
2890 long var45 /* : Int */;
2891 long var46 /* : Int */;
2892 long var47 /* : Int */;
2893 short int var49 /* : Bool */;
2894 int cltype50;
2895 int idtype51;
2896 const char* var_class_name52;
2897 long var53 /* : Int */;
2898 short int var54 /* : Bool */;
2899 short int var56 /* : Bool */;
2900 static val* varonce57;
2901 val* var58 /* : String */;
2902 char* var59 /* : NativeString */;
2903 long var60 /* : Int */;
2904 val* var61 /* : FlatString */;
2905 static val* varonce62;
2906 val* var63 /* : String */;
2907 char* var64 /* : NativeString */;
2908 long var65 /* : Int */;
2909 val* var66 /* : FlatString */;
2910 long var67 /* : Int */;
2911 long var69 /* : Int */;
2912 static val* varonce70;
2913 val* var71 /* : String */;
2914 char* var72 /* : NativeString */;
2915 long var73 /* : Int */;
2916 val* var74 /* : FlatString */;
2917 val* var75 /* : Array[Object] */;
2918 long var76 /* : Int */;
2919 val* var77 /* : NativeArray[Object] */;
2920 val* var78 /* : Object */;
2921 val* var79 /* : String */;
2922 val* var80 /* : nullable Object */;
2923 val* var_recv /* var recv: RuntimeVariable */;
2924 val* var81 /* : nullable RuntimeVariable */;
2925 val* var_res0 /* var res0: nullable RuntimeVariable */;
2926 val* var82 /* : MPropDef */;
2927 val* var84 /* : MPropDef */;
2928 val* var85 /* : SeparateRuntimeFunction */;
2929 val* var_runtime_function /* var runtime_function: SeparateRuntimeFunction */;
2930 val* var86 /* : MSignature */;
2931 val* var88 /* : MSignature */;
2932 val* var_msignature /* var msignature: MSignature */;
2933 val* var89 /* : nullable MType */;
2934 val* var91 /* : nullable MType */;
2935 val* var_ret /* var ret: nullable MType */;
2936 val* var92 /* : null */;
2937 short int var93 /* : Bool */;
2938 short int var94 /* : Bool */;
2939 val* var_other /* var other: nullable Object */;
2940 short int var96 /* : Bool */;
2941 short int var98 /* : Bool */;
2942 val* var99 /* : null */;
2943 val* var_res /* var res: nullable RuntimeVariable */;
2944 val* var100 /* : RuntimeVariable */;
2945 val* var101 /* : FlatBuffer */;
2946 val* var_ss /* var ss: FlatBuffer */;
2947 val* var103 /* : Array[Object] */;
2948 long var104 /* : Int */;
2949 val* var105 /* : NativeArray[Object] */;
2950 val* var106 /* : String */;
2951 long var107 /* : Int */;
2952 long var_i /* var i: Int */;
2953 long var108 /* : Int */;
2954 long var_109 /* var : Int */;
2955 short int var110 /* : Bool */;
2956 short int var112 /* : Bool */;
2957 int cltype113;
2958 int idtype114;
2959 const char* var_class_name115;
2960 short int var116 /* : Bool */;
2961 long var117 /* : Int */;
2962 long var118 /* : Int */;
2963 short int var120 /* : Bool */;
2964 int cltype121;
2965 int idtype122;
2966 const char* var_class_name123;
2967 long var124 /* : Int */;
2968 val* var125 /* : nullable Object */;
2969 val* var_a /* var a: RuntimeVariable */;
2970 val* var126 /* : Array[MParameter] */;
2971 val* var128 /* : Array[MParameter] */;
2972 val* var129 /* : nullable Object */;
2973 val* var130 /* : MType */;
2974 val* var132 /* : MType */;
2975 val* var_t /* var t: MType */;
2976 long var133 /* : Int */;
2977 long var135 /* : Int */;
2978 short int var136 /* : Bool */;
2979 short int var138 /* : Bool */;
2980 long var139 /* : Int */;
2981 long var140 /* : Int */;
2982 short int var142 /* : Bool */;
2983 int cltype143;
2984 int idtype144;
2985 const char* var_class_name145;
2986 long var146 /* : Int */;
2987 val* var147 /* : nullable Object */;
2988 val* var148 /* : MType */;
2989 val* var150 /* : MType */;
2990 val* var151 /* : RuntimeVariable */;
2991 static val* varonce152;
2992 val* var153 /* : String */;
2993 char* var154 /* : NativeString */;
2994 long var155 /* : Int */;
2995 val* var156 /* : FlatString */;
2996 val* var157 /* : Array[Object] */;
2997 long var158 /* : Int */;
2998 val* var159 /* : NativeArray[Object] */;
2999 val* var160 /* : String */;
3000 long var161 /* : Int */;
3001 long var162 /* : Int */;
3002 static val* varonce163;
3003 val* var164 /* : String */;
3004 char* var165 /* : NativeString */;
3005 long var166 /* : Int */;
3006 val* var167 /* : FlatString */;
3007 val* var168 /* : String */;
3008 static val* varonce169;
3009 val* var170 /* : String */;
3010 char* var171 /* : NativeString */;
3011 long var172 /* : Int */;
3012 val* var173 /* : FlatString */;
3013 val* var174 /* : String */;
3014 static val* varonce175;
3015 val* var176 /* : String */;
3016 char* var177 /* : NativeString */;
3017 long var178 /* : Int */;
3018 val* var179 /* : FlatString */;
3019 val* var180 /* : nullable Object */;
3020 static val* varonce181;
3021 val* var182 /* : String */;
3022 char* var183 /* : NativeString */;
3023 long var184 /* : Int */;
3024 val* var185 /* : FlatString */;
3025 static val* varonce186;
3026 val* var187 /* : String */;
3027 char* var188 /* : NativeString */;
3028 long var189 /* : Int */;
3029 val* var190 /* : FlatString */;
3030 static val* varonce191;
3031 val* var192 /* : String */;
3032 char* var193 /* : NativeString */;
3033 long var194 /* : Int */;
3034 val* var195 /* : FlatString */;
3035 static val* varonce196;
3036 val* var197 /* : String */;
3037 char* var198 /* : NativeString */;
3038 long var199 /* : Int */;
3039 val* var200 /* : FlatString */;
3040 val* var201 /* : nullable Object */;
3041 val* var202 /* : String */;
3042 static val* varonce203;
3043 val* var204 /* : String */;
3044 char* var205 /* : NativeString */;
3045 long var206 /* : Int */;
3046 val* var207 /* : FlatString */;
3047 val* var208 /* : Array[Object] */;
3048 long var209 /* : Int */;
3049 val* var210 /* : NativeArray[Object] */;
3050 val* var211 /* : String */;
3051 val* var_call /* var call: String */;
3052 val* var212 /* : null */;
3053 short int var213 /* : Bool */;
3054 short int var214 /* : Bool */;
3055 val* var_other216 /* var other: nullable Object */;
3056 short int var217 /* : Bool */;
3057 short int var218 /* : Bool */;
3058 static val* varonce219;
3059 val* var220 /* : String */;
3060 char* var221 /* : NativeString */;
3061 long var222 /* : Int */;
3062 val* var223 /* : FlatString */;
3063 static val* varonce224;
3064 val* var225 /* : String */;
3065 char* var226 /* : NativeString */;
3066 long var227 /* : Int */;
3067 val* var228 /* : FlatString */;
3068 val* var229 /* : Array[Object] */;
3069 long var230 /* : Int */;
3070 val* var231 /* : NativeArray[Object] */;
3071 val* var232 /* : String */;
3072 static val* varonce233;
3073 val* var234 /* : String */;
3074 char* var235 /* : NativeString */;
3075 long var236 /* : Int */;
3076 val* var237 /* : FlatString */;
3077 val* var238 /* : Array[Object] */;
3078 long var239 /* : Int */;
3079 val* var240 /* : NativeArray[Object] */;
3080 val* var241 /* : String */;
3081 val* var242 /* : null */;
3082 short int var243 /* : Bool */;
3083 short int var244 /* : Bool */;
3084 short int var246 /* : Bool */;
3085 short int var247 /* : Bool */;
3086 val* var248 /* : null */;
3087 short int var249 /* : Bool */;
3088 short int var250 /* : Bool */;
3089 short int var252 /* : Bool */;
3090 short int var253 /* : Bool */;
3091 static val* varonce254;
3092 val* var255 /* : String */;
3093 char* var256 /* : NativeString */;
3094 long var257 /* : Int */;
3095 val* var258 /* : FlatString */;
3096 var_mmethod = p0;
3097 var_arguments = p1;
3098 var_const_color = p2;
3099 {
3100 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
3101 var3 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
3102 if (unlikely(var3 == NULL)) {
3103 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3104 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
3105 show_backtrace(1);
3106 }
3107 var1 = var3;
3108 RET_LABEL2:(void)0;
3109 }
3110 }
3111 {
3112 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var1) on <var1:AbstractCompiler(SeparateCompiler)> */
3113 var6 = var1->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var1:AbstractCompiler(SeparateCompiler)> */
3114 if (unlikely(var6 == NULL)) {
3115 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
3116 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
3117 show_backtrace(1);
3118 }
3119 var4 = var6;
3120 RET_LABEL5:(void)0;
3121 }
3122 }
3123 var_ = var4;
3124 {
3125 { /* Inline separate_compiler#ModelBuilder#nb_invok_by_tables (var_) on <var_:ModelBuilder> */
3126 var9 = var_->attrs[COLOR_nit__separate_compiler__ModelBuilder___nb_invok_by_tables].l; /* _nb_invok_by_tables on <var_:ModelBuilder> */
3127 var7 = var9;
3128 RET_LABEL8:(void)0;
3129 }
3130 }
3131 var10 = 1;
3132 {
3133 { /* Inline kernel#Int#+ (var7,var10) on <var7:Int> */
3134 /* Covariant cast for argument 0 (i) <var10:Int> isa OTHER */
3135 /* <var10:Int> isa OTHER */
3136 var13 = 1; /* easy <var10:Int> isa OTHER*/
3137 if (unlikely(!var13)) {
3138 var_class_name = type_standard__Int.name;
3139 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3140 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
3141 show_backtrace(1);
3142 }
3143 var14 = var7 + var10;
3144 var11 = var14;
3145 goto RET_LABEL12;
3146 RET_LABEL12:(void)0;
3147 }
3148 }
3149 {
3150 { /* Inline separate_compiler#ModelBuilder#nb_invok_by_tables= (var_,var11) on <var_:ModelBuilder> */
3151 var_->attrs[COLOR_nit__separate_compiler__ModelBuilder___nb_invok_by_tables].l = var11; /* _nb_invok_by_tables on <var_:ModelBuilder> */
3152 RET_LABEL15:(void)0;
3153 }
3154 }
3155 {
3156 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
3157 var18 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
3158 if (unlikely(var18 == NULL)) {
3159 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3160 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
3161 show_backtrace(1);
3162 }
3163 var16 = var18;
3164 RET_LABEL17:(void)0;
3165 }
3166 }
3167 {
3168 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var16) on <var16:AbstractCompiler(SeparateCompiler)> */
3169 var21 = var16->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var16:AbstractCompiler(SeparateCompiler)> */
3170 if (unlikely(var21 == NULL)) {
3171 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
3172 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
3173 show_backtrace(1);
3174 }
3175 var19 = var21;
3176 RET_LABEL20:(void)0;
3177 }
3178 }
3179 {
3180 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var19) on <var19:ModelBuilder> */
3181 var24 = var19->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var19:ModelBuilder> */
3182 if (unlikely(var24 == NULL)) {
3183 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
3184 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
3185 show_backtrace(1);
3186 }
3187 var22 = var24;
3188 RET_LABEL23:(void)0;
3189 }
3190 }
3191 {
3192 { /* Inline abstract_compiler#ToolContext#opt_invocation_metrics (var22) on <var22:ToolContext> */
3193 var27 = var22->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_invocation_metrics].val; /* _opt_invocation_metrics on <var22:ToolContext> */
3194 if (unlikely(var27 == NULL)) {
3195 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_invocation_metrics");
3196 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 61);
3197 show_backtrace(1);
3198 }
3199 var25 = var27;
3200 RET_LABEL26:(void)0;
3201 }
3202 }
3203 {
3204 { /* Inline opts#Option#value (var25) on <var25:OptionBool> */
3205 var30 = var25->attrs[COLOR_opts__Option___value].val; /* _value on <var25:OptionBool> */
3206 var28 = var30;
3207 RET_LABEL29:(void)0;
3208 }
3209 }
3210 var31 = ((struct instance_standard__Bool*)var28)->value; /* autounbox from nullable Object to Bool */;
3211 if (var31){
3212 if (varonce) {
3213 var32 = varonce;
3214 } else {
3215 var33 = "count_invoke_by_tables++;";
3216 var34 = 25;
3217 var35 = standard___standard__NativeString___to_s_with_length(var33, var34);
3218 var32 = var35;
3219 varonce = var32;
3220 }
3221 {
3222 nit___nit__AbstractCompilerVisitor___add(self, var32); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
3223 }
3224 } else {
3225 }
3226 {
3227 { /* Inline array#AbstractArrayRead#length (var_arguments) on <var_arguments:Array[RuntimeVariable]> */
3228 var38 = var_arguments->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_arguments:Array[RuntimeVariable]> */
3229 var36 = var38;
3230 RET_LABEL37:(void)0;
3231 }
3232 }
3233 {
3234 { /* Inline model#MProperty#intro (var_mmethod) on <var_mmethod:MMethod> */
3235 var41 = var_mmethod->attrs[COLOR_nit__model__MProperty___intro].val; /* _intro on <var_mmethod:MMethod> */
3236 if (unlikely(var41 == NULL)) {
3237 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
3238 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1773);
3239 show_backtrace(1);
3240 }
3241 var39 = var41;
3242 RET_LABEL40:(void)0;
3243 }
3244 }
3245 {
3246 { /* Inline model#MMethodDef#msignature (var39) on <var39:MPropDef(MMethodDef)> */
3247 var44 = var39->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var39:MPropDef(MMethodDef)> */
3248 var42 = var44;
3249 RET_LABEL43:(void)0;
3250 }
3251 }
3252 if (var42 == NULL) {
3253 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3254 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1178);
3255 show_backtrace(1);
3256 } else {
3257 var45 = nit___nit__MSignature___arity(var42);
3258 }
3259 var46 = 1;
3260 {
3261 { /* Inline kernel#Int#+ (var45,var46) on <var45:Int> */
3262 /* Covariant cast for argument 0 (i) <var46:Int> isa OTHER */
3263 /* <var46:Int> isa OTHER */
3264 var49 = 1; /* easy <var46:Int> isa OTHER*/
3265 if (unlikely(!var49)) {
3266 var_class_name52 = type_standard__Int.name;
3267 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name52);
3268 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
3269 show_backtrace(1);
3270 }
3271 var53 = var45 + var46;
3272 var47 = var53;
3273 goto RET_LABEL48;
3274 RET_LABEL48:(void)0;
3275 }
3276 }
3277 {
3278 { /* Inline kernel#Int#== (var36,var47) on <var36:Int> */
3279 var56 = var36 == var47;
3280 var54 = var56;
3281 goto RET_LABEL55;
3282 RET_LABEL55:(void)0;
3283 }
3284 }
3285 if (unlikely(!var54)) {
3286 if (varonce57) {
3287 var58 = varonce57;
3288 } else {
3289 var59 = "Invalid arity for ";
3290 var60 = 18;
3291 var61 = standard___standard__NativeString___to_s_with_length(var59, var60);
3292 var58 = var61;
3293 varonce57 = var58;
3294 }
3295 if (varonce62) {
3296 var63 = varonce62;
3297 } else {
3298 var64 = ". ";
3299 var65 = 2;
3300 var66 = standard___standard__NativeString___to_s_with_length(var64, var65);
3301 var63 = var66;
3302 varonce62 = var63;
3303 }
3304 {
3305 { /* Inline array#AbstractArrayRead#length (var_arguments) on <var_arguments:Array[RuntimeVariable]> */
3306 var69 = var_arguments->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_arguments:Array[RuntimeVariable]> */
3307 var67 = var69;
3308 RET_LABEL68:(void)0;
3309 }
3310 }
3311 if (varonce70) {
3312 var71 = varonce70;
3313 } else {
3314 var72 = " arguments given.";
3315 var73 = 17;
3316 var74 = standard___standard__NativeString___to_s_with_length(var72, var73);
3317 var71 = var74;
3318 varonce70 = var71;
3319 }
3320 var75 = NEW_standard__Array(&type_standard__Array__standard__Object);
3321 { /* var75 = array_instance Array[Object] */
3322 var76 = 5;
3323 var77 = NEW_standard__NativeArray(var76, &type_standard__NativeArray__standard__Object);
3324 ((struct instance_standard__NativeArray*)var77)->values[0] = (val*) var58;
3325 ((struct instance_standard__NativeArray*)var77)->values[1] = (val*) var_mmethod;
3326 ((struct instance_standard__NativeArray*)var77)->values[2] = (val*) var63;
3327 var78 = BOX_standard__Int(var67); /* autobox from Int to Object */
3328 ((struct instance_standard__NativeArray*)var77)->values[3] = (val*) var78;
3329 ((struct instance_standard__NativeArray*)var77)->values[4] = (val*) var71;
3330 {
3331 ((void (*)(val* self, val* p0, long p1))(var75->class->vft[COLOR_standard__array__Array__with_native]))(var75, var77, var76) /* with_native on <var75:Array[Object]>*/;
3332 }
3333 }
3334 {
3335 var79 = ((val* (*)(val* self))(var75->class->vft[COLOR_standard__string__Object__to_s]))(var75) /* to_s on <var75:Array[Object]>*/;
3336 }
3337 {
3338 nit___nit__AbstractCompilerVisitor___debug(self, var79); /* Direct call abstract_compiler#AbstractCompilerVisitor#debug on <self:SeparateCompilerVisitor>*/
3339 }
3340 PRINT_ERROR("Runtime error: %s", "Assert failed");
3341 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1178);
3342 show_backtrace(1);
3343 }
3344 {
3345 var80 = standard___standard__SequenceRead___Collection__first(var_arguments);
3346 }
3347 var_recv = var80;
3348 {
3349 var81 = nit___nit__SeparateCompilerVisitor___before_send(self, var_mmethod, var_arguments);
3350 }
3351 var_res0 = var81;
3352 {
3353 { /* Inline model#MProperty#intro (var_mmethod) on <var_mmethod:MMethod> */
3354 var84 = var_mmethod->attrs[COLOR_nit__model__MProperty___intro].val; /* _intro on <var_mmethod:MMethod> */
3355 if (unlikely(var84 == NULL)) {
3356 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
3357 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1773);
3358 show_backtrace(1);
3359 }
3360 var82 = var84;
3361 RET_LABEL83:(void)0;
3362 }
3363 }
3364 {
3365 var85 = nit__separate_compiler___MMethodDef___virtual_runtime_function(var82);
3366 }
3367 var_runtime_function = var85;
3368 {
3369 { /* Inline separate_compiler#SeparateRuntimeFunction#called_signature (var_runtime_function) on <var_runtime_function:SeparateRuntimeFunction> */
3370 var88 = var_runtime_function->attrs[COLOR_nit__separate_compiler__SeparateRuntimeFunction___called_signature].val; /* _called_signature on <var_runtime_function:SeparateRuntimeFunction> */
3371 if (unlikely(var88 == NULL)) {
3372 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _called_signature");
3373 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1848);
3374 show_backtrace(1);
3375 }
3376 var86 = var88;
3377 RET_LABEL87:(void)0;
3378 }
3379 }
3380 var_msignature = var86;
3381 {
3382 { /* Inline model#MSignature#return_mtype (var_msignature) on <var_msignature:MSignature> */
3383 var91 = var_msignature->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on <var_msignature:MSignature> */
3384 var89 = var91;
3385 RET_LABEL90:(void)0;
3386 }
3387 }
3388 var_ret = var89;
3389 var92 = NULL;
3390 if (var_ret == NULL) {
3391 var93 = 1; /* is null */
3392 } else {
3393 var93 = 0; /* arg is null but recv is not */
3394 }
3395 if (0) {
3396 { /* Inline kernel#Object#== (var_ret,var92) on <var_ret:nullable MType> */
3397 var_other = var92;
3398 {
3399 { /* Inline kernel#Object#is_same_instance (var_ret,var_other) on <var_ret:nullable MType(MType)> */
3400 var98 = var_ret == var_other;
3401 var96 = var98;
3402 goto RET_LABEL97;
3403 RET_LABEL97:(void)0;
3404 }
3405 }
3406 var94 = var96;
3407 goto RET_LABEL95;
3408 RET_LABEL95:(void)0;
3409 }
3410 var93 = var94;
3411 }
3412 if (var93){
3413 var99 = NULL;
3414 var_res = var99;
3415 } else {
3416 {
3417 var100 = nit___nit__AbstractCompilerVisitor___new_var(self, var_ret);
3418 }
3419 var_res = var100;
3420 }
3421 var101 = NEW_standard__FlatBuffer(&type_standard__FlatBuffer);
3422 {
3423 { /* Inline string#FlatBuffer#init (var101) on <var101:FlatBuffer> */
3424 {
3425 ((void (*)(val* self))(var101->class->vft[COLOR_standard___standard__FlatBuffer___standard__kernel__Object__init]))(var101) /* init on <var101:FlatBuffer>*/;
3426 }
3427 RET_LABEL102:(void)0;
3428 }
3429 }
3430 var_ss = var101;
3431 var103 = NEW_standard__Array(&type_standard__Array__standard__Object);
3432 { /* var103 = array_instance Array[Object] */
3433 var104 = 1;
3434 var105 = NEW_standard__NativeArray(var104, &type_standard__NativeArray__standard__Object);
3435 ((struct instance_standard__NativeArray*)var105)->values[0] = (val*) var_recv;
3436 {
3437 ((void (*)(val* self, val* p0, long p1))(var103->class->vft[COLOR_standard__array__Array__with_native]))(var103, var105, var104) /* with_native on <var103:Array[Object]>*/;
3438 }
3439 }
3440 {
3441 var106 = ((val* (*)(val* self))(var103->class->vft[COLOR_standard__string__Object__to_s]))(var103) /* to_s on <var103:Array[Object]>*/;
3442 }
3443 {
3444 standard___standard__FlatBuffer___Buffer__append(var_ss, var106); /* Direct call string#FlatBuffer#append on <var_ss:FlatBuffer>*/
3445 }
3446 var107 = 0;
3447 var_i = var107;
3448 {
3449 var108 = nit___nit__MSignature___arity(var_msignature);
3450 }
3451 var_109 = var108;
3452 for(;;) {
3453 {
3454 { /* Inline kernel#Int#< (var_i,var_109) on <var_i:Int> */
3455 /* Covariant cast for argument 0 (i) <var_109:Int> isa OTHER */
3456 /* <var_109:Int> isa OTHER */
3457 var112 = 1; /* easy <var_109:Int> isa OTHER*/
3458 if (unlikely(!var112)) {
3459 var_class_name115 = type_standard__Int.name;
3460 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name115);
3461 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 410);
3462 show_backtrace(1);
3463 }
3464 var116 = var_i < var_109;
3465 var110 = var116;
3466 goto RET_LABEL111;
3467 RET_LABEL111:(void)0;
3468 }
3469 }
3470 if (var110){
3471 var117 = 1;
3472 {
3473 { /* Inline kernel#Int#+ (var_i,var117) on <var_i:Int> */
3474 /* Covariant cast for argument 0 (i) <var117:Int> isa OTHER */
3475 /* <var117:Int> isa OTHER */
3476 var120 = 1; /* easy <var117:Int> isa OTHER*/
3477 if (unlikely(!var120)) {
3478 var_class_name123 = type_standard__Int.name;
3479 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name123);
3480 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
3481 show_backtrace(1);
3482 }
3483 var124 = var_i + var117;
3484 var118 = var124;
3485 goto RET_LABEL119;
3486 RET_LABEL119:(void)0;
3487 }
3488 }
3489 {
3490 var125 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var_arguments, var118);
3491 }
3492 var_a = var125;
3493 {
3494 { /* Inline model#MSignature#mparameters (var_msignature) on <var_msignature:MSignature> */
3495 var128 = var_msignature->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <var_msignature:MSignature> */
3496 if (unlikely(var128 == NULL)) {
3497 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
3498 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1592);
3499 show_backtrace(1);
3500 }
3501 var126 = var128;
3502 RET_LABEL127:(void)0;
3503 }
3504 }
3505 {
3506 var129 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var126, var_i);
3507 }
3508 {
3509 { /* Inline model#MParameter#mtype (var129) on <var129:nullable Object(MParameter)> */
3510 var132 = var129->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var129:nullable Object(MParameter)> */
3511 if (unlikely(var132 == NULL)) {
3512 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3513 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1690);
3514 show_backtrace(1);
3515 }
3516 var130 = var132;
3517 RET_LABEL131:(void)0;
3518 }
3519 }
3520 var_t = var130;
3521 {
3522 { /* Inline model#MSignature#vararg_rank (var_msignature) on <var_msignature:MSignature> */
3523 var135 = var_msignature->attrs[COLOR_nit__model__MSignature___vararg_rank].l; /* _vararg_rank on <var_msignature:MSignature> */
3524 var133 = var135;
3525 RET_LABEL134:(void)0;
3526 }
3527 }
3528 {
3529 { /* Inline kernel#Int#== (var_i,var133) on <var_i:Int> */
3530 var138 = var_i == var133;
3531 var136 = var138;
3532 goto RET_LABEL137;
3533 RET_LABEL137:(void)0;
3534 }
3535 }
3536 if (var136){
3537 var139 = 1;
3538 {
3539 { /* Inline kernel#Int#+ (var_i,var139) on <var_i:Int> */
3540 /* Covariant cast for argument 0 (i) <var139:Int> isa OTHER */
3541 /* <var139:Int> isa OTHER */
3542 var142 = 1; /* easy <var139:Int> isa OTHER*/
3543 if (unlikely(!var142)) {
3544 var_class_name145 = type_standard__Int.name;
3545 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name145);
3546 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
3547 show_backtrace(1);
3548 }
3549 var146 = var_i + var139;
3550 var140 = var146;
3551 goto RET_LABEL141;
3552 RET_LABEL141:(void)0;
3553 }
3554 }
3555 {
3556 var147 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var_arguments, var140);
3557 }
3558 {
3559 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var147) on <var147:nullable Object(RuntimeVariable)> */
3560 var150 = var147->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var147:nullable Object(RuntimeVariable)> */
3561 if (unlikely(var150 == NULL)) {
3562 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
3563 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1683);
3564 show_backtrace(1);
3565 }
3566 var148 = var150;
3567 RET_LABEL149:(void)0;
3568 }
3569 }
3570 var_t = var148;
3571 } else {
3572 }
3573 {
3574 var151 = nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__autobox(self, var_a, var_t);
3575 }
3576 var_a = var151;
3577 if (varonce152) {
3578 var153 = varonce152;
3579 } else {
3580 var154 = ", ";
3581 var155 = 2;
3582 var156 = standard___standard__NativeString___to_s_with_length(var154, var155);
3583 var153 = var156;
3584 varonce152 = var153;
3585 }
3586 var157 = NEW_standard__Array(&type_standard__Array__standard__Object);
3587 { /* var157 = array_instance Array[Object] */
3588 var158 = 2;
3589 var159 = NEW_standard__NativeArray(var158, &type_standard__NativeArray__standard__Object);
3590 ((struct instance_standard__NativeArray*)var159)->values[0] = (val*) var153;
3591 ((struct instance_standard__NativeArray*)var159)->values[1] = (val*) var_a;
3592 {
3593 ((void (*)(val* self, val* p0, long p1))(var157->class->vft[COLOR_standard__array__Array__with_native]))(var157, var159, var158) /* with_native on <var157:Array[Object]>*/;
3594 }
3595 }
3596 {
3597 var160 = ((val* (*)(val* self))(var157->class->vft[COLOR_standard__string__Object__to_s]))(var157) /* to_s on <var157:Array[Object]>*/;
3598 }
3599 {
3600 standard___standard__FlatBuffer___Buffer__append(var_ss, var160); /* Direct call string#FlatBuffer#append on <var_ss:FlatBuffer>*/
3601 }
3602 var161 = 1;
3603 {
3604 var162 = standard___standard__Int___Discrete__successor(var_i, var161);
3605 }
3606 var_i = var162;
3607 } else {
3608 goto BREAK_label;
3609 }
3610 }
3611 BREAK_label: (void)0;
3612 {
3613 nit___nit__AbstractCompilerVisitor___require_declaration(self, var_const_color); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
3614 }
3615 if (varonce163) {
3616 var164 = varonce163;
3617 } else {
3618 var165 = "((";
3619 var166 = 2;
3620 var167 = standard___standard__NativeString___to_s_with_length(var165, var166);
3621 var164 = var167;
3622 varonce163 = var164;
3623 }
3624 {
3625 var168 = nit___nit__SeparateRuntimeFunction___c_ret(var_runtime_function);
3626 }
3627 if (varonce169) {
3628 var170 = varonce169;
3629 } else {
3630 var171 = " (*)";
3631 var172 = 4;
3632 var173 = standard___standard__NativeString___to_s_with_length(var171, var172);
3633 var170 = var173;
3634 varonce169 = var170;
3635 }
3636 {
3637 var174 = nit___nit__SeparateRuntimeFunction___c_sig(var_runtime_function);
3638 }
3639 if (varonce175) {
3640 var176 = varonce175;
3641 } else {
3642 var177 = ")(";
3643 var178 = 2;
3644 var179 = standard___standard__NativeString___to_s_with_length(var177, var178);
3645 var176 = var179;
3646 varonce175 = var176;
3647 }
3648 {
3649 var180 = standard___standard__SequenceRead___Collection__first(var_arguments);
3650 }
3651 if (varonce181) {
3652 var182 = varonce181;
3653 } else {
3654 var183 = "->class->vft[";
3655 var184 = 13;
3656 var185 = standard___standard__NativeString___to_s_with_length(var183, var184);
3657 var182 = var185;
3658 varonce181 = var182;
3659 }
3660 if (varonce186) {
3661 var187 = varonce186;
3662 } else {
3663 var188 = "]))(";
3664 var189 = 4;
3665 var190 = standard___standard__NativeString___to_s_with_length(var188, var189);
3666 var187 = var190;
3667 varonce186 = var187;
3668 }
3669 if (varonce191) {
3670 var192 = varonce191;
3671 } else {
3672 var193 = ") /* ";
3673 var194 = 5;
3674 var195 = standard___standard__NativeString___to_s_with_length(var193, var194);
3675 var192 = var195;
3676 varonce191 = var192;
3677 }
3678 if (varonce196) {
3679 var197 = varonce196;
3680 } else {
3681 var198 = " on ";
3682 var199 = 4;
3683 var200 = standard___standard__NativeString___to_s_with_length(var198, var199);
3684 var197 = var200;
3685 varonce196 = var197;
3686 }
3687 {
3688 var201 = standard___standard__SequenceRead___Collection__first(var_arguments);
3689 }
3690 {
3691 var202 = nit___nit__RuntimeVariable___standard__string__Object__inspect(var201);
3692 }
3693 if (varonce203) {
3694 var204 = varonce203;
3695 } else {
3696 var205 = "*/";
3697 var206 = 2;
3698 var207 = standard___standard__NativeString___to_s_with_length(var205, var206);
3699 var204 = var207;
3700 varonce203 = var204;
3701 }
3702 var208 = NEW_standard__Array(&type_standard__Array__standard__Object);
3703 { /* var208 = array_instance Array[Object] */
3704 var209 = 15;
3705 var210 = NEW_standard__NativeArray(var209, &type_standard__NativeArray__standard__Object);
3706 ((struct instance_standard__NativeArray*)var210)->values[0] = (val*) var164;
3707 ((struct instance_standard__NativeArray*)var210)->values[1] = (val*) var168;
3708 ((struct instance_standard__NativeArray*)var210)->values[2] = (val*) var170;
3709 ((struct instance_standard__NativeArray*)var210)->values[3] = (val*) var174;
3710 ((struct instance_standard__NativeArray*)var210)->values[4] = (val*) var176;
3711 ((struct instance_standard__NativeArray*)var210)->values[5] = (val*) var180;
3712 ((struct instance_standard__NativeArray*)var210)->values[6] = (val*) var182;
3713 ((struct instance_standard__NativeArray*)var210)->values[7] = (val*) var_const_color;
3714 ((struct instance_standard__NativeArray*)var210)->values[8] = (val*) var187;
3715 ((struct instance_standard__NativeArray*)var210)->values[9] = (val*) var_ss;
3716 ((struct instance_standard__NativeArray*)var210)->values[10] = (val*) var192;
3717 ((struct instance_standard__NativeArray*)var210)->values[11] = (val*) var_mmethod;
3718 ((struct instance_standard__NativeArray*)var210)->values[12] = (val*) var197;
3719 ((struct instance_standard__NativeArray*)var210)->values[13] = (val*) var202;
3720 ((struct instance_standard__NativeArray*)var210)->values[14] = (val*) var204;
3721 {
3722 ((void (*)(val* self, val* p0, long p1))(var208->class->vft[COLOR_standard__array__Array__with_native]))(var208, var210, var209) /* with_native on <var208:Array[Object]>*/;
3723 }
3724 }
3725 {
3726 var211 = ((val* (*)(val* self))(var208->class->vft[COLOR_standard__string__Object__to_s]))(var208) /* to_s on <var208:Array[Object]>*/;
3727 }
3728 var_call = var211;
3729 var212 = NULL;
3730 if (var_res == NULL) {
3731 var213 = 0; /* is null */
3732 } else {
3733 var213 = 1; /* arg is null and recv is not */
3734 }
3735 if (0) {
3736 { /* Inline kernel#Object#!= (var_res,var212) on <var_res:nullable RuntimeVariable> */
3737 var_other216 = var212;
3738 {
3739 var217 = ((short int (*)(val* self, val* p0))(var_res->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_res, var_other216) /* == on <var_res:nullable RuntimeVariable(RuntimeVariable)>*/;
3740 }
3741 var218 = !var217;
3742 var214 = var218;
3743 goto RET_LABEL215;
3744 RET_LABEL215:(void)0;
3745 }
3746 var213 = var214;
3747 }
3748 if (var213){
3749 if (varonce219) {
3750 var220 = varonce219;
3751 } else {
3752 var221 = " = ";
3753 var222 = 3;
3754 var223 = standard___standard__NativeString___to_s_with_length(var221, var222);
3755 var220 = var223;
3756 varonce219 = var220;
3757 }
3758 if (varonce224) {
3759 var225 = varonce224;
3760 } else {
3761 var226 = ";";
3762 var227 = 1;
3763 var228 = standard___standard__NativeString___to_s_with_length(var226, var227);
3764 var225 = var228;
3765 varonce224 = var225;
3766 }
3767 var229 = NEW_standard__Array(&type_standard__Array__standard__Object);
3768 { /* var229 = array_instance Array[Object] */
3769 var230 = 4;
3770 var231 = NEW_standard__NativeArray(var230, &type_standard__NativeArray__standard__Object);
3771 ((struct instance_standard__NativeArray*)var231)->values[0] = (val*) var_res;
3772 ((struct instance_standard__NativeArray*)var231)->values[1] = (val*) var220;
3773 ((struct instance_standard__NativeArray*)var231)->values[2] = (val*) var_call;
3774 ((struct instance_standard__NativeArray*)var231)->values[3] = (val*) var225;
3775 {
3776 ((void (*)(val* self, val* p0, long p1))(var229->class->vft[COLOR_standard__array__Array__with_native]))(var229, var231, var230) /* with_native on <var229:Array[Object]>*/;
3777 }
3778 }
3779 {
3780 var232 = ((val* (*)(val* self))(var229->class->vft[COLOR_standard__string__Object__to_s]))(var229) /* to_s on <var229:Array[Object]>*/;
3781 }
3782 {
3783 nit___nit__AbstractCompilerVisitor___add(self, var232); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
3784 }
3785 } else {
3786 if (varonce233) {
3787 var234 = varonce233;
3788 } else {
3789 var235 = ";";
3790 var236 = 1;
3791 var237 = standard___standard__NativeString___to_s_with_length(var235, var236);
3792 var234 = var237;
3793 varonce233 = var234;
3794 }
3795 var238 = NEW_standard__Array(&type_standard__Array__standard__Object);
3796 { /* var238 = array_instance Array[Object] */
3797 var239 = 2;
3798 var240 = NEW_standard__NativeArray(var239, &type_standard__NativeArray__standard__Object);
3799 ((struct instance_standard__NativeArray*)var240)->values[0] = (val*) var_call;
3800 ((struct instance_standard__NativeArray*)var240)->values[1] = (val*) var234;
3801 {
3802 ((void (*)(val* self, val* p0, long p1))(var238->class->vft[COLOR_standard__array__Array__with_native]))(var238, var240, var239) /* with_native on <var238:Array[Object]>*/;
3803 }
3804 }
3805 {
3806 var241 = ((val* (*)(val* self))(var238->class->vft[COLOR_standard__string__Object__to_s]))(var238) /* to_s on <var238:Array[Object]>*/;
3807 }
3808 {
3809 nit___nit__AbstractCompilerVisitor___add(self, var241); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
3810 }
3811 }
3812 var242 = NULL;
3813 if (var_res0 == NULL) {
3814 var243 = 0; /* is null */
3815 } else {
3816 var243 = 1; /* arg is null and recv is not */
3817 }
3818 if (0) {
3819 { /* Inline kernel#Object#!= (var_res0,var242) on <var_res0:nullable RuntimeVariable> */
3820 var_other216 = var242;
3821 {
3822 var246 = ((short int (*)(val* self, val* p0))(var_res0->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_res0, var_other216) /* == on <var_res0:nullable RuntimeVariable(RuntimeVariable)>*/;
3823 }
3824 var247 = !var246;
3825 var244 = var247;
3826 goto RET_LABEL245;
3827 RET_LABEL245:(void)0;
3828 }
3829 var243 = var244;
3830 }
3831 if (var243){
3832 var248 = NULL;
3833 if (var_res == NULL) {
3834 var249 = 0; /* is null */
3835 } else {
3836 var249 = 1; /* arg is null and recv is not */
3837 }
3838 if (0) {
3839 { /* Inline kernel#Object#!= (var_res,var248) on <var_res:nullable RuntimeVariable> */
3840 var_other216 = var248;
3841 {
3842 var252 = ((short int (*)(val* self, val* p0))(var_res->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_res, var_other216) /* == on <var_res:nullable RuntimeVariable(RuntimeVariable)>*/;
3843 }
3844 var253 = !var252;
3845 var250 = var253;
3846 goto RET_LABEL251;
3847 RET_LABEL251:(void)0;
3848 }
3849 var249 = var250;
3850 }
3851 if (unlikely(!var249)) {
3852 PRINT_ERROR("Runtime error: %s", "Assert failed");
3853 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1217);
3854 show_backtrace(1);
3855 }
3856 {
3857 nit___nit__AbstractCompilerVisitor___assign(self, var_res0, var_res); /* Direct call abstract_compiler#AbstractCompilerVisitor#assign on <self:SeparateCompilerVisitor>*/
3858 }
3859 var_res = var_res0;
3860 } else {
3861 }
3862 if (varonce254) {
3863 var255 = varonce254;
3864 } else {
3865 var256 = "}";
3866 var257 = 1;
3867 var258 = standard___standard__NativeString___to_s_with_length(var256, var257);
3868 var255 = var258;
3869 varonce254 = var255;
3870 }
3871 {
3872 nit___nit__AbstractCompilerVisitor___add(self, var255); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
3873 }
3874 var = var_res;
3875 goto RET_LABEL;
3876 RET_LABEL:;
3877 return var;
3878 }
3879 /* method separate_compiler#SeparateCompilerVisitor#call for (self: SeparateCompilerVisitor, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
3880 val* nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__call(val* self, val* p0, val* p1, val* p2) {
3881 val* var /* : nullable RuntimeVariable */;
3882 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
3883 val* var_recvtype /* var recvtype: MClassType */;
3884 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
3885 long var1 /* : Int */;
3886 long var3 /* : Int */;
3887 val* var4 /* : nullable MSignature */;
3888 val* var6 /* : nullable MSignature */;
3889 long var7 /* : Int */;
3890 long var8 /* : Int */;
3891 long var9 /* : Int */;
3892 short int var11 /* : Bool */;
3893 int cltype;
3894 int idtype;
3895 const char* var_class_name;
3896 long var12 /* : Int */;
3897 short int var13 /* : Bool */;
3898 short int var15 /* : Bool */;
3899 static val* varonce;
3900 val* var16 /* : String */;
3901 char* var17 /* : NativeString */;
3902 long var18 /* : Int */;
3903 val* var19 /* : FlatString */;
3904 static val* varonce20;
3905 val* var21 /* : String */;
3906 char* var22 /* : NativeString */;
3907 long var23 /* : Int */;
3908 val* var24 /* : FlatString */;
3909 long var25 /* : Int */;
3910 long var27 /* : Int */;
3911 static val* varonce28;
3912 val* var29 /* : String */;
3913 char* var30 /* : NativeString */;
3914 long var31 /* : Int */;
3915 val* var32 /* : FlatString */;
3916 val* var33 /* : Array[Object] */;
3917 long var34 /* : Int */;
3918 val* var35 /* : NativeArray[Object] */;
3919 val* var36 /* : Object */;
3920 val* var37 /* : String */;
3921 val* var38 /* : nullable MSignature */;
3922 val* var40 /* : nullable MSignature */;
3923 val* var41 /* : nullable MType */;
3924 val* var43 /* : nullable MType */;
3925 val* var_ret /* var ret: nullable MType */;
3926 val* var44 /* : null */;
3927 short int var45 /* : Bool */;
3928 short int var46 /* : Bool */;
3929 val* var_other /* var other: nullable Object */;
3930 short int var48 /* : Bool */;
3931 short int var50 /* : Bool */;
3932 val* var51 /* : null */;
3933 val* var_res /* var res: nullable RuntimeVariable */;
3934 val* var52 /* : MClassDef */;
3935 val* var54 /* : MClassDef */;
3936 val* var55 /* : MClassType */;
3937 val* var57 /* : MClassType */;
3938 val* var58 /* : MClassDef */;
3939 val* var60 /* : MClassDef */;
3940 val* var61 /* : MClassType */;
3941 val* var63 /* : MClassType */;
3942 val* var64 /* : MClassDef */;
3943 val* var66 /* : MClassDef */;
3944 val* var67 /* : MModule */;
3945 val* var69 /* : MModule */;
3946 short int var70 /* : Bool */;
3947 val* var71 /* : MType */;
3948 val* var72 /* : RuntimeVariable */;
3949 short int var73 /* : Bool */;
3950 short int var74 /* : Bool */;
3951 short int var75 /* : Bool */;
3952 short int var77 /* : Bool */;
3953 short int var_ /* var : Bool */;
3954 val* var78 /* : AbstractCompiler */;
3955 val* var80 /* : AbstractCompiler */;
3956 val* var81 /* : ModelBuilder */;
3957 val* var83 /* : ModelBuilder */;
3958 val* var84 /* : ToolContext */;
3959 val* var86 /* : ToolContext */;
3960 val* var87 /* : OptionBool */;
3961 val* var89 /* : OptionBool */;
3962 val* var90 /* : nullable Object */;
3963 val* var92 /* : nullable Object */;
3964 short int var93 /* : Bool */;
3965 short int var94 /* : Bool */;
3966 short int var_95 /* var : Bool */;
3967 short int var96 /* : Bool */;
3968 val* var97 /* : AbstractCompiler */;
3969 val* var99 /* : AbstractCompiler */;
3970 val* var100 /* : ModelBuilder */;
3971 val* var102 /* : ModelBuilder */;
3972 val* var103 /* : ToolContext */;
3973 val* var105 /* : ToolContext */;
3974 val* var106 /* : OptionBool */;
3975 val* var108 /* : OptionBool */;
3976 val* var109 /* : nullable Object */;
3977 val* var111 /* : nullable Object */;
3978 short int var112 /* : Bool */;
3979 short int var_113 /* var : Bool */;
3980 short int var114 /* : Bool */;
3981 val* var115 /* : AbstractCompiler */;
3982 val* var117 /* : AbstractCompiler */;
3983 val* var118 /* : ModelBuilder */;
3984 val* var120 /* : ModelBuilder */;
3985 val* var_121 /* var : ModelBuilder */;
3986 long var122 /* : Int */;
3987 long var124 /* : Int */;
3988 long var125 /* : Int */;
3989 long var126 /* : Int */;
3990 short int var128 /* : Bool */;
3991 int cltype129;
3992 int idtype130;
3993 const char* var_class_name131;
3994 long var132 /* : Int */;
3995 val* var134 /* : AbstractCompiler */;
3996 val* var136 /* : AbstractCompiler */;
3997 val* var137 /* : ModelBuilder */;
3998 val* var139 /* : ModelBuilder */;
3999 val* var140 /* : ToolContext */;
4000 val* var142 /* : ToolContext */;
4001 val* var143 /* : OptionBool */;
4002 val* var145 /* : OptionBool */;
4003 val* var146 /* : nullable Object */;
4004 val* var148 /* : nullable Object */;
4005 short int var149 /* : Bool */;
4006 static val* varonce150;
4007 val* var151 /* : String */;
4008 char* var152 /* : NativeString */;
4009 long var153 /* : Int */;
4010 val* var154 /* : FlatString */;
4011 val* var155 /* : StaticFrame */;
4012 val* var_frame /* var frame: StaticFrame */;
4013 static val* varonce156;
4014 val* var157 /* : String */;
4015 char* var158 /* : NativeString */;
4016 long var159 /* : Int */;
4017 val* var160 /* : FlatString */;
4018 val* var161 /* : String */;
4019 val* var164 /* : nullable StaticFrame */;
4020 val* var166 /* : nullable StaticFrame */;
4021 val* var_old_frame /* var old_frame: nullable StaticFrame */;
4022 static val* varonce168;
4023 val* var169 /* : String */;
4024 char* var170 /* : NativeString */;
4025 long var171 /* : Int */;
4026 val* var172 /* : FlatString */;
4027 static val* varonce173;
4028 val* var174 /* : String */;
4029 char* var175 /* : NativeString */;
4030 long var176 /* : Int */;
4031 val* var177 /* : FlatString */;
4032 static val* varonce178;
4033 val* var179 /* : String */;
4034 char* var180 /* : NativeString */;
4035 long var181 /* : Int */;
4036 val* var182 /* : FlatString */;
4037 val* var183 /* : String */;
4038 static val* varonce184;
4039 val* var185 /* : String */;
4040 char* var186 /* : NativeString */;
4041 long var187 /* : Int */;
4042 val* var188 /* : FlatString */;
4043 val* var189 /* : nullable Object */;
4044 val* var190 /* : String */;
4045 static val* varonce191;
4046 val* var192 /* : String */;
4047 char* var193 /* : NativeString */;
4048 long var194 /* : Int */;
4049 val* var195 /* : FlatString */;
4050 val* var196 /* : Array[Object] */;
4051 long var197 /* : Int */;
4052 val* var198 /* : NativeArray[Object] */;
4053 val* var199 /* : String */;
4054 val* var200 /* : nullable RuntimeVariable */;
4055 val* var201 /* : nullable String */;
4056 val* var203 /* : nullable String */;
4057 static val* varonce204;
4058 val* var205 /* : String */;
4059 char* var206 /* : NativeString */;
4060 long var207 /* : Int */;
4061 val* var208 /* : FlatString */;
4062 val* var209 /* : Array[Object] */;
4063 long var210 /* : Int */;
4064 val* var211 /* : NativeArray[Object] */;
4065 val* var212 /* : String */;
4066 static val* varonce213;
4067 val* var214 /* : String */;
4068 char* var215 /* : NativeString */;
4069 long var216 /* : Int */;
4070 val* var217 /* : FlatString */;
4071 val* var219 /* : AbstractCompiler */;
4072 val* var221 /* : AbstractCompiler */;
4073 val* var222 /* : ModelBuilder */;
4074 val* var224 /* : ModelBuilder */;
4075 val* var_225 /* var : ModelBuilder */;
4076 long var226 /* : Int */;
4077 long var228 /* : Int */;
4078 long var229 /* : Int */;
4079 long var230 /* : Int */;
4080 short int var232 /* : Bool */;
4081 int cltype233;
4082 int idtype234;
4083 const char* var_class_name235;
4084 long var236 /* : Int */;
4085 val* var238 /* : AbstractCompiler */;
4086 val* var240 /* : AbstractCompiler */;
4087 val* var241 /* : ModelBuilder */;
4088 val* var243 /* : ModelBuilder */;
4089 val* var244 /* : ToolContext */;
4090 val* var246 /* : ToolContext */;
4091 val* var247 /* : OptionBool */;
4092 val* var249 /* : OptionBool */;
4093 val* var250 /* : nullable Object */;
4094 val* var252 /* : nullable Object */;
4095 short int var253 /* : Bool */;
4096 static val* varonce254;
4097 val* var255 /* : String */;
4098 char* var256 /* : NativeString */;
4099 long var257 /* : Int */;
4100 val* var258 /* : FlatString */;
4101 val* var259 /* : String */;
4102 val* var260 /* : null */;
4103 short int var261 /* : Bool */;
4104 short int var262 /* : Bool */;
4105 short int var264 /* : Bool */;
4106 short int var266 /* : Bool */;
4107 val* var267 /* : String */;
4108 static val* varonce268;
4109 val* var269 /* : String */;
4110 char* var270 /* : NativeString */;
4111 long var271 /* : Int */;
4112 val* var272 /* : FlatString */;
4113 static val* varonce273;
4114 val* var274 /* : String */;
4115 char* var275 /* : NativeString */;
4116 long var276 /* : Int */;
4117 val* var277 /* : FlatString */;
4118 val* var278 /* : String */;
4119 static val* varonce279;
4120 val* var280 /* : String */;
4121 char* var281 /* : NativeString */;
4122 long var282 /* : Int */;
4123 val* var283 /* : FlatString */;
4124 static val* varonce284;
4125 val* var285 /* : String */;
4126 char* var286 /* : NativeString */;
4127 long var287 /* : Int */;
4128 val* var288 /* : FlatString */;
4129 val* var289 /* : nullable Object */;
4130 val* var290 /* : String */;
4131 static val* varonce291;
4132 val* var292 /* : String */;
4133 char* var293 /* : NativeString */;
4134 long var294 /* : Int */;
4135 val* var295 /* : FlatString */;
4136 val* var296 /* : Array[Object] */;
4137 long var297 /* : Int */;
4138 val* var298 /* : NativeArray[Object] */;
4139 val* var299 /* : String */;
4140 val* var300 /* : null */;
4141 static val* varonce301;
4142 val* var302 /* : String */;
4143 char* var303 /* : NativeString */;
4144 long var304 /* : Int */;
4145 val* var305 /* : FlatString */;
4146 val* var306 /* : String */;
4147 static val* varonce307;
4148 val* var308 /* : String */;
4149 char* var309 /* : NativeString */;
4150 long var310 /* : Int */;
4151 val* var311 /* : FlatString */;
4152 static val* varonce312;
4153 val* var313 /* : String */;
4154 char* var314 /* : NativeString */;
4155 long var315 /* : Int */;
4156 val* var316 /* : FlatString */;
4157 val* var317 /* : String */;
4158 static val* varonce318;
4159 val* var319 /* : String */;
4160 char* var320 /* : NativeString */;
4161 long var321 /* : Int */;
4162 val* var322 /* : FlatString */;
4163 val* var323 /* : Array[Object] */;
4164 long var324 /* : Int */;
4165 val* var325 /* : NativeArray[Object] */;
4166 val* var326 /* : String */;
4167 var_mmethoddef = p0;
4168 var_recvtype = p1;
4169 var_arguments = p2;
4170 {
4171 { /* Inline array#AbstractArrayRead#length (var_arguments) on <var_arguments:Array[RuntimeVariable]> */
4172 var3 = var_arguments->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_arguments:Array[RuntimeVariable]> */
4173 var1 = var3;
4174 RET_LABEL2:(void)0;
4175 }
4176 }
4177 {
4178 { /* Inline model#MMethodDef#msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
4179 var6 = var_mmethoddef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
4180 var4 = var6;
4181 RET_LABEL5:(void)0;
4182 }
4183 }
4184 if (var4 == NULL) {
4185 PRINT_ERROR("Runtime error: %s", "Receiver is null");
4186 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1229);
4187 show_backtrace(1);
4188 } else {
4189 var7 = nit___nit__MSignature___arity(var4);
4190 }
4191 var8 = 1;
4192 {
4193 { /* Inline kernel#Int#+ (var7,var8) on <var7:Int> */
4194 /* Covariant cast for argument 0 (i) <var8:Int> isa OTHER */
4195 /* <var8:Int> isa OTHER */
4196 var11 = 1; /* easy <var8:Int> isa OTHER*/
4197 if (unlikely(!var11)) {
4198 var_class_name = type_standard__Int.name;
4199 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
4200 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
4201 show_backtrace(1);
4202 }
4203 var12 = var7 + var8;
4204 var9 = var12;
4205 goto RET_LABEL10;
4206 RET_LABEL10:(void)0;
4207 }
4208 }
4209 {
4210 { /* Inline kernel#Int#== (var1,var9) on <var1:Int> */
4211 var15 = var1 == var9;
4212 var13 = var15;
4213 goto RET_LABEL14;
4214 RET_LABEL14:(void)0;
4215 }
4216 }
4217 if (unlikely(!var13)) {
4218 if (varonce) {
4219 var16 = varonce;
4220 } else {
4221 var17 = "Invalid arity for ";
4222 var18 = 18;
4223 var19 = standard___standard__NativeString___to_s_with_length(var17, var18);
4224 var16 = var19;
4225 varonce = var16;
4226 }
4227 if (varonce20) {
4228 var21 = varonce20;
4229 } else {
4230 var22 = ". ";
4231 var23 = 2;
4232 var24 = standard___standard__NativeString___to_s_with_length(var22, var23);
4233 var21 = var24;
4234 varonce20 = var21;
4235 }
4236 {
4237 { /* Inline array#AbstractArrayRead#length (var_arguments) on <var_arguments:Array[RuntimeVariable]> */
4238 var27 = var_arguments->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_arguments:Array[RuntimeVariable]> */
4239 var25 = var27;
4240 RET_LABEL26:(void)0;
4241 }
4242 }
4243 if (varonce28) {
4244 var29 = varonce28;
4245 } else {
4246 var30 = " arguments given.";
4247 var31 = 17;
4248 var32 = standard___standard__NativeString___to_s_with_length(var30, var31);
4249 var29 = var32;
4250 varonce28 = var29;
4251 }
4252 var33 = NEW_standard__Array(&type_standard__Array__standard__Object);
4253 { /* var33 = array_instance Array[Object] */
4254 var34 = 5;
4255 var35 = NEW_standard__NativeArray(var34, &type_standard__NativeArray__standard__Object);
4256 ((struct instance_standard__NativeArray*)var35)->values[0] = (val*) var16;
4257 ((struct instance_standard__NativeArray*)var35)->values[1] = (val*) var_mmethoddef;
4258 ((struct instance_standard__NativeArray*)var35)->values[2] = (val*) var21;
4259 var36 = BOX_standard__Int(var25); /* autobox from Int to Object */
4260 ((struct instance_standard__NativeArray*)var35)->values[3] = (val*) var36;
4261 ((struct instance_standard__NativeArray*)var35)->values[4] = (val*) var29;
4262 {
4263 ((void (*)(val* self, val* p0, long p1))(var33->class->vft[COLOR_standard__array__Array__with_native]))(var33, var35, var34) /* with_native on <var33:Array[Object]>*/;
4264 }
4265 }
4266 {
4267 var37 = ((val* (*)(val* self))(var33->class->vft[COLOR_standard__string__Object__to_s]))(var33) /* to_s on <var33:Array[Object]>*/;
4268 }
4269 {
4270 nit___nit__AbstractCompilerVisitor___debug(self, var37); /* Direct call abstract_compiler#AbstractCompilerVisitor#debug on <self:SeparateCompilerVisitor>*/
4271 }
4272 PRINT_ERROR("Runtime error: %s", "Assert failed");
4273 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1229);
4274 show_backtrace(1);
4275 }
4276 {
4277 { /* Inline model#MMethodDef#msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
4278 var40 = var_mmethoddef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
4279 var38 = var40;
4280 RET_LABEL39:(void)0;
4281 }
4282 }
4283 if (var38 == NULL) {
4284 PRINT_ERROR("Runtime error: %s", "Receiver is null");
4285 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1232);
4286 show_backtrace(1);
4287 } else {
4288 { /* Inline model#MSignature#return_mtype (var38) on <var38:nullable MSignature> */
4289 if (unlikely(var38 == NULL)) {
4290 PRINT_ERROR("Runtime error: %s", "Receiver is null");
4291 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1595);
4292 show_backtrace(1);
4293 }
4294 var43 = var38->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on <var38:nullable MSignature> */
4295 var41 = var43;
4296 RET_LABEL42:(void)0;
4297 }
4298 }
4299 var_ret = var41;
4300 var44 = NULL;
4301 if (var_ret == NULL) {
4302 var45 = 1; /* is null */
4303 } else {
4304 var45 = 0; /* arg is null but recv is not */
4305 }
4306 if (0) {
4307 { /* Inline kernel#Object#== (var_ret,var44) on <var_ret:nullable MType> */
4308 var_other = var44;
4309 {
4310 { /* Inline kernel#Object#is_same_instance (var_ret,var_other) on <var_ret:nullable MType(MType)> */
4311 var50 = var_ret == var_other;
4312 var48 = var50;
4313 goto RET_LABEL49;
4314 RET_LABEL49:(void)0;
4315 }
4316 }
4317 var46 = var48;
4318 goto RET_LABEL47;
4319 RET_LABEL47:(void)0;
4320 }
4321 var45 = var46;
4322 }
4323 if (var45){
4324 var51 = NULL;
4325 var_res = var51;
4326 } else {
4327 {
4328 { /* Inline model#MPropDef#mclassdef (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
4329 var54 = var_mmethoddef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mmethoddef:MMethodDef> */
4330 if (unlikely(var54 == NULL)) {
4331 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
4332 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2010);
4333 show_backtrace(1);
4334 }
4335 var52 = var54;
4336 RET_LABEL53:(void)0;
4337 }
4338 }
4339 {
4340 { /* Inline model#MClassDef#bound_mtype (var52) on <var52:MClassDef> */
4341 var57 = var52->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var52:MClassDef> */
4342 if (unlikely(var57 == NULL)) {
4343 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
4344 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
4345 show_backtrace(1);
4346 }
4347 var55 = var57;
4348 RET_LABEL56:(void)0;
4349 }
4350 }
4351 {
4352 { /* Inline model#MPropDef#mclassdef (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
4353 var60 = var_mmethoddef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mmethoddef:MMethodDef> */
4354 if (unlikely(var60 == NULL)) {
4355 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
4356 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2010);
4357 show_backtrace(1);
4358 }
4359 var58 = var60;
4360 RET_LABEL59:(void)0;
4361 }
4362 }
4363 {
4364 { /* Inline model#MClassDef#bound_mtype (var58) on <var58:MClassDef> */
4365 var63 = var58->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var58:MClassDef> */
4366 if (unlikely(var63 == NULL)) {
4367 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
4368 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
4369 show_backtrace(1);
4370 }
4371 var61 = var63;
4372 RET_LABEL62:(void)0;
4373 }
4374 }
4375 {
4376 { /* Inline model#MPropDef#mclassdef (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
4377 var66 = var_mmethoddef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mmethoddef:MMethodDef> */
4378 if (unlikely(var66 == NULL)) {
4379 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
4380 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2010);
4381 show_backtrace(1);
4382 }
4383 var64 = var66;
4384 RET_LABEL65:(void)0;
4385 }
4386 }
4387 {
4388 { /* Inline model#MClassDef#mmodule (var64) on <var64:MClassDef> */
4389 var69 = var64->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var64:MClassDef> */
4390 if (unlikely(var69 == NULL)) {
4391 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
4392 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 489);
4393 show_backtrace(1);
4394 }
4395 var67 = var69;
4396 RET_LABEL68:(void)0;
4397 }
4398 }
4399 var70 = 1;
4400 {
4401 var71 = ((val* (*)(val* self, val* p0, val* p1, val* p2, short int p3))(var_ret->class->vft[COLOR_nit__model__MType__resolve_for]))(var_ret, var55, var61, var67, var70) /* resolve_for on <var_ret:nullable MType(MType)>*/;
4402 }
4403 var_ret = var71;
4404 {
4405 var72 = nit___nit__AbstractCompilerVisitor___new_var(self, var_ret);
4406 }
4407 var_res = var72;
4408 }
4409 {
4410 { /* Inline model#MMethodDef#is_intern (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
4411 var77 = var_mmethoddef->attrs[COLOR_nit__model__MMethodDef___is_intern].s; /* _is_intern on <var_mmethoddef:MMethodDef> */
4412 var75 = var77;
4413 RET_LABEL76:(void)0;
4414 }
4415 }
4416 var_ = var75;
4417 if (var75){
4418 {
4419 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
4420 var80 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
4421 if (unlikely(var80 == NULL)) {
4422 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
4423 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
4424 show_backtrace(1);
4425 }
4426 var78 = var80;
4427 RET_LABEL79:(void)0;
4428 }
4429 }
4430 {
4431 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var78) on <var78:AbstractCompiler(SeparateCompiler)> */
4432 var83 = var78->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var78:AbstractCompiler(SeparateCompiler)> */
4433 if (unlikely(var83 == NULL)) {
4434 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
4435 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
4436 show_backtrace(1);
4437 }
4438 var81 = var83;
4439 RET_LABEL82:(void)0;
4440 }
4441 }
4442 {
4443 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var81) on <var81:ModelBuilder> */
4444 var86 = var81->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var81:ModelBuilder> */
4445 if (unlikely(var86 == NULL)) {
4446 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4447 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
4448 show_backtrace(1);
4449 }
4450 var84 = var86;
4451 RET_LABEL85:(void)0;
4452 }
4453 }
4454 {
4455 { /* Inline separate_compiler#ToolContext#opt_no_inline_intern (var84) on <var84:ToolContext> */
4456 var89 = var84->attrs[COLOR_nit__separate_compiler__ToolContext___opt_no_inline_intern].val; /* _opt_no_inline_intern on <var84:ToolContext> */
4457 if (unlikely(var89 == NULL)) {
4458 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_inline_intern");
4459 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 26);
4460 show_backtrace(1);
4461 }
4462 var87 = var89;
4463 RET_LABEL88:(void)0;
4464 }
4465 }
4466 {
4467 { /* Inline opts#Option#value (var87) on <var87:OptionBool> */
4468 var92 = var87->attrs[COLOR_opts__Option___value].val; /* _value on <var87:OptionBool> */
4469 var90 = var92;
4470 RET_LABEL91:(void)0;
4471 }
4472 }
4473 var93 = ((struct instance_standard__Bool*)var90)->value; /* autounbox from nullable Object to Bool */;
4474 var94 = !var93;
4475 var74 = var94;
4476 } else {
4477 var74 = var_;
4478 }
4479 var_95 = var74;
4480 if (var74){
4481 var73 = var_95;
4482 } else {
4483 {
4484 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
4485 var99 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
4486 if (unlikely(var99 == NULL)) {
4487 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
4488 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
4489 show_backtrace(1);
4490 }
4491 var97 = var99;
4492 RET_LABEL98:(void)0;
4493 }
4494 }
4495 {
4496 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var97) on <var97:AbstractCompiler(SeparateCompiler)> */
4497 var102 = var97->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var97:AbstractCompiler(SeparateCompiler)> */
4498 if (unlikely(var102 == NULL)) {
4499 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
4500 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
4501 show_backtrace(1);
4502 }
4503 var100 = var102;
4504 RET_LABEL101:(void)0;
4505 }
4506 }
4507 {
4508 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var100) on <var100:ModelBuilder> */
4509 var105 = var100->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var100:ModelBuilder> */
4510 if (unlikely(var105 == NULL)) {
4511 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4512 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
4513 show_backtrace(1);
4514 }
4515 var103 = var105;
4516 RET_LABEL104:(void)0;
4517 }
4518 }
4519 {
4520 { /* Inline separate_compiler#ToolContext#opt_inline_some_methods (var103) on <var103:ToolContext> */
4521 var108 = var103->attrs[COLOR_nit__separate_compiler__ToolContext___opt_inline_some_methods].val; /* _opt_inline_some_methods on <var103:ToolContext> */
4522 if (unlikely(var108 == NULL)) {
4523 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_inline_some_methods");
4524 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 37);
4525 show_backtrace(1);
4526 }
4527 var106 = var108;
4528 RET_LABEL107:(void)0;
4529 }
4530 }
4531 {
4532 { /* Inline opts#Option#value (var106) on <var106:OptionBool> */
4533 var111 = var106->attrs[COLOR_opts__Option___value].val; /* _value on <var106:OptionBool> */
4534 var109 = var111;
4535 RET_LABEL110:(void)0;
4536 }
4537 }
4538 var112 = ((struct instance_standard__Bool*)var109)->value; /* autounbox from nullable Object to Bool */;
4539 var_113 = var112;
4540 if (var112){
4541 {
4542 var114 = nit__abstract_compiler___MMethodDef___can_inline(var_mmethoddef, self);
4543 }
4544 var96 = var114;
4545 } else {
4546 var96 = var_113;
4547 }
4548 var73 = var96;
4549 }
4550 if (var73){
4551 {
4552 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
4553 var117 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
4554 if (unlikely(var117 == NULL)) {
4555 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
4556 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
4557 show_backtrace(1);
4558 }
4559 var115 = var117;
4560 RET_LABEL116:(void)0;
4561 }
4562 }
4563 {
4564 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var115) on <var115:AbstractCompiler(SeparateCompiler)> */
4565 var120 = var115->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var115:AbstractCompiler(SeparateCompiler)> */
4566 if (unlikely(var120 == NULL)) {
4567 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
4568 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
4569 show_backtrace(1);
4570 }
4571 var118 = var120;
4572 RET_LABEL119:(void)0;
4573 }
4574 }
4575 var_121 = var118;
4576 {
4577 { /* Inline separate_compiler#ModelBuilder#nb_invok_by_inline (var_121) on <var_121:ModelBuilder> */
4578 var124 = var_121->attrs[COLOR_nit__separate_compiler__ModelBuilder___nb_invok_by_inline].l; /* _nb_invok_by_inline on <var_121:ModelBuilder> */
4579 var122 = var124;
4580 RET_LABEL123:(void)0;
4581 }
4582 }
4583 var125 = 1;
4584 {
4585 { /* Inline kernel#Int#+ (var122,var125) on <var122:Int> */
4586 /* Covariant cast for argument 0 (i) <var125:Int> isa OTHER */
4587 /* <var125:Int> isa OTHER */
4588 var128 = 1; /* easy <var125:Int> isa OTHER*/
4589 if (unlikely(!var128)) {
4590 var_class_name131 = type_standard__Int.name;
4591 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name131);
4592 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
4593 show_backtrace(1);
4594 }
4595 var132 = var122 + var125;
4596 var126 = var132;
4597 goto RET_LABEL127;
4598 RET_LABEL127:(void)0;
4599 }
4600 }
4601 {
4602 { /* Inline separate_compiler#ModelBuilder#nb_invok_by_inline= (var_121,var126) on <var_121:ModelBuilder> */
4603 var_121->attrs[COLOR_nit__separate_compiler__ModelBuilder___nb_invok_by_inline].l = var126; /* _nb_invok_by_inline on <var_121:ModelBuilder> */
4604 RET_LABEL133:(void)0;
4605 }
4606 }
4607 {
4608 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
4609 var136 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
4610 if (unlikely(var136 == NULL)) {
4611 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
4612 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
4613 show_backtrace(1);
4614 }
4615 var134 = var136;
4616 RET_LABEL135:(void)0;
4617 }
4618 }
4619 {
4620 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var134) on <var134:AbstractCompiler(SeparateCompiler)> */
4621 var139 = var134->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var134:AbstractCompiler(SeparateCompiler)> */
4622 if (unlikely(var139 == NULL)) {
4623 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
4624 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
4625 show_backtrace(1);
4626 }
4627 var137 = var139;
4628 RET_LABEL138:(void)0;
4629 }
4630 }
4631 {
4632 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var137) on <var137:ModelBuilder> */
4633 var142 = var137->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var137:ModelBuilder> */
4634 if (unlikely(var142 == NULL)) {
4635 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4636 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
4637 show_backtrace(1);
4638 }
4639 var140 = var142;
4640 RET_LABEL141:(void)0;
4641 }
4642 }
4643 {
4644 { /* Inline abstract_compiler#ToolContext#opt_invocation_metrics (var140) on <var140:ToolContext> */
4645 var145 = var140->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_invocation_metrics].val; /* _opt_invocation_metrics on <var140:ToolContext> */
4646 if (unlikely(var145 == NULL)) {
4647 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_invocation_metrics");
4648 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 61);
4649 show_backtrace(1);
4650 }
4651 var143 = var145;
4652 RET_LABEL144:(void)0;
4653 }
4654 }
4655 {
4656 { /* Inline opts#Option#value (var143) on <var143:OptionBool> */
4657 var148 = var143->attrs[COLOR_opts__Option___value].val; /* _value on <var143:OptionBool> */
4658 var146 = var148;
4659 RET_LABEL147:(void)0;
4660 }
4661 }
4662 var149 = ((struct instance_standard__Bool*)var146)->value; /* autounbox from nullable Object to Bool */;
4663 if (var149){
4664 if (varonce150) {
4665 var151 = varonce150;
4666 } else {
4667 var152 = "count_invoke_by_inline++;";
4668 var153 = 25;
4669 var154 = standard___standard__NativeString___to_s_with_length(var152, var153);
4670 var151 = var154;
4671 varonce150 = var151;
4672 }
4673 {
4674 nit___nit__AbstractCompilerVisitor___add(self, var151); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
4675 }
4676 } else {
4677 }
4678 var155 = NEW_nit__StaticFrame(&type_nit__StaticFrame);
4679 {
4680 ((void (*)(val* self, val* p0))(var155->class->vft[COLOR_nit__abstract_compiler__StaticFrame__visitor_61d]))(var155, self) /* visitor= on <var155:StaticFrame>*/;
4681 }
4682 {
4683 ((void (*)(val* self, val* p0))(var155->class->vft[COLOR_nit__abstract_compiler__StaticFrame__mpropdef_61d]))(var155, var_mmethoddef) /* mpropdef= on <var155:StaticFrame>*/;
4684 }
4685 {
4686 ((void (*)(val* self, val* p0))(var155->class->vft[COLOR_nit__abstract_compiler__StaticFrame__receiver_61d]))(var155, var_recvtype) /* receiver= on <var155:StaticFrame>*/;
4687 }
4688 {
4689 ((void (*)(val* self, val* p0))(var155->class->vft[COLOR_nit__abstract_compiler__StaticFrame__arguments_61d]))(var155, var_arguments) /* arguments= on <var155:StaticFrame>*/;
4690 }
4691 {
4692 ((void (*)(val* self))(var155->class->vft[COLOR_standard__kernel__Object__init]))(var155) /* init on <var155:StaticFrame>*/;
4693 }
4694 var_frame = var155;
4695 if (varonce156) {
4696 var157 = varonce156;
4697 } else {
4698 var158 = "RET_LABEL";
4699 var159 = 9;
4700 var160 = standard___standard__NativeString___to_s_with_length(var158, var159);
4701 var157 = var160;
4702 varonce156 = var157;
4703 }
4704 {
4705 var161 = nit___nit__AbstractCompilerVisitor___get_name(self, var157);
4706 }
4707 {
4708 { /* Inline abstract_compiler#StaticFrame#returnlabel= (var_frame,var161) on <var_frame:StaticFrame> */
4709 var_frame->attrs[COLOR_nit__abstract_compiler__StaticFrame___returnlabel].val = var161; /* _returnlabel on <var_frame:StaticFrame> */
4710 RET_LABEL162:(void)0;
4711 }
4712 }
4713 {
4714 { /* Inline abstract_compiler#StaticFrame#returnvar= (var_frame,var_res) on <var_frame:StaticFrame> */
4715 var_frame->attrs[COLOR_nit__abstract_compiler__StaticFrame___returnvar].val = var_res; /* _returnvar on <var_frame:StaticFrame> */
4716 RET_LABEL163:(void)0;
4717 }
4718 }
4719 {
4720 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:SeparateCompilerVisitor> */
4721 var166 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateCompilerVisitor> */
4722 var164 = var166;
4723 RET_LABEL165:(void)0;
4724 }
4725 }
4726 var_old_frame = var164;
4727 {
4728 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame= (self,var_frame) on <self:SeparateCompilerVisitor> */
4729 self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___frame].val = var_frame; /* _frame on <self:SeparateCompilerVisitor> */
4730 RET_LABEL167:(void)0;
4731 }
4732 }
4733 if (varonce168) {
4734 var169 = varonce168;
4735 } else {
4736 var170 = "{ /* Inline ";
4737 var171 = 12;
4738 var172 = standard___standard__NativeString___to_s_with_length(var170, var171);
4739 var169 = var172;
4740 varonce168 = var169;
4741 }
4742 if (varonce173) {
4743 var174 = varonce173;
4744 } else {
4745 var175 = " (";
4746 var176 = 2;
4747 var177 = standard___standard__NativeString___to_s_with_length(var175, var176);
4748 var174 = var177;
4749 varonce173 = var174;
4750 }
4751 if (varonce178) {
4752 var179 = varonce178;
4753 } else {
4754 var180 = ",";
4755 var181 = 1;
4756 var182 = standard___standard__NativeString___to_s_with_length(var180, var181);
4757 var179 = var182;
4758 varonce178 = var179;
4759 }
4760 {
4761 var183 = standard__string___Collection___join(var_arguments, var179);
4762 }
4763 if (varonce184) {
4764 var185 = varonce184;
4765 } else {
4766 var186 = ") on ";
4767 var187 = 5;
4768 var188 = standard___standard__NativeString___to_s_with_length(var186, var187);
4769 var185 = var188;
4770 varonce184 = var185;
4771 }
4772 {
4773 var189 = standard___standard__SequenceRead___Collection__first(var_arguments);
4774 }
4775 {
4776 var190 = nit___nit__RuntimeVariable___standard__string__Object__inspect(var189);
4777 }
4778 if (varonce191) {
4779 var192 = varonce191;
4780 } else {
4781 var193 = " */";
4782 var194 = 3;
4783 var195 = standard___standard__NativeString___to_s_with_length(var193, var194);
4784 var192 = var195;
4785 varonce191 = var192;
4786 }
4787 var196 = NEW_standard__Array(&type_standard__Array__standard__Object);
4788 { /* var196 = array_instance Array[Object] */
4789 var197 = 7;
4790 var198 = NEW_standard__NativeArray(var197, &type_standard__NativeArray__standard__Object);
4791 ((struct instance_standard__NativeArray*)var198)->values[0] = (val*) var169;
4792 ((struct instance_standard__NativeArray*)var198)->values[1] = (val*) var_mmethoddef;
4793 ((struct instance_standard__NativeArray*)var198)->values[2] = (val*) var174;
4794 ((struct instance_standard__NativeArray*)var198)->values[3] = (val*) var183;
4795 ((struct instance_standard__NativeArray*)var198)->values[4] = (val*) var185;
4796 ((struct instance_standard__NativeArray*)var198)->values[5] = (val*) var190;
4797 ((struct instance_standard__NativeArray*)var198)->values[6] = (val*) var192;
4798 {
4799 ((void (*)(val* self, val* p0, long p1))(var196->class->vft[COLOR_standard__array__Array__with_native]))(var196, var198, var197) /* with_native on <var196:Array[Object]>*/;
4800 }
4801 }
4802 {
4803 var199 = ((val* (*)(val* self))(var196->class->vft[COLOR_standard__string__Object__to_s]))(var196) /* to_s on <var196:Array[Object]>*/;
4804 }
4805 {
4806 nit___nit__AbstractCompilerVisitor___add(self, var199); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
4807 }
4808 {
4809 var200 = nit__abstract_compiler___MMethodDef___compile_inside_to_c(var_mmethoddef, self, var_arguments);
4810 }
4811 {
4812 { /* Inline abstract_compiler#StaticFrame#returnlabel (var_frame) on <var_frame:StaticFrame> */
4813 var203 = var_frame->attrs[COLOR_nit__abstract_compiler__StaticFrame___returnlabel].val; /* _returnlabel on <var_frame:StaticFrame> */
4814 var201 = var203;
4815 RET_LABEL202:(void)0;
4816 }
4817 }
4818 if (unlikely(var201 == NULL)) {
4819 PRINT_ERROR("Runtime error: %s", "Cast failed");
4820 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1251);
4821 show_backtrace(1);
4822 }
4823 if (varonce204) {
4824 var205 = varonce204;
4825 } else {
4826 var206 = ":(void)0;";
4827 var207 = 9;
4828 var208 = standard___standard__NativeString___to_s_with_length(var206, var207);
4829 var205 = var208;
4830 varonce204 = var205;
4831 }
4832 var209 = NEW_standard__Array(&type_standard__Array__standard__Object);
4833 { /* var209 = array_instance Array[Object] */
4834 var210 = 2;
4835 var211 = NEW_standard__NativeArray(var210, &type_standard__NativeArray__standard__Object);
4836 ((struct instance_standard__NativeArray*)var211)->values[0] = (val*) var201;
4837 ((struct instance_standard__NativeArray*)var211)->values[1] = (val*) var205;
4838 {
4839 ((void (*)(val* self, val* p0, long p1))(var209->class->vft[COLOR_standard__array__Array__with_native]))(var209, var211, var210) /* with_native on <var209:Array[Object]>*/;
4840 }
4841 }
4842 {
4843 var212 = ((val* (*)(val* self))(var209->class->vft[COLOR_standard__string__Object__to_s]))(var209) /* to_s on <var209:Array[Object]>*/;
4844 }
4845 {
4846 nit___nit__AbstractCompilerVisitor___add(self, var212); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
4847 }
4848 if (varonce213) {
4849 var214 = varonce213;
4850 } else {
4851 var215 = "}";
4852 var216 = 1;
4853 var217 = standard___standard__NativeString___to_s_with_length(var215, var216);
4854 var214 = var217;
4855 varonce213 = var214;
4856 }
4857 {
4858 nit___nit__AbstractCompilerVisitor___add(self, var214); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
4859 }
4860 {
4861 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame= (self,var_old_frame) on <self:SeparateCompilerVisitor> */
4862 self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___frame].val = var_old_frame; /* _frame on <self:SeparateCompilerVisitor> */
4863 RET_LABEL218:(void)0;
4864 }
4865 }
4866 var = var_res;
4867 goto RET_LABEL;
4868 } else {
4869 }
4870 {
4871 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
4872 var221 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
4873 if (unlikely(var221 == NULL)) {
4874 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
4875 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
4876 show_backtrace(1);
4877 }
4878 var219 = var221;
4879 RET_LABEL220:(void)0;
4880 }
4881 }
4882 {
4883 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var219) on <var219:AbstractCompiler(SeparateCompiler)> */
4884 var224 = var219->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var219:AbstractCompiler(SeparateCompiler)> */
4885 if (unlikely(var224 == NULL)) {
4886 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
4887 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
4888 show_backtrace(1);
4889 }
4890 var222 = var224;
4891 RET_LABEL223:(void)0;
4892 }
4893 }
4894 var_225 = var222;
4895 {
4896 { /* Inline separate_compiler#ModelBuilder#nb_invok_by_direct (var_225) on <var_225:ModelBuilder> */
4897 var228 = var_225->attrs[COLOR_nit__separate_compiler__ModelBuilder___nb_invok_by_direct].l; /* _nb_invok_by_direct on <var_225:ModelBuilder> */
4898 var226 = var228;
4899 RET_LABEL227:(void)0;
4900 }
4901 }
4902 var229 = 1;
4903 {
4904 { /* Inline kernel#Int#+ (var226,var229) on <var226:Int> */
4905 /* Covariant cast for argument 0 (i) <var229:Int> isa OTHER */
4906 /* <var229:Int> isa OTHER */
4907 var232 = 1; /* easy <var229:Int> isa OTHER*/
4908 if (unlikely(!var232)) {
4909 var_class_name235 = type_standard__Int.name;
4910 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name235);
4911 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
4912 show_backtrace(1);
4913 }
4914 var236 = var226 + var229;
4915 var230 = var236;
4916 goto RET_LABEL231;
4917 RET_LABEL231:(void)0;
4918 }
4919 }
4920 {
4921 { /* Inline separate_compiler#ModelBuilder#nb_invok_by_direct= (var_225,var230) on <var_225:ModelBuilder> */
4922 var_225->attrs[COLOR_nit__separate_compiler__ModelBuilder___nb_invok_by_direct].l = var230; /* _nb_invok_by_direct on <var_225:ModelBuilder> */
4923 RET_LABEL237:(void)0;
4924 }
4925 }
4926 {
4927 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
4928 var240 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
4929 if (unlikely(var240 == NULL)) {
4930 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
4931 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
4932 show_backtrace(1);
4933 }
4934 var238 = var240;
4935 RET_LABEL239:(void)0;
4936 }
4937 }
4938 {
4939 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var238) on <var238:AbstractCompiler(SeparateCompiler)> */
4940 var243 = var238->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var238:AbstractCompiler(SeparateCompiler)> */
4941 if (unlikely(var243 == NULL)) {
4942 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
4943 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
4944 show_backtrace(1);
4945 }
4946 var241 = var243;
4947 RET_LABEL242:(void)0;
4948 }
4949 }
4950 {
4951 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var241) on <var241:ModelBuilder> */
4952 var246 = var241->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var241:ModelBuilder> */
4953 if (unlikely(var246 == NULL)) {
4954 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4955 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
4956 show_backtrace(1);
4957 }
4958 var244 = var246;
4959 RET_LABEL245:(void)0;
4960 }
4961 }
4962 {
4963 { /* Inline abstract_compiler#ToolContext#opt_invocation_metrics (var244) on <var244:ToolContext> */
4964 var249 = var244->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_invocation_metrics].val; /* _opt_invocation_metrics on <var244:ToolContext> */
4965 if (unlikely(var249 == NULL)) {
4966 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_invocation_metrics");
4967 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 61);
4968 show_backtrace(1);
4969 }
4970 var247 = var249;
4971 RET_LABEL248:(void)0;
4972 }
4973 }
4974 {
4975 { /* Inline opts#Option#value (var247) on <var247:OptionBool> */
4976 var252 = var247->attrs[COLOR_opts__Option___value].val; /* _value on <var247:OptionBool> */
4977 var250 = var252;
4978 RET_LABEL251:(void)0;
4979 }
4980 }
4981 var253 = ((struct instance_standard__Bool*)var250)->value; /* autounbox from nullable Object to Bool */;
4982 if (var253){
4983 if (varonce254) {
4984 var255 = varonce254;
4985 } else {
4986 var256 = "count_invoke_by_direct++;";
4987 var257 = 25;
4988 var258 = standard___standard__NativeString___to_s_with_length(var256, var257);
4989 var255 = var258;
4990 varonce254 = var255;
4991 }
4992 {
4993 nit___nit__AbstractCompilerVisitor___add(self, var255); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
4994 }
4995 } else {
4996 }
4997 {
4998 nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__adapt_signature(self, var_mmethoddef, var_arguments); /* Direct call separate_compiler#SeparateCompilerVisitor#adapt_signature on <self:SeparateCompilerVisitor>*/
4999 }
5000 {
5001 var259 = nit___nit__MPropDef___nit__model_base__MEntity__c_name(var_mmethoddef);
5002 }
5003 {
5004 nit___nit__AbstractCompilerVisitor___require_declaration(self, var259); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
5005 }
5006 var260 = NULL;
5007 if (var_res == NULL) {
5008 var261 = 1; /* is null */
5009 } else {
5010 var261 = 0; /* arg is null but recv is not */
5011 }
5012 if (0) {
5013 { /* Inline kernel#Object#== (var_res,var260) on <var_res:nullable RuntimeVariable> */
5014 var_other = var260;
5015 {
5016 { /* Inline kernel#Object#is_same_instance (var_res,var_other) on <var_res:nullable RuntimeVariable(RuntimeVariable)> */
5017 var266 = var_res == var_other;
5018 var264 = var266;
5019 goto RET_LABEL265;
5020 RET_LABEL265:(void)0;
5021 }
5022 }
5023 var262 = var264;
5024 goto RET_LABEL263;
5025 RET_LABEL263:(void)0;
5026 }
5027 var261 = var262;
5028 }
5029 if (var261){
5030 {
5031 var267 = nit___nit__MPropDef___nit__model_base__MEntity__c_name(var_mmethoddef);
5032 }
5033 if (varonce268) {
5034 var269 = varonce268;
5035 } else {
5036 var270 = "(";
5037 var271 = 1;
5038 var272 = standard___standard__NativeString___to_s_with_length(var270, var271);
5039 var269 = var272;
5040 varonce268 = var269;
5041 }
5042 if (varonce273) {
5043 var274 = varonce273;
5044 } else {
5045 var275 = ", ";
5046 var276 = 2;
5047 var277 = standard___standard__NativeString___to_s_with_length(var275, var276);
5048 var274 = var277;
5049 varonce273 = var274;
5050 }
5051 {
5052 var278 = standard__string___Collection___join(var_arguments, var274);
5053 }
5054 if (varonce279) {
5055 var280 = varonce279;
5056 } else {
5057 var281 = "); /* Direct call ";
5058 var282 = 18;
5059 var283 = standard___standard__NativeString___to_s_with_length(var281, var282);
5060 var280 = var283;
5061 varonce279 = var280;
5062 }
5063 if (varonce284) {
5064 var285 = varonce284;
5065 } else {
5066 var286 = " on ";
5067 var287 = 4;
5068 var288 = standard___standard__NativeString___to_s_with_length(var286, var287);
5069 var285 = var288;
5070 varonce284 = var285;
5071 }
5072 {
5073 var289 = standard___standard__SequenceRead___Collection__first(var_arguments);
5074 }
5075 {
5076 var290 = nit___nit__RuntimeVariable___standard__string__Object__inspect(var289);
5077 }
5078 if (varonce291) {
5079 var292 = varonce291;
5080 } else {
5081 var293 = "*/";
5082 var294 = 2;
5083 var295 = standard___standard__NativeString___to_s_with_length(var293, var294);
5084 var292 = var295;
5085 varonce291 = var292;
5086 }
5087 var296 = NEW_standard__Array(&type_standard__Array__standard__Object);
5088 { /* var296 = array_instance Array[Object] */
5089 var297 = 8;
5090 var298 = NEW_standard__NativeArray(var297, &type_standard__NativeArray__standard__Object);
5091 ((struct instance_standard__NativeArray*)var298)->values[0] = (val*) var267;
5092 ((struct instance_standard__NativeArray*)var298)->values[1] = (val*) var269;
5093 ((struct instance_standard__NativeArray*)var298)->values[2] = (val*) var278;
5094 ((struct instance_standard__NativeArray*)var298)->values[3] = (val*) var280;
5095 ((struct instance_standard__NativeArray*)var298)->values[4] = (val*) var_mmethoddef;
5096 ((struct instance_standard__NativeArray*)var298)->values[5] = (val*) var285;
5097 ((struct instance_standard__NativeArray*)var298)->values[6] = (val*) var290;
5098 ((struct instance_standard__NativeArray*)var298)->values[7] = (val*) var292;
5099 {
5100 ((void (*)(val* self, val* p0, long p1))(var296->class->vft[COLOR_standard__array__Array__with_native]))(var296, var298, var297) /* with_native on <var296:Array[Object]>*/;
5101 }
5102 }
5103 {
5104 var299 = ((val* (*)(val* self))(var296->class->vft[COLOR_standard__string__Object__to_s]))(var296) /* to_s on <var296:Array[Object]>*/;
5105 }
5106 {
5107 nit___nit__AbstractCompilerVisitor___add(self, var299); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
5108 }
5109 var300 = NULL;
5110 var = var300;
5111 goto RET_LABEL;
5112 } else {
5113 if (varonce301) {
5114 var302 = varonce301;
5115 } else {
5116 var303 = " = ";
5117 var304 = 3;
5118 var305 = standard___standard__NativeString___to_s_with_length(var303, var304);
5119 var302 = var305;
5120 varonce301 = var302;
5121 }
5122 {
5123 var306 = nit___nit__MPropDef___nit__model_base__MEntity__c_name(var_mmethoddef);
5124 }
5125 if (varonce307) {
5126 var308 = varonce307;
5127 } else {
5128 var309 = "(";
5129 var310 = 1;
5130 var311 = standard___standard__NativeString___to_s_with_length(var309, var310);
5131 var308 = var311;
5132 varonce307 = var308;
5133 }
5134 if (varonce312) {
5135 var313 = varonce312;
5136 } else {
5137 var314 = ", ";
5138 var315 = 2;
5139 var316 = standard___standard__NativeString___to_s_with_length(var314, var315);
5140 var313 = var316;
5141 varonce312 = var313;
5142 }
5143 {
5144 var317 = standard__string___Collection___join(var_arguments, var313);
5145 }
5146 if (varonce318) {
5147 var319 = varonce318;
5148 } else {
5149 var320 = ");";
5150 var321 = 2;
5151 var322 = standard___standard__NativeString___to_s_with_length(var320, var321);
5152 var319 = var322;
5153 varonce318 = var319;
5154 }
5155 var323 = NEW_standard__Array(&type_standard__Array__standard__Object);
5156 { /* var323 = array_instance Array[Object] */
5157 var324 = 6;
5158 var325 = NEW_standard__NativeArray(var324, &type_standard__NativeArray__standard__Object);
5159 ((struct instance_standard__NativeArray*)var325)->values[0] = (val*) var_res;
5160 ((struct instance_standard__NativeArray*)var325)->values[1] = (val*) var302;
5161 ((struct instance_standard__NativeArray*)var325)->values[2] = (val*) var306;
5162 ((struct instance_standard__NativeArray*)var325)->values[3] = (val*) var308;
5163 ((struct instance_standard__NativeArray*)var325)->values[4] = (val*) var317;
5164 ((struct instance_standard__NativeArray*)var325)->values[5] = (val*) var319;
5165 {
5166 ((void (*)(val* self, val* p0, long p1))(var323->class->vft[COLOR_standard__array__Array__with_native]))(var323, var325, var324) /* with_native on <var323:Array[Object]>*/;
5167 }
5168 }
5169 {
5170 var326 = ((val* (*)(val* self))(var323->class->vft[COLOR_standard__string__Object__to_s]))(var323) /* to_s on <var323:Array[Object]>*/;
5171 }
5172 {
5173 nit___nit__AbstractCompilerVisitor___add(self, var326); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
5174 }
5175 }
5176 var = var_res;
5177 goto RET_LABEL;
5178 RET_LABEL:;
5179 return var;
5180 }
5181 /* method separate_compiler#SeparateCompilerVisitor#supercall for (self: SeparateCompilerVisitor, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
5182 val* nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__supercall(val* self, val* p0, val* p1, val* p2) {
5183 val* var /* : nullable RuntimeVariable */;
5184 val* var_m /* var m: MMethodDef */;
5185 val* var_recvtype /* var recvtype: MClassType */;
5186 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
5187 val* var1 /* : nullable Object */;
5188 val* var2 /* : MType */;
5189 val* var4 /* : MType */;
5190 val* var5 /* : String */;
5191 static val* varonce;
5192 val* var6 /* : String */;
5193 char* var7 /* : NativeString */;
5194 long var8 /* : Int */;
5195 val* var9 /* : FlatString */;
5196 short int var10 /* : Bool */;
5197 val* var_other /* var other: nullable Object */;
5198 short int var12 /* : Bool */;
5199 short int var13 /* : Bool */;
5200 val* var14 /* : AbstractCompiler */;
5201 val* var16 /* : AbstractCompiler */;
5202 val* var17 /* : MModule */;
5203 val* var19 /* : MModule */;
5204 val* var_main /* var main: MModule */;
5205 val* var20 /* : AbstractCompiler */;
5206 val* var22 /* : AbstractCompiler */;
5207 val* var23 /* : AbstractCompiler */;
5208 val* var25 /* : AbstractCompiler */;
5209 val* var26 /* : MModule */;
5210 val* var28 /* : MModule */;
5211 val* var30 /* : nullable RuntimeVariable */;
5212 val* var_res /* var res: nullable RuntimeVariable */;
5213 val* var31 /* : AbstractCompiler */;
5214 val* var33 /* : AbstractCompiler */;
5215 val* var35 /* : MProperty */;
5216 val* var37 /* : MProperty */;
5217 val* var38 /* : String */;
5218 val* var39 /* : nullable RuntimeVariable */;
5219 var_m = p0;
5220 var_recvtype = p1;
5221 var_arguments = p2;
5222 {
5223 var1 = standard___standard__SequenceRead___Collection__first(var_arguments);
5224 }
5225 {
5226 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var1) on <var1:nullable Object(RuntimeVariable)> */
5227 var4 = var1->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var1:nullable Object(RuntimeVariable)> */
5228 if (unlikely(var4 == NULL)) {
5229 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
5230 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1683);
5231 show_backtrace(1);
5232 }
5233 var2 = var4;
5234 RET_LABEL3:(void)0;
5235 }
5236 }
5237 {
5238 var5 = ((val* (*)(val* self))(var2->class->vft[COLOR_nit__abstract_compiler__MType__ctype]))(var2) /* ctype on <var2:MType>*/;
5239 }
5240 if (varonce) {
5241 var6 = varonce;
5242 } else {
5243 var7 = "val*";
5244 var8 = 4;
5245 var9 = standard___standard__NativeString___to_s_with_length(var7, var8);
5246 var6 = var9;
5247 varonce = var6;
5248 }
5249 {
5250 { /* Inline kernel#Object#!= (var5,var6) on <var5:String> */
5251 var_other = var6;
5252 {
5253 var12 = ((short int (*)(val* self, val* p0))(var5->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var5, var_other) /* == on <var5:String>*/;
5254 }
5255 var13 = !var12;
5256 var10 = var13;
5257 goto RET_LABEL11;
5258 RET_LABEL11:(void)0;
5259 }
5260 }
5261 if (var10){
5262 {
5263 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
5264 var16 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
5265 if (unlikely(var16 == NULL)) {
5266 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
5267 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
5268 show_backtrace(1);
5269 }
5270 var14 = var16;
5271 RET_LABEL15:(void)0;
5272 }
5273 }
5274 {
5275 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (var14) on <var14:AbstractCompiler(SeparateCompiler)> */
5276 var19 = var14->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var14:AbstractCompiler(SeparateCompiler)> */
5277 if (unlikely(var19 == NULL)) {
5278 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
5279 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 474);
5280 show_backtrace(1);
5281 }
5282 var17 = var19;
5283 RET_LABEL18:(void)0;
5284 }
5285 }
5286 var_main = var17;
5287 {
5288 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
5289 var22 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
5290 if (unlikely(var22 == NULL)) {
5291 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
5292 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
5293 show_backtrace(1);
5294 }
5295 var20 = var22;
5296 RET_LABEL21:(void)0;
5297 }
5298 }
5299 {
5300 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
5301 var25 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
5302 if (unlikely(var25 == NULL)) {
5303 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
5304 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
5305 show_backtrace(1);
5306 }
5307 var23 = var25;
5308 RET_LABEL24:(void)0;
5309 }
5310 }
5311 {
5312 { /* Inline abstract_compiler#AbstractCompiler#realmainmodule (var23) on <var23:AbstractCompiler(SeparateCompiler)> */
5313 var28 = var23->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___realmainmodule].val; /* _realmainmodule on <var23:AbstractCompiler(SeparateCompiler)> */
5314 if (unlikely(var28 == NULL)) {
5315 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _realmainmodule");
5316 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 478);
5317 show_backtrace(1);
5318 }
5319 var26 = var28;
5320 RET_LABEL27:(void)0;
5321 }
5322 }
5323 {
5324 { /* Inline abstract_compiler#AbstractCompiler#mainmodule= (var20,var26) on <var20:AbstractCompiler(SeparateCompiler)> */
5325 var20->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val = var26; /* _mainmodule on <var20:AbstractCompiler(SeparateCompiler)> */
5326 RET_LABEL29:(void)0;
5327 }
5328 }
5329 {
5330 var30 = nit___nit__AbstractCompilerVisitor___monomorphic_super_send(self, var_m, var_recvtype, var_arguments);
5331 }
5332 var_res = var30;
5333 {
5334 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
5335 var33 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
5336 if (unlikely(var33 == NULL)) {
5337 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
5338 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
5339 show_backtrace(1);
5340 }
5341 var31 = var33;
5342 RET_LABEL32:(void)0;
5343 }
5344 }
5345 {
5346 { /* Inline abstract_compiler#AbstractCompiler#mainmodule= (var31,var_main) on <var31:AbstractCompiler(SeparateCompiler)> */
5347 var31->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val = var_main; /* _mainmodule on <var31:AbstractCompiler(SeparateCompiler)> */
5348 RET_LABEL34:(void)0;
5349 }
5350 }
5351 var = var_res;
5352 goto RET_LABEL;
5353 } else {
5354 }
5355 {
5356 { /* Inline model#MPropDef#mproperty (var_m) on <var_m:MMethodDef> */
5357 var37 = var_m->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_m:MMethodDef> */
5358 if (unlikely(var37 == NULL)) {
5359 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
5360 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
5361 show_backtrace(1);
5362 }
5363 var35 = var37;
5364 RET_LABEL36:(void)0;
5365 }
5366 }
5367 {
5368 var38 = nit__separate_compiler___MEntity___const_color(var_m);
5369 }
5370 {
5371 var39 = nit___nit__SeparateCompilerVisitor___table_send(self, var35, var_arguments, var38);
5372 }
5373 var = var39;
5374 goto RET_LABEL;
5375 RET_LABEL:;
5376 return var;
5377 }
5378 /* method separate_compiler#SeparateCompilerVisitor#vararg_instance for (self: SeparateCompilerVisitor, MPropDef, RuntimeVariable, Array[RuntimeVariable], MType): RuntimeVariable */
5379 val* nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__vararg_instance(val* self, val* p0, val* p1, val* p2, val* p3) {
5380 val* var /* : RuntimeVariable */;
5381 val* var_mpropdef /* var mpropdef: MPropDef */;
5382 val* var_recv /* var recv: RuntimeVariable */;
5383 val* var_varargs /* var varargs: Array[RuntimeVariable] */;
5384 val* var_elttype /* var elttype: MType */;
5385 val* var1 /* : nullable StaticFrame */;
5386 val* var3 /* : nullable StaticFrame */;
5387 val* var_old_frame /* var old_frame: nullable StaticFrame */;
5388 val* var4 /* : StaticFrame */;
5389 val* var5 /* : MClassDef */;
5390 val* var7 /* : MClassDef */;
5391 val* var8 /* : MClassType */;
5392 val* var10 /* : MClassType */;
5393 val* var11 /* : Array[RuntimeVariable] */;
5394 long var12 /* : Int */;
5395 val* var_ /* var : Array[RuntimeVariable] */;
5396 val* var_frame /* var frame: StaticFrame */;
5397 val* var14 /* : RuntimeVariable */;
5398 val* var_res /* var res: RuntimeVariable */;
5399 var_mpropdef = p0;
5400 var_recv = p1;
5401 var_varargs = p2;
5402 var_elttype = p3;
5403 {
5404 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:SeparateCompilerVisitor> */
5405 var3 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateCompilerVisitor> */
5406 var1 = var3;
5407 RET_LABEL2:(void)0;
5408 }
5409 }
5410 var_old_frame = var1;
5411 var4 = NEW_nit__StaticFrame(&type_nit__StaticFrame);
5412 {
5413 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
5414 var7 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
5415 if (unlikely(var7 == NULL)) {
5416 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
5417 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2010);
5418 show_backtrace(1);
5419 }
5420 var5 = var7;
5421 RET_LABEL6:(void)0;
5422 }
5423 }
5424 {
5425 { /* Inline model#MClassDef#bound_mtype (var5) on <var5:MClassDef> */
5426 var10 = var5->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var5:MClassDef> */
5427 if (unlikely(var10 == NULL)) {
5428 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
5429 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
5430 show_backtrace(1);
5431 }
5432 var8 = var10;
5433 RET_LABEL9:(void)0;
5434 }
5435 }
5436 var11 = NEW_standard__Array(&type_standard__Array__nit__RuntimeVariable);
5437 var12 = 1;
5438 {
5439 standard___standard__Array___with_capacity(var11, var12); /* Direct call array#Array#with_capacity on <var11:Array[RuntimeVariable]>*/
5440 }
5441 var_ = var11;
5442 {
5443 standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_, var_recv); /* Direct call array#AbstractArray#push on <var_:Array[RuntimeVariable]>*/
5444 }
5445 {
5446 ((void (*)(val* self, val* p0))(var4->class->vft[COLOR_nit__abstract_compiler__StaticFrame__visitor_61d]))(var4, self) /* visitor= on <var4:StaticFrame>*/;
5447 }
5448 {
5449 ((void (*)(val* self, val* p0))(var4->class->vft[COLOR_nit__abstract_compiler__StaticFrame__mpropdef_61d]))(var4, var_mpropdef) /* mpropdef= on <var4:StaticFrame>*/;
5450 }
5451 {
5452 ((void (*)(val* self, val* p0))(var4->class->vft[COLOR_nit__abstract_compiler__StaticFrame__receiver_61d]))(var4, var8) /* receiver= on <var4:StaticFrame>*/;
5453 }
5454 {
5455 ((void (*)(val* self, val* p0))(var4->class->vft[COLOR_nit__abstract_compiler__StaticFrame__arguments_61d]))(var4, var_) /* arguments= on <var4:StaticFrame>*/;
5456 }
5457 {
5458 ((void (*)(val* self))(var4->class->vft[COLOR_standard__kernel__Object__init]))(var4) /* init on <var4:StaticFrame>*/;
5459 }
5460 var_frame = var4;
5461 {
5462 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame= (self,var_frame) on <self:SeparateCompilerVisitor> */
5463 self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___frame].val = var_frame; /* _frame on <self:SeparateCompilerVisitor> */
5464 RET_LABEL13:(void)0;
5465 }
5466 }
5467 {
5468 var14 = nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__array_instance(self, var_varargs, var_elttype);
5469 }
5470 var_res = var14;
5471 {
5472 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame= (self,var_old_frame) on <self:SeparateCompilerVisitor> */
5473 self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___frame].val = var_old_frame; /* _frame on <self:SeparateCompilerVisitor> */
5474 RET_LABEL15:(void)0;
5475 }
5476 }
5477 var = var_res;
5478 goto RET_LABEL;
5479 RET_LABEL:;
5480 return var;
5481 }
5482 /* method separate_compiler#SeparateCompilerVisitor#isset_attribute for (self: SeparateCompilerVisitor, MAttribute, RuntimeVariable): RuntimeVariable */
5483 val* nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__isset_attribute(val* self, val* p0, val* p1) {
5484 val* var /* : RuntimeVariable */;
5485 val* var_a /* var a: MAttribute */;
5486 val* var_recv /* var recv: RuntimeVariable */;
5487 val* var1 /* : MClassType */;
5488 val* var2 /* : RuntimeVariable */;
5489 val* var_res /* var res: RuntimeVariable */;
5490 val* var3 /* : MPropDef */;
5491 val* var5 /* : MPropDef */;
5492 val* var6 /* : nullable MType */;
5493 val* var8 /* : nullable MType */;
5494 val* var_mtype /* var mtype: MType */;
5495 val* var9 /* : MPropDef */;
5496 val* var11 /* : MPropDef */;
5497 val* var12 /* : MClassDef */;
5498 val* var14 /* : MClassDef */;
5499 val* var_intromclassdef /* var intromclassdef: MClassDef */;
5500 val* var15 /* : MClassType */;
5501 val* var17 /* : MClassType */;
5502 val* var18 /* : MClassType */;
5503 val* var20 /* : MClassType */;
5504 val* var21 /* : MModule */;
5505 val* var23 /* : MModule */;
5506 short int var24 /* : Bool */;
5507 val* var25 /* : MType */;
5508 short int var26 /* : Bool */;
5509 int cltype;
5510 int idtype;
5511 static val* varonce;
5512 val* var27 /* : String */;
5513 char* var28 /* : NativeString */;
5514 long var29 /* : Int */;
5515 val* var30 /* : FlatString */;
5516 static val* varonce31;
5517 val* var32 /* : String */;
5518 char* var33 /* : NativeString */;
5519 long var34 /* : Int */;
5520 val* var35 /* : FlatString */;
5521 val* var36 /* : String */;
5522 static val* varonce37;
5523 val* var38 /* : String */;
5524 char* var39 /* : NativeString */;
5525 long var40 /* : Int */;
5526 val* var41 /* : FlatString */;
5527 val* var42 /* : Array[Object] */;
5528 long var43 /* : Int */;
5529 val* var44 /* : NativeArray[Object] */;
5530 val* var45 /* : String */;
5531 val* var46 /* : String */;
5532 val* var47 /* : AbstractCompiler */;
5533 val* var49 /* : AbstractCompiler */;
5534 val* var50 /* : ModelBuilder */;
5535 val* var52 /* : ModelBuilder */;
5536 val* var53 /* : ToolContext */;
5537 val* var55 /* : ToolContext */;
5538 val* var56 /* : OptionBool */;
5539 val* var58 /* : OptionBool */;
5540 val* var59 /* : nullable Object */;
5541 val* var61 /* : nullable Object */;
5542 short int var62 /* : Bool */;
5543 static val* varonce63;
5544 val* var64 /* : String */;
5545 char* var65 /* : NativeString */;
5546 long var66 /* : Int */;
5547 val* var67 /* : FlatString */;
5548 static val* varonce68;
5549 val* var69 /* : String */;
5550 char* var70 /* : NativeString */;
5551 long var71 /* : Int */;
5552 val* var72 /* : FlatString */;
5553 val* var73 /* : String */;
5554 static val* varonce74;
5555 val* var75 /* : String */;
5556 char* var76 /* : NativeString */;
5557 long var77 /* : Int */;
5558 val* var78 /* : FlatString */;
5559 static val* varonce79;
5560 val* var80 /* : String */;
5561 char* var81 /* : NativeString */;
5562 long var82 /* : Int */;
5563 val* var83 /* : FlatString */;
5564 val* var84 /* : String */;
5565 static val* varonce85;
5566 val* var86 /* : String */;
5567 char* var87 /* : NativeString */;
5568 long var88 /* : Int */;
5569 val* var89 /* : FlatString */;
5570 val* var90 /* : Array[Object] */;
5571 long var91 /* : Int */;
5572 val* var92 /* : NativeArray[Object] */;
5573 val* var93 /* : String */;
5574 val* var94 /* : String */;
5575 static val* varonce95;
5576 val* var96 /* : String */;
5577 char* var97 /* : NativeString */;
5578 long var98 /* : Int */;
5579 val* var99 /* : FlatString */;
5580 short int var100 /* : Bool */;
5581 static val* varonce101;
5582 val* var102 /* : String */;
5583 char* var103 /* : NativeString */;
5584 long var104 /* : Int */;
5585 val* var105 /* : FlatString */;
5586 static val* varonce106;
5587 val* var107 /* : String */;
5588 char* var108 /* : NativeString */;
5589 long var109 /* : Int */;
5590 val* var110 /* : FlatString */;
5591 val* var111 /* : String */;
5592 static val* varonce112;
5593 val* var113 /* : String */;
5594 char* var114 /* : NativeString */;
5595 long var115 /* : Int */;
5596 val* var116 /* : FlatString */;
5597 static val* varonce117;
5598 val* var118 /* : String */;
5599 char* var119 /* : NativeString */;
5600 long var120 /* : Int */;
5601 val* var121 /* : FlatString */;
5602 val* var122 /* : String */;
5603 static val* varonce123;
5604 val* var124 /* : String */;
5605 char* var125 /* : NativeString */;
5606 long var126 /* : Int */;
5607 val* var127 /* : FlatString */;
5608 val* var128 /* : Array[Object] */;
5609 long var129 /* : Int */;
5610 val* var130 /* : NativeArray[Object] */;
5611 val* var131 /* : String */;
5612 static val* varonce132;
5613 val* var133 /* : String */;
5614 char* var134 /* : NativeString */;
5615 long var135 /* : Int */;
5616 val* var136 /* : FlatString */;
5617 static val* varonce137;
5618 val* var138 /* : String */;
5619 char* var139 /* : NativeString */;
5620 long var140 /* : Int */;
5621 val* var141 /* : FlatString */;
5622 val* var142 /* : String */;
5623 static val* varonce143;
5624 val* var144 /* : String */;
5625 char* var145 /* : NativeString */;
5626 long var146 /* : Int */;
5627 val* var147 /* : FlatString */;
5628 val* var148 /* : Array[Object] */;
5629 long var149 /* : Int */;
5630 val* var150 /* : NativeArray[Object] */;
5631 val* var151 /* : String */;
5632 var_a = p0;
5633 var_recv = p1;
5634 {
5635 nit___nit__AbstractCompilerVisitor___check_recv_notnull(self, var_recv); /* Direct call abstract_compiler#AbstractCompilerVisitor#check_recv_notnull on <self:SeparateCompilerVisitor>*/
5636 }
5637 {
5638 var1 = nit___nit__AbstractCompilerVisitor___bool_type(self);
5639 }
5640 {
5641 var2 = nit___nit__AbstractCompilerVisitor___new_var(self, var1);
5642 }
5643 var_res = var2;
5644 {
5645 { /* Inline model#MProperty#intro (var_a) on <var_a:MAttribute> */
5646 var5 = var_a->attrs[COLOR_nit__model__MProperty___intro].val; /* _intro on <var_a:MAttribute> */
5647 if (unlikely(var5 == NULL)) {
5648 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
5649 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1773);
5650 show_backtrace(1);
5651 }
5652 var3 = var5;
5653 RET_LABEL4:(void)0;
5654 }
5655 }
5656 {
5657 { /* Inline model#MAttributeDef#static_mtype (var3) on <var3:MPropDef(MAttributeDef)> */
5658 var8 = var3->attrs[COLOR_nit__model__MAttributeDef___static_mtype].val; /* _static_mtype on <var3:MPropDef(MAttributeDef)> */
5659 var6 = var8;
5660 RET_LABEL7:(void)0;
5661 }
5662 }
5663 if (unlikely(var6 == NULL)) {
5664 PRINT_ERROR("Runtime error: %s", "Cast failed");
5665 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1312);
5666 show_backtrace(1);
5667 }
5668 var_mtype = var6;
5669 {
5670 { /* Inline model#MProperty#intro (var_a) on <var_a:MAttribute> */
5671 var11 = var_a->attrs[COLOR_nit__model__MProperty___intro].val; /* _intro on <var_a:MAttribute> */
5672 if (unlikely(var11 == NULL)) {
5673 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
5674 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1773);
5675 show_backtrace(1);
5676 }
5677 var9 = var11;
5678 RET_LABEL10:(void)0;
5679 }
5680 }
5681 {
5682 { /* Inline model#MPropDef#mclassdef (var9) on <var9:MPropDef(MAttributeDef)> */
5683 var14 = var9->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var9:MPropDef(MAttributeDef)> */
5684 if (unlikely(var14 == NULL)) {
5685 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
5686 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2010);
5687 show_backtrace(1);
5688 }
5689 var12 = var14;
5690 RET_LABEL13:(void)0;
5691 }
5692 }
5693 var_intromclassdef = var12;
5694 {
5695 { /* Inline model#MClassDef#bound_mtype (var_intromclassdef) on <var_intromclassdef:MClassDef> */
5696 var17 = var_intromclassdef->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_intromclassdef:MClassDef> */
5697 if (unlikely(var17 == NULL)) {
5698 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
5699 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
5700 show_backtrace(1);
5701 }
5702 var15 = var17;
5703 RET_LABEL16:(void)0;
5704 }
5705 }
5706 {
5707 { /* Inline model#MClassDef#bound_mtype (var_intromclassdef) on <var_intromclassdef:MClassDef> */
5708 var20 = var_intromclassdef->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_intromclassdef:MClassDef> */
5709 if (unlikely(var20 == NULL)) {
5710 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
5711 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
5712 show_backtrace(1);
5713 }
5714 var18 = var20;
5715 RET_LABEL19:(void)0;
5716 }
5717 }
5718 {
5719 { /* Inline model#MClassDef#mmodule (var_intromclassdef) on <var_intromclassdef:MClassDef> */
5720 var23 = var_intromclassdef->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var_intromclassdef:MClassDef> */
5721 if (unlikely(var23 == NULL)) {
5722 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
5723 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 489);
5724 show_backtrace(1);
5725 }
5726 var21 = var23;
5727 RET_LABEL22:(void)0;
5728 }
5729 }
5730 var24 = 1;
5731 {
5732 var25 = ((val* (*)(val* self, val* p0, val* p1, val* p2, short int p3))(var_mtype->class->vft[COLOR_nit__model__MType__resolve_for]))(var_mtype, var15, var18, var21, var24) /* resolve_for on <var_mtype:MType>*/;
5733 }
5734 var_mtype = var25;
5735 /* <var_mtype:MType> isa MNullableType */
5736 cltype = type_nit__MNullableType.color;
5737 idtype = type_nit__MNullableType.id;
5738 if(cltype >= var_mtype->type->table_size) {
5739 var26 = 0;
5740 } else {
5741 var26 = var_mtype->type->type_table[cltype] == idtype;
5742 }
5743 if (var26){
5744 if (varonce) {
5745 var27 = varonce;
5746 } else {
5747 var28 = " = 1; /* easy isset: ";
5748 var29 = 21;
5749 var30 = standard___standard__NativeString___to_s_with_length(var28, var29);
5750 var27 = var30;
5751 varonce = var27;
5752 }
5753 if (varonce31) {
5754 var32 = varonce31;
5755 } else {
5756 var33 = " on ";
5757 var34 = 4;
5758 var35 = standard___standard__NativeString___to_s_with_length(var33, var34);
5759 var32 = var35;
5760 varonce31 = var32;
5761 }
5762 {
5763 var36 = nit___nit__RuntimeVariable___standard__string__Object__inspect(var_recv);
5764 }
5765 if (varonce37) {
5766 var38 = varonce37;
5767 } else {
5768 var39 = " */";
5769 var40 = 3;
5770 var41 = standard___standard__NativeString___to_s_with_length(var39, var40);
5771 var38 = var41;
5772 varonce37 = var38;
5773 }
5774 var42 = NEW_standard__Array(&type_standard__Array__standard__Object);
5775 { /* var42 = array_instance Array[Object] */
5776 var43 = 6;
5777 var44 = NEW_standard__NativeArray(var43, &type_standard__NativeArray__standard__Object);
5778 ((struct instance_standard__NativeArray*)var44)->values[0] = (val*) var_res;
5779 ((struct instance_standard__NativeArray*)var44)->values[1] = (val*) var27;
5780 ((struct instance_standard__NativeArray*)var44)->values[2] = (val*) var_a;
5781 ((struct instance_standard__NativeArray*)var44)->values[3] = (val*) var32;
5782 ((struct instance_standard__NativeArray*)var44)->values[4] = (val*) var36;
5783 ((struct instance_standard__NativeArray*)var44)->values[5] = (val*) var38;
5784 {
5785 ((void (*)(val* self, val* p0, long p1))(var42->class->vft[COLOR_standard__array__Array__with_native]))(var42, var44, var43) /* with_native on <var42:Array[Object]>*/;
5786 }
5787 }
5788 {
5789 var45 = ((val* (*)(val* self))(var42->class->vft[COLOR_standard__string__Object__to_s]))(var42) /* to_s on <var42:Array[Object]>*/;
5790 }
5791 {
5792 nit___nit__AbstractCompilerVisitor___add(self, var45); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
5793 }
5794 var = var_res;
5795 goto RET_LABEL;
5796 } else {
5797 }
5798 {
5799 var46 = nit__separate_compiler___MEntity___const_color(var_a);
5800 }
5801 {
5802 nit___nit__AbstractCompilerVisitor___require_declaration(self, var46); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
5803 }
5804 {
5805 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
5806 var49 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
5807 if (unlikely(var49 == NULL)) {
5808 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
5809 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
5810 show_backtrace(1);
5811 }
5812 var47 = var49;
5813 RET_LABEL48:(void)0;
5814 }
5815 }
5816 {
5817 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var47) on <var47:AbstractCompiler(SeparateCompiler)> */
5818 var52 = var47->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var47:AbstractCompiler(SeparateCompiler)> */
5819 if (unlikely(var52 == NULL)) {
5820 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
5821 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
5822 show_backtrace(1);
5823 }
5824 var50 = var52;
5825 RET_LABEL51:(void)0;
5826 }
5827 }
5828 {
5829 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var50) on <var50:ModelBuilder> */
5830 var55 = var50->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var50:ModelBuilder> */
5831 if (unlikely(var55 == NULL)) {
5832 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
5833 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
5834 show_backtrace(1);
5835 }
5836 var53 = var55;
5837 RET_LABEL54:(void)0;
5838 }
5839 }
5840 {
5841 { /* Inline separate_compiler#ToolContext#opt_no_union_attribute (var53) on <var53:ToolContext> */
5842 var58 = var53->attrs[COLOR_nit__separate_compiler__ToolContext___opt_no_union_attribute].val; /* _opt_no_union_attribute on <var53:ToolContext> */
5843 if (unlikely(var58 == NULL)) {
5844 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_union_attribute");
5845 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 28);
5846 show_backtrace(1);
5847 }
5848 var56 = var58;
5849 RET_LABEL57:(void)0;
5850 }
5851 }
5852 {
5853 { /* Inline opts#Option#value (var56) on <var56:OptionBool> */
5854 var61 = var56->attrs[COLOR_opts__Option___value].val; /* _value on <var56:OptionBool> */
5855 var59 = var61;
5856 RET_LABEL60:(void)0;
5857 }
5858 }
5859 var62 = ((struct instance_standard__Bool*)var59)->value; /* autounbox from nullable Object to Bool */;
5860 if (var62){
5861 if (varonce63) {
5862 var64 = varonce63;
5863 } else {
5864 var65 = " = ";
5865 var66 = 3;
5866 var67 = standard___standard__NativeString___to_s_with_length(var65, var66);
5867 var64 = var67;
5868 varonce63 = var64;
5869 }
5870 if (varonce68) {
5871 var69 = varonce68;
5872 } else {
5873 var70 = "->attrs[";
5874 var71 = 8;
5875 var72 = standard___standard__NativeString___to_s_with_length(var70, var71);
5876 var69 = var72;
5877 varonce68 = var69;
5878 }
5879 {
5880 var73 = nit__separate_compiler___MEntity___const_color(var_a);
5881 }
5882 if (varonce74) {
5883 var75 = varonce74;
5884 } else {
5885 var76 = "] != NULL; /* ";
5886 var77 = 14;
5887 var78 = standard___standard__NativeString___to_s_with_length(var76, var77);
5888 var75 = var78;
5889 varonce74 = var75;
5890 }
5891 if (varonce79) {
5892 var80 = varonce79;
5893 } else {
5894 var81 = " on ";
5895 var82 = 4;
5896 var83 = standard___standard__NativeString___to_s_with_length(var81, var82);
5897 var80 = var83;
5898 varonce79 = var80;
5899 }
5900 {
5901 var84 = nit___nit__RuntimeVariable___standard__string__Object__inspect(var_recv);
5902 }
5903 if (varonce85) {
5904 var86 = varonce85;
5905 } else {
5906 var87 = "*/";
5907 var88 = 2;
5908 var89 = standard___standard__NativeString___to_s_with_length(var87, var88);
5909 var86 = var89;
5910 varonce85 = var86;
5911 }
5912 var90 = NEW_standard__Array(&type_standard__Array__standard__Object);
5913 { /* var90 = array_instance Array[Object] */
5914 var91 = 10;
5915 var92 = NEW_standard__NativeArray(var91, &type_standard__NativeArray__standard__Object);
5916 ((struct instance_standard__NativeArray*)var92)->values[0] = (val*) var_res;
5917 ((struct instance_standard__NativeArray*)var92)->values[1] = (val*) var64;
5918 ((struct instance_standard__NativeArray*)var92)->values[2] = (val*) var_recv;
5919 ((struct instance_standard__NativeArray*)var92)->values[3] = (val*) var69;
5920 ((struct instance_standard__NativeArray*)var92)->values[4] = (val*) var73;
5921 ((struct instance_standard__NativeArray*)var92)->values[5] = (val*) var75;
5922 ((struct instance_standard__NativeArray*)var92)->values[6] = (val*) var_a;
5923 ((struct instance_standard__NativeArray*)var92)->values[7] = (val*) var80;
5924 ((struct instance_standard__NativeArray*)var92)->values[8] = (val*) var84;
5925 ((struct instance_standard__NativeArray*)var92)->values[9] = (val*) var86;
5926 {
5927 ((void (*)(val* self, val* p0, long p1))(var90->class->vft[COLOR_standard__array__Array__with_native]))(var90, var92, var91) /* with_native on <var90:Array[Object]>*/;
5928 }
5929 }
5930 {
5931 var93 = ((val* (*)(val* self))(var90->class->vft[COLOR_standard__string__Object__to_s]))(var90) /* to_s on <var90:Array[Object]>*/;
5932 }
5933 {
5934 nit___nit__AbstractCompilerVisitor___add(self, var93); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
5935 }
5936 } else {
5937 {
5938 var94 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
5939 }
5940 if (varonce95) {
5941 var96 = varonce95;
5942 } else {
5943 var97 = "val*";
5944 var98 = 4;
5945 var99 = standard___standard__NativeString___to_s_with_length(var97, var98);
5946 var96 = var99;
5947 varonce95 = var96;
5948 }
5949 {
5950 var100 = ((short int (*)(val* self, val* p0))(var94->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var94, var96) /* == on <var94:String>*/;
5951 }
5952 if (var100){
5953 if (varonce101) {
5954 var102 = varonce101;
5955 } else {
5956 var103 = " = ";
5957 var104 = 3;
5958 var105 = standard___standard__NativeString___to_s_with_length(var103, var104);
5959 var102 = var105;
5960 varonce101 = var102;
5961 }
5962 if (varonce106) {
5963 var107 = varonce106;
5964 } else {
5965 var108 = "->attrs[";
5966 var109 = 8;
5967 var110 = standard___standard__NativeString___to_s_with_length(var108, var109);
5968 var107 = var110;
5969 varonce106 = var107;
5970 }
5971 {
5972 var111 = nit__separate_compiler___MEntity___const_color(var_a);
5973 }
5974 if (varonce112) {
5975 var113 = varonce112;
5976 } else {
5977 var114 = "].val != NULL; /* ";
5978 var115 = 18;
5979 var116 = standard___standard__NativeString___to_s_with_length(var114, var115);
5980 var113 = var116;
5981 varonce112 = var113;
5982 }
5983 if (varonce117) {
5984 var118 = varonce117;
5985 } else {
5986 var119 = " on ";
5987 var120 = 4;
5988 var121 = standard___standard__NativeString___to_s_with_length(var119, var120);
5989 var118 = var121;
5990 varonce117 = var118;
5991 }
5992 {
5993 var122 = nit___nit__RuntimeVariable___standard__string__Object__inspect(var_recv);
5994 }
5995 if (varonce123) {
5996 var124 = varonce123;
5997 } else {
5998 var125 = " */";
5999 var126 = 3;
6000 var127 = standard___standard__NativeString___to_s_with_length(var125, var126);
6001 var124 = var127;
6002 varonce123 = var124;
6003 }
6004 var128 = NEW_standard__Array(&type_standard__Array__standard__Object);
6005 { /* var128 = array_instance Array[Object] */
6006 var129 = 10;
6007 var130 = NEW_standard__NativeArray(var129, &type_standard__NativeArray__standard__Object);
6008 ((struct instance_standard__NativeArray*)var130)->values[0] = (val*) var_res;
6009 ((struct instance_standard__NativeArray*)var130)->values[1] = (val*) var102;
6010 ((struct instance_standard__NativeArray*)var130)->values[2] = (val*) var_recv;
6011 ((struct instance_standard__NativeArray*)var130)->values[3] = (val*) var107;
6012 ((struct instance_standard__NativeArray*)var130)->values[4] = (val*) var111;
6013 ((struct instance_standard__NativeArray*)var130)->values[5] = (val*) var113;
6014 ((struct instance_standard__NativeArray*)var130)->values[6] = (val*) var_a;
6015 ((struct instance_standard__NativeArray*)var130)->values[7] = (val*) var118;
6016 ((struct instance_standard__NativeArray*)var130)->values[8] = (val*) var122;
6017 ((struct instance_standard__NativeArray*)var130)->values[9] = (val*) var124;
6018 {
6019 ((void (*)(val* self, val* p0, long p1))(var128->class->vft[COLOR_standard__array__Array__with_native]))(var128, var130, var129) /* with_native on <var128:Array[Object]>*/;
6020 }
6021 }
6022 {
6023 var131 = ((val* (*)(val* self))(var128->class->vft[COLOR_standard__string__Object__to_s]))(var128) /* to_s on <var128:Array[Object]>*/;
6024 }
6025 {
6026 nit___nit__AbstractCompilerVisitor___add(self, var131); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
6027 }
6028 } else {
6029 if (varonce132) {
6030 var133 = varonce132;
6031 } else {
6032 var134 = " = 1; /* NOT YET IMPLEMENTED: isset of primitives: ";
6033 var135 = 51;
6034 var136 = standard___standard__NativeString___to_s_with_length(var134, var135);
6035 var133 = var136;
6036 varonce132 = var133;
6037 }
6038 if (varonce137) {
6039 var138 = varonce137;
6040 } else {
6041 var139 = " on ";
6042 var140 = 4;
6043 var141 = standard___standard__NativeString___to_s_with_length(var139, var140);
6044 var138 = var141;
6045 varonce137 = var138;
6046 }
6047 {
6048 var142 = nit___nit__RuntimeVariable___standard__string__Object__inspect(var_recv);
6049 }
6050 if (varonce143) {
6051 var144 = varonce143;
6052 } else {
6053 var145 = " */";
6054 var146 = 3;
6055 var147 = standard___standard__NativeString___to_s_with_length(var145, var146);
6056 var144 = var147;
6057 varonce143 = var144;
6058 }
6059 var148 = NEW_standard__Array(&type_standard__Array__standard__Object);
6060 { /* var148 = array_instance Array[Object] */
6061 var149 = 6;
6062 var150 = NEW_standard__NativeArray(var149, &type_standard__NativeArray__standard__Object);
6063 ((struct instance_standard__NativeArray*)var150)->values[0] = (val*) var_res;
6064 ((struct instance_standard__NativeArray*)var150)->values[1] = (val*) var133;
6065 ((struct instance_standard__NativeArray*)var150)->values[2] = (val*) var_a;
6066 ((struct instance_standard__NativeArray*)var150)->values[3] = (val*) var138;
6067 ((struct instance_standard__NativeArray*)var150)->values[4] = (val*) var142;
6068 ((struct instance_standard__NativeArray*)var150)->values[5] = (val*) var144;
6069 {
6070 ((void (*)(val* self, val* p0, long p1))(var148->class->vft[COLOR_standard__array__Array__with_native]))(var148, var150, var149) /* with_native on <var148:Array[Object]>*/;
6071 }
6072 }
6073 {
6074 var151 = ((val* (*)(val* self))(var148->class->vft[COLOR_standard__string__Object__to_s]))(var148) /* to_s on <var148:Array[Object]>*/;
6075 }
6076 {
6077 nit___nit__AbstractCompilerVisitor___add(self, var151); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
6078 }
6079 }
6080 }
6081 var = var_res;
6082 goto RET_LABEL;
6083 RET_LABEL:;
6084 return var;
6085 }
6086 /* method separate_compiler#SeparateCompilerVisitor#read_attribute for (self: SeparateCompilerVisitor, MAttribute, RuntimeVariable): RuntimeVariable */
6087 val* nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__read_attribute(val* self, val* p0, val* p1) {
6088 val* var /* : RuntimeVariable */;
6089 val* var_a /* var a: MAttribute */;
6090 val* var_recv /* var recv: RuntimeVariable */;
6091 val* var1 /* : MPropDef */;
6092 val* var3 /* : MPropDef */;
6093 val* var4 /* : nullable MType */;
6094 val* var6 /* : nullable MType */;
6095 val* var_ret /* var ret: MType */;
6096 val* var7 /* : MPropDef */;
6097 val* var9 /* : MPropDef */;
6098 val* var10 /* : MClassDef */;
6099 val* var12 /* : MClassDef */;
6100 val* var_intromclassdef /* var intromclassdef: MClassDef */;
6101 val* var13 /* : MClassType */;
6102 val* var15 /* : MClassType */;
6103 val* var16 /* : MClassType */;
6104 val* var18 /* : MClassType */;
6105 val* var19 /* : MModule */;
6106 val* var21 /* : MModule */;
6107 short int var22 /* : Bool */;
6108 val* var23 /* : MType */;
6109 val* var24 /* : AbstractCompiler */;
6110 val* var26 /* : AbstractCompiler */;
6111 val* var27 /* : ModelBuilder */;
6112 val* var29 /* : ModelBuilder */;
6113 val* var30 /* : ToolContext */;
6114 val* var32 /* : ToolContext */;
6115 val* var33 /* : OptionBool */;
6116 val* var35 /* : OptionBool */;
6117 val* var36 /* : nullable Object */;
6118 val* var38 /* : nullable Object */;
6119 short int var39 /* : Bool */;
6120 val* var40 /* : AbstractCompiler */;
6121 val* var42 /* : AbstractCompiler */;
6122 val* var_ /* var : SeparateCompiler */;
6123 long var43 /* : Int */;
6124 long var45 /* : Int */;
6125 long var46 /* : Int */;
6126 long var47 /* : Int */;
6127 short int var49 /* : Bool */;
6128 int cltype;
6129 int idtype;
6130 const char* var_class_name;
6131 long var50 /* : Int */;
6132 static val* varonce;
6133 val* var52 /* : String */;
6134 char* var53 /* : NativeString */;
6135 long var54 /* : Int */;
6136 val* var55 /* : FlatString */;
6137 val* var56 /* : String */;
6138 val* var57 /* : AbstractCompiler */;
6139 val* var59 /* : AbstractCompiler */;
6140 val* var60 /* : ModelBuilder */;
6141 val* var62 /* : ModelBuilder */;
6142 val* var63 /* : ToolContext */;
6143 val* var65 /* : ToolContext */;
6144 val* var66 /* : OptionBool */;
6145 val* var68 /* : OptionBool */;
6146 val* var69 /* : nullable Object */;
6147 val* var71 /* : nullable Object */;
6148 short int var72 /* : Bool */;
6149 val* var73 /* : MClassType */;
6150 val* var74 /* : MType */;
6151 val* var_cret /* var cret: MType */;
6152 val* var75 /* : RuntimeVariable */;
6153 val* var_res /* var res: RuntimeVariable */;
6154 static val* varonce77;
6155 val* var78 /* : String */;
6156 char* var79 /* : NativeString */;
6157 long var80 /* : Int */;
6158 val* var81 /* : FlatString */;
6159 static val* varonce82;
6160 val* var83 /* : String */;
6161 char* var84 /* : NativeString */;
6162 long var85 /* : Int */;
6163 val* var86 /* : FlatString */;
6164 val* var87 /* : String */;
6165 static val* varonce88;
6166 val* var89 /* : String */;
6167 char* var90 /* : NativeString */;
6168 long var91 /* : Int */;
6169 val* var92 /* : FlatString */;
6170 static val* varonce93;
6171 val* var94 /* : String */;
6172 char* var95 /* : NativeString */;
6173 long var96 /* : Int */;
6174 val* var97 /* : FlatString */;
6175 val* var98 /* : String */;
6176 static val* varonce99;
6177 val* var100 /* : String */;
6178 char* var101 /* : NativeString */;
6179 long var102 /* : Int */;
6180 val* var103 /* : FlatString */;
6181 val* var104 /* : Array[Object] */;
6182 long var105 /* : Int */;
6183 val* var106 /* : NativeArray[Object] */;
6184 val* var107 /* : String */;
6185 short int var108 /* : Bool */;
6186 short int var109 /* : Bool */;
6187 int cltype110;
6188 int idtype111;
6189 short int var112 /* : Bool */;
6190 short int var_113 /* var : Bool */;
6191 val* var114 /* : AbstractCompiler */;
6192 val* var116 /* : AbstractCompiler */;
6193 val* var117 /* : ModelBuilder */;
6194 val* var119 /* : ModelBuilder */;
6195 val* var120 /* : ToolContext */;
6196 val* var122 /* : ToolContext */;
6197 val* var123 /* : OptionBool */;
6198 val* var125 /* : OptionBool */;
6199 val* var126 /* : nullable Object */;
6200 val* var128 /* : nullable Object */;
6201 short int var129 /* : Bool */;
6202 short int var130 /* : Bool */;
6203 static val* varonce131;
6204 val* var132 /* : String */;
6205 char* var133 /* : NativeString */;
6206 long var134 /* : Int */;
6207 val* var135 /* : FlatString */;
6208 static val* varonce136;
6209 val* var137 /* : String */;
6210 char* var138 /* : NativeString */;
6211 long var139 /* : Int */;
6212 val* var140 /* : FlatString */;
6213 val* var141 /* : Array[Object] */;
6214 long var142 /* : Int */;
6215 val* var143 /* : NativeArray[Object] */;
6216 val* var144 /* : String */;
6217 static val* varonce145;
6218 val* var146 /* : String */;
6219 char* var147 /* : NativeString */;
6220 long var148 /* : Int */;
6221 val* var149 /* : FlatString */;
6222 val* var150 /* : String */;
6223 val* var152 /* : String */;
6224 val* var153 /* : Array[Object] */;
6225 long var154 /* : Int */;
6226 val* var155 /* : NativeArray[Object] */;
6227 val* var156 /* : String */;
6228 static val* varonce157;
6229 val* var158 /* : String */;
6230 char* var159 /* : NativeString */;
6231 long var160 /* : Int */;
6232 val* var161 /* : FlatString */;
6233 val* var162 /* : AbstractCompiler */;
6234 val* var164 /* : AbstractCompiler */;
6235 val* var165 /* : ModelBuilder */;
6236 val* var167 /* : ModelBuilder */;
6237 val* var168 /* : ToolContext */;
6238 val* var170 /* : ToolContext */;
6239 val* var171 /* : OptionBool */;
6240 val* var173 /* : OptionBool */;
6241 val* var174 /* : nullable Object */;
6242 val* var176 /* : nullable Object */;
6243 short int var177 /* : Bool */;
6244 val* var178 /* : AbstractCompiler */;
6245 val* var180 /* : AbstractCompiler */;
6246 val* var_181 /* var : SeparateCompiler */;
6247 long var182 /* : Int */;
6248 long var184 /* : Int */;
6249 long var185 /* : Int */;
6250 long var186 /* : Int */;
6251 short int var188 /* : Bool */;
6252 int cltype189;
6253 int idtype190;
6254 const char* var_class_name191;
6255 long var192 /* : Int */;
6256 static val* varonce194;
6257 val* var195 /* : String */;
6258 char* var196 /* : NativeString */;
6259 long var197 /* : Int */;
6260 val* var198 /* : FlatString */;
6261 val* var199 /* : RuntimeVariable */;
6262 val* var200 /* : RuntimeVariable */;
6263 val* var_res201 /* var res: RuntimeVariable */;
6264 static val* varonce202;
6265 val* var203 /* : String */;
6266 char* var204 /* : NativeString */;
6267 long var205 /* : Int */;
6268 val* var206 /* : FlatString */;
6269 static val* varonce207;
6270 val* var208 /* : String */;
6271 char* var209 /* : NativeString */;
6272 long var210 /* : Int */;
6273 val* var211 /* : FlatString */;
6274 val* var212 /* : String */;
6275 static val* varonce213;
6276 val* var214 /* : String */;
6277 char* var215 /* : NativeString */;
6278 long var216 /* : Int */;
6279 val* var217 /* : FlatString */;
6280 val* var218 /* : String */;
6281 static val* varonce219;
6282 val* var220 /* : String */;
6283 char* var221 /* : NativeString */;
6284 long var222 /* : Int */;
6285 val* var223 /* : FlatString */;
6286 static val* varonce224;
6287 val* var225 /* : String */;
6288 char* var226 /* : NativeString */;
6289 long var227 /* : Int */;
6290 val* var228 /* : FlatString */;
6291 val* var229 /* : String */;
6292 static val* varonce230;
6293 val* var231 /* : String */;
6294 char* var232 /* : NativeString */;
6295 long var233 /* : Int */;
6296 val* var234 /* : FlatString */;
6297 val* var235 /* : Array[Object] */;
6298 long var236 /* : Int */;
6299 val* var237 /* : NativeArray[Object] */;
6300 val* var238 /* : String */;
6301 short int var239 /* : Bool */;
6302 short int var240 /* : Bool */;
6303 val* var241 /* : String */;
6304 static val* varonce242;
6305 val* var243 /* : String */;
6306 char* var244 /* : NativeString */;
6307 long var245 /* : Int */;
6308 val* var246 /* : FlatString */;
6309 short int var247 /* : Bool */;
6310 short int var_248 /* var : Bool */;
6311 short int var249 /* : Bool */;
6312 int cltype250;
6313 int idtype251;
6314 short int var252 /* : Bool */;
6315 short int var_253 /* var : Bool */;
6316 val* var254 /* : AbstractCompiler */;
6317 val* var256 /* : AbstractCompiler */;
6318 val* var257 /* : ModelBuilder */;
6319 val* var259 /* : ModelBuilder */;
6320 val* var260 /* : ToolContext */;
6321 val* var262 /* : ToolContext */;
6322 val* var263 /* : OptionBool */;
6323 val* var265 /* : OptionBool */;
6324 val* var266 /* : nullable Object */;
6325 val* var268 /* : nullable Object */;
6326 short int var269 /* : Bool */;
6327 short int var270 /* : Bool */;
6328 static val* varonce271;
6329 val* var272 /* : String */;
6330 char* var273 /* : NativeString */;
6331 long var274 /* : Int */;
6332 val* var275 /* : FlatString */;
6333 static val* varonce276;
6334 val* var277 /* : String */;
6335 char* var278 /* : NativeString */;
6336 long var279 /* : Int */;
6337 val* var280 /* : FlatString */;
6338 val* var281 /* : Array[Object] */;
6339 long var282 /* : Int */;
6340 val* var283 /* : NativeArray[Object] */;
6341 val* var284 /* : String */;
6342 static val* varonce285;
6343 val* var286 /* : String */;
6344 char* var287 /* : NativeString */;
6345 long var288 /* : Int */;
6346 val* var289 /* : FlatString */;
6347 val* var290 /* : String */;
6348 val* var292 /* : String */;
6349 val* var293 /* : Array[Object] */;
6350 long var294 /* : Int */;
6351 val* var295 /* : NativeArray[Object] */;
6352 val* var296 /* : String */;
6353 static val* varonce297;
6354 val* var298 /* : String */;
6355 char* var299 /* : NativeString */;
6356 long var300 /* : Int */;
6357 val* var301 /* : FlatString */;
6358 val* var302 /* : AbstractCompiler */;
6359 val* var304 /* : AbstractCompiler */;
6360 val* var305 /* : ModelBuilder */;
6361 val* var307 /* : ModelBuilder */;
6362 val* var308 /* : ToolContext */;
6363 val* var310 /* : ToolContext */;
6364 val* var311 /* : OptionBool */;
6365 val* var313 /* : OptionBool */;
6366 val* var314 /* : nullable Object */;
6367 val* var316 /* : nullable Object */;
6368 short int var317 /* : Bool */;
6369 val* var318 /* : AbstractCompiler */;
6370 val* var320 /* : AbstractCompiler */;
6371 val* var_321 /* var : SeparateCompiler */;
6372 long var322 /* : Int */;
6373 long var324 /* : Int */;
6374 long var325 /* : Int */;
6375 long var326 /* : Int */;
6376 short int var328 /* : Bool */;
6377 int cltype329;
6378 int idtype330;
6379 const char* var_class_name331;
6380 long var332 /* : Int */;
6381 static val* varonce334;
6382 val* var335 /* : String */;
6383 char* var336 /* : NativeString */;
6384 long var337 /* : Int */;
6385 val* var338 /* : FlatString */;
6386 var_a = p0;
6387 var_recv = p1;
6388 {
6389 nit___nit__AbstractCompilerVisitor___check_recv_notnull(self, var_recv); /* Direct call abstract_compiler#AbstractCompilerVisitor#check_recv_notnull on <self:SeparateCompilerVisitor>*/
6390 }
6391 {
6392 { /* Inline model#MProperty#intro (var_a) on <var_a:MAttribute> */
6393 var3 = var_a->attrs[COLOR_nit__model__MProperty___intro].val; /* _intro on <var_a:MAttribute> */
6394 if (unlikely(var3 == NULL)) {
6395 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
6396 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1773);
6397 show_backtrace(1);
6398 }
6399 var1 = var3;
6400 RET_LABEL2:(void)0;
6401 }
6402 }
6403 {
6404 { /* Inline model#MAttributeDef#static_mtype (var1) on <var1:MPropDef(MAttributeDef)> */
6405 var6 = var1->attrs[COLOR_nit__model__MAttributeDef___static_mtype].val; /* _static_mtype on <var1:MPropDef(MAttributeDef)> */
6406 var4 = var6;
6407 RET_LABEL5:(void)0;
6408 }
6409 }
6410 if (unlikely(var4 == NULL)) {
6411 PRINT_ERROR("Runtime error: %s", "Cast failed");
6412 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1340);
6413 show_backtrace(1);
6414 }
6415 var_ret = var4;
6416 {
6417 { /* Inline model#MProperty#intro (var_a) on <var_a:MAttribute> */
6418 var9 = var_a->attrs[COLOR_nit__model__MProperty___intro].val; /* _intro on <var_a:MAttribute> */
6419 if (unlikely(var9 == NULL)) {
6420 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
6421 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1773);
6422 show_backtrace(1);
6423 }
6424 var7 = var9;
6425 RET_LABEL8:(void)0;
6426 }
6427 }
6428 {
6429 { /* Inline model#MPropDef#mclassdef (var7) on <var7:MPropDef(MAttributeDef)> */
6430 var12 = var7->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var7:MPropDef(MAttributeDef)> */
6431 if (unlikely(var12 == NULL)) {
6432 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
6433 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2010);
6434 show_backtrace(1);
6435 }
6436 var10 = var12;
6437 RET_LABEL11:(void)0;
6438 }
6439 }
6440 var_intromclassdef = var10;
6441 {
6442 { /* Inline model#MClassDef#bound_mtype (var_intromclassdef) on <var_intromclassdef:MClassDef> */
6443 var15 = var_intromclassdef->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_intromclassdef:MClassDef> */
6444 if (unlikely(var15 == NULL)) {
6445 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
6446 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
6447 show_backtrace(1);
6448 }
6449 var13 = var15;
6450 RET_LABEL14:(void)0;
6451 }
6452 }
6453 {
6454 { /* Inline model#MClassDef#bound_mtype (var_intromclassdef) on <var_intromclassdef:MClassDef> */
6455 var18 = var_intromclassdef->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_intromclassdef:MClassDef> */
6456 if (unlikely(var18 == NULL)) {
6457 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
6458 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
6459 show_backtrace(1);
6460 }
6461 var16 = var18;
6462 RET_LABEL17:(void)0;
6463 }
6464 }
6465 {
6466 { /* Inline model#MClassDef#mmodule (var_intromclassdef) on <var_intromclassdef:MClassDef> */
6467 var21 = var_intromclassdef->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var_intromclassdef:MClassDef> */
6468 if (unlikely(var21 == NULL)) {
6469 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
6470 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 489);
6471 show_backtrace(1);
6472 }
6473 var19 = var21;
6474 RET_LABEL20:(void)0;
6475 }
6476 }
6477 var22 = 1;
6478 {
6479 var23 = ((val* (*)(val* self, val* p0, val* p1, val* p2, short int p3))(var_ret->class->vft[COLOR_nit__model__MType__resolve_for]))(var_ret, var13, var16, var19, var22) /* resolve_for on <var_ret:MType>*/;
6480 }
6481 var_ret = var23;
6482 {
6483 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
6484 var26 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
6485 if (unlikely(var26 == NULL)) {
6486 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
6487 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
6488 show_backtrace(1);
6489 }
6490 var24 = var26;
6491 RET_LABEL25:(void)0;
6492 }
6493 }
6494 {
6495 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var24) on <var24:AbstractCompiler(SeparateCompiler)> */
6496 var29 = var24->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var24:AbstractCompiler(SeparateCompiler)> */
6497 if (unlikely(var29 == NULL)) {
6498 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6499 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
6500 show_backtrace(1);
6501 }
6502 var27 = var29;
6503 RET_LABEL28:(void)0;
6504 }
6505 }
6506 {
6507 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var27) on <var27:ModelBuilder> */
6508 var32 = var27->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var27:ModelBuilder> */
6509 if (unlikely(var32 == NULL)) {
6510 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
6511 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
6512 show_backtrace(1);
6513 }
6514 var30 = var32;
6515 RET_LABEL31:(void)0;
6516 }
6517 }
6518 {
6519 { /* Inline abstract_compiler#ToolContext#opt_isset_checks_metrics (var30) on <var30:ToolContext> */
6520 var35 = var30->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_isset_checks_metrics].val; /* _opt_isset_checks_metrics on <var30:ToolContext> */
6521 if (unlikely(var35 == NULL)) {
6522 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_isset_checks_metrics");
6523 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 63);
6524 show_backtrace(1);
6525 }
6526 var33 = var35;
6527 RET_LABEL34:(void)0;
6528 }
6529 }
6530 {
6531 { /* Inline opts#Option#value (var33) on <var33:OptionBool> */
6532 var38 = var33->attrs[COLOR_opts__Option___value].val; /* _value on <var33:OptionBool> */
6533 var36 = var38;
6534 RET_LABEL37:(void)0;
6535 }
6536 }
6537 var39 = ((struct instance_standard__Bool*)var36)->value; /* autounbox from nullable Object to Bool */;
6538 if (var39){
6539 {
6540 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
6541 var42 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
6542 if (unlikely(var42 == NULL)) {
6543 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
6544 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
6545 show_backtrace(1);
6546 }
6547 var40 = var42;
6548 RET_LABEL41:(void)0;
6549 }
6550 }
6551 var_ = var40;
6552 {
6553 { /* Inline separate_compiler#SeparateCompiler#attr_read_count (var_) on <var_:SeparateCompiler> */
6554 var45 = var_->attrs[COLOR_nit__separate_compiler__SeparateCompiler___attr_read_count].l; /* _attr_read_count on <var_:SeparateCompiler> */
6555 var43 = var45;
6556 RET_LABEL44:(void)0;
6557 }
6558 }
6559 var46 = 1;
6560 {
6561 { /* Inline kernel#Int#+ (var43,var46) on <var43:Int> */
6562 /* Covariant cast for argument 0 (i) <var46:Int> isa OTHER */
6563 /* <var46:Int> isa OTHER */
6564 var49 = 1; /* easy <var46:Int> isa OTHER*/
6565 if (unlikely(!var49)) {
6566 var_class_name = type_standard__Int.name;
6567 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
6568 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
6569 show_backtrace(1);
6570 }
6571 var50 = var43 + var46;
6572 var47 = var50;
6573 goto RET_LABEL48;
6574 RET_LABEL48:(void)0;
6575 }
6576 }
6577 {
6578 { /* Inline separate_compiler#SeparateCompiler#attr_read_count= (var_,var47) on <var_:SeparateCompiler> */
6579 var_->attrs[COLOR_nit__separate_compiler__SeparateCompiler___attr_read_count].l = var47; /* _attr_read_count on <var_:SeparateCompiler> */
6580 RET_LABEL51:(void)0;
6581 }
6582 }
6583 if (varonce) {
6584 var52 = varonce;
6585 } else {
6586 var53 = "count_attr_reads++;";
6587 var54 = 19;
6588 var55 = standard___standard__NativeString___to_s_with_length(var53, var54);
6589 var52 = var55;
6590 varonce = var52;
6591 }
6592 {
6593 nit___nit__AbstractCompilerVisitor___add(self, var52); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
6594 }
6595 } else {
6596 }
6597 {
6598 var56 = nit__separate_compiler___MEntity___const_color(var_a);
6599 }
6600 {
6601 nit___nit__AbstractCompilerVisitor___require_declaration(self, var56); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
6602 }
6603 {
6604 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
6605 var59 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
6606 if (unlikely(var59 == NULL)) {
6607 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
6608 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
6609 show_backtrace(1);
6610 }
6611 var57 = var59;
6612 RET_LABEL58:(void)0;
6613 }
6614 }
6615 {
6616 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var57) on <var57:AbstractCompiler(SeparateCompiler)> */
6617 var62 = var57->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var57:AbstractCompiler(SeparateCompiler)> */
6618 if (unlikely(var62 == NULL)) {
6619 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6620 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
6621 show_backtrace(1);
6622 }
6623 var60 = var62;
6624 RET_LABEL61:(void)0;
6625 }
6626 }
6627 {
6628 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var60) on <var60:ModelBuilder> */
6629 var65 = var60->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var60:ModelBuilder> */
6630 if (unlikely(var65 == NULL)) {
6631 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
6632 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
6633 show_backtrace(1);
6634 }
6635 var63 = var65;
6636 RET_LABEL64:(void)0;
6637 }
6638 }
6639 {
6640 { /* Inline separate_compiler#ToolContext#opt_no_union_attribute (var63) on <var63:ToolContext> */
6641 var68 = var63->attrs[COLOR_nit__separate_compiler__ToolContext___opt_no_union_attribute].val; /* _opt_no_union_attribute on <var63:ToolContext> */
6642 if (unlikely(var68 == NULL)) {
6643 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_union_attribute");
6644 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 28);
6645 show_backtrace(1);
6646 }
6647 var66 = var68;
6648 RET_LABEL67:(void)0;
6649 }
6650 }
6651 {
6652 { /* Inline opts#Option#value (var66) on <var66:OptionBool> */
6653 var71 = var66->attrs[COLOR_opts__Option___value].val; /* _value on <var66:OptionBool> */
6654 var69 = var71;
6655 RET_LABEL70:(void)0;
6656 }
6657 }
6658 var72 = ((struct instance_standard__Bool*)var69)->value; /* autounbox from nullable Object to Bool */;
6659 if (var72){
6660 {
6661 var73 = nit___nit__AbstractCompilerVisitor___object_type(self);
6662 }
6663 {
6664 var74 = nit___nit__MType___as_nullable(var73);
6665 }
6666 var_cret = var74;
6667 {
6668 var75 = nit___nit__AbstractCompilerVisitor___new_var(self, var_cret);
6669 }
6670 var_res = var75;
6671 {
6672 { /* Inline abstract_compiler#RuntimeVariable#mcasttype= (var_res,var_ret) on <var_res:RuntimeVariable> */
6673 var_res->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mcasttype].val = var_ret; /* _mcasttype on <var_res:RuntimeVariable> */
6674 RET_LABEL76:(void)0;
6675 }
6676 }
6677 if (varonce77) {
6678 var78 = varonce77;
6679 } else {
6680 var79 = " = ";
6681 var80 = 3;
6682 var81 = standard___standard__NativeString___to_s_with_length(var79, var80);
6683 var78 = var81;
6684 varonce77 = var78;
6685 }
6686 if (varonce82) {
6687 var83 = varonce82;
6688 } else {
6689 var84 = "->attrs[";
6690 var85 = 8;
6691 var86 = standard___standard__NativeString___to_s_with_length(var84, var85);
6692 var83 = var86;
6693 varonce82 = var83;
6694 }
6695 {
6696 var87 = nit__separate_compiler___MEntity___const_color(var_a);
6697 }
6698 if (varonce88) {
6699 var89 = varonce88;
6700 } else {
6701 var90 = "]; /* ";
6702 var91 = 6;
6703 var92 = standard___standard__NativeString___to_s_with_length(var90, var91);
6704 var89 = var92;
6705 varonce88 = var89;
6706 }
6707 if (varonce93) {
6708 var94 = varonce93;
6709 } else {
6710 var95 = " on ";
6711 var96 = 4;
6712 var97 = standard___standard__NativeString___to_s_with_length(var95, var96);
6713 var94 = var97;
6714 varonce93 = var94;
6715 }
6716 {
6717 var98 = nit___nit__RuntimeVariable___standard__string__Object__inspect(var_recv);
6718 }
6719 if (varonce99) {
6720 var100 = varonce99;
6721 } else {
6722 var101 = " */";
6723 var102 = 3;
6724 var103 = standard___standard__NativeString___to_s_with_length(var101, var102);
6725 var100 = var103;
6726 varonce99 = var100;
6727 }
6728 var104 = NEW_standard__Array(&type_standard__Array__standard__Object);
6729 { /* var104 = array_instance Array[Object] */
6730 var105 = 10;
6731 var106 = NEW_standard__NativeArray(var105, &type_standard__NativeArray__standard__Object);
6732 ((struct instance_standard__NativeArray*)var106)->values[0] = (val*) var_res;
6733 ((struct instance_standard__NativeArray*)var106)->values[1] = (val*) var78;
6734 ((struct instance_standard__NativeArray*)var106)->values[2] = (val*) var_recv;
6735 ((struct instance_standard__NativeArray*)var106)->values[3] = (val*) var83;
6736 ((struct instance_standard__NativeArray*)var106)->values[4] = (val*) var87;
6737 ((struct instance_standard__NativeArray*)var106)->values[5] = (val*) var89;
6738 ((struct instance_standard__NativeArray*)var106)->values[6] = (val*) var_a;
6739 ((struct instance_standard__NativeArray*)var106)->values[7] = (val*) var94;
6740 ((struct instance_standard__NativeArray*)var106)->values[8] = (val*) var98;
6741 ((struct instance_standard__NativeArray*)var106)->values[9] = (val*) var100;
6742 {
6743 ((void (*)(val* self, val* p0, long p1))(var104->class->vft[COLOR_standard__array__Array__with_native]))(var104, var106, var105) /* with_native on <var104:Array[Object]>*/;
6744 }
6745 }
6746 {
6747 var107 = ((val* (*)(val* self))(var104->class->vft[COLOR_standard__string__Object__to_s]))(var104) /* to_s on <var104:Array[Object]>*/;
6748 }
6749 {
6750 nit___nit__AbstractCompilerVisitor___add(self, var107); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
6751 }
6752 /* <var_ret:MType> isa MNullableType */
6753 cltype110 = type_nit__MNullableType.color;
6754 idtype111 = type_nit__MNullableType.id;
6755 if(cltype110 >= var_ret->type->table_size) {
6756 var109 = 0;
6757 } else {
6758 var109 = var_ret->type->type_table[cltype110] == idtype111;
6759 }
6760 var112 = !var109;
6761 var_113 = var112;
6762 if (var112){
6763 {
6764 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
6765 var116 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
6766 if (unlikely(var116 == NULL)) {
6767 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
6768 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
6769 show_backtrace(1);
6770 }
6771 var114 = var116;
6772 RET_LABEL115:(void)0;
6773 }
6774 }
6775 {
6776 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var114) on <var114:AbstractCompiler(SeparateCompiler)> */
6777 var119 = var114->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var114:AbstractCompiler(SeparateCompiler)> */
6778 if (unlikely(var119 == NULL)) {
6779 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6780 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
6781 show_backtrace(1);
6782 }
6783 var117 = var119;
6784 RET_LABEL118:(void)0;
6785 }
6786 }
6787 {
6788 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var117) on <var117:ModelBuilder> */
6789 var122 = var117->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var117:ModelBuilder> */
6790 if (unlikely(var122 == NULL)) {
6791 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
6792 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
6793 show_backtrace(1);
6794 }
6795 var120 = var122;
6796 RET_LABEL121:(void)0;
6797 }
6798 }
6799 {
6800 { /* Inline abstract_compiler#ToolContext#opt_no_check_attr_isset (var120) on <var120:ToolContext> */
6801 var125 = var120->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_no_check_attr_isset].val; /* _opt_no_check_attr_isset on <var120:ToolContext> */
6802 if (unlikely(var125 == NULL)) {
6803 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_attr_isset");
6804 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 49);
6805 show_backtrace(1);
6806 }
6807 var123 = var125;
6808 RET_LABEL124:(void)0;
6809 }
6810 }
6811 {
6812 { /* Inline opts#Option#value (var123) on <var123:OptionBool> */
6813 var128 = var123->attrs[COLOR_opts__Option___value].val; /* _value on <var123:OptionBool> */
6814 var126 = var128;
6815 RET_LABEL127:(void)0;
6816 }
6817 }
6818 var129 = ((struct instance_standard__Bool*)var126)->value; /* autounbox from nullable Object to Bool */;
6819 var130 = !var129;
6820 var108 = var130;
6821 } else {
6822 var108 = var_113;
6823 }
6824 if (var108){
6825 if (varonce131) {
6826 var132 = varonce131;
6827 } else {
6828 var133 = "if (unlikely(";
6829 var134 = 13;
6830 var135 = standard___standard__NativeString___to_s_with_length(var133, var134);
6831 var132 = var135;
6832 varonce131 = var132;
6833 }
6834 if (varonce136) {
6835 var137 = varonce136;
6836 } else {
6837 var138 = " == NULL)) {";
6838 var139 = 12;
6839 var140 = standard___standard__NativeString___to_s_with_length(var138, var139);
6840 var137 = var140;
6841 varonce136 = var137;
6842 }
6843 var141 = NEW_standard__Array(&type_standard__Array__standard__Object);
6844 { /* var141 = array_instance Array[Object] */
6845 var142 = 3;
6846 var143 = NEW_standard__NativeArray(var142, &type_standard__NativeArray__standard__Object);
6847 ((struct instance_standard__NativeArray*)var143)->values[0] = (val*) var132;
6848 ((struct instance_standard__NativeArray*)var143)->values[1] = (val*) var_res;
6849 ((struct instance_standard__NativeArray*)var143)->values[2] = (val*) var137;
6850 {
6851 ((void (*)(val* self, val* p0, long p1))(var141->class->vft[COLOR_standard__array__Array__with_native]))(var141, var143, var142) /* with_native on <var141:Array[Object]>*/;
6852 }
6853 }
6854 {
6855 var144 = ((val* (*)(val* self))(var141->class->vft[COLOR_standard__string__Object__to_s]))(var141) /* to_s on <var141:Array[Object]>*/;
6856 }
6857 {
6858 nit___nit__AbstractCompilerVisitor___add(self, var144); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
6859 }
6860 if (varonce145) {
6861 var146 = varonce145;
6862 } else {
6863 var147 = "Uninitialized attribute ";
6864 var148 = 24;
6865 var149 = standard___standard__NativeString___to_s_with_length(var147, var148);
6866 var146 = var149;
6867 varonce145 = var146;
6868 }
6869 {
6870 { /* Inline model#MProperty#name (var_a) on <var_a:MAttribute> */
6871 var152 = var_a->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var_a:MAttribute> */
6872 if (unlikely(var152 == NULL)) {
6873 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
6874 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1741);
6875 show_backtrace(1);
6876 }
6877 var150 = var152;
6878 RET_LABEL151:(void)0;
6879 }
6880 }
6881 var153 = NEW_standard__Array(&type_standard__Array__standard__Object);
6882 { /* var153 = array_instance Array[Object] */
6883 var154 = 2;
6884 var155 = NEW_standard__NativeArray(var154, &type_standard__NativeArray__standard__Object);
6885 ((struct instance_standard__NativeArray*)var155)->values[0] = (val*) var146;
6886 ((struct instance_standard__NativeArray*)var155)->values[1] = (val*) var150;
6887 {
6888 ((void (*)(val* self, val* p0, long p1))(var153->class->vft[COLOR_standard__array__Array__with_native]))(var153, var155, var154) /* with_native on <var153:Array[Object]>*/;
6889 }
6890 }
6891 {
6892 var156 = ((val* (*)(val* self))(var153->class->vft[COLOR_standard__string__Object__to_s]))(var153) /* to_s on <var153:Array[Object]>*/;
6893 }
6894 {
6895 nit___nit__AbstractCompilerVisitor___add_abort(self, var156); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <self:SeparateCompilerVisitor>*/
6896 }
6897 if (varonce157) {
6898 var158 = varonce157;
6899 } else {
6900 var159 = "}";
6901 var160 = 1;
6902 var161 = standard___standard__NativeString___to_s_with_length(var159, var160);
6903 var158 = var161;
6904 varonce157 = var158;
6905 }
6906 {
6907 nit___nit__AbstractCompilerVisitor___add(self, var158); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
6908 }
6909 {
6910 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
6911 var164 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
6912 if (unlikely(var164 == NULL)) {
6913 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
6914 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
6915 show_backtrace(1);
6916 }
6917 var162 = var164;
6918 RET_LABEL163:(void)0;
6919 }
6920 }
6921 {
6922 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var162) on <var162:AbstractCompiler(SeparateCompiler)> */
6923 var167 = var162->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var162:AbstractCompiler(SeparateCompiler)> */
6924 if (unlikely(var167 == NULL)) {
6925 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6926 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
6927 show_backtrace(1);
6928 }
6929 var165 = var167;
6930 RET_LABEL166:(void)0;
6931 }
6932 }
6933 {
6934 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var165) on <var165:ModelBuilder> */
6935 var170 = var165->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var165:ModelBuilder> */
6936 if (unlikely(var170 == NULL)) {
6937 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
6938 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
6939 show_backtrace(1);
6940 }
6941 var168 = var170;
6942 RET_LABEL169:(void)0;
6943 }
6944 }
6945 {
6946 { /* Inline abstract_compiler#ToolContext#opt_isset_checks_metrics (var168) on <var168:ToolContext> */
6947 var173 = var168->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_isset_checks_metrics].val; /* _opt_isset_checks_metrics on <var168:ToolContext> */
6948 if (unlikely(var173 == NULL)) {
6949 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_isset_checks_metrics");
6950 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 63);
6951 show_backtrace(1);
6952 }
6953 var171 = var173;
6954 RET_LABEL172:(void)0;
6955 }
6956 }
6957 {
6958 { /* Inline opts#Option#value (var171) on <var171:OptionBool> */
6959 var176 = var171->attrs[COLOR_opts__Option___value].val; /* _value on <var171:OptionBool> */
6960 var174 = var176;
6961 RET_LABEL175:(void)0;
6962 }
6963 }
6964 var177 = ((struct instance_standard__Bool*)var174)->value; /* autounbox from nullable Object to Bool */;
6965 if (var177){
6966 {
6967 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
6968 var180 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
6969 if (unlikely(var180 == NULL)) {
6970 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
6971 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
6972 show_backtrace(1);
6973 }
6974 var178 = var180;
6975 RET_LABEL179:(void)0;
6976 }
6977 }
6978 var_181 = var178;
6979 {
6980 { /* Inline separate_compiler#SeparateCompiler#isset_checks_count (var_181) on <var_181:SeparateCompiler> */
6981 var184 = var_181->attrs[COLOR_nit__separate_compiler__SeparateCompiler___isset_checks_count].l; /* _isset_checks_count on <var_181:SeparateCompiler> */
6982 var182 = var184;
6983 RET_LABEL183:(void)0;
6984 }
6985 }
6986 var185 = 1;
6987 {
6988 { /* Inline kernel#Int#+ (var182,var185) on <var182:Int> */
6989 /* Covariant cast for argument 0 (i) <var185:Int> isa OTHER */
6990 /* <var185:Int> isa OTHER */
6991 var188 = 1; /* easy <var185:Int> isa OTHER*/
6992 if (unlikely(!var188)) {
6993 var_class_name191 = type_standard__Int.name;
6994 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name191);
6995 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
6996 show_backtrace(1);
6997 }
6998 var192 = var182 + var185;
6999 var186 = var192;
7000 goto RET_LABEL187;
7001 RET_LABEL187:(void)0;
7002 }
7003 }
7004 {
7005 { /* Inline separate_compiler#SeparateCompiler#isset_checks_count= (var_181,var186) on <var_181:SeparateCompiler> */
7006 var_181->attrs[COLOR_nit__separate_compiler__SeparateCompiler___isset_checks_count].l = var186; /* _isset_checks_count on <var_181:SeparateCompiler> */
7007 RET_LABEL193:(void)0;
7008 }
7009 }
7010 if (varonce194) {
7011 var195 = varonce194;
7012 } else {
7013 var196 = "count_isset_checks++;";
7014 var197 = 21;
7015 var198 = standard___standard__NativeString___to_s_with_length(var196, var197);
7016 var195 = var198;
7017 varonce194 = var195;
7018 }
7019 {
7020 nit___nit__AbstractCompilerVisitor___add(self, var195); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
7021 }
7022 } else {
7023 }
7024 } else {
7025 }
7026 {
7027 var199 = nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__autobox(self, var_res, var_ret);
7028 }
7029 var = var199;
7030 goto RET_LABEL;
7031 } else {
7032 {
7033 var200 = nit___nit__AbstractCompilerVisitor___new_var(self, var_ret);
7034 }
7035 var_res201 = var200;
7036 if (varonce202) {
7037 var203 = varonce202;
7038 } else {
7039 var204 = " = ";
7040 var205 = 3;
7041 var206 = standard___standard__NativeString___to_s_with_length(var204, var205);
7042 var203 = var206;
7043 varonce202 = var203;
7044 }
7045 if (varonce207) {
7046 var208 = varonce207;
7047 } else {
7048 var209 = "->attrs[";
7049 var210 = 8;
7050 var211 = standard___standard__NativeString___to_s_with_length(var209, var210);
7051 var208 = var211;
7052 varonce207 = var208;
7053 }
7054 {
7055 var212 = nit__separate_compiler___MEntity___const_color(var_a);
7056 }
7057 if (varonce213) {
7058 var214 = varonce213;
7059 } else {
7060 var215 = "].";
7061 var216 = 2;
7062 var217 = standard___standard__NativeString___to_s_with_length(var215, var216);
7063 var214 = var217;
7064 varonce213 = var214;
7065 }
7066 {
7067 var218 = ((val* (*)(val* self))(var_ret->class->vft[COLOR_nit__abstract_compiler__MType__ctypename]))(var_ret) /* ctypename on <var_ret:MType>*/;
7068 }
7069 if (varonce219) {
7070 var220 = varonce219;
7071 } else {
7072 var221 = "; /* ";
7073 var222 = 5;
7074 var223 = standard___standard__NativeString___to_s_with_length(var221, var222);
7075 var220 = var223;
7076 varonce219 = var220;
7077 }
7078 if (varonce224) {
7079 var225 = varonce224;
7080 } else {
7081 var226 = " on ";
7082 var227 = 4;
7083 var228 = standard___standard__NativeString___to_s_with_length(var226, var227);
7084 var225 = var228;
7085 varonce224 = var225;
7086 }
7087 {
7088 var229 = nit___nit__RuntimeVariable___standard__string__Object__inspect(var_recv);
7089 }
7090 if (varonce230) {
7091 var231 = varonce230;
7092 } else {
7093 var232 = " */";
7094 var233 = 3;
7095 var234 = standard___standard__NativeString___to_s_with_length(var232, var233);
7096 var231 = var234;
7097 varonce230 = var231;
7098 }
7099 var235 = NEW_standard__Array(&type_standard__Array__standard__Object);
7100 { /* var235 = array_instance Array[Object] */
7101 var236 = 12;
7102 var237 = NEW_standard__NativeArray(var236, &type_standard__NativeArray__standard__Object);
7103 ((struct instance_standard__NativeArray*)var237)->values[0] = (val*) var_res201;
7104 ((struct instance_standard__NativeArray*)var237)->values[1] = (val*) var203;
7105 ((struct instance_standard__NativeArray*)var237)->values[2] = (val*) var_recv;
7106 ((struct instance_standard__NativeArray*)var237)->values[3] = (val*) var208;
7107 ((struct instance_standard__NativeArray*)var237)->values[4] = (val*) var212;
7108 ((struct instance_standard__NativeArray*)var237)->values[5] = (val*) var214;
7109 ((struct instance_standard__NativeArray*)var237)->values[6] = (val*) var218;
7110 ((struct instance_standard__NativeArray*)var237)->values[7] = (val*) var220;
7111 ((struct instance_standard__NativeArray*)var237)->values[8] = (val*) var_a;
7112 ((struct instance_standard__NativeArray*)var237)->values[9] = (val*) var225;
7113 ((struct instance_standard__NativeArray*)var237)->values[10] = (val*) var229;
7114 ((struct instance_standard__NativeArray*)var237)->values[11] = (val*) var231;
7115 {
7116 ((void (*)(val* self, val* p0, long p1))(var235->class->vft[COLOR_standard__array__Array__with_native]))(var235, var237, var236) /* with_native on <var235:Array[Object]>*/;
7117 }
7118 }
7119 {
7120 var238 = ((val* (*)(val* self))(var235->class->vft[COLOR_standard__string__Object__to_s]))(var235) /* to_s on <var235:Array[Object]>*/;
7121 }
7122 {
7123 nit___nit__AbstractCompilerVisitor___add(self, var238); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
7124 }
7125 {
7126 var241 = ((val* (*)(val* self))(var_ret->class->vft[COLOR_nit__abstract_compiler__MType__ctype]))(var_ret) /* ctype on <var_ret:MType>*/;
7127 }
7128 if (varonce242) {
7129 var243 = varonce242;
7130 } else {
7131 var244 = "val*";
7132 var245 = 4;
7133 var246 = standard___standard__NativeString___to_s_with_length(var244, var245);
7134 var243 = var246;
7135 varonce242 = var243;
7136 }
7137 {
7138 var247 = ((short int (*)(val* self, val* p0))(var241->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var241, var243) /* == on <var241:String>*/;
7139 }
7140 var_248 = var247;
7141 if (var247){
7142 /* <var_ret:MType> isa MNullableType */
7143 cltype250 = type_nit__MNullableType.color;
7144 idtype251 = type_nit__MNullableType.id;
7145 if(cltype250 >= var_ret->type->table_size) {
7146 var249 = 0;
7147 } else {
7148 var249 = var_ret->type->type_table[cltype250] == idtype251;
7149 }
7150 var252 = !var249;
7151 var240 = var252;
7152 } else {
7153 var240 = var_248;
7154 }
7155 var_253 = var240;
7156 if (var240){
7157 {
7158 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
7159 var256 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
7160 if (unlikely(var256 == NULL)) {
7161 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
7162 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
7163 show_backtrace(1);
7164 }
7165 var254 = var256;
7166 RET_LABEL255:(void)0;
7167 }
7168 }
7169 {
7170 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var254) on <var254:AbstractCompiler(SeparateCompiler)> */
7171 var259 = var254->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var254:AbstractCompiler(SeparateCompiler)> */
7172 if (unlikely(var259 == NULL)) {
7173 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
7174 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
7175 show_backtrace(1);
7176 }
7177 var257 = var259;
7178 RET_LABEL258:(void)0;
7179 }
7180 }
7181 {
7182 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var257) on <var257:ModelBuilder> */
7183 var262 = var257->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var257:ModelBuilder> */
7184 if (unlikely(var262 == NULL)) {
7185 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
7186 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
7187 show_backtrace(1);
7188 }
7189 var260 = var262;
7190 RET_LABEL261:(void)0;
7191 }
7192 }
7193 {
7194 { /* Inline abstract_compiler#ToolContext#opt_no_check_attr_isset (var260) on <var260:ToolContext> */
7195 var265 = var260->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_no_check_attr_isset].val; /* _opt_no_check_attr_isset on <var260:ToolContext> */
7196 if (unlikely(var265 == NULL)) {
7197 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_attr_isset");
7198 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 49);
7199 show_backtrace(1);
7200 }
7201 var263 = var265;
7202 RET_LABEL264:(void)0;
7203 }
7204 }
7205 {
7206 { /* Inline opts#Option#value (var263) on <var263:OptionBool> */
7207 var268 = var263->attrs[COLOR_opts__Option___value].val; /* _value on <var263:OptionBool> */
7208 var266 = var268;
7209 RET_LABEL267:(void)0;
7210 }
7211 }
7212 var269 = ((struct instance_standard__Bool*)var266)->value; /* autounbox from nullable Object to Bool */;
7213 var270 = !var269;
7214 var239 = var270;
7215 } else {
7216 var239 = var_253;
7217 }
7218 if (var239){
7219 if (varonce271) {
7220 var272 = varonce271;
7221 } else {
7222 var273 = "if (unlikely(";
7223 var274 = 13;
7224 var275 = standard___standard__NativeString___to_s_with_length(var273, var274);
7225 var272 = var275;
7226 varonce271 = var272;
7227 }
7228 if (varonce276) {
7229 var277 = varonce276;
7230 } else {
7231 var278 = " == NULL)) {";
7232 var279 = 12;
7233 var280 = standard___standard__NativeString___to_s_with_length(var278, var279);
7234 var277 = var280;
7235 varonce276 = var277;
7236 }
7237 var281 = NEW_standard__Array(&type_standard__Array__standard__Object);
7238 { /* var281 = array_instance Array[Object] */
7239 var282 = 3;
7240 var283 = NEW_standard__NativeArray(var282, &type_standard__NativeArray__standard__Object);
7241 ((struct instance_standard__NativeArray*)var283)->values[0] = (val*) var272;
7242 ((struct instance_standard__NativeArray*)var283)->values[1] = (val*) var_res201;
7243 ((struct instance_standard__NativeArray*)var283)->values[2] = (val*) var277;
7244 {
7245 ((void (*)(val* self, val* p0, long p1))(var281->class->vft[COLOR_standard__array__Array__with_native]))(var281, var283, var282) /* with_native on <var281:Array[Object]>*/;
7246 }
7247 }
7248 {
7249 var284 = ((val* (*)(val* self))(var281->class->vft[COLOR_standard__string__Object__to_s]))(var281) /* to_s on <var281:Array[Object]>*/;
7250 }
7251 {
7252 nit___nit__AbstractCompilerVisitor___add(self, var284); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
7253 }
7254 if (varonce285) {
7255 var286 = varonce285;
7256 } else {
7257 var287 = "Uninitialized attribute ";
7258 var288 = 24;
7259 var289 = standard___standard__NativeString___to_s_with_length(var287, var288);
7260 var286 = var289;
7261 varonce285 = var286;
7262 }
7263 {
7264 { /* Inline model#MProperty#name (var_a) on <var_a:MAttribute> */
7265 var292 = var_a->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var_a:MAttribute> */
7266 if (unlikely(var292 == NULL)) {
7267 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
7268 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1741);
7269 show_backtrace(1);
7270 }
7271 var290 = var292;
7272 RET_LABEL291:(void)0;
7273 }
7274 }
7275 var293 = NEW_standard__Array(&type_standard__Array__standard__Object);
7276 { /* var293 = array_instance Array[Object] */
7277 var294 = 2;
7278 var295 = NEW_standard__NativeArray(var294, &type_standard__NativeArray__standard__Object);
7279 ((struct instance_standard__NativeArray*)var295)->values[0] = (val*) var286;
7280 ((struct instance_standard__NativeArray*)var295)->values[1] = (val*) var290;
7281 {
7282 ((void (*)(val* self, val* p0, long p1))(var293->class->vft[COLOR_standard__array__Array__with_native]))(var293, var295, var294) /* with_native on <var293:Array[Object]>*/;
7283 }
7284 }
7285 {
7286 var296 = ((val* (*)(val* self))(var293->class->vft[COLOR_standard__string__Object__to_s]))(var293) /* to_s on <var293:Array[Object]>*/;
7287 }
7288 {
7289 nit___nit__AbstractCompilerVisitor___add_abort(self, var296); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <self:SeparateCompilerVisitor>*/
7290 }
7291 if (varonce297) {
7292 var298 = varonce297;
7293 } else {
7294 var299 = "}";
7295 var300 = 1;
7296 var301 = standard___standard__NativeString___to_s_with_length(var299, var300);
7297 var298 = var301;
7298 varonce297 = var298;
7299 }
7300 {
7301 nit___nit__AbstractCompilerVisitor___add(self, var298); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
7302 }
7303 {
7304 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
7305 var304 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
7306 if (unlikely(var304 == NULL)) {
7307 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
7308 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
7309 show_backtrace(1);
7310 }
7311 var302 = var304;
7312 RET_LABEL303:(void)0;
7313 }
7314 }
7315 {
7316 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var302) on <var302:AbstractCompiler(SeparateCompiler)> */
7317 var307 = var302->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var302:AbstractCompiler(SeparateCompiler)> */
7318 if (unlikely(var307 == NULL)) {
7319 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
7320 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
7321 show_backtrace(1);
7322 }
7323 var305 = var307;
7324 RET_LABEL306:(void)0;
7325 }
7326 }
7327 {
7328 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var305) on <var305:ModelBuilder> */
7329 var310 = var305->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var305:ModelBuilder> */
7330 if (unlikely(var310 == NULL)) {
7331 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
7332 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
7333 show_backtrace(1);
7334 }
7335 var308 = var310;
7336 RET_LABEL309:(void)0;
7337 }
7338 }
7339 {
7340 { /* Inline abstract_compiler#ToolContext#opt_isset_checks_metrics (var308) on <var308:ToolContext> */
7341 var313 = var308->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_isset_checks_metrics].val; /* _opt_isset_checks_metrics on <var308:ToolContext> */
7342 if (unlikely(var313 == NULL)) {
7343 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_isset_checks_metrics");
7344 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 63);
7345 show_backtrace(1);
7346 }
7347 var311 = var313;
7348 RET_LABEL312:(void)0;
7349 }
7350 }
7351 {
7352 { /* Inline opts#Option#value (var311) on <var311:OptionBool> */
7353 var316 = var311->attrs[COLOR_opts__Option___value].val; /* _value on <var311:OptionBool> */
7354 var314 = var316;
7355 RET_LABEL315:(void)0;
7356 }
7357 }
7358 var317 = ((struct instance_standard__Bool*)var314)->value; /* autounbox from nullable Object to Bool */;
7359 if (var317){
7360 {
7361 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
7362 var320 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
7363 if (unlikely(var320 == NULL)) {
7364 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
7365 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
7366 show_backtrace(1);
7367 }
7368 var318 = var320;
7369 RET_LABEL319:(void)0;
7370 }
7371 }
7372 var_321 = var318;
7373 {
7374 { /* Inline separate_compiler#SeparateCompiler#isset_checks_count (var_321) on <var_321:SeparateCompiler> */
7375 var324 = var_321->attrs[COLOR_nit__separate_compiler__SeparateCompiler___isset_checks_count].l; /* _isset_checks_count on <var_321:SeparateCompiler> */
7376 var322 = var324;
7377 RET_LABEL323:(void)0;
7378 }
7379 }
7380 var325 = 1;
7381 {
7382 { /* Inline kernel#Int#+ (var322,var325) on <var322:Int> */
7383 /* Covariant cast for argument 0 (i) <var325:Int> isa OTHER */
7384 /* <var325:Int> isa OTHER */
7385 var328 = 1; /* easy <var325:Int> isa OTHER*/
7386 if (unlikely(!var328)) {
7387 var_class_name331 = type_standard__Int.name;
7388 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name331);
7389 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
7390 show_backtrace(1);
7391 }
7392 var332 = var322 + var325;
7393 var326 = var332;
7394 goto RET_LABEL327;
7395 RET_LABEL327:(void)0;
7396 }
7397 }
7398 {
7399 { /* Inline separate_compiler#SeparateCompiler#isset_checks_count= (var_321,var326) on <var_321:SeparateCompiler> */
7400 var_321->attrs[COLOR_nit__separate_compiler__SeparateCompiler___isset_checks_count].l = var326; /* _isset_checks_count on <var_321:SeparateCompiler> */
7401 RET_LABEL333:(void)0;
7402 }
7403 }
7404 if (varonce334) {
7405 var335 = varonce334;
7406 } else {
7407 var336 = "count_isset_checks++;";
7408 var337 = 21;
7409 var338 = standard___standard__NativeString___to_s_with_length(var336, var337);
7410 var335 = var338;
7411 varonce334 = var335;
7412 }
7413 {
7414 nit___nit__AbstractCompilerVisitor___add(self, var335); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
7415 }
7416 } else {
7417 }
7418 } else {
7419 }
7420 var = var_res201;
7421 goto RET_LABEL;
7422 }
7423 RET_LABEL:;
7424 return var;
7425 }
7426 /* method separate_compiler#SeparateCompilerVisitor#write_attribute for (self: SeparateCompilerVisitor, MAttribute, RuntimeVariable, RuntimeVariable) */
7427 void nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__write_attribute(val* self, val* p0, val* p1, val* p2) {
7428 val* var_a /* var a: MAttribute */;
7429 val* var_recv /* var recv: RuntimeVariable */;
7430 val* var_value /* var value: RuntimeVariable */;
7431 val* var /* : MPropDef */;
7432 val* var2 /* : MPropDef */;
7433 val* var3 /* : nullable MType */;
7434 val* var5 /* : nullable MType */;
7435 val* var_mtype /* var mtype: MType */;
7436 val* var6 /* : MPropDef */;
7437 val* var8 /* : MPropDef */;
7438 val* var9 /* : MClassDef */;
7439 val* var11 /* : MClassDef */;
7440 val* var_intromclassdef /* var intromclassdef: MClassDef */;
7441 val* var12 /* : MClassType */;
7442 val* var14 /* : MClassType */;
7443 val* var15 /* : MClassType */;
7444 val* var17 /* : MClassType */;
7445 val* var18 /* : MModule */;
7446 val* var20 /* : MModule */;
7447 short int var21 /* : Bool */;
7448 val* var22 /* : MType */;
7449 val* var23 /* : RuntimeVariable */;
7450 val* var24 /* : String */;
7451 val* var25 /* : AbstractCompiler */;
7452 val* var27 /* : AbstractCompiler */;
7453 val* var28 /* : ModelBuilder */;
7454 val* var30 /* : ModelBuilder */;
7455 val* var31 /* : ToolContext */;
7456 val* var33 /* : ToolContext */;
7457 val* var34 /* : OptionBool */;
7458 val* var36 /* : OptionBool */;
7459 val* var37 /* : nullable Object */;
7460 val* var39 /* : nullable Object */;
7461 short int var40 /* : Bool */;
7462 static val* varonce;
7463 val* var41 /* : String */;
7464 char* var42 /* : NativeString */;
7465 long var43 /* : Int */;
7466 val* var44 /* : FlatString */;
7467 val* var45 /* : String */;
7468 static val* varonce46;
7469 val* var47 /* : String */;
7470 char* var48 /* : NativeString */;
7471 long var49 /* : Int */;
7472 val* var50 /* : FlatString */;
7473 val* var51 /* : Array[Object] */;
7474 long var52 /* : Int */;
7475 val* var53 /* : NativeArray[Object] */;
7476 val* var54 /* : String */;
7477 val* var_attr /* var attr: String */;
7478 val* var55 /* : String */;
7479 static val* varonce56;
7480 val* var57 /* : String */;
7481 char* var58 /* : NativeString */;
7482 long var59 /* : Int */;
7483 val* var60 /* : FlatString */;
7484 short int var61 /* : Bool */;
7485 val* var_other /* var other: nullable Object */;
7486 short int var63 /* : Bool */;
7487 short int var64 /* : Bool */;
7488 short int var65 /* : Bool */;
7489 int cltype;
7490 int idtype;
7491 static val* varonce66;
7492 val* var67 /* : String */;
7493 char* var68 /* : NativeString */;
7494 long var69 /* : Int */;
7495 val* var70 /* : FlatString */;
7496 static val* varonce71;
7497 val* var72 /* : String */;
7498 char* var73 /* : NativeString */;
7499 long var74 /* : Int */;
7500 val* var75 /* : FlatString */;
7501 val* var76 /* : Array[Object] */;
7502 long var77 /* : Int */;
7503 val* var78 /* : NativeArray[Object] */;
7504 val* var79 /* : String */;
7505 static val* varonce80;
7506 val* var81 /* : String */;
7507 char* var82 /* : NativeString */;
7508 long var83 /* : Int */;
7509 val* var84 /* : FlatString */;
7510 val* var85 /* : String */;
7511 static val* varonce86;
7512 val* var87 /* : String */;
7513 char* var88 /* : NativeString */;
7514 long var89 /* : Int */;
7515 val* var90 /* : FlatString */;
7516 static val* varonce91;
7517 val* var92 /* : String */;
7518 char* var93 /* : NativeString */;
7519 long var94 /* : Int */;
7520 val* var95 /* : FlatString */;
7521 static val* varonce96;
7522 val* var97 /* : String */;
7523 char* var98 /* : NativeString */;
7524 long var99 /* : Int */;
7525 val* var100 /* : FlatString */;
7526 static val* varonce101;
7527 val* var102 /* : String */;
7528 char* var103 /* : NativeString */;
7529 long var104 /* : Int */;
7530 val* var105 /* : FlatString */;
7531 val* var106 /* : String */;
7532 static val* varonce107;
7533 val* var108 /* : String */;
7534 char* var109 /* : NativeString */;
7535 long var110 /* : Int */;
7536 val* var111 /* : FlatString */;
7537 val* var112 /* : Array[Object] */;
7538 long var113 /* : Int */;
7539 val* var114 /* : NativeArray[Object] */;
7540 val* var115 /* : String */;
7541 static val* varonce116;
7542 val* var117 /* : String */;
7543 char* var118 /* : NativeString */;
7544 long var119 /* : Int */;
7545 val* var120 /* : FlatString */;
7546 val* var121 /* : MClassType */;
7547 val* var122 /* : MType */;
7548 val* var123 /* : RuntimeVariable */;
7549 static val* varonce124;
7550 val* var125 /* : String */;
7551 char* var126 /* : NativeString */;
7552 long var127 /* : Int */;
7553 val* var128 /* : FlatString */;
7554 static val* varonce129;
7555 val* var130 /* : String */;
7556 char* var131 /* : NativeString */;
7557 long var132 /* : Int */;
7558 val* var133 /* : FlatString */;
7559 static val* varonce134;
7560 val* var135 /* : String */;
7561 char* var136 /* : NativeString */;
7562 long var137 /* : Int */;
7563 val* var138 /* : FlatString */;
7564 val* var139 /* : String */;
7565 static val* varonce140;
7566 val* var141 /* : String */;
7567 char* var142 /* : NativeString */;
7568 long var143 /* : Int */;
7569 val* var144 /* : FlatString */;
7570 val* var145 /* : Array[Object] */;
7571 long var146 /* : Int */;
7572 val* var147 /* : NativeArray[Object] */;
7573 val* var148 /* : String */;
7574 static val* varonce149;
7575 val* var150 /* : String */;
7576 char* var151 /* : NativeString */;
7577 long var152 /* : Int */;
7578 val* var153 /* : FlatString */;
7579 static val* varonce154;
7580 val* var155 /* : String */;
7581 char* var156 /* : NativeString */;
7582 long var157 /* : Int */;
7583 val* var158 /* : FlatString */;
7584 static val* varonce159;
7585 val* var160 /* : String */;
7586 char* var161 /* : NativeString */;
7587 long var162 /* : Int */;
7588 val* var163 /* : FlatString */;
7589 static val* varonce164;
7590 val* var165 /* : String */;
7591 char* var166 /* : NativeString */;
7592 long var167 /* : Int */;
7593 val* var168 /* : FlatString */;
7594 val* var169 /* : String */;
7595 static val* varonce170;
7596 val* var171 /* : String */;
7597 char* var172 /* : NativeString */;
7598 long var173 /* : Int */;
7599 val* var174 /* : FlatString */;
7600 val* var175 /* : Array[Object] */;
7601 long var176 /* : Int */;
7602 val* var177 /* : NativeArray[Object] */;
7603 val* var178 /* : String */;
7604 static val* varonce179;
7605 val* var180 /* : String */;
7606 char* var181 /* : NativeString */;
7607 long var182 /* : Int */;
7608 val* var183 /* : FlatString */;
7609 val* var184 /* : String */;
7610 static val* varonce185;
7611 val* var186 /* : String */;
7612 char* var187 /* : NativeString */;
7613 long var188 /* : Int */;
7614 val* var189 /* : FlatString */;
7615 val* var190 /* : String */;
7616 static val* varonce191;
7617 val* var192 /* : String */;
7618 char* var193 /* : NativeString */;
7619 long var194 /* : Int */;
7620 val* var195 /* : FlatString */;
7621 static val* varonce196;
7622 val* var197 /* : String */;
7623 char* var198 /* : NativeString */;
7624 long var199 /* : Int */;
7625 val* var200 /* : FlatString */;
7626 static val* varonce201;
7627 val* var202 /* : String */;
7628 char* var203 /* : NativeString */;
7629 long var204 /* : Int */;
7630 val* var205 /* : FlatString */;
7631 val* var206 /* : String */;
7632 static val* varonce207;
7633 val* var208 /* : String */;
7634 char* var209 /* : NativeString */;
7635 long var210 /* : Int */;
7636 val* var211 /* : FlatString */;
7637 val* var212 /* : Array[Object] */;
7638 long var213 /* : Int */;
7639 val* var214 /* : NativeArray[Object] */;
7640 val* var215 /* : String */;
7641 var_a = p0;
7642 var_recv = p1;
7643 var_value = p2;
7644 {
7645 nit___nit__AbstractCompilerVisitor___check_recv_notnull(self, var_recv); /* Direct call abstract_compiler#AbstractCompilerVisitor#check_recv_notnull on <self:SeparateCompilerVisitor>*/
7646 }
7647 {
7648 { /* Inline model#MProperty#intro (var_a) on <var_a:MAttribute> */
7649 var2 = var_a->attrs[COLOR_nit__model__MProperty___intro].val; /* _intro on <var_a:MAttribute> */
7650 if (unlikely(var2 == NULL)) {
7651 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
7652 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1773);
7653 show_backtrace(1);
7654 }
7655 var = var2;
7656 RET_LABEL1:(void)0;
7657 }
7658 }
7659 {
7660 { /* Inline model#MAttributeDef#static_mtype (var) on <var:MPropDef(MAttributeDef)> */
7661 var5 = var->attrs[COLOR_nit__model__MAttributeDef___static_mtype].val; /* _static_mtype on <var:MPropDef(MAttributeDef)> */
7662 var3 = var5;
7663 RET_LABEL4:(void)0;
7664 }
7665 }
7666 if (unlikely(var3 == NULL)) {
7667 PRINT_ERROR("Runtime error: %s", "Cast failed");
7668 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1397);
7669 show_backtrace(1);
7670 }
7671 var_mtype = var3;
7672 {
7673 { /* Inline model#MProperty#intro (var_a) on <var_a:MAttribute> */
7674 var8 = var_a->attrs[COLOR_nit__model__MProperty___intro].val; /* _intro on <var_a:MAttribute> */
7675 if (unlikely(var8 == NULL)) {
7676 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
7677 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1773);
7678 show_backtrace(1);
7679 }
7680 var6 = var8;
7681 RET_LABEL7:(void)0;
7682 }
7683 }
7684 {
7685 { /* Inline model#MPropDef#mclassdef (var6) on <var6:MPropDef(MAttributeDef)> */
7686 var11 = var6->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var6:MPropDef(MAttributeDef)> */
7687 if (unlikely(var11 == NULL)) {
7688 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
7689 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2010);
7690 show_backtrace(1);
7691 }
7692 var9 = var11;
7693 RET_LABEL10:(void)0;
7694 }
7695 }
7696 var_intromclassdef = var9;
7697 {
7698 { /* Inline model#MClassDef#bound_mtype (var_intromclassdef) on <var_intromclassdef:MClassDef> */
7699 var14 = var_intromclassdef->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_intromclassdef:MClassDef> */
7700 if (unlikely(var14 == NULL)) {
7701 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
7702 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
7703 show_backtrace(1);
7704 }
7705 var12 = var14;
7706 RET_LABEL13:(void)0;
7707 }
7708 }
7709 {
7710 { /* Inline model#MClassDef#bound_mtype (var_intromclassdef) on <var_intromclassdef:MClassDef> */
7711 var17 = var_intromclassdef->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_intromclassdef:MClassDef> */
7712 if (unlikely(var17 == NULL)) {
7713 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
7714 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
7715 show_backtrace(1);
7716 }
7717 var15 = var17;
7718 RET_LABEL16:(void)0;
7719 }
7720 }
7721 {
7722 { /* Inline model#MClassDef#mmodule (var_intromclassdef) on <var_intromclassdef:MClassDef> */
7723 var20 = var_intromclassdef->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var_intromclassdef:MClassDef> */
7724 if (unlikely(var20 == NULL)) {
7725 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
7726 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 489);
7727 show_backtrace(1);
7728 }
7729 var18 = var20;
7730 RET_LABEL19:(void)0;
7731 }
7732 }
7733 var21 = 1;
7734 {
7735 var22 = ((val* (*)(val* self, val* p0, val* p1, val* p2, short int p3))(var_mtype->class->vft[COLOR_nit__model__MType__resolve_for]))(var_mtype, var12, var15, var18, var21) /* resolve_for on <var_mtype:MType>*/;
7736 }
7737 var_mtype = var22;
7738 {
7739 var23 = nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__autobox(self, var_value, var_mtype);
7740 }
7741 var_value = var23;
7742 {
7743 var24 = nit__separate_compiler___MEntity___const_color(var_a);
7744 }
7745 {
7746 nit___nit__AbstractCompilerVisitor___require_declaration(self, var24); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
7747 }
7748 {
7749 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
7750 var27 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
7751 if (unlikely(var27 == NULL)) {
7752 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
7753 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
7754 show_backtrace(1);
7755 }
7756 var25 = var27;
7757 RET_LABEL26:(void)0;
7758 }
7759 }
7760 {
7761 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var25) on <var25:AbstractCompiler(SeparateCompiler)> */
7762 var30 = var25->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var25:AbstractCompiler(SeparateCompiler)> */
7763 if (unlikely(var30 == NULL)) {
7764 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
7765 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
7766 show_backtrace(1);
7767 }
7768 var28 = var30;
7769 RET_LABEL29:(void)0;
7770 }
7771 }
7772 {
7773 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var28) on <var28:ModelBuilder> */
7774 var33 = var28->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var28:ModelBuilder> */
7775 if (unlikely(var33 == NULL)) {
7776 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
7777 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
7778 show_backtrace(1);
7779 }
7780 var31 = var33;
7781 RET_LABEL32:(void)0;
7782 }
7783 }
7784 {
7785 { /* Inline separate_compiler#ToolContext#opt_no_union_attribute (var31) on <var31:ToolContext> */
7786 var36 = var31->attrs[COLOR_nit__separate_compiler__ToolContext___opt_no_union_attribute].val; /* _opt_no_union_attribute on <var31:ToolContext> */
7787 if (unlikely(var36 == NULL)) {
7788 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_union_attribute");
7789 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 28);
7790 show_backtrace(1);
7791 }
7792 var34 = var36;
7793 RET_LABEL35:(void)0;
7794 }
7795 }
7796 {
7797 { /* Inline opts#Option#value (var34) on <var34:OptionBool> */
7798 var39 = var34->attrs[COLOR_opts__Option___value].val; /* _value on <var34:OptionBool> */
7799 var37 = var39;
7800 RET_LABEL38:(void)0;
7801 }
7802 }
7803 var40 = ((struct instance_standard__Bool*)var37)->value; /* autounbox from nullable Object to Bool */;
7804 if (var40){
7805 if (varonce) {
7806 var41 = varonce;
7807 } else {
7808 var42 = "->attrs[";
7809 var43 = 8;
7810 var44 = standard___standard__NativeString___to_s_with_length(var42, var43);
7811 var41 = var44;
7812 varonce = var41;
7813 }
7814 {
7815 var45 = nit__separate_compiler___MEntity___const_color(var_a);
7816 }
7817 if (varonce46) {
7818 var47 = varonce46;
7819 } else {
7820 var48 = "]";
7821 var49 = 1;
7822 var50 = standard___standard__NativeString___to_s_with_length(var48, var49);
7823 var47 = var50;
7824 varonce46 = var47;
7825 }
7826 var51 = NEW_standard__Array(&type_standard__Array__standard__Object);
7827 { /* var51 = array_instance Array[Object] */
7828 var52 = 4;
7829 var53 = NEW_standard__NativeArray(var52, &type_standard__NativeArray__standard__Object);
7830 ((struct instance_standard__NativeArray*)var53)->values[0] = (val*) var_recv;
7831 ((struct instance_standard__NativeArray*)var53)->values[1] = (val*) var41;
7832 ((struct instance_standard__NativeArray*)var53)->values[2] = (val*) var45;
7833 ((struct instance_standard__NativeArray*)var53)->values[3] = (val*) var47;
7834 {
7835 ((void (*)(val* self, val* p0, long p1))(var51->class->vft[COLOR_standard__array__Array__with_native]))(var51, var53, var52) /* with_native on <var51:Array[Object]>*/;
7836 }
7837 }
7838 {
7839 var54 = ((val* (*)(val* self))(var51->class->vft[COLOR_standard__string__Object__to_s]))(var51) /* to_s on <var51:Array[Object]>*/;
7840 }
7841 var_attr = var54;
7842 {
7843 var55 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
7844 }
7845 if (varonce56) {
7846 var57 = varonce56;
7847 } else {
7848 var58 = "val*";
7849 var59 = 4;
7850 var60 = standard___standard__NativeString___to_s_with_length(var58, var59);
7851 var57 = var60;
7852 varonce56 = var57;
7853 }
7854 {
7855 { /* Inline kernel#Object#!= (var55,var57) on <var55:String> */
7856 var_other = var57;
7857 {
7858 var63 = ((short int (*)(val* self, val* p0))(var55->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var55, var_other) /* == on <var55:String>*/;
7859 }
7860 var64 = !var63;
7861 var61 = var64;
7862 goto RET_LABEL62;
7863 RET_LABEL62:(void)0;
7864 }
7865 }
7866 if (var61){
7867 /* <var_mtype:MType> isa MClassType */
7868 cltype = type_nit__MClassType.color;
7869 idtype = type_nit__MClassType.id;
7870 if(cltype >= var_mtype->type->table_size) {
7871 var65 = 0;
7872 } else {
7873 var65 = var_mtype->type->type_table[cltype] == idtype;
7874 }
7875 if (unlikely(!var65)) {
7876 PRINT_ERROR("Runtime error: %s", "Assert failed");
7877 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1408);
7878 show_backtrace(1);
7879 }
7880 if (varonce66) {
7881 var67 = varonce66;
7882 } else {
7883 var68 = "if (";
7884 var69 = 4;
7885 var70 = standard___standard__NativeString___to_s_with_length(var68, var69);
7886 var67 = var70;
7887 varonce66 = var67;
7888 }
7889 if (varonce71) {
7890 var72 = varonce71;
7891 } else {
7892 var73 = " != NULL) {";
7893 var74 = 11;
7894 var75 = standard___standard__NativeString___to_s_with_length(var73, var74);
7895 var72 = var75;
7896 varonce71 = var72;
7897 }
7898 var76 = NEW_standard__Array(&type_standard__Array__standard__Object);
7899 { /* var76 = array_instance Array[Object] */
7900 var77 = 3;
7901 var78 = NEW_standard__NativeArray(var77, &type_standard__NativeArray__standard__Object);
7902 ((struct instance_standard__NativeArray*)var78)->values[0] = (val*) var67;
7903 ((struct instance_standard__NativeArray*)var78)->values[1] = (val*) var_attr;
7904 ((struct instance_standard__NativeArray*)var78)->values[2] = (val*) var72;
7905 {
7906 ((void (*)(val* self, val* p0, long p1))(var76->class->vft[COLOR_standard__array__Array__with_native]))(var76, var78, var77) /* with_native on <var76:Array[Object]>*/;
7907 }
7908 }
7909 {
7910 var79 = ((val* (*)(val* self))(var76->class->vft[COLOR_standard__string__Object__to_s]))(var76) /* to_s on <var76:Array[Object]>*/;
7911 }
7912 {
7913 nit___nit__AbstractCompilerVisitor___add(self, var79); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
7914 }
7915 if (varonce80) {
7916 var81 = varonce80;
7917 } else {
7918 var82 = "((struct instance_";
7919 var83 = 18;
7920 var84 = standard___standard__NativeString___to_s_with_length(var82, var83);
7921 var81 = var84;
7922 varonce80 = var81;
7923 }
7924 {
7925 var85 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var_mtype) /* c_name on <var_mtype:MType(MClassType)>*/;
7926 }
7927 if (varonce86) {
7928 var87 = varonce86;
7929 } else {
7930 var88 = "*)";
7931 var89 = 2;
7932 var90 = standard___standard__NativeString___to_s_with_length(var88, var89);
7933 var87 = var90;
7934 varonce86 = var87;
7935 }
7936 if (varonce91) {
7937 var92 = varonce91;
7938 } else {
7939 var93 = ")->value = ";
7940 var94 = 11;
7941 var95 = standard___standard__NativeString___to_s_with_length(var93, var94);
7942 var92 = var95;
7943 varonce91 = var92;
7944 }
7945 if (varonce96) {
7946 var97 = varonce96;
7947 } else {
7948 var98 = "; /* ";
7949 var99 = 5;
7950 var100 = standard___standard__NativeString___to_s_with_length(var98, var99);
7951 var97 = var100;
7952 varonce96 = var97;
7953 }
7954 if (varonce101) {
7955 var102 = varonce101;
7956 } else {
7957 var103 = " on ";
7958 var104 = 4;
7959 var105 = standard___standard__NativeString___to_s_with_length(var103, var104);
7960 var102 = var105;
7961 varonce101 = var102;
7962 }
7963 {
7964 var106 = nit___nit__RuntimeVariable___standard__string__Object__inspect(var_recv);
7965 }
7966 if (varonce107) {
7967 var108 = varonce107;
7968 } else {
7969 var109 = " */";
7970 var110 = 3;
7971 var111 = standard___standard__NativeString___to_s_with_length(var109, var110);
7972 var108 = var111;
7973 varonce107 = var108;
7974 }
7975 var112 = NEW_standard__Array(&type_standard__Array__standard__Object);
7976 { /* var112 = array_instance Array[Object] */
7977 var113 = 11;
7978 var114 = NEW_standard__NativeArray(var113, &type_standard__NativeArray__standard__Object);
7979 ((struct instance_standard__NativeArray*)var114)->values[0] = (val*) var81;
7980 ((struct instance_standard__NativeArray*)var114)->values[1] = (val*) var85;
7981 ((struct instance_standard__NativeArray*)var114)->values[2] = (val*) var87;
7982 ((struct instance_standard__NativeArray*)var114)->values[3] = (val*) var_attr;
7983 ((struct instance_standard__NativeArray*)var114)->values[4] = (val*) var92;
7984 ((struct instance_standard__NativeArray*)var114)->values[5] = (val*) var_value;
7985 ((struct instance_standard__NativeArray*)var114)->values[6] = (val*) var97;
7986 ((struct instance_standard__NativeArray*)var114)->values[7] = (val*) var_a;
7987 ((struct instance_standard__NativeArray*)var114)->values[8] = (val*) var102;
7988 ((struct instance_standard__NativeArray*)var114)->values[9] = (val*) var106;
7989 ((struct instance_standard__NativeArray*)var114)->values[10] = (val*) var108;
7990 {
7991 ((void (*)(val* self, val* p0, long p1))(var112->class->vft[COLOR_standard__array__Array__with_native]))(var112, var114, var113) /* with_native on <var112:Array[Object]>*/;
7992 }
7993 }
7994 {
7995 var115 = ((val* (*)(val* self))(var112->class->vft[COLOR_standard__string__Object__to_s]))(var112) /* to_s on <var112:Array[Object]>*/;
7996 }
7997 {
7998 nit___nit__AbstractCompilerVisitor___add(self, var115); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
7999 }
8000 if (varonce116) {
8001 var117 = varonce116;
8002 } else {
8003 var118 = "} else {";
8004 var119 = 8;
8005 var120 = standard___standard__NativeString___to_s_with_length(var118, var119);
8006 var117 = var120;
8007 varonce116 = var117;
8008 }
8009 {
8010 nit___nit__AbstractCompilerVisitor___add(self, var117); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8011 }
8012 {
8013 var121 = nit___nit__AbstractCompilerVisitor___object_type(self);
8014 }
8015 {
8016 var122 = nit___nit__MType___as_nullable(var121);
8017 }
8018 {
8019 var123 = nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__autobox(self, var_value, var122);
8020 }
8021 var_value = var123;
8022 if (varonce124) {
8023 var125 = varonce124;
8024 } else {
8025 var126 = " = ";
8026 var127 = 3;
8027 var128 = standard___standard__NativeString___to_s_with_length(var126, var127);
8028 var125 = var128;
8029 varonce124 = var125;
8030 }
8031 if (varonce129) {
8032 var130 = varonce129;
8033 } else {
8034 var131 = "; /* ";
8035 var132 = 5;
8036 var133 = standard___standard__NativeString___to_s_with_length(var131, var132);
8037 var130 = var133;
8038 varonce129 = var130;
8039 }
8040 if (varonce134) {
8041 var135 = varonce134;
8042 } else {
8043 var136 = " on ";
8044 var137 = 4;
8045 var138 = standard___standard__NativeString___to_s_with_length(var136, var137);
8046 var135 = var138;
8047 varonce134 = var135;
8048 }
8049 {
8050 var139 = nit___nit__RuntimeVariable___standard__string__Object__inspect(var_recv);
8051 }
8052 if (varonce140) {
8053 var141 = varonce140;
8054 } else {
8055 var142 = " */";
8056 var143 = 3;
8057 var144 = standard___standard__NativeString___to_s_with_length(var142, var143);
8058 var141 = var144;
8059 varonce140 = var141;
8060 }
8061 var145 = NEW_standard__Array(&type_standard__Array__standard__Object);
8062 { /* var145 = array_instance Array[Object] */
8063 var146 = 8;
8064 var147 = NEW_standard__NativeArray(var146, &type_standard__NativeArray__standard__Object);
8065 ((struct instance_standard__NativeArray*)var147)->values[0] = (val*) var_attr;
8066 ((struct instance_standard__NativeArray*)var147)->values[1] = (val*) var125;
8067 ((struct instance_standard__NativeArray*)var147)->values[2] = (val*) var_value;
8068 ((struct instance_standard__NativeArray*)var147)->values[3] = (val*) var130;
8069 ((struct instance_standard__NativeArray*)var147)->values[4] = (val*) var_a;
8070 ((struct instance_standard__NativeArray*)var147)->values[5] = (val*) var135;
8071 ((struct instance_standard__NativeArray*)var147)->values[6] = (val*) var139;
8072 ((struct instance_standard__NativeArray*)var147)->values[7] = (val*) var141;
8073 {
8074 ((void (*)(val* self, val* p0, long p1))(var145->class->vft[COLOR_standard__array__Array__with_native]))(var145, var147, var146) /* with_native on <var145:Array[Object]>*/;
8075 }
8076 }
8077 {
8078 var148 = ((val* (*)(val* self))(var145->class->vft[COLOR_standard__string__Object__to_s]))(var145) /* to_s on <var145:Array[Object]>*/;
8079 }
8080 {
8081 nit___nit__AbstractCompilerVisitor___add(self, var148); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8082 }
8083 if (varonce149) {
8084 var150 = varonce149;
8085 } else {
8086 var151 = "}";
8087 var152 = 1;
8088 var153 = standard___standard__NativeString___to_s_with_length(var151, var152);
8089 var150 = var153;
8090 varonce149 = var150;
8091 }
8092 {
8093 nit___nit__AbstractCompilerVisitor___add(self, var150); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8094 }
8095 } else {
8096 if (varonce154) {
8097 var155 = varonce154;
8098 } else {
8099 var156 = " = ";
8100 var157 = 3;
8101 var158 = standard___standard__NativeString___to_s_with_length(var156, var157);
8102 var155 = var158;
8103 varonce154 = var155;
8104 }
8105 if (varonce159) {
8106 var160 = varonce159;
8107 } else {
8108 var161 = "; /* ";
8109 var162 = 5;
8110 var163 = standard___standard__NativeString___to_s_with_length(var161, var162);
8111 var160 = var163;
8112 varonce159 = var160;
8113 }
8114 if (varonce164) {
8115 var165 = varonce164;
8116 } else {
8117 var166 = " on ";
8118 var167 = 4;
8119 var168 = standard___standard__NativeString___to_s_with_length(var166, var167);
8120 var165 = var168;
8121 varonce164 = var165;
8122 }
8123 {
8124 var169 = nit___nit__RuntimeVariable___standard__string__Object__inspect(var_recv);
8125 }
8126 if (varonce170) {
8127 var171 = varonce170;
8128 } else {
8129 var172 = " */";
8130 var173 = 3;
8131 var174 = standard___standard__NativeString___to_s_with_length(var172, var173);
8132 var171 = var174;
8133 varonce170 = var171;
8134 }
8135 var175 = NEW_standard__Array(&type_standard__Array__standard__Object);
8136 { /* var175 = array_instance Array[Object] */
8137 var176 = 8;
8138 var177 = NEW_standard__NativeArray(var176, &type_standard__NativeArray__standard__Object);
8139 ((struct instance_standard__NativeArray*)var177)->values[0] = (val*) var_attr;
8140 ((struct instance_standard__NativeArray*)var177)->values[1] = (val*) var155;
8141 ((struct instance_standard__NativeArray*)var177)->values[2] = (val*) var_value;
8142 ((struct instance_standard__NativeArray*)var177)->values[3] = (val*) var160;
8143 ((struct instance_standard__NativeArray*)var177)->values[4] = (val*) var_a;
8144 ((struct instance_standard__NativeArray*)var177)->values[5] = (val*) var165;
8145 ((struct instance_standard__NativeArray*)var177)->values[6] = (val*) var169;
8146 ((struct instance_standard__NativeArray*)var177)->values[7] = (val*) var171;
8147 {
8148 ((void (*)(val* self, val* p0, long p1))(var175->class->vft[COLOR_standard__array__Array__with_native]))(var175, var177, var176) /* with_native on <var175:Array[Object]>*/;
8149 }
8150 }
8151 {
8152 var178 = ((val* (*)(val* self))(var175->class->vft[COLOR_standard__string__Object__to_s]))(var175) /* to_s on <var175:Array[Object]>*/;
8153 }
8154 {
8155 nit___nit__AbstractCompilerVisitor___add(self, var178); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8156 }
8157 }
8158 } else {
8159 if (varonce179) {
8160 var180 = varonce179;
8161 } else {
8162 var181 = "->attrs[";
8163 var182 = 8;
8164 var183 = standard___standard__NativeString___to_s_with_length(var181, var182);
8165 var180 = var183;
8166 varonce179 = var180;
8167 }
8168 {
8169 var184 = nit__separate_compiler___MEntity___const_color(var_a);
8170 }
8171 if (varonce185) {
8172 var186 = varonce185;
8173 } else {
8174 var187 = "].";
8175 var188 = 2;
8176 var189 = standard___standard__NativeString___to_s_with_length(var187, var188);
8177 var186 = var189;
8178 varonce185 = var186;
8179 }
8180 {
8181 var190 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__abstract_compiler__MType__ctypename]))(var_mtype) /* ctypename on <var_mtype:MType>*/;
8182 }
8183 if (varonce191) {
8184 var192 = varonce191;
8185 } else {
8186 var193 = " = ";
8187 var194 = 3;
8188 var195 = standard___standard__NativeString___to_s_with_length(var193, var194);
8189 var192 = var195;
8190 varonce191 = var192;
8191 }
8192 if (varonce196) {
8193 var197 = varonce196;
8194 } else {
8195 var198 = "; /* ";
8196 var199 = 5;
8197 var200 = standard___standard__NativeString___to_s_with_length(var198, var199);
8198 var197 = var200;
8199 varonce196 = var197;
8200 }
8201 if (varonce201) {
8202 var202 = varonce201;
8203 } else {
8204 var203 = " on ";
8205 var204 = 4;
8206 var205 = standard___standard__NativeString___to_s_with_length(var203, var204);
8207 var202 = var205;
8208 varonce201 = var202;
8209 }
8210 {
8211 var206 = nit___nit__RuntimeVariable___standard__string__Object__inspect(var_recv);
8212 }
8213 if (varonce207) {
8214 var208 = varonce207;
8215 } else {
8216 var209 = " */";
8217 var210 = 3;
8218 var211 = standard___standard__NativeString___to_s_with_length(var209, var210);
8219 var208 = var211;
8220 varonce207 = var208;
8221 }
8222 var212 = NEW_standard__Array(&type_standard__Array__standard__Object);
8223 { /* var212 = array_instance Array[Object] */
8224 var213 = 12;
8225 var214 = NEW_standard__NativeArray(var213, &type_standard__NativeArray__standard__Object);
8226 ((struct instance_standard__NativeArray*)var214)->values[0] = (val*) var_recv;
8227 ((struct instance_standard__NativeArray*)var214)->values[1] = (val*) var180;
8228 ((struct instance_standard__NativeArray*)var214)->values[2] = (val*) var184;
8229 ((struct instance_standard__NativeArray*)var214)->values[3] = (val*) var186;
8230 ((struct instance_standard__NativeArray*)var214)->values[4] = (val*) var190;
8231 ((struct instance_standard__NativeArray*)var214)->values[5] = (val*) var192;
8232 ((struct instance_standard__NativeArray*)var214)->values[6] = (val*) var_value;
8233 ((struct instance_standard__NativeArray*)var214)->values[7] = (val*) var197;
8234 ((struct instance_standard__NativeArray*)var214)->values[8] = (val*) var_a;
8235 ((struct instance_standard__NativeArray*)var214)->values[9] = (val*) var202;
8236 ((struct instance_standard__NativeArray*)var214)->values[10] = (val*) var206;
8237 ((struct instance_standard__NativeArray*)var214)->values[11] = (val*) var208;
8238 {
8239 ((void (*)(val* self, val* p0, long p1))(var212->class->vft[COLOR_standard__array__Array__with_native]))(var212, var214, var213) /* with_native on <var212:Array[Object]>*/;
8240 }
8241 }
8242 {
8243 var215 = ((val* (*)(val* self))(var212->class->vft[COLOR_standard__string__Object__to_s]))(var212) /* to_s on <var212:Array[Object]>*/;
8244 }
8245 {
8246 nit___nit__AbstractCompilerVisitor___add(self, var215); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8247 }
8248 }
8249 RET_LABEL:;
8250 }
8251 /* method separate_compiler#SeparateCompilerVisitor#hardening_live_open_type for (self: SeparateCompilerVisitor, MType) */
8252 void nit___nit__SeparateCompilerVisitor___hardening_live_open_type(val* self, val* p0) {
8253 val* var_mtype /* var mtype: MType */;
8254 val* var /* : AbstractCompiler */;
8255 val* var2 /* : AbstractCompiler */;
8256 val* var3 /* : ModelBuilder */;
8257 val* var5 /* : ModelBuilder */;
8258 val* var6 /* : ToolContext */;
8259 val* var8 /* : ToolContext */;
8260 val* var9 /* : OptionBool */;
8261 val* var11 /* : OptionBool */;
8262 val* var12 /* : nullable Object */;
8263 val* var14 /* : nullable Object */;
8264 short int var15 /* : Bool */;
8265 short int var16 /* : Bool */;
8266 val* var17 /* : String */;
8267 val* var18 /* : String */;
8268 val* var_col /* var col: String */;
8269 static val* varonce;
8270 val* var19 /* : String */;
8271 char* var20 /* : NativeString */;
8272 long var21 /* : Int */;
8273 val* var22 /* : FlatString */;
8274 static val* varonce23;
8275 val* var24 /* : String */;
8276 char* var25 /* : NativeString */;
8277 long var26 /* : Int */;
8278 val* var27 /* : FlatString */;
8279 val* var28 /* : Array[Object] */;
8280 long var29 /* : Int */;
8281 val* var30 /* : NativeArray[Object] */;
8282 val* var31 /* : String */;
8283 static val* varonce32;
8284 val* var33 /* : String */;
8285 char* var34 /* : NativeString */;
8286 long var35 /* : Int */;
8287 val* var36 /* : FlatString */;
8288 val* var37 /* : String */;
8289 val* var38 /* : String */;
8290 static val* varonce39;
8291 val* var40 /* : String */;
8292 char* var41 /* : NativeString */;
8293 long var42 /* : Int */;
8294 val* var43 /* : FlatString */;
8295 val* var44 /* : Array[Object] */;
8296 long var45 /* : Int */;
8297 val* var46 /* : NativeArray[Object] */;
8298 val* var47 /* : String */;
8299 static val* varonce48;
8300 val* var49 /* : String */;
8301 char* var50 /* : NativeString */;
8302 long var51 /* : Int */;
8303 val* var52 /* : FlatString */;
8304 static val* varonce53;
8305 val* var54 /* : String */;
8306 char* var55 /* : NativeString */;
8307 long var56 /* : Int */;
8308 val* var57 /* : FlatString */;
8309 var_mtype = p0;
8310 {
8311 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
8312 var2 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
8313 if (unlikely(var2 == NULL)) {
8314 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
8315 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
8316 show_backtrace(1);
8317 }
8318 var = var2;
8319 RET_LABEL1:(void)0;
8320 }
8321 }
8322 {
8323 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var) on <var:AbstractCompiler(SeparateCompiler)> */
8324 var5 = var->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var:AbstractCompiler(SeparateCompiler)> */
8325 if (unlikely(var5 == NULL)) {
8326 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
8327 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
8328 show_backtrace(1);
8329 }
8330 var3 = var5;
8331 RET_LABEL4:(void)0;
8332 }
8333 }
8334 {
8335 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var3) on <var3:ModelBuilder> */
8336 var8 = var3->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var3:ModelBuilder> */
8337 if (unlikely(var8 == NULL)) {
8338 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
8339 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
8340 show_backtrace(1);
8341 }
8342 var6 = var8;
8343 RET_LABEL7:(void)0;
8344 }
8345 }
8346 {
8347 { /* Inline abstract_compiler#ToolContext#opt_hardening (var6) on <var6:ToolContext> */
8348 var11 = var6->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_hardening].val; /* _opt_hardening on <var6:ToolContext> */
8349 if (unlikely(var11 == NULL)) {
8350 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_hardening");
8351 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 45);
8352 show_backtrace(1);
8353 }
8354 var9 = var11;
8355 RET_LABEL10:(void)0;
8356 }
8357 }
8358 {
8359 { /* Inline opts#Option#value (var9) on <var9:OptionBool> */
8360 var14 = var9->attrs[COLOR_opts__Option___value].val; /* _value on <var9:OptionBool> */
8361 var12 = var14;
8362 RET_LABEL13:(void)0;
8363 }
8364 }
8365 var15 = ((struct instance_standard__Bool*)var12)->value; /* autounbox from nullable Object to Bool */;
8366 var16 = !var15;
8367 if (var16){
8368 goto RET_LABEL;
8369 } else {
8370 }
8371 {
8372 var17 = nit__separate_compiler___MEntity___const_color(var_mtype);
8373 }
8374 {
8375 nit___nit__AbstractCompilerVisitor___require_declaration(self, var17); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
8376 }
8377 {
8378 var18 = nit__separate_compiler___MEntity___const_color(var_mtype);
8379 }
8380 var_col = var18;
8381 if (varonce) {
8382 var19 = varonce;
8383 } else {
8384 var20 = "if(";
8385 var21 = 3;
8386 var22 = standard___standard__NativeString___to_s_with_length(var20, var21);
8387 var19 = var22;
8388 varonce = var19;
8389 }
8390 if (varonce23) {
8391 var24 = varonce23;
8392 } else {
8393 var25 = " == -1) {";
8394 var26 = 9;
8395 var27 = standard___standard__NativeString___to_s_with_length(var25, var26);
8396 var24 = var27;
8397 varonce23 = var24;
8398 }
8399 var28 = NEW_standard__Array(&type_standard__Array__standard__Object);
8400 { /* var28 = array_instance Array[Object] */
8401 var29 = 3;
8402 var30 = NEW_standard__NativeArray(var29, &type_standard__NativeArray__standard__Object);
8403 ((struct instance_standard__NativeArray*)var30)->values[0] = (val*) var19;
8404 ((struct instance_standard__NativeArray*)var30)->values[1] = (val*) var_col;
8405 ((struct instance_standard__NativeArray*)var30)->values[2] = (val*) var24;
8406 {
8407 ((void (*)(val* self, val* p0, long p1))(var28->class->vft[COLOR_standard__array__Array__with_native]))(var28, var30, var29) /* with_native on <var28:Array[Object]>*/;
8408 }
8409 }
8410 {
8411 var31 = ((val* (*)(val* self))(var28->class->vft[COLOR_standard__string__Object__to_s]))(var28) /* to_s on <var28:Array[Object]>*/;
8412 }
8413 {
8414 nit___nit__AbstractCompilerVisitor___add(self, var31); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8415 }
8416 if (varonce32) {
8417 var33 = varonce32;
8418 } else {
8419 var34 = "PRINT_ERROR(\"Resolution of a dead open type: %s\\n\", \"";
8420 var35 = 53;
8421 var36 = standard___standard__NativeString___to_s_with_length(var34, var35);
8422 var33 = var36;
8423 varonce32 = var33;
8424 }
8425 {
8426 var37 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_standard__string__Object__to_s]))(var_mtype) /* to_s on <var_mtype:MType>*/;
8427 }
8428 {
8429 var38 = standard___standard__Text___escape_to_c(var37);
8430 }
8431 if (varonce39) {
8432 var40 = varonce39;
8433 } else {
8434 var41 = "\");";
8435 var42 = 3;
8436 var43 = standard___standard__NativeString___to_s_with_length(var41, var42);
8437 var40 = var43;
8438 varonce39 = var40;
8439 }
8440 var44 = NEW_standard__Array(&type_standard__Array__standard__Object);
8441 { /* var44 = array_instance Array[Object] */
8442 var45 = 3;
8443 var46 = NEW_standard__NativeArray(var45, &type_standard__NativeArray__standard__Object);
8444 ((struct instance_standard__NativeArray*)var46)->values[0] = (val*) var33;
8445 ((struct instance_standard__NativeArray*)var46)->values[1] = (val*) var38;
8446 ((struct instance_standard__NativeArray*)var46)->values[2] = (val*) var40;
8447 {
8448 ((void (*)(val* self, val* p0, long p1))(var44->class->vft[COLOR_standard__array__Array__with_native]))(var44, var46, var45) /* with_native on <var44:Array[Object]>*/;
8449 }
8450 }
8451 {
8452 var47 = ((val* (*)(val* self))(var44->class->vft[COLOR_standard__string__Object__to_s]))(var44) /* to_s on <var44:Array[Object]>*/;
8453 }
8454 {
8455 nit___nit__AbstractCompilerVisitor___add(self, var47); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8456 }
8457 if (varonce48) {
8458 var49 = varonce48;
8459 } else {
8460 var50 = "open type dead";
8461 var51 = 14;
8462 var52 = standard___standard__NativeString___to_s_with_length(var50, var51);
8463 var49 = var52;
8464 varonce48 = var49;
8465 }
8466 {
8467 nit___nit__AbstractCompilerVisitor___add_abort(self, var49); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <self:SeparateCompilerVisitor>*/
8468 }
8469 if (varonce53) {
8470 var54 = varonce53;
8471 } else {
8472 var55 = "}";
8473 var56 = 1;
8474 var57 = standard___standard__NativeString___to_s_with_length(var55, var56);
8475 var54 = var57;
8476 varonce53 = var54;
8477 }
8478 {
8479 nit___nit__AbstractCompilerVisitor___add(self, var54); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8480 }
8481 RET_LABEL:;
8482 }
8483 /* method separate_compiler#SeparateCompilerVisitor#hardening_cast_type for (self: SeparateCompilerVisitor, String) */
8484 void nit___nit__SeparateCompilerVisitor___hardening_cast_type(val* self, val* p0) {
8485 val* var_t /* var t: String */;
8486 val* var /* : AbstractCompiler */;
8487 val* var2 /* : AbstractCompiler */;
8488 val* var3 /* : ModelBuilder */;
8489 val* var5 /* : ModelBuilder */;
8490 val* var6 /* : ToolContext */;
8491 val* var8 /* : ToolContext */;
8492 val* var9 /* : OptionBool */;
8493 val* var11 /* : OptionBool */;
8494 val* var12 /* : nullable Object */;
8495 val* var14 /* : nullable Object */;
8496 short int var15 /* : Bool */;
8497 short int var16 /* : Bool */;
8498 static val* varonce;
8499 val* var17 /* : String */;
8500 char* var18 /* : NativeString */;
8501 long var19 /* : Int */;
8502 val* var20 /* : FlatString */;
8503 static val* varonce21;
8504 val* var22 /* : String */;
8505 char* var23 /* : NativeString */;
8506 long var24 /* : Int */;
8507 val* var25 /* : FlatString */;
8508 val* var26 /* : Array[Object] */;
8509 long var27 /* : Int */;
8510 val* var28 /* : NativeArray[Object] */;
8511 val* var29 /* : String */;
8512 static val* varonce30;
8513 val* var31 /* : String */;
8514 char* var32 /* : NativeString */;
8515 long var33 /* : Int */;
8516 val* var34 /* : FlatString */;
8517 static val* varonce35;
8518 val* var36 /* : String */;
8519 char* var37 /* : NativeString */;
8520 long var38 /* : Int */;
8521 val* var39 /* : FlatString */;
8522 static val* varonce40;
8523 val* var41 /* : String */;
8524 char* var42 /* : NativeString */;
8525 long var43 /* : Int */;
8526 val* var44 /* : FlatString */;
8527 static val* varonce45;
8528 val* var46 /* : String */;
8529 char* var47 /* : NativeString */;
8530 long var48 /* : Int */;
8531 val* var49 /* : FlatString */;
8532 static val* varonce50;
8533 val* var51 /* : String */;
8534 char* var52 /* : NativeString */;
8535 long var53 /* : Int */;
8536 val* var54 /* : FlatString */;
8537 val* var55 /* : Array[Object] */;
8538 long var56 /* : Int */;
8539 val* var57 /* : NativeArray[Object] */;
8540 val* var58 /* : String */;
8541 static val* varonce59;
8542 val* var60 /* : String */;
8543 char* var61 /* : NativeString */;
8544 long var62 /* : Int */;
8545 val* var63 /* : FlatString */;
8546 static val* varonce64;
8547 val* var65 /* : String */;
8548 char* var66 /* : NativeString */;
8549 long var67 /* : Int */;
8550 val* var68 /* : FlatString */;
8551 val* var69 /* : Array[Object] */;
8552 long var70 /* : Int */;
8553 val* var71 /* : NativeArray[Object] */;
8554 val* var72 /* : String */;
8555 static val* varonce73;
8556 val* var74 /* : String */;
8557 char* var75 /* : NativeString */;
8558 long var76 /* : Int */;
8559 val* var77 /* : FlatString */;
8560 static val* varonce78;
8561 val* var79 /* : String */;
8562 char* var80 /* : NativeString */;
8563 long var81 /* : Int */;
8564 val* var82 /* : FlatString */;
8565 var_t = p0;
8566 {
8567 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
8568 var2 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
8569 if (unlikely(var2 == NULL)) {
8570 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
8571 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
8572 show_backtrace(1);
8573 }
8574 var = var2;
8575 RET_LABEL1:(void)0;
8576 }
8577 }
8578 {
8579 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var) on <var:AbstractCompiler(SeparateCompiler)> */
8580 var5 = var->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var:AbstractCompiler(SeparateCompiler)> */
8581 if (unlikely(var5 == NULL)) {
8582 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
8583 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
8584 show_backtrace(1);
8585 }
8586 var3 = var5;
8587 RET_LABEL4:(void)0;
8588 }
8589 }
8590 {
8591 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var3) on <var3:ModelBuilder> */
8592 var8 = var3->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var3:ModelBuilder> */
8593 if (unlikely(var8 == NULL)) {
8594 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
8595 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
8596 show_backtrace(1);
8597 }
8598 var6 = var8;
8599 RET_LABEL7:(void)0;
8600 }
8601 }
8602 {
8603 { /* Inline abstract_compiler#ToolContext#opt_hardening (var6) on <var6:ToolContext> */
8604 var11 = var6->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_hardening].val; /* _opt_hardening on <var6:ToolContext> */
8605 if (unlikely(var11 == NULL)) {
8606 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_hardening");
8607 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 45);
8608 show_backtrace(1);
8609 }
8610 var9 = var11;
8611 RET_LABEL10:(void)0;
8612 }
8613 }
8614 {
8615 { /* Inline opts#Option#value (var9) on <var9:OptionBool> */
8616 var14 = var9->attrs[COLOR_opts__Option___value].val; /* _value on <var9:OptionBool> */
8617 var12 = var14;
8618 RET_LABEL13:(void)0;
8619 }
8620 }
8621 var15 = ((struct instance_standard__Bool*)var12)->value; /* autounbox from nullable Object to Bool */;
8622 var16 = !var15;
8623 if (var16){
8624 goto RET_LABEL;
8625 } else {
8626 }
8627 if (varonce) {
8628 var17 = varonce;
8629 } else {
8630 var18 = "if(";
8631 var19 = 3;
8632 var20 = standard___standard__NativeString___to_s_with_length(var18, var19);
8633 var17 = var20;
8634 varonce = var17;
8635 }
8636 if (varonce21) {
8637 var22 = varonce21;
8638 } else {
8639 var23 = " == NULL) {";
8640 var24 = 11;
8641 var25 = standard___standard__NativeString___to_s_with_length(var23, var24);
8642 var22 = var25;
8643 varonce21 = var22;
8644 }
8645 var26 = NEW_standard__Array(&type_standard__Array__standard__Object);
8646 { /* var26 = array_instance Array[Object] */
8647 var27 = 3;
8648 var28 = NEW_standard__NativeArray(var27, &type_standard__NativeArray__standard__Object);
8649 ((struct instance_standard__NativeArray*)var28)->values[0] = (val*) var17;
8650 ((struct instance_standard__NativeArray*)var28)->values[1] = (val*) var_t;
8651 ((struct instance_standard__NativeArray*)var28)->values[2] = (val*) var22;
8652 {
8653 ((void (*)(val* self, val* p0, long p1))(var26->class->vft[COLOR_standard__array__Array__with_native]))(var26, var28, var27) /* with_native on <var26:Array[Object]>*/;
8654 }
8655 }
8656 {
8657 var29 = ((val* (*)(val* self))(var26->class->vft[COLOR_standard__string__Object__to_s]))(var26) /* to_s on <var26:Array[Object]>*/;
8658 }
8659 {
8660 nit___nit__AbstractCompilerVisitor___add(self, var29); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8661 }
8662 if (varonce30) {
8663 var31 = varonce30;
8664 } else {
8665 var32 = "cast type null";
8666 var33 = 14;
8667 var34 = standard___standard__NativeString___to_s_with_length(var32, var33);
8668 var31 = var34;
8669 varonce30 = var31;
8670 }
8671 {
8672 nit___nit__AbstractCompilerVisitor___add_abort(self, var31); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <self:SeparateCompilerVisitor>*/
8673 }
8674 if (varonce35) {
8675 var36 = varonce35;
8676 } else {
8677 var37 = "}";
8678 var38 = 1;
8679 var39 = standard___standard__NativeString___to_s_with_length(var37, var38);
8680 var36 = var39;
8681 varonce35 = var36;
8682 }
8683 {
8684 nit___nit__AbstractCompilerVisitor___add(self, var36); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8685 }
8686 if (varonce40) {
8687 var41 = varonce40;
8688 } else {
8689 var42 = "if(";
8690 var43 = 3;
8691 var44 = standard___standard__NativeString___to_s_with_length(var42, var43);
8692 var41 = var44;
8693 varonce40 = var41;
8694 }
8695 if (varonce45) {
8696 var46 = varonce45;
8697 } else {
8698 var47 = "->id == -1 || ";
8699 var48 = 14;
8700 var49 = standard___standard__NativeString___to_s_with_length(var47, var48);
8701 var46 = var49;
8702 varonce45 = var46;
8703 }
8704 if (varonce50) {
8705 var51 = varonce50;
8706 } else {
8707 var52 = "->color == -1) {";
8708 var53 = 16;
8709 var54 = standard___standard__NativeString___to_s_with_length(var52, var53);
8710 var51 = var54;
8711 varonce50 = var51;
8712 }
8713 var55 = NEW_standard__Array(&type_standard__Array__standard__Object);
8714 { /* var55 = array_instance Array[Object] */
8715 var56 = 5;
8716 var57 = NEW_standard__NativeArray(var56, &type_standard__NativeArray__standard__Object);
8717 ((struct instance_standard__NativeArray*)var57)->values[0] = (val*) var41;
8718 ((struct instance_standard__NativeArray*)var57)->values[1] = (val*) var_t;
8719 ((struct instance_standard__NativeArray*)var57)->values[2] = (val*) var46;
8720 ((struct instance_standard__NativeArray*)var57)->values[3] = (val*) var_t;
8721 ((struct instance_standard__NativeArray*)var57)->values[4] = (val*) var51;
8722 {
8723 ((void (*)(val* self, val* p0, long p1))(var55->class->vft[COLOR_standard__array__Array__with_native]))(var55, var57, var56) /* with_native on <var55:Array[Object]>*/;
8724 }
8725 }
8726 {
8727 var58 = ((val* (*)(val* self))(var55->class->vft[COLOR_standard__string__Object__to_s]))(var55) /* to_s on <var55:Array[Object]>*/;
8728 }
8729 {
8730 nit___nit__AbstractCompilerVisitor___add(self, var58); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8731 }
8732 if (varonce59) {
8733 var60 = varonce59;
8734 } else {
8735 var61 = "PRINT_ERROR(\"Try to cast on a dead cast type: %s\\n\", ";
8736 var62 = 53;
8737 var63 = standard___standard__NativeString___to_s_with_length(var61, var62);
8738 var60 = var63;
8739 varonce59 = var60;
8740 }
8741 if (varonce64) {
8742 var65 = varonce64;
8743 } else {
8744 var66 = "->name);";
8745 var67 = 8;
8746 var68 = standard___standard__NativeString___to_s_with_length(var66, var67);
8747 var65 = var68;
8748 varonce64 = var65;
8749 }
8750 var69 = NEW_standard__Array(&type_standard__Array__standard__Object);
8751 { /* var69 = array_instance Array[Object] */
8752 var70 = 3;
8753 var71 = NEW_standard__NativeArray(var70, &type_standard__NativeArray__standard__Object);
8754 ((struct instance_standard__NativeArray*)var71)->values[0] = (val*) var60;
8755 ((struct instance_standard__NativeArray*)var71)->values[1] = (val*) var_t;
8756 ((struct instance_standard__NativeArray*)var71)->values[2] = (val*) var65;
8757 {
8758 ((void (*)(val* self, val* p0, long p1))(var69->class->vft[COLOR_standard__array__Array__with_native]))(var69, var71, var70) /* with_native on <var69:Array[Object]>*/;
8759 }
8760 }
8761 {
8762 var72 = ((val* (*)(val* self))(var69->class->vft[COLOR_standard__string__Object__to_s]))(var69) /* to_s on <var69:Array[Object]>*/;
8763 }
8764 {
8765 nit___nit__AbstractCompilerVisitor___add(self, var72); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8766 }
8767 if (varonce73) {
8768 var74 = varonce73;
8769 } else {
8770 var75 = "cast type dead";
8771 var76 = 14;
8772 var77 = standard___standard__NativeString___to_s_with_length(var75, var76);
8773 var74 = var77;
8774 varonce73 = var74;
8775 }
8776 {
8777 nit___nit__AbstractCompilerVisitor___add_abort(self, var74); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <self:SeparateCompilerVisitor>*/
8778 }
8779 if (varonce78) {
8780 var79 = varonce78;
8781 } else {
8782 var80 = "}";
8783 var81 = 1;
8784 var82 = standard___standard__NativeString___to_s_with_length(var80, var81);
8785 var79 = var82;
8786 varonce78 = var79;
8787 }
8788 {
8789 nit___nit__AbstractCompilerVisitor___add(self, var79); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8790 }
8791 RET_LABEL:;
8792 }
8793 /* method separate_compiler#SeparateCompilerVisitor#init_instance for (self: SeparateCompilerVisitor, MClassType): RuntimeVariable */
8794 val* nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__init_instance(val* self, val* p0) {
8795 val* var /* : RuntimeVariable */;
8796 val* var_mtype /* var mtype: MClassType */;
8797 static val* varonce;
8798 val* var1 /* : String */;
8799 char* var2 /* : NativeString */;
8800 long var3 /* : Int */;
8801 val* var4 /* : FlatString */;
8802 val* var5 /* : MClass */;
8803 val* var7 /* : MClass */;
8804 val* var8 /* : String */;
8805 val* var9 /* : Array[Object] */;
8806 long var10 /* : Int */;
8807 val* var11 /* : NativeArray[Object] */;
8808 val* var12 /* : String */;
8809 val* var13 /* : AbstractCompiler */;
8810 val* var15 /* : AbstractCompiler */;
8811 val* var_compiler /* var compiler: SeparateCompiler */;
8812 short int var16 /* : Bool */;
8813 short int var17 /* : Bool */;
8814 int cltype;
8815 int idtype;
8816 short int var_ /* var : Bool */;
8817 short int var18 /* : Bool */;
8818 short int var20 /* : Bool */;
8819 val* var21 /* : nullable StaticFrame */;
8820 val* var23 /* : nullable StaticFrame */;
8821 val* var24 /* : MPropDef */;
8822 val* var26 /* : MPropDef */;
8823 val* var27 /* : MClassDef */;
8824 val* var29 /* : MClassDef */;
8825 val* var30 /* : nullable StaticFrame */;
8826 val* var32 /* : nullable StaticFrame */;
8827 val* var33 /* : Array[RuntimeVariable] */;
8828 val* var35 /* : Array[RuntimeVariable] */;
8829 val* var36 /* : nullable Object */;
8830 val* var_recv /* var recv: RuntimeVariable */;
8831 val* var37 /* : String */;
8832 val* var_recv_type_info /* var recv_type_info: String */;
8833 val* var38 /* : String */;
8834 static val* varonce39;
8835 val* var40 /* : String */;
8836 char* var41 /* : NativeString */;
8837 long var42 /* : Int */;
8838 val* var43 /* : FlatString */;
8839 val* var44 /* : MClass */;
8840 val* var46 /* : MClass */;
8841 val* var47 /* : String */;
8842 static val* varonce48;
8843 val* var49 /* : String */;
8844 char* var50 /* : NativeString */;
8845 long var51 /* : Int */;
8846 val* var52 /* : FlatString */;
8847 static val* varonce53;
8848 val* var54 /* : String */;
8849 char* var55 /* : NativeString */;
8850 long var56 /* : Int */;
8851 val* var57 /* : FlatString */;
8852 val* var58 /* : String */;
8853 static val* varonce59;
8854 val* var60 /* : String */;
8855 char* var61 /* : NativeString */;
8856 long var62 /* : Int */;
8857 val* var63 /* : FlatString */;
8858 val* var64 /* : Array[Object] */;
8859 long var65 /* : Int */;
8860 val* var66 /* : NativeArray[Object] */;
8861 val* var67 /* : String */;
8862 val* var68 /* : RuntimeVariable */;
8863 val* var69 /* : Set[MType] */;
8864 val* var71 /* : Set[MType] */;
8865 static val* varonce72;
8866 val* var73 /* : String */;
8867 char* var74 /* : NativeString */;
8868 long var75 /* : Int */;
8869 val* var76 /* : FlatString */;
8870 val* var77 /* : String */;
8871 val* var78 /* : Array[Object] */;
8872 long var79 /* : Int */;
8873 val* var80 /* : NativeArray[Object] */;
8874 val* var81 /* : String */;
8875 static val* varonce82;
8876 val* var83 /* : String */;
8877 char* var84 /* : NativeString */;
8878 long var85 /* : Int */;
8879 val* var86 /* : FlatString */;
8880 val* var87 /* : MClass */;
8881 val* var89 /* : MClass */;
8882 val* var90 /* : String */;
8883 static val* varonce91;
8884 val* var92 /* : String */;
8885 char* var93 /* : NativeString */;
8886 long var94 /* : Int */;
8887 val* var95 /* : FlatString */;
8888 val* var96 /* : String */;
8889 static val* varonce97;
8890 val* var98 /* : String */;
8891 char* var99 /* : NativeString */;
8892 long var100 /* : Int */;
8893 val* var101 /* : FlatString */;
8894 val* var102 /* : Array[Object] */;
8895 long var103 /* : Int */;
8896 val* var104 /* : NativeArray[Object] */;
8897 val* var105 /* : String */;
8898 val* var106 /* : RuntimeVariable */;
8899 var_mtype = p0;
8900 if (varonce) {
8901 var1 = varonce;
8902 } else {
8903 var2 = "NEW_";
8904 var3 = 4;
8905 var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
8906 var1 = var4;
8907 varonce = var1;
8908 }
8909 {
8910 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MClassType> */
8911 var7 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType> */
8912 if (unlikely(var7 == NULL)) {
8913 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
8914 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
8915 show_backtrace(1);
8916 }
8917 var5 = var7;
8918 RET_LABEL6:(void)0;
8919 }
8920 }
8921 {
8922 var8 = nit___nit__MClass___nit__model_base__MEntity__c_name(var5);
8923 }
8924 var9 = NEW_standard__Array(&type_standard__Array__standard__Object);
8925 { /* var9 = array_instance Array[Object] */
8926 var10 = 2;
8927 var11 = NEW_standard__NativeArray(var10, &type_standard__NativeArray__standard__Object);
8928 ((struct instance_standard__NativeArray*)var11)->values[0] = (val*) var1;
8929 ((struct instance_standard__NativeArray*)var11)->values[1] = (val*) var8;
8930 {
8931 ((void (*)(val* self, val* p0, long p1))(var9->class->vft[COLOR_standard__array__Array__with_native]))(var9, var11, var10) /* with_native on <var9:Array[Object]>*/;
8932 }
8933 }
8934 {
8935 var12 = ((val* (*)(val* self))(var9->class->vft[COLOR_standard__string__Object__to_s]))(var9) /* to_s on <var9:Array[Object]>*/;
8936 }
8937 {
8938 nit___nit__AbstractCompilerVisitor___require_declaration(self, var12); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
8939 }
8940 {
8941 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
8942 var15 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
8943 if (unlikely(var15 == NULL)) {
8944 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
8945 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
8946 show_backtrace(1);
8947 }
8948 var13 = var15;
8949 RET_LABEL14:(void)0;
8950 }
8951 }
8952 var_compiler = var13;
8953 /* <var_mtype:MClassType> isa MGenericType */
8954 cltype = type_nit__MGenericType.color;
8955 idtype = type_nit__MGenericType.id;
8956 if(cltype >= var_mtype->type->table_size) {
8957 var17 = 0;
8958 } else {
8959 var17 = var_mtype->type->type_table[cltype] == idtype;
8960 }
8961 var_ = var17;
8962 if (var17){
8963 {
8964 { /* Inline model#MGenericType#need_anchor (var_mtype) on <var_mtype:MClassType(MGenericType)> */
8965 var20 = var_mtype->attrs[COLOR_nit__model__MGenericType___need_anchor].s; /* _need_anchor on <var_mtype:MClassType(MGenericType)> */
8966 var18 = var20;
8967 RET_LABEL19:(void)0;
8968 }
8969 }
8970 var16 = var18;
8971 } else {
8972 var16 = var_;
8973 }
8974 if (var16){
8975 {
8976 nit___nit__SeparateCompilerVisitor___hardening_live_open_type(self, var_mtype); /* Direct call separate_compiler#SeparateCompilerVisitor#hardening_live_open_type on <self:SeparateCompilerVisitor>*/
8977 }
8978 {
8979 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:SeparateCompilerVisitor> */
8980 var23 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateCompilerVisitor> */
8981 var21 = var23;
8982 RET_LABEL22:(void)0;
8983 }
8984 }
8985 if (var21 == NULL) {
8986 PRINT_ERROR("Runtime error: %s", "Receiver is null");
8987 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1457);
8988 show_backtrace(1);
8989 } else {
8990 { /* Inline abstract_compiler#StaticFrame#mpropdef (var21) on <var21:nullable StaticFrame> */
8991 if (unlikely(var21 == NULL)) {
8992 PRINT_ERROR("Runtime error: %s", "Receiver is null");
8993 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1724);
8994 show_backtrace(1);
8995 }
8996 var26 = var21->attrs[COLOR_nit__abstract_compiler__StaticFrame___mpropdef].val; /* _mpropdef on <var21:nullable StaticFrame> */
8997 if (unlikely(var26 == NULL)) {
8998 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
8999 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1724);
9000 show_backtrace(1);
9001 }
9002 var24 = var26;
9003 RET_LABEL25:(void)0;
9004 }
9005 }
9006 {
9007 { /* Inline model#MPropDef#mclassdef (var24) on <var24:MPropDef> */
9008 var29 = var24->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var24:MPropDef> */
9009 if (unlikely(var29 == NULL)) {
9010 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
9011 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2010);
9012 show_backtrace(1);
9013 }
9014 var27 = var29;
9015 RET_LABEL28:(void)0;
9016 }
9017 }
9018 {
9019 nit___nit__SeparateCompilerVisitor___link_unresolved_type(self, var27, var_mtype); /* Direct call separate_compiler#SeparateCompilerVisitor#link_unresolved_type on <self:SeparateCompilerVisitor>*/
9020 }
9021 {
9022 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:SeparateCompilerVisitor> */
9023 var32 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateCompilerVisitor> */
9024 var30 = var32;
9025 RET_LABEL31:(void)0;
9026 }
9027 }
9028 if (var30 == NULL) {
9029 PRINT_ERROR("Runtime error: %s", "Receiver is null");
9030 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1458);
9031 show_backtrace(1);
9032 } else {
9033 { /* Inline abstract_compiler#StaticFrame#arguments (var30) on <var30:nullable StaticFrame> */
9034 if (unlikely(var30 == NULL)) {
9035 PRINT_ERROR("Runtime error: %s", "Receiver is null");
9036 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1731);
9037 show_backtrace(1);
9038 }
9039 var35 = var30->attrs[COLOR_nit__abstract_compiler__StaticFrame___arguments].val; /* _arguments on <var30:nullable StaticFrame> */
9040 if (unlikely(var35 == NULL)) {
9041 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
9042 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1731);
9043 show_backtrace(1);
9044 }
9045 var33 = var35;
9046 RET_LABEL34:(void)0;
9047 }
9048 }
9049 {
9050 var36 = standard___standard__SequenceRead___Collection__first(var33);
9051 }
9052 var_recv = var36;
9053 {
9054 var37 = nit___nit__SeparateCompilerVisitor___type_info(self, var_recv);
9055 }
9056 var_recv_type_info = var37;
9057 {
9058 var38 = nit__separate_compiler___MEntity___const_color(var_mtype);
9059 }
9060 {
9061 nit___nit__AbstractCompilerVisitor___require_declaration(self, var38); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
9062 }
9063 if (varonce39) {
9064 var40 = varonce39;
9065 } else {
9066 var41 = "NEW_";
9067 var42 = 4;
9068 var43 = standard___standard__NativeString___to_s_with_length(var41, var42);
9069 var40 = var43;
9070 varonce39 = var40;
9071 }
9072 {
9073 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MClassType(MGenericType)> */
9074 var46 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType(MGenericType)> */
9075 if (unlikely(var46 == NULL)) {
9076 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
9077 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
9078 show_backtrace(1);
9079 }
9080 var44 = var46;
9081 RET_LABEL45:(void)0;
9082 }
9083 }
9084 {
9085 var47 = nit___nit__MClass___nit__model_base__MEntity__c_name(var44);
9086 }
9087 if (varonce48) {
9088 var49 = varonce48;
9089 } else {
9090 var50 = "(";
9091 var51 = 1;
9092 var52 = standard___standard__NativeString___to_s_with_length(var50, var51);
9093 var49 = var52;
9094 varonce48 = var49;
9095 }
9096 if (varonce53) {
9097 var54 = varonce53;
9098 } else {
9099 var55 = "->resolution_table->types[";
9100 var56 = 26;
9101 var57 = standard___standard__NativeString___to_s_with_length(var55, var56);
9102 var54 = var57;
9103 varonce53 = var54;
9104 }
9105 {
9106 var58 = nit__separate_compiler___MEntity___const_color(var_mtype);
9107 }
9108 if (varonce59) {
9109 var60 = varonce59;
9110 } else {
9111 var61 = "])";
9112 var62 = 2;
9113 var63 = standard___standard__NativeString___to_s_with_length(var61, var62);
9114 var60 = var63;
9115 varonce59 = var60;
9116 }
9117 var64 = NEW_standard__Array(&type_standard__Array__standard__Object);
9118 { /* var64 = array_instance Array[Object] */
9119 var65 = 7;
9120 var66 = NEW_standard__NativeArray(var65, &type_standard__NativeArray__standard__Object);
9121 ((struct instance_standard__NativeArray*)var66)->values[0] = (val*) var40;
9122 ((struct instance_standard__NativeArray*)var66)->values[1] = (val*) var47;
9123 ((struct instance_standard__NativeArray*)var66)->values[2] = (val*) var49;
9124 ((struct instance_standard__NativeArray*)var66)->values[3] = (val*) var_recv_type_info;
9125 ((struct instance_standard__NativeArray*)var66)->values[4] = (val*) var54;
9126 ((struct instance_standard__NativeArray*)var66)->values[5] = (val*) var58;
9127 ((struct instance_standard__NativeArray*)var66)->values[6] = (val*) var60;
9128 {
9129 ((void (*)(val* self, val* p0, long p1))(var64->class->vft[COLOR_standard__array__Array__with_native]))(var64, var66, var65) /* with_native on <var64:Array[Object]>*/;
9130 }
9131 }
9132 {
9133 var67 = ((val* (*)(val* self))(var64->class->vft[COLOR_standard__string__Object__to_s]))(var64) /* to_s on <var64:Array[Object]>*/;
9134 }
9135 {
9136 var68 = nit___nit__AbstractCompilerVisitor___new_expr(self, var67, var_mtype);
9137 }
9138 var = var68;
9139 goto RET_LABEL;
9140 } else {
9141 }
9142 {
9143 { /* Inline separate_compiler#SeparateCompiler#undead_types (var_compiler) on <var_compiler:SeparateCompiler> */
9144 var71 = var_compiler->attrs[COLOR_nit__separate_compiler__SeparateCompiler___undead_types].val; /* _undead_types on <var_compiler:SeparateCompiler> */
9145 if (unlikely(var71 == NULL)) {
9146 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _undead_types");
9147 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 121);
9148 show_backtrace(1);
9149 }
9150 var69 = var71;
9151 RET_LABEL70:(void)0;
9152 }
9153 }
9154 {
9155 ((void (*)(val* self, val* p0))(var69->class->vft[COLOR_standard__abstract_collection__SimpleCollection__add]))(var69, var_mtype) /* add on <var69:Set[MType]>*/;
9156 }
9157 if (varonce72) {
9158 var73 = varonce72;
9159 } else {
9160 var74 = "type_";
9161 var75 = 5;
9162 var76 = standard___standard__NativeString___to_s_with_length(var74, var75);
9163 var73 = var76;
9164 varonce72 = var73;
9165 }
9166 {
9167 var77 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var_mtype) /* c_name on <var_mtype:MClassType>*/;
9168 }
9169 var78 = NEW_standard__Array(&type_standard__Array__standard__Object);
9170 { /* var78 = array_instance Array[Object] */
9171 var79 = 2;
9172 var80 = NEW_standard__NativeArray(var79, &type_standard__NativeArray__standard__Object);
9173 ((struct instance_standard__NativeArray*)var80)->values[0] = (val*) var73;
9174 ((struct instance_standard__NativeArray*)var80)->values[1] = (val*) var77;
9175 {
9176 ((void (*)(val* self, val* p0, long p1))(var78->class->vft[COLOR_standard__array__Array__with_native]))(var78, var80, var79) /* with_native on <var78:Array[Object]>*/;
9177 }
9178 }
9179 {
9180 var81 = ((val* (*)(val* self))(var78->class->vft[COLOR_standard__string__Object__to_s]))(var78) /* to_s on <var78:Array[Object]>*/;
9181 }
9182 {
9183 nit___nit__AbstractCompilerVisitor___require_declaration(self, var81); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
9184 }
9185 if (varonce82) {
9186 var83 = varonce82;
9187 } else {
9188 var84 = "NEW_";
9189 var85 = 4;
9190 var86 = standard___standard__NativeString___to_s_with_length(var84, var85);
9191 var83 = var86;
9192 varonce82 = var83;
9193 }
9194 {
9195 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MClassType> */
9196 var89 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType> */
9197 if (unlikely(var89 == NULL)) {
9198 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
9199 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
9200 show_backtrace(1);
9201 }
9202 var87 = var89;
9203 RET_LABEL88:(void)0;
9204 }
9205 }
9206 {
9207 var90 = nit___nit__MClass___nit__model_base__MEntity__c_name(var87);
9208 }
9209 if (varonce91) {
9210 var92 = varonce91;
9211 } else {
9212 var93 = "(&type_";
9213 var94 = 7;
9214 var95 = standard___standard__NativeString___to_s_with_length(var93, var94);
9215 var92 = var95;
9216 varonce91 = var92;
9217 }
9218 {
9219 var96 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var_mtype) /* c_name on <var_mtype:MClassType>*/;
9220 }
9221 if (varonce97) {
9222 var98 = varonce97;
9223 } else {
9224 var99 = ")";
9225 var100 = 1;
9226 var101 = standard___standard__NativeString___to_s_with_length(var99, var100);
9227 var98 = var101;
9228 varonce97 = var98;
9229 }
9230 var102 = NEW_standard__Array(&type_standard__Array__standard__Object);
9231 { /* var102 = array_instance Array[Object] */
9232 var103 = 5;
9233 var104 = NEW_standard__NativeArray(var103, &type_standard__NativeArray__standard__Object);
9234 ((struct instance_standard__NativeArray*)var104)->values[0] = (val*) var83;
9235 ((struct instance_standard__NativeArray*)var104)->values[1] = (val*) var90;
9236 ((struct instance_standard__NativeArray*)var104)->values[2] = (val*) var92;
9237 ((struct instance_standard__NativeArray*)var104)->values[3] = (val*) var96;
9238 ((struct instance_standard__NativeArray*)var104)->values[4] = (val*) var98;
9239 {
9240 ((void (*)(val* self, val* p0, long p1))(var102->class->vft[COLOR_standard__array__Array__with_native]))(var102, var104, var103) /* with_native on <var102:Array[Object]>*/;
9241 }
9242 }
9243 {
9244 var105 = ((val* (*)(val* self))(var102->class->vft[COLOR_standard__string__Object__to_s]))(var102) /* to_s on <var102:Array[Object]>*/;
9245 }
9246 {
9247 var106 = nit___nit__AbstractCompilerVisitor___new_expr(self, var105, var_mtype);
9248 }
9249 var = var106;
9250 goto RET_LABEL;
9251 RET_LABEL:;
9252 return var;
9253 }