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