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