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