misc/vim: inform the user when no results are found
[nit.git] / c_src / nit__rapid_type_analysis.sep.1.c
1 #include "nit__rapid_type_analysis.sep.0.h"
2 /* method rapid_type_analysis#ModelBuilder#do_rapid_type_analysis for (self: ModelBuilder, MModule): RapidTypeAnalysis */
3 val* nit__rapid_type_analysis___ModelBuilder___do_rapid_type_analysis(val* self, val* p0) {
4 val* var /* : RapidTypeAnalysis */;
5 val* var_mainmodule /* var mainmodule: MModule */;
6 val* var1 /* : RapidTypeAnalysis */;
7 val* var_analysis /* var analysis: RapidTypeAnalysis */;
8 var_mainmodule = p0;
9 var1 = NEW_nit__RapidTypeAnalysis(&type_nit__RapidTypeAnalysis);
10 {
11 ((void (*)(val* self, val* p0))(var1->class->vft[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis__modelbuilder_61d]))(var1, self) /* modelbuilder= on <var1:RapidTypeAnalysis>*/;
12 }
13 {
14 ((void (*)(val* self, val* p0))(var1->class->vft[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis__mainmodule_61d]))(var1, var_mainmodule) /* mainmodule= on <var1:RapidTypeAnalysis>*/;
15 }
16 {
17 ((void (*)(val* self))(var1->class->vft[COLOR_standard__kernel__Object__init]))(var1) /* init on <var1:RapidTypeAnalysis>*/;
18 }
19 var_analysis = var1;
20 {
21 nit___nit__RapidTypeAnalysis___run_analysis(var_analysis); /* Direct call rapid_type_analysis#RapidTypeAnalysis#run_analysis on <var_analysis:RapidTypeAnalysis>*/
22 }
23 var = var_analysis;
24 goto RET_LABEL;
25 RET_LABEL:;
26 return var;
27 }
28 /* method rapid_type_analysis#RapidTypeAnalysis#modelbuilder for (self: RapidTypeAnalysis): ModelBuilder */
29 val* nit___nit__RapidTypeAnalysis___modelbuilder(val* self) {
30 val* var /* : ModelBuilder */;
31 val* var1 /* : ModelBuilder */;
32 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on <self:RapidTypeAnalysis> */
33 if (unlikely(var1 == NULL)) {
34 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
35 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 46);
36 show_backtrace(1);
37 }
38 var = var1;
39 RET_LABEL:;
40 return var;
41 }
42 /* method rapid_type_analysis#RapidTypeAnalysis#modelbuilder= for (self: RapidTypeAnalysis, ModelBuilder) */
43 void nit___nit__RapidTypeAnalysis___modelbuilder_61d(val* self, val* p0) {
44 self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val = p0; /* _modelbuilder on <self:RapidTypeAnalysis> */
45 RET_LABEL:;
46 }
47 /* method rapid_type_analysis#RapidTypeAnalysis#mainmodule for (self: RapidTypeAnalysis): MModule */
48 val* nit___nit__RapidTypeAnalysis___mainmodule(val* self) {
49 val* var /* : MModule */;
50 val* var1 /* : MModule */;
51 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
52 if (unlikely(var1 == NULL)) {
53 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
54 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
55 show_backtrace(1);
56 }
57 var = var1;
58 RET_LABEL:;
59 return var;
60 }
61 /* method rapid_type_analysis#RapidTypeAnalysis#mainmodule= for (self: RapidTypeAnalysis, MModule) */
62 void nit___nit__RapidTypeAnalysis___mainmodule_61d(val* self, val* p0) {
63 self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val = p0; /* _mainmodule on <self:RapidTypeAnalysis> */
64 RET_LABEL:;
65 }
66 /* method rapid_type_analysis#RapidTypeAnalysis#live_types for (self: RapidTypeAnalysis): HashSet[MClassType] */
67 val* nit___nit__RapidTypeAnalysis___live_types(val* self) {
68 val* var /* : HashSet[MClassType] */;
69 val* var1 /* : HashSet[MClassType] */;
70 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <self:RapidTypeAnalysis> */
71 if (unlikely(var1 == NULL)) {
72 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
73 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 53);
74 show_backtrace(1);
75 }
76 var = var1;
77 RET_LABEL:;
78 return var;
79 }
80 /* method rapid_type_analysis#RapidTypeAnalysis#live_open_types for (self: RapidTypeAnalysis): HashSet[MClassType] */
81 val* nit___nit__RapidTypeAnalysis___live_open_types(val* self) {
82 val* var /* : HashSet[MClassType] */;
83 val* var1 /* : HashSet[MClassType] */;
84 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_open_types].val; /* _live_open_types on <self:RapidTypeAnalysis> */
85 if (unlikely(var1 == NULL)) {
86 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_types");
87 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 58);
88 show_backtrace(1);
89 }
90 var = var1;
91 RET_LABEL:;
92 return var;
93 }
94 /* method rapid_type_analysis#RapidTypeAnalysis#live_classes for (self: RapidTypeAnalysis): HashSet[MClass] */
95 val* nit___nit__RapidTypeAnalysis___live_classes(val* self) {
96 val* var /* : HashSet[MClass] */;
97 val* var1 /* : HashSet[MClass] */;
98 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_classes].val; /* _live_classes on <self:RapidTypeAnalysis> */
99 if (unlikely(var1 == NULL)) {
100 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_classes");
101 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 62);
102 show_backtrace(1);
103 }
104 var = var1;
105 RET_LABEL:;
106 return var;
107 }
108 /* method rapid_type_analysis#RapidTypeAnalysis#live_cast_types for (self: RapidTypeAnalysis): HashSet[MType] */
109 val* nit___nit__RapidTypeAnalysis___live_cast_types(val* self) {
110 val* var /* : HashSet[MType] */;
111 val* var1 /* : HashSet[MType] */;
112 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_cast_types].val; /* _live_cast_types on <self:RapidTypeAnalysis> */
113 if (unlikely(var1 == NULL)) {
114 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_cast_types");
115 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 65);
116 show_backtrace(1);
117 }
118 var = var1;
119 RET_LABEL:;
120 return var;
121 }
122 /* method rapid_type_analysis#RapidTypeAnalysis#live_open_cast_types for (self: RapidTypeAnalysis): HashSet[MType] */
123 val* nit___nit__RapidTypeAnalysis___live_open_cast_types(val* self) {
124 val* var /* : HashSet[MType] */;
125 val* var1 /* : HashSet[MType] */;
126 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_open_cast_types].val; /* _live_open_cast_types on <self:RapidTypeAnalysis> */
127 if (unlikely(var1 == NULL)) {
128 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_cast_types");
129 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 68);
130 show_backtrace(1);
131 }
132 var = var1;
133 RET_LABEL:;
134 return var;
135 }
136 /* method rapid_type_analysis#RapidTypeAnalysis#live_methoddefs for (self: RapidTypeAnalysis): HashSet[MMethodDef] */
137 val* nit___nit__RapidTypeAnalysis___live_methoddefs(val* self) {
138 val* var /* : HashSet[MMethodDef] */;
139 val* var1 /* : HashSet[MMethodDef] */;
140 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_methoddefs].val; /* _live_methoddefs on <self:RapidTypeAnalysis> */
141 if (unlikely(var1 == NULL)) {
142 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methoddefs");
143 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 72);
144 show_backtrace(1);
145 }
146 var = var1;
147 RET_LABEL:;
148 return var;
149 }
150 /* method rapid_type_analysis#RapidTypeAnalysis#live_methods for (self: RapidTypeAnalysis): HashSet[MMethod] */
151 val* nit___nit__RapidTypeAnalysis___live_methods(val* self) {
152 val* var /* : HashSet[MMethod] */;
153 val* var1 /* : HashSet[MMethod] */;
154 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_methods].val; /* _live_methods on <self:RapidTypeAnalysis> */
155 if (unlikely(var1 == NULL)) {
156 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methods");
157 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 75);
158 show_backtrace(1);
159 }
160 var = var1;
161 RET_LABEL:;
162 return var;
163 }
164 /* method rapid_type_analysis#RapidTypeAnalysis#live_callsites for (self: RapidTypeAnalysis): HashSet[CallSite] */
165 val* nit___nit__RapidTypeAnalysis___live_callsites(val* self) {
166 val* var /* : HashSet[CallSite] */;
167 val* var1 /* : HashSet[CallSite] */;
168 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_callsites].val; /* _live_callsites on <self:RapidTypeAnalysis> */
169 if (unlikely(var1 == NULL)) {
170 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_callsites");
171 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 78);
172 show_backtrace(1);
173 }
174 var = var1;
175 RET_LABEL:;
176 return var;
177 }
178 /* method rapid_type_analysis#RapidTypeAnalysis#live_targets_cache for (self: RapidTypeAnalysis): HashMap2[MType, MProperty, Set[MMethodDef]] */
179 val* nit___nit__RapidTypeAnalysis___live_targets_cache(val* self) {
180 val* var /* : HashMap2[MType, MProperty, Set[MMethodDef]] */;
181 val* var1 /* : HashMap2[MType, MProperty, Set[MMethodDef]] */;
182 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_targets_cache].val; /* _live_targets_cache on <self:RapidTypeAnalysis> */
183 if (unlikely(var1 == NULL)) {
184 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_targets_cache");
185 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 81);
186 show_backtrace(1);
187 }
188 var = var1;
189 RET_LABEL:;
190 return var;
191 }
192 /* method rapid_type_analysis#RapidTypeAnalysis#live_targets for (self: RapidTypeAnalysis, CallSite): Set[MMethodDef] */
193 val* nit___nit__RapidTypeAnalysis___live_targets(val* self, val* p0) {
194 val* var /* : Set[MMethodDef] */;
195 val* var_callsite /* var callsite: CallSite */;
196 val* var1 /* : MType */;
197 val* var3 /* : MType */;
198 val* var_mtype /* var mtype: MType */;
199 val* var4 /* : nullable MClassType */;
200 val* var6 /* : nullable MClassType */;
201 val* var_anchor /* var anchor: nullable MClassType */;
202 val* var7 /* : null */;
203 short int var8 /* : Bool */;
204 short int var9 /* : Bool */;
205 val* var_other /* var other: nullable Object */;
206 short int var11 /* : Bool */;
207 short int var12 /* : Bool */;
208 val* var13 /* : MModule */;
209 val* var15 /* : MModule */;
210 val* var16 /* : MType */;
211 val* var17 /* : MType */;
212 short int var18 /* : Bool */;
213 int cltype;
214 int idtype;
215 val* var19 /* : MClass */;
216 val* var21 /* : MClass */;
217 val* var22 /* : MClassDef */;
218 val* var24 /* : MClassDef */;
219 val* var25 /* : MClassType */;
220 val* var27 /* : MClassType */;
221 val* var28 /* : MMethod */;
222 val* var30 /* : MMethod */;
223 val* var_mproperty /* var mproperty: MMethod */;
224 val* var31 /* : HashMap2[MType, MProperty, Set[MMethodDef]] */;
225 val* var33 /* : HashMap2[MType, MProperty, Set[MMethodDef]] */;
226 val* var34 /* : nullable Object */;
227 val* var_res /* var res: nullable Set[MMethodDef] */;
228 val* var35 /* : null */;
229 short int var36 /* : Bool */;
230 short int var37 /* : Bool */;
231 short int var39 /* : Bool */;
232 short int var40 /* : Bool */;
233 val* var41 /* : ArraySet[MMethodDef] */;
234 val* var42 /* : HashMap2[MType, MProperty, Set[MMethodDef]] */;
235 val* var44 /* : HashMap2[MType, MProperty, Set[MMethodDef]] */;
236 val* var45 /* : HashSet[MClass] */;
237 val* var47 /* : HashSet[MClass] */;
238 val* var_ /* var : HashSet[MClass] */;
239 val* var48 /* : Iterator[nullable Object] */;
240 val* var_49 /* var : Iterator[MClass] */;
241 short int var50 /* : Bool */;
242 val* var51 /* : nullable Object */;
243 val* var_c /* var c: MClass */;
244 val* var52 /* : MClassDef */;
245 val* var54 /* : MClassDef */;
246 val* var55 /* : MClassType */;
247 val* var57 /* : MClassType */;
248 val* var_tc /* var tc: MClassType */;
249 val* var58 /* : MModule */;
250 val* var60 /* : MModule */;
251 val* var61 /* : null */;
252 short int var62 /* : Bool */;
253 short int var63 /* : Bool */;
254 val* var64 /* : MModule */;
255 val* var66 /* : MModule */;
256 val* var67 /* : MPropDef */;
257 val* var_d /* var d: MMethodDef */;
258 var_callsite = p0;
259 {
260 { /* Inline typing#CallSite#recv (var_callsite) on <var_callsite:CallSite> */
261 var3 = var_callsite->attrs[COLOR_nit__typing__CallSite___recv].val; /* _recv on <var_callsite:CallSite> */
262 if (unlikely(var3 == NULL)) {
263 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _recv");
264 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 473);
265 show_backtrace(1);
266 }
267 var1 = var3;
268 RET_LABEL2:(void)0;
269 }
270 }
271 var_mtype = var1;
272 {
273 { /* Inline typing#CallSite#anchor (var_callsite) on <var_callsite:CallSite> */
274 var6 = var_callsite->attrs[COLOR_nit__typing__CallSite___anchor].val; /* _anchor on <var_callsite:CallSite> */
275 var4 = var6;
276 RET_LABEL5:(void)0;
277 }
278 }
279 var_anchor = var4;
280 var7 = NULL;
281 if (var_anchor == NULL) {
282 var8 = 0; /* is null */
283 } else {
284 var8 = 1; /* arg is null and recv is not */
285 }
286 if (0) {
287 { /* Inline kernel#Object#!= (var_anchor,var7) on <var_anchor:nullable MClassType> */
288 var_other = var7;
289 {
290 var11 = ((short int (*)(val* self, val* p0))(var_anchor->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_anchor, var_other) /* == on <var_anchor:nullable MClassType(MClassType)>*/;
291 }
292 var12 = !var11;
293 var9 = var12;
294 goto RET_LABEL10;
295 RET_LABEL10:(void)0;
296 }
297 var8 = var9;
298 }
299 if (var8){
300 {
301 { /* Inline typing#CallSite#mmodule (var_callsite) on <var_callsite:CallSite> */
302 var15 = var_callsite->attrs[COLOR_nit__typing__CallSite___mmodule].val; /* _mmodule on <var_callsite:CallSite> */
303 if (unlikely(var15 == NULL)) {
304 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
305 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 476);
306 show_backtrace(1);
307 }
308 var13 = var15;
309 RET_LABEL14:(void)0;
310 }
311 }
312 {
313 var16 = ((val* (*)(val* self, val* p0, val* p1))(var_mtype->class->vft[COLOR_nit__model__MType__anchor_to]))(var_mtype, var13, var_anchor) /* anchor_to on <var_mtype:MType>*/;
314 }
315 var_mtype = var16;
316 } else {
317 }
318 {
319 var17 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__as_notnullable]))(var_mtype) /* as_notnullable on <var_mtype:MType>*/;
320 }
321 var_mtype = var17;
322 /* <var_mtype:MType> isa MClassType */
323 cltype = type_nit__MClassType.color;
324 idtype = type_nit__MClassType.id;
325 if(cltype >= var_mtype->type->table_size) {
326 var18 = 0;
327 } else {
328 var18 = var_mtype->type->type_table[cltype] == idtype;
329 }
330 if (var18){
331 {
332 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MClassType)> */
333 var21 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
334 if (unlikely(var21 == NULL)) {
335 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
336 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
337 show_backtrace(1);
338 }
339 var19 = var21;
340 RET_LABEL20:(void)0;
341 }
342 }
343 {
344 { /* Inline model#MClass#intro (var19) on <var19:MClass> */
345 var24 = var19->attrs[COLOR_nit__model__MClass___intro].val; /* _intro on <var19:MClass> */
346 if (unlikely(var24 == NULL)) {
347 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
348 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 423);
349 show_backtrace(1);
350 }
351 var22 = var24;
352 RET_LABEL23:(void)0;
353 }
354 }
355 {
356 { /* Inline model#MClassDef#bound_mtype (var22) on <var22:MClassDef> */
357 var27 = var22->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var22:MClassDef> */
358 if (unlikely(var27 == NULL)) {
359 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
360 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
361 show_backtrace(1);
362 }
363 var25 = var27;
364 RET_LABEL26:(void)0;
365 }
366 }
367 var_mtype = var25;
368 } else {
369 }
370 {
371 { /* Inline typing#CallSite#mproperty (var_callsite) on <var_callsite:CallSite> */
372 var30 = var_callsite->attrs[COLOR_nit__typing__CallSite___mproperty].val; /* _mproperty on <var_callsite:CallSite> */
373 if (unlikely(var30 == NULL)) {
374 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
375 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 487);
376 show_backtrace(1);
377 }
378 var28 = var30;
379 RET_LABEL29:(void)0;
380 }
381 }
382 var_mproperty = var28;
383 {
384 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_targets_cache (self) on <self:RapidTypeAnalysis> */
385 var33 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_targets_cache].val; /* _live_targets_cache on <self:RapidTypeAnalysis> */
386 if (unlikely(var33 == NULL)) {
387 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_targets_cache");
388 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 81);
389 show_backtrace(1);
390 }
391 var31 = var33;
392 RET_LABEL32:(void)0;
393 }
394 }
395 {
396 var34 = more_collections___more_collections__HashMap2____91d_93d(var31, var_mtype, var_mproperty);
397 }
398 var_res = var34;
399 var35 = NULL;
400 if (var_res == NULL) {
401 var36 = 0; /* is null */
402 } else {
403 var36 = 1; /* arg is null and recv is not */
404 }
405 if (0) {
406 { /* Inline kernel#Object#!= (var_res,var35) on <var_res:nullable Set[MMethodDef]> */
407 var_other = var35;
408 {
409 var39 = ((short int (*)(val* self, val* p0))(var_res->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable Set[MMethodDef](Set[MMethodDef])>*/;
410 }
411 var40 = !var39;
412 var37 = var40;
413 goto RET_LABEL38;
414 RET_LABEL38:(void)0;
415 }
416 var36 = var37;
417 }
418 if (var36){
419 var = var_res;
420 goto RET_LABEL;
421 } else {
422 }
423 var41 = NEW_standard__ArraySet(&type_standard__ArraySet__nit__MMethodDef);
424 {
425 standard___standard__ArraySet___standard__kernel__Object__init(var41); /* Direct call array#ArraySet#init on <var41:ArraySet[MMethodDef]>*/
426 }
427 var_res = var41;
428 {
429 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_targets_cache (self) on <self:RapidTypeAnalysis> */
430 var44 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_targets_cache].val; /* _live_targets_cache on <self:RapidTypeAnalysis> */
431 if (unlikely(var44 == NULL)) {
432 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_targets_cache");
433 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 81);
434 show_backtrace(1);
435 }
436 var42 = var44;
437 RET_LABEL43:(void)0;
438 }
439 }
440 {
441 more_collections___more_collections__HashMap2____91d_93d_61d(var42, var_mtype, var_mproperty, var_res); /* Direct call more_collections#HashMap2#[]= on <var42:HashMap2[MType, MProperty, Set[MMethodDef]]>*/
442 }
443 {
444 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_classes (self) on <self:RapidTypeAnalysis> */
445 var47 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_classes].val; /* _live_classes on <self:RapidTypeAnalysis> */
446 if (unlikely(var47 == NULL)) {
447 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_classes");
448 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 62);
449 show_backtrace(1);
450 }
451 var45 = var47;
452 RET_LABEL46:(void)0;
453 }
454 }
455 var_ = var45;
456 {
457 var48 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_);
458 }
459 var_49 = var48;
460 for(;;) {
461 {
462 var50 = ((short int (*)(val* self))(var_49->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_49) /* is_ok on <var_49:Iterator[MClass]>*/;
463 }
464 if (var50){
465 {
466 var51 = ((val* (*)(val* self))(var_49->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_49) /* item on <var_49:Iterator[MClass]>*/;
467 }
468 var_c = var51;
469 {
470 { /* Inline model#MClass#intro (var_c) on <var_c:MClass> */
471 var54 = var_c->attrs[COLOR_nit__model__MClass___intro].val; /* _intro on <var_c:MClass> */
472 if (unlikely(var54 == NULL)) {
473 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
474 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 423);
475 show_backtrace(1);
476 }
477 var52 = var54;
478 RET_LABEL53:(void)0;
479 }
480 }
481 {
482 { /* Inline model#MClassDef#bound_mtype (var52) on <var52:MClassDef> */
483 var57 = var52->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var52:MClassDef> */
484 if (unlikely(var57 == NULL)) {
485 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
486 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
487 show_backtrace(1);
488 }
489 var55 = var57;
490 RET_LABEL56:(void)0;
491 }
492 }
493 var_tc = var55;
494 {
495 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
496 var60 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
497 if (unlikely(var60 == NULL)) {
498 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
499 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
500 show_backtrace(1);
501 }
502 var58 = var60;
503 RET_LABEL59:(void)0;
504 }
505 }
506 var61 = NULL;
507 {
508 var62 = nit___nit__MType___is_subtype(var_tc, var58, var61, var_mtype);
509 }
510 var63 = !var62;
511 if (var63){
512 goto BREAK_label;
513 } else {
514 }
515 {
516 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
517 var66 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
518 if (unlikely(var66 == NULL)) {
519 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
520 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
521 show_backtrace(1);
522 }
523 var64 = var66;
524 RET_LABEL65:(void)0;
525 }
526 }
527 {
528 var67 = nit___nit__MProperty___lookup_first_definition(var_mproperty, var64, var_tc);
529 }
530 var_d = var67;
531 {
532 standard___standard__ArraySet___standard__abstract_collection__SimpleCollection__add(var_res, var_d); /* Direct call array#ArraySet#add on <var_res:nullable Set[MMethodDef](ArraySet[MMethodDef])>*/
533 }
534 BREAK_label: (void)0;
535 {
536 ((void (*)(val* self))(var_49->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_49) /* next on <var_49:Iterator[MClass]>*/;
537 }
538 } else {
539 goto BREAK_label68;
540 }
541 }
542 BREAK_label68: (void)0;
543 {
544 { /* Inline abstract_collection#Iterator#finish (var_49) on <var_49:Iterator[MClass]> */
545 RET_LABEL69:(void)0;
546 }
547 }
548 var = var_res;
549 goto RET_LABEL;
550 RET_LABEL:;
551 return var;
552 }
553 /* method rapid_type_analysis#RapidTypeAnalysis#live_super_sends for (self: RapidTypeAnalysis): HashSet[MMethodDef] */
554 val* nit___nit__RapidTypeAnalysis___live_super_sends(val* self) {
555 val* var /* : HashSet[MMethodDef] */;
556 val* var1 /* : HashSet[MMethodDef] */;
557 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_super_sends].val; /* _live_super_sends on <self:RapidTypeAnalysis> */
558 if (unlikely(var1 == NULL)) {
559 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_super_sends");
560 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 107);
561 show_backtrace(1);
562 }
563 var = var1;
564 RET_LABEL:;
565 return var;
566 }
567 /* method rapid_type_analysis#RapidTypeAnalysis#totry_methods for (self: RapidTypeAnalysis): HashSet[MMethod] */
568 val* nit___nit__RapidTypeAnalysis___totry_methods(val* self) {
569 val* var /* : HashSet[MMethod] */;
570 val* var1 /* : HashSet[MMethod] */;
571 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___totry_methods].val; /* _totry_methods on <self:RapidTypeAnalysis> */
572 if (unlikely(var1 == NULL)) {
573 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods");
574 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 162);
575 show_backtrace(1);
576 }
577 var = var1;
578 RET_LABEL:;
579 return var;
580 }
581 /* method rapid_type_analysis#RapidTypeAnalysis#totry_methods_to_remove for (self: RapidTypeAnalysis): Array[MMethod] */
582 val* nit___nit__RapidTypeAnalysis___totry_methods_to_remove(val* self) {
583 val* var /* : Array[MMethod] */;
584 val* var1 /* : Array[MMethod] */;
585 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___totry_methods_to_remove].val; /* _totry_methods_to_remove on <self:RapidTypeAnalysis> */
586 if (unlikely(var1 == NULL)) {
587 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods_to_remove");
588 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 165);
589 show_backtrace(1);
590 }
591 var = var1;
592 RET_LABEL:;
593 return var;
594 }
595 /* method rapid_type_analysis#RapidTypeAnalysis#try_methods for (self: RapidTypeAnalysis): HashSet[MMethod] */
596 val* nit___nit__RapidTypeAnalysis___try_methods(val* self) {
597 val* var /* : HashSet[MMethod] */;
598 val* var1 /* : HashSet[MMethod] */;
599 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___try_methods].val; /* _try_methods on <self:RapidTypeAnalysis> */
600 if (unlikely(var1 == NULL)) {
601 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _try_methods");
602 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 168);
603 show_backtrace(1);
604 }
605 var = var1;
606 RET_LABEL:;
607 return var;
608 }
609 /* method rapid_type_analysis#RapidTypeAnalysis#todo for (self: RapidTypeAnalysis): List[MMethodDef] */
610 val* nit___nit__RapidTypeAnalysis___todo(val* self) {
611 val* var /* : List[MMethodDef] */;
612 val* var1 /* : List[MMethodDef] */;
613 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___todo].val; /* _todo on <self:RapidTypeAnalysis> */
614 if (unlikely(var1 == NULL)) {
615 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _todo");
616 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 172);
617 show_backtrace(1);
618 }
619 var = var1;
620 RET_LABEL:;
621 return var;
622 }
623 /* method rapid_type_analysis#RapidTypeAnalysis#force_alive for (self: RapidTypeAnalysis, String) */
624 void nit___nit__RapidTypeAnalysis___force_alive(val* self, val* p0) {
625 val* var_classname /* var classname: String */;
626 val* var /* : ModelBuilder */;
627 val* var2 /* : ModelBuilder */;
628 val* var3 /* : Model */;
629 val* var5 /* : Model */;
630 val* var6 /* : nullable Array[MClass] */;
631 val* var_classes /* var classes: nullable Array[MClass] */;
632 val* var7 /* : null */;
633 short int var8 /* : Bool */;
634 short int var9 /* : Bool */;
635 val* var_other /* var other: nullable Object */;
636 short int var11 /* : Bool */;
637 short int var12 /* : Bool */;
638 val* var_ /* var : Array[MClass] */;
639 val* var13 /* : ArrayIterator[nullable Object] */;
640 val* var_14 /* var : ArrayIterator[MClass] */;
641 short int var15 /* : Bool */;
642 val* var16 /* : nullable Object */;
643 val* var_c /* var c: MClass */;
644 val* var17 /* : MClassType */;
645 val* var19 /* : MClassType */;
646 val* var20 /* : MClassType */;
647 val* var22 /* : MClassType */;
648 var_classname = p0;
649 {
650 { /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (self) on <self:RapidTypeAnalysis> */
651 var2 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on <self:RapidTypeAnalysis> */
652 if (unlikely(var2 == NULL)) {
653 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
654 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 46);
655 show_backtrace(1);
656 }
657 var = var2;
658 RET_LABEL1:(void)0;
659 }
660 }
661 {
662 { /* Inline modelbuilder_base#ModelBuilder#model (var) on <var:ModelBuilder> */
663 var5 = var->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___model].val; /* _model on <var:ModelBuilder> */
664 if (unlikely(var5 == NULL)) {
665 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
666 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 44);
667 show_backtrace(1);
668 }
669 var3 = var5;
670 RET_LABEL4:(void)0;
671 }
672 }
673 {
674 var6 = nit__model___Model___get_mclasses_by_name(var3, var_classname);
675 }
676 var_classes = var6;
677 var7 = NULL;
678 if (var_classes == NULL) {
679 var8 = 0; /* is null */
680 } else {
681 var8 = 1; /* arg is null and recv is not */
682 }
683 if (0) {
684 { /* Inline kernel#Object#!= (var_classes,var7) on <var_classes:nullable Array[MClass]> */
685 var_other = var7;
686 {
687 var11 = ((short int (*)(val* self, val* p0))(var_classes->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_classes, var_other) /* == on <var_classes:nullable Array[MClass](Array[MClass])>*/;
688 }
689 var12 = !var11;
690 var9 = var12;
691 goto RET_LABEL10;
692 RET_LABEL10:(void)0;
693 }
694 var8 = var9;
695 }
696 if (var8){
697 var_ = var_classes;
698 {
699 var13 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
700 }
701 var_14 = var13;
702 for(;;) {
703 {
704 var15 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_14);
705 }
706 if (var15){
707 {
708 var16 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_14);
709 }
710 var_c = var16;
711 {
712 { /* Inline model#MClass#mclass_type (var_c) on <var_c:MClass> */
713 var19 = var_c->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var_c:MClass> */
714 if (unlikely(var19 == NULL)) {
715 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
716 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438);
717 show_backtrace(1);
718 }
719 var17 = var19;
720 RET_LABEL18:(void)0;
721 }
722 }
723 {
724 { /* Inline model#MClass#mclass_type (var_c) on <var_c:MClass> */
725 var22 = var_c->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var_c:MClass> */
726 if (unlikely(var22 == NULL)) {
727 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
728 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438);
729 show_backtrace(1);
730 }
731 var20 = var22;
732 RET_LABEL21:(void)0;
733 }
734 }
735 {
736 nit___nit__RapidTypeAnalysis___add_new(self, var17, var20); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_new on <self:RapidTypeAnalysis>*/
737 }
738 {
739 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_14); /* Direct call array#ArrayIterator#next on <var_14:ArrayIterator[MClass]>*/
740 }
741 } else {
742 goto BREAK_label;
743 }
744 }
745 BREAK_label: (void)0;
746 {
747 { /* Inline abstract_collection#Iterator#finish (var_14) on <var_14:ArrayIterator[MClass]> */
748 RET_LABEL23:(void)0;
749 }
750 }
751 } else {
752 }
753 RET_LABEL:;
754 }
755 /* method rapid_type_analysis#RapidTypeAnalysis#run_analysis for (self: RapidTypeAnalysis) */
756 void nit___nit__RapidTypeAnalysis___run_analysis(val* self) {
757 val* var /* : MModule */;
758 val* var2 /* : MModule */;
759 val* var3 /* : nullable MClassType */;
760 val* var_maintype /* var maintype: nullable MClassType */;
761 val* var4 /* : null */;
762 short int var5 /* : Bool */;
763 short int var6 /* : Bool */;
764 val* var_other /* var other: nullable Object */;
765 short int var8 /* : Bool */;
766 short int var10 /* : Bool */;
767 val* var11 /* : MModule */;
768 val* var13 /* : MModule */;
769 static val* varonce;
770 val* var14 /* : String */;
771 char* var15 /* : NativeString */;
772 long var16 /* : Int */;
773 val* var17 /* : FlatString */;
774 val* var18 /* : MClass */;
775 val* var20 /* : MClass */;
776 val* var21 /* : nullable MMethod */;
777 val* var_initprop /* var initprop: nullable MMethod */;
778 val* var22 /* : null */;
779 short int var23 /* : Bool */;
780 short int var24 /* : Bool */;
781 val* var_other26 /* var other: nullable Object */;
782 short int var27 /* : Bool */;
783 short int var28 /* : Bool */;
784 val* var29 /* : nullable MMethod */;
785 val* var30 /* : MModule */;
786 val* var32 /* : MModule */;
787 static val* varonce33;
788 val* var34 /* : String */;
789 char* var35 /* : NativeString */;
790 long var36 /* : Int */;
791 val* var37 /* : FlatString */;
792 val* var38 /* : MClass */;
793 val* var40 /* : MClass */;
794 val* var41 /* : nullable MMethod */;
795 val* var42 /* : MModule */;
796 val* var44 /* : MModule */;
797 static val* varonce45;
798 val* var46 /* : String */;
799 char* var47 /* : NativeString */;
800 long var48 /* : Int */;
801 val* var49 /* : FlatString */;
802 val* var50 /* : MClass */;
803 val* var52 /* : MClass */;
804 val* var53 /* : nullable MMethod */;
805 val* var_mainprop /* var mainprop: nullable MMethod */;
806 val* var54 /* : null */;
807 short int var55 /* : Bool */;
808 short int var56 /* : Bool */;
809 short int var58 /* : Bool */;
810 short int var59 /* : Bool */;
811 val* var60 /* : MModule */;
812 val* var62 /* : MModule */;
813 val* var63 /* : nullable MClassType */;
814 val* var_finalizable_type /* var finalizable_type: nullable MClassType */;
815 val* var64 /* : null */;
816 short int var65 /* : Bool */;
817 short int var66 /* : Bool */;
818 short int var68 /* : Bool */;
819 short int var69 /* : Bool */;
820 val* var70 /* : MModule */;
821 val* var72 /* : MModule */;
822 static val* varonce73;
823 val* var74 /* : String */;
824 char* var75 /* : NativeString */;
825 long var76 /* : Int */;
826 val* var77 /* : FlatString */;
827 val* var78 /* : MClass */;
828 val* var80 /* : MClass */;
829 val* var81 /* : nullable MMethod */;
830 val* var_finalize_meth /* var finalize_meth: nullable MMethod */;
831 val* var82 /* : null */;
832 short int var83 /* : Bool */;
833 short int var84 /* : Bool */;
834 short int var86 /* : Bool */;
835 short int var87 /* : Bool */;
836 static val* varonce88;
837 val* var89 /* : String */;
838 char* var90 /* : NativeString */;
839 long var91 /* : Int */;
840 val* var92 /* : FlatString */;
841 static val* varonce93;
842 val* var94 /* : String */;
843 char* var95 /* : NativeString */;
844 long var96 /* : Int */;
845 val* var97 /* : FlatString */;
846 static val* varonce98;
847 val* var99 /* : String */;
848 char* var100 /* : NativeString */;
849 long var101 /* : Int */;
850 val* var102 /* : FlatString */;
851 static val* varonce103;
852 val* var104 /* : String */;
853 char* var105 /* : NativeString */;
854 long var106 /* : Int */;
855 val* var107 /* : FlatString */;
856 static val* varonce108;
857 val* var109 /* : String */;
858 char* var110 /* : NativeString */;
859 long var111 /* : Int */;
860 val* var112 /* : FlatString */;
861 val* var113 /* : List[MMethodDef] */;
862 val* var115 /* : List[MMethodDef] */;
863 short int var116 /* : Bool */;
864 short int var117 /* : Bool */;
865 val* var118 /* : List[MMethodDef] */;
866 val* var120 /* : List[MMethodDef] */;
867 val* var121 /* : nullable Object */;
868 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
869 val* var122 /* : MProperty */;
870 val* var124 /* : MProperty */;
871 val* var_mmeth /* var mmeth: MMethod */;
872 val* var125 /* : RapidTypeVisitor */;
873 val* var126 /* : MClassDef */;
874 val* var128 /* : MClassDef */;
875 val* var129 /* : MClassType */;
876 val* var131 /* : MClassType */;
877 val* var_v /* var v: RapidTypeVisitor */;
878 val* var132 /* : nullable MSignature */;
879 val* var134 /* : nullable MSignature */;
880 long var135 /* : Int */;
881 long var137 /* : Int */;
882 long var_vararg_rank /* var vararg_rank: Int */;
883 long var138 /* : Int */;
884 long var139 /* : Int */;
885 long var141 /* : Int */;
886 short int var142 /* : Bool */;
887 short int var144 /* : Bool */;
888 int cltype;
889 int idtype;
890 const char* var_class_name;
891 short int var145 /* : Bool */;
892 val* var146 /* : ModelBuilder */;
893 val* var148 /* : ModelBuilder */;
894 val* var149 /* : nullable ANode */;
895 val* var_node /* var node: nullable ANode */;
896 val* var150 /* : nullable MSignature */;
897 val* var152 /* : nullable MSignature */;
898 val* var153 /* : Array[MParameter] */;
899 val* var155 /* : Array[MParameter] */;
900 val* var156 /* : nullable Object */;
901 val* var157 /* : MType */;
902 val* var159 /* : MType */;
903 val* var_elttype /* var elttype: MType */;
904 val* var160 /* : MModule */;
905 val* var162 /* : MModule */;
906 static val* varonce163;
907 val* var164 /* : String */;
908 char* var165 /* : NativeString */;
909 long var166 /* : Int */;
910 val* var167 /* : FlatString */;
911 val* var168 /* : MClass */;
912 val* var169 /* : Array[MType] */;
913 long var170 /* : Int */;
914 val* var_ /* var : Array[MType] */;
915 val* var171 /* : MClassType */;
916 val* var_vararg /* var vararg: MClassType */;
917 val* var172 /* : MModule */;
918 val* var174 /* : MModule */;
919 static val* varonce175;
920 val* var176 /* : String */;
921 char* var177 /* : NativeString */;
922 long var178 /* : Int */;
923 val* var179 /* : FlatString */;
924 val* var180 /* : MClass */;
925 val* var181 /* : Array[MType] */;
926 long var182 /* : Int */;
927 val* var_183 /* var : Array[MType] */;
928 val* var184 /* : MClassType */;
929 val* var_native /* var native: MClassType */;
930 val* var185 /* : ModelBuilder */;
931 val* var187 /* : ModelBuilder */;
932 static val* varonce188;
933 val* var189 /* : String */;
934 char* var190 /* : NativeString */;
935 long var191 /* : Int */;
936 val* var192 /* : FlatString */;
937 val* var193 /* : MClass */;
938 val* var195 /* : MClass */;
939 val* var196 /* : MModule */;
940 val* var198 /* : MModule */;
941 val* var199 /* : MMethod */;
942 val* var200 /* : nullable MSignature */;
943 val* var202 /* : nullable MSignature */;
944 val* var_sig /* var sig: MSignature */;
945 val* var203 /* : MPropDef */;
946 val* var205 /* : MPropDef */;
947 val* var206 /* : nullable MSignature */;
948 val* var208 /* : nullable MSignature */;
949 val* var_osig /* var osig: MSignature */;
950 long var209 /* : Int */;
951 long var_i /* var i: Int */;
952 long var210 /* : Int */;
953 long var_211 /* var : Int */;
954 short int var212 /* : Bool */;
955 short int var214 /* : Bool */;
956 int cltype215;
957 int idtype216;
958 const char* var_class_name217;
959 short int var218 /* : Bool */;
960 val* var219 /* : Array[MParameter] */;
961 val* var221 /* : Array[MParameter] */;
962 val* var222 /* : nullable Object */;
963 val* var223 /* : MType */;
964 val* var225 /* : MType */;
965 val* var_origtype /* var origtype: MType */;
966 short int var226 /* : Bool */;
967 short int var227 /* : Bool */;
968 val* var228 /* : Array[MParameter] */;
969 val* var230 /* : Array[MParameter] */;
970 val* var231 /* : nullable Object */;
971 val* var232 /* : MType */;
972 val* var234 /* : MType */;
973 val* var_paramtype /* var paramtype: MType */;
974 long var235 /* : Int */;
975 long var236 /* : Int */;
976 val* var238 /* : ModelBuilder */;
977 val* var240 /* : ModelBuilder */;
978 val* var241 /* : nullable ANode */;
979 val* var_npropdef /* var npropdef: nullable ANode */;
980 short int var242 /* : Bool */;
981 int cltype243;
982 int idtype244;
983 val* var245 /* : nullable MMethodDef */;
984 val* var247 /* : nullable MMethodDef */;
985 short int var248 /* : Bool */;
986 short int var250 /* : Bool */;
987 short int var252 /* : Bool */;
988 short int var253 /* : Bool */;
989 val* var254 /* : MProperty */;
990 val* var256 /* : MProperty */;
991 short int var257 /* : Bool */;
992 short int var259 /* : Bool */;
993 short int var_260 /* var : Bool */;
994 short int var261 /* : Bool */;
995 short int var262 /* : Bool */;
996 val* var263 /* : MClassType */;
997 val* var265 /* : MClassType */;
998 val* var267 /* : nullable Object */;
999 val* var269 /* : nullable Object */;
1000 val* var270 /* : null */;
1001 short int var271 /* : Bool */;
1002 short int var272 /* : Bool */;
1003 val* var273 /* : nullable MSignature */;
1004 val* var275 /* : nullable MSignature */;
1005 val* var276 /* : nullable MType */;
1006 val* var278 /* : nullable MType */;
1007 short int var279 /* : Bool */;
1008 int cltype280;
1009 int idtype281;
1010 const char* var_class_name282;
1011 val* var283 /* : null */;
1012 short int var284 /* : Bool */;
1013 short int var285 /* : Bool */;
1014 short int var287 /* : Bool */;
1015 short int var289 /* : Bool */;
1016 short int var290 /* : Bool */;
1017 int cltype291;
1018 int idtype292;
1019 val* var293 /* : nullable Array[CallSite] */;
1020 val* var295 /* : nullable Array[CallSite] */;
1021 val* var_auto_super_inits /* var auto_super_inits: nullable Array[CallSite] */;
1022 val* var296 /* : null */;
1023 short int var297 /* : Bool */;
1024 short int var298 /* : Bool */;
1025 short int var300 /* : Bool */;
1026 short int var301 /* : Bool */;
1027 val* var_302 /* var : Array[CallSite] */;
1028 val* var303 /* : ArrayIterator[nullable Object] */;
1029 val* var_304 /* var : ArrayIterator[CallSite] */;
1030 short int var305 /* : Bool */;
1031 val* var306 /* : nullable Object */;
1032 val* var_auto_super_init /* var auto_super_init: CallSite */;
1033 short int var309 /* : Bool */;
1034 short int var311 /* : Bool */;
1035 val* var312 /* : MClassType */;
1036 val* var314 /* : MClassType */;
1037 short int var315 /* : Bool */;
1038 short int var316 /* : Bool */;
1039 short int var318 /* : Bool */;
1040 short int var_319 /* var : Bool */;
1041 short int var320 /* : Bool */;
1042 short int var322 /* : Bool */;
1043 val* var323 /* : nullable MSignature */;
1044 val* var325 /* : nullable MSignature */;
1045 val* var326 /* : nullable MType */;
1046 val* var328 /* : nullable MType */;
1047 val* var_ret /* var ret: nullable MType */;
1048 short int var329 /* : Bool */;
1049 short int var330 /* : Bool */;
1050 short int var331 /* : Bool */;
1051 val* var332 /* : null */;
1052 short int var333 /* : Bool */;
1053 short int var334 /* : Bool */;
1054 short int var336 /* : Bool */;
1055 short int var337 /* : Bool */;
1056 short int var_338 /* var : Bool */;
1057 short int var339 /* : Bool */;
1058 int cltype340;
1059 int idtype341;
1060 short int var_342 /* var : Bool */;
1061 val* var343 /* : MClass */;
1062 val* var345 /* : MClass */;
1063 val* var346 /* : MClassKind */;
1064 val* var348 /* : MClassKind */;
1065 val* var349 /* : MClassKind */;
1066 short int var350 /* : Bool */;
1067 short int var352 /* : Bool */;
1068 short int var353 /* : Bool */;
1069 short int var_354 /* var : Bool */;
1070 val* var355 /* : MClass */;
1071 val* var357 /* : MClass */;
1072 val* var358 /* : MClassKind */;
1073 val* var360 /* : MClassKind */;
1074 val* var361 /* : MClassKind */;
1075 short int var362 /* : Bool */;
1076 short int var364 /* : Bool */;
1077 short int var365 /* : Bool */;
1078 val* var367 /* : List[MClassType] */;
1079 val* var_todo_types /* var todo_types: List[MClassType] */;
1080 val* var369 /* : HashSet[MClassType] */;
1081 val* var371 /* : HashSet[MClassType] */;
1082 short int var372 /* : Bool */;
1083 short int var373 /* : Bool */;
1084 val* var374 /* : nullable Object */;
1085 val* var_t /* var t: MClassType */;
1086 val* var375 /* : HashSet[MClassType] */;
1087 val* var377 /* : HashSet[MClassType] */;
1088 val* var_378 /* var : HashSet[MClassType] */;
1089 val* var379 /* : Iterator[nullable Object] */;
1090 val* var_380 /* var : Iterator[MClassType] */;
1091 short int var381 /* : Bool */;
1092 val* var382 /* : nullable Object */;
1093 val* var_ot /* var ot: MClassType */;
1094 val* var383 /* : MModule */;
1095 val* var385 /* : MModule */;
1096 short int var386 /* : Bool */;
1097 short int var387 /* : Bool */;
1098 val* var389 /* : MModule */;
1099 val* var391 /* : MModule */;
1100 val* var392 /* : MClassType */;
1101 val* var_rt /* var rt: MClassType */;
1102 val* var393 /* : HashSet[MClassType] */;
1103 val* var395 /* : HashSet[MClassType] */;
1104 short int var396 /* : Bool */;
1105 val* var397 /* : HashSet[MClassType] */;
1106 val* var399 /* : HashSet[MClassType] */;
1107 val* var403 /* : HashSet[MType] */;
1108 val* var405 /* : HashSet[MType] */;
1109 val* var_406 /* var : HashSet[MType] */;
1110 val* var407 /* : Iterator[nullable Object] */;
1111 val* var_408 /* var : Iterator[MType] */;
1112 short int var409 /* : Bool */;
1113 val* var410 /* : nullable Object */;
1114 val* var_ot411 /* var ot: MType */;
1115 val* var412 /* : HashSet[MClassType] */;
1116 val* var414 /* : HashSet[MClassType] */;
1117 val* var_415 /* var : HashSet[MClassType] */;
1118 val* var416 /* : Iterator[nullable Object] */;
1119 val* var_417 /* var : Iterator[MClassType] */;
1120 short int var418 /* : Bool */;
1121 val* var419 /* : nullable Object */;
1122 val* var_t420 /* var t: MClassType */;
1123 val* var421 /* : MModule */;
1124 val* var423 /* : MModule */;
1125 short int var424 /* : Bool */;
1126 short int var425 /* : Bool */;
1127 val* var427 /* : MModule */;
1128 val* var429 /* : MModule */;
1129 val* var430 /* : MType */;
1130 val* var_rt431 /* var rt: MType */;
1131 val* var432 /* : HashSet[MType] */;
1132 val* var434 /* : HashSet[MType] */;
1133 {
1134 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
1135 var2 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
1136 if (unlikely(var2 == NULL)) {
1137 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1138 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
1139 show_backtrace(1);
1140 }
1141 var = var2;
1142 RET_LABEL1:(void)0;
1143 }
1144 }
1145 {
1146 var3 = nit__model___MModule___sys_type(var);
1147 }
1148 var_maintype = var3;
1149 var4 = NULL;
1150 if (var_maintype == NULL) {
1151 var5 = 1; /* is null */
1152 } else {
1153 var5 = 0; /* arg is null but recv is not */
1154 }
1155 if (0) {
1156 { /* Inline kernel#Object#== (var_maintype,var4) on <var_maintype:nullable MClassType> */
1157 var_other = var4;
1158 {
1159 { /* Inline kernel#Object#is_same_instance (var_maintype,var_other) on <var_maintype:nullable MClassType(MClassType)> */
1160 var10 = var_maintype == var_other;
1161 var8 = var10;
1162 goto RET_LABEL9;
1163 RET_LABEL9:(void)0;
1164 }
1165 }
1166 var6 = var8;
1167 goto RET_LABEL7;
1168 RET_LABEL7:(void)0;
1169 }
1170 var5 = var6;
1171 }
1172 if (var5){
1173 goto RET_LABEL;
1174 } else {
1175 }
1176 {
1177 nit___nit__RapidTypeAnalysis___add_new(self, var_maintype, var_maintype); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_new on <self:RapidTypeAnalysis>*/
1178 }
1179 {
1180 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
1181 var13 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
1182 if (unlikely(var13 == NULL)) {
1183 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1184 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
1185 show_backtrace(1);
1186 }
1187 var11 = var13;
1188 RET_LABEL12:(void)0;
1189 }
1190 }
1191 if (varonce) {
1192 var14 = varonce;
1193 } else {
1194 var15 = "init";
1195 var16 = 4;
1196 var17 = standard___standard__NativeString___to_s_with_length(var15, var16);
1197 var14 = var17;
1198 varonce = var14;
1199 }
1200 {
1201 { /* Inline model#MClassType#mclass (var_maintype) on <var_maintype:nullable MClassType(MClassType)> */
1202 var20 = var_maintype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_maintype:nullable MClassType(MClassType)> */
1203 if (unlikely(var20 == NULL)) {
1204 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
1205 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
1206 show_backtrace(1);
1207 }
1208 var18 = var20;
1209 RET_LABEL19:(void)0;
1210 }
1211 }
1212 {
1213 var21 = nit__model___MModule___try_get_primitive_method(var11, var14, var18);
1214 }
1215 var_initprop = var21;
1216 var22 = NULL;
1217 if (var_initprop == NULL) {
1218 var23 = 0; /* is null */
1219 } else {
1220 var23 = 1; /* arg is null and recv is not */
1221 }
1222 if (0) {
1223 { /* Inline kernel#Object#!= (var_initprop,var22) on <var_initprop:nullable MMethod> */
1224 var_other26 = var22;
1225 {
1226 var27 = ((short int (*)(val* self, val* p0))(var_initprop->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_initprop, var_other26) /* == on <var_initprop:nullable MMethod(MMethod)>*/;
1227 }
1228 var28 = !var27;
1229 var24 = var28;
1230 goto RET_LABEL25;
1231 RET_LABEL25:(void)0;
1232 }
1233 var23 = var24;
1234 }
1235 if (var23){
1236 {
1237 nit___nit__RapidTypeAnalysis___add_send(self, var_maintype, var_initprop); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_send on <self:RapidTypeAnalysis>*/
1238 }
1239 } else {
1240 }
1241 {
1242 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
1243 var32 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
1244 if (unlikely(var32 == NULL)) {
1245 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1246 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
1247 show_backtrace(1);
1248 }
1249 var30 = var32;
1250 RET_LABEL31:(void)0;
1251 }
1252 }
1253 if (varonce33) {
1254 var34 = varonce33;
1255 } else {
1256 var35 = "run";
1257 var36 = 3;
1258 var37 = standard___standard__NativeString___to_s_with_length(var35, var36);
1259 var34 = var37;
1260 varonce33 = var34;
1261 }
1262 {
1263 { /* Inline model#MClassType#mclass (var_maintype) on <var_maintype:nullable MClassType(MClassType)> */
1264 var40 = var_maintype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_maintype:nullable MClassType(MClassType)> */
1265 if (unlikely(var40 == NULL)) {
1266 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
1267 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
1268 show_backtrace(1);
1269 }
1270 var38 = var40;
1271 RET_LABEL39:(void)0;
1272 }
1273 }
1274 {
1275 var41 = nit__model___MModule___try_get_primitive_method(var30, var34, var38);
1276 }
1277 if (var41!=NULL) {
1278 var29 = var41;
1279 } else {
1280 {
1281 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
1282 var44 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
1283 if (unlikely(var44 == NULL)) {
1284 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1285 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
1286 show_backtrace(1);
1287 }
1288 var42 = var44;
1289 RET_LABEL43:(void)0;
1290 }
1291 }
1292 if (varonce45) {
1293 var46 = varonce45;
1294 } else {
1295 var47 = "main";
1296 var48 = 4;
1297 var49 = standard___standard__NativeString___to_s_with_length(var47, var48);
1298 var46 = var49;
1299 varonce45 = var46;
1300 }
1301 {
1302 { /* Inline model#MClassType#mclass (var_maintype) on <var_maintype:nullable MClassType(MClassType)> */
1303 var52 = var_maintype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_maintype:nullable MClassType(MClassType)> */
1304 if (unlikely(var52 == NULL)) {
1305 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
1306 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
1307 show_backtrace(1);
1308 }
1309 var50 = var52;
1310 RET_LABEL51:(void)0;
1311 }
1312 }
1313 {
1314 var53 = nit__model___MModule___try_get_primitive_method(var42, var46, var50);
1315 }
1316 var29 = var53;
1317 }
1318 var_mainprop = var29;
1319 var54 = NULL;
1320 if (var_mainprop == NULL) {
1321 var55 = 0; /* is null */
1322 } else {
1323 var55 = 1; /* arg is null and recv is not */
1324 }
1325 if (0) {
1326 { /* Inline kernel#Object#!= (var_mainprop,var54) on <var_mainprop:nullable MMethod> */
1327 var_other26 = var54;
1328 {
1329 var58 = ((short int (*)(val* self, val* p0))(var_mainprop->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mainprop, var_other26) /* == on <var_mainprop:nullable MMethod(MMethod)>*/;
1330 }
1331 var59 = !var58;
1332 var56 = var59;
1333 goto RET_LABEL57;
1334 RET_LABEL57:(void)0;
1335 }
1336 var55 = var56;
1337 }
1338 if (var55){
1339 {
1340 nit___nit__RapidTypeAnalysis___add_send(self, var_maintype, var_mainprop); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_send on <self:RapidTypeAnalysis>*/
1341 }
1342 } else {
1343 }
1344 {
1345 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
1346 var62 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
1347 if (unlikely(var62 == NULL)) {
1348 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1349 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
1350 show_backtrace(1);
1351 }
1352 var60 = var62;
1353 RET_LABEL61:(void)0;
1354 }
1355 }
1356 {
1357 var63 = nit__model___MModule___finalizable_type(var60);
1358 }
1359 var_finalizable_type = var63;
1360 var64 = NULL;
1361 if (var_finalizable_type == NULL) {
1362 var65 = 0; /* is null */
1363 } else {
1364 var65 = 1; /* arg is null and recv is not */
1365 }
1366 if (0) {
1367 { /* Inline kernel#Object#!= (var_finalizable_type,var64) on <var_finalizable_type:nullable MClassType> */
1368 var_other26 = var64;
1369 {
1370 var68 = ((short int (*)(val* self, val* p0))(var_finalizable_type->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_finalizable_type, var_other26) /* == on <var_finalizable_type:nullable MClassType(MClassType)>*/;
1371 }
1372 var69 = !var68;
1373 var66 = var69;
1374 goto RET_LABEL67;
1375 RET_LABEL67:(void)0;
1376 }
1377 var65 = var66;
1378 }
1379 if (var65){
1380 {
1381 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
1382 var72 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
1383 if (unlikely(var72 == NULL)) {
1384 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1385 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
1386 show_backtrace(1);
1387 }
1388 var70 = var72;
1389 RET_LABEL71:(void)0;
1390 }
1391 }
1392 if (varonce73) {
1393 var74 = varonce73;
1394 } else {
1395 var75 = "finalize";
1396 var76 = 8;
1397 var77 = standard___standard__NativeString___to_s_with_length(var75, var76);
1398 var74 = var77;
1399 varonce73 = var74;
1400 }
1401 {
1402 { /* Inline model#MClassType#mclass (var_finalizable_type) on <var_finalizable_type:nullable MClassType(MClassType)> */
1403 var80 = var_finalizable_type->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_finalizable_type:nullable MClassType(MClassType)> */
1404 if (unlikely(var80 == NULL)) {
1405 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
1406 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
1407 show_backtrace(1);
1408 }
1409 var78 = var80;
1410 RET_LABEL79:(void)0;
1411 }
1412 }
1413 {
1414 var81 = nit__model___MModule___try_get_primitive_method(var70, var74, var78);
1415 }
1416 var_finalize_meth = var81;
1417 var82 = NULL;
1418 if (var_finalize_meth == NULL) {
1419 var83 = 0; /* is null */
1420 } else {
1421 var83 = 1; /* arg is null and recv is not */
1422 }
1423 if (0) {
1424 { /* Inline kernel#Object#!= (var_finalize_meth,var82) on <var_finalize_meth:nullable MMethod> */
1425 var_other26 = var82;
1426 {
1427 var86 = ((short int (*)(val* self, val* p0))(var_finalize_meth->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_finalize_meth, var_other26) /* == on <var_finalize_meth:nullable MMethod(MMethod)>*/;
1428 }
1429 var87 = !var86;
1430 var84 = var87;
1431 goto RET_LABEL85;
1432 RET_LABEL85:(void)0;
1433 }
1434 var83 = var84;
1435 }
1436 if (var83){
1437 {
1438 nit___nit__RapidTypeAnalysis___add_send(self, var_finalizable_type, var_finalize_meth); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_send on <self:RapidTypeAnalysis>*/
1439 }
1440 } else {
1441 }
1442 } else {
1443 }
1444 if (varonce88) {
1445 var89 = varonce88;
1446 } else {
1447 var90 = "Bool";
1448 var91 = 4;
1449 var92 = standard___standard__NativeString___to_s_with_length(var90, var91);
1450 var89 = var92;
1451 varonce88 = var89;
1452 }
1453 {
1454 nit___nit__RapidTypeAnalysis___force_alive(self, var89); /* Direct call rapid_type_analysis#RapidTypeAnalysis#force_alive on <self:RapidTypeAnalysis>*/
1455 }
1456 if (varonce93) {
1457 var94 = varonce93;
1458 } else {
1459 var95 = "Int";
1460 var96 = 3;
1461 var97 = standard___standard__NativeString___to_s_with_length(var95, var96);
1462 var94 = var97;
1463 varonce93 = var94;
1464 }
1465 {
1466 nit___nit__RapidTypeAnalysis___force_alive(self, var94); /* Direct call rapid_type_analysis#RapidTypeAnalysis#force_alive on <self:RapidTypeAnalysis>*/
1467 }
1468 if (varonce98) {
1469 var99 = varonce98;
1470 } else {
1471 var100 = "Float";
1472 var101 = 5;
1473 var102 = standard___standard__NativeString___to_s_with_length(var100, var101);
1474 var99 = var102;
1475 varonce98 = var99;
1476 }
1477 {
1478 nit___nit__RapidTypeAnalysis___force_alive(self, var99); /* Direct call rapid_type_analysis#RapidTypeAnalysis#force_alive on <self:RapidTypeAnalysis>*/
1479 }
1480 if (varonce103) {
1481 var104 = varonce103;
1482 } else {
1483 var105 = "Char";
1484 var106 = 4;
1485 var107 = standard___standard__NativeString___to_s_with_length(var105, var106);
1486 var104 = var107;
1487 varonce103 = var104;
1488 }
1489 {
1490 nit___nit__RapidTypeAnalysis___force_alive(self, var104); /* Direct call rapid_type_analysis#RapidTypeAnalysis#force_alive on <self:RapidTypeAnalysis>*/
1491 }
1492 if (varonce108) {
1493 var109 = varonce108;
1494 } else {
1495 var110 = "Pointer";
1496 var111 = 7;
1497 var112 = standard___standard__NativeString___to_s_with_length(var110, var111);
1498 var109 = var112;
1499 varonce108 = var109;
1500 }
1501 {
1502 nit___nit__RapidTypeAnalysis___force_alive(self, var109); /* Direct call rapid_type_analysis#RapidTypeAnalysis#force_alive on <self:RapidTypeAnalysis>*/
1503 }
1504 for(;;) {
1505 {
1506 { /* Inline rapid_type_analysis#RapidTypeAnalysis#todo (self) on <self:RapidTypeAnalysis> */
1507 var115 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___todo].val; /* _todo on <self:RapidTypeAnalysis> */
1508 if (unlikely(var115 == NULL)) {
1509 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _todo");
1510 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 172);
1511 show_backtrace(1);
1512 }
1513 var113 = var115;
1514 RET_LABEL114:(void)0;
1515 }
1516 }
1517 {
1518 var116 = standard___standard__List___standard__abstract_collection__Collection__is_empty(var113);
1519 }
1520 var117 = !var116;
1521 if (var117){
1522 {
1523 { /* Inline rapid_type_analysis#RapidTypeAnalysis#todo (self) on <self:RapidTypeAnalysis> */
1524 var120 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___todo].val; /* _todo on <self:RapidTypeAnalysis> */
1525 if (unlikely(var120 == NULL)) {
1526 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _todo");
1527 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 172);
1528 show_backtrace(1);
1529 }
1530 var118 = var120;
1531 RET_LABEL119:(void)0;
1532 }
1533 }
1534 {
1535 var121 = standard___standard__List___standard__abstract_collection__Sequence__shift(var118);
1536 }
1537 var_mmethoddef = var121;
1538 {
1539 { /* Inline model#MPropDef#mproperty (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
1540 var124 = var_mmethoddef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mmethoddef:MMethodDef> */
1541 if (unlikely(var124 == NULL)) {
1542 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
1543 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
1544 show_backtrace(1);
1545 }
1546 var122 = var124;
1547 RET_LABEL123:(void)0;
1548 }
1549 }
1550 var_mmeth = var122;
1551 var125 = NEW_nit__RapidTypeVisitor(&type_nit__RapidTypeVisitor);
1552 {
1553 { /* Inline model#MPropDef#mclassdef (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
1554 var128 = var_mmethoddef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mmethoddef:MMethodDef> */
1555 if (unlikely(var128 == NULL)) {
1556 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
1557 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2010);
1558 show_backtrace(1);
1559 }
1560 var126 = var128;
1561 RET_LABEL127:(void)0;
1562 }
1563 }
1564 {
1565 { /* Inline model#MClassDef#bound_mtype (var126) on <var126:MClassDef> */
1566 var131 = var126->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var126:MClassDef> */
1567 if (unlikely(var131 == NULL)) {
1568 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
1569 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
1570 show_backtrace(1);
1571 }
1572 var129 = var131;
1573 RET_LABEL130:(void)0;
1574 }
1575 }
1576 {
1577 ((void (*)(val* self, val* p0))(var125->class->vft[COLOR_nit__rapid_type_analysis__RapidTypeVisitor__analysis_61d]))(var125, self) /* analysis= on <var125:RapidTypeVisitor>*/;
1578 }
1579 {
1580 ((void (*)(val* self, val* p0))(var125->class->vft[COLOR_nit__rapid_type_analysis__RapidTypeVisitor__receiver_61d]))(var125, var129) /* receiver= on <var125:RapidTypeVisitor>*/;
1581 }
1582 {
1583 ((void (*)(val* self, val* p0))(var125->class->vft[COLOR_nit__rapid_type_analysis__RapidTypeVisitor__mpropdef_61d]))(var125, var_mmethoddef) /* mpropdef= on <var125:RapidTypeVisitor>*/;
1584 }
1585 {
1586 ((void (*)(val* self))(var125->class->vft[COLOR_standard__kernel__Object__init]))(var125) /* init on <var125:RapidTypeVisitor>*/;
1587 }
1588 var_v = var125;
1589 {
1590 { /* Inline model#MMethodDef#msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
1591 var134 = var_mmethoddef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
1592 var132 = var134;
1593 RET_LABEL133:(void)0;
1594 }
1595 }
1596 if (var132 == NULL) {
1597 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1598 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 216);
1599 show_backtrace(1);
1600 } else {
1601 { /* Inline model#MSignature#vararg_rank (var132) on <var132:nullable MSignature> */
1602 if (unlikely(var132 == NULL)) {
1603 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1604 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1635);
1605 show_backtrace(1);
1606 }
1607 var137 = var132->attrs[COLOR_nit__model__MSignature___vararg_rank].l; /* _vararg_rank on <var132:nullable MSignature> */
1608 var135 = var137;
1609 RET_LABEL136:(void)0;
1610 }
1611 }
1612 var_vararg_rank = var135;
1613 var138 = 1;
1614 {
1615 { /* Inline kernel#Int#unary - (var138) on <var138:Int> */
1616 var141 = -var138;
1617 var139 = var141;
1618 goto RET_LABEL140;
1619 RET_LABEL140:(void)0;
1620 }
1621 }
1622 {
1623 { /* Inline kernel#Int#> (var_vararg_rank,var139) on <var_vararg_rank:Int> */
1624 /* Covariant cast for argument 0 (i) <var139:Int> isa OTHER */
1625 /* <var139:Int> isa OTHER */
1626 var144 = 1; /* easy <var139:Int> isa OTHER*/
1627 if (unlikely(!var144)) {
1628 var_class_name = type_standard__Int.name;
1629 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1630 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 412);
1631 show_backtrace(1);
1632 }
1633 var145 = var_vararg_rank > var139;
1634 var142 = var145;
1635 goto RET_LABEL143;
1636 RET_LABEL143:(void)0;
1637 }
1638 }
1639 if (var142){
1640 {
1641 { /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (self) on <self:RapidTypeAnalysis> */
1642 var148 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on <self:RapidTypeAnalysis> */
1643 if (unlikely(var148 == NULL)) {
1644 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
1645 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 46);
1646 show_backtrace(1);
1647 }
1648 var146 = var148;
1649 RET_LABEL147:(void)0;
1650 }
1651 }
1652 {
1653 var149 = nit__modelize_property___ModelBuilder___mpropdef2node(var146, var_mmethoddef);
1654 }
1655 var_node = var149;
1656 {
1657 { /* Inline model#MMethodDef#msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
1658 var152 = var_mmethoddef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
1659 var150 = var152;
1660 RET_LABEL151:(void)0;
1661 }
1662 }
1663 if (var150 == NULL) {
1664 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1665 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 219);
1666 show_backtrace(1);
1667 } else {
1668 { /* Inline model#MSignature#mparameters (var150) on <var150:nullable MSignature> */
1669 if (unlikely(var150 == NULL)) {
1670 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1671 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1592);
1672 show_backtrace(1);
1673 }
1674 var155 = var150->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <var150:nullable MSignature> */
1675 if (unlikely(var155 == NULL)) {
1676 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
1677 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1592);
1678 show_backtrace(1);
1679 }
1680 var153 = var155;
1681 RET_LABEL154:(void)0;
1682 }
1683 }
1684 {
1685 var156 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var153, var_vararg_rank);
1686 }
1687 {
1688 { /* Inline model#MParameter#mtype (var156) on <var156:nullable Object(MParameter)> */
1689 var159 = var156->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var156:nullable Object(MParameter)> */
1690 if (unlikely(var159 == NULL)) {
1691 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1692 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1690);
1693 show_backtrace(1);
1694 }
1695 var157 = var159;
1696 RET_LABEL158:(void)0;
1697 }
1698 }
1699 var_elttype = var157;
1700 {
1701 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
1702 var162 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
1703 if (unlikely(var162 == NULL)) {
1704 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1705 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
1706 show_backtrace(1);
1707 }
1708 var160 = var162;
1709 RET_LABEL161:(void)0;
1710 }
1711 }
1712 if (varonce163) {
1713 var164 = varonce163;
1714 } else {
1715 var165 = "Array";
1716 var166 = 5;
1717 var167 = standard___standard__NativeString___to_s_with_length(var165, var166);
1718 var164 = var167;
1719 varonce163 = var164;
1720 }
1721 {
1722 var168 = nit__model___MModule___get_primitive_class(var160, var164);
1723 }
1724 var169 = NEW_standard__Array(&type_standard__Array__nit__MType);
1725 var170 = 1;
1726 {
1727 standard___standard__Array___with_capacity(var169, var170); /* Direct call array#Array#with_capacity on <var169:Array[MType]>*/
1728 }
1729 var_ = var169;
1730 {
1731 standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_, var_elttype); /* Direct call array#AbstractArray#push on <var_:Array[MType]>*/
1732 }
1733 {
1734 var171 = nit___nit__MClass___get_mtype(var168, var_);
1735 }
1736 var_vararg = var171;
1737 {
1738 nit___nit__RapidTypeVisitor___add_type(var_v, var_vararg); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
1739 }
1740 {
1741 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
1742 var174 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
1743 if (unlikely(var174 == NULL)) {
1744 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1745 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
1746 show_backtrace(1);
1747 }
1748 var172 = var174;
1749 RET_LABEL173:(void)0;
1750 }
1751 }
1752 if (varonce175) {
1753 var176 = varonce175;
1754 } else {
1755 var177 = "NativeArray";
1756 var178 = 11;
1757 var179 = standard___standard__NativeString___to_s_with_length(var177, var178);
1758 var176 = var179;
1759 varonce175 = var176;
1760 }
1761 {
1762 var180 = nit__model___MModule___get_primitive_class(var172, var176);
1763 }
1764 var181 = NEW_standard__Array(&type_standard__Array__nit__MType);
1765 var182 = 1;
1766 {
1767 standard___standard__Array___with_capacity(var181, var182); /* Direct call array#Array#with_capacity on <var181:Array[MType]>*/
1768 }
1769 var_183 = var181;
1770 {
1771 standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_183, var_elttype); /* Direct call array#AbstractArray#push on <var_183:Array[MType]>*/
1772 }
1773 {
1774 var184 = nit___nit__MClass___get_mtype(var180, var_183);
1775 }
1776 var_native = var184;
1777 {
1778 nit___nit__RapidTypeVisitor___add_type(var_v, var_native); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
1779 }
1780 {
1781 { /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (self) on <self:RapidTypeAnalysis> */
1782 var187 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on <self:RapidTypeAnalysis> */
1783 if (unlikely(var187 == NULL)) {
1784 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
1785 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 46);
1786 show_backtrace(1);
1787 }
1788 var185 = var187;
1789 RET_LABEL186:(void)0;
1790 }
1791 }
1792 if (varonce188) {
1793 var189 = varonce188;
1794 } else {
1795 var190 = "with_native";
1796 var191 = 11;
1797 var192 = standard___standard__NativeString___to_s_with_length(var190, var191);
1798 var189 = var192;
1799 varonce188 = var189;
1800 }
1801 {
1802 { /* Inline model#MClassType#mclass (var_vararg) on <var_vararg:MClassType> */
1803 var195 = var_vararg->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_vararg:MClassType> */
1804 if (unlikely(var195 == NULL)) {
1805 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
1806 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
1807 show_backtrace(1);
1808 }
1809 var193 = var195;
1810 RET_LABEL194:(void)0;
1811 }
1812 }
1813 {
1814 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
1815 var198 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
1816 if (unlikely(var198 == NULL)) {
1817 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1818 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
1819 show_backtrace(1);
1820 }
1821 var196 = var198;
1822 RET_LABEL197:(void)0;
1823 }
1824 }
1825 {
1826 var199 = nit___nit__ModelBuilder___force_get_primitive_method(var185, var_node, var189, var193, var196);
1827 }
1828 {
1829 nit___nit__RapidTypeVisitor___add_monomorphic_send(var_v, var_vararg, var199); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_monomorphic_send on <var_v:RapidTypeVisitor>*/
1830 }
1831 } else {
1832 }
1833 {
1834 { /* Inline model#MMethodDef#msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
1835 var202 = var_mmethoddef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
1836 var200 = var202;
1837 RET_LABEL201:(void)0;
1838 }
1839 }
1840 if (unlikely(var200 == NULL)) {
1841 PRINT_ERROR("Runtime error: %s", "Cast failed");
1842 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 229);
1843 show_backtrace(1);
1844 }
1845 var_sig = var200;
1846 {
1847 { /* Inline model#MProperty#intro (var_mmeth) on <var_mmeth:MMethod> */
1848 var205 = var_mmeth->attrs[COLOR_nit__model__MProperty___intro].val; /* _intro on <var_mmeth:MMethod> */
1849 if (unlikely(var205 == NULL)) {
1850 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
1851 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1773);
1852 show_backtrace(1);
1853 }
1854 var203 = var205;
1855 RET_LABEL204:(void)0;
1856 }
1857 }
1858 {
1859 { /* Inline model#MMethodDef#msignature (var203) on <var203:MPropDef(MMethodDef)> */
1860 var208 = var203->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var203:MPropDef(MMethodDef)> */
1861 var206 = var208;
1862 RET_LABEL207:(void)0;
1863 }
1864 }
1865 if (unlikely(var206 == NULL)) {
1866 PRINT_ERROR("Runtime error: %s", "Cast failed");
1867 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 230);
1868 show_backtrace(1);
1869 }
1870 var_osig = var206;
1871 var209 = 0;
1872 var_i = var209;
1873 {
1874 var210 = nit___nit__MSignature___arity(var_sig);
1875 }
1876 var_211 = var210;
1877 for(;;) {
1878 {
1879 { /* Inline kernel#Int#< (var_i,var_211) on <var_i:Int> */
1880 /* Covariant cast for argument 0 (i) <var_211:Int> isa OTHER */
1881 /* <var_211:Int> isa OTHER */
1882 var214 = 1; /* easy <var_211:Int> isa OTHER*/
1883 if (unlikely(!var214)) {
1884 var_class_name217 = type_standard__Int.name;
1885 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name217);
1886 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 410);
1887 show_backtrace(1);
1888 }
1889 var218 = var_i < var_211;
1890 var212 = var218;
1891 goto RET_LABEL213;
1892 RET_LABEL213:(void)0;
1893 }
1894 }
1895 if (var212){
1896 {
1897 { /* Inline model#MSignature#mparameters (var_osig) on <var_osig:MSignature> */
1898 var221 = var_osig->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <var_osig:MSignature> */
1899 if (unlikely(var221 == NULL)) {
1900 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
1901 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1592);
1902 show_backtrace(1);
1903 }
1904 var219 = var221;
1905 RET_LABEL220:(void)0;
1906 }
1907 }
1908 {
1909 var222 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var219, var_i);
1910 }
1911 {
1912 { /* Inline model#MParameter#mtype (var222) on <var222:nullable Object(MParameter)> */
1913 var225 = var222->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var222:nullable Object(MParameter)> */
1914 if (unlikely(var225 == NULL)) {
1915 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1916 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1690);
1917 show_backtrace(1);
1918 }
1919 var223 = var225;
1920 RET_LABEL224:(void)0;
1921 }
1922 }
1923 var_origtype = var223;
1924 {
1925 var226 = ((short int (*)(val* self))(var_origtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_origtype) /* need_anchor on <var_origtype:MType>*/;
1926 }
1927 var227 = !var226;
1928 if (var227){
1929 goto BREAK_label;
1930 } else {
1931 }
1932 {
1933 { /* Inline model#MSignature#mparameters (var_sig) on <var_sig:MSignature> */
1934 var230 = var_sig->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <var_sig:MSignature> */
1935 if (unlikely(var230 == NULL)) {
1936 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
1937 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1592);
1938 show_backtrace(1);
1939 }
1940 var228 = var230;
1941 RET_LABEL229:(void)0;
1942 }
1943 }
1944 {
1945 var231 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var228, var_i);
1946 }
1947 {
1948 { /* Inline model#MParameter#mtype (var231) on <var231:nullable Object(MParameter)> */
1949 var234 = var231->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var231:nullable Object(MParameter)> */
1950 if (unlikely(var234 == NULL)) {
1951 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1952 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1690);
1953 show_backtrace(1);
1954 }
1955 var232 = var234;
1956 RET_LABEL233:(void)0;
1957 }
1958 }
1959 var_paramtype = var232;
1960 {
1961 nit___nit__RapidTypeAnalysis___add_cast(self, var_paramtype); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_cast on <self:RapidTypeAnalysis>*/
1962 }
1963 BREAK_label: (void)0;
1964 var235 = 1;
1965 {
1966 var236 = standard___standard__Int___Discrete__successor(var_i, var235);
1967 }
1968 var_i = var236;
1969 } else {
1970 goto BREAK_label237;
1971 }
1972 }
1973 BREAK_label237: (void)0;
1974 {
1975 { /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (self) on <self:RapidTypeAnalysis> */
1976 var240 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on <self:RapidTypeAnalysis> */
1977 if (unlikely(var240 == NULL)) {
1978 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
1979 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 46);
1980 show_backtrace(1);
1981 }
1982 var238 = var240;
1983 RET_LABEL239:(void)0;
1984 }
1985 }
1986 {
1987 var241 = nit__modelize_property___ModelBuilder___mpropdef2node(var238, var_mmethoddef);
1988 }
1989 var_npropdef = var241;
1990 /* <var_npropdef:nullable ANode> isa AClassdef */
1991 cltype243 = type_nit__AClassdef.color;
1992 idtype244 = type_nit__AClassdef.id;
1993 if(var_npropdef == NULL) {
1994 var242 = 0;
1995 } else {
1996 if(cltype243 >= var_npropdef->type->table_size) {
1997 var242 = 0;
1998 } else {
1999 var242 = var_npropdef->type->type_table[cltype243] == idtype244;
2000 }
2001 }
2002 if (var242){
2003 {
2004 { /* Inline modelize_property#AClassdef#mfree_init (var_npropdef) on <var_npropdef:nullable ANode(AClassdef)> */
2005 var247 = var_npropdef->attrs[COLOR_nit__modelize_property__AClassdef___mfree_init].val; /* _mfree_init on <var_npropdef:nullable ANode(AClassdef)> */
2006 var245 = var247;
2007 RET_LABEL246:(void)0;
2008 }
2009 }
2010 {
2011 { /* Inline kernel#Object#== (var_mmethoddef,var245) on <var_mmethoddef:MMethodDef> */
2012 var_other = var245;
2013 {
2014 { /* Inline kernel#Object#is_same_instance (var_mmethoddef,var_other) on <var_mmethoddef:MMethodDef> */
2015 var252 = var_mmethoddef == var_other;
2016 var250 = var252;
2017 goto RET_LABEL251;
2018 RET_LABEL251:(void)0;
2019 }
2020 }
2021 var248 = var250;
2022 goto RET_LABEL249;
2023 RET_LABEL249:(void)0;
2024 }
2025 }
2026 if (unlikely(!var248)) {
2027 PRINT_ERROR("Runtime error: %s", "Assert failed");
2028 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 242);
2029 show_backtrace(1);
2030 }
2031 {
2032 { /* Inline model#MPropDef#mproperty (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
2033 var256 = var_mmethoddef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mmethoddef:MMethodDef> */
2034 if (unlikely(var256 == NULL)) {
2035 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
2036 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
2037 show_backtrace(1);
2038 }
2039 var254 = var256;
2040 RET_LABEL255:(void)0;
2041 }
2042 }
2043 {
2044 { /* Inline model#MMethod#is_root_init (var254) on <var254:MProperty(MMethod)> */
2045 var259 = var254->attrs[COLOR_nit__model__MMethod___is_root_init].s; /* _is_root_init on <var254:MProperty(MMethod)> */
2046 var257 = var259;
2047 RET_LABEL258:(void)0;
2048 }
2049 }
2050 var_260 = var257;
2051 if (var257){
2052 {
2053 var261 = nit___nit__MPropDef___is_intro(var_mmethoddef);
2054 }
2055 var262 = !var261;
2056 var253 = var262;
2057 } else {
2058 var253 = var_260;
2059 }
2060 if (var253){
2061 {
2062 { /* Inline rapid_type_analysis#RapidTypeVisitor#receiver (var_v) on <var_v:RapidTypeVisitor> */
2063 var265 = var_v->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___receiver].val; /* _receiver on <var_v:RapidTypeVisitor> */
2064 if (unlikely(var265 == NULL)) {
2065 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _receiver");
2066 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 436);
2067 show_backtrace(1);
2068 }
2069 var263 = var265;
2070 RET_LABEL264:(void)0;
2071 }
2072 }
2073 {
2074 nit___nit__RapidTypeAnalysis___add_super_send(self, var263, var_mmethoddef); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_super_send on <self:RapidTypeAnalysis>*/
2075 }
2076 } else {
2077 }
2078 goto BREAK_label266;
2079 } else {
2080 {
2081 { /* Inline model#MMethodDef#constant_value (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
2082 var269 = var_mmethoddef->attrs[COLOR_nit__model__MMethodDef___constant_value].val; /* _constant_value on <var_mmethoddef:MMethodDef> */
2083 var267 = var269;
2084 RET_LABEL268:(void)0;
2085 }
2086 }
2087 var270 = NULL;
2088 if (var267 == NULL) {
2089 var271 = 0; /* is null */
2090 } else {
2091 var271 = 1; /* arg is null and recv is not */
2092 }
2093 if (0) {
2094 var272 = ((short int (*)(val* self, val* p0))(var267->class->vft[COLOR_standard__kernel__Object___33d_61d]))(var267, var270) /* != on <var267:nullable Object>*/;
2095 var271 = var272;
2096 }
2097 if (var271){
2098 {
2099 { /* Inline model#MMethodDef#msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
2100 var275 = var_mmethoddef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
2101 var273 = var275;
2102 RET_LABEL274:(void)0;
2103 }
2104 }
2105 if (var273 == NULL) {
2106 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2107 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 250);
2108 show_backtrace(1);
2109 } else {
2110 { /* Inline model#MSignature#return_mtype (var273) on <var273:nullable MSignature> */
2111 if (unlikely(var273 == NULL)) {
2112 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2113 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1595);
2114 show_backtrace(1);
2115 }
2116 var278 = var273->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on <var273:nullable MSignature> */
2117 var276 = var278;
2118 RET_LABEL277:(void)0;
2119 }
2120 }
2121 /* <var276:nullable MType> isa MClassType */
2122 cltype280 = type_nit__MClassType.color;
2123 idtype281 = type_nit__MClassType.id;
2124 if(var276 == NULL) {
2125 var279 = 0;
2126 } else {
2127 if(cltype280 >= var276->type->table_size) {
2128 var279 = 0;
2129 } else {
2130 var279 = var276->type->type_table[cltype280] == idtype281;
2131 }
2132 }
2133 if (unlikely(!var279)) {
2134 var_class_name282 = var276 == NULL ? "null" : var276->type->name;
2135 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name282);
2136 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 250);
2137 show_backtrace(1);
2138 }
2139 {
2140 nit___nit__RapidTypeVisitor___add_type(var_v, var276); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
2141 }
2142 goto BREAK_label266;
2143 } else {
2144 var283 = NULL;
2145 if (var_npropdef == NULL) {
2146 var284 = 1; /* is null */
2147 } else {
2148 var284 = 0; /* arg is null but recv is not */
2149 }
2150 if (0) {
2151 { /* Inline kernel#Object#== (var_npropdef,var283) on <var_npropdef:nullable ANode> */
2152 var_other = var283;
2153 {
2154 { /* Inline kernel#Object#is_same_instance (var_npropdef,var_other) on <var_npropdef:nullable ANode(ANode)> */
2155 var289 = var_npropdef == var_other;
2156 var287 = var289;
2157 goto RET_LABEL288;
2158 RET_LABEL288:(void)0;
2159 }
2160 }
2161 var285 = var287;
2162 goto RET_LABEL286;
2163 RET_LABEL286:(void)0;
2164 }
2165 var284 = var285;
2166 }
2167 if (var284){
2168 PRINT_ERROR("Runtime error: %s", "Aborted");
2169 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 253);
2170 show_backtrace(1);
2171 } else {
2172 }
2173 }
2174 }
2175 /* <var_npropdef:nullable ANode(ANode)> isa AMethPropdef */
2176 cltype291 = type_nit__AMethPropdef.color;
2177 idtype292 = type_nit__AMethPropdef.id;
2178 if(cltype291 >= var_npropdef->type->table_size) {
2179 var290 = 0;
2180 } else {
2181 var290 = var_npropdef->type->type_table[cltype291] == idtype292;
2182 }
2183 if (var290){
2184 {
2185 { /* Inline auto_super_init#AMethPropdef#auto_super_inits (var_npropdef) on <var_npropdef:nullable ANode(AMethPropdef)> */
2186 var295 = var_npropdef->attrs[COLOR_nit__auto_super_init__AMethPropdef___auto_super_inits].val; /* _auto_super_inits on <var_npropdef:nullable ANode(AMethPropdef)> */
2187 var293 = var295;
2188 RET_LABEL294:(void)0;
2189 }
2190 }
2191 var_auto_super_inits = var293;
2192 var296 = NULL;
2193 if (var_auto_super_inits == NULL) {
2194 var297 = 0; /* is null */
2195 } else {
2196 var297 = 1; /* arg is null and recv is not */
2197 }
2198 if (0) {
2199 { /* Inline kernel#Object#!= (var_auto_super_inits,var296) on <var_auto_super_inits:nullable Array[CallSite]> */
2200 var_other26 = var296;
2201 {
2202 var300 = ((short int (*)(val* self, val* p0))(var_auto_super_inits->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_auto_super_inits, var_other26) /* == on <var_auto_super_inits:nullable Array[CallSite](Array[CallSite])>*/;
2203 }
2204 var301 = !var300;
2205 var298 = var301;
2206 goto RET_LABEL299;
2207 RET_LABEL299:(void)0;
2208 }
2209 var297 = var298;
2210 }
2211 if (var297){
2212 var_302 = var_auto_super_inits;
2213 {
2214 var303 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_302);
2215 }
2216 var_304 = var303;
2217 for(;;) {
2218 {
2219 var305 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_304);
2220 }
2221 if (var305){
2222 {
2223 var306 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_304);
2224 }
2225 var_auto_super_init = var306;
2226 {
2227 nit___nit__RapidTypeVisitor___add_callsite(var_v, var_auto_super_init); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
2228 }
2229 {
2230 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_304); /* Direct call array#ArrayIterator#next on <var_304:ArrayIterator[CallSite]>*/
2231 }
2232 } else {
2233 goto BREAK_label307;
2234 }
2235 }
2236 BREAK_label307: (void)0;
2237 {
2238 { /* Inline abstract_collection#Iterator#finish (var_304) on <var_304:ArrayIterator[CallSite]> */
2239 RET_LABEL308:(void)0;
2240 }
2241 }
2242 } else {
2243 }
2244 {
2245 { /* Inline auto_super_init#AMethPropdef#auto_super_call (var_npropdef) on <var_npropdef:nullable ANode(AMethPropdef)> */
2246 var311 = var_npropdef->attrs[COLOR_nit__auto_super_init__AMethPropdef___auto_super_call].s; /* _auto_super_call on <var_npropdef:nullable ANode(AMethPropdef)> */
2247 var309 = var311;
2248 RET_LABEL310:(void)0;
2249 }
2250 }
2251 if (var309){
2252 {
2253 { /* Inline rapid_type_analysis#RapidTypeVisitor#receiver (var_v) on <var_v:RapidTypeVisitor> */
2254 var314 = var_v->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___receiver].val; /* _receiver on <var_v:RapidTypeVisitor> */
2255 if (unlikely(var314 == NULL)) {
2256 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _receiver");
2257 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 436);
2258 show_backtrace(1);
2259 }
2260 var312 = var314;
2261 RET_LABEL313:(void)0;
2262 }
2263 }
2264 {
2265 nit___nit__RapidTypeAnalysis___add_super_send(self, var312, var_mmethoddef); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_super_send on <self:RapidTypeAnalysis>*/
2266 }
2267 } else {
2268 }
2269 } else {
2270 }
2271 {
2272 { /* Inline model#MMethodDef#is_intern (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
2273 var318 = var_mmethoddef->attrs[COLOR_nit__model__MMethodDef___is_intern].s; /* _is_intern on <var_mmethoddef:MMethodDef> */
2274 var316 = var318;
2275 RET_LABEL317:(void)0;
2276 }
2277 }
2278 var_319 = var316;
2279 if (var316){
2280 var315 = var_319;
2281 } else {
2282 {
2283 { /* Inline model#MMethodDef#is_extern (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
2284 var322 = var_mmethoddef->attrs[COLOR_nit__model__MMethodDef___is_extern].s; /* _is_extern on <var_mmethoddef:MMethodDef> */
2285 var320 = var322;
2286 RET_LABEL321:(void)0;
2287 }
2288 }
2289 var315 = var320;
2290 }
2291 if (var315){
2292 {
2293 { /* Inline model#MMethodDef#msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
2294 var325 = var_mmethoddef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
2295 var323 = var325;
2296 RET_LABEL324:(void)0;
2297 }
2298 }
2299 if (var323 == NULL) {
2300 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2301 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 270);
2302 show_backtrace(1);
2303 } else {
2304 { /* Inline model#MSignature#return_mtype (var323) on <var323:nullable MSignature> */
2305 if (unlikely(var323 == NULL)) {
2306 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2307 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1595);
2308 show_backtrace(1);
2309 }
2310 var328 = var323->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on <var323:nullable MSignature> */
2311 var326 = var328;
2312 RET_LABEL327:(void)0;
2313 }
2314 }
2315 var_ret = var326;
2316 var332 = NULL;
2317 if (var_ret == NULL) {
2318 var333 = 0; /* is null */
2319 } else {
2320 var333 = 1; /* arg is null and recv is not */
2321 }
2322 if (0) {
2323 { /* Inline kernel#Object#!= (var_ret,var332) on <var_ret:nullable MType> */
2324 var_other26 = var332;
2325 {
2326 var336 = ((short int (*)(val* self, val* p0))(var_ret->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ret, var_other26) /* == on <var_ret:nullable MType(MType)>*/;
2327 }
2328 var337 = !var336;
2329 var334 = var337;
2330 goto RET_LABEL335;
2331 RET_LABEL335:(void)0;
2332 }
2333 var333 = var334;
2334 }
2335 var_338 = var333;
2336 if (var333){
2337 /* <var_ret:nullable MType(MType)> isa MClassType */
2338 cltype340 = type_nit__MClassType.color;
2339 idtype341 = type_nit__MClassType.id;
2340 if(cltype340 >= var_ret->type->table_size) {
2341 var339 = 0;
2342 } else {
2343 var339 = var_ret->type->type_table[cltype340] == idtype341;
2344 }
2345 var331 = var339;
2346 } else {
2347 var331 = var_338;
2348 }
2349 var_342 = var331;
2350 if (var331){
2351 {
2352 { /* Inline model#MClassType#mclass (var_ret) on <var_ret:nullable MType(MClassType)> */
2353 var345 = var_ret->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_ret:nullable MType(MClassType)> */
2354 if (unlikely(var345 == NULL)) {
2355 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
2356 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
2357 show_backtrace(1);
2358 }
2359 var343 = var345;
2360 RET_LABEL344:(void)0;
2361 }
2362 }
2363 {
2364 { /* Inline model#MClass#kind (var343) on <var343:MClass> */
2365 var348 = var343->attrs[COLOR_nit__model__MClass___kind].val; /* _kind on <var343:MClass> */
2366 if (unlikely(var348 == NULL)) {
2367 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
2368 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 399);
2369 show_backtrace(1);
2370 }
2371 var346 = var348;
2372 RET_LABEL347:(void)0;
2373 }
2374 }
2375 {
2376 var349 = nit__model___standard__Object___abstract_kind(self);
2377 }
2378 {
2379 { /* Inline kernel#Object#!= (var346,var349) on <var346:MClassKind> */
2380 var_other26 = var349;
2381 {
2382 var352 = ((short int (*)(val* self, val* p0))(var346->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var346, var_other26) /* == on <var346:MClassKind>*/;
2383 }
2384 var353 = !var352;
2385 var350 = var353;
2386 goto RET_LABEL351;
2387 RET_LABEL351:(void)0;
2388 }
2389 }
2390 var330 = var350;
2391 } else {
2392 var330 = var_342;
2393 }
2394 var_354 = var330;
2395 if (var330){
2396 {
2397 { /* Inline model#MClassType#mclass (var_ret) on <var_ret:nullable MType(MClassType)> */
2398 var357 = var_ret->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_ret:nullable MType(MClassType)> */
2399 if (unlikely(var357 == NULL)) {
2400 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
2401 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
2402 show_backtrace(1);
2403 }
2404 var355 = var357;
2405 RET_LABEL356:(void)0;
2406 }
2407 }
2408 {
2409 { /* Inline model#MClass#kind (var355) on <var355:MClass> */
2410 var360 = var355->attrs[COLOR_nit__model__MClass___kind].val; /* _kind on <var355:MClass> */
2411 if (unlikely(var360 == NULL)) {
2412 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
2413 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 399);
2414 show_backtrace(1);
2415 }
2416 var358 = var360;
2417 RET_LABEL359:(void)0;
2418 }
2419 }
2420 {
2421 var361 = nit__model___standard__Object___interface_kind(self);
2422 }
2423 {
2424 { /* Inline kernel#Object#!= (var358,var361) on <var358:MClassKind> */
2425 var_other26 = var361;
2426 {
2427 var364 = ((short int (*)(val* self, val* p0))(var358->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var358, var_other26) /* == on <var358:MClassKind>*/;
2428 }
2429 var365 = !var364;
2430 var362 = var365;
2431 goto RET_LABEL363;
2432 RET_LABEL363:(void)0;
2433 }
2434 }
2435 var329 = var362;
2436 } else {
2437 var329 = var_354;
2438 }
2439 if (var329){
2440 {
2441 nit___nit__RapidTypeVisitor___add_type(var_v, var_ret); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
2442 }
2443 } else {
2444 }
2445 } else {
2446 }
2447 {
2448 nit___nit__Visitor___enter_visit(var_v, var_npropdef); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:RapidTypeVisitor>*/
2449 }
2450 } else {
2451 goto BREAK_label366;
2452 }
2453 BREAK_label266: (void)0;
2454 }
2455 BREAK_label366: (void)0;
2456 var367 = NEW_standard__List(&type_standard__List__nit__MClassType);
2457 {
2458 { /* Inline list#List#init (var367) on <var367:List[MClassType]> */
2459 RET_LABEL368:(void)0;
2460 }
2461 }
2462 var_todo_types = var367;
2463 {
2464 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (self) on <self:RapidTypeAnalysis> */
2465 var371 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <self:RapidTypeAnalysis> */
2466 if (unlikely(var371 == NULL)) {
2467 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
2468 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 53);
2469 show_backtrace(1);
2470 }
2471 var369 = var371;
2472 RET_LABEL370:(void)0;
2473 }
2474 }
2475 {
2476 standard___standard__SimpleCollection___add_all(var_todo_types, var369); /* Direct call abstract_collection#SimpleCollection#add_all on <var_todo_types:List[MClassType]>*/
2477 }
2478 for(;;) {
2479 {
2480 var372 = standard___standard__List___standard__abstract_collection__Collection__is_empty(var_todo_types);
2481 }
2482 var373 = !var372;
2483 if (var373){
2484 {
2485 var374 = standard___standard__List___standard__abstract_collection__Sequence__shift(var_todo_types);
2486 }
2487 var_t = var374;
2488 {
2489 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_open_types (self) on <self:RapidTypeAnalysis> */
2490 var377 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_open_types].val; /* _live_open_types on <self:RapidTypeAnalysis> */
2491 if (unlikely(var377 == NULL)) {
2492 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_types");
2493 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 58);
2494 show_backtrace(1);
2495 }
2496 var375 = var377;
2497 RET_LABEL376:(void)0;
2498 }
2499 }
2500 var_378 = var375;
2501 {
2502 var379 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_378);
2503 }
2504 var_380 = var379;
2505 for(;;) {
2506 {
2507 var381 = ((short int (*)(val* self))(var_380->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_380) /* is_ok on <var_380:Iterator[MClassType]>*/;
2508 }
2509 if (var381){
2510 {
2511 var382 = ((val* (*)(val* self))(var_380->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_380) /* item on <var_380:Iterator[MClassType]>*/;
2512 }
2513 var_ot = var382;
2514 {
2515 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
2516 var385 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
2517 if (unlikely(var385 == NULL)) {
2518 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
2519 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
2520 show_backtrace(1);
2521 }
2522 var383 = var385;
2523 RET_LABEL384:(void)0;
2524 }
2525 }
2526 {
2527 var386 = ((short int (*)(val* self, val* p0, val* p1, val* p2))(var_ot->class->vft[COLOR_nit__model__MType__can_resolve_for]))(var_ot, var_t, var_t, var383) /* can_resolve_for on <var_ot:MClassType>*/;
2528 }
2529 var387 = !var386;
2530 if (var387){
2531 goto BREAK_label388;
2532 } else {
2533 }
2534 {
2535 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
2536 var391 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
2537 if (unlikely(var391 == NULL)) {
2538 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
2539 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
2540 show_backtrace(1);
2541 }
2542 var389 = var391;
2543 RET_LABEL390:(void)0;
2544 }
2545 }
2546 {
2547 var392 = nit___nit__MClassType___MType__anchor_to(var_ot, var389, var_t);
2548 }
2549 var_rt = var392;
2550 {
2551 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (self) on <self:RapidTypeAnalysis> */
2552 var395 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <self:RapidTypeAnalysis> */
2553 if (unlikely(var395 == NULL)) {
2554 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
2555 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 53);
2556 show_backtrace(1);
2557 }
2558 var393 = var395;
2559 RET_LABEL394:(void)0;
2560 }
2561 }
2562 {
2563 var396 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var393, var_rt);
2564 }
2565 if (var396){
2566 goto BREAK_label388;
2567 } else {
2568 }
2569 {
2570 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (self) on <self:RapidTypeAnalysis> */
2571 var399 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <self:RapidTypeAnalysis> */
2572 if (unlikely(var399 == NULL)) {
2573 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
2574 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 53);
2575 show_backtrace(1);
2576 }
2577 var397 = var399;
2578 RET_LABEL398:(void)0;
2579 }
2580 }
2581 {
2582 standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var397, var_rt); /* Direct call hash_collection#HashSet#add on <var397:HashSet[MClassType]>*/
2583 }
2584 {
2585 standard___standard__Sequence___SimpleCollection__add(var_todo_types, var_rt); /* Direct call abstract_collection#Sequence#add on <var_todo_types:List[MClassType]>*/
2586 }
2587 {
2588 nit___nit__RapidTypeAnalysis___check_depth(self, var_rt); /* Direct call rapid_type_analysis#RapidTypeAnalysis#check_depth on <self:RapidTypeAnalysis>*/
2589 }
2590 BREAK_label388: (void)0;
2591 {
2592 ((void (*)(val* self))(var_380->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_380) /* next on <var_380:Iterator[MClassType]>*/;
2593 }
2594 } else {
2595 goto BREAK_label400;
2596 }
2597 }
2598 BREAK_label400: (void)0;
2599 {
2600 { /* Inline abstract_collection#Iterator#finish (var_380) on <var_380:Iterator[MClassType]> */
2601 RET_LABEL401:(void)0;
2602 }
2603 }
2604 } else {
2605 goto BREAK_label402;
2606 }
2607 }
2608 BREAK_label402: (void)0;
2609 {
2610 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_open_cast_types (self) on <self:RapidTypeAnalysis> */
2611 var405 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_open_cast_types].val; /* _live_open_cast_types on <self:RapidTypeAnalysis> */
2612 if (unlikely(var405 == NULL)) {
2613 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_cast_types");
2614 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 68);
2615 show_backtrace(1);
2616 }
2617 var403 = var405;
2618 RET_LABEL404:(void)0;
2619 }
2620 }
2621 var_406 = var403;
2622 {
2623 var407 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_406);
2624 }
2625 var_408 = var407;
2626 for(;;) {
2627 {
2628 var409 = ((short int (*)(val* self))(var_408->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_408) /* is_ok on <var_408:Iterator[MType]>*/;
2629 }
2630 if (var409){
2631 {
2632 var410 = ((val* (*)(val* self))(var_408->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_408) /* item on <var_408:Iterator[MType]>*/;
2633 }
2634 var_ot411 = var410;
2635 {
2636 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (self) on <self:RapidTypeAnalysis> */
2637 var414 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <self:RapidTypeAnalysis> */
2638 if (unlikely(var414 == NULL)) {
2639 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
2640 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 53);
2641 show_backtrace(1);
2642 }
2643 var412 = var414;
2644 RET_LABEL413:(void)0;
2645 }
2646 }
2647 var_415 = var412;
2648 {
2649 var416 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_415);
2650 }
2651 var_417 = var416;
2652 for(;;) {
2653 {
2654 var418 = ((short int (*)(val* self))(var_417->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_417) /* is_ok on <var_417:Iterator[MClassType]>*/;
2655 }
2656 if (var418){
2657 {
2658 var419 = ((val* (*)(val* self))(var_417->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_417) /* item on <var_417:Iterator[MClassType]>*/;
2659 }
2660 var_t420 = var419;
2661 {
2662 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
2663 var423 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
2664 if (unlikely(var423 == NULL)) {
2665 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
2666 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
2667 show_backtrace(1);
2668 }
2669 var421 = var423;
2670 RET_LABEL422:(void)0;
2671 }
2672 }
2673 {
2674 var424 = ((short int (*)(val* self, val* p0, val* p1, val* p2))(var_ot411->class->vft[COLOR_nit__model__MType__can_resolve_for]))(var_ot411, var_t420, var_t420, var421) /* can_resolve_for on <var_ot411:MType>*/;
2675 }
2676 var425 = !var424;
2677 if (var425){
2678 goto BREAK_label426;
2679 } else {
2680 }
2681 {
2682 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
2683 var429 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
2684 if (unlikely(var429 == NULL)) {
2685 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
2686 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
2687 show_backtrace(1);
2688 }
2689 var427 = var429;
2690 RET_LABEL428:(void)0;
2691 }
2692 }
2693 {
2694 var430 = ((val* (*)(val* self, val* p0, val* p1))(var_ot411->class->vft[COLOR_nit__model__MType__anchor_to]))(var_ot411, var427, var_t420) /* anchor_to on <var_ot411:MType>*/;
2695 }
2696 var_rt431 = var430;
2697 {
2698 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_cast_types (self) on <self:RapidTypeAnalysis> */
2699 var434 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_cast_types].val; /* _live_cast_types on <self:RapidTypeAnalysis> */
2700 if (unlikely(var434 == NULL)) {
2701 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_cast_types");
2702 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 65);
2703 show_backtrace(1);
2704 }
2705 var432 = var434;
2706 RET_LABEL433:(void)0;
2707 }
2708 }
2709 {
2710 standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var432, var_rt431); /* Direct call hash_collection#HashSet#add on <var432:HashSet[MType]>*/
2711 }
2712 BREAK_label426: (void)0;
2713 {
2714 ((void (*)(val* self))(var_417->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_417) /* next on <var_417:Iterator[MClassType]>*/;
2715 }
2716 } else {
2717 goto BREAK_label435;
2718 }
2719 }
2720 BREAK_label435: (void)0;
2721 {
2722 { /* Inline abstract_collection#Iterator#finish (var_417) on <var_417:Iterator[MClassType]> */
2723 RET_LABEL436:(void)0;
2724 }
2725 }
2726 {
2727 ((void (*)(val* self))(var_408->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_408) /* next on <var_408:Iterator[MType]>*/;
2728 }
2729 } else {
2730 goto BREAK_label437;
2731 }
2732 }
2733 BREAK_label437: (void)0;
2734 {
2735 { /* Inline abstract_collection#Iterator#finish (var_408) on <var_408:Iterator[MType]> */
2736 RET_LABEL438:(void)0;
2737 }
2738 }
2739 RET_LABEL:;
2740 }
2741 /* method rapid_type_analysis#RapidTypeAnalysis#check_depth for (self: RapidTypeAnalysis, MClassType) */
2742 void nit___nit__RapidTypeAnalysis___check_depth(val* self, val* p0) {
2743 val* var_mtype /* var mtype: MClassType */;
2744 long var /* : Int */;
2745 long var_d /* var d: Int */;
2746 long var1 /* : Int */;
2747 short int var2 /* : Bool */;
2748 short int var4 /* : Bool */;
2749 int cltype;
2750 int idtype;
2751 const char* var_class_name;
2752 short int var5 /* : Bool */;
2753 val* var6 /* : ModelBuilder */;
2754 val* var8 /* : ModelBuilder */;
2755 val* var9 /* : ToolContext */;
2756 val* var11 /* : ToolContext */;
2757 val* var12 /* : null */;
2758 static val* varonce;
2759 val* var13 /* : String */;
2760 char* var14 /* : NativeString */;
2761 long var15 /* : Int */;
2762 val* var16 /* : FlatString */;
2763 static val* varonce17;
2764 val* var18 /* : String */;
2765 char* var19 /* : NativeString */;
2766 long var20 /* : Int */;
2767 val* var21 /* : FlatString */;
2768 static val* varonce22;
2769 val* var23 /* : String */;
2770 char* var24 /* : NativeString */;
2771 long var25 /* : Int */;
2772 val* var26 /* : FlatString */;
2773 val* var27 /* : Array[Object] */;
2774 long var28 /* : Int */;
2775 val* var29 /* : NativeArray[Object] */;
2776 val* var30 /* : Object */;
2777 val* var31 /* : String */;
2778 var_mtype = p0;
2779 {
2780 var = ((long (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__length]))(var_mtype) /* length on <var_mtype:MClassType>*/;
2781 }
2782 var_d = var;
2783 var1 = 255;
2784 {
2785 { /* Inline kernel#Int#> (var_d,var1) on <var_d:Int> */
2786 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
2787 /* <var1:Int> isa OTHER */
2788 var4 = 1; /* easy <var1:Int> isa OTHER*/
2789 if (unlikely(!var4)) {
2790 var_class_name = type_standard__Int.name;
2791 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2792 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 412);
2793 show_backtrace(1);
2794 }
2795 var5 = var_d > var1;
2796 var2 = var5;
2797 goto RET_LABEL3;
2798 RET_LABEL3:(void)0;
2799 }
2800 }
2801 if (var2){
2802 {
2803 { /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (self) on <self:RapidTypeAnalysis> */
2804 var8 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on <self:RapidTypeAnalysis> */
2805 if (unlikely(var8 == NULL)) {
2806 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
2807 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 46);
2808 show_backtrace(1);
2809 }
2810 var6 = var8;
2811 RET_LABEL7:(void)0;
2812 }
2813 }
2814 {
2815 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var6) on <var6:ModelBuilder> */
2816 var11 = var6->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var6:ModelBuilder> */
2817 if (unlikely(var11 == NULL)) {
2818 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
2819 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
2820 show_backtrace(1);
2821 }
2822 var9 = var11;
2823 RET_LABEL10:(void)0;
2824 }
2825 }
2826 var12 = NULL;
2827 if (varonce) {
2828 var13 = varonce;
2829 } else {
2830 var14 = "Fatal error: limitation in the rapidtype analysis engine: a type depth of ";
2831 var15 = 74;
2832 var16 = standard___standard__NativeString___to_s_with_length(var14, var15);
2833 var13 = var16;
2834 varonce = var13;
2835 }
2836 if (varonce17) {
2837 var18 = varonce17;
2838 } else {
2839 var19 = " is too important, the problematic type is ";
2840 var20 = 43;
2841 var21 = standard___standard__NativeString___to_s_with_length(var19, var20);
2842 var18 = var21;
2843 varonce17 = var18;
2844 }
2845 if (varonce22) {
2846 var23 = varonce22;
2847 } else {
2848 var24 = ".";
2849 var25 = 1;
2850 var26 = standard___standard__NativeString___to_s_with_length(var24, var25);
2851 var23 = var26;
2852 varonce22 = var23;
2853 }
2854 var27 = NEW_standard__Array(&type_standard__Array__standard__Object);
2855 { /* var27 = array_instance Array[Object] */
2856 var28 = 5;
2857 var29 = NEW_standard__NativeArray(var28, &type_standard__NativeArray__standard__Object);
2858 ((struct instance_standard__NativeArray*)var29)->values[0] = (val*) var13;
2859 var30 = BOX_standard__Int(var_d); /* autobox from Int to Object */
2860 ((struct instance_standard__NativeArray*)var29)->values[1] = (val*) var30;
2861 ((struct instance_standard__NativeArray*)var29)->values[2] = (val*) var18;
2862 ((struct instance_standard__NativeArray*)var29)->values[3] = (val*) var_mtype;
2863 ((struct instance_standard__NativeArray*)var29)->values[4] = (val*) var23;
2864 {
2865 ((void (*)(val* self, val* p0, long p1))(var27->class->vft[COLOR_standard__array__Array__with_native]))(var27, var29, var28) /* with_native on <var27:Array[Object]>*/;
2866 }
2867 }
2868 {
2869 var31 = ((val* (*)(val* self))(var27->class->vft[COLOR_standard__string__Object__to_s]))(var27) /* to_s on <var27:Array[Object]>*/;
2870 }
2871 {
2872 nit___nit__ToolContext___fatal_error(var9, var12, var31); /* Direct call toolcontext#ToolContext#fatal_error on <var9:ToolContext>*/
2873 }
2874 } else {
2875 }
2876 RET_LABEL:;
2877 }
2878 /* method rapid_type_analysis#RapidTypeAnalysis#add_new for (self: RapidTypeAnalysis, MClassType, MClassType) */
2879 void nit___nit__RapidTypeAnalysis___add_new(val* self, val* p0, val* p1) {
2880 val* var_recv /* var recv: MClassType */;
2881 val* var_mtype /* var mtype: MClassType */;
2882 short int var /* : Bool */;
2883 short int var1 /* : Bool */;
2884 short int var2 /* : Bool */;
2885 val* var3 /* : HashSet[MClassType] */;
2886 val* var5 /* : HashSet[MClassType] */;
2887 short int var6 /* : Bool */;
2888 val* var7 /* : HashSet[MClassType] */;
2889 val* var9 /* : HashSet[MClassType] */;
2890 val* var10 /* : HashSet[MClassType] */;
2891 val* var12 /* : HashSet[MClassType] */;
2892 short int var13 /* : Bool */;
2893 val* var14 /* : HashSet[MClassType] */;
2894 val* var16 /* : HashSet[MClassType] */;
2895 val* var17 /* : MClass */;
2896 val* var19 /* : MClass */;
2897 val* var_mclass /* var mclass: MClass */;
2898 val* var20 /* : HashSet[MClass] */;
2899 val* var22 /* : HashSet[MClass] */;
2900 short int var23 /* : Bool */;
2901 val* var24 /* : HashSet[MClass] */;
2902 val* var26 /* : HashSet[MClass] */;
2903 val* var27 /* : HashSet[MMethod] */;
2904 val* var29 /* : HashSet[MMethod] */;
2905 val* var_ /* var : HashSet[MMethod] */;
2906 val* var30 /* : Iterator[nullable Object] */;
2907 val* var_31 /* var : Iterator[MMethod] */;
2908 short int var32 /* : Bool */;
2909 val* var33 /* : nullable Object */;
2910 val* var_p /* var p: MMethod */;
2911 val* var35 /* : HashSet[MMethodDef] */;
2912 val* var37 /* : HashSet[MMethodDef] */;
2913 val* var_38 /* var : HashSet[MMethodDef] */;
2914 val* var39 /* : Iterator[nullable Object] */;
2915 val* var_40 /* var : Iterator[MMethodDef] */;
2916 short int var41 /* : Bool */;
2917 val* var42 /* : nullable Object */;
2918 val* var_p43 /* var p: MMethodDef */;
2919 val* var46 /* : Array[MMethod] */;
2920 val* var48 /* : Array[MMethod] */;
2921 val* var_49 /* var : Array[MMethod] */;
2922 val* var50 /* : ArrayIterator[nullable Object] */;
2923 val* var_51 /* var : ArrayIterator[MMethod] */;
2924 short int var52 /* : Bool */;
2925 val* var53 /* : nullable Object */;
2926 val* var_p54 /* var p: MMethod */;
2927 val* var55 /* : HashSet[MMethod] */;
2928 val* var57 /* : HashSet[MMethod] */;
2929 val* var60 /* : Array[MMethod] */;
2930 val* var62 /* : Array[MMethod] */;
2931 val* var63 /* : MModule */;
2932 val* var65 /* : MModule */;
2933 val* var66 /* : MClassType */;
2934 val* var_bound_mtype /* var bound_mtype: MClassType */;
2935 val* var67 /* : MModule */;
2936 val* var69 /* : MModule */;
2937 val* var70 /* : Set[MClassDef] */;
2938 val* var_71 /* var : Set[MClassDef] */;
2939 val* var72 /* : Iterator[nullable Object] */;
2940 val* var_73 /* var : Iterator[MClassDef] */;
2941 short int var74 /* : Bool */;
2942 val* var75 /* : nullable Object */;
2943 val* var_cd /* var cd: MClassDef */;
2944 val* var76 /* : ModelBuilder */;
2945 val* var78 /* : ModelBuilder */;
2946 val* var79 /* : Array[AAttrPropdef] */;
2947 val* var_80 /* var : Array[AAttrPropdef] */;
2948 val* var81 /* : ArrayIterator[nullable Object] */;
2949 val* var_82 /* var : ArrayIterator[AAttrPropdef] */;
2950 short int var83 /* : Bool */;
2951 val* var84 /* : nullable Object */;
2952 val* var_npropdef /* var npropdef: AAttrPropdef */;
2953 short int var85 /* : Bool */;
2954 short int var87 /* : Bool */;
2955 short int var88 /* : Bool */;
2956 val* var90 /* : nullable MPropDef */;
2957 val* var92 /* : nullable MPropDef */;
2958 val* var_mpropdef /* var mpropdef: MAttributeDef */;
2959 val* var93 /* : RapidTypeVisitor */;
2960 val* var_v /* var v: RapidTypeVisitor */;
2961 val* var94 /* : nullable AExpr */;
2962 val* var96 /* : nullable AExpr */;
2963 val* var97 /* : nullable AExpr */;
2964 val* var99 /* : nullable AExpr */;
2965 var_recv = p0;
2966 var_mtype = p1;
2967 {
2968 var = ((short int (*)(val* self))(var_recv->class->vft[COLOR_nit__model__MType__need_anchor]))(var_recv) /* need_anchor on <var_recv:MClassType>*/;
2969 }
2970 var1 = !var;
2971 if (unlikely(!var1)) {
2972 PRINT_ERROR("Runtime error: %s", "Assert failed");
2973 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 323);
2974 show_backtrace(1);
2975 }
2976 {
2977 var2 = ((short int (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MClassType>*/;
2978 }
2979 if (var2){
2980 {
2981 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_open_types (self) on <self:RapidTypeAnalysis> */
2982 var5 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_open_types].val; /* _live_open_types on <self:RapidTypeAnalysis> */
2983 if (unlikely(var5 == NULL)) {
2984 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_types");
2985 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 58);
2986 show_backtrace(1);
2987 }
2988 var3 = var5;
2989 RET_LABEL4:(void)0;
2990 }
2991 }
2992 {
2993 var6 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var3, var_mtype);
2994 }
2995 if (var6){
2996 goto RET_LABEL;
2997 } else {
2998 }
2999 {
3000 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_open_types (self) on <self:RapidTypeAnalysis> */
3001 var9 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_open_types].val; /* _live_open_types on <self:RapidTypeAnalysis> */
3002 if (unlikely(var9 == NULL)) {
3003 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_types");
3004 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 58);
3005 show_backtrace(1);
3006 }
3007 var7 = var9;
3008 RET_LABEL8:(void)0;
3009 }
3010 }
3011 {
3012 standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var7, var_mtype); /* Direct call hash_collection#HashSet#add on <var7:HashSet[MClassType]>*/
3013 }
3014 } else {
3015 {
3016 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (self) on <self:RapidTypeAnalysis> */
3017 var12 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <self:RapidTypeAnalysis> */
3018 if (unlikely(var12 == NULL)) {
3019 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
3020 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 53);
3021 show_backtrace(1);
3022 }
3023 var10 = var12;
3024 RET_LABEL11:(void)0;
3025 }
3026 }
3027 {
3028 var13 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var10, var_mtype);
3029 }
3030 if (var13){
3031 goto RET_LABEL;
3032 } else {
3033 }
3034 {
3035 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (self) on <self:RapidTypeAnalysis> */
3036 var16 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <self:RapidTypeAnalysis> */
3037 if (unlikely(var16 == NULL)) {
3038 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
3039 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 53);
3040 show_backtrace(1);
3041 }
3042 var14 = var16;
3043 RET_LABEL15:(void)0;
3044 }
3045 }
3046 {
3047 standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var14, var_mtype); /* Direct call hash_collection#HashSet#add on <var14:HashSet[MClassType]>*/
3048 }
3049 }
3050 {
3051 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MClassType> */
3052 var19 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType> */
3053 if (unlikely(var19 == NULL)) {
3054 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
3055 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
3056 show_backtrace(1);
3057 }
3058 var17 = var19;
3059 RET_LABEL18:(void)0;
3060 }
3061 }
3062 var_mclass = var17;
3063 {
3064 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_classes (self) on <self:RapidTypeAnalysis> */
3065 var22 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_classes].val; /* _live_classes on <self:RapidTypeAnalysis> */
3066 if (unlikely(var22 == NULL)) {
3067 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_classes");
3068 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 62);
3069 show_backtrace(1);
3070 }
3071 var20 = var22;
3072 RET_LABEL21:(void)0;
3073 }
3074 }
3075 {
3076 var23 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var20, var_mclass);
3077 }
3078 if (var23){
3079 goto RET_LABEL;
3080 } else {
3081 }
3082 {
3083 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_classes (self) on <self:RapidTypeAnalysis> */
3084 var26 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_classes].val; /* _live_classes on <self:RapidTypeAnalysis> */
3085 if (unlikely(var26 == NULL)) {
3086 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_classes");
3087 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 62);
3088 show_backtrace(1);
3089 }
3090 var24 = var26;
3091 RET_LABEL25:(void)0;
3092 }
3093 }
3094 {
3095 standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var24, var_mclass); /* Direct call hash_collection#HashSet#add on <var24:HashSet[MClass]>*/
3096 }
3097 {
3098 { /* Inline rapid_type_analysis#RapidTypeAnalysis#totry_methods (self) on <self:RapidTypeAnalysis> */
3099 var29 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___totry_methods].val; /* _totry_methods on <self:RapidTypeAnalysis> */
3100 if (unlikely(var29 == NULL)) {
3101 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods");
3102 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 162);
3103 show_backtrace(1);
3104 }
3105 var27 = var29;
3106 RET_LABEL28:(void)0;
3107 }
3108 }
3109 var_ = var27;
3110 {
3111 var30 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_);
3112 }
3113 var_31 = var30;
3114 for(;;) {
3115 {
3116 var32 = ((short int (*)(val* self))(var_31->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_31) /* is_ok on <var_31:Iterator[MMethod]>*/;
3117 }
3118 if (var32){
3119 {
3120 var33 = ((val* (*)(val* self))(var_31->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_31) /* item on <var_31:Iterator[MMethod]>*/;
3121 }
3122 var_p = var33;
3123 {
3124 nit___nit__RapidTypeAnalysis___try_send(self, var_mtype, var_p); /* Direct call rapid_type_analysis#RapidTypeAnalysis#try_send on <self:RapidTypeAnalysis>*/
3125 }
3126 {
3127 ((void (*)(val* self))(var_31->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_31) /* next on <var_31:Iterator[MMethod]>*/;
3128 }
3129 } else {
3130 goto BREAK_label;
3131 }
3132 }
3133 BREAK_label: (void)0;
3134 {
3135 { /* Inline abstract_collection#Iterator#finish (var_31) on <var_31:Iterator[MMethod]> */
3136 RET_LABEL34:(void)0;
3137 }
3138 }
3139 {
3140 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_super_sends (self) on <self:RapidTypeAnalysis> */
3141 var37 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_super_sends].val; /* _live_super_sends on <self:RapidTypeAnalysis> */
3142 if (unlikely(var37 == NULL)) {
3143 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_super_sends");
3144 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 107);
3145 show_backtrace(1);
3146 }
3147 var35 = var37;
3148 RET_LABEL36:(void)0;
3149 }
3150 }
3151 var_38 = var35;
3152 {
3153 var39 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_38);
3154 }
3155 var_40 = var39;
3156 for(;;) {
3157 {
3158 var41 = ((short int (*)(val* self))(var_40->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_40) /* is_ok on <var_40:Iterator[MMethodDef]>*/;
3159 }
3160 if (var41){
3161 {
3162 var42 = ((val* (*)(val* self))(var_40->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_40) /* item on <var_40:Iterator[MMethodDef]>*/;
3163 }
3164 var_p43 = var42;
3165 {
3166 nit___nit__RapidTypeAnalysis___try_super_send(self, var_mtype, var_p43); /* Direct call rapid_type_analysis#RapidTypeAnalysis#try_super_send on <self:RapidTypeAnalysis>*/
3167 }
3168 {
3169 ((void (*)(val* self))(var_40->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_40) /* next on <var_40:Iterator[MMethodDef]>*/;
3170 }
3171 } else {
3172 goto BREAK_label44;
3173 }
3174 }
3175 BREAK_label44: (void)0;
3176 {
3177 { /* Inline abstract_collection#Iterator#finish (var_40) on <var_40:Iterator[MMethodDef]> */
3178 RET_LABEL45:(void)0;
3179 }
3180 }
3181 {
3182 { /* Inline rapid_type_analysis#RapidTypeAnalysis#totry_methods_to_remove (self) on <self:RapidTypeAnalysis> */
3183 var48 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___totry_methods_to_remove].val; /* _totry_methods_to_remove on <self:RapidTypeAnalysis> */
3184 if (unlikely(var48 == NULL)) {
3185 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods_to_remove");
3186 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 165);
3187 show_backtrace(1);
3188 }
3189 var46 = var48;
3190 RET_LABEL47:(void)0;
3191 }
3192 }
3193 var_49 = var46;
3194 {
3195 var50 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_49);
3196 }
3197 var_51 = var50;
3198 for(;;) {
3199 {
3200 var52 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_51);
3201 }
3202 if (var52){
3203 {
3204 var53 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_51);
3205 }
3206 var_p54 = var53;
3207 {
3208 { /* Inline rapid_type_analysis#RapidTypeAnalysis#totry_methods (self) on <self:RapidTypeAnalysis> */
3209 var57 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___totry_methods].val; /* _totry_methods on <self:RapidTypeAnalysis> */
3210 if (unlikely(var57 == NULL)) {
3211 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods");
3212 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 162);
3213 show_backtrace(1);
3214 }
3215 var55 = var57;
3216 RET_LABEL56:(void)0;
3217 }
3218 }
3219 {
3220 standard___standard__HashSet___standard__abstract_collection__RemovableCollection__remove(var55, var_p54); /* Direct call hash_collection#HashSet#remove on <var55:HashSet[MMethod]>*/
3221 }
3222 {
3223 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_51); /* Direct call array#ArrayIterator#next on <var_51:ArrayIterator[MMethod]>*/
3224 }
3225 } else {
3226 goto BREAK_label58;
3227 }
3228 }
3229 BREAK_label58: (void)0;
3230 {
3231 { /* Inline abstract_collection#Iterator#finish (var_51) on <var_51:ArrayIterator[MMethod]> */
3232 RET_LABEL59:(void)0;
3233 }
3234 }
3235 {
3236 { /* Inline rapid_type_analysis#RapidTypeAnalysis#totry_methods_to_remove (self) on <self:RapidTypeAnalysis> */
3237 var62 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___totry_methods_to_remove].val; /* _totry_methods_to_remove on <self:RapidTypeAnalysis> */
3238 if (unlikely(var62 == NULL)) {
3239 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods_to_remove");
3240 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 165);
3241 show_backtrace(1);
3242 }
3243 var60 = var62;
3244 RET_LABEL61:(void)0;
3245 }
3246 }
3247 {
3248 standard___standard__AbstractArray___standard__abstract_collection__RemovableCollection__clear(var60); /* Direct call array#AbstractArray#clear on <var60:Array[MMethod]>*/
3249 }
3250 {
3251 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
3252 var65 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
3253 if (unlikely(var65 == NULL)) {
3254 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
3255 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
3256 show_backtrace(1);
3257 }
3258 var63 = var65;
3259 RET_LABEL64:(void)0;
3260 }
3261 }
3262 {
3263 var66 = nit___nit__MClassType___MType__anchor_to(var_mtype, var63, var_recv);
3264 }
3265 var_bound_mtype = var66;
3266 {
3267 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
3268 var69 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
3269 if (unlikely(var69 == NULL)) {
3270 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
3271 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
3272 show_backtrace(1);
3273 }
3274 var67 = var69;
3275 RET_LABEL68:(void)0;
3276 }
3277 }
3278 {
3279 var70 = nit___nit__MClassType___MType__collect_mclassdefs(var_bound_mtype, var67);
3280 }
3281 var_71 = var70;
3282 {
3283 var72 = ((val* (*)(val* self))(var_71->class->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_71) /* iterator on <var_71:Set[MClassDef]>*/;
3284 }
3285 var_73 = var72;
3286 for(;;) {
3287 {
3288 var74 = ((short int (*)(val* self))(var_73->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_73) /* is_ok on <var_73:Iterator[MClassDef]>*/;
3289 }
3290 if (var74){
3291 {
3292 var75 = ((val* (*)(val* self))(var_73->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_73) /* item on <var_73:Iterator[MClassDef]>*/;
3293 }
3294 var_cd = var75;
3295 {
3296 { /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (self) on <self:RapidTypeAnalysis> */
3297 var78 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on <self:RapidTypeAnalysis> */
3298 if (unlikely(var78 == NULL)) {
3299 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
3300 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 46);
3301 show_backtrace(1);
3302 }
3303 var76 = var78;
3304 RET_LABEL77:(void)0;
3305 }
3306 }
3307 {
3308 var79 = nit__modelize_property___ModelBuilder___collect_attr_propdef(var76, var_cd);
3309 }
3310 var_80 = var79;
3311 {
3312 var81 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_80);
3313 }
3314 var_82 = var81;
3315 for(;;) {
3316 {
3317 var83 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_82);
3318 }
3319 if (var83){
3320 {
3321 var84 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_82);
3322 }
3323 var_npropdef = var84;
3324 {
3325 { /* Inline modelize_property#AAttrPropdef#has_value (var_npropdef) on <var_npropdef:AAttrPropdef> */
3326 var87 = var_npropdef->attrs[COLOR_nit__modelize_property__AAttrPropdef___has_value].s; /* _has_value on <var_npropdef:AAttrPropdef> */
3327 var85 = var87;
3328 RET_LABEL86:(void)0;
3329 }
3330 }
3331 var88 = !var85;
3332 if (var88){
3333 goto BREAK_label89;
3334 } else {
3335 }
3336 {
3337 { /* Inline modelize_property#APropdef#mpropdef (var_npropdef) on <var_npropdef:AAttrPropdef> */
3338 var92 = var_npropdef->attrs[COLOR_nit__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_npropdef:AAttrPropdef> */
3339 var90 = var92;
3340 RET_LABEL91:(void)0;
3341 }
3342 }
3343 if (unlikely(var90 == NULL)) {
3344 PRINT_ERROR("Runtime error: %s", "Cast failed");
3345 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 349);
3346 show_backtrace(1);
3347 }
3348 var_mpropdef = var90;
3349 var93 = NEW_nit__RapidTypeVisitor(&type_nit__RapidTypeVisitor);
3350 {
3351 ((void (*)(val* self, val* p0))(var93->class->vft[COLOR_nit__rapid_type_analysis__RapidTypeVisitor__analysis_61d]))(var93, self) /* analysis= on <var93:RapidTypeVisitor>*/;
3352 }
3353 {
3354 ((void (*)(val* self, val* p0))(var93->class->vft[COLOR_nit__rapid_type_analysis__RapidTypeVisitor__receiver_61d]))(var93, var_bound_mtype) /* receiver= on <var93:RapidTypeVisitor>*/;
3355 }
3356 {
3357 ((void (*)(val* self, val* p0))(var93->class->vft[COLOR_nit__rapid_type_analysis__RapidTypeVisitor__mpropdef_61d]))(var93, var_mpropdef) /* mpropdef= on <var93:RapidTypeVisitor>*/;
3358 }
3359 {
3360 ((void (*)(val* self))(var93->class->vft[COLOR_standard__kernel__Object__init]))(var93) /* init on <var93:RapidTypeVisitor>*/;
3361 }
3362 var_v = var93;
3363 {
3364 { /* Inline parser_nodes#AAttrPropdef#n_expr (var_npropdef) on <var_npropdef:AAttrPropdef> */
3365 var96 = var_npropdef->attrs[COLOR_nit__parser_nodes__AAttrPropdef___n_expr].val; /* _n_expr on <var_npropdef:AAttrPropdef> */
3366 var94 = var96;
3367 RET_LABEL95:(void)0;
3368 }
3369 }
3370 {
3371 nit___nit__Visitor___enter_visit(var_v, var94); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:RapidTypeVisitor>*/
3372 }
3373 {
3374 { /* Inline parser_nodes#AAttrPropdef#n_block (var_npropdef) on <var_npropdef:AAttrPropdef> */
3375 var99 = var_npropdef->attrs[COLOR_nit__parser_nodes__AAttrPropdef___n_block].val; /* _n_block on <var_npropdef:AAttrPropdef> */
3376 var97 = var99;
3377 RET_LABEL98:(void)0;
3378 }
3379 }
3380 {
3381 nit___nit__Visitor___enter_visit(var_v, var97); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:RapidTypeVisitor>*/
3382 }
3383 BREAK_label89: (void)0;
3384 {
3385 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_82); /* Direct call array#ArrayIterator#next on <var_82:ArrayIterator[AAttrPropdef]>*/
3386 }
3387 } else {
3388 goto BREAK_label100;
3389 }
3390 }
3391 BREAK_label100: (void)0;
3392 {
3393 { /* Inline abstract_collection#Iterator#finish (var_82) on <var_82:ArrayIterator[AAttrPropdef]> */
3394 RET_LABEL101:(void)0;
3395 }
3396 }
3397 {
3398 ((void (*)(val* self))(var_73->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_73) /* next on <var_73:Iterator[MClassDef]>*/;
3399 }
3400 } else {
3401 goto BREAK_label102;
3402 }
3403 }
3404 BREAK_label102: (void)0;
3405 {
3406 { /* Inline abstract_collection#Iterator#finish (var_73) on <var_73:Iterator[MClassDef]> */
3407 RET_LABEL103:(void)0;
3408 }
3409 }
3410 RET_LABEL:;
3411 }
3412 /* method rapid_type_analysis#RapidTypeAnalysis#add_cast for (self: RapidTypeAnalysis, MType) */
3413 void nit___nit__RapidTypeAnalysis___add_cast(val* self, val* p0) {
3414 val* var_mtype /* var mtype: MType */;
3415 short int var /* : Bool */;
3416 val* var1 /* : HashSet[MType] */;
3417 val* var3 /* : HashSet[MType] */;
3418 val* var4 /* : HashSet[MType] */;
3419 val* var6 /* : HashSet[MType] */;
3420 var_mtype = p0;
3421 {
3422 var = ((short int (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
3423 }
3424 if (var){
3425 {
3426 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_open_cast_types (self) on <self:RapidTypeAnalysis> */
3427 var3 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_open_cast_types].val; /* _live_open_cast_types on <self:RapidTypeAnalysis> */
3428 if (unlikely(var3 == NULL)) {
3429 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_cast_types");
3430 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 68);
3431 show_backtrace(1);
3432 }
3433 var1 = var3;
3434 RET_LABEL2:(void)0;
3435 }
3436 }
3437 {
3438 standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var1, var_mtype); /* Direct call hash_collection#HashSet#add on <var1:HashSet[MType]>*/
3439 }
3440 } else {
3441 {
3442 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_cast_types (self) on <self:RapidTypeAnalysis> */
3443 var6 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_cast_types].val; /* _live_cast_types on <self:RapidTypeAnalysis> */
3444 if (unlikely(var6 == NULL)) {
3445 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_cast_types");
3446 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 65);
3447 show_backtrace(1);
3448 }
3449 var4 = var6;
3450 RET_LABEL5:(void)0;
3451 }
3452 }
3453 {
3454 standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var4, var_mtype); /* Direct call hash_collection#HashSet#add on <var4:HashSet[MType]>*/
3455 }
3456 }
3457 RET_LABEL:;
3458 }
3459 /* method rapid_type_analysis#RapidTypeAnalysis#try_send for (self: RapidTypeAnalysis, MClassType, MMethod) */
3460 void nit___nit__RapidTypeAnalysis___try_send(val* self, val* p0, val* p1) {
3461 val* var_recv /* var recv: MClassType */;
3462 val* var_mproperty /* var mproperty: MMethod */;
3463 val* var /* : MClass */;
3464 val* var2 /* : MClass */;
3465 val* var3 /* : MClassDef */;
3466 val* var5 /* : MClassDef */;
3467 val* var6 /* : MClassType */;
3468 val* var8 /* : MClassType */;
3469 val* var9 /* : MModule */;
3470 val* var11 /* : MModule */;
3471 short int var12 /* : Bool */;
3472 short int var13 /* : Bool */;
3473 val* var14 /* : MModule */;
3474 val* var16 /* : MModule */;
3475 val* var17 /* : MPropDef */;
3476 val* var_d /* var d: MMethodDef */;
3477 var_recv = p0;
3478 var_mproperty = p1;
3479 {
3480 { /* Inline model#MClassType#mclass (var_recv) on <var_recv:MClassType> */
3481 var2 = var_recv->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_recv:MClassType> */
3482 if (unlikely(var2 == NULL)) {
3483 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
3484 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
3485 show_backtrace(1);
3486 }
3487 var = var2;
3488 RET_LABEL1:(void)0;
3489 }
3490 }
3491 {
3492 { /* Inline model#MClass#intro (var) on <var:MClass> */
3493 var5 = var->attrs[COLOR_nit__model__MClass___intro].val; /* _intro on <var:MClass> */
3494 if (unlikely(var5 == NULL)) {
3495 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
3496 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 423);
3497 show_backtrace(1);
3498 }
3499 var3 = var5;
3500 RET_LABEL4:(void)0;
3501 }
3502 }
3503 {
3504 { /* Inline model#MClassDef#bound_mtype (var3) on <var3:MClassDef> */
3505 var8 = var3->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var3:MClassDef> */
3506 if (unlikely(var8 == NULL)) {
3507 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
3508 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
3509 show_backtrace(1);
3510 }
3511 var6 = var8;
3512 RET_LABEL7:(void)0;
3513 }
3514 }
3515 var_recv = var6;
3516 {
3517 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
3518 var11 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
3519 if (unlikely(var11 == NULL)) {
3520 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
3521 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
3522 show_backtrace(1);
3523 }
3524 var9 = var11;
3525 RET_LABEL10:(void)0;
3526 }
3527 }
3528 {
3529 var12 = nit___nit__MType___has_mproperty(var_recv, var9, var_mproperty);
3530 }
3531 var13 = !var12;
3532 if (var13){
3533 goto RET_LABEL;
3534 } else {
3535 }
3536 {
3537 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
3538 var16 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
3539 if (unlikely(var16 == NULL)) {
3540 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
3541 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
3542 show_backtrace(1);
3543 }
3544 var14 = var16;
3545 RET_LABEL15:(void)0;
3546 }
3547 }
3548 {
3549 var17 = nit___nit__MProperty___lookup_first_definition(var_mproperty, var14, var_recv);
3550 }
3551 var_d = var17;
3552 {
3553 nit___nit__RapidTypeAnalysis___add_call(self, var_d); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_call on <self:RapidTypeAnalysis>*/
3554 }
3555 RET_LABEL:;
3556 }
3557 /* method rapid_type_analysis#RapidTypeAnalysis#add_call for (self: RapidTypeAnalysis, MMethodDef) */
3558 void nit___nit__RapidTypeAnalysis___add_call(val* self, val* p0) {
3559 val* var_mpropdef /* var mpropdef: MMethodDef */;
3560 val* var /* : HashSet[MMethodDef] */;
3561 val* var2 /* : HashSet[MMethodDef] */;
3562 short int var3 /* : Bool */;
3563 val* var4 /* : HashSet[MMethodDef] */;
3564 val* var6 /* : HashSet[MMethodDef] */;
3565 val* var7 /* : List[MMethodDef] */;
3566 val* var9 /* : List[MMethodDef] */;
3567 val* var10 /* : MProperty */;
3568 val* var12 /* : MProperty */;
3569 val* var_mproperty /* var mproperty: MMethod */;
3570 val* var13 /* : Array[MPropDef] */;
3571 val* var15 /* : Array[MPropDef] */;
3572 long var16 /* : Int */;
3573 long var18 /* : Int */;
3574 long var19 /* : Int */;
3575 short int var20 /* : Bool */;
3576 short int var22 /* : Bool */;
3577 int cltype;
3578 int idtype;
3579 const char* var_class_name;
3580 short int var23 /* : Bool */;
3581 val* var24 /* : Array[MPropDef] */;
3582 val* var26 /* : Array[MPropDef] */;
3583 val* var_ /* var : Array[MMethodDef] */;
3584 val* var27 /* : ArrayIterator[nullable Object] */;
3585 val* var_28 /* var : ArrayIterator[MMethodDef] */;
3586 short int var29 /* : Bool */;
3587 val* var30 /* : nullable Object */;
3588 val* var_d /* var d: MMethodDef */;
3589 short int var31 /* : Bool */;
3590 short int var33 /* : Bool */;
3591 val* var34 /* : HashSet[MMethodDef] */;
3592 val* var36 /* : HashSet[MMethodDef] */;
3593 short int var37 /* : Bool */;
3594 short int var38 /* : Bool */;
3595 val* var41 /* : Array[MMethod] */;
3596 val* var43 /* : Array[MMethod] */;
3597 val* var44 /* : MProperty */;
3598 val* var46 /* : MProperty */;
3599 var_mpropdef = p0;
3600 {
3601 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_methoddefs (self) on <self:RapidTypeAnalysis> */
3602 var2 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_methoddefs].val; /* _live_methoddefs on <self:RapidTypeAnalysis> */
3603 if (unlikely(var2 == NULL)) {
3604 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methoddefs");
3605 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 72);
3606 show_backtrace(1);
3607 }
3608 var = var2;
3609 RET_LABEL1:(void)0;
3610 }
3611 }
3612 {
3613 var3 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var, var_mpropdef);
3614 }
3615 if (var3){
3616 goto RET_LABEL;
3617 } else {
3618 }
3619 {
3620 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_methoddefs (self) on <self:RapidTypeAnalysis> */
3621 var6 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_methoddefs].val; /* _live_methoddefs on <self:RapidTypeAnalysis> */
3622 if (unlikely(var6 == NULL)) {
3623 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methoddefs");
3624 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 72);
3625 show_backtrace(1);
3626 }
3627 var4 = var6;
3628 RET_LABEL5:(void)0;
3629 }
3630 }
3631 {
3632 standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var4, var_mpropdef); /* Direct call hash_collection#HashSet#add on <var4:HashSet[MMethodDef]>*/
3633 }
3634 {
3635 { /* Inline rapid_type_analysis#RapidTypeAnalysis#todo (self) on <self:RapidTypeAnalysis> */
3636 var9 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___todo].val; /* _todo on <self:RapidTypeAnalysis> */
3637 if (unlikely(var9 == NULL)) {
3638 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _todo");
3639 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 172);
3640 show_backtrace(1);
3641 }
3642 var7 = var9;
3643 RET_LABEL8:(void)0;
3644 }
3645 }
3646 {
3647 standard___standard__Sequence___SimpleCollection__add(var7, var_mpropdef); /* Direct call abstract_collection#Sequence#add on <var7:List[MMethodDef]>*/
3648 }
3649 {
3650 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MMethodDef> */
3651 var12 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MMethodDef> */
3652 if (unlikely(var12 == NULL)) {
3653 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
3654 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
3655 show_backtrace(1);
3656 }
3657 var10 = var12;
3658 RET_LABEL11:(void)0;
3659 }
3660 }
3661 var_mproperty = var10;
3662 {
3663 { /* Inline model#MProperty#mpropdefs (var_mproperty) on <var_mproperty:MMethod> */
3664 var15 = var_mproperty->attrs[COLOR_nit__model__MProperty___mpropdefs].val; /* _mpropdefs on <var_mproperty:MMethod> */
3665 if (unlikely(var15 == NULL)) {
3666 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
3667 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1768);
3668 show_backtrace(1);
3669 }
3670 var13 = var15;
3671 RET_LABEL14:(void)0;
3672 }
3673 }
3674 {
3675 { /* Inline array#AbstractArrayRead#length (var13) on <var13:Array[MPropDef](Array[MMethodDef])> */
3676 var18 = var13->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var13:Array[MPropDef](Array[MMethodDef])> */
3677 var16 = var18;
3678 RET_LABEL17:(void)0;
3679 }
3680 }
3681 var19 = 1;
3682 {
3683 { /* Inline kernel#Int#<= (var16,var19) on <var16:Int> */
3684 /* Covariant cast for argument 0 (i) <var19:Int> isa OTHER */
3685 /* <var19:Int> isa OTHER */
3686 var22 = 1; /* easy <var19:Int> isa OTHER*/
3687 if (unlikely(!var22)) {
3688 var_class_name = type_standard__Int.name;
3689 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3690 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 409);
3691 show_backtrace(1);
3692 }
3693 var23 = var16 <= var19;
3694 var20 = var23;
3695 goto RET_LABEL21;
3696 RET_LABEL21:(void)0;
3697 }
3698 }
3699 if (var20){
3700 goto RET_LABEL;
3701 } else {
3702 }
3703 {
3704 { /* Inline model#MProperty#mpropdefs (var_mproperty) on <var_mproperty:MMethod> */
3705 var26 = var_mproperty->attrs[COLOR_nit__model__MProperty___mpropdefs].val; /* _mpropdefs on <var_mproperty:MMethod> */
3706 if (unlikely(var26 == NULL)) {
3707 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
3708 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1768);
3709 show_backtrace(1);
3710 }
3711 var24 = var26;
3712 RET_LABEL25:(void)0;
3713 }
3714 }
3715 var_ = var24;
3716 {
3717 var27 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
3718 }
3719 var_28 = var27;
3720 for(;;) {
3721 {
3722 var29 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_28);
3723 }
3724 if (var29){
3725 {
3726 var30 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_28);
3727 }
3728 var_d = var30;
3729 {
3730 { /* Inline model#MMethodDef#is_abstract (var_d) on <var_d:MMethodDef> */
3731 var33 = var_d->attrs[COLOR_nit__model__MMethodDef___is_abstract].s; /* _is_abstract on <var_d:MMethodDef> */
3732 var31 = var33;
3733 RET_LABEL32:(void)0;
3734 }
3735 }
3736 if (var31){
3737 goto BREAK_label;
3738 } else {
3739 }
3740 {
3741 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_methoddefs (self) on <self:RapidTypeAnalysis> */
3742 var36 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_methoddefs].val; /* _live_methoddefs on <self:RapidTypeAnalysis> */
3743 if (unlikely(var36 == NULL)) {
3744 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methoddefs");
3745 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 72);
3746 show_backtrace(1);
3747 }
3748 var34 = var36;
3749 RET_LABEL35:(void)0;
3750 }
3751 }
3752 {
3753 var37 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var34, var_d);
3754 }
3755 var38 = !var37;
3756 if (var38){
3757 goto RET_LABEL;
3758 } else {
3759 }
3760 BREAK_label: (void)0;
3761 {
3762 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_28); /* Direct call array#ArrayIterator#next on <var_28:ArrayIterator[MMethodDef]>*/
3763 }
3764 } else {
3765 goto BREAK_label39;
3766 }
3767 }
3768 BREAK_label39: (void)0;
3769 {
3770 { /* Inline abstract_collection#Iterator#finish (var_28) on <var_28:ArrayIterator[MMethodDef]> */
3771 RET_LABEL40:(void)0;
3772 }
3773 }
3774 {
3775 { /* Inline rapid_type_analysis#RapidTypeAnalysis#totry_methods_to_remove (self) on <self:RapidTypeAnalysis> */
3776 var43 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___totry_methods_to_remove].val; /* _totry_methods_to_remove on <self:RapidTypeAnalysis> */
3777 if (unlikely(var43 == NULL)) {
3778 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods_to_remove");
3779 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 165);
3780 show_backtrace(1);
3781 }
3782 var41 = var43;
3783 RET_LABEL42:(void)0;
3784 }
3785 }
3786 {
3787 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MMethodDef> */
3788 var46 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MMethodDef> */
3789 if (unlikely(var46 == NULL)) {
3790 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
3791 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
3792 show_backtrace(1);
3793 }
3794 var44 = var46;
3795 RET_LABEL45:(void)0;
3796 }
3797 }
3798 {
3799 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var41, var44); /* Direct call array#Array#add on <var41:Array[MMethod]>*/
3800 }
3801 RET_LABEL:;
3802 }
3803 /* method rapid_type_analysis#RapidTypeAnalysis#add_send for (self: RapidTypeAnalysis, MType, MMethod) */
3804 void nit___nit__RapidTypeAnalysis___add_send(val* self, val* p0, val* p1) {
3805 val* var_recv /* var recv: MType */;
3806 val* var_mproperty /* var mproperty: MMethod */;
3807 val* var /* : HashSet[MMethod] */;
3808 val* var2 /* : HashSet[MMethod] */;
3809 short int var3 /* : Bool */;
3810 val* var4 /* : HashSet[MMethod] */;
3811 val* var6 /* : HashSet[MMethod] */;
3812 val* var7 /* : HashSet[MMethod] */;
3813 val* var9 /* : HashSet[MMethod] */;
3814 val* var10 /* : Array[MPropDef] */;
3815 val* var12 /* : Array[MPropDef] */;
3816 long var13 /* : Int */;
3817 long var15 /* : Int */;
3818 long var16 /* : Int */;
3819 short int var17 /* : Bool */;
3820 short int var19 /* : Bool */;
3821 val* var20 /* : Array[MPropDef] */;
3822 val* var22 /* : Array[MPropDef] */;
3823 val* var23 /* : nullable Object */;
3824 val* var_d /* var d: MMethodDef */;
3825 val* var24 /* : HashSet[MMethod] */;
3826 val* var26 /* : HashSet[MMethod] */;
3827 val* var27 /* : HashSet[MClass] */;
3828 val* var29 /* : HashSet[MClass] */;
3829 val* var_ /* var : HashSet[MClass] */;
3830 val* var30 /* : Iterator[nullable Object] */;
3831 val* var_31 /* var : Iterator[MClass] */;
3832 short int var32 /* : Bool */;
3833 val* var33 /* : nullable Object */;
3834 val* var_c /* var c: MClass */;
3835 val* var34 /* : MClassDef */;
3836 val* var36 /* : MClassDef */;
3837 val* var37 /* : MClassType */;
3838 val* var39 /* : MClassType */;
3839 var_recv = p0;
3840 var_mproperty = p1;
3841 {
3842 { /* Inline rapid_type_analysis#RapidTypeAnalysis#try_methods (self) on <self:RapidTypeAnalysis> */
3843 var2 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___try_methods].val; /* _try_methods on <self:RapidTypeAnalysis> */
3844 if (unlikely(var2 == NULL)) {
3845 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _try_methods");
3846 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 168);
3847 show_backtrace(1);
3848 }
3849 var = var2;
3850 RET_LABEL1:(void)0;
3851 }
3852 }
3853 {
3854 var3 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var, var_mproperty);
3855 }
3856 if (var3){
3857 goto RET_LABEL;
3858 } else {
3859 }
3860 {
3861 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_methods (self) on <self:RapidTypeAnalysis> */
3862 var6 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_methods].val; /* _live_methods on <self:RapidTypeAnalysis> */
3863 if (unlikely(var6 == NULL)) {
3864 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methods");
3865 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 75);
3866 show_backtrace(1);
3867 }
3868 var4 = var6;
3869 RET_LABEL5:(void)0;
3870 }
3871 }
3872 {
3873 standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var4, var_mproperty); /* Direct call hash_collection#HashSet#add on <var4:HashSet[MMethod]>*/
3874 }
3875 {
3876 { /* Inline rapid_type_analysis#RapidTypeAnalysis#try_methods (self) on <self:RapidTypeAnalysis> */
3877 var9 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___try_methods].val; /* _try_methods on <self:RapidTypeAnalysis> */
3878 if (unlikely(var9 == NULL)) {
3879 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _try_methods");
3880 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 168);
3881 show_backtrace(1);
3882 }
3883 var7 = var9;
3884 RET_LABEL8:(void)0;
3885 }
3886 }
3887 {
3888 standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var7, var_mproperty); /* Direct call hash_collection#HashSet#add on <var7:HashSet[MMethod]>*/
3889 }
3890 {
3891 { /* Inline model#MProperty#mpropdefs (var_mproperty) on <var_mproperty:MMethod> */
3892 var12 = var_mproperty->attrs[COLOR_nit__model__MProperty___mpropdefs].val; /* _mpropdefs on <var_mproperty:MMethod> */
3893 if (unlikely(var12 == NULL)) {
3894 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
3895 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1768);
3896 show_backtrace(1);
3897 }
3898 var10 = var12;
3899 RET_LABEL11:(void)0;
3900 }
3901 }
3902 {
3903 { /* Inline array#AbstractArrayRead#length (var10) on <var10:Array[MPropDef](Array[MMethodDef])> */
3904 var15 = var10->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var10:Array[MPropDef](Array[MMethodDef])> */
3905 var13 = var15;
3906 RET_LABEL14:(void)0;
3907 }
3908 }
3909 var16 = 1;
3910 {
3911 { /* Inline kernel#Int#== (var13,var16) on <var13:Int> */
3912 var19 = var13 == var16;
3913 var17 = var19;
3914 goto RET_LABEL18;
3915 RET_LABEL18:(void)0;
3916 }
3917 }
3918 if (var17){
3919 {
3920 { /* Inline model#MProperty#mpropdefs (var_mproperty) on <var_mproperty:MMethod> */
3921 var22 = var_mproperty->attrs[COLOR_nit__model__MProperty___mpropdefs].val; /* _mpropdefs on <var_mproperty:MMethod> */
3922 if (unlikely(var22 == NULL)) {
3923 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
3924 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1768);
3925 show_backtrace(1);
3926 }
3927 var20 = var22;
3928 RET_LABEL21:(void)0;
3929 }
3930 }
3931 {
3932 var23 = standard___standard__SequenceRead___Collection__first(var20);
3933 }
3934 var_d = var23;
3935 {
3936 nit___nit__RapidTypeAnalysis___add_call(self, var_d); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_call on <self:RapidTypeAnalysis>*/
3937 }
3938 goto RET_LABEL;
3939 } else {
3940 }
3941 {
3942 { /* Inline rapid_type_analysis#RapidTypeAnalysis#totry_methods (self) on <self:RapidTypeAnalysis> */
3943 var26 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___totry_methods].val; /* _totry_methods on <self:RapidTypeAnalysis> */
3944 if (unlikely(var26 == NULL)) {
3945 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods");
3946 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 162);
3947 show_backtrace(1);
3948 }
3949 var24 = var26;
3950 RET_LABEL25:(void)0;
3951 }
3952 }
3953 {
3954 standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var24, var_mproperty); /* Direct call hash_collection#HashSet#add on <var24:HashSet[MMethod]>*/
3955 }
3956 {
3957 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_classes (self) on <self:RapidTypeAnalysis> */
3958 var29 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_classes].val; /* _live_classes on <self:RapidTypeAnalysis> */
3959 if (unlikely(var29 == NULL)) {
3960 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_classes");
3961 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 62);
3962 show_backtrace(1);
3963 }
3964 var27 = var29;
3965 RET_LABEL28:(void)0;
3966 }
3967 }
3968 var_ = var27;
3969 {
3970 var30 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_);
3971 }
3972 var_31 = var30;
3973 for(;;) {
3974 {
3975 var32 = ((short int (*)(val* self))(var_31->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_31) /* is_ok on <var_31:Iterator[MClass]>*/;
3976 }
3977 if (var32){
3978 {
3979 var33 = ((val* (*)(val* self))(var_31->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_31) /* item on <var_31:Iterator[MClass]>*/;
3980 }
3981 var_c = var33;
3982 {
3983 { /* Inline model#MClass#intro (var_c) on <var_c:MClass> */
3984 var36 = var_c->attrs[COLOR_nit__model__MClass___intro].val; /* _intro on <var_c:MClass> */
3985 if (unlikely(var36 == NULL)) {
3986 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
3987 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 423);
3988 show_backtrace(1);
3989 }
3990 var34 = var36;
3991 RET_LABEL35:(void)0;
3992 }
3993 }
3994 {
3995 { /* Inline model#MClassDef#bound_mtype (var34) on <var34:MClassDef> */
3996 var39 = var34->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var34:MClassDef> */
3997 if (unlikely(var39 == NULL)) {
3998 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
3999 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
4000 show_backtrace(1);
4001 }
4002 var37 = var39;
4003 RET_LABEL38:(void)0;
4004 }
4005 }
4006 {
4007 nit___nit__RapidTypeAnalysis___try_send(self, var37, var_mproperty); /* Direct call rapid_type_analysis#RapidTypeAnalysis#try_send on <self:RapidTypeAnalysis>*/
4008 }
4009 {
4010 ((void (*)(val* self))(var_31->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_31) /* next on <var_31:Iterator[MClass]>*/;
4011 }
4012 } else {
4013 goto BREAK_label;
4014 }
4015 }
4016 BREAK_label: (void)0;
4017 {
4018 { /* Inline abstract_collection#Iterator#finish (var_31) on <var_31:Iterator[MClass]> */
4019 RET_LABEL40:(void)0;
4020 }
4021 }
4022 RET_LABEL:;
4023 }
4024 /* method rapid_type_analysis#RapidTypeAnalysis#try_super_send for (self: RapidTypeAnalysis, MClassType, MMethodDef) */
4025 void nit___nit__RapidTypeAnalysis___try_super_send(val* self, val* p0, val* p1) {
4026 val* var_recv /* var recv: MClassType */;
4027 val* var_mpropdef /* var mpropdef: MMethodDef */;
4028 val* var /* : MClass */;
4029 val* var2 /* : MClass */;
4030 val* var3 /* : MClassDef */;
4031 val* var5 /* : MClassDef */;
4032 val* var6 /* : MClassType */;
4033 val* var8 /* : MClassType */;
4034 val* var9 /* : MModule */;
4035 val* var11 /* : MModule */;
4036 val* var12 /* : Set[MClassDef] */;
4037 val* var13 /* : MClassDef */;
4038 val* var15 /* : MClassDef */;
4039 short int var16 /* : Bool */;
4040 short int var17 /* : Bool */;
4041 val* var18 /* : MModule */;
4042 val* var20 /* : MModule */;
4043 val* var21 /* : MPropDef */;
4044 val* var_d /* var d: MMethodDef */;
4045 var_recv = p0;
4046 var_mpropdef = p1;
4047 {
4048 { /* Inline model#MClassType#mclass (var_recv) on <var_recv:MClassType> */
4049 var2 = var_recv->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_recv:MClassType> */
4050 if (unlikely(var2 == NULL)) {
4051 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4052 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
4053 show_backtrace(1);
4054 }
4055 var = var2;
4056 RET_LABEL1:(void)0;
4057 }
4058 }
4059 {
4060 { /* Inline model#MClass#intro (var) on <var:MClass> */
4061 var5 = var->attrs[COLOR_nit__model__MClass___intro].val; /* _intro on <var:MClass> */
4062 if (unlikely(var5 == NULL)) {
4063 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
4064 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 423);
4065 show_backtrace(1);
4066 }
4067 var3 = var5;
4068 RET_LABEL4:(void)0;
4069 }
4070 }
4071 {
4072 { /* Inline model#MClassDef#bound_mtype (var3) on <var3:MClassDef> */
4073 var8 = var3->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var3:MClassDef> */
4074 if (unlikely(var8 == NULL)) {
4075 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
4076 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
4077 show_backtrace(1);
4078 }
4079 var6 = var8;
4080 RET_LABEL7:(void)0;
4081 }
4082 }
4083 var_recv = var6;
4084 {
4085 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
4086 var11 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
4087 if (unlikely(var11 == NULL)) {
4088 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
4089 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
4090 show_backtrace(1);
4091 }
4092 var9 = var11;
4093 RET_LABEL10:(void)0;
4094 }
4095 }
4096 {
4097 var12 = nit___nit__MClassType___MType__collect_mclassdefs(var_recv, var9);
4098 }
4099 {
4100 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MMethodDef> */
4101 var15 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MMethodDef> */
4102 if (unlikely(var15 == NULL)) {
4103 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
4104 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2010);
4105 show_backtrace(1);
4106 }
4107 var13 = var15;
4108 RET_LABEL14:(void)0;
4109 }
4110 }
4111 {
4112 var16 = ((short int (*)(val* self, val* p0))(var12->class->vft[COLOR_standard__abstract_collection__Collection__has]))(var12, var13) /* has on <var12:Set[MClassDef]>*/;
4113 }
4114 var17 = !var16;
4115 if (var17){
4116 goto RET_LABEL;
4117 } else {
4118 }
4119 {
4120 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
4121 var20 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
4122 if (unlikely(var20 == NULL)) {
4123 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
4124 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
4125 show_backtrace(1);
4126 }
4127 var18 = var20;
4128 RET_LABEL19:(void)0;
4129 }
4130 }
4131 {
4132 var21 = nit___nit__MPropDef___lookup_next_definition(var_mpropdef, var18, var_recv);
4133 }
4134 var_d = var21;
4135 {
4136 nit___nit__RapidTypeAnalysis___add_call(self, var_d); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_call on <self:RapidTypeAnalysis>*/
4137 }
4138 RET_LABEL:;
4139 }
4140 /* method rapid_type_analysis#RapidTypeAnalysis#add_super_send for (self: RapidTypeAnalysis, MType, MMethodDef) */
4141 void nit___nit__RapidTypeAnalysis___add_super_send(val* self, val* p0, val* p1) {
4142 val* var_recv /* var recv: MType */;
4143 val* var_mpropdef /* var mpropdef: MMethodDef */;
4144 short int var /* : Bool */;
4145 short int var2 /* : Bool */;
4146 val* var3 /* : HashSet[MMethodDef] */;
4147 val* var5 /* : HashSet[MMethodDef] */;
4148 short int var6 /* : Bool */;
4149 val* var7 /* : HashSet[MMethodDef] */;
4150 val* var9 /* : HashSet[MMethodDef] */;
4151 val* var10 /* : HashSet[MClass] */;
4152 val* var12 /* : HashSet[MClass] */;
4153 val* var_ /* var : HashSet[MClass] */;
4154 val* var13 /* : Iterator[nullable Object] */;
4155 val* var_14 /* var : Iterator[MClass] */;
4156 short int var15 /* : Bool */;
4157 val* var16 /* : nullable Object */;
4158 val* var_c /* var c: MClass */;
4159 val* var17 /* : MClassDef */;
4160 val* var19 /* : MClassDef */;
4161 val* var20 /* : MClassType */;
4162 val* var22 /* : MClassType */;
4163 var_recv = p0;
4164 var_mpropdef = p1;
4165 {
4166 { /* Inline modelize_property#MPropDef#has_supercall (var_mpropdef) on <var_mpropdef:MMethodDef> */
4167 var2 = var_mpropdef->attrs[COLOR_nit__modelize_property__MPropDef___has_supercall].s; /* _has_supercall on <var_mpropdef:MMethodDef> */
4168 var = var2;
4169 RET_LABEL1:(void)0;
4170 }
4171 }
4172 if (unlikely(!var)) {
4173 PRINT_ERROR("Runtime error: %s", "Assert failed");
4174 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 422);
4175 show_backtrace(1);
4176 }
4177 {
4178 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_super_sends (self) on <self:RapidTypeAnalysis> */
4179 var5 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_super_sends].val; /* _live_super_sends on <self:RapidTypeAnalysis> */
4180 if (unlikely(var5 == NULL)) {
4181 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_super_sends");
4182 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 107);
4183 show_backtrace(1);
4184 }
4185 var3 = var5;
4186 RET_LABEL4:(void)0;
4187 }
4188 }
4189 {
4190 var6 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var3, var_mpropdef);
4191 }
4192 if (var6){
4193 goto RET_LABEL;
4194 } else {
4195 }
4196 {
4197 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_super_sends (self) on <self:RapidTypeAnalysis> */
4198 var9 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_super_sends].val; /* _live_super_sends on <self:RapidTypeAnalysis> */
4199 if (unlikely(var9 == NULL)) {
4200 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_super_sends");
4201 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 107);
4202 show_backtrace(1);
4203 }
4204 var7 = var9;
4205 RET_LABEL8:(void)0;
4206 }
4207 }
4208 {
4209 standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var7, var_mpropdef); /* Direct call hash_collection#HashSet#add on <var7:HashSet[MMethodDef]>*/
4210 }
4211 {
4212 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_classes (self) on <self:RapidTypeAnalysis> */
4213 var12 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_classes].val; /* _live_classes on <self:RapidTypeAnalysis> */
4214 if (unlikely(var12 == NULL)) {
4215 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_classes");
4216 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 62);
4217 show_backtrace(1);
4218 }
4219 var10 = var12;
4220 RET_LABEL11:(void)0;
4221 }
4222 }
4223 var_ = var10;
4224 {
4225 var13 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_);
4226 }
4227 var_14 = var13;
4228 for(;;) {
4229 {
4230 var15 = ((short int (*)(val* self))(var_14->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_14) /* is_ok on <var_14:Iterator[MClass]>*/;
4231 }
4232 if (var15){
4233 {
4234 var16 = ((val* (*)(val* self))(var_14->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_14) /* item on <var_14:Iterator[MClass]>*/;
4235 }
4236 var_c = var16;
4237 {
4238 { /* Inline model#MClass#intro (var_c) on <var_c:MClass> */
4239 var19 = var_c->attrs[COLOR_nit__model__MClass___intro].val; /* _intro on <var_c:MClass> */
4240 if (unlikely(var19 == NULL)) {
4241 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
4242 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 423);
4243 show_backtrace(1);
4244 }
4245 var17 = var19;
4246 RET_LABEL18:(void)0;
4247 }
4248 }
4249 {
4250 { /* Inline model#MClassDef#bound_mtype (var17) on <var17:MClassDef> */
4251 var22 = var17->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var17:MClassDef> */
4252 if (unlikely(var22 == NULL)) {
4253 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
4254 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
4255 show_backtrace(1);
4256 }
4257 var20 = var22;
4258 RET_LABEL21:(void)0;
4259 }
4260 }
4261 {
4262 nit___nit__RapidTypeAnalysis___try_super_send(self, var20, var_mpropdef); /* Direct call rapid_type_analysis#RapidTypeAnalysis#try_super_send on <self:RapidTypeAnalysis>*/
4263 }
4264 {
4265 ((void (*)(val* self))(var_14->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_14) /* next on <var_14:Iterator[MClass]>*/;
4266 }
4267 } else {
4268 goto BREAK_label;
4269 }
4270 }
4271 BREAK_label: (void)0;
4272 {
4273 { /* Inline abstract_collection#Iterator#finish (var_14) on <var_14:Iterator[MClass]> */
4274 RET_LABEL23:(void)0;
4275 }
4276 }
4277 RET_LABEL:;
4278 }
4279 /* method rapid_type_analysis#RapidTypeAnalysis#init for (self: RapidTypeAnalysis) */
4280 void nit___nit__RapidTypeAnalysis___standard__kernel__Object__init(val* self) {
4281 {
4282 ((void (*)(val* self))(self->class->vft[COLOR_nit___nit__RapidTypeAnalysis___standard__kernel__Object__init]))(self) /* init on <self:RapidTypeAnalysis>*/;
4283 }
4284 RET_LABEL:;
4285 }
4286 /* method rapid_type_analysis#RapidTypeVisitor#analysis for (self: RapidTypeVisitor): RapidTypeAnalysis */
4287 val* nit___nit__RapidTypeVisitor___analysis(val* self) {
4288 val* var /* : RapidTypeAnalysis */;
4289 val* var1 /* : RapidTypeAnalysis */;
4290 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
4291 if (unlikely(var1 == NULL)) {
4292 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
4293 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
4294 show_backtrace(1);
4295 }
4296 var = var1;
4297 RET_LABEL:;
4298 return var;
4299 }
4300 /* method rapid_type_analysis#RapidTypeVisitor#analysis= for (self: RapidTypeVisitor, RapidTypeAnalysis) */
4301 void nit___nit__RapidTypeVisitor___analysis_61d(val* self, val* p0) {
4302 self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val = p0; /* _analysis on <self:RapidTypeVisitor> */
4303 RET_LABEL:;
4304 }
4305 /* method rapid_type_analysis#RapidTypeVisitor#receiver for (self: RapidTypeVisitor): MClassType */
4306 val* nit___nit__RapidTypeVisitor___receiver(val* self) {
4307 val* var /* : MClassType */;
4308 val* var1 /* : MClassType */;
4309 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___receiver].val; /* _receiver on <self:RapidTypeVisitor> */
4310 if (unlikely(var1 == NULL)) {
4311 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _receiver");
4312 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 436);
4313 show_backtrace(1);
4314 }
4315 var = var1;
4316 RET_LABEL:;
4317 return var;
4318 }
4319 /* method rapid_type_analysis#RapidTypeVisitor#receiver= for (self: RapidTypeVisitor, MClassType) */
4320 void nit___nit__RapidTypeVisitor___receiver_61d(val* self, val* p0) {
4321 self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___receiver].val = p0; /* _receiver on <self:RapidTypeVisitor> */
4322 RET_LABEL:;
4323 }
4324 /* method rapid_type_analysis#RapidTypeVisitor#mpropdef= for (self: RapidTypeVisitor, MPropDef) */
4325 void nit___nit__RapidTypeVisitor___mpropdef_61d(val* self, val* p0) {
4326 self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___mpropdef].val = p0; /* _mpropdef on <self:RapidTypeVisitor> */
4327 RET_LABEL:;
4328 }
4329 /* method rapid_type_analysis#RapidTypeVisitor#init for (self: RapidTypeVisitor) */
4330 void nit___nit__RapidTypeVisitor___standard__kernel__Object__init(val* self) {
4331 val* var /* : MClassType */;
4332 val* var2 /* : MClassType */;
4333 short int var3 /* : Bool */;
4334 short int var4 /* : Bool */;
4335 {
4336 ((void (*)(val* self))(self->class->vft[COLOR_nit___nit__RapidTypeVisitor___standard__kernel__Object__init]))(self) /* init on <self:RapidTypeVisitor>*/;
4337 }
4338 {
4339 { /* Inline rapid_type_analysis#RapidTypeVisitor#receiver (self) on <self:RapidTypeVisitor> */
4340 var2 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___receiver].val; /* _receiver on <self:RapidTypeVisitor> */
4341 if (unlikely(var2 == NULL)) {
4342 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _receiver");
4343 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 436);
4344 show_backtrace(1);
4345 }
4346 var = var2;
4347 RET_LABEL1:(void)0;
4348 }
4349 }
4350 {
4351 var3 = ((short int (*)(val* self))(var->class->vft[COLOR_nit__model__MType__need_anchor]))(var) /* need_anchor on <var:MClassType>*/;
4352 }
4353 var4 = !var3;
4354 if (unlikely(!var4)) {
4355 PRINT_ERROR("Runtime error: %s", "Assert failed");
4356 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 441);
4357 show_backtrace(1);
4358 }
4359 RET_LABEL:;
4360 }
4361 /* method rapid_type_analysis#RapidTypeVisitor#visit for (self: RapidTypeVisitor, ANode) */
4362 void nit___nit__RapidTypeVisitor___nit__parser_nodes__Visitor__visit(val* self, val* p0) {
4363 val* var_n /* var n: ANode */;
4364 short int var /* : Bool */;
4365 int cltype;
4366 int idtype;
4367 val* var1 /* : nullable MType */;
4368 val* var3 /* : nullable MType */;
4369 val* var_implicit_cast_to /* var implicit_cast_to: nullable MType */;
4370 val* var4 /* : null */;
4371 short int var5 /* : Bool */;
4372 short int var6 /* : Bool */;
4373 val* var_other /* var other: nullable Object */;
4374 short int var8 /* : Bool */;
4375 short int var9 /* : Bool */;
4376 short int var10 /* : Bool */;
4377 int cltype11;
4378 int idtype12;
4379 short int var13 /* : Bool */;
4380 var_n = p0;
4381 {
4382 ((void (*)(val* self, val* p0))(var_n->class->vft[COLOR_nit__rapid_type_analysis__ANode__accept_rapid_type_visitor]))(var_n, self) /* accept_rapid_type_visitor on <var_n:ANode>*/;
4383 }
4384 /* <var_n:ANode> isa AExpr */
4385 cltype = type_nit__AExpr.color;
4386 idtype = type_nit__AExpr.id;
4387 if(cltype >= var_n->type->table_size) {
4388 var = 0;
4389 } else {
4390 var = var_n->type->type_table[cltype] == idtype;
4391 }
4392 if (var){
4393 {
4394 { /* Inline typing#AExpr#implicit_cast_to (var_n) on <var_n:ANode(AExpr)> */
4395 var3 = var_n->attrs[COLOR_nit__typing__AExpr___implicit_cast_to].val; /* _implicit_cast_to on <var_n:ANode(AExpr)> */
4396 var1 = var3;
4397 RET_LABEL2:(void)0;
4398 }
4399 }
4400 var_implicit_cast_to = var1;
4401 var4 = NULL;
4402 if (var_implicit_cast_to == NULL) {
4403 var5 = 0; /* is null */
4404 } else {
4405 var5 = 1; /* arg is null and recv is not */
4406 }
4407 if (0) {
4408 { /* Inline kernel#Object#!= (var_implicit_cast_to,var4) on <var_implicit_cast_to:nullable MType> */
4409 var_other = var4;
4410 {
4411 var8 = ((short int (*)(val* self, val* p0))(var_implicit_cast_to->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_implicit_cast_to, var_other) /* == on <var_implicit_cast_to:nullable MType(MType)>*/;
4412 }
4413 var9 = !var8;
4414 var6 = var9;
4415 goto RET_LABEL7;
4416 RET_LABEL7:(void)0;
4417 }
4418 var5 = var6;
4419 }
4420 if (var5){
4421 {
4422 nit___nit__RapidTypeVisitor___add_cast_type(self, var_implicit_cast_to); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_cast_type on <self:RapidTypeVisitor>*/
4423 }
4424 } else {
4425 }
4426 } else {
4427 }
4428 /* <var_n:ANode> isa AAnnotations */
4429 cltype11 = type_nit__AAnnotations.color;
4430 idtype12 = type_nit__AAnnotations.id;
4431 if(cltype11 >= var_n->type->table_size) {
4432 var10 = 0;
4433 } else {
4434 var10 = var_n->type->type_table[cltype11] == idtype12;
4435 }
4436 var13 = !var10;
4437 if (var13){
4438 {
4439 ((void (*)(val* self, val* p0))(var_n->class->vft[COLOR_nit__parser_nodes__ANode__visit_all]))(var_n, self) /* visit_all on <var_n:ANode>*/;
4440 }
4441 } else {
4442 }
4443 RET_LABEL:;
4444 }
4445 /* method rapid_type_analysis#RapidTypeVisitor#cleanup_type for (self: RapidTypeVisitor, MType): nullable MClassType */
4446 val* nit___nit__RapidTypeVisitor___cleanup_type(val* self, val* p0) {
4447 val* var /* : nullable MClassType */;
4448 val* var_mtype /* var mtype: MType */;
4449 val* var1 /* : RapidTypeAnalysis */;
4450 val* var3 /* : RapidTypeAnalysis */;
4451 val* var4 /* : MModule */;
4452 val* var6 /* : MModule */;
4453 val* var7 /* : MClassType */;
4454 val* var9 /* : MClassType */;
4455 val* var10 /* : MType */;
4456 short int var11 /* : Bool */;
4457 int cltype;
4458 int idtype;
4459 val* var12 /* : null */;
4460 val* var13 /* : MType */;
4461 short int var14 /* : Bool */;
4462 int cltype15;
4463 int idtype16;
4464 short int var17 /* : Bool */;
4465 short int var18 /* : Bool */;
4466 var_mtype = p0;
4467 {
4468 { /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on <self:RapidTypeVisitor> */
4469 var3 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
4470 if (unlikely(var3 == NULL)) {
4471 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
4472 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
4473 show_backtrace(1);
4474 }
4475 var1 = var3;
4476 RET_LABEL2:(void)0;
4477 }
4478 }
4479 {
4480 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (var1) on <var1:RapidTypeAnalysis> */
4481 var6 = var1->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <var1:RapidTypeAnalysis> */
4482 if (unlikely(var6 == NULL)) {
4483 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
4484 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
4485 show_backtrace(1);
4486 }
4487 var4 = var6;
4488 RET_LABEL5:(void)0;
4489 }
4490 }
4491 {
4492 { /* Inline rapid_type_analysis#RapidTypeVisitor#receiver (self) on <self:RapidTypeVisitor> */
4493 var9 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___receiver].val; /* _receiver on <self:RapidTypeVisitor> */
4494 if (unlikely(var9 == NULL)) {
4495 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _receiver");
4496 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 436);
4497 show_backtrace(1);
4498 }
4499 var7 = var9;
4500 RET_LABEL8:(void)0;
4501 }
4502 }
4503 {
4504 var10 = ((val* (*)(val* self, val* p0, val* p1))(var_mtype->class->vft[COLOR_nit__model__MType__anchor_to]))(var_mtype, var4, var7) /* anchor_to on <var_mtype:MType>*/;
4505 }
4506 var_mtype = var10;
4507 /* <var_mtype:MType> isa MNullType */
4508 cltype = type_nit__MNullType.color;
4509 idtype = type_nit__MNullType.id;
4510 if(cltype >= var_mtype->type->table_size) {
4511 var11 = 0;
4512 } else {
4513 var11 = var_mtype->type->type_table[cltype] == idtype;
4514 }
4515 if (var11){
4516 var12 = NULL;
4517 var = var12;
4518 goto RET_LABEL;
4519 } else {
4520 }
4521 {
4522 var13 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__as_notnullable]))(var_mtype) /* as_notnullable on <var_mtype:MType>*/;
4523 }
4524 var_mtype = var13;
4525 /* <var_mtype:MType> isa MClassType */
4526 cltype15 = type_nit__MClassType.color;
4527 idtype16 = type_nit__MClassType.id;
4528 if(cltype15 >= var_mtype->type->table_size) {
4529 var14 = 0;
4530 } else {
4531 var14 = var_mtype->type->type_table[cltype15] == idtype16;
4532 }
4533 if (unlikely(!var14)) {
4534 PRINT_ERROR("Runtime error: %s", "Assert failed");
4535 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 463);
4536 show_backtrace(1);
4537 }
4538 {
4539 var17 = ((short int (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType(MClassType)>*/;
4540 }
4541 var18 = !var17;
4542 if (unlikely(!var18)) {
4543 PRINT_ERROR("Runtime error: %s", "Assert failed");
4544 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 464);
4545 show_backtrace(1);
4546 }
4547 var = var_mtype;
4548 goto RET_LABEL;
4549 RET_LABEL:;
4550 return var;
4551 }
4552 /* method rapid_type_analysis#RapidTypeVisitor#get_class for (self: RapidTypeVisitor, String): MClass */
4553 val* nit___nit__RapidTypeVisitor___get_class(val* self, val* p0) {
4554 val* var /* : MClass */;
4555 val* var_name /* var name: String */;
4556 val* var1 /* : RapidTypeAnalysis */;
4557 val* var3 /* : RapidTypeAnalysis */;
4558 val* var4 /* : MModule */;
4559 val* var6 /* : MModule */;
4560 val* var7 /* : MClass */;
4561 var_name = p0;
4562 {
4563 { /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on <self:RapidTypeVisitor> */
4564 var3 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
4565 if (unlikely(var3 == NULL)) {
4566 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
4567 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
4568 show_backtrace(1);
4569 }
4570 var1 = var3;
4571 RET_LABEL2:(void)0;
4572 }
4573 }
4574 {
4575 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (var1) on <var1:RapidTypeAnalysis> */
4576 var6 = var1->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <var1:RapidTypeAnalysis> */
4577 if (unlikely(var6 == NULL)) {
4578 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
4579 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
4580 show_backtrace(1);
4581 }
4582 var4 = var6;
4583 RET_LABEL5:(void)0;
4584 }
4585 }
4586 {
4587 var7 = nit__model___MModule___get_primitive_class(var4, var_name);
4588 }
4589 var = var7;
4590 goto RET_LABEL;
4591 RET_LABEL:;
4592 return var;
4593 }
4594 /* method rapid_type_analysis#RapidTypeVisitor#get_method for (self: RapidTypeVisitor, MType, String): MMethod */
4595 val* nit___nit__RapidTypeVisitor___get_method(val* self, val* p0, val* p1) {
4596 val* var /* : MMethod */;
4597 val* var_recv /* var recv: MType */;
4598 val* var_name /* var name: String */;
4599 val* var1 /* : nullable MClassType */;
4600 val* var_mtype /* var mtype: nullable MClassType */;
4601 val* var2 /* : null */;
4602 short int var3 /* : Bool */;
4603 short int var4 /* : Bool */;
4604 val* var_other /* var other: nullable Object */;
4605 short int var6 /* : Bool */;
4606 short int var7 /* : Bool */;
4607 val* var8 /* : RapidTypeAnalysis */;
4608 val* var10 /* : RapidTypeAnalysis */;
4609 val* var11 /* : ModelBuilder */;
4610 val* var13 /* : ModelBuilder */;
4611 val* var14 /* : nullable ANode */;
4612 val* var16 /* : nullable ANode */;
4613 val* var17 /* : MClass */;
4614 val* var19 /* : MClass */;
4615 val* var20 /* : RapidTypeAnalysis */;
4616 val* var22 /* : RapidTypeAnalysis */;
4617 val* var23 /* : MModule */;
4618 val* var25 /* : MModule */;
4619 val* var26 /* : MMethod */;
4620 var_recv = p0;
4621 var_name = p1;
4622 {
4623 var1 = nit___nit__RapidTypeVisitor___cleanup_type(self, var_recv);
4624 }
4625 var_mtype = var1;
4626 var2 = NULL;
4627 if (var_mtype == NULL) {
4628 var3 = 0; /* is null */
4629 } else {
4630 var3 = 1; /* arg is null and recv is not */
4631 }
4632 if (0) {
4633 { /* Inline kernel#Object#!= (var_mtype,var2) on <var_mtype:nullable MClassType> */
4634 var_other = var2;
4635 {
4636 var6 = ((short int (*)(val* self, val* p0))(var_mtype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mtype, var_other) /* == on <var_mtype:nullable MClassType(MClassType)>*/;
4637 }
4638 var7 = !var6;
4639 var4 = var7;
4640 goto RET_LABEL5;
4641 RET_LABEL5:(void)0;
4642 }
4643 var3 = var4;
4644 }
4645 if (unlikely(!var3)) {
4646 PRINT_ERROR("Runtime error: %s", "Assert failed");
4647 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 476);
4648 show_backtrace(1);
4649 }
4650 {
4651 { /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on <self:RapidTypeVisitor> */
4652 var10 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
4653 if (unlikely(var10 == NULL)) {
4654 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
4655 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
4656 show_backtrace(1);
4657 }
4658 var8 = var10;
4659 RET_LABEL9:(void)0;
4660 }
4661 }
4662 {
4663 { /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (var8) on <var8:RapidTypeAnalysis> */
4664 var13 = var8->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on <var8:RapidTypeAnalysis> */
4665 if (unlikely(var13 == NULL)) {
4666 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
4667 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 46);
4668 show_backtrace(1);
4669 }
4670 var11 = var13;
4671 RET_LABEL12:(void)0;
4672 }
4673 }
4674 {
4675 { /* Inline parser_nodes#Visitor#current_node (self) on <self:RapidTypeVisitor> */
4676 var16 = self->attrs[COLOR_nit__parser_nodes__Visitor___current_node].val; /* _current_node on <self:RapidTypeVisitor> */
4677 var14 = var16;
4678 RET_LABEL15:(void)0;
4679 }
4680 }
4681 if (unlikely(var14 == NULL)) {
4682 PRINT_ERROR("Runtime error: %s", "Cast failed");
4683 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 477);
4684 show_backtrace(1);
4685 }
4686 {
4687 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:nullable MClassType(MClassType)> */
4688 var19 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:nullable MClassType(MClassType)> */
4689 if (unlikely(var19 == NULL)) {
4690 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4691 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
4692 show_backtrace(1);
4693 }
4694 var17 = var19;
4695 RET_LABEL18:(void)0;
4696 }
4697 }
4698 {
4699 { /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on <self:RapidTypeVisitor> */
4700 var22 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
4701 if (unlikely(var22 == NULL)) {
4702 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
4703 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
4704 show_backtrace(1);
4705 }
4706 var20 = var22;
4707 RET_LABEL21:(void)0;
4708 }
4709 }
4710 {
4711 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (var20) on <var20:RapidTypeAnalysis> */
4712 var25 = var20->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <var20:RapidTypeAnalysis> */
4713 if (unlikely(var25 == NULL)) {
4714 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
4715 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
4716 show_backtrace(1);
4717 }
4718 var23 = var25;
4719 RET_LABEL24:(void)0;
4720 }
4721 }
4722 {
4723 var26 = nit___nit__ModelBuilder___force_get_primitive_method(var11, var14, var_name, var17, var23);
4724 }
4725 var = var26;
4726 goto RET_LABEL;
4727 RET_LABEL:;
4728 return var;
4729 }
4730 /* method rapid_type_analysis#RapidTypeVisitor#add_type for (self: RapidTypeVisitor, MClassType) */
4731 void nit___nit__RapidTypeVisitor___add_type(val* self, val* p0) {
4732 val* var_mtype /* var mtype: MClassType */;
4733 val* var /* : RapidTypeAnalysis */;
4734 val* var2 /* : RapidTypeAnalysis */;
4735 val* var3 /* : MClassType */;
4736 val* var5 /* : MClassType */;
4737 var_mtype = p0;
4738 {
4739 { /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on <self:RapidTypeVisitor> */
4740 var2 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
4741 if (unlikely(var2 == NULL)) {
4742 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
4743 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
4744 show_backtrace(1);
4745 }
4746 var = var2;
4747 RET_LABEL1:(void)0;
4748 }
4749 }
4750 {
4751 { /* Inline rapid_type_analysis#RapidTypeVisitor#receiver (self) on <self:RapidTypeVisitor> */
4752 var5 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___receiver].val; /* _receiver on <self:RapidTypeVisitor> */
4753 if (unlikely(var5 == NULL)) {
4754 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _receiver");
4755 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 436);
4756 show_backtrace(1);
4757 }
4758 var3 = var5;
4759 RET_LABEL4:(void)0;
4760 }
4761 }
4762 {
4763 nit___nit__RapidTypeAnalysis___add_new(var, var3, var_mtype); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_new on <var:RapidTypeAnalysis>*/
4764 }
4765 RET_LABEL:;
4766 }
4767 /* method rapid_type_analysis#RapidTypeVisitor#add_monomorphic_send for (self: RapidTypeVisitor, MType, MMethod) */
4768 void nit___nit__RapidTypeVisitor___add_monomorphic_send(val* self, val* p0, val* p1) {
4769 val* var_mtype /* var mtype: MType */;
4770 val* var_mproperty /* var mproperty: MMethod */;
4771 val* var /* : RapidTypeAnalysis */;
4772 val* var2 /* : RapidTypeAnalysis */;
4773 val* var3 /* : HashSet[MMethod] */;
4774 val* var5 /* : HashSet[MMethod] */;
4775 val* var6 /* : RapidTypeAnalysis */;
4776 val* var8 /* : RapidTypeAnalysis */;
4777 short int var9 /* : Bool */;
4778 int cltype;
4779 int idtype;
4780 const char* var_class_name;
4781 var_mtype = p0;
4782 var_mproperty = p1;
4783 {
4784 { /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on <self:RapidTypeVisitor> */
4785 var2 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
4786 if (unlikely(var2 == NULL)) {
4787 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
4788 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
4789 show_backtrace(1);
4790 }
4791 var = var2;
4792 RET_LABEL1:(void)0;
4793 }
4794 }
4795 {
4796 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_methods (var) on <var:RapidTypeAnalysis> */
4797 var5 = var->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_methods].val; /* _live_methods on <var:RapidTypeAnalysis> */
4798 if (unlikely(var5 == NULL)) {
4799 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methods");
4800 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 75);
4801 show_backtrace(1);
4802 }
4803 var3 = var5;
4804 RET_LABEL4:(void)0;
4805 }
4806 }
4807 {
4808 standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var3, var_mproperty); /* Direct call hash_collection#HashSet#add on <var3:HashSet[MMethod]>*/
4809 }
4810 {
4811 { /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on <self:RapidTypeVisitor> */
4812 var8 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
4813 if (unlikely(var8 == NULL)) {
4814 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
4815 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
4816 show_backtrace(1);
4817 }
4818 var6 = var8;
4819 RET_LABEL7:(void)0;
4820 }
4821 }
4822 /* <var_mtype:MType> isa MClassType */
4823 cltype = type_nit__MClassType.color;
4824 idtype = type_nit__MClassType.id;
4825 if(cltype >= var_mtype->type->table_size) {
4826 var9 = 0;
4827 } else {
4828 var9 = var_mtype->type->type_table[cltype] == idtype;
4829 }
4830 if (unlikely(!var9)) {
4831 var_class_name = var_mtype == NULL ? "null" : var_mtype->type->name;
4832 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
4833 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 485);
4834 show_backtrace(1);
4835 }
4836 {
4837 nit___nit__RapidTypeAnalysis___try_send(var6, var_mtype, var_mproperty); /* Direct call rapid_type_analysis#RapidTypeAnalysis#try_send on <var6:RapidTypeAnalysis>*/
4838 }
4839 RET_LABEL:;
4840 }
4841 /* method rapid_type_analysis#RapidTypeVisitor#add_cast_type for (self: RapidTypeVisitor, MType) */
4842 void nit___nit__RapidTypeVisitor___add_cast_type(val* self, val* p0) {
4843 val* var_mtype /* var mtype: MType */;
4844 val* var /* : RapidTypeAnalysis */;
4845 val* var2 /* : RapidTypeAnalysis */;
4846 var_mtype = p0;
4847 {
4848 { /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on <self:RapidTypeVisitor> */
4849 var2 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
4850 if (unlikely(var2 == NULL)) {
4851 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
4852 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
4853 show_backtrace(1);
4854 }
4855 var = var2;
4856 RET_LABEL1:(void)0;
4857 }
4858 }
4859 {
4860 nit___nit__RapidTypeAnalysis___add_cast(var, var_mtype); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_cast on <var:RapidTypeAnalysis>*/
4861 }
4862 RET_LABEL:;
4863 }
4864 /* method rapid_type_analysis#RapidTypeVisitor#add_callsite for (self: RapidTypeVisitor, nullable CallSite) */
4865 void nit___nit__RapidTypeVisitor___add_callsite(val* self, val* p0) {
4866 val* var_callsite /* var callsite: nullable CallSite */;
4867 val* var /* : null */;
4868 short int var1 /* : Bool */;
4869 short int var2 /* : Bool */;
4870 val* var_other /* var other: nullable Object */;
4871 short int var4 /* : Bool */;
4872 short int var5 /* : Bool */;
4873 val* var6 /* : MMethodDef */;
4874 val* var8 /* : MMethodDef */;
4875 val* var9 /* : Array[MProperty] */;
4876 val* var11 /* : Array[MProperty] */;
4877 val* var_ /* var : Array[MProperty] */;
4878 val* var12 /* : ArrayIterator[nullable Object] */;
4879 val* var_13 /* var : ArrayIterator[MProperty] */;
4880 short int var14 /* : Bool */;
4881 val* var15 /* : nullable Object */;
4882 val* var_m /* var m: MProperty */;
4883 short int var16 /* : Bool */;
4884 int cltype;
4885 int idtype;
4886 val* var17 /* : RapidTypeAnalysis */;
4887 val* var19 /* : RapidTypeAnalysis */;
4888 val* var20 /* : MType */;
4889 val* var22 /* : MType */;
4890 val* var24 /* : RapidTypeAnalysis */;
4891 val* var26 /* : RapidTypeAnalysis */;
4892 val* var27 /* : MType */;
4893 val* var29 /* : MType */;
4894 val* var30 /* : MMethod */;
4895 val* var32 /* : MMethod */;
4896 val* var33 /* : RapidTypeAnalysis */;
4897 val* var35 /* : RapidTypeAnalysis */;
4898 val* var36 /* : HashSet[CallSite] */;
4899 val* var38 /* : HashSet[CallSite] */;
4900 var_callsite = p0;
4901 var = NULL;
4902 if (var_callsite == NULL) {
4903 var1 = 0; /* is null */
4904 } else {
4905 var1 = 1; /* arg is null and recv is not */
4906 }
4907 if (0) {
4908 { /* Inline kernel#Object#!= (var_callsite,var) on <var_callsite:nullable CallSite> */
4909 var_other = var;
4910 {
4911 var4 = ((short int (*)(val* self, val* p0))(var_callsite->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_callsite, var_other) /* == on <var_callsite:nullable CallSite(CallSite)>*/;
4912 }
4913 var5 = !var4;
4914 var2 = var5;
4915 goto RET_LABEL3;
4916 RET_LABEL3:(void)0;
4917 }
4918 var1 = var2;
4919 }
4920 if (var1){
4921 {
4922 { /* Inline typing#CallSite#mpropdef (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
4923 var8 = var_callsite->attrs[COLOR_nit__typing__CallSite___mpropdef].val; /* _mpropdef on <var_callsite:nullable CallSite(CallSite)> */
4924 if (unlikely(var8 == NULL)) {
4925 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
4926 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 490);
4927 show_backtrace(1);
4928 }
4929 var6 = var8;
4930 RET_LABEL7:(void)0;
4931 }
4932 }
4933 {
4934 { /* Inline model#MMethodDef#initializers (var6) on <var6:MMethodDef> */
4935 var11 = var6->attrs[COLOR_nit__model__MMethodDef___initializers].val; /* _initializers on <var6:MMethodDef> */
4936 if (unlikely(var11 == NULL)) {
4937 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
4938 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2146);
4939 show_backtrace(1);
4940 }
4941 var9 = var11;
4942 RET_LABEL10:(void)0;
4943 }
4944 }
4945 var_ = var9;
4946 {
4947 var12 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
4948 }
4949 var_13 = var12;
4950 for(;;) {
4951 {
4952 var14 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_13);
4953 }
4954 if (var14){
4955 {
4956 var15 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_13);
4957 }
4958 var_m = var15;
4959 /* <var_m:MProperty> isa MMethod */
4960 cltype = type_nit__MMethod.color;
4961 idtype = type_nit__MMethod.id;
4962 if(cltype >= var_m->type->table_size) {
4963 var16 = 0;
4964 } else {
4965 var16 = var_m->type->type_table[cltype] == idtype;
4966 }
4967 if (var16){
4968 {
4969 { /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on <self:RapidTypeVisitor> */
4970 var19 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
4971 if (unlikely(var19 == NULL)) {
4972 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
4973 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
4974 show_backtrace(1);
4975 }
4976 var17 = var19;
4977 RET_LABEL18:(void)0;
4978 }
4979 }
4980 {
4981 { /* Inline typing#CallSite#recv (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
4982 var22 = var_callsite->attrs[COLOR_nit__typing__CallSite___recv].val; /* _recv on <var_callsite:nullable CallSite(CallSite)> */
4983 if (unlikely(var22 == NULL)) {
4984 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _recv");
4985 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 473);
4986 show_backtrace(1);
4987 }
4988 var20 = var22;
4989 RET_LABEL21:(void)0;
4990 }
4991 }
4992 {
4993 nit___nit__RapidTypeAnalysis___add_send(var17, var20, var_m); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_send on <var17:RapidTypeAnalysis>*/
4994 }
4995 } else {
4996 }
4997 {
4998 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_13); /* Direct call array#ArrayIterator#next on <var_13:ArrayIterator[MProperty]>*/
4999 }
5000 } else {
5001 goto BREAK_label;
5002 }
5003 }
5004 BREAK_label: (void)0;
5005 {
5006 { /* Inline abstract_collection#Iterator#finish (var_13) on <var_13:ArrayIterator[MProperty]> */
5007 RET_LABEL23:(void)0;
5008 }
5009 }
5010 {
5011 { /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on <self:RapidTypeVisitor> */
5012 var26 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
5013 if (unlikely(var26 == NULL)) {
5014 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
5015 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
5016 show_backtrace(1);
5017 }
5018 var24 = var26;
5019 RET_LABEL25:(void)0;
5020 }
5021 }
5022 {
5023 { /* Inline typing#CallSite#recv (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
5024 var29 = var_callsite->attrs[COLOR_nit__typing__CallSite___recv].val; /* _recv on <var_callsite:nullable CallSite(CallSite)> */
5025 if (unlikely(var29 == NULL)) {
5026 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _recv");
5027 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 473);
5028 show_backtrace(1);
5029 }
5030 var27 = var29;
5031 RET_LABEL28:(void)0;
5032 }
5033 }
5034 {
5035 { /* Inline typing#CallSite#mproperty (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
5036 var32 = var_callsite->attrs[COLOR_nit__typing__CallSite___mproperty].val; /* _mproperty on <var_callsite:nullable CallSite(CallSite)> */
5037 if (unlikely(var32 == NULL)) {
5038 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
5039 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 487);
5040 show_backtrace(1);
5041 }
5042 var30 = var32;
5043 RET_LABEL31:(void)0;
5044 }
5045 }
5046 {
5047 nit___nit__RapidTypeAnalysis___add_send(var24, var27, var30); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_send on <var24:RapidTypeAnalysis>*/
5048 }
5049 {
5050 { /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on <self:RapidTypeVisitor> */
5051 var35 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
5052 if (unlikely(var35 == NULL)) {
5053 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
5054 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
5055 show_backtrace(1);
5056 }
5057 var33 = var35;
5058 RET_LABEL34:(void)0;
5059 }
5060 }
5061 {
5062 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_callsites (var33) on <var33:RapidTypeAnalysis> */
5063 var38 = var33->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_callsites].val; /* _live_callsites on <var33:RapidTypeAnalysis> */
5064 if (unlikely(var38 == NULL)) {
5065 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_callsites");
5066 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 78);
5067 show_backtrace(1);
5068 }
5069 var36 = var38;
5070 RET_LABEL37:(void)0;
5071 }
5072 }
5073 {
5074 standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var36, var_callsite); /* Direct call hash_collection#HashSet#add on <var36:HashSet[CallSite]>*/
5075 }
5076 } else {
5077 }
5078 RET_LABEL:;
5079 }
5080 /* method rapid_type_analysis#ANode#accept_rapid_type_visitor for (self: ANode, RapidTypeVisitor) */
5081 void nit__rapid_type_analysis___ANode___accept_rapid_type_visitor(val* self, val* p0) {
5082 val* var_v /* var v: RapidTypeVisitor */;
5083 var_v = p0;
5084 RET_LABEL:;
5085 }
5086 /* method rapid_type_analysis#AIntExpr#accept_rapid_type_visitor for (self: AIntExpr, RapidTypeVisitor) */
5087 void nit__rapid_type_analysis___AIntExpr___ANode__accept_rapid_type_visitor(val* self, val* p0) {
5088 val* var_v /* var v: RapidTypeVisitor */;
5089 val* var /* : nullable MType */;
5090 val* var2 /* : nullable MType */;
5091 short int var3 /* : Bool */;
5092 int cltype;
5093 int idtype;
5094 const char* var_class_name;
5095 var_v = p0;
5096 {
5097 { /* Inline typing#AExpr#mtype (self) on <self:AIntExpr> */
5098 var2 = self->attrs[COLOR_nit__typing__AExpr___mtype].val; /* _mtype on <self:AIntExpr> */
5099 var = var2;
5100 RET_LABEL1:(void)0;
5101 }
5102 }
5103 /* <var:nullable MType> isa MClassType */
5104 cltype = type_nit__MClassType.color;
5105 idtype = type_nit__MClassType.id;
5106 if(var == NULL) {
5107 var3 = 0;
5108 } else {
5109 if(cltype >= var->type->table_size) {
5110 var3 = 0;
5111 } else {
5112 var3 = var->type->type_table[cltype] == idtype;
5113 }
5114 }
5115 if (unlikely(!var3)) {
5116 var_class_name = var == NULL ? "null" : var->type->name;
5117 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
5118 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 514);
5119 show_backtrace(1);
5120 }
5121 {
5122 nit___nit__RapidTypeVisitor___add_type(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
5123 }
5124 RET_LABEL:;
5125 }
5126 /* method rapid_type_analysis#AFloatExpr#accept_rapid_type_visitor for (self: AFloatExpr, RapidTypeVisitor) */
5127 void nit__rapid_type_analysis___AFloatExpr___ANode__accept_rapid_type_visitor(val* self, val* p0) {
5128 val* var_v /* var v: RapidTypeVisitor */;
5129 val* var /* : nullable MType */;
5130 val* var2 /* : nullable MType */;
5131 short int var3 /* : Bool */;
5132 int cltype;
5133 int idtype;
5134 const char* var_class_name;
5135 var_v = p0;
5136 {
5137 { /* Inline typing#AExpr#mtype (self) on <self:AFloatExpr> */
5138 var2 = self->attrs[COLOR_nit__typing__AExpr___mtype].val; /* _mtype on <self:AFloatExpr> */
5139 var = var2;
5140 RET_LABEL1:(void)0;
5141 }
5142 }
5143 /* <var:nullable MType> isa MClassType */
5144 cltype = type_nit__MClassType.color;
5145 idtype = type_nit__MClassType.id;
5146 if(var == NULL) {
5147 var3 = 0;
5148 } else {
5149 if(cltype >= var->type->table_size) {
5150 var3 = 0;
5151 } else {
5152 var3 = var->type->type_table[cltype] == idtype;
5153 }
5154 }
5155 if (unlikely(!var3)) {
5156 var_class_name = var == NULL ? "null" : var->type->name;
5157 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
5158 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 521);
5159 show_backtrace(1);
5160 }
5161 {
5162 nit___nit__RapidTypeVisitor___add_type(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
5163 }
5164 RET_LABEL:;
5165 }
5166 /* method rapid_type_analysis#ACharExpr#accept_rapid_type_visitor for (self: ACharExpr, RapidTypeVisitor) */
5167 void nit__rapid_type_analysis___ACharExpr___ANode__accept_rapid_type_visitor(val* self, val* p0) {
5168 val* var_v /* var v: RapidTypeVisitor */;
5169 val* var /* : nullable MType */;
5170 val* var2 /* : nullable MType */;
5171 short int var3 /* : Bool */;
5172 int cltype;
5173 int idtype;
5174 const char* var_class_name;
5175 var_v = p0;
5176 {
5177 { /* Inline typing#AExpr#mtype (self) on <self:ACharExpr> */
5178 var2 = self->attrs[COLOR_nit__typing__AExpr___mtype].val; /* _mtype on <self:ACharExpr> */
5179 var = var2;
5180 RET_LABEL1:(void)0;
5181 }
5182 }
5183 /* <var:nullable MType> isa MClassType */
5184 cltype = type_nit__MClassType.color;
5185 idtype = type_nit__MClassType.id;
5186 if(var == NULL) {
5187 var3 = 0;
5188 } else {
5189 if(cltype >= var->type->table_size) {
5190 var3 = 0;
5191 } else {
5192 var3 = var->type->type_table[cltype] == idtype;
5193 }
5194 }
5195 if (unlikely(!var3)) {
5196 var_class_name = var == NULL ? "null" : var->type->name;
5197 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
5198 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 528);
5199 show_backtrace(1);
5200 }
5201 {
5202 nit___nit__RapidTypeVisitor___add_type(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
5203 }
5204 RET_LABEL:;
5205 }
5206 /* method rapid_type_analysis#AArrayExpr#accept_rapid_type_visitor for (self: AArrayExpr, RapidTypeVisitor) */
5207 void nit__rapid_type_analysis___AArrayExpr___ANode__accept_rapid_type_visitor(val* self, val* p0) {
5208 val* var_v /* var v: RapidTypeVisitor */;
5209 val* var /* : nullable MType */;
5210 val* var2 /* : nullable MType */;
5211 short int var3 /* : Bool */;
5212 int cltype;
5213 int idtype;
5214 const char* var_class_name;
5215 val* var_mtype /* var mtype: MClassType */;
5216 val* var4 /* : RapidTypeAnalysis */;
5217 val* var6 /* : RapidTypeAnalysis */;
5218 val* var7 /* : MModule */;
5219 val* var9 /* : MModule */;
5220 static val* varonce;
5221 val* var10 /* : String */;
5222 char* var11 /* : NativeString */;
5223 long var12 /* : Int */;
5224 val* var13 /* : FlatString */;
5225 val* var14 /* : MClass */;
5226 val* var15 /* : Array[MType] */;
5227 long var16 /* : Int */;
5228 val* var_ /* var : Array[MType] */;
5229 val* var17 /* : Array[MType] */;
5230 val* var18 /* : nullable Object */;
5231 val* var19 /* : MClassType */;
5232 val* var_native /* var native: MClassType */;
5233 val* var20 /* : nullable MClassType */;
5234 static val* varonce21;
5235 val* var22 /* : String */;
5236 char* var23 /* : NativeString */;
5237 long var24 /* : Int */;
5238 val* var25 /* : FlatString */;
5239 val* var26 /* : MMethod */;
5240 val* var_prop /* var prop: MMethod */;
5241 var_v = p0;
5242 {
5243 { /* Inline typing#AExpr#mtype (self) on <self:AArrayExpr> */
5244 var2 = self->attrs[COLOR_nit__typing__AExpr___mtype].val; /* _mtype on <self:AArrayExpr> */
5245 var = var2;
5246 RET_LABEL1:(void)0;
5247 }
5248 }
5249 /* <var:nullable MType> isa MClassType */
5250 cltype = type_nit__MClassType.color;
5251 idtype = type_nit__MClassType.id;
5252 if(var == NULL) {
5253 var3 = 0;
5254 } else {
5255 if(cltype >= var->type->table_size) {
5256 var3 = 0;
5257 } else {
5258 var3 = var->type->type_table[cltype] == idtype;
5259 }
5260 }
5261 if (unlikely(!var3)) {
5262 var_class_name = var == NULL ? "null" : var->type->name;
5263 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
5264 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 535);
5265 show_backtrace(1);
5266 }
5267 var_mtype = var;
5268 {
5269 nit___nit__RapidTypeVisitor___add_type(var_v, var_mtype); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
5270 }
5271 {
5272 { /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (var_v) on <var_v:RapidTypeVisitor> */
5273 var6 = var_v->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <var_v:RapidTypeVisitor> */
5274 if (unlikely(var6 == NULL)) {
5275 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
5276 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
5277 show_backtrace(1);
5278 }
5279 var4 = var6;
5280 RET_LABEL5:(void)0;
5281 }
5282 }
5283 {
5284 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (var4) on <var4:RapidTypeAnalysis> */
5285 var9 = var4->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <var4:RapidTypeAnalysis> */
5286 if (unlikely(var9 == NULL)) {
5287 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
5288 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
5289 show_backtrace(1);
5290 }
5291 var7 = var9;
5292 RET_LABEL8:(void)0;
5293 }
5294 }
5295 if (varonce) {
5296 var10 = varonce;
5297 } else {
5298 var11 = "NativeArray";
5299 var12 = 11;
5300 var13 = standard___standard__NativeString___to_s_with_length(var11, var12);
5301 var10 = var13;
5302 varonce = var10;
5303 }
5304 {
5305 var14 = nit__model___MModule___get_primitive_class(var7, var10);
5306 }
5307 var15 = NEW_standard__Array(&type_standard__Array__nit__MType);
5308 var16 = 1;
5309 {
5310 standard___standard__Array___with_capacity(var15, var16); /* Direct call array#Array#with_capacity on <var15:Array[MType]>*/
5311 }
5312 var_ = var15;
5313 {
5314 var17 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MClassType__arguments]))(var_mtype) /* arguments on <var_mtype:MClassType>*/;
5315 }
5316 {
5317 var18 = standard___standard__SequenceRead___Collection__first(var17);
5318 }
5319 {
5320 standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_, var18); /* Direct call array#AbstractArray#push on <var_:Array[MType]>*/
5321 }
5322 {
5323 var19 = nit___nit__MClass___get_mtype(var14, var_);
5324 }
5325 var_native = var19;
5326 {
5327 nit___nit__RapidTypeVisitor___add_type(var_v, var_native); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
5328 }
5329 {
5330 var20 = nit___nit__RapidTypeVisitor___cleanup_type(var_v, var_mtype);
5331 }
5332 if (unlikely(var20 == NULL)) {
5333 PRINT_ERROR("Runtime error: %s", "Cast failed");
5334 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 539);
5335 show_backtrace(1);
5336 }
5337 var_mtype = var20;
5338 if (varonce21) {
5339 var22 = varonce21;
5340 } else {
5341 var23 = "with_native";
5342 var24 = 11;
5343 var25 = standard___standard__NativeString___to_s_with_length(var23, var24);
5344 var22 = var25;
5345 varonce21 = var22;
5346 }
5347 {
5348 var26 = nit___nit__RapidTypeVisitor___get_method(var_v, var_mtype, var22);
5349 }
5350 var_prop = var26;
5351 {
5352 nit___nit__RapidTypeVisitor___add_monomorphic_send(var_v, var_mtype, var_prop); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_monomorphic_send on <var_v:RapidTypeVisitor>*/
5353 }
5354 RET_LABEL:;
5355 }
5356 /* method rapid_type_analysis#AStringFormExpr#accept_rapid_type_visitor for (self: AStringFormExpr, RapidTypeVisitor) */
5357 void nit__rapid_type_analysis___AStringFormExpr___ANode__accept_rapid_type_visitor(val* self, val* p0) {
5358 val* var_v /* var v: RapidTypeVisitor */;
5359 static val* varonce;
5360 val* var /* : String */;
5361 char* var1 /* : NativeString */;
5362 long var2 /* : Int */;
5363 val* var3 /* : FlatString */;
5364 val* var4 /* : MClass */;
5365 val* var5 /* : MClassType */;
5366 val* var7 /* : MClassType */;
5367 val* var_native /* var native: MClassType */;
5368 static val* varonce8;
5369 val* var9 /* : String */;
5370 char* var10 /* : NativeString */;
5371 long var11 /* : Int */;
5372 val* var12 /* : FlatString */;
5373 val* var13 /* : MMethod */;
5374 val* var_prop /* var prop: MMethod */;
5375 var_v = p0;
5376 if (varonce) {
5377 var = varonce;
5378 } else {
5379 var1 = "NativeString";
5380 var2 = 12;
5381 var3 = standard___standard__NativeString___to_s_with_length(var1, var2);
5382 var = var3;
5383 varonce = var;
5384 }
5385 {
5386 var4 = nit___nit__RapidTypeVisitor___get_class(var_v, var);
5387 }
5388 {
5389 { /* Inline model#MClass#mclass_type (var4) on <var4:MClass> */
5390 var7 = var4->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var4:MClass> */
5391 if (unlikely(var7 == NULL)) {
5392 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
5393 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438);
5394 show_backtrace(1);
5395 }
5396 var5 = var7;
5397 RET_LABEL6:(void)0;
5398 }
5399 }
5400 var_native = var5;
5401 {
5402 nit___nit__RapidTypeVisitor___add_type(var_v, var_native); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
5403 }
5404 if (varonce8) {
5405 var9 = varonce8;
5406 } else {
5407 var10 = "to_s_with_length";
5408 var11 = 16;
5409 var12 = standard___standard__NativeString___to_s_with_length(var10, var11);
5410 var9 = var12;
5411 varonce8 = var9;
5412 }
5413 {
5414 var13 = nit___nit__RapidTypeVisitor___get_method(var_v, var_native, var9);
5415 }
5416 var_prop = var13;
5417 {
5418 nit___nit__RapidTypeVisitor___add_monomorphic_send(var_v, var_native, var_prop); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_monomorphic_send on <var_v:RapidTypeVisitor>*/
5419 }
5420 RET_LABEL:;
5421 }
5422 /* method rapid_type_analysis#ASuperstringExpr#accept_rapid_type_visitor for (self: ASuperstringExpr, RapidTypeVisitor) */
5423 void nit__rapid_type_analysis___ASuperstringExpr___ANode__accept_rapid_type_visitor(val* self, val* p0) {
5424 val* var_v /* var v: RapidTypeVisitor */;
5425 static val* varonce;
5426 val* var /* : String */;
5427 char* var1 /* : NativeString */;
5428 long var2 /* : Int */;
5429 val* var3 /* : FlatString */;
5430 val* var4 /* : MClass */;
5431 val* var5 /* : Array[MClassType] */;
5432 long var6 /* : Int */;
5433 val* var_ /* var : Array[MClassType] */;
5434 static val* varonce7;
5435 val* var8 /* : String */;
5436 char* var9 /* : NativeString */;
5437 long var10 /* : Int */;
5438 val* var11 /* : FlatString */;
5439 val* var12 /* : MClass */;
5440 val* var13 /* : MClassType */;
5441 val* var15 /* : MClassType */;
5442 val* var16 /* : MClassType */;
5443 val* var_arraytype /* var arraytype: MClassType */;
5444 static val* varonce17;
5445 val* var18 /* : String */;
5446 char* var19 /* : NativeString */;
5447 long var20 /* : Int */;
5448 val* var21 /* : FlatString */;
5449 val* var22 /* : MClass */;
5450 val* var23 /* : Array[MClassType] */;
5451 long var24 /* : Int */;
5452 val* var_25 /* var : Array[MClassType] */;
5453 static val* varonce26;
5454 val* var27 /* : String */;
5455 char* var28 /* : NativeString */;
5456 long var29 /* : Int */;
5457 val* var30 /* : FlatString */;
5458 val* var31 /* : MClass */;
5459 val* var32 /* : MClassType */;
5460 val* var34 /* : MClassType */;
5461 val* var35 /* : MClassType */;
5462 static val* varonce36;
5463 val* var37 /* : String */;
5464 char* var38 /* : NativeString */;
5465 long var39 /* : Int */;
5466 val* var40 /* : FlatString */;
5467 val* var41 /* : MMethod */;
5468 val* var_prop /* var prop: MMethod */;
5469 static val* varonce42;
5470 val* var43 /* : String */;
5471 char* var44 /* : NativeString */;
5472 long var45 /* : Int */;
5473 val* var46 /* : FlatString */;
5474 val* var47 /* : MMethod */;
5475 val* var_prop2 /* var prop2: MMethod */;
5476 var_v = p0;
5477 if (varonce) {
5478 var = varonce;
5479 } else {
5480 var1 = "Array";
5481 var2 = 5;
5482 var3 = standard___standard__NativeString___to_s_with_length(var1, var2);
5483 var = var3;
5484 varonce = var;
5485 }
5486 {
5487 var4 = nit___nit__RapidTypeVisitor___get_class(var_v, var);
5488 }
5489 var5 = NEW_standard__Array(&type_standard__Array__nit__MClassType);
5490 var6 = 1;
5491 {
5492 standard___standard__Array___with_capacity(var5, var6); /* Direct call array#Array#with_capacity on <var5:Array[MClassType]>*/
5493 }
5494 var_ = var5;
5495 if (varonce7) {
5496 var8 = varonce7;
5497 } else {
5498 var9 = "Object";
5499 var10 = 6;
5500 var11 = standard___standard__NativeString___to_s_with_length(var9, var10);
5501 var8 = var11;
5502 varonce7 = var8;
5503 }
5504 {
5505 var12 = nit___nit__RapidTypeVisitor___get_class(var_v, var8);
5506 }
5507 {
5508 { /* Inline model#MClass#mclass_type (var12) on <var12:MClass> */
5509 var15 = var12->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var12:MClass> */
5510 if (unlikely(var15 == NULL)) {
5511 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
5512 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438);
5513 show_backtrace(1);
5514 }
5515 var13 = var15;
5516 RET_LABEL14:(void)0;
5517 }
5518 }
5519 {
5520 standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_, var13); /* Direct call array#AbstractArray#push on <var_:Array[MClassType]>*/
5521 }
5522 {
5523 var16 = nit___nit__MClass___get_mtype(var4, var_);
5524 }
5525 var_arraytype = var16;
5526 {
5527 nit___nit__RapidTypeVisitor___add_type(var_v, var_arraytype); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
5528 }
5529 if (varonce17) {
5530 var18 = varonce17;
5531 } else {
5532 var19 = "NativeArray";
5533 var20 = 11;
5534 var21 = standard___standard__NativeString___to_s_with_length(var19, var20);
5535 var18 = var21;
5536 varonce17 = var18;
5537 }
5538 {
5539 var22 = nit___nit__RapidTypeVisitor___get_class(var_v, var18);
5540 }
5541 var23 = NEW_standard__Array(&type_standard__Array__nit__MClassType);
5542 var24 = 1;
5543 {
5544 standard___standard__Array___with_capacity(var23, var24); /* Direct call array#Array#with_capacity on <var23:Array[MClassType]>*/
5545 }
5546 var_25 = var23;
5547 if (varonce26) {
5548 var27 = varonce26;
5549 } else {
5550 var28 = "Object";
5551 var29 = 6;
5552 var30 = standard___standard__NativeString___to_s_with_length(var28, var29);
5553 var27 = var30;
5554 varonce26 = var27;
5555 }
5556 {
5557 var31 = nit___nit__RapidTypeVisitor___get_class(var_v, var27);
5558 }
5559 {
5560 { /* Inline model#MClass#mclass_type (var31) on <var31:MClass> */
5561 var34 = var31->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var31:MClass> */
5562 if (unlikely(var34 == NULL)) {
5563 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
5564 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438);
5565 show_backtrace(1);
5566 }
5567 var32 = var34;
5568 RET_LABEL33:(void)0;
5569 }
5570 }
5571 {
5572 standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_25, var32); /* Direct call array#AbstractArray#push on <var_25:Array[MClassType]>*/
5573 }
5574 {
5575 var35 = nit___nit__MClass___get_mtype(var22, var_25);
5576 }
5577 {
5578 nit___nit__RapidTypeVisitor___add_type(var_v, var35); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
5579 }
5580 if (varonce36) {
5581 var37 = varonce36;
5582 } else {
5583 var38 = "join";
5584 var39 = 4;
5585 var40 = standard___standard__NativeString___to_s_with_length(var38, var39);
5586 var37 = var40;
5587 varonce36 = var37;
5588 }
5589 {
5590 var41 = nit___nit__RapidTypeVisitor___get_method(var_v, var_arraytype, var37);
5591 }
5592 var_prop = var41;
5593 {
5594 nit___nit__RapidTypeVisitor___add_monomorphic_send(var_v, var_arraytype, var_prop); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_monomorphic_send on <var_v:RapidTypeVisitor>*/
5595 }
5596 if (varonce42) {
5597 var43 = varonce42;
5598 } else {
5599 var44 = "with_native";
5600 var45 = 11;
5601 var46 = standard___standard__NativeString___to_s_with_length(var44, var45);
5602 var43 = var46;
5603 varonce42 = var43;
5604 }
5605 {
5606 var47 = nit___nit__RapidTypeVisitor___get_method(var_v, var_arraytype, var43);
5607 }
5608 var_prop2 = var47;
5609 {
5610 nit___nit__RapidTypeVisitor___add_monomorphic_send(var_v, var_arraytype, var_prop2); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_monomorphic_send on <var_v:RapidTypeVisitor>*/
5611 }
5612 RET_LABEL:;
5613 }
5614 /* method rapid_type_analysis#ACrangeExpr#accept_rapid_type_visitor for (self: ACrangeExpr, RapidTypeVisitor) */
5615 void nit__rapid_type_analysis___ACrangeExpr___ANode__accept_rapid_type_visitor(val* self, val* p0) {
5616 val* var_v /* var v: RapidTypeVisitor */;
5617 val* var /* : nullable MType */;
5618 val* var2 /* : nullable MType */;
5619 short int var3 /* : Bool */;
5620 int cltype;
5621 int idtype;
5622 const char* var_class_name;
5623 val* var_mtype /* var mtype: MClassType */;
5624 val* var4 /* : nullable CallSite */;
5625 val* var6 /* : nullable CallSite */;
5626 var_v = p0;
5627 {
5628 { /* Inline typing#AExpr#mtype (self) on <self:ACrangeExpr> */
5629 var2 = self->attrs[COLOR_nit__typing__AExpr___mtype].val; /* _mtype on <self:ACrangeExpr> */
5630 var = var2;
5631 RET_LABEL1:(void)0;
5632 }
5633 }
5634 /* <var:nullable MType> isa MClassType */
5635 cltype = type_nit__MClassType.color;
5636 idtype = type_nit__MClassType.id;
5637 if(var == NULL) {
5638 var3 = 0;
5639 } else {
5640 if(cltype >= var->type->table_size) {
5641 var3 = 0;
5642 } else {
5643 var3 = var->type->type_table[cltype] == idtype;
5644 }
5645 }
5646 if (unlikely(!var3)) {
5647 var_class_name = var == NULL ? "null" : var->type->name;
5648 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
5649 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 571);
5650 show_backtrace(1);
5651 }
5652 var_mtype = var;
5653 {
5654 nit___nit__RapidTypeVisitor___add_type(var_v, var_mtype); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
5655 }
5656 {
5657 { /* Inline typing#ARangeExpr#init_callsite (self) on <self:ACrangeExpr> */
5658 var6 = self->attrs[COLOR_nit__typing__ARangeExpr___init_callsite].val; /* _init_callsite on <self:ACrangeExpr> */
5659 var4 = var6;
5660 RET_LABEL5:(void)0;
5661 }
5662 }
5663 {
5664 nit___nit__RapidTypeVisitor___add_callsite(var_v, var4); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
5665 }
5666 RET_LABEL:;
5667 }
5668 /* method rapid_type_analysis#AOrangeExpr#accept_rapid_type_visitor for (self: AOrangeExpr, RapidTypeVisitor) */
5669 void nit__rapid_type_analysis___AOrangeExpr___ANode__accept_rapid_type_visitor(val* self, val* p0) {
5670 val* var_v /* var v: RapidTypeVisitor */;
5671 val* var /* : nullable MType */;
5672 val* var2 /* : nullable MType */;
5673 short int var3 /* : Bool */;
5674 int cltype;
5675 int idtype;
5676 const char* var_class_name;
5677 val* var_mtype /* var mtype: MClassType */;
5678 val* var4 /* : nullable CallSite */;
5679 val* var6 /* : nullable CallSite */;
5680 var_v = p0;
5681 {
5682 { /* Inline typing#AExpr#mtype (self) on <self:AOrangeExpr> */
5683 var2 = self->attrs[COLOR_nit__typing__AExpr___mtype].val; /* _mtype on <self:AOrangeExpr> */
5684 var = var2;
5685 RET_LABEL1:(void)0;
5686 }
5687 }
5688 /* <var:nullable MType> isa MClassType */
5689 cltype = type_nit__MClassType.color;
5690 idtype = type_nit__MClassType.id;
5691 if(var == NULL) {
5692 var3 = 0;
5693 } else {
5694 if(cltype >= var->type->table_size) {
5695 var3 = 0;
5696 } else {
5697 var3 = var->type->type_table[cltype] == idtype;
5698 }
5699 }
5700 if (unlikely(!var3)) {
5701 var_class_name = var == NULL ? "null" : var->type->name;
5702 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
5703 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 580);
5704 show_backtrace(1);
5705 }
5706 var_mtype = var;
5707 {
5708 nit___nit__RapidTypeVisitor___add_type(var_v, var_mtype); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
5709 }
5710 {
5711 { /* Inline typing#ARangeExpr#init_callsite (self) on <self:AOrangeExpr> */
5712 var6 = self->attrs[COLOR_nit__typing__ARangeExpr___init_callsite].val; /* _init_callsite on <self:AOrangeExpr> */
5713 var4 = var6;
5714 RET_LABEL5:(void)0;
5715 }
5716 }
5717 {
5718 nit___nit__RapidTypeVisitor___add_callsite(var_v, var4); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
5719 }
5720 RET_LABEL:;
5721 }
5722 /* method rapid_type_analysis#ATrueExpr#accept_rapid_type_visitor for (self: ATrueExpr, RapidTypeVisitor) */
5723 void nit__rapid_type_analysis___ATrueExpr___ANode__accept_rapid_type_visitor(val* self, val* p0) {
5724 val* var_v /* var v: RapidTypeVisitor */;
5725 val* var /* : nullable MType */;
5726 val* var2 /* : nullable MType */;
5727 short int var3 /* : Bool */;
5728 int cltype;
5729 int idtype;
5730 const char* var_class_name;
5731 var_v = p0;
5732 {
5733 { /* Inline typing#AExpr#mtype (self) on <self:ATrueExpr> */
5734 var2 = self->attrs[COLOR_nit__typing__AExpr___mtype].val; /* _mtype on <self:ATrueExpr> */
5735 var = var2;
5736 RET_LABEL1:(void)0;
5737 }
5738 }
5739 /* <var:nullable MType> isa MClassType */
5740 cltype = type_nit__MClassType.color;
5741 idtype = type_nit__MClassType.id;
5742 if(var == NULL) {
5743 var3 = 0;
5744 } else {
5745 if(cltype >= var->type->table_size) {
5746 var3 = 0;
5747 } else {
5748 var3 = var->type->type_table[cltype] == idtype;
5749 }
5750 }
5751 if (unlikely(!var3)) {
5752 var_class_name = var == NULL ? "null" : var->type->name;
5753 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
5754 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 589);
5755 show_backtrace(1);
5756 }
5757 {
5758 nit___nit__RapidTypeVisitor___add_type(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
5759 }
5760 RET_LABEL:;
5761 }
5762 /* method rapid_type_analysis#AFalseExpr#accept_rapid_type_visitor for (self: AFalseExpr, RapidTypeVisitor) */
5763 void nit__rapid_type_analysis___AFalseExpr___ANode__accept_rapid_type_visitor(val* self, val* p0) {
5764 val* var_v /* var v: RapidTypeVisitor */;
5765 val* var /* : nullable MType */;
5766 val* var2 /* : nullable MType */;
5767 short int var3 /* : Bool */;
5768 int cltype;
5769 int idtype;
5770 const char* var_class_name;
5771 var_v = p0;
5772 {
5773 { /* Inline typing#AExpr#mtype (self) on <self:AFalseExpr> */
5774 var2 = self->attrs[COLOR_nit__typing__AExpr___mtype].val; /* _mtype on <self:AFalseExpr> */
5775 var = var2;
5776 RET_LABEL1:(void)0;
5777 }
5778 }
5779 /* <var:nullable MType> isa MClassType */
5780 cltype = type_nit__MClassType.color;
5781 idtype = type_nit__MClassType.id;
5782 if(var == NULL) {
5783 var3 = 0;
5784 } else {
5785 if(cltype >= var->type->table_size) {
5786 var3 = 0;
5787 } else {
5788 var3 = var->type->type_table[cltype] == idtype;
5789 }
5790 }
5791 if (unlikely(!var3)) {
5792 var_class_name = var == NULL ? "null" : var->type->name;
5793 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
5794 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 596);
5795 show_backtrace(1);
5796 }
5797 {
5798 nit___nit__RapidTypeVisitor___add_type(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
5799 }
5800 RET_LABEL:;
5801 }
5802 /* method rapid_type_analysis#AIsaExpr#accept_rapid_type_visitor for (self: AIsaExpr, RapidTypeVisitor) */
5803 void nit__rapid_type_analysis___AIsaExpr___ANode__accept_rapid_type_visitor(val* self, val* p0) {
5804 val* var_v /* var v: RapidTypeVisitor */;
5805 val* var /* : nullable MType */;
5806 val* var2 /* : nullable MType */;
5807 var_v = p0;
5808 {
5809 { /* Inline typing#AIsaExpr#cast_type (self) on <self:AIsaExpr> */
5810 var2 = self->attrs[COLOR_nit__typing__AIsaExpr___cast_type].val; /* _cast_type on <self:AIsaExpr> */
5811 var = var2;
5812 RET_LABEL1:(void)0;
5813 }
5814 }
5815 if (unlikely(var == NULL)) {
5816 PRINT_ERROR("Runtime error: %s", "Cast failed");
5817 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 603);
5818 show_backtrace(1);
5819 }
5820 {
5821 nit___nit__RapidTypeVisitor___add_cast_type(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_cast_type on <var_v:RapidTypeVisitor>*/
5822 }
5823 RET_LABEL:;
5824 }
5825 /* method rapid_type_analysis#AAsCastExpr#accept_rapid_type_visitor for (self: AAsCastExpr, RapidTypeVisitor) */
5826 void nit__rapid_type_analysis___AAsCastExpr___ANode__accept_rapid_type_visitor(val* self, val* p0) {
5827 val* var_v /* var v: RapidTypeVisitor */;
5828 val* var /* : nullable MType */;
5829 val* var2 /* : nullable MType */;
5830 var_v = p0;
5831 {
5832 { /* Inline typing#AExpr#mtype (self) on <self:AAsCastExpr> */
5833 var2 = self->attrs[COLOR_nit__typing__AExpr___mtype].val; /* _mtype on <self:AAsCastExpr> */
5834 var = var2;
5835 RET_LABEL1:(void)0;
5836 }
5837 }
5838 if (unlikely(var == NULL)) {
5839 PRINT_ERROR("Runtime error: %s", "Cast failed");
5840 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 610);
5841 show_backtrace(1);
5842 }
5843 {
5844 nit___nit__RapidTypeVisitor___add_cast_type(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_cast_type on <var_v:RapidTypeVisitor>*/
5845 }
5846 RET_LABEL:;
5847 }
5848 /* method rapid_type_analysis#ASendExpr#accept_rapid_type_visitor for (self: ASendExpr, RapidTypeVisitor) */
5849 void nit__rapid_type_analysis___ASendExpr___ANode__accept_rapid_type_visitor(val* self, val* p0) {
5850 val* var_v /* var v: RapidTypeVisitor */;
5851 val* var /* : nullable CallSite */;
5852 val* var2 /* : nullable CallSite */;
5853 var_v = p0;
5854 {
5855 { /* Inline typing#ASendExpr#callsite (self) on <self:ASendExpr> */
5856 var2 = self->attrs[COLOR_nit__typing__ASendExpr___callsite].val; /* _callsite on <self:ASendExpr> */
5857 var = var2;
5858 RET_LABEL1:(void)0;
5859 }
5860 }
5861 {
5862 nit___nit__RapidTypeVisitor___add_callsite(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
5863 }
5864 RET_LABEL:;
5865 }
5866 /* method rapid_type_analysis#ASendReassignFormExpr#accept_rapid_type_visitor for (self: ASendReassignFormExpr, RapidTypeVisitor) */
5867 void nit__rapid_type_analysis___ASendReassignFormExpr___ANode__accept_rapid_type_visitor(val* self, val* p0) {
5868 val* var_v /* var v: RapidTypeVisitor */;
5869 val* var /* : nullable CallSite */;
5870 val* var2 /* : nullable CallSite */;
5871 val* var3 /* : nullable CallSite */;
5872 val* var5 /* : nullable CallSite */;
5873 val* var6 /* : nullable CallSite */;
5874 val* var8 /* : nullable CallSite */;
5875 var_v = p0;
5876 {
5877 { /* Inline typing#ASendExpr#callsite (self) on <self:ASendReassignFormExpr> */
5878 var2 = self->attrs[COLOR_nit__typing__ASendExpr___callsite].val; /* _callsite on <self:ASendReassignFormExpr> */
5879 var = var2;
5880 RET_LABEL1:(void)0;
5881 }
5882 }
5883 {
5884 nit___nit__RapidTypeVisitor___add_callsite(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
5885 }
5886 {
5887 { /* Inline typing#AReassignFormExpr#reassign_callsite (self) on <self:ASendReassignFormExpr> */
5888 var5 = self->attrs[COLOR_nit__typing__AReassignFormExpr___reassign_callsite].val; /* _reassign_callsite on <self:ASendReassignFormExpr> */
5889 var3 = var5;
5890 RET_LABEL4:(void)0;
5891 }
5892 }
5893 {
5894 nit___nit__RapidTypeVisitor___add_callsite(var_v, var3); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
5895 }
5896 {
5897 { /* Inline typing#ASendReassignFormExpr#write_callsite (self) on <self:ASendReassignFormExpr> */
5898 var8 = self->attrs[COLOR_nit__typing__ASendReassignFormExpr___write_callsite].val; /* _write_callsite on <self:ASendReassignFormExpr> */
5899 var6 = var8;
5900 RET_LABEL7:(void)0;
5901 }
5902 }
5903 {
5904 nit___nit__RapidTypeVisitor___add_callsite(var_v, var6); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
5905 }
5906 RET_LABEL:;
5907 }
5908 /* method rapid_type_analysis#AVarReassignExpr#accept_rapid_type_visitor for (self: AVarReassignExpr, RapidTypeVisitor) */
5909 void nit__rapid_type_analysis___AVarReassignExpr___ANode__accept_rapid_type_visitor(val* self, val* p0) {
5910 val* var_v /* var v: RapidTypeVisitor */;
5911 val* var /* : nullable CallSite */;
5912 val* var2 /* : nullable CallSite */;
5913 var_v = p0;
5914 {
5915 { /* Inline typing#AReassignFormExpr#reassign_callsite (self) on <self:AVarReassignExpr> */
5916 var2 = self->attrs[COLOR_nit__typing__AReassignFormExpr___reassign_callsite].val; /* _reassign_callsite on <self:AVarReassignExpr> */
5917 var = var2;
5918 RET_LABEL1:(void)0;
5919 }
5920 }
5921 {
5922 nit___nit__RapidTypeVisitor___add_callsite(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
5923 }
5924 RET_LABEL:;
5925 }
5926 /* method rapid_type_analysis#AAttrReassignExpr#accept_rapid_type_visitor for (self: AAttrReassignExpr, RapidTypeVisitor) */
5927 void nit__rapid_type_analysis___AAttrReassignExpr___ANode__accept_rapid_type_visitor(val* self, val* p0) {
5928 val* var_v /* var v: RapidTypeVisitor */;
5929 val* var /* : nullable CallSite */;
5930 val* var2 /* : nullable CallSite */;
5931 var_v = p0;
5932 {
5933 { /* Inline typing#AReassignFormExpr#reassign_callsite (self) on <self:AAttrReassignExpr> */
5934 var2 = self->attrs[COLOR_nit__typing__AReassignFormExpr___reassign_callsite].val; /* _reassign_callsite on <self:AAttrReassignExpr> */
5935 var = var2;
5936 RET_LABEL1:(void)0;
5937 }
5938 }
5939 {
5940 nit___nit__RapidTypeVisitor___add_callsite(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
5941 }
5942 RET_LABEL:;
5943 }
5944 /* method rapid_type_analysis#ASuperExpr#accept_rapid_type_visitor for (self: ASuperExpr, RapidTypeVisitor) */
5945 void nit__rapid_type_analysis___ASuperExpr___ANode__accept_rapid_type_visitor(val* self, val* p0) {
5946 val* var_v /* var v: RapidTypeVisitor */;
5947 val* var /* : nullable CallSite */;
5948 val* var2 /* : nullable CallSite */;
5949 val* var_callsite /* var callsite: nullable CallSite */;
5950 val* var3 /* : null */;
5951 short int var4 /* : Bool */;
5952 short int var5 /* : Bool */;
5953 val* var_other /* var other: nullable Object */;
5954 short int var7 /* : Bool */;
5955 short int var8 /* : Bool */;
5956 val* var9 /* : RapidTypeAnalysis */;
5957 val* var11 /* : RapidTypeAnalysis */;
5958 val* var12 /* : MClassType */;
5959 val* var14 /* : MClassType */;
5960 val* var15 /* : nullable MMethodDef */;
5961 val* var17 /* : nullable MMethodDef */;
5962 var_v = p0;
5963 {
5964 { /* Inline typing#ASuperExpr#callsite (self) on <self:ASuperExpr> */
5965 var2 = self->attrs[COLOR_nit__typing__ASuperExpr___callsite].val; /* _callsite on <self:ASuperExpr> */
5966 var = var2;
5967 RET_LABEL1:(void)0;
5968 }
5969 }
5970 var_callsite = var;
5971 var3 = NULL;
5972 if (var_callsite == NULL) {
5973 var4 = 0; /* is null */
5974 } else {
5975 var4 = 1; /* arg is null and recv is not */
5976 }
5977 if (0) {
5978 { /* Inline kernel#Object#!= (var_callsite,var3) on <var_callsite:nullable CallSite> */
5979 var_other = var3;
5980 {
5981 var7 = ((short int (*)(val* self, val* p0))(var_callsite->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_callsite, var_other) /* == on <var_callsite:nullable CallSite(CallSite)>*/;
5982 }
5983 var8 = !var7;
5984 var5 = var8;
5985 goto RET_LABEL6;
5986 RET_LABEL6:(void)0;
5987 }
5988 var4 = var5;
5989 }
5990 if (var4){
5991 {
5992 nit___nit__RapidTypeVisitor___add_callsite(var_v, var_callsite); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
5993 }
5994 goto RET_LABEL;
5995 } else {
5996 }
5997 {
5998 { /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (var_v) on <var_v:RapidTypeVisitor> */
5999 var11 = var_v->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <var_v:RapidTypeVisitor> */
6000 if (unlikely(var11 == NULL)) {
6001 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
6002 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
6003 show_backtrace(1);
6004 }
6005 var9 = var11;
6006 RET_LABEL10:(void)0;
6007 }
6008 }
6009 {
6010 { /* Inline rapid_type_analysis#RapidTypeVisitor#receiver (var_v) on <var_v:RapidTypeVisitor> */
6011 var14 = var_v->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___receiver].val; /* _receiver on <var_v:RapidTypeVisitor> */
6012 if (unlikely(var14 == NULL)) {
6013 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _receiver");
6014 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 436);
6015 show_backtrace(1);
6016 }
6017 var12 = var14;
6018 RET_LABEL13:(void)0;
6019 }
6020 }
6021 {
6022 { /* Inline typing#ASuperExpr#mpropdef (self) on <self:ASuperExpr> */
6023 var17 = self->attrs[COLOR_nit__typing__ASuperExpr___mpropdef].val; /* _mpropdef on <self:ASuperExpr> */
6024 var15 = var17;
6025 RET_LABEL16:(void)0;
6026 }
6027 }
6028 if (unlikely(var15 == NULL)) {
6029 PRINT_ERROR("Runtime error: %s", "Cast failed");
6030 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 654);
6031 show_backtrace(1);
6032 }
6033 {
6034 nit___nit__RapidTypeAnalysis___add_super_send(var9, var12, var15); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_super_send on <var9:RapidTypeAnalysis>*/
6035 }
6036 RET_LABEL:;
6037 }
6038 /* method rapid_type_analysis#AForExpr#accept_rapid_type_visitor for (self: AForExpr, RapidTypeVisitor) */
6039 void nit__rapid_type_analysis___AForExpr___ANode__accept_rapid_type_visitor(val* self, val* p0) {
6040 val* var_v /* var v: RapidTypeVisitor */;
6041 val* var /* : nullable CallSite */;
6042 val* var2 /* : nullable CallSite */;
6043 val* var3 /* : nullable CallSite */;
6044 val* var5 /* : nullable CallSite */;
6045 val* var6 /* : nullable Array[Variable] */;
6046 val* var8 /* : nullable Array[Variable] */;
6047 long var9 /* : Int */;
6048 long var11 /* : Int */;
6049 long var12 /* : Int */;
6050 short int var13 /* : Bool */;
6051 short int var15 /* : Bool */;
6052 val* var16 /* : nullable CallSite */;
6053 val* var18 /* : nullable CallSite */;
6054 val* var19 /* : nullable Array[Variable] */;
6055 val* var21 /* : nullable Array[Variable] */;
6056 long var22 /* : Int */;
6057 long var24 /* : Int */;
6058 long var25 /* : Int */;
6059 short int var26 /* : Bool */;
6060 short int var28 /* : Bool */;
6061 val* var29 /* : nullable CallSite */;
6062 val* var31 /* : nullable CallSite */;
6063 val* var32 /* : nullable CallSite */;
6064 val* var34 /* : nullable CallSite */;
6065 val* var35 /* : nullable CallSite */;
6066 val* var37 /* : nullable CallSite */;
6067 val* var38 /* : nullable CallSite */;
6068 val* var40 /* : nullable CallSite */;
6069 val* var_mf /* var mf: nullable CallSite */;
6070 val* var41 /* : null */;
6071 short int var42 /* : Bool */;
6072 short int var43 /* : Bool */;
6073 val* var_other /* var other: nullable Object */;
6074 short int var45 /* : Bool */;
6075 short int var46 /* : Bool */;
6076 var_v = p0;
6077 {
6078 { /* Inline typing#AForExpr#method_iterator (self) on <self:AForExpr> */
6079 var2 = self->attrs[COLOR_nit__typing__AForExpr___method_iterator].val; /* _method_iterator on <self:AForExpr> */
6080 var = var2;
6081 RET_LABEL1:(void)0;
6082 }
6083 }
6084 {
6085 nit___nit__RapidTypeVisitor___add_callsite(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
6086 }
6087 {
6088 { /* Inline typing#AForExpr#method_is_ok (self) on <self:AForExpr> */
6089 var5 = self->attrs[COLOR_nit__typing__AForExpr___method_is_ok].val; /* _method_is_ok on <self:AForExpr> */
6090 var3 = var5;
6091 RET_LABEL4:(void)0;
6092 }
6093 }
6094 {
6095 nit___nit__RapidTypeVisitor___add_callsite(var_v, var3); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
6096 }
6097 {
6098 { /* Inline scope#AForExpr#variables (self) on <self:AForExpr> */
6099 var8 = self->attrs[COLOR_nit__scope__AForExpr___variables].val; /* _variables on <self:AForExpr> */
6100 var6 = var8;
6101 RET_LABEL7:(void)0;
6102 }
6103 }
6104 if (var6 == NULL) {
6105 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6106 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 663);
6107 show_backtrace(1);
6108 } else {
6109 { /* Inline array#AbstractArrayRead#length (var6) on <var6:nullable Array[Variable]> */
6110 if (unlikely(var6 == NULL)) {
6111 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6112 PRINT_ERROR(" (%s:%d)\n", FILE_standard__array, 24);
6113 show_backtrace(1);
6114 }
6115 var11 = var6->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var6:nullable Array[Variable]> */
6116 var9 = var11;
6117 RET_LABEL10:(void)0;
6118 }
6119 }
6120 var12 = 1;
6121 {
6122 { /* Inline kernel#Int#== (var9,var12) on <var9:Int> */
6123 var15 = var9 == var12;
6124 var13 = var15;
6125 goto RET_LABEL14;
6126 RET_LABEL14:(void)0;
6127 }
6128 }
6129 if (var13){
6130 {
6131 { /* Inline typing#AForExpr#method_item (self) on <self:AForExpr> */
6132 var18 = self->attrs[COLOR_nit__typing__AForExpr___method_item].val; /* _method_item on <self:AForExpr> */
6133 var16 = var18;
6134 RET_LABEL17:(void)0;
6135 }
6136 }
6137 {
6138 nit___nit__RapidTypeVisitor___add_callsite(var_v, var16); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
6139 }
6140 } else {
6141 {
6142 { /* Inline scope#AForExpr#variables (self) on <self:AForExpr> */
6143 var21 = self->attrs[COLOR_nit__scope__AForExpr___variables].val; /* _variables on <self:AForExpr> */
6144 var19 = var21;
6145 RET_LABEL20:(void)0;
6146 }
6147 }
6148 if (var19 == NULL) {
6149 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6150 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 665);
6151 show_backtrace(1);
6152 } else {
6153 { /* Inline array#AbstractArrayRead#length (var19) on <var19:nullable Array[Variable]> */
6154 if (unlikely(var19 == NULL)) {
6155 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6156 PRINT_ERROR(" (%s:%d)\n", FILE_standard__array, 24);
6157 show_backtrace(1);
6158 }
6159 var24 = var19->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var19:nullable Array[Variable]> */
6160 var22 = var24;
6161 RET_LABEL23:(void)0;
6162 }
6163 }
6164 var25 = 2;
6165 {
6166 { /* Inline kernel#Int#== (var22,var25) on <var22:Int> */
6167 var28 = var22 == var25;
6168 var26 = var28;
6169 goto RET_LABEL27;
6170 RET_LABEL27:(void)0;
6171 }
6172 }
6173 if (var26){
6174 {
6175 { /* Inline typing#AForExpr#method_key (self) on <self:AForExpr> */
6176 var31 = self->attrs[COLOR_nit__typing__AForExpr___method_key].val; /* _method_key on <self:AForExpr> */
6177 var29 = var31;
6178 RET_LABEL30:(void)0;
6179 }
6180 }
6181 {
6182 nit___nit__RapidTypeVisitor___add_callsite(var_v, var29); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
6183 }
6184 {
6185 { /* Inline typing#AForExpr#method_item (self) on <self:AForExpr> */
6186 var34 = self->attrs[COLOR_nit__typing__AForExpr___method_item].val; /* _method_item on <self:AForExpr> */
6187 var32 = var34;
6188 RET_LABEL33:(void)0;
6189 }
6190 }
6191 {
6192 nit___nit__RapidTypeVisitor___add_callsite(var_v, var32); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
6193 }
6194 } else {
6195 PRINT_ERROR("Runtime error: %s", "Aborted");
6196 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 669);
6197 show_backtrace(1);
6198 }
6199 }
6200 {
6201 { /* Inline typing#AForExpr#method_next (self) on <self:AForExpr> */
6202 var37 = self->attrs[COLOR_nit__typing__AForExpr___method_next].val; /* _method_next on <self:AForExpr> */
6203 var35 = var37;
6204 RET_LABEL36:(void)0;
6205 }
6206 }
6207 {
6208 nit___nit__RapidTypeVisitor___add_callsite(var_v, var35); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
6209 }
6210 {
6211 { /* Inline typing#AForExpr#method_finish (self) on <self:AForExpr> */
6212 var40 = self->attrs[COLOR_nit__typing__AForExpr___method_finish].val; /* _method_finish on <self:AForExpr> */
6213 var38 = var40;
6214 RET_LABEL39:(void)0;
6215 }
6216 }
6217 var_mf = var38;
6218 var41 = NULL;
6219 if (var_mf == NULL) {
6220 var42 = 0; /* is null */
6221 } else {
6222 var42 = 1; /* arg is null and recv is not */
6223 }
6224 if (0) {
6225 { /* Inline kernel#Object#!= (var_mf,var41) on <var_mf:nullable CallSite> */
6226 var_other = var41;
6227 {
6228 var45 = ((short int (*)(val* self, val* p0))(var_mf->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mf, var_other) /* == on <var_mf:nullable CallSite(CallSite)>*/;
6229 }
6230 var46 = !var45;
6231 var43 = var46;
6232 goto RET_LABEL44;
6233 RET_LABEL44:(void)0;
6234 }
6235 var42 = var43;
6236 }
6237 if (var42){
6238 {
6239 nit___nit__RapidTypeVisitor___add_callsite(var_v, var_mf); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
6240 }
6241 } else {
6242 }
6243 RET_LABEL:;
6244 }
6245 /* method rapid_type_analysis#ANewExpr#accept_rapid_type_visitor for (self: ANewExpr, RapidTypeVisitor) */
6246 void nit__rapid_type_analysis___ANewExpr___ANode__accept_rapid_type_visitor(val* self, val* p0) {
6247 val* var_v /* var v: RapidTypeVisitor */;
6248 val* var /* : nullable MClassType */;
6249 val* var2 /* : nullable MClassType */;
6250 val* var_mtype /* var mtype: MClassType */;
6251 val* var3 /* : nullable CallSite */;
6252 val* var5 /* : nullable CallSite */;
6253 var_v = p0;
6254 {
6255 { /* Inline typing#ANewExpr#recvtype (self) on <self:ANewExpr> */
6256 var2 = self->attrs[COLOR_nit__typing__ANewExpr___recvtype].val; /* _recvtype on <self:ANewExpr> */
6257 var = var2;
6258 RET_LABEL1:(void)0;
6259 }
6260 }
6261 if (unlikely(var == NULL)) {
6262 PRINT_ERROR("Runtime error: %s", "Cast failed");
6263 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 680);
6264 show_backtrace(1);
6265 }
6266 var_mtype = var;
6267 {
6268 nit___nit__RapidTypeVisitor___add_type(var_v, var_mtype); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
6269 }
6270 {
6271 { /* Inline typing#ANewExpr#callsite (self) on <self:ANewExpr> */
6272 var5 = self->attrs[COLOR_nit__typing__ANewExpr___callsite].val; /* _callsite on <self:ANewExpr> */
6273 var3 = var5;
6274 RET_LABEL4:(void)0;
6275 }
6276 }
6277 {
6278 nit___nit__RapidTypeVisitor___add_callsite(var_v, var3); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
6279 }
6280 RET_LABEL:;
6281 }