c_src: update
[nit.git] / c_src / array.sep.1.c
1 #include "array.sep.0.h"
2 /* method array#AbstractArrayRead#length for (self: AbstractArrayRead[nullable Object]): Int */
3 long array__AbstractArrayRead__length(val* self) {
4 long var /* : Int */;
5 long var1 /* : Int */;
6 var1 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:AbstractArrayRead[nullable Object]> */
7 var = var1;
8 goto RET_LABEL;
9 RET_LABEL:;
10 return var;
11 }
12 /* method array#AbstractArrayRead#length for (self: Object): Int */
13 long VIRTUAL_array__AbstractArrayRead__length(val* self) {
14 long var /* : Int */;
15 long var1 /* : Int */;
16 var1 = array__AbstractArrayRead__length(self);
17 var = var1;
18 RET_LABEL:;
19 return var;
20 }
21 /* method array#AbstractArrayRead#is_empty for (self: AbstractArrayRead[nullable Object]): Bool */
22 short int array__AbstractArrayRead__is_empty(val* self) {
23 short int var /* : Bool */;
24 long var1 /* : Int */;
25 long var2 /* : Int */;
26 short int var3 /* : Bool */;
27 short int var4 /* : Bool */;
28 short int var6 /* : Bool */;
29 var1 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:AbstractArrayRead[nullable Object]> */
30 var2 = 0;
31 {
32 { /* Inline kernel#Int#== (var1,var2) on <var1:Int> */
33 var6 = var1 == var2;
34 var4 = var6;
35 goto RET_LABEL5;
36 RET_LABEL5:(void)0;
37 }
38 var3 = var4;
39 }
40 var = var3;
41 goto RET_LABEL;
42 RET_LABEL:;
43 return var;
44 }
45 /* method array#AbstractArrayRead#is_empty for (self: Object): Bool */
46 short int VIRTUAL_array__AbstractArrayRead__is_empty(val* self) {
47 short int var /* : Bool */;
48 short int var1 /* : Bool */;
49 var1 = array__AbstractArrayRead__is_empty(self);
50 var = var1;
51 RET_LABEL:;
52 return var;
53 }
54 /* method array#AbstractArrayRead#has for (self: AbstractArrayRead[nullable Object], nullable Object): Bool */
55 short int array__AbstractArrayRead__has(val* self, val* p0) {
56 short int var /* : Bool */;
57 short int var1 /* : Bool */;
58 int cltype;
59 int idtype;
60 const struct type* type_struct;
61 short int is_nullable;
62 const char* var_class_name;
63 val* var_item /* var item: nullable Object */;
64 long var2 /* : Int */;
65 long var_i /* var i: Int */;
66 long var3 /* : Int */;
67 long var_l /* var l: Int */;
68 short int var4 /* : Bool */;
69 short int var6 /* : Bool */;
70 int cltype7;
71 int idtype8;
72 const char* var_class_name9;
73 short int var10 /* : Bool */;
74 val* var11 /* : nullable Object */;
75 short int var12 /* : Bool */;
76 short int var13 /* : Bool */;
77 short int var14 /* : Bool */;
78 long var15 /* : Int */;
79 long var16 /* : Int */;
80 short int var18 /* : Bool */;
81 int cltype19;
82 int idtype20;
83 const char* var_class_name21;
84 long var22 /* : Int */;
85 short int var23 /* : Bool */;
86 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa Collection#0 */
87 /* <p0:nullable Object> isa Collection#0 */
88 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collection_FT0];
89 cltype = type_struct->color;
90 idtype = type_struct->id;
91 is_nullable = type_struct->is_nullable;
92 if(p0 == NULL) {
93 var1 = is_nullable;
94 } else {
95 if(cltype >= p0->type->table_size) {
96 var1 = 0;
97 } else {
98 var1 = p0->type->type_table[cltype] == idtype;
99 }
100 }
101 if (unlikely(!var1)) {
102 var_class_name = p0 == NULL ? "null" : p0->type->name;
103 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection#0", var_class_name);
104 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 29);
105 show_backtrace(1);
106 }
107 var_item = p0;
108 var2 = 0;
109 var_i = var2;
110 {
111 var3 = array__AbstractArrayRead__length(self);
112 }
113 var_l = var3;
114 for(;;) {
115 {
116 { /* Inline kernel#Int#< (var_i,var_l) on <var_i:Int> */
117 /* Covariant cast for argument 0 (i) <var_l:Int> isa OTHER */
118 /* <var_l:Int> isa OTHER */
119 var6 = 1; /* easy <var_l:Int> isa OTHER*/
120 if (unlikely(!var6)) {
121 var_class_name9 = type_kernel__Int.name;
122 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name9);
123 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 325);
124 show_backtrace(1);
125 }
126 var10 = var_i < var_l;
127 var4 = var10;
128 goto RET_LABEL5;
129 RET_LABEL5:(void)0;
130 }
131 }
132 if (!var4) break;
133 {
134 var11 = array__Array___91d_93d(self, var_i);
135 }
136 if (var11 == NULL) {
137 var12 = (var_item == NULL);
138 } else {
139 var13 = ((short int (*)(val*, val*))(var11->class->vft[COLOR_kernel__Object___61d_61d]))(var11, var_item) /* == on <var11:nullable Object>*/;
140 var12 = var13;
141 }
142 if (var12){
143 var14 = 1;
144 var = var14;
145 goto RET_LABEL;
146 } else {
147 }
148 var15 = 1;
149 {
150 { /* Inline kernel#Int#+ (var_i,var15) on <var_i:Int> */
151 /* Covariant cast for argument 0 (i) <var15:Int> isa OTHER */
152 /* <var15:Int> isa OTHER */
153 var18 = 1; /* easy <var15:Int> isa OTHER*/
154 if (unlikely(!var18)) {
155 var_class_name21 = type_kernel__Int.name;
156 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name21);
157 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
158 show_backtrace(1);
159 }
160 var22 = var_i + var15;
161 var16 = var22;
162 goto RET_LABEL17;
163 RET_LABEL17:(void)0;
164 }
165 }
166 var_i = var16;
167 CONTINUE_label: (void)0;
168 }
169 BREAK_label: (void)0;
170 var23 = 0;
171 var = var23;
172 goto RET_LABEL;
173 RET_LABEL:;
174 return var;
175 }
176 /* method array#AbstractArrayRead#has for (self: Object, nullable Object): Bool */
177 short int VIRTUAL_array__AbstractArrayRead__has(val* self, val* p0) {
178 short int var /* : Bool */;
179 short int var1 /* : Bool */;
180 var1 = array__AbstractArrayRead__has(self, p0);
181 var = var1;
182 RET_LABEL:;
183 return var;
184 }
185 /* method array#AbstractArrayRead#index_of for (self: AbstractArrayRead[nullable Object], nullable Object): Int */
186 long array__AbstractArrayRead__index_of(val* self, val* p0) {
187 long var /* : Int */;
188 short int var1 /* : Bool */;
189 int cltype;
190 int idtype;
191 const struct type* type_struct;
192 short int is_nullable;
193 const char* var_class_name;
194 val* var_item /* var item: nullable Object */;
195 long var2 /* : Int */;
196 long var3 /* : Int */;
197 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa SequenceRead#0 */
198 /* <p0:nullable Object> isa SequenceRead#0 */
199 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__SequenceRead_FT0];
200 cltype = type_struct->color;
201 idtype = type_struct->id;
202 is_nullable = type_struct->is_nullable;
203 if(p0 == NULL) {
204 var1 = is_nullable;
205 } else {
206 if(cltype >= p0->type->table_size) {
207 var1 = 0;
208 } else {
209 var1 = p0->type->type_table[cltype] == idtype;
210 }
211 }
212 if (unlikely(!var1)) {
213 var_class_name = p0 == NULL ? "null" : p0->type->name;
214 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "SequenceRead#0", var_class_name);
215 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 63);
216 show_backtrace(1);
217 }
218 var_item = p0;
219 var2 = 0;
220 {
221 var3 = array__AbstractArrayRead__index_of_from(self, var_item, var2);
222 }
223 var = var3;
224 goto RET_LABEL;
225 RET_LABEL:;
226 return var;
227 }
228 /* method array#AbstractArrayRead#index_of for (self: Object, nullable Object): Int */
229 long VIRTUAL_array__AbstractArrayRead__index_of(val* self, val* p0) {
230 long var /* : Int */;
231 long var1 /* : Int */;
232 var1 = array__AbstractArrayRead__index_of(self, p0);
233 var = var1;
234 RET_LABEL:;
235 return var;
236 }
237 /* method array#AbstractArrayRead#last_index_of for (self: AbstractArrayRead[nullable Object], nullable Object): Int */
238 long array__AbstractArrayRead__last_index_of(val* self, val* p0) {
239 long var /* : Int */;
240 short int var1 /* : Bool */;
241 int cltype;
242 int idtype;
243 const struct type* type_struct;
244 short int is_nullable;
245 const char* var_class_name;
246 val* var_item /* var item: nullable Object */;
247 long var2 /* : Int */;
248 long var3 /* : Int */;
249 long var4 /* : Int */;
250 short int var6 /* : Bool */;
251 int cltype7;
252 int idtype8;
253 const char* var_class_name9;
254 long var10 /* : Int */;
255 long var11 /* : Int */;
256 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa AbstractArrayRead#0 */
257 /* <p0:nullable Object> isa AbstractArrayRead#0 */
258 type_struct = self->type->resolution_table->types[COLOR_array__AbstractArrayRead_FT0];
259 cltype = type_struct->color;
260 idtype = type_struct->id;
261 is_nullable = type_struct->is_nullable;
262 if(p0 == NULL) {
263 var1 = is_nullable;
264 } else {
265 if(cltype >= p0->type->table_size) {
266 var1 = 0;
267 } else {
268 var1 = p0->type->type_table[cltype] == idtype;
269 }
270 }
271 if (unlikely(!var1)) {
272 var_class_name = p0 == NULL ? "null" : p0->type->name;
273 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractArrayRead#0", var_class_name);
274 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 65);
275 show_backtrace(1);
276 }
277 var_item = p0;
278 {
279 var2 = array__AbstractArrayRead__length(self);
280 }
281 var3 = 1;
282 {
283 { /* Inline kernel#Int#- (var2,var3) on <var2:Int> */
284 /* Covariant cast for argument 0 (i) <var3:Int> isa OTHER */
285 /* <var3:Int> isa OTHER */
286 var6 = 1; /* easy <var3:Int> isa OTHER*/
287 if (unlikely(!var6)) {
288 var_class_name9 = type_kernel__Int.name;
289 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name9);
290 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 331);
291 show_backtrace(1);
292 }
293 var10 = var2 - var3;
294 var4 = var10;
295 goto RET_LABEL5;
296 RET_LABEL5:(void)0;
297 }
298 }
299 {
300 var11 = array__AbstractArrayRead__last_index_of_from(self, var_item, var4);
301 }
302 var = var11;
303 goto RET_LABEL;
304 RET_LABEL:;
305 return var;
306 }
307 /* method array#AbstractArrayRead#last_index_of for (self: Object, nullable Object): Int */
308 long VIRTUAL_array__AbstractArrayRead__last_index_of(val* self, val* p0) {
309 long var /* : Int */;
310 long var1 /* : Int */;
311 var1 = array__AbstractArrayRead__last_index_of(self, p0);
312 var = var1;
313 RET_LABEL:;
314 return var;
315 }
316 /* method array#AbstractArrayRead#index_of_from for (self: AbstractArrayRead[nullable Object], nullable Object, Int): Int */
317 long array__AbstractArrayRead__index_of_from(val* self, val* p0, long p1) {
318 long var /* : Int */;
319 short int var1 /* : Bool */;
320 int cltype;
321 int idtype;
322 const struct type* type_struct;
323 short int is_nullable;
324 const char* var_class_name;
325 val* var_item /* var item: nullable Object */;
326 long var_pos /* var pos: Int */;
327 long var_i /* var i: Int */;
328 long var2 /* : Int */;
329 long var_len /* var len: Int */;
330 short int var3 /* : Bool */;
331 short int var5 /* : Bool */;
332 int cltype6;
333 int idtype7;
334 const char* var_class_name8;
335 short int var9 /* : Bool */;
336 val* var10 /* : nullable Object */;
337 short int var11 /* : Bool */;
338 short int var12 /* : Bool */;
339 long var13 /* : Int */;
340 long var14 /* : Int */;
341 short int var16 /* : Bool */;
342 int cltype17;
343 int idtype18;
344 const char* var_class_name19;
345 long var20 /* : Int */;
346 long var21 /* : Int */;
347 long var22 /* : Int */;
348 long var24 /* : Int */;
349 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa AbstractArrayRead#0 */
350 /* <p0:nullable Object> isa AbstractArrayRead#0 */
351 type_struct = self->type->resolution_table->types[COLOR_array__AbstractArrayRead_FT0];
352 cltype = type_struct->color;
353 idtype = type_struct->id;
354 is_nullable = type_struct->is_nullable;
355 if(p0 == NULL) {
356 var1 = is_nullable;
357 } else {
358 if(cltype >= p0->type->table_size) {
359 var1 = 0;
360 } else {
361 var1 = p0->type->type_table[cltype] == idtype;
362 }
363 }
364 if (unlikely(!var1)) {
365 var_class_name = p0 == NULL ? "null" : p0->type->name;
366 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractArrayRead#0", var_class_name);
367 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 67);
368 show_backtrace(1);
369 }
370 var_item = p0;
371 var_pos = p1;
372 var_i = var_pos;
373 {
374 var2 = array__AbstractArrayRead__length(self);
375 }
376 var_len = var2;
377 for(;;) {
378 {
379 { /* Inline kernel#Int#< (var_i,var_len) on <var_i:Int> */
380 /* Covariant cast for argument 0 (i) <var_len:Int> isa OTHER */
381 /* <var_len:Int> isa OTHER */
382 var5 = 1; /* easy <var_len:Int> isa OTHER*/
383 if (unlikely(!var5)) {
384 var_class_name8 = type_kernel__Int.name;
385 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name8);
386 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 325);
387 show_backtrace(1);
388 }
389 var9 = var_i < var_len;
390 var3 = var9;
391 goto RET_LABEL4;
392 RET_LABEL4:(void)0;
393 }
394 }
395 if (!var3) break;
396 {
397 var10 = array__Array___91d_93d(self, var_i);
398 }
399 if (var10 == NULL) {
400 var11 = (var_item == NULL);
401 } else {
402 var12 = ((short int (*)(val*, val*))(var10->class->vft[COLOR_kernel__Object___61d_61d]))(var10, var_item) /* == on <var10:nullable Object>*/;
403 var11 = var12;
404 }
405 if (var11){
406 var = var_i;
407 goto RET_LABEL;
408 } else {
409 }
410 var13 = 1;
411 {
412 { /* Inline kernel#Int#+ (var_i,var13) on <var_i:Int> */
413 /* Covariant cast for argument 0 (i) <var13:Int> isa OTHER */
414 /* <var13:Int> isa OTHER */
415 var16 = 1; /* easy <var13:Int> isa OTHER*/
416 if (unlikely(!var16)) {
417 var_class_name19 = type_kernel__Int.name;
418 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name19);
419 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
420 show_backtrace(1);
421 }
422 var20 = var_i + var13;
423 var14 = var20;
424 goto RET_LABEL15;
425 RET_LABEL15:(void)0;
426 }
427 }
428 var_i = var14;
429 CONTINUE_label: (void)0;
430 }
431 BREAK_label: (void)0;
432 var21 = 1;
433 {
434 { /* Inline kernel#Int#unary - (var21) on <var21:Int> */
435 var24 = -var21;
436 var22 = var24;
437 goto RET_LABEL23;
438 RET_LABEL23:(void)0;
439 }
440 }
441 var = var22;
442 goto RET_LABEL;
443 RET_LABEL:;
444 return var;
445 }
446 /* method array#AbstractArrayRead#index_of_from for (self: Object, nullable Object, Int): Int */
447 long VIRTUAL_array__AbstractArrayRead__index_of_from(val* self, val* p0, long p1) {
448 long var /* : Int */;
449 long var1 /* : Int */;
450 var1 = array__AbstractArrayRead__index_of_from(self, p0, p1);
451 var = var1;
452 RET_LABEL:;
453 return var;
454 }
455 /* method array#AbstractArrayRead#last_index_of_from for (self: AbstractArrayRead[nullable Object], nullable Object, Int): Int */
456 long array__AbstractArrayRead__last_index_of_from(val* self, val* p0, long p1) {
457 long var /* : Int */;
458 short int var1 /* : Bool */;
459 int cltype;
460 int idtype;
461 const struct type* type_struct;
462 short int is_nullable;
463 const char* var_class_name;
464 val* var_item /* var item: nullable Object */;
465 long var_pos /* var pos: Int */;
466 long var_i /* var i: Int */;
467 long var2 /* : Int */;
468 short int var3 /* : Bool */;
469 short int var5 /* : Bool */;
470 int cltype6;
471 int idtype7;
472 const char* var_class_name8;
473 short int var9 /* : Bool */;
474 val* var10 /* : nullable Object */;
475 short int var11 /* : Bool */;
476 short int var12 /* : Bool */;
477 long var13 /* : Int */;
478 long var14 /* : Int */;
479 short int var16 /* : Bool */;
480 int cltype17;
481 int idtype18;
482 const char* var_class_name19;
483 long var20 /* : Int */;
484 long var21 /* : Int */;
485 long var22 /* : Int */;
486 long var24 /* : Int */;
487 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa AbstractArrayRead#0 */
488 /* <p0:nullable Object> isa AbstractArrayRead#0 */
489 type_struct = self->type->resolution_table->types[COLOR_array__AbstractArrayRead_FT0];
490 cltype = type_struct->color;
491 idtype = type_struct->id;
492 is_nullable = type_struct->is_nullable;
493 if(p0 == NULL) {
494 var1 = is_nullable;
495 } else {
496 if(cltype >= p0->type->table_size) {
497 var1 = 0;
498 } else {
499 var1 = p0->type->type_table[cltype] == idtype;
500 }
501 }
502 if (unlikely(!var1)) {
503 var_class_name = p0 == NULL ? "null" : p0->type->name;
504 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractArrayRead#0", var_class_name);
505 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 80);
506 show_backtrace(1);
507 }
508 var_item = p0;
509 var_pos = p1;
510 var_i = var_pos;
511 for(;;) {
512 var2 = 0;
513 {
514 { /* Inline kernel#Int#>= (var_i,var2) on <var_i:Int> */
515 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
516 /* <var2:Int> isa OTHER */
517 var5 = 1; /* easy <var2:Int> isa OTHER*/
518 if (unlikely(!var5)) {
519 var_class_name8 = type_kernel__Int.name;
520 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name8);
521 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 326);
522 show_backtrace(1);
523 }
524 var9 = var_i >= var2;
525 var3 = var9;
526 goto RET_LABEL4;
527 RET_LABEL4:(void)0;
528 }
529 }
530 if (!var3) break;
531 {
532 var10 = array__Array___91d_93d(self, var_i);
533 }
534 if (var10 == NULL) {
535 var11 = (var_item == NULL);
536 } else {
537 var12 = ((short int (*)(val*, val*))(var10->class->vft[COLOR_kernel__Object___61d_61d]))(var10, var_item) /* == on <var10:nullable Object>*/;
538 var11 = var12;
539 }
540 if (var11){
541 var = var_i;
542 goto RET_LABEL;
543 } else {
544 var13 = 1;
545 {
546 { /* Inline kernel#Int#- (var_i,var13) on <var_i:Int> */
547 /* Covariant cast for argument 0 (i) <var13:Int> isa OTHER */
548 /* <var13:Int> isa OTHER */
549 var16 = 1; /* easy <var13:Int> isa OTHER*/
550 if (unlikely(!var16)) {
551 var_class_name19 = type_kernel__Int.name;
552 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name19);
553 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 331);
554 show_backtrace(1);
555 }
556 var20 = var_i - var13;
557 var14 = var20;
558 goto RET_LABEL15;
559 RET_LABEL15:(void)0;
560 }
561 }
562 var_i = var14;
563 }
564 CONTINUE_label: (void)0;
565 }
566 BREAK_label: (void)0;
567 var21 = 1;
568 {
569 { /* Inline kernel#Int#unary - (var21) on <var21:Int> */
570 var24 = -var21;
571 var22 = var24;
572 goto RET_LABEL23;
573 RET_LABEL23:(void)0;
574 }
575 }
576 var = var22;
577 goto RET_LABEL;
578 RET_LABEL:;
579 return var;
580 }
581 /* method array#AbstractArrayRead#last_index_of_from for (self: Object, nullable Object, Int): Int */
582 long VIRTUAL_array__AbstractArrayRead__last_index_of_from(val* self, val* p0, long p1) {
583 long var /* : Int */;
584 long var1 /* : Int */;
585 var1 = array__AbstractArrayRead__last_index_of_from(self, p0, p1);
586 var = var1;
587 RET_LABEL:;
588 return var;
589 }
590 /* method array#AbstractArrayRead#reversed for (self: AbstractArrayRead[nullable Object]): Array[nullable Object] */
591 val* array__AbstractArrayRead__reversed(val* self) {
592 val* var /* : Array[nullable Object] */;
593 long var1 /* : Int */;
594 long var_cmp /* var cmp: Int */;
595 val* var2 /* : Array[nullable Object] */;
596 val* var_result /* var result: Array[nullable Object] */;
597 long var3 /* : Int */;
598 short int var4 /* : Bool */;
599 short int var6 /* : Bool */;
600 int cltype;
601 int idtype;
602 const char* var_class_name;
603 short int var7 /* : Bool */;
604 long var8 /* : Int */;
605 long var9 /* : Int */;
606 short int var11 /* : Bool */;
607 int cltype12;
608 int idtype13;
609 const char* var_class_name14;
610 long var15 /* : Int */;
611 val* var16 /* : nullable Object */;
612 var1 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:AbstractArrayRead[nullable Object]> */
613 var_cmp = var1;
614 var2 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arrayarray__AbstractArrayRead_FT0]);
615 {
616 array__Array__with_capacity(var2, var_cmp); /* Direct call array#Array#with_capacity on <var2:Array[nullable Object]>*/
617 }
618 var_result = var2;
619 for(;;) {
620 var3 = 0;
621 {
622 { /* Inline kernel#Int#> (var_cmp,var3) on <var_cmp:Int> */
623 /* Covariant cast for argument 0 (i) <var3:Int> isa OTHER */
624 /* <var3:Int> isa OTHER */
625 var6 = 1; /* easy <var3:Int> isa OTHER*/
626 if (unlikely(!var6)) {
627 var_class_name = type_kernel__Int.name;
628 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
629 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 327);
630 show_backtrace(1);
631 }
632 var7 = var_cmp > var3;
633 var4 = var7;
634 goto RET_LABEL5;
635 RET_LABEL5:(void)0;
636 }
637 }
638 if (!var4) break;
639 var8 = 1;
640 {
641 { /* Inline kernel#Int#- (var_cmp,var8) on <var_cmp:Int> */
642 /* Covariant cast for argument 0 (i) <var8:Int> isa OTHER */
643 /* <var8:Int> isa OTHER */
644 var11 = 1; /* easy <var8:Int> isa OTHER*/
645 if (unlikely(!var11)) {
646 var_class_name14 = type_kernel__Int.name;
647 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name14);
648 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 331);
649 show_backtrace(1);
650 }
651 var15 = var_cmp - var8;
652 var9 = var15;
653 goto RET_LABEL10;
654 RET_LABEL10:(void)0;
655 }
656 }
657 var_cmp = var9;
658 {
659 var16 = array__Array___91d_93d(self, var_cmp);
660 }
661 {
662 array__Array__add(var_result, var16); /* Direct call array#Array#add on <var_result:Array[nullable Object]>*/
663 }
664 CONTINUE_label: (void)0;
665 }
666 BREAK_label: (void)0;
667 var = var_result;
668 goto RET_LABEL;
669 RET_LABEL:;
670 return var;
671 }
672 /* method array#AbstractArrayRead#reversed for (self: Object): Array[nullable Object] */
673 val* VIRTUAL_array__AbstractArrayRead__reversed(val* self) {
674 val* var /* : Array[nullable Object] */;
675 val* var1 /* : Array[nullable Object] */;
676 var1 = array__AbstractArrayRead__reversed(self);
677 var = var1;
678 RET_LABEL:;
679 return var;
680 }
681 /* method array#AbstractArrayRead#iterator for (self: AbstractArrayRead[nullable Object]): ArrayIterator[nullable Object] */
682 val* array__AbstractArrayRead__iterator(val* self) {
683 val* var /* : ArrayIterator[nullable Object] */;
684 val* var1 /* : ArrayIterator[nullable Object] */;
685 var1 = NEW_array__ArrayIterator(self->type->resolution_table->types[COLOR_array__ArrayIteratorarray__AbstractArrayRead_FT0]);
686 {
687 array__ArrayIterator__init(var1, self); /* Direct call array#ArrayIterator#init on <var1:ArrayIterator[nullable Object]>*/
688 }
689 var = var1;
690 goto RET_LABEL;
691 RET_LABEL:;
692 return var;
693 }
694 /* method array#AbstractArrayRead#iterator for (self: Object): Iterator[nullable Object] */
695 val* VIRTUAL_array__AbstractArrayRead__iterator(val* self) {
696 val* var /* : Iterator[nullable Object] */;
697 val* var1 /* : ArrayIterator[nullable Object] */;
698 var1 = array__AbstractArrayRead__iterator(self);
699 var = var1;
700 RET_LABEL:;
701 return var;
702 }
703 /* method array#AbstractArrayRead#init for (self: AbstractArrayRead[nullable Object]) */
704 void array__AbstractArrayRead__init(val* self) {
705 RET_LABEL:;
706 }
707 /* method array#AbstractArrayRead#init for (self: Object) */
708 void VIRTUAL_array__AbstractArrayRead__init(val* self) {
709 { /* Inline array#AbstractArrayRead#init (self) on <self:Object(AbstractArrayRead[nullable Object])> */
710 RET_LABEL1:(void)0;
711 }
712 RET_LABEL:;
713 }
714 /* method array#AbstractArray#push for (self: AbstractArray[nullable Object], nullable Object) */
715 void array__AbstractArray__push(val* self, val* p0) {
716 short int var /* : Bool */;
717 int cltype;
718 int idtype;
719 const struct type* type_struct;
720 short int is_nullable;
721 const char* var_class_name;
722 val* var_item /* var item: nullable Object */;
723 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa Sequence#0 */
724 /* <p0:nullable Object> isa Sequence#0 */
725 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Sequence_FT0];
726 cltype = type_struct->color;
727 idtype = type_struct->id;
728 is_nullable = type_struct->is_nullable;
729 if(p0 == NULL) {
730 var = is_nullable;
731 } else {
732 if(cltype >= p0->type->table_size) {
733 var = 0;
734 } else {
735 var = p0->type->type_table[cltype] == idtype;
736 }
737 }
738 if (unlikely(!var)) {
739 var_class_name = p0 == NULL ? "null" : p0->type->name;
740 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Sequence#0", var_class_name);
741 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 148);
742 show_backtrace(1);
743 }
744 var_item = p0;
745 {
746 array__Array__add(self, var_item); /* Direct call array#Array#add on <self:AbstractArray[nullable Object]>*/
747 }
748 RET_LABEL:;
749 }
750 /* method array#AbstractArray#push for (self: Object, nullable Object) */
751 void VIRTUAL_array__AbstractArray__push(val* self, val* p0) {
752 array__AbstractArray__push(self, p0); /* Direct call array#AbstractArray#push on <self:Object(AbstractArray[nullable Object])>*/
753 RET_LABEL:;
754 }
755 /* method array#AbstractArray#pop for (self: AbstractArray[nullable Object]): nullable Object */
756 val* array__AbstractArray__pop(val* self) {
757 val* var /* : nullable Object */;
758 short int var1 /* : Bool */;
759 short int var2 /* : Bool */;
760 val* var3 /* : nullable Object */;
761 val* var_r /* var r: nullable Object */;
762 val* var_ /* var : AbstractArray[nullable Object] */;
763 long var4 /* : Int */;
764 long var5 /* : Int */;
765 long var6 /* : Int */;
766 short int var8 /* : Bool */;
767 int cltype;
768 int idtype;
769 const char* var_class_name;
770 long var9 /* : Int */;
771 {
772 var1 = array__AbstractArrayRead__is_empty(self);
773 }
774 var2 = !var1;
775 if (unlikely(!var2)) {
776 PRINT_ERROR("Runtime error: %s", "Assert \'not_empty\' failed");
777 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 152);
778 show_backtrace(1);
779 }
780 {
781 var3 = abstract_collection__SequenceRead__last(self);
782 }
783 var_r = var3;
784 var_ = self;
785 var4 = var_->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_:AbstractArray[nullable Object]> */
786 var5 = 1;
787 {
788 { /* Inline kernel#Int#- (var4,var5) on <var4:Int> */
789 /* Covariant cast for argument 0 (i) <var5:Int> isa OTHER */
790 /* <var5:Int> isa OTHER */
791 var8 = 1; /* easy <var5:Int> isa OTHER*/
792 if (unlikely(!var8)) {
793 var_class_name = type_kernel__Int.name;
794 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
795 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 331);
796 show_backtrace(1);
797 }
798 var9 = var4 - var5;
799 var6 = var9;
800 goto RET_LABEL7;
801 RET_LABEL7:(void)0;
802 }
803 }
804 var_->attrs[COLOR_array__AbstractArrayRead___length].l = var6; /* _length on <var_:AbstractArray[nullable Object]> */
805 var = var_r;
806 goto RET_LABEL;
807 RET_LABEL:;
808 return var;
809 }
810 /* method array#AbstractArray#pop for (self: Object): nullable Object */
811 val* VIRTUAL_array__AbstractArray__pop(val* self) {
812 val* var /* : nullable Object */;
813 val* var1 /* : nullable Object */;
814 var1 = array__AbstractArray__pop(self);
815 var = var1;
816 RET_LABEL:;
817 return var;
818 }
819 /* method array#AbstractArray#shift for (self: AbstractArray[nullable Object]): nullable Object */
820 val* array__AbstractArray__shift(val* self) {
821 val* var /* : nullable Object */;
822 short int var1 /* : Bool */;
823 short int var2 /* : Bool */;
824 val* var3 /* : nullable Object */;
825 val* var_r /* var r: nullable Object */;
826 long var4 /* : Int */;
827 long var_i /* var i: Int */;
828 long var5 /* : Int */;
829 long var_l /* var l: Int */;
830 short int var6 /* : Bool */;
831 short int var8 /* : Bool */;
832 int cltype;
833 int idtype;
834 const char* var_class_name;
835 short int var9 /* : Bool */;
836 long var10 /* : Int */;
837 long var11 /* : Int */;
838 short int var13 /* : Bool */;
839 int cltype14;
840 int idtype15;
841 const char* var_class_name16;
842 long var17 /* : Int */;
843 val* var18 /* : nullable Object */;
844 long var19 /* : Int */;
845 long var20 /* : Int */;
846 short int var22 /* : Bool */;
847 int cltype23;
848 int idtype24;
849 const char* var_class_name25;
850 long var26 /* : Int */;
851 long var27 /* : Int */;
852 long var28 /* : Int */;
853 short int var30 /* : Bool */;
854 int cltype31;
855 int idtype32;
856 const char* var_class_name33;
857 long var34 /* : Int */;
858 {
859 var1 = array__AbstractArrayRead__is_empty(self);
860 }
861 var2 = !var1;
862 if (unlikely(!var2)) {
863 PRINT_ERROR("Runtime error: %s", "Assert \'not_empty\' failed");
864 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 160);
865 show_backtrace(1);
866 }
867 {
868 var3 = abstract_collection__SequenceRead__first(self);
869 }
870 var_r = var3;
871 var4 = 1;
872 var_i = var4;
873 {
874 var5 = array__AbstractArrayRead__length(self);
875 }
876 var_l = var5;
877 for(;;) {
878 {
879 { /* Inline kernel#Int#< (var_i,var_l) on <var_i:Int> */
880 /* Covariant cast for argument 0 (i) <var_l:Int> isa OTHER */
881 /* <var_l:Int> isa OTHER */
882 var8 = 1; /* easy <var_l:Int> isa OTHER*/
883 if (unlikely(!var8)) {
884 var_class_name = type_kernel__Int.name;
885 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
886 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 325);
887 show_backtrace(1);
888 }
889 var9 = var_i < var_l;
890 var6 = var9;
891 goto RET_LABEL7;
892 RET_LABEL7:(void)0;
893 }
894 }
895 if (!var6) break;
896 var10 = 1;
897 {
898 { /* Inline kernel#Int#- (var_i,var10) on <var_i:Int> */
899 /* Covariant cast for argument 0 (i) <var10:Int> isa OTHER */
900 /* <var10:Int> isa OTHER */
901 var13 = 1; /* easy <var10:Int> isa OTHER*/
902 if (unlikely(!var13)) {
903 var_class_name16 = type_kernel__Int.name;
904 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name16);
905 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 331);
906 show_backtrace(1);
907 }
908 var17 = var_i - var10;
909 var11 = var17;
910 goto RET_LABEL12;
911 RET_LABEL12:(void)0;
912 }
913 }
914 {
915 var18 = array__Array___91d_93d(self, var_i);
916 }
917 {
918 array__Array___91d_93d_61d(self, var11, var18); /* Direct call array#Array#[]= on <self:AbstractArray[nullable Object]>*/
919 }
920 var19 = 1;
921 {
922 { /* Inline kernel#Int#+ (var_i,var19) on <var_i:Int> */
923 /* Covariant cast for argument 0 (i) <var19:Int> isa OTHER */
924 /* <var19:Int> isa OTHER */
925 var22 = 1; /* easy <var19:Int> isa OTHER*/
926 if (unlikely(!var22)) {
927 var_class_name25 = type_kernel__Int.name;
928 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name25);
929 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
930 show_backtrace(1);
931 }
932 var26 = var_i + var19;
933 var20 = var26;
934 goto RET_LABEL21;
935 RET_LABEL21:(void)0;
936 }
937 }
938 var_i = var20;
939 CONTINUE_label: (void)0;
940 }
941 BREAK_label: (void)0;
942 var27 = 1;
943 {
944 { /* Inline kernel#Int#- (var_l,var27) on <var_l:Int> */
945 /* Covariant cast for argument 0 (i) <var27:Int> isa OTHER */
946 /* <var27:Int> isa OTHER */
947 var30 = 1; /* easy <var27:Int> isa OTHER*/
948 if (unlikely(!var30)) {
949 var_class_name33 = type_kernel__Int.name;
950 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name33);
951 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 331);
952 show_backtrace(1);
953 }
954 var34 = var_l - var27;
955 var28 = var34;
956 goto RET_LABEL29;
957 RET_LABEL29:(void)0;
958 }
959 }
960 self->attrs[COLOR_array__AbstractArrayRead___length].l = var28; /* _length on <self:AbstractArray[nullable Object]> */
961 var = var_r;
962 goto RET_LABEL;
963 RET_LABEL:;
964 return var;
965 }
966 /* method array#AbstractArray#shift for (self: Object): nullable Object */
967 val* VIRTUAL_array__AbstractArray__shift(val* self) {
968 val* var /* : nullable Object */;
969 val* var1 /* : nullable Object */;
970 var1 = array__AbstractArray__shift(self);
971 var = var1;
972 RET_LABEL:;
973 return var;
974 }
975 /* method array#AbstractArray#unshift for (self: AbstractArray[nullable Object], nullable Object) */
976 void array__AbstractArray__unshift(val* self, val* p0) {
977 short int var /* : Bool */;
978 int cltype;
979 int idtype;
980 const struct type* type_struct;
981 short int is_nullable;
982 const char* var_class_name;
983 val* var_item /* var item: nullable Object */;
984 long var1 /* : Int */;
985 long var2 /* : Int */;
986 long var3 /* : Int */;
987 short int var5 /* : Bool */;
988 int cltype6;
989 int idtype7;
990 const char* var_class_name8;
991 long var9 /* : Int */;
992 long var_i /* var i: Int */;
993 long var10 /* : Int */;
994 short int var11 /* : Bool */;
995 short int var13 /* : Bool */;
996 int cltype14;
997 int idtype15;
998 const char* var_class_name16;
999 short int var17 /* : Bool */;
1000 long var18 /* : Int */;
1001 long var19 /* : Int */;
1002 short int var21 /* : Bool */;
1003 int cltype22;
1004 int idtype23;
1005 const char* var_class_name24;
1006 long var25 /* : Int */;
1007 val* var26 /* : nullable Object */;
1008 long var27 /* : Int */;
1009 long var28 /* : Int */;
1010 short int var30 /* : Bool */;
1011 int cltype31;
1012 int idtype32;
1013 const char* var_class_name33;
1014 long var34 /* : Int */;
1015 long var35 /* : Int */;
1016 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa Sequence#0 */
1017 /* <p0:nullable Object> isa Sequence#0 */
1018 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Sequence_FT0];
1019 cltype = type_struct->color;
1020 idtype = type_struct->id;
1021 is_nullable = type_struct->is_nullable;
1022 if(p0 == NULL) {
1023 var = is_nullable;
1024 } else {
1025 if(cltype >= p0->type->table_size) {
1026 var = 0;
1027 } else {
1028 var = p0->type->type_table[cltype] == idtype;
1029 }
1030 }
1031 if (unlikely(!var)) {
1032 var_class_name = p0 == NULL ? "null" : p0->type->name;
1033 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Sequence#0", var_class_name);
1034 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 172);
1035 show_backtrace(1);
1036 }
1037 var_item = p0;
1038 {
1039 var1 = array__AbstractArrayRead__length(self);
1040 }
1041 var2 = 1;
1042 {
1043 { /* Inline kernel#Int#- (var1,var2) on <var1:Int> */
1044 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
1045 /* <var2:Int> isa OTHER */
1046 var5 = 1; /* easy <var2:Int> isa OTHER*/
1047 if (unlikely(!var5)) {
1048 var_class_name8 = type_kernel__Int.name;
1049 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name8);
1050 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 331);
1051 show_backtrace(1);
1052 }
1053 var9 = var1 - var2;
1054 var3 = var9;
1055 goto RET_LABEL4;
1056 RET_LABEL4:(void)0;
1057 }
1058 }
1059 var_i = var3;
1060 for(;;) {
1061 var10 = 0;
1062 {
1063 { /* Inline kernel#Int#>= (var_i,var10) on <var_i:Int> */
1064 /* Covariant cast for argument 0 (i) <var10:Int> isa OTHER */
1065 /* <var10:Int> isa OTHER */
1066 var13 = 1; /* easy <var10:Int> isa OTHER*/
1067 if (unlikely(!var13)) {
1068 var_class_name16 = type_kernel__Int.name;
1069 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name16);
1070 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 326);
1071 show_backtrace(1);
1072 }
1073 var17 = var_i >= var10;
1074 var11 = var17;
1075 goto RET_LABEL12;
1076 RET_LABEL12:(void)0;
1077 }
1078 }
1079 if (!var11) break;
1080 var18 = 1;
1081 {
1082 { /* Inline kernel#Int#+ (var_i,var18) on <var_i:Int> */
1083 /* Covariant cast for argument 0 (i) <var18:Int> isa OTHER */
1084 /* <var18:Int> isa OTHER */
1085 var21 = 1; /* easy <var18:Int> isa OTHER*/
1086 if (unlikely(!var21)) {
1087 var_class_name24 = type_kernel__Int.name;
1088 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name24);
1089 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
1090 show_backtrace(1);
1091 }
1092 var25 = var_i + var18;
1093 var19 = var25;
1094 goto RET_LABEL20;
1095 RET_LABEL20:(void)0;
1096 }
1097 }
1098 {
1099 var26 = array__Array___91d_93d(self, var_i);
1100 }
1101 {
1102 array__Array___91d_93d_61d(self, var19, var26); /* Direct call array#Array#[]= on <self:AbstractArray[nullable Object]>*/
1103 }
1104 var27 = 1;
1105 {
1106 { /* Inline kernel#Int#- (var_i,var27) on <var_i:Int> */
1107 /* Covariant cast for argument 0 (i) <var27:Int> isa OTHER */
1108 /* <var27:Int> isa OTHER */
1109 var30 = 1; /* easy <var27:Int> isa OTHER*/
1110 if (unlikely(!var30)) {
1111 var_class_name33 = type_kernel__Int.name;
1112 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name33);
1113 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 331);
1114 show_backtrace(1);
1115 }
1116 var34 = var_i - var27;
1117 var28 = var34;
1118 goto RET_LABEL29;
1119 RET_LABEL29:(void)0;
1120 }
1121 }
1122 var_i = var28;
1123 CONTINUE_label: (void)0;
1124 }
1125 BREAK_label: (void)0;
1126 var35 = 0;
1127 {
1128 array__Array___91d_93d_61d(self, var35, var_item); /* Direct call array#Array#[]= on <self:AbstractArray[nullable Object]>*/
1129 }
1130 RET_LABEL:;
1131 }
1132 /* method array#AbstractArray#unshift for (self: Object, nullable Object) */
1133 void VIRTUAL_array__AbstractArray__unshift(val* self, val* p0) {
1134 array__AbstractArray__unshift(self, p0); /* Direct call array#AbstractArray#unshift on <self:Object(AbstractArray[nullable Object])>*/
1135 RET_LABEL:;
1136 }
1137 /* method array#AbstractArray#clear for (self: AbstractArray[nullable Object]) */
1138 void array__AbstractArray__clear(val* self) {
1139 long var /* : Int */;
1140 var = 0;
1141 self->attrs[COLOR_array__AbstractArrayRead___length].l = var; /* _length on <self:AbstractArray[nullable Object]> */
1142 RET_LABEL:;
1143 }
1144 /* method array#AbstractArray#clear for (self: Object) */
1145 void VIRTUAL_array__AbstractArray__clear(val* self) {
1146 array__AbstractArray__clear(self); /* Direct call array#AbstractArray#clear on <self:Object(AbstractArray[nullable Object])>*/
1147 RET_LABEL:;
1148 }
1149 /* method array#AbstractArray#remove for (self: AbstractArray[nullable Object], nullable Object) */
1150 void array__AbstractArray__remove(val* self, val* p0) {
1151 short int var /* : Bool */;
1152 int cltype;
1153 int idtype;
1154 const struct type* type_struct;
1155 short int is_nullable;
1156 const char* var_class_name;
1157 val* var_item /* var item: nullable Object */;
1158 long var1 /* : Int */;
1159 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa RemovableCollection#0 */
1160 /* <p0:nullable Object> isa RemovableCollection#0 */
1161 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__RemovableCollection_FT0];
1162 cltype = type_struct->color;
1163 idtype = type_struct->id;
1164 is_nullable = type_struct->is_nullable;
1165 if(p0 == NULL) {
1166 var = is_nullable;
1167 } else {
1168 if(cltype >= p0->type->table_size) {
1169 var = 0;
1170 } else {
1171 var = p0->type->type_table[cltype] == idtype;
1172 }
1173 }
1174 if (unlikely(!var)) {
1175 var_class_name = p0 == NULL ? "null" : p0->type->name;
1176 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "RemovableCollection#0", var_class_name);
1177 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 193);
1178 show_backtrace(1);
1179 }
1180 var_item = p0;
1181 {
1182 var1 = array__AbstractArrayRead__index_of(self, var_item);
1183 }
1184 {
1185 array__AbstractArray__remove_at(self, var1); /* Direct call array#AbstractArray#remove_at on <self:AbstractArray[nullable Object]>*/
1186 }
1187 RET_LABEL:;
1188 }
1189 /* method array#AbstractArray#remove for (self: Object, nullable Object) */
1190 void VIRTUAL_array__AbstractArray__remove(val* self, val* p0) {
1191 array__AbstractArray__remove(self, p0); /* Direct call array#AbstractArray#remove on <self:Object(AbstractArray[nullable Object])>*/
1192 RET_LABEL:;
1193 }
1194 /* method array#AbstractArray#remove_at for (self: AbstractArray[nullable Object], Int) */
1195 void array__AbstractArray__remove_at(val* self, long p0) {
1196 long var_i /* var i: Int */;
1197 long var /* : Int */;
1198 long var_l /* var l: Int */;
1199 short int var1 /* : Bool */;
1200 long var2 /* : Int */;
1201 short int var3 /* : Bool */;
1202 short int var5 /* : Bool */;
1203 int cltype;
1204 int idtype;
1205 const char* var_class_name;
1206 short int var6 /* : Bool */;
1207 short int var_ /* var : Bool */;
1208 short int var7 /* : Bool */;
1209 short int var9 /* : Bool */;
1210 int cltype10;
1211 int idtype11;
1212 const char* var_class_name12;
1213 short int var13 /* : Bool */;
1214 long var14 /* : Int */;
1215 long var15 /* : Int */;
1216 short int var17 /* : Bool */;
1217 int cltype18;
1218 int idtype19;
1219 const char* var_class_name20;
1220 long var21 /* : Int */;
1221 long var_j /* var j: Int */;
1222 short int var22 /* : Bool */;
1223 short int var24 /* : Bool */;
1224 int cltype25;
1225 int idtype26;
1226 const char* var_class_name27;
1227 short int var28 /* : Bool */;
1228 long var29 /* : Int */;
1229 long var30 /* : Int */;
1230 short int var32 /* : Bool */;
1231 int cltype33;
1232 int idtype34;
1233 const char* var_class_name35;
1234 long var36 /* : Int */;
1235 val* var37 /* : nullable Object */;
1236 long var38 /* : Int */;
1237 long var39 /* : Int */;
1238 short int var41 /* : Bool */;
1239 int cltype42;
1240 int idtype43;
1241 const char* var_class_name44;
1242 long var45 /* : Int */;
1243 long var46 /* : Int */;
1244 long var47 /* : Int */;
1245 short int var49 /* : Bool */;
1246 int cltype50;
1247 int idtype51;
1248 const char* var_class_name52;
1249 long var53 /* : Int */;
1250 var_i = p0;
1251 {
1252 var = array__AbstractArrayRead__length(self);
1253 }
1254 var_l = var;
1255 var2 = 0;
1256 {
1257 { /* Inline kernel#Int#>= (var_i,var2) on <var_i:Int> */
1258 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
1259 /* <var2:Int> isa OTHER */
1260 var5 = 1; /* easy <var2:Int> isa OTHER*/
1261 if (unlikely(!var5)) {
1262 var_class_name = type_kernel__Int.name;
1263 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1264 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 326);
1265 show_backtrace(1);
1266 }
1267 var6 = var_i >= var2;
1268 var3 = var6;
1269 goto RET_LABEL4;
1270 RET_LABEL4:(void)0;
1271 }
1272 }
1273 var_ = var3;
1274 if (var3){
1275 {
1276 { /* Inline kernel#Int#< (var_i,var_l) on <var_i:Int> */
1277 /* Covariant cast for argument 0 (i) <var_l:Int> isa OTHER */
1278 /* <var_l:Int> isa OTHER */
1279 var9 = 1; /* easy <var_l:Int> isa OTHER*/
1280 if (unlikely(!var9)) {
1281 var_class_name12 = type_kernel__Int.name;
1282 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name12);
1283 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 325);
1284 show_backtrace(1);
1285 }
1286 var13 = var_i < var_l;
1287 var7 = var13;
1288 goto RET_LABEL8;
1289 RET_LABEL8:(void)0;
1290 }
1291 }
1292 var1 = var7;
1293 } else {
1294 var1 = var_;
1295 }
1296 if (var1){
1297 var14 = 1;
1298 {
1299 { /* Inline kernel#Int#+ (var_i,var14) on <var_i:Int> */
1300 /* Covariant cast for argument 0 (i) <var14:Int> isa OTHER */
1301 /* <var14:Int> isa OTHER */
1302 var17 = 1; /* easy <var14:Int> isa OTHER*/
1303 if (unlikely(!var17)) {
1304 var_class_name20 = type_kernel__Int.name;
1305 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name20);
1306 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
1307 show_backtrace(1);
1308 }
1309 var21 = var_i + var14;
1310 var15 = var21;
1311 goto RET_LABEL16;
1312 RET_LABEL16:(void)0;
1313 }
1314 }
1315 var_j = var15;
1316 for(;;) {
1317 {
1318 { /* Inline kernel#Int#< (var_j,var_l) on <var_j:Int> */
1319 /* Covariant cast for argument 0 (i) <var_l:Int> isa OTHER */
1320 /* <var_l:Int> isa OTHER */
1321 var24 = 1; /* easy <var_l:Int> isa OTHER*/
1322 if (unlikely(!var24)) {
1323 var_class_name27 = type_kernel__Int.name;
1324 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name27);
1325 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 325);
1326 show_backtrace(1);
1327 }
1328 var28 = var_j < var_l;
1329 var22 = var28;
1330 goto RET_LABEL23;
1331 RET_LABEL23:(void)0;
1332 }
1333 }
1334 if (!var22) break;
1335 var29 = 1;
1336 {
1337 { /* Inline kernel#Int#- (var_j,var29) on <var_j:Int> */
1338 /* Covariant cast for argument 0 (i) <var29:Int> isa OTHER */
1339 /* <var29:Int> isa OTHER */
1340 var32 = 1; /* easy <var29:Int> isa OTHER*/
1341 if (unlikely(!var32)) {
1342 var_class_name35 = type_kernel__Int.name;
1343 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name35);
1344 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 331);
1345 show_backtrace(1);
1346 }
1347 var36 = var_j - var29;
1348 var30 = var36;
1349 goto RET_LABEL31;
1350 RET_LABEL31:(void)0;
1351 }
1352 }
1353 {
1354 var37 = array__Array___91d_93d(self, var_j);
1355 }
1356 {
1357 array__Array___91d_93d_61d(self, var30, var37); /* Direct call array#Array#[]= on <self:AbstractArray[nullable Object]>*/
1358 }
1359 var38 = 1;
1360 {
1361 { /* Inline kernel#Int#+ (var_j,var38) on <var_j:Int> */
1362 /* Covariant cast for argument 0 (i) <var38:Int> isa OTHER */
1363 /* <var38:Int> isa OTHER */
1364 var41 = 1; /* easy <var38:Int> isa OTHER*/
1365 if (unlikely(!var41)) {
1366 var_class_name44 = type_kernel__Int.name;
1367 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name44);
1368 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
1369 show_backtrace(1);
1370 }
1371 var45 = var_j + var38;
1372 var39 = var45;
1373 goto RET_LABEL40;
1374 RET_LABEL40:(void)0;
1375 }
1376 }
1377 var_j = var39;
1378 CONTINUE_label: (void)0;
1379 }
1380 BREAK_label: (void)0;
1381 var46 = 1;
1382 {
1383 { /* Inline kernel#Int#- (var_l,var46) on <var_l:Int> */
1384 /* Covariant cast for argument 0 (i) <var46:Int> isa OTHER */
1385 /* <var46:Int> isa OTHER */
1386 var49 = 1; /* easy <var46:Int> isa OTHER*/
1387 if (unlikely(!var49)) {
1388 var_class_name52 = type_kernel__Int.name;
1389 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name52);
1390 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 331);
1391 show_backtrace(1);
1392 }
1393 var53 = var_l - var46;
1394 var47 = var53;
1395 goto RET_LABEL48;
1396 RET_LABEL48:(void)0;
1397 }
1398 }
1399 self->attrs[COLOR_array__AbstractArrayRead___length].l = var47; /* _length on <self:AbstractArray[nullable Object]> */
1400 } else {
1401 }
1402 RET_LABEL:;
1403 }
1404 /* method array#AbstractArray#remove_at for (self: Object, Int) */
1405 void VIRTUAL_array__AbstractArray__remove_at(val* self, long p0) {
1406 array__AbstractArray__remove_at(self, p0); /* Direct call array#AbstractArray#remove_at on <self:Object(AbstractArray[nullable Object])>*/
1407 RET_LABEL:;
1408 }
1409 /* method array#Array#[] for (self: Array[nullable Object], Int): nullable Object */
1410 val* array__Array___91d_93d(val* self, long p0) {
1411 val* var /* : nullable Object */;
1412 long var_index /* var index: Int */;
1413 short int var1 /* : Bool */;
1414 long var2 /* : Int */;
1415 short int var3 /* : Bool */;
1416 short int var5 /* : Bool */;
1417 int cltype;
1418 int idtype;
1419 const char* var_class_name;
1420 short int var6 /* : Bool */;
1421 short int var_ /* var : Bool */;
1422 long var7 /* : Int */;
1423 short int var8 /* : Bool */;
1424 short int var10 /* : Bool */;
1425 int cltype11;
1426 int idtype12;
1427 const char* var_class_name13;
1428 short int var14 /* : Bool */;
1429 val* var15 /* : nullable NativeArray[nullable Object] */;
1430 val* var16 /* : nullable Object */;
1431 val* var18 /* : nullable Object */;
1432 var_index = p0;
1433 var2 = 0;
1434 {
1435 { /* Inline kernel#Int#>= (var_index,var2) on <var_index:Int> */
1436 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
1437 /* <var2:Int> isa OTHER */
1438 var5 = 1; /* easy <var2:Int> isa OTHER*/
1439 if (unlikely(!var5)) {
1440 var_class_name = type_kernel__Int.name;
1441 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1442 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 326);
1443 show_backtrace(1);
1444 }
1445 var6 = var_index >= var2;
1446 var3 = var6;
1447 goto RET_LABEL4;
1448 RET_LABEL4:(void)0;
1449 }
1450 }
1451 var_ = var3;
1452 if (var3){
1453 var7 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:Array[nullable Object]> */
1454 {
1455 { /* Inline kernel#Int#< (var_index,var7) on <var_index:Int> */
1456 /* Covariant cast for argument 0 (i) <var7:Int> isa OTHER */
1457 /* <var7:Int> isa OTHER */
1458 var10 = 1; /* easy <var7:Int> isa OTHER*/
1459 if (unlikely(!var10)) {
1460 var_class_name13 = type_kernel__Int.name;
1461 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
1462 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 325);
1463 show_backtrace(1);
1464 }
1465 var14 = var_index < var7;
1466 var8 = var14;
1467 goto RET_LABEL9;
1468 RET_LABEL9:(void)0;
1469 }
1470 }
1471 var1 = var8;
1472 } else {
1473 var1 = var_;
1474 }
1475 if (unlikely(!var1)) {
1476 PRINT_ERROR("Runtime error: %s", "Assert \'index\' failed");
1477 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 246);
1478 show_backtrace(1);
1479 }
1480 var15 = self->attrs[COLOR_array__Array___items].val; /* _items on <self:Array[nullable Object]> */
1481 if (var15 == NULL) {
1482 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1483 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 247);
1484 show_backtrace(1);
1485 } else {
1486 { /* Inline array#NativeArray#[] (var15,var_index) on <var15:nullable NativeArray[nullable Object]> */
1487 var18 = ((struct instance_array__NativeArray*)var15)->values[var_index];
1488 var16 = var18;
1489 goto RET_LABEL17;
1490 RET_LABEL17:(void)0;
1491 }
1492 }
1493 var = var16;
1494 goto RET_LABEL;
1495 RET_LABEL:;
1496 return var;
1497 }
1498 /* method array#Array#[] for (self: Object, Int): nullable Object */
1499 val* VIRTUAL_array__Array___91d_93d(val* self, long p0) {
1500 val* var /* : nullable Object */;
1501 val* var1 /* : nullable Object */;
1502 var1 = array__Array___91d_93d(self, p0);
1503 var = var1;
1504 RET_LABEL:;
1505 return var;
1506 }
1507 /* method array#Array#[]= for (self: Array[nullable Object], Int, nullable Object) */
1508 void array__Array___91d_93d_61d(val* self, long p0, val* p1) {
1509 short int var /* : Bool */;
1510 int cltype;
1511 int idtype;
1512 const struct type* type_struct;
1513 short int is_nullable;
1514 const char* var_class_name;
1515 long var_index /* var index: Int */;
1516 val* var_item /* var item: nullable Object */;
1517 short int var1 /* : Bool */;
1518 long var2 /* : Int */;
1519 short int var3 /* : Bool */;
1520 short int var5 /* : Bool */;
1521 int cltype6;
1522 int idtype7;
1523 const char* var_class_name8;
1524 short int var9 /* : Bool */;
1525 short int var_ /* var : Bool */;
1526 long var10 /* : Int */;
1527 long var11 /* : Int */;
1528 long var12 /* : Int */;
1529 short int var14 /* : Bool */;
1530 int cltype15;
1531 int idtype16;
1532 const char* var_class_name17;
1533 long var18 /* : Int */;
1534 short int var19 /* : Bool */;
1535 short int var21 /* : Bool */;
1536 int cltype22;
1537 int idtype23;
1538 const char* var_class_name24;
1539 short int var25 /* : Bool */;
1540 long var26 /* : Int */;
1541 short int var27 /* : Bool */;
1542 short int var29 /* : Bool */;
1543 int cltype30;
1544 int idtype31;
1545 const char* var_class_name32;
1546 short int var33 /* : Bool */;
1547 long var34 /* : Int */;
1548 long var35 /* : Int */;
1549 short int var37 /* : Bool */;
1550 int cltype38;
1551 int idtype39;
1552 const char* var_class_name40;
1553 long var41 /* : Int */;
1554 long var42 /* : Int */;
1555 short int var43 /* : Bool */;
1556 short int var45 /* : Bool */;
1557 int cltype46;
1558 int idtype47;
1559 const char* var_class_name48;
1560 short int var49 /* : Bool */;
1561 long var50 /* : Int */;
1562 long var51 /* : Int */;
1563 short int var53 /* : Bool */;
1564 int cltype54;
1565 int idtype55;
1566 const char* var_class_name56;
1567 long var57 /* : Int */;
1568 val* var58 /* : nullable NativeArray[nullable Object] */;
1569 short int var60 /* : Bool */;
1570 int cltype61;
1571 int idtype62;
1572 const struct type* type_struct63;
1573 short int is_nullable64;
1574 const char* var_class_name65;
1575 /* Covariant cast for argument 1 (item) <p1:nullable Object> isa Sequence#0 */
1576 /* <p1:nullable Object> isa Sequence#0 */
1577 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Sequence_FT0];
1578 cltype = type_struct->color;
1579 idtype = type_struct->id;
1580 is_nullable = type_struct->is_nullable;
1581 if(p1 == NULL) {
1582 var = is_nullable;
1583 } else {
1584 if(cltype >= p1->type->table_size) {
1585 var = 0;
1586 } else {
1587 var = p1->type->type_table[cltype] == idtype;
1588 }
1589 }
1590 if (unlikely(!var)) {
1591 var_class_name = p1 == NULL ? "null" : p1->type->name;
1592 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Sequence#0", var_class_name);
1593 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 250);
1594 show_backtrace(1);
1595 }
1596 var_index = p0;
1597 var_item = p1;
1598 var2 = 0;
1599 {
1600 { /* Inline kernel#Int#>= (var_index,var2) on <var_index:Int> */
1601 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
1602 /* <var2:Int> isa OTHER */
1603 var5 = 1; /* easy <var2:Int> isa OTHER*/
1604 if (unlikely(!var5)) {
1605 var_class_name8 = type_kernel__Int.name;
1606 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name8);
1607 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 326);
1608 show_backtrace(1);
1609 }
1610 var9 = var_index >= var2;
1611 var3 = var9;
1612 goto RET_LABEL4;
1613 RET_LABEL4:(void)0;
1614 }
1615 }
1616 var_ = var3;
1617 if (var3){
1618 var10 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:Array[nullable Object]> */
1619 var11 = 1;
1620 {
1621 { /* Inline kernel#Int#+ (var10,var11) on <var10:Int> */
1622 /* Covariant cast for argument 0 (i) <var11:Int> isa OTHER */
1623 /* <var11:Int> isa OTHER */
1624 var14 = 1; /* easy <var11:Int> isa OTHER*/
1625 if (unlikely(!var14)) {
1626 var_class_name17 = type_kernel__Int.name;
1627 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name17);
1628 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
1629 show_backtrace(1);
1630 }
1631 var18 = var10 + var11;
1632 var12 = var18;
1633 goto RET_LABEL13;
1634 RET_LABEL13:(void)0;
1635 }
1636 }
1637 {
1638 { /* Inline kernel#Int#< (var_index,var12) on <var_index:Int> */
1639 /* Covariant cast for argument 0 (i) <var12:Int> isa OTHER */
1640 /* <var12:Int> isa OTHER */
1641 var21 = 1; /* easy <var12:Int> isa OTHER*/
1642 if (unlikely(!var21)) {
1643 var_class_name24 = type_kernel__Int.name;
1644 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name24);
1645 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 325);
1646 show_backtrace(1);
1647 }
1648 var25 = var_index < var12;
1649 var19 = var25;
1650 goto RET_LABEL20;
1651 RET_LABEL20:(void)0;
1652 }
1653 }
1654 var1 = var19;
1655 } else {
1656 var1 = var_;
1657 }
1658 if (unlikely(!var1)) {
1659 PRINT_ERROR("Runtime error: %s", "Assert \'index\' failed");
1660 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 252);
1661 show_backtrace(1);
1662 }
1663 var26 = self->attrs[COLOR_array__Array___capacity].l; /* _capacity on <self:Array[nullable Object]> */
1664 {
1665 { /* Inline kernel#Int#<= (var26,var_index) on <var26:Int> */
1666 /* Covariant cast for argument 0 (i) <var_index:Int> isa OTHER */
1667 /* <var_index:Int> isa OTHER */
1668 var29 = 1; /* easy <var_index:Int> isa OTHER*/
1669 if (unlikely(!var29)) {
1670 var_class_name32 = type_kernel__Int.name;
1671 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name32);
1672 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 324);
1673 show_backtrace(1);
1674 }
1675 var33 = var26 <= var_index;
1676 var27 = var33;
1677 goto RET_LABEL28;
1678 RET_LABEL28:(void)0;
1679 }
1680 }
1681 if (var27){
1682 var34 = 1;
1683 {
1684 { /* Inline kernel#Int#+ (var_index,var34) on <var_index:Int> */
1685 /* Covariant cast for argument 0 (i) <var34:Int> isa OTHER */
1686 /* <var34:Int> isa OTHER */
1687 var37 = 1; /* easy <var34:Int> isa OTHER*/
1688 if (unlikely(!var37)) {
1689 var_class_name40 = type_kernel__Int.name;
1690 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name40);
1691 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
1692 show_backtrace(1);
1693 }
1694 var41 = var_index + var34;
1695 var35 = var41;
1696 goto RET_LABEL36;
1697 RET_LABEL36:(void)0;
1698 }
1699 }
1700 {
1701 array__Array__enlarge(self, var35); /* Direct call array#Array#enlarge on <self:Array[nullable Object]>*/
1702 }
1703 } else {
1704 }
1705 var42 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:Array[nullable Object]> */
1706 {
1707 { /* Inline kernel#Int#<= (var42,var_index) on <var42:Int> */
1708 /* Covariant cast for argument 0 (i) <var_index:Int> isa OTHER */
1709 /* <var_index:Int> isa OTHER */
1710 var45 = 1; /* easy <var_index:Int> isa OTHER*/
1711 if (unlikely(!var45)) {
1712 var_class_name48 = type_kernel__Int.name;
1713 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name48);
1714 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 324);
1715 show_backtrace(1);
1716 }
1717 var49 = var42 <= var_index;
1718 var43 = var49;
1719 goto RET_LABEL44;
1720 RET_LABEL44:(void)0;
1721 }
1722 }
1723 if (var43){
1724 var50 = 1;
1725 {
1726 { /* Inline kernel#Int#+ (var_index,var50) on <var_index:Int> */
1727 /* Covariant cast for argument 0 (i) <var50:Int> isa OTHER */
1728 /* <var50:Int> isa OTHER */
1729 var53 = 1; /* easy <var50:Int> isa OTHER*/
1730 if (unlikely(!var53)) {
1731 var_class_name56 = type_kernel__Int.name;
1732 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name56);
1733 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
1734 show_backtrace(1);
1735 }
1736 var57 = var_index + var50;
1737 var51 = var57;
1738 goto RET_LABEL52;
1739 RET_LABEL52:(void)0;
1740 }
1741 }
1742 self->attrs[COLOR_array__AbstractArrayRead___length].l = var51; /* _length on <self:Array[nullable Object]> */
1743 } else {
1744 }
1745 var58 = self->attrs[COLOR_array__Array___items].val; /* _items on <self:Array[nullable Object]> */
1746 if (var58 == NULL) {
1747 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1748 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 259);
1749 show_backtrace(1);
1750 } else {
1751 { /* Inline array#NativeArray#[]= (var58,var_index,var_item) on <var58:nullable NativeArray[nullable Object]> */
1752 /* Covariant cast for argument 1 (item) <var_item:nullable Object> isa NativeArray#0 */
1753 /* <var_item:nullable Object> isa NativeArray#0 */
1754 type_struct63 = var58->type->resolution_table->types[COLOR_array__NativeArray_FT0];
1755 cltype61 = type_struct63->color;
1756 idtype62 = type_struct63->id;
1757 is_nullable64 = type_struct63->is_nullable;
1758 if(var_item == NULL) {
1759 var60 = is_nullable64;
1760 } else {
1761 if(cltype61 >= var_item->type->table_size) {
1762 var60 = 0;
1763 } else {
1764 var60 = var_item->type->type_table[cltype61] == idtype62;
1765 }
1766 }
1767 if (unlikely(!var60)) {
1768 var_class_name65 = var_item == NULL ? "null" : var_item->type->name;
1769 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "NativeArray#0", var_class_name65);
1770 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 662);
1771 show_backtrace(1);
1772 }
1773 ((struct instance_array__NativeArray*)var58)->values[var_index]=var_item;
1774 RET_LABEL59:(void)0;
1775 }
1776 }
1777 RET_LABEL:;
1778 }
1779 /* method array#Array#[]= for (self: Object, Int, nullable Object) */
1780 void VIRTUAL_array__Array___91d_93d_61d(val* self, long p0, val* p1) {
1781 array__Array___91d_93d_61d(self, p0, p1); /* Direct call array#Array#[]= on <self:Object(Array[nullable Object])>*/
1782 RET_LABEL:;
1783 }
1784 /* method array#Array#add for (self: Array[nullable Object], nullable Object) */
1785 void array__Array__add(val* self, val* p0) {
1786 short int var /* : Bool */;
1787 int cltype;
1788 int idtype;
1789 const struct type* type_struct;
1790 short int is_nullable;
1791 const char* var_class_name;
1792 val* var_item /* var item: nullable Object */;
1793 long var1 /* : Int */;
1794 long var_l /* var l: Int */;
1795 long var2 /* : Int */;
1796 short int var3 /* : Bool */;
1797 short int var5 /* : Bool */;
1798 int cltype6;
1799 int idtype7;
1800 const char* var_class_name8;
1801 short int var9 /* : Bool */;
1802 long var10 /* : Int */;
1803 long var11 /* : Int */;
1804 short int var13 /* : Bool */;
1805 int cltype14;
1806 int idtype15;
1807 const char* var_class_name16;
1808 long var17 /* : Int */;
1809 long var18 /* : Int */;
1810 long var19 /* : Int */;
1811 short int var21 /* : Bool */;
1812 int cltype22;
1813 int idtype23;
1814 const char* var_class_name24;
1815 long var25 /* : Int */;
1816 val* var26 /* : nullable NativeArray[nullable Object] */;
1817 short int var28 /* : Bool */;
1818 int cltype29;
1819 int idtype30;
1820 const struct type* type_struct31;
1821 short int is_nullable32;
1822 const char* var_class_name33;
1823 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa SimpleCollection#0 */
1824 /* <p0:nullable Object> isa SimpleCollection#0 */
1825 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__SimpleCollection_FT0];
1826 cltype = type_struct->color;
1827 idtype = type_struct->id;
1828 is_nullable = type_struct->is_nullable;
1829 if(p0 == NULL) {
1830 var = is_nullable;
1831 } else {
1832 if(cltype >= p0->type->table_size) {
1833 var = 0;
1834 } else {
1835 var = p0->type->type_table[cltype] == idtype;
1836 }
1837 }
1838 if (unlikely(!var)) {
1839 var_class_name = p0 == NULL ? "null" : p0->type->name;
1840 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "SimpleCollection#0", var_class_name);
1841 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 262);
1842 show_backtrace(1);
1843 }
1844 var_item = p0;
1845 var1 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:Array[nullable Object]> */
1846 var_l = var1;
1847 var2 = self->attrs[COLOR_array__Array___capacity].l; /* _capacity on <self:Array[nullable Object]> */
1848 {
1849 { /* Inline kernel#Int#<= (var2,var_l) on <var2:Int> */
1850 /* Covariant cast for argument 0 (i) <var_l:Int> isa OTHER */
1851 /* <var_l:Int> isa OTHER */
1852 var5 = 1; /* easy <var_l:Int> isa OTHER*/
1853 if (unlikely(!var5)) {
1854 var_class_name8 = type_kernel__Int.name;
1855 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name8);
1856 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 324);
1857 show_backtrace(1);
1858 }
1859 var9 = var2 <= var_l;
1860 var3 = var9;
1861 goto RET_LABEL4;
1862 RET_LABEL4:(void)0;
1863 }
1864 }
1865 if (var3){
1866 var10 = 1;
1867 {
1868 { /* Inline kernel#Int#+ (var_l,var10) on <var_l:Int> */
1869 /* Covariant cast for argument 0 (i) <var10:Int> isa OTHER */
1870 /* <var10:Int> isa OTHER */
1871 var13 = 1; /* easy <var10:Int> isa OTHER*/
1872 if (unlikely(!var13)) {
1873 var_class_name16 = type_kernel__Int.name;
1874 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name16);
1875 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
1876 show_backtrace(1);
1877 }
1878 var17 = var_l + var10;
1879 var11 = var17;
1880 goto RET_LABEL12;
1881 RET_LABEL12:(void)0;
1882 }
1883 }
1884 {
1885 array__Array__enlarge(self, var11); /* Direct call array#Array#enlarge on <self:Array[nullable Object]>*/
1886 }
1887 } else {
1888 }
1889 var18 = 1;
1890 {
1891 { /* Inline kernel#Int#+ (var_l,var18) on <var_l:Int> */
1892 /* Covariant cast for argument 0 (i) <var18:Int> isa OTHER */
1893 /* <var18:Int> isa OTHER */
1894 var21 = 1; /* easy <var18:Int> isa OTHER*/
1895 if (unlikely(!var21)) {
1896 var_class_name24 = type_kernel__Int.name;
1897 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name24);
1898 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
1899 show_backtrace(1);
1900 }
1901 var25 = var_l + var18;
1902 var19 = var25;
1903 goto RET_LABEL20;
1904 RET_LABEL20:(void)0;
1905 }
1906 }
1907 self->attrs[COLOR_array__AbstractArrayRead___length].l = var19; /* _length on <self:Array[nullable Object]> */
1908 var26 = self->attrs[COLOR_array__Array___items].val; /* _items on <self:Array[nullable Object]> */
1909 if (var26 == NULL) {
1910 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1911 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 269);
1912 show_backtrace(1);
1913 } else {
1914 { /* Inline array#NativeArray#[]= (var26,var_l,var_item) on <var26:nullable NativeArray[nullable Object]> */
1915 /* Covariant cast for argument 1 (item) <var_item:nullable Object> isa NativeArray#0 */
1916 /* <var_item:nullable Object> isa NativeArray#0 */
1917 type_struct31 = var26->type->resolution_table->types[COLOR_array__NativeArray_FT0];
1918 cltype29 = type_struct31->color;
1919 idtype30 = type_struct31->id;
1920 is_nullable32 = type_struct31->is_nullable;
1921 if(var_item == NULL) {
1922 var28 = is_nullable32;
1923 } else {
1924 if(cltype29 >= var_item->type->table_size) {
1925 var28 = 0;
1926 } else {
1927 var28 = var_item->type->type_table[cltype29] == idtype30;
1928 }
1929 }
1930 if (unlikely(!var28)) {
1931 var_class_name33 = var_item == NULL ? "null" : var_item->type->name;
1932 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "NativeArray#0", var_class_name33);
1933 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 662);
1934 show_backtrace(1);
1935 }
1936 ((struct instance_array__NativeArray*)var26)->values[var_l]=var_item;
1937 RET_LABEL27:(void)0;
1938 }
1939 }
1940 RET_LABEL:;
1941 }
1942 /* method array#Array#add for (self: Object, nullable Object) */
1943 void VIRTUAL_array__Array__add(val* self, val* p0) {
1944 array__Array__add(self, p0); /* Direct call array#Array#add on <self:Object(Array[nullable Object])>*/
1945 RET_LABEL:;
1946 }
1947 /* method array#Array#enlarge for (self: Array[nullable Object], Int) */
1948 void array__Array__enlarge(val* self, long p0) {
1949 long var_cap /* var cap: Int */;
1950 long var /* : Int */;
1951 long var_c /* var c: Int */;
1952 short int var1 /* : Bool */;
1953 short int var3 /* : Bool */;
1954 int cltype;
1955 int idtype;
1956 const char* var_class_name;
1957 short int var4 /* : Bool */;
1958 short int var5 /* : Bool */;
1959 short int var7 /* : Bool */;
1960 int cltype8;
1961 int idtype9;
1962 const char* var_class_name10;
1963 short int var11 /* : Bool */;
1964 long var12 /* : Int */;
1965 long var13 /* : Int */;
1966 short int var15 /* : Bool */;
1967 int cltype16;
1968 int idtype17;
1969 const char* var_class_name18;
1970 long var19 /* : Int */;
1971 long var20 /* : Int */;
1972 long var21 /* : Int */;
1973 short int var23 /* : Bool */;
1974 int cltype24;
1975 int idtype25;
1976 const char* var_class_name26;
1977 long var27 /* : Int */;
1978 val* var28 /* : NativeArray[nullable Object] */;
1979 val* var30 /* : NativeArray[nullable Object] */;
1980 val* var_a /* var a: NativeArray[nullable Object] */;
1981 long var31 /* : Int */;
1982 long var32 /* : Int */;
1983 short int var33 /* : Bool */;
1984 short int var35 /* : Bool */;
1985 int cltype36;
1986 int idtype37;
1987 const char* var_class_name38;
1988 short int var39 /* : Bool */;
1989 val* var40 /* : nullable NativeArray[nullable Object] */;
1990 long var41 /* : Int */;
1991 short int var43 /* : Bool */;
1992 int cltype44;
1993 int idtype45;
1994 const struct type* type_struct;
1995 const char* var_class_name46;
1996 var_cap = p0;
1997 var = self->attrs[COLOR_array__Array___capacity].l; /* _capacity on <self:Array[nullable Object]> */
1998 var_c = var;
1999 {
2000 { /* Inline kernel#Int#<= (var_cap,var_c) on <var_cap:Int> */
2001 /* Covariant cast for argument 0 (i) <var_c:Int> isa OTHER */
2002 /* <var_c:Int> isa OTHER */
2003 var3 = 1; /* easy <var_c:Int> isa OTHER*/
2004 if (unlikely(!var3)) {
2005 var_class_name = type_kernel__Int.name;
2006 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2007 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 324);
2008 show_backtrace(1);
2009 }
2010 var4 = var_cap <= var_c;
2011 var1 = var4;
2012 goto RET_LABEL2;
2013 RET_LABEL2:(void)0;
2014 }
2015 }
2016 if (var1){
2017 goto RET_LABEL;
2018 } else {
2019 }
2020 for(;;) {
2021 {
2022 { /* Inline kernel#Int#<= (var_c,var_cap) on <var_c:Int> */
2023 /* Covariant cast for argument 0 (i) <var_cap:Int> isa OTHER */
2024 /* <var_cap:Int> isa OTHER */
2025 var7 = 1; /* easy <var_cap:Int> isa OTHER*/
2026 if (unlikely(!var7)) {
2027 var_class_name10 = type_kernel__Int.name;
2028 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name10);
2029 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 324);
2030 show_backtrace(1);
2031 }
2032 var11 = var_c <= var_cap;
2033 var5 = var11;
2034 goto RET_LABEL6;
2035 RET_LABEL6:(void)0;
2036 }
2037 }
2038 if (!var5) break;
2039 var12 = 2;
2040 {
2041 { /* Inline kernel#Int#* (var_c,var12) on <var_c:Int> */
2042 /* Covariant cast for argument 0 (i) <var12:Int> isa OTHER */
2043 /* <var12:Int> isa OTHER */
2044 var15 = 1; /* easy <var12:Int> isa OTHER*/
2045 if (unlikely(!var15)) {
2046 var_class_name18 = type_kernel__Int.name;
2047 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name18);
2048 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 332);
2049 show_backtrace(1);
2050 }
2051 var19 = var_c * var12;
2052 var13 = var19;
2053 goto RET_LABEL14;
2054 RET_LABEL14:(void)0;
2055 }
2056 }
2057 var20 = 2;
2058 {
2059 { /* Inline kernel#Int#+ (var13,var20) on <var13:Int> */
2060 /* Covariant cast for argument 0 (i) <var20:Int> isa OTHER */
2061 /* <var20:Int> isa OTHER */
2062 var23 = 1; /* easy <var20:Int> isa OTHER*/
2063 if (unlikely(!var23)) {
2064 var_class_name26 = type_kernel__Int.name;
2065 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name26);
2066 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
2067 show_backtrace(1);
2068 }
2069 var27 = var13 + var20;
2070 var21 = var27;
2071 goto RET_LABEL22;
2072 RET_LABEL22:(void)0;
2073 }
2074 }
2075 var_c = var21;
2076 CONTINUE_label: (void)0;
2077 }
2078 BREAK_label: (void)0;
2079 {
2080 { /* Inline array#ArrayCapable#calloc_array (self,var_c) on <self:Array[nullable Object]> */
2081 var30 = NEW_array__NativeArray(var_c, self->type->resolution_table->types[COLOR_array__NativeArrayarray__ArrayCapable_FT0]);
2082 var28 = var30;
2083 goto RET_LABEL29;
2084 RET_LABEL29:(void)0;
2085 }
2086 }
2087 var_a = var28;
2088 var31 = self->attrs[COLOR_array__Array___capacity].l; /* _capacity on <self:Array[nullable Object]> */
2089 var32 = 0;
2090 {
2091 { /* Inline kernel#Int#> (var31,var32) on <var31:Int> */
2092 /* Covariant cast for argument 0 (i) <var32:Int> isa OTHER */
2093 /* <var32:Int> isa OTHER */
2094 var35 = 1; /* easy <var32:Int> isa OTHER*/
2095 if (unlikely(!var35)) {
2096 var_class_name38 = type_kernel__Int.name;
2097 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name38);
2098 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 327);
2099 show_backtrace(1);
2100 }
2101 var39 = var31 > var32;
2102 var33 = var39;
2103 goto RET_LABEL34;
2104 RET_LABEL34:(void)0;
2105 }
2106 }
2107 if (var33){
2108 var40 = self->attrs[COLOR_array__Array___items].val; /* _items on <self:Array[nullable Object]> */
2109 var41 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:Array[nullable Object]> */
2110 if (var40 == NULL) {
2111 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2112 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 278);
2113 show_backtrace(1);
2114 } else {
2115 { /* Inline array#NativeArray#copy_to (var40,var_a,var41) on <var40:nullable NativeArray[nullable Object]> */
2116 /* Covariant cast for argument 0 (dest) <var_a:NativeArray[nullable Object]> isa NativeArray[NativeArray#0] */
2117 /* <var_a:NativeArray[nullable Object]> isa NativeArray[NativeArray#0] */
2118 type_struct = var40->type->resolution_table->types[COLOR_array__NativeArrayarray__NativeArray_FT0];
2119 cltype44 = type_struct->color;
2120 idtype45 = type_struct->id;
2121 if(cltype44 >= var_a->type->table_size) {
2122 var43 = 0;
2123 } else {
2124 var43 = var_a->type->type_table[cltype44] == idtype45;
2125 }
2126 if (unlikely(!var43)) {
2127 var_class_name46 = var_a == NULL ? "null" : var_a->type->name;
2128 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "NativeArray[NativeArray#0]", var_class_name46);
2129 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 663);
2130 show_backtrace(1);
2131 }
2132 memcpy(((struct instance_array__NativeArray*)var_a)->values, ((struct instance_array__NativeArray*)var40)->values, var41*sizeof(val*));
2133 RET_LABEL42:(void)0;
2134 }
2135 }
2136 } else {
2137 }
2138 self->attrs[COLOR_array__Array___items].val = var_a; /* _items on <self:Array[nullable Object]> */
2139 self->attrs[COLOR_array__Array___capacity].l = var_c; /* _capacity on <self:Array[nullable Object]> */
2140 RET_LABEL:;
2141 }
2142 /* method array#Array#enlarge for (self: Object, Int) */
2143 void VIRTUAL_array__Array__enlarge(val* self, long p0) {
2144 array__Array__enlarge(self, p0); /* Direct call array#Array#enlarge on <self:Object(Array[nullable Object])>*/
2145 RET_LABEL:;
2146 }
2147 /* method array#Array#init for (self: Array[nullable Object]) */
2148 void array__Array__init(val* self) {
2149 long var /* : Int */;
2150 long var2 /* : Int */;
2151 {
2152 { /* Inline array#AbstractArrayRead#init (self) on <self:Array[nullable Object]> */
2153 RET_LABEL1:(void)0;
2154 }
2155 }
2156 var = 0;
2157 self->attrs[COLOR_array__Array___capacity].l = var; /* _capacity on <self:Array[nullable Object]> */
2158 var2 = 0;
2159 self->attrs[COLOR_array__AbstractArrayRead___length].l = var2; /* _length on <self:Array[nullable Object]> */
2160 RET_LABEL:;
2161 }
2162 /* method array#Array#init for (self: Object) */
2163 void VIRTUAL_array__Array__init(val* self) {
2164 array__Array__init(self); /* Direct call array#Array#init on <self:Object(Array[nullable Object])>*/
2165 RET_LABEL:;
2166 }
2167 /* method array#Array#with_items for (self: Array[nullable Object], Array[nullable Object]) */
2168 void array__Array__with_items(val* self, val* p0) {
2169 val* var_objects /* var objects: Array[nullable Object] */;
2170 val* var /* : nullable NativeArray[nullable Object] */;
2171 long var2 /* : Int */;
2172 long var3 /* : Int */;
2173 {
2174 { /* Inline array#AbstractArrayRead#init (self) on <self:Array[nullable Object]> */
2175 RET_LABEL1:(void)0;
2176 }
2177 }
2178 var_objects = p0;
2179 var = var_objects->attrs[COLOR_array__Array___items].val; /* _items on <var_objects:Array[nullable Object]> */
2180 self->attrs[COLOR_array__Array___items].val = var; /* _items on <self:Array[nullable Object]> */
2181 var2 = var_objects->attrs[COLOR_array__Array___capacity].l; /* _capacity on <var_objects:Array[nullable Object]> */
2182 self->attrs[COLOR_array__Array___capacity].l = var2; /* _capacity on <self:Array[nullable Object]> */
2183 {
2184 var3 = array__AbstractArrayRead__length(var_objects);
2185 }
2186 self->attrs[COLOR_array__AbstractArrayRead___length].l = var3; /* _length on <self:Array[nullable Object]> */
2187 RET_LABEL:;
2188 }
2189 /* method array#Array#with_items for (self: Object, Array[nullable Object]) */
2190 void VIRTUAL_array__Array__with_items(val* self, val* p0) {
2191 array__Array__with_items(self, p0); /* Direct call array#Array#with_items on <self:Object(Array[nullable Object])>*/
2192 RET_LABEL:;
2193 }
2194 /* method array#Array#with_capacity for (self: Array[nullable Object], Int) */
2195 void array__Array__with_capacity(val* self, long p0) {
2196 long var_cap /* var cap: Int */;
2197 long var /* : Int */;
2198 short int var2 /* : Bool */;
2199 short int var4 /* : Bool */;
2200 int cltype;
2201 int idtype;
2202 const char* var_class_name;
2203 short int var5 /* : Bool */;
2204 val* var6 /* : NativeArray[nullable Object] */;
2205 val* var8 /* : NativeArray[nullable Object] */;
2206 long var9 /* : Int */;
2207 {
2208 { /* Inline array#AbstractArrayRead#init (self) on <self:Array[nullable Object]> */
2209 RET_LABEL1:(void)0;
2210 }
2211 }
2212 var_cap = p0;
2213 var = 0;
2214 {
2215 { /* Inline kernel#Int#>= (var_cap,var) on <var_cap:Int> */
2216 /* Covariant cast for argument 0 (i) <var:Int> isa OTHER */
2217 /* <var:Int> isa OTHER */
2218 var4 = 1; /* easy <var:Int> isa OTHER*/
2219 if (unlikely(!var4)) {
2220 var_class_name = type_kernel__Int.name;
2221 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2222 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 326);
2223 show_backtrace(1);
2224 }
2225 var5 = var_cap >= var;
2226 var2 = var5;
2227 goto RET_LABEL3;
2228 RET_LABEL3:(void)0;
2229 }
2230 }
2231 if (unlikely(!var2)) {
2232 PRINT_ERROR("Runtime error: %s", "Assert \'positive\' failed");
2233 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 307);
2234 show_backtrace(1);
2235 }
2236 {
2237 { /* Inline array#ArrayCapable#calloc_array (self,var_cap) on <self:Array[nullable Object]> */
2238 var8 = NEW_array__NativeArray(var_cap, self->type->resolution_table->types[COLOR_array__NativeArrayarray__ArrayCapable_FT0]);
2239 var6 = var8;
2240 goto RET_LABEL7;
2241 RET_LABEL7:(void)0;
2242 }
2243 }
2244 self->attrs[COLOR_array__Array___items].val = var6; /* _items on <self:Array[nullable Object]> */
2245 self->attrs[COLOR_array__Array___capacity].l = var_cap; /* _capacity on <self:Array[nullable Object]> */
2246 var9 = 0;
2247 self->attrs[COLOR_array__AbstractArrayRead___length].l = var9; /* _length on <self:Array[nullable Object]> */
2248 RET_LABEL:;
2249 }
2250 /* method array#Array#with_capacity for (self: Object, Int) */
2251 void VIRTUAL_array__Array__with_capacity(val* self, long p0) {
2252 array__Array__with_capacity(self, p0); /* Direct call array#Array#with_capacity on <self:Object(Array[nullable Object])>*/
2253 RET_LABEL:;
2254 }
2255 /* method array#Array#with_native for (self: Array[nullable Object], NativeArray[nullable Object], Int) */
2256 void array__Array__with_native(val* self, val* p0, long p1) {
2257 short int var /* : Bool */;
2258 int cltype;
2259 int idtype;
2260 const struct type* type_struct;
2261 const char* var_class_name;
2262 val* var_nat /* var nat: NativeArray[nullable Object] */;
2263 long var_size /* var size: Int */;
2264 long var2 /* : Int */;
2265 short int var3 /* : Bool */;
2266 short int var5 /* : Bool */;
2267 int cltype6;
2268 int idtype7;
2269 const char* var_class_name8;
2270 short int var9 /* : Bool */;
2271 /* Covariant cast for argument 0 (nat) <p0:NativeArray[nullable Object]> isa NativeArray[Array#0] */
2272 /* <p0:NativeArray[nullable Object]> isa NativeArray[Array#0] */
2273 type_struct = self->type->resolution_table->types[COLOR_array__NativeArrayarray__Array_FT0];
2274 cltype = type_struct->color;
2275 idtype = type_struct->id;
2276 if(cltype >= p0->type->table_size) {
2277 var = 0;
2278 } else {
2279 var = p0->type->type_table[cltype] == idtype;
2280 }
2281 if (unlikely(!var)) {
2282 var_class_name = p0 == NULL ? "null" : p0->type->name;
2283 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "NativeArray[Array#0]", var_class_name);
2284 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 327);
2285 show_backtrace(1);
2286 }
2287 {
2288 { /* Inline array#AbstractArrayRead#init (self) on <self:Array[nullable Object]> */
2289 RET_LABEL1:(void)0;
2290 }
2291 }
2292 var_nat = p0;
2293 var_size = p1;
2294 var2 = 0;
2295 {
2296 { /* Inline kernel#Int#>= (var_size,var2) on <var_size:Int> */
2297 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
2298 /* <var2:Int> isa OTHER */
2299 var5 = 1; /* easy <var2:Int> isa OTHER*/
2300 if (unlikely(!var5)) {
2301 var_class_name8 = type_kernel__Int.name;
2302 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name8);
2303 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 326);
2304 show_backtrace(1);
2305 }
2306 var9 = var_size >= var2;
2307 var3 = var9;
2308 goto RET_LABEL4;
2309 RET_LABEL4:(void)0;
2310 }
2311 }
2312 if (unlikely(!var3)) {
2313 PRINT_ERROR("Runtime error: %s", "Assert \'positive\' failed");
2314 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 330);
2315 show_backtrace(1);
2316 }
2317 self->attrs[COLOR_array__Array___items].val = var_nat; /* _items on <self:Array[nullable Object]> */
2318 self->attrs[COLOR_array__Array___capacity].l = var_size; /* _capacity on <self:Array[nullable Object]> */
2319 self->attrs[COLOR_array__AbstractArrayRead___length].l = var_size; /* _length on <self:Array[nullable Object]> */
2320 RET_LABEL:;
2321 }
2322 /* method array#Array#with_native for (self: Object, NativeArray[nullable Object], Int) */
2323 void VIRTUAL_array__Array__with_native(val* self, val* p0, long p1) {
2324 array__Array__with_native(self, p0, p1); /* Direct call array#Array#with_native on <self:Object(Array[nullable Object])>*/
2325 RET_LABEL:;
2326 }
2327 /* method array#ArrayIterator#item for (self: ArrayIterator[nullable Object]): nullable Object */
2328 val* array__ArrayIterator__item(val* self) {
2329 val* var /* : nullable Object */;
2330 val* var1 /* : AbstractArrayRead[nullable Object] */;
2331 long var2 /* : Int */;
2332 val* var3 /* : nullable Object */;
2333 var1 = self->attrs[COLOR_array__ArrayIterator___array].val; /* _array on <self:ArrayIterator[nullable Object]> */
2334 if (unlikely(var1 == NULL)) {
2335 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _array");
2336 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 351);
2337 show_backtrace(1);
2338 }
2339 var2 = self->attrs[COLOR_array__ArrayIterator___index].l; /* _index on <self:ArrayIterator[nullable Object]> */
2340 {
2341 var3 = array__Array___91d_93d(var1, var2);
2342 }
2343 var = var3;
2344 goto RET_LABEL;
2345 RET_LABEL:;
2346 return var;
2347 }
2348 /* method array#ArrayIterator#item for (self: Object): nullable Object */
2349 val* VIRTUAL_array__ArrayIterator__item(val* self) {
2350 val* var /* : nullable Object */;
2351 val* var1 /* : nullable Object */;
2352 var1 = array__ArrayIterator__item(self);
2353 var = var1;
2354 RET_LABEL:;
2355 return var;
2356 }
2357 /* method array#ArrayIterator#is_ok for (self: ArrayIterator[nullable Object]): Bool */
2358 short int array__ArrayIterator__is_ok(val* self) {
2359 short int var /* : Bool */;
2360 long var1 /* : Int */;
2361 val* var2 /* : AbstractArrayRead[nullable Object] */;
2362 long var3 /* : Int */;
2363 short int var4 /* : Bool */;
2364 short int var6 /* : Bool */;
2365 int cltype;
2366 int idtype;
2367 const char* var_class_name;
2368 short int var7 /* : Bool */;
2369 var1 = self->attrs[COLOR_array__ArrayIterator___index].l; /* _index on <self:ArrayIterator[nullable Object]> */
2370 var2 = self->attrs[COLOR_array__ArrayIterator___array].val; /* _array on <self:ArrayIterator[nullable Object]> */
2371 if (unlikely(var2 == NULL)) {
2372 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _array");
2373 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 355);
2374 show_backtrace(1);
2375 }
2376 {
2377 var3 = array__AbstractArrayRead__length(var2);
2378 }
2379 {
2380 { /* Inline kernel#Int#< (var1,var3) on <var1:Int> */
2381 /* Covariant cast for argument 0 (i) <var3:Int> isa OTHER */
2382 /* <var3:Int> isa OTHER */
2383 var6 = 1; /* easy <var3:Int> isa OTHER*/
2384 if (unlikely(!var6)) {
2385 var_class_name = type_kernel__Int.name;
2386 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2387 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 325);
2388 show_backtrace(1);
2389 }
2390 var7 = var1 < var3;
2391 var4 = var7;
2392 goto RET_LABEL5;
2393 RET_LABEL5:(void)0;
2394 }
2395 }
2396 var = var4;
2397 goto RET_LABEL;
2398 RET_LABEL:;
2399 return var;
2400 }
2401 /* method array#ArrayIterator#is_ok for (self: Object): Bool */
2402 short int VIRTUAL_array__ArrayIterator__is_ok(val* self) {
2403 short int var /* : Bool */;
2404 short int var1 /* : Bool */;
2405 var1 = array__ArrayIterator__is_ok(self);
2406 var = var1;
2407 RET_LABEL:;
2408 return var;
2409 }
2410 /* method array#ArrayIterator#next for (self: ArrayIterator[nullable Object]) */
2411 void array__ArrayIterator__next(val* self) {
2412 val* var_ /* var : ArrayIterator[nullable Object] */;
2413 long var /* : Int */;
2414 long var1 /* : Int */;
2415 long var2 /* : Int */;
2416 short int var4 /* : Bool */;
2417 int cltype;
2418 int idtype;
2419 const char* var_class_name;
2420 long var5 /* : Int */;
2421 var_ = self;
2422 var = var_->attrs[COLOR_array__ArrayIterator___index].l; /* _index on <var_:ArrayIterator[nullable Object]> */
2423 var1 = 1;
2424 {
2425 { /* Inline kernel#Int#+ (var,var1) on <var:Int> */
2426 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
2427 /* <var1:Int> isa OTHER */
2428 var4 = 1; /* easy <var1:Int> isa OTHER*/
2429 if (unlikely(!var4)) {
2430 var_class_name = type_kernel__Int.name;
2431 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2432 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
2433 show_backtrace(1);
2434 }
2435 var5 = var + var1;
2436 var2 = var5;
2437 goto RET_LABEL3;
2438 RET_LABEL3:(void)0;
2439 }
2440 }
2441 var_->attrs[COLOR_array__ArrayIterator___index].l = var2; /* _index on <var_:ArrayIterator[nullable Object]> */
2442 RET_LABEL:;
2443 }
2444 /* method array#ArrayIterator#next for (self: Object) */
2445 void VIRTUAL_array__ArrayIterator__next(val* self) {
2446 array__ArrayIterator__next(self); /* Direct call array#ArrayIterator#next on <self:Object(ArrayIterator[nullable Object])>*/
2447 RET_LABEL:;
2448 }
2449 /* method array#ArrayIterator#init for (self: ArrayIterator[nullable Object], AbstractArrayRead[nullable Object]) */
2450 void array__ArrayIterator__init(val* self, val* p0) {
2451 short int var /* : Bool */;
2452 int cltype;
2453 int idtype;
2454 const struct type* type_struct;
2455 const char* var_class_name;
2456 val* var_a /* var a: AbstractArrayRead[nullable Object] */;
2457 long var1 /* : Int */;
2458 /* Covariant cast for argument 0 (a) <p0:AbstractArrayRead[nullable Object]> isa AbstractArrayRead[ArrayIterator#0] */
2459 /* <p0:AbstractArrayRead[nullable Object]> isa AbstractArrayRead[ArrayIterator#0] */
2460 type_struct = self->type->resolution_table->types[COLOR_array__AbstractArrayReadarray__ArrayIterator_FT0];
2461 cltype = type_struct->color;
2462 idtype = type_struct->id;
2463 if(cltype >= p0->type->table_size) {
2464 var = 0;
2465 } else {
2466 var = p0->type->type_table[cltype] == idtype;
2467 }
2468 if (unlikely(!var)) {
2469 var_class_name = p0 == NULL ? "null" : p0->type->name;
2470 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractArrayRead[ArrayIterator#0]", var_class_name);
2471 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 359);
2472 show_backtrace(1);
2473 }
2474 var_a = p0;
2475 self->attrs[COLOR_array__ArrayIterator___array].val = var_a; /* _array on <self:ArrayIterator[nullable Object]> */
2476 var1 = 0;
2477 self->attrs[COLOR_array__ArrayIterator___index].l = var1; /* _index on <self:ArrayIterator[nullable Object]> */
2478 RET_LABEL:;
2479 }
2480 /* method array#ArrayIterator#init for (self: Object, AbstractArrayRead[nullable Object]) */
2481 void VIRTUAL_array__ArrayIterator__init(val* self, val* p0) {
2482 array__ArrayIterator__init(self, p0); /* Direct call array#ArrayIterator#init on <self:Object(ArrayIterator[nullable Object])>*/
2483 RET_LABEL:;
2484 }
2485 /* method array#ArrayIterator#index for (self: ArrayIterator[nullable Object]): Int */
2486 long array__ArrayIterator__index(val* self) {
2487 long var /* : Int */;
2488 long var1 /* : Int */;
2489 var1 = self->attrs[COLOR_array__ArrayIterator___index].l; /* _index on <self:ArrayIterator[nullable Object]> */
2490 var = var1;
2491 goto RET_LABEL;
2492 RET_LABEL:;
2493 return var;
2494 }
2495 /* method array#ArrayIterator#index for (self: Object): Int */
2496 long VIRTUAL_array__ArrayIterator__index(val* self) {
2497 long var /* : Int */;
2498 long var1 /* : Int */;
2499 var1 = array__ArrayIterator__index(self);
2500 var = var1;
2501 RET_LABEL:;
2502 return var;
2503 }
2504 /* method array#ArraySet#has for (self: ArraySet[Object], Object): Bool */
2505 short int array__ArraySet__has(val* self, val* p0) {
2506 short int var /* : Bool */;
2507 short int var1 /* : Bool */;
2508 int cltype;
2509 int idtype;
2510 const struct type* type_struct;
2511 const char* var_class_name;
2512 val* var_e /* var e: Object */;
2513 val* var2 /* : Array[Object] */;
2514 short int var3 /* : Bool */;
2515 /* Covariant cast for argument 0 (e) <p0:Object> isa Collection#0 */
2516 /* <p0:Object> isa Collection#0 */
2517 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collection_FT0];
2518 cltype = type_struct->color;
2519 idtype = type_struct->id;
2520 if(cltype >= p0->type->table_size) {
2521 var1 = 0;
2522 } else {
2523 var1 = p0->type->type_table[cltype] == idtype;
2524 }
2525 if (unlikely(!var1)) {
2526 var_class_name = p0 == NULL ? "null" : p0->type->name;
2527 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection#0", var_class_name);
2528 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 393);
2529 show_backtrace(1);
2530 }
2531 var_e = p0;
2532 var2 = self->attrs[COLOR_array__ArraySet___array].val; /* _array on <self:ArraySet[Object]> */
2533 if (unlikely(var2 == NULL)) {
2534 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _array");
2535 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 393);
2536 show_backtrace(1);
2537 }
2538 {
2539 var3 = array__AbstractArrayRead__has(var2, var_e);
2540 }
2541 var = var3;
2542 goto RET_LABEL;
2543 RET_LABEL:;
2544 return var;
2545 }
2546 /* method array#ArraySet#has for (self: Object, nullable Object): Bool */
2547 short int VIRTUAL_array__ArraySet__has(val* self, val* p0) {
2548 short int var /* : Bool */;
2549 short int var1 /* : Bool */;
2550 var1 = array__ArraySet__has(self, p0);
2551 var = var1;
2552 RET_LABEL:;
2553 return var;
2554 }
2555 /* method array#ArraySet#add for (self: ArraySet[Object], Object) */
2556 void array__ArraySet__add(val* self, val* p0) {
2557 short int var /* : Bool */;
2558 int cltype;
2559 int idtype;
2560 const struct type* type_struct;
2561 const char* var_class_name;
2562 val* var_e /* var e: Object */;
2563 val* var1 /* : Array[Object] */;
2564 short int var2 /* : Bool */;
2565 short int var3 /* : Bool */;
2566 val* var4 /* : Array[Object] */;
2567 /* Covariant cast for argument 0 (e) <p0:Object> isa SimpleCollection#0 */
2568 /* <p0:Object> isa SimpleCollection#0 */
2569 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__SimpleCollection_FT0];
2570 cltype = type_struct->color;
2571 idtype = type_struct->id;
2572 if(cltype >= p0->type->table_size) {
2573 var = 0;
2574 } else {
2575 var = p0->type->type_table[cltype] == idtype;
2576 }
2577 if (unlikely(!var)) {
2578 var_class_name = p0 == NULL ? "null" : p0->type->name;
2579 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "SimpleCollection#0", var_class_name);
2580 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 395);
2581 show_backtrace(1);
2582 }
2583 var_e = p0;
2584 var1 = self->attrs[COLOR_array__ArraySet___array].val; /* _array on <self:ArraySet[Object]> */
2585 if (unlikely(var1 == NULL)) {
2586 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _array");
2587 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 395);
2588 show_backtrace(1);
2589 }
2590 {
2591 var2 = array__AbstractArrayRead__has(var1, var_e);
2592 }
2593 var3 = !var2;
2594 if (var3){
2595 var4 = self->attrs[COLOR_array__ArraySet___array].val; /* _array on <self:ArraySet[Object]> */
2596 if (unlikely(var4 == NULL)) {
2597 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _array");
2598 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 395);
2599 show_backtrace(1);
2600 }
2601 {
2602 array__Array__add(var4, var_e); /* Direct call array#Array#add on <var4:Array[Object]>*/
2603 }
2604 } else {
2605 }
2606 RET_LABEL:;
2607 }
2608 /* method array#ArraySet#add for (self: Object, nullable Object) */
2609 void VIRTUAL_array__ArraySet__add(val* self, val* p0) {
2610 array__ArraySet__add(self, p0); /* Direct call array#ArraySet#add on <self:Object(ArraySet[Object])>*/
2611 RET_LABEL:;
2612 }
2613 /* method array#ArraySet#is_empty for (self: ArraySet[Object]): Bool */
2614 short int array__ArraySet__is_empty(val* self) {
2615 short int var /* : Bool */;
2616 val* var1 /* : Array[Object] */;
2617 short int var2 /* : Bool */;
2618 var1 = self->attrs[COLOR_array__ArraySet___array].val; /* _array on <self:ArraySet[Object]> */
2619 if (unlikely(var1 == NULL)) {
2620 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _array");
2621 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 397);
2622 show_backtrace(1);
2623 }
2624 {
2625 var2 = array__AbstractArrayRead__is_empty(var1);
2626 }
2627 var = var2;
2628 goto RET_LABEL;
2629 RET_LABEL:;
2630 return var;
2631 }
2632 /* method array#ArraySet#is_empty for (self: Object): Bool */
2633 short int VIRTUAL_array__ArraySet__is_empty(val* self) {
2634 short int var /* : Bool */;
2635 short int var1 /* : Bool */;
2636 var1 = array__ArraySet__is_empty(self);
2637 var = var1;
2638 RET_LABEL:;
2639 return var;
2640 }
2641 /* method array#ArraySet#length for (self: ArraySet[Object]): Int */
2642 long array__ArraySet__length(val* self) {
2643 long var /* : Int */;
2644 val* var1 /* : Array[Object] */;
2645 long var2 /* : Int */;
2646 var1 = self->attrs[COLOR_array__ArraySet___array].val; /* _array on <self:ArraySet[Object]> */
2647 if (unlikely(var1 == NULL)) {
2648 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _array");
2649 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 399);
2650 show_backtrace(1);
2651 }
2652 {
2653 var2 = array__AbstractArrayRead__length(var1);
2654 }
2655 var = var2;
2656 goto RET_LABEL;
2657 RET_LABEL:;
2658 return var;
2659 }
2660 /* method array#ArraySet#length for (self: Object): Int */
2661 long VIRTUAL_array__ArraySet__length(val* self) {
2662 long var /* : Int */;
2663 long var1 /* : Int */;
2664 var1 = array__ArraySet__length(self);
2665 var = var1;
2666 RET_LABEL:;
2667 return var;
2668 }
2669 /* method array#ArraySet#first for (self: ArraySet[Object]): Object */
2670 val* array__ArraySet__first(val* self) {
2671 val* var /* : Object */;
2672 val* var1 /* : Array[Object] */;
2673 long var2 /* : Int */;
2674 long var3 /* : Int */;
2675 short int var4 /* : Bool */;
2676 short int var6 /* : Bool */;
2677 int cltype;
2678 int idtype;
2679 const char* var_class_name;
2680 short int var7 /* : Bool */;
2681 val* var8 /* : Array[Object] */;
2682 val* var9 /* : nullable Object */;
2683 var1 = self->attrs[COLOR_array__ArraySet___array].val; /* _array on <self:ArraySet[Object]> */
2684 if (unlikely(var1 == NULL)) {
2685 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _array");
2686 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 403);
2687 show_backtrace(1);
2688 }
2689 {
2690 var2 = array__AbstractArrayRead__length(var1);
2691 }
2692 var3 = 0;
2693 {
2694 { /* Inline kernel#Int#> (var2,var3) on <var2:Int> */
2695 /* Covariant cast for argument 0 (i) <var3:Int> isa OTHER */
2696 /* <var3:Int> isa OTHER */
2697 var6 = 1; /* easy <var3:Int> isa OTHER*/
2698 if (unlikely(!var6)) {
2699 var_class_name = type_kernel__Int.name;
2700 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2701 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 327);
2702 show_backtrace(1);
2703 }
2704 var7 = var2 > var3;
2705 var4 = var7;
2706 goto RET_LABEL5;
2707 RET_LABEL5:(void)0;
2708 }
2709 }
2710 if (unlikely(!var4)) {
2711 PRINT_ERROR("Runtime error: %s", "Assert failed");
2712 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 403);
2713 show_backtrace(1);
2714 }
2715 var8 = self->attrs[COLOR_array__ArraySet___array].val; /* _array on <self:ArraySet[Object]> */
2716 if (unlikely(var8 == NULL)) {
2717 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _array");
2718 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 404);
2719 show_backtrace(1);
2720 }
2721 {
2722 var9 = abstract_collection__SequenceRead__first(var8);
2723 }
2724 var = var9;
2725 goto RET_LABEL;
2726 RET_LABEL:;
2727 return var;
2728 }
2729 /* method array#ArraySet#first for (self: Object): nullable Object */
2730 val* VIRTUAL_array__ArraySet__first(val* self) {
2731 val* var /* : nullable Object */;
2732 val* var1 /* : Object */;
2733 var1 = array__ArraySet__first(self);
2734 var = var1;
2735 RET_LABEL:;
2736 return var;
2737 }
2738 /* method array#ArraySet#remove for (self: ArraySet[Object], Object) */
2739 void array__ArraySet__remove(val* self, val* p0) {
2740 short int var /* : Bool */;
2741 int cltype;
2742 int idtype;
2743 const struct type* type_struct;
2744 const char* var_class_name;
2745 val* var_item /* var item: Object */;
2746 val* var1 /* : Array[Object] */;
2747 long var2 /* : Int */;
2748 long var_i /* var i: Int */;
2749 long var3 /* : Int */;
2750 short int var4 /* : Bool */;
2751 short int var6 /* : Bool */;
2752 int cltype7;
2753 int idtype8;
2754 const char* var_class_name9;
2755 short int var10 /* : Bool */;
2756 /* Covariant cast for argument 0 (item) <p0:Object> isa RemovableCollection#0 */
2757 /* <p0:Object> isa RemovableCollection#0 */
2758 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__RemovableCollection_FT0];
2759 cltype = type_struct->color;
2760 idtype = type_struct->id;
2761 if(cltype >= p0->type->table_size) {
2762 var = 0;
2763 } else {
2764 var = p0->type->type_table[cltype] == idtype;
2765 }
2766 if (unlikely(!var)) {
2767 var_class_name = p0 == NULL ? "null" : p0->type->name;
2768 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "RemovableCollection#0", var_class_name);
2769 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 407);
2770 show_backtrace(1);
2771 }
2772 var_item = p0;
2773 var1 = self->attrs[COLOR_array__ArraySet___array].val; /* _array on <self:ArraySet[Object]> */
2774 if (unlikely(var1 == NULL)) {
2775 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _array");
2776 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 409);
2777 show_backtrace(1);
2778 }
2779 {
2780 var2 = array__AbstractArrayRead__index_of(var1, var_item);
2781 }
2782 var_i = var2;
2783 var3 = 0;
2784 {
2785 { /* Inline kernel#Int#>= (var_i,var3) on <var_i:Int> */
2786 /* Covariant cast for argument 0 (i) <var3:Int> isa OTHER */
2787 /* <var3:Int> isa OTHER */
2788 var6 = 1; /* easy <var3:Int> isa OTHER*/
2789 if (unlikely(!var6)) {
2790 var_class_name9 = type_kernel__Int.name;
2791 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name9);
2792 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 326);
2793 show_backtrace(1);
2794 }
2795 var10 = var_i >= var3;
2796 var4 = var10;
2797 goto RET_LABEL5;
2798 RET_LABEL5:(void)0;
2799 }
2800 }
2801 if (var4){
2802 {
2803 array__ArraySet__remove_at(self, var_i); /* Direct call array#ArraySet#remove_at on <self:ArraySet[Object]>*/
2804 }
2805 } else {
2806 }
2807 RET_LABEL:;
2808 }
2809 /* method array#ArraySet#remove for (self: Object, nullable Object) */
2810 void VIRTUAL_array__ArraySet__remove(val* self, val* p0) {
2811 array__ArraySet__remove(self, p0); /* Direct call array#ArraySet#remove on <self:Object(ArraySet[Object])>*/
2812 RET_LABEL:;
2813 }
2814 /* method array#ArraySet#clear for (self: ArraySet[Object]) */
2815 void array__ArraySet__clear(val* self) {
2816 val* var /* : Array[Object] */;
2817 var = self->attrs[COLOR_array__ArraySet___array].val; /* _array on <self:ArraySet[Object]> */
2818 if (unlikely(var == NULL)) {
2819 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _array");
2820 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 415);
2821 show_backtrace(1);
2822 }
2823 {
2824 array__AbstractArray__clear(var); /* Direct call array#AbstractArray#clear on <var:Array[Object]>*/
2825 }
2826 RET_LABEL:;
2827 }
2828 /* method array#ArraySet#clear for (self: Object) */
2829 void VIRTUAL_array__ArraySet__clear(val* self) {
2830 array__ArraySet__clear(self); /* Direct call array#ArraySet#clear on <self:Object(ArraySet[Object])>*/
2831 RET_LABEL:;
2832 }
2833 /* method array#ArraySet#iterator for (self: ArraySet[Object]): Iterator[Object] */
2834 val* array__ArraySet__iterator(val* self) {
2835 val* var /* : Iterator[Object] */;
2836 val* var1 /* : ArraySetIterator[Object] */;
2837 val* var2 /* : Array[Object] */;
2838 val* var3 /* : ArrayIterator[nullable Object] */;
2839 var1 = NEW_array__ArraySetIterator(self->type->resolution_table->types[COLOR_array__ArraySetIteratorarray__ArraySet_FT0]);
2840 var2 = self->attrs[COLOR_array__ArraySet___array].val; /* _array on <self:ArraySet[Object]> */
2841 if (unlikely(var2 == NULL)) {
2842 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _array");
2843 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 417);
2844 show_backtrace(1);
2845 }
2846 {
2847 var3 = array__AbstractArrayRead__iterator(var2);
2848 }
2849 {
2850 array__ArraySetIterator__init(var1, var3); /* Direct call array#ArraySetIterator#init on <var1:ArraySetIterator[Object]>*/
2851 }
2852 var = var1;
2853 goto RET_LABEL;
2854 RET_LABEL:;
2855 return var;
2856 }
2857 /* method array#ArraySet#iterator for (self: Object): Iterator[nullable Object] */
2858 val* VIRTUAL_array__ArraySet__iterator(val* self) {
2859 val* var /* : Iterator[nullable Object] */;
2860 val* var1 /* : Iterator[Object] */;
2861 var1 = array__ArraySet__iterator(self);
2862 var = var1;
2863 RET_LABEL:;
2864 return var;
2865 }
2866 /* method array#ArraySet#remove_at for (self: ArraySet[Object], Int) */
2867 void array__ArraySet__remove_at(val* self, long p0) {
2868 long var_i /* var i: Int */;
2869 val* var /* : Array[Object] */;
2870 val* var1 /* : Array[Object] */;
2871 val* var2 /* : nullable Object */;
2872 val* var3 /* : Array[Object] */;
2873 val* var4 /* : nullable Object */;
2874 var_i = p0;
2875 var = self->attrs[COLOR_array__ArraySet___array].val; /* _array on <self:ArraySet[Object]> */
2876 if (unlikely(var == NULL)) {
2877 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _array");
2878 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 424);
2879 show_backtrace(1);
2880 }
2881 var1 = self->attrs[COLOR_array__ArraySet___array].val; /* _array on <self:ArraySet[Object]> */
2882 if (unlikely(var1 == NULL)) {
2883 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _array");
2884 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 424);
2885 show_backtrace(1);
2886 }
2887 {
2888 var2 = abstract_collection__SequenceRead__last(var1);
2889 }
2890 {
2891 array__Array___91d_93d_61d(var, var_i, var2); /* Direct call array#Array#[]= on <var:Array[Object]>*/
2892 }
2893 var3 = self->attrs[COLOR_array__ArraySet___array].val; /* _array on <self:ArraySet[Object]> */
2894 if (unlikely(var3 == NULL)) {
2895 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _array");
2896 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 425);
2897 show_backtrace(1);
2898 }
2899 {
2900 var4 = array__AbstractArray__pop(var3);
2901 }
2902 var4;
2903 RET_LABEL:;
2904 }
2905 /* method array#ArraySet#remove_at for (self: Object, Int) */
2906 void VIRTUAL_array__ArraySet__remove_at(val* self, long p0) {
2907 array__ArraySet__remove_at(self, p0); /* Direct call array#ArraySet#remove_at on <self:Object(ArraySet[Object])>*/
2908 RET_LABEL:;
2909 }
2910 /* method array#ArraySet#init for (self: ArraySet[Object]) */
2911 void array__ArraySet__init(val* self) {
2912 val* var /* : Array[Object] */;
2913 var = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arrayarray__ArraySet_FT0]);
2914 {
2915 array__Array__init(var); /* Direct call array#Array#init on <var:Array[Object]>*/
2916 }
2917 self->attrs[COLOR_array__ArraySet___array].val = var; /* _array on <self:ArraySet[Object]> */
2918 RET_LABEL:;
2919 }
2920 /* method array#ArraySet#init for (self: Object) */
2921 void VIRTUAL_array__ArraySet__init(val* self) {
2922 array__ArraySet__init(self); /* Direct call array#ArraySet#init on <self:Object(ArraySet[Object])>*/
2923 RET_LABEL:;
2924 }
2925 /* method array#ArraySetIterator#is_ok for (self: ArraySetIterator[Object]): Bool */
2926 short int array__ArraySetIterator__is_ok(val* self) {
2927 short int var /* : Bool */;
2928 val* var1 /* : ArrayIterator[Object] */;
2929 short int var2 /* : Bool */;
2930 var1 = self->attrs[COLOR_array__ArraySetIterator___iter].val; /* _iter on <self:ArraySetIterator[Object]> */
2931 if (unlikely(var1 == NULL)) {
2932 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iter");
2933 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 441);
2934 show_backtrace(1);
2935 }
2936 {
2937 var2 = array__ArrayIterator__is_ok(var1);
2938 }
2939 var = var2;
2940 goto RET_LABEL;
2941 RET_LABEL:;
2942 return var;
2943 }
2944 /* method array#ArraySetIterator#is_ok for (self: Object): Bool */
2945 short int VIRTUAL_array__ArraySetIterator__is_ok(val* self) {
2946 short int var /* : Bool */;
2947 short int var1 /* : Bool */;
2948 var1 = array__ArraySetIterator__is_ok(self);
2949 var = var1;
2950 RET_LABEL:;
2951 return var;
2952 }
2953 /* method array#ArraySetIterator#next for (self: ArraySetIterator[Object]) */
2954 void array__ArraySetIterator__next(val* self) {
2955 val* var /* : ArrayIterator[Object] */;
2956 var = self->attrs[COLOR_array__ArraySetIterator___iter].val; /* _iter on <self:ArraySetIterator[Object]> */
2957 if (unlikely(var == NULL)) {
2958 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iter");
2959 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 443);
2960 show_backtrace(1);
2961 }
2962 {
2963 array__ArrayIterator__next(var); /* Direct call array#ArrayIterator#next on <var:ArrayIterator[Object]>*/
2964 }
2965 RET_LABEL:;
2966 }
2967 /* method array#ArraySetIterator#next for (self: Object) */
2968 void VIRTUAL_array__ArraySetIterator__next(val* self) {
2969 array__ArraySetIterator__next(self); /* Direct call array#ArraySetIterator#next on <self:Object(ArraySetIterator[Object])>*/
2970 RET_LABEL:;
2971 }
2972 /* method array#ArraySetIterator#item for (self: ArraySetIterator[Object]): Object */
2973 val* array__ArraySetIterator__item(val* self) {
2974 val* var /* : Object */;
2975 val* var1 /* : ArrayIterator[Object] */;
2976 val* var2 /* : nullable Object */;
2977 var1 = self->attrs[COLOR_array__ArraySetIterator___iter].val; /* _iter on <self:ArraySetIterator[Object]> */
2978 if (unlikely(var1 == NULL)) {
2979 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iter");
2980 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 445);
2981 show_backtrace(1);
2982 }
2983 {
2984 var2 = array__ArrayIterator__item(var1);
2985 }
2986 var = var2;
2987 goto RET_LABEL;
2988 RET_LABEL:;
2989 return var;
2990 }
2991 /* method array#ArraySetIterator#item for (self: Object): nullable Object */
2992 val* VIRTUAL_array__ArraySetIterator__item(val* self) {
2993 val* var /* : nullable Object */;
2994 val* var1 /* : Object */;
2995 var1 = array__ArraySetIterator__item(self);
2996 var = var1;
2997 RET_LABEL:;
2998 return var;
2999 }
3000 /* method array#ArraySetIterator#init for (self: ArraySetIterator[Object], ArrayIterator[Object]) */
3001 void array__ArraySetIterator__init(val* self, val* p0) {
3002 short int var /* : Bool */;
3003 int cltype;
3004 int idtype;
3005 const struct type* type_struct;
3006 const char* var_class_name;
3007 val* var_iter /* var iter: ArrayIterator[Object] */;
3008 /* Covariant cast for argument 0 (iter) <p0:ArrayIterator[Object]> isa ArrayIterator[ArraySetIterator#0] */
3009 /* <p0:ArrayIterator[Object]> isa ArrayIterator[ArraySetIterator#0] */
3010 type_struct = self->type->resolution_table->types[COLOR_array__ArrayIteratorarray__ArraySetIterator_FT0];
3011 cltype = type_struct->color;
3012 idtype = type_struct->id;
3013 if(cltype >= p0->type->table_size) {
3014 var = 0;
3015 } else {
3016 var = p0->type->type_table[cltype] == idtype;
3017 }
3018 if (unlikely(!var)) {
3019 var_class_name = p0 == NULL ? "null" : p0->type->name;
3020 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "ArrayIterator[ArraySetIterator#0]", var_class_name);
3021 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 447);
3022 show_backtrace(1);
3023 }
3024 var_iter = p0;
3025 self->attrs[COLOR_array__ArraySetIterator___iter].val = var_iter; /* _iter on <self:ArraySetIterator[Object]> */
3026 RET_LABEL:;
3027 }
3028 /* method array#ArraySetIterator#init for (self: Object, ArrayIterator[Object]) */
3029 void VIRTUAL_array__ArraySetIterator__init(val* self, val* p0) {
3030 array__ArraySetIterator__init(self, p0); /* Direct call array#ArraySetIterator#init on <self:Object(ArraySetIterator[Object])>*/
3031 RET_LABEL:;
3032 }
3033 /* method array#ArrayMap#[] for (self: ArrayMap[Object, nullable Object], Object): nullable Object */
3034 val* array__ArrayMap___91d_93d(val* self, val* p0) {
3035 val* var /* : nullable Object */;
3036 short int var1 /* : Bool */;
3037 int cltype;
3038 int idtype;
3039 const struct type* type_struct;
3040 const char* var_class_name;
3041 val* var_key /* var key: Object */;
3042 long var2 /* : Int */;
3043 long var_i /* var i: Int */;
3044 long var3 /* : Int */;
3045 short int var4 /* : Bool */;
3046 short int var6 /* : Bool */;
3047 int cltype7;
3048 int idtype8;
3049 const char* var_class_name9;
3050 short int var10 /* : Bool */;
3051 val* var11 /* : Array[Couple[Object, nullable Object]] */;
3052 val* var12 /* : nullable Object */;
3053 val* var13 /* : nullable Object */;
3054 val* var15 /* : nullable Object */;
3055 val* var16 /* : nullable Object */;
3056 /* Covariant cast for argument 0 (key) <p0:Object> isa MapRead#0 */
3057 /* <p0:Object> isa MapRead#0 */
3058 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__MapRead_FT0];
3059 cltype = type_struct->color;
3060 idtype = type_struct->id;
3061 if(cltype >= p0->type->table_size) {
3062 var1 = 0;
3063 } else {
3064 var1 = p0->type->type_table[cltype] == idtype;
3065 }
3066 if (unlikely(!var1)) {
3067 var_class_name = p0 == NULL ? "null" : p0->type->name;
3068 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MapRead#0", var_class_name);
3069 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 457);
3070 show_backtrace(1);
3071 }
3072 var_key = p0;
3073 {
3074 var2 = array__ArrayMap__index(self, var_key);
3075 }
3076 var_i = var2;
3077 var3 = 0;
3078 {
3079 { /* Inline kernel#Int#>= (var_i,var3) on <var_i:Int> */
3080 /* Covariant cast for argument 0 (i) <var3:Int> isa OTHER */
3081 /* <var3:Int> isa OTHER */
3082 var6 = 1; /* easy <var3:Int> isa OTHER*/
3083 if (unlikely(!var6)) {
3084 var_class_name9 = type_kernel__Int.name;
3085 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name9);
3086 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 326);
3087 show_backtrace(1);
3088 }
3089 var10 = var_i >= var3;
3090 var4 = var10;
3091 goto RET_LABEL5;
3092 RET_LABEL5:(void)0;
3093 }
3094 }
3095 if (var4){
3096 var11 = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3097 if (unlikely(var11 == NULL)) {
3098 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _items");
3099 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 462);
3100 show_backtrace(1);
3101 }
3102 {
3103 var12 = array__Array___91d_93d(var11, var_i);
3104 }
3105 {
3106 { /* Inline abstract_collection#Couple#second (var12) on <var12:nullable Object(Couple[Object, nullable Object])> */
3107 var15 = var12->attrs[COLOR_abstract_collection__Couple___second].val; /* _second on <var12:nullable Object(Couple[Object, nullable Object])> */
3108 var13 = var15;
3109 RET_LABEL14:(void)0;
3110 }
3111 }
3112 var = var13;
3113 goto RET_LABEL;
3114 } else {
3115 {
3116 var16 = abstract_collection__MapRead__provide_default_value(self, var_key);
3117 }
3118 var = var16;
3119 goto RET_LABEL;
3120 }
3121 RET_LABEL:;
3122 return var;
3123 }
3124 /* method array#ArrayMap#[] for (self: Object, Object): nullable Object */
3125 val* VIRTUAL_array__ArrayMap___91d_93d(val* self, val* p0) {
3126 val* var /* : nullable Object */;
3127 val* var1 /* : nullable Object */;
3128 var1 = array__ArrayMap___91d_93d(self, p0);
3129 var = var1;
3130 RET_LABEL:;
3131 return var;
3132 }
3133 /* method array#ArrayMap#[]= for (self: ArrayMap[Object, nullable Object], Object, nullable Object) */
3134 void array__ArrayMap___91d_93d_61d(val* self, val* p0, val* p1) {
3135 short int var /* : Bool */;
3136 int cltype;
3137 int idtype;
3138 const struct type* type_struct;
3139 const char* var_class_name;
3140 short int var1 /* : Bool */;
3141 int cltype2;
3142 int idtype3;
3143 const struct type* type_struct4;
3144 short int is_nullable;
3145 const char* var_class_name5;
3146 val* var_key /* var key: Object */;
3147 val* var_item /* var item: nullable Object */;
3148 long var6 /* : Int */;
3149 long var_i /* var i: Int */;
3150 long var7 /* : Int */;
3151 short int var8 /* : Bool */;
3152 short int var10 /* : Bool */;
3153 int cltype11;
3154 int idtype12;
3155 const char* var_class_name13;
3156 short int var14 /* : Bool */;
3157 val* var15 /* : Array[Couple[Object, nullable Object]] */;
3158 val* var16 /* : nullable Object */;
3159 short int var18 /* : Bool */;
3160 int cltype19;
3161 int idtype20;
3162 const struct type* type_struct21;
3163 short int is_nullable22;
3164 const char* var_class_name23;
3165 val* var24 /* : Array[Couple[Object, nullable Object]] */;
3166 val* var25 /* : Couple[Object, nullable Object] */;
3167 /* Covariant cast for argument 0 (key) <p0:Object> isa Map#0 */
3168 /* <p0:Object> isa Map#0 */
3169 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Map_FT0];
3170 cltype = type_struct->color;
3171 idtype = type_struct->id;
3172 if(cltype >= p0->type->table_size) {
3173 var = 0;
3174 } else {
3175 var = p0->type->type_table[cltype] == idtype;
3176 }
3177 if (unlikely(!var)) {
3178 var_class_name = p0 == NULL ? "null" : p0->type->name;
3179 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map#0", var_class_name);
3180 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 468);
3181 show_backtrace(1);
3182 }
3183 /* Covariant cast for argument 1 (item) <p1:nullable Object> isa Map#1 */
3184 /* <p1:nullable Object> isa Map#1 */
3185 type_struct4 = self->type->resolution_table->types[COLOR_abstract_collection__Map_FT1];
3186 cltype2 = type_struct4->color;
3187 idtype3 = type_struct4->id;
3188 is_nullable = type_struct4->is_nullable;
3189 if(p1 == NULL) {
3190 var1 = is_nullable;
3191 } else {
3192 if(cltype2 >= p1->type->table_size) {
3193 var1 = 0;
3194 } else {
3195 var1 = p1->type->type_table[cltype2] == idtype3;
3196 }
3197 }
3198 if (unlikely(!var1)) {
3199 var_class_name5 = p1 == NULL ? "null" : p1->type->name;
3200 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map#1", var_class_name5);
3201 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 468);
3202 show_backtrace(1);
3203 }
3204 var_key = p0;
3205 var_item = p1;
3206 {
3207 var6 = array__ArrayMap__index(self, var_key);
3208 }
3209 var_i = var6;
3210 var7 = 0;
3211 {
3212 { /* Inline kernel#Int#>= (var_i,var7) on <var_i:Int> */
3213 /* Covariant cast for argument 0 (i) <var7:Int> isa OTHER */
3214 /* <var7:Int> isa OTHER */
3215 var10 = 1; /* easy <var7:Int> isa OTHER*/
3216 if (unlikely(!var10)) {
3217 var_class_name13 = type_kernel__Int.name;
3218 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
3219 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 326);
3220 show_backtrace(1);
3221 }
3222 var14 = var_i >= var7;
3223 var8 = var14;
3224 goto RET_LABEL9;
3225 RET_LABEL9:(void)0;
3226 }
3227 }
3228 if (var8){
3229 var15 = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3230 if (unlikely(var15 == NULL)) {
3231 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _items");
3232 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 473);
3233 show_backtrace(1);
3234 }
3235 {
3236 var16 = array__Array___91d_93d(var15, var_i);
3237 }
3238 {
3239 { /* Inline abstract_collection#Couple#second= (var16,var_item) on <var16:nullable Object(Couple[Object, nullable Object])> */
3240 /* Covariant cast for argument 0 (second) <var_item:nullable Object> isa Couple#1 */
3241 /* <var_item:nullable Object> isa Couple#1 */
3242 type_struct21 = var16->type->resolution_table->types[COLOR_abstract_collection__Couple_FT1];
3243 cltype19 = type_struct21->color;
3244 idtype20 = type_struct21->id;
3245 is_nullable22 = type_struct21->is_nullable;
3246 if(var_item == NULL) {
3247 var18 = is_nullable22;
3248 } else {
3249 if(cltype19 >= var_item->type->table_size) {
3250 var18 = 0;
3251 } else {
3252 var18 = var_item->type->type_table[cltype19] == idtype20;
3253 }
3254 }
3255 if (unlikely(!var18)) {
3256 var_class_name23 = var_item == NULL ? "null" : var_item->type->name;
3257 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Couple#1", var_class_name23);
3258 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 905);
3259 show_backtrace(1);
3260 }
3261 var16->attrs[COLOR_abstract_collection__Couple___second].val = var_item; /* _second on <var16:nullable Object(Couple[Object, nullable Object])> */
3262 RET_LABEL17:(void)0;
3263 }
3264 }
3265 } else {
3266 var24 = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3267 if (unlikely(var24 == NULL)) {
3268 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _items");
3269 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 475);
3270 show_backtrace(1);
3271 }
3272 var25 = NEW_abstract_collection__Couple(self->type->resolution_table->types[COLOR_abstract_collection__Couplearray__ArrayMap_FT0array__ArrayMap_FT1]);
3273 {
3274 abstract_collection__Couple__init(var25, var_key, var_item); /* Direct call abstract_collection#Couple#init on <var25:Couple[Object, nullable Object]>*/
3275 }
3276 {
3277 array__AbstractArray__push(var24, var25); /* Direct call array#AbstractArray#push on <var24:Array[Couple[Object, nullable Object]]>*/
3278 }
3279 }
3280 RET_LABEL:;
3281 }
3282 /* method array#ArrayMap#[]= for (self: Object, Object, nullable Object) */
3283 void VIRTUAL_array__ArrayMap___91d_93d_61d(val* self, val* p0, val* p1) {
3284 array__ArrayMap___91d_93d_61d(self, p0, p1); /* Direct call array#ArrayMap#[]= on <self:Object(ArrayMap[Object, nullable Object])>*/
3285 RET_LABEL:;
3286 }
3287 /* method array#ArrayMap#keys for (self: ArrayMap[Object, nullable Object]): RemovableCollection[Object] */
3288 val* array__ArrayMap__keys(val* self) {
3289 val* var /* : RemovableCollection[Object] */;
3290 val* var1 /* : RemovableCollection[Object] */;
3291 var1 = self->attrs[COLOR_array__ArrayMap___keys].val; /* _keys on <self:ArrayMap[Object, nullable Object]> */
3292 if (unlikely(var1 == NULL)) {
3293 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _keys");
3294 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 479);
3295 show_backtrace(1);
3296 }
3297 var = var1;
3298 RET_LABEL:;
3299 return var;
3300 }
3301 /* method array#ArrayMap#keys for (self: Object): Collection[Object] */
3302 val* VIRTUAL_array__ArrayMap__keys(val* self) {
3303 val* var /* : Collection[Object] */;
3304 val* var1 /* : RemovableCollection[Object] */;
3305 val* var3 /* : RemovableCollection[Object] */;
3306 { /* Inline array#ArrayMap#keys (self) on <self:Object(ArrayMap[Object, nullable Object])> */
3307 var3 = self->attrs[COLOR_array__ArrayMap___keys].val; /* _keys on <self:Object(ArrayMap[Object, nullable Object])> */
3308 if (unlikely(var3 == NULL)) {
3309 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _keys");
3310 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 479);
3311 show_backtrace(1);
3312 }
3313 var1 = var3;
3314 RET_LABEL2:(void)0;
3315 }
3316 var = var1;
3317 RET_LABEL:;
3318 return var;
3319 }
3320 /* method array#ArrayMap#values for (self: ArrayMap[Object, nullable Object]): RemovableCollection[nullable Object] */
3321 val* array__ArrayMap__values(val* self) {
3322 val* var /* : RemovableCollection[nullable Object] */;
3323 val* var1 /* : RemovableCollection[nullable Object] */;
3324 var1 = self->attrs[COLOR_array__ArrayMap___values].val; /* _values on <self:ArrayMap[Object, nullable Object]> */
3325 if (unlikely(var1 == NULL)) {
3326 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _values");
3327 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 480);
3328 show_backtrace(1);
3329 }
3330 var = var1;
3331 RET_LABEL:;
3332 return var;
3333 }
3334 /* method array#ArrayMap#values for (self: Object): Collection[nullable Object] */
3335 val* VIRTUAL_array__ArrayMap__values(val* self) {
3336 val* var /* : Collection[nullable Object] */;
3337 val* var1 /* : RemovableCollection[nullable Object] */;
3338 val* var3 /* : RemovableCollection[nullable Object] */;
3339 { /* Inline array#ArrayMap#values (self) on <self:Object(ArrayMap[Object, nullable Object])> */
3340 var3 = self->attrs[COLOR_array__ArrayMap___values].val; /* _values on <self:Object(ArrayMap[Object, nullable Object])> */
3341 if (unlikely(var3 == NULL)) {
3342 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _values");
3343 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 480);
3344 show_backtrace(1);
3345 }
3346 var1 = var3;
3347 RET_LABEL2:(void)0;
3348 }
3349 var = var1;
3350 RET_LABEL:;
3351 return var;
3352 }
3353 /* method array#ArrayMap#length for (self: ArrayMap[Object, nullable Object]): Int */
3354 long array__ArrayMap__length(val* self) {
3355 long var /* : Int */;
3356 val* var1 /* : Array[Couple[Object, nullable Object]] */;
3357 long var2 /* : Int */;
3358 var1 = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3359 if (unlikely(var1 == NULL)) {
3360 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _items");
3361 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 483);
3362 show_backtrace(1);
3363 }
3364 {
3365 var2 = array__AbstractArrayRead__length(var1);
3366 }
3367 var = var2;
3368 goto RET_LABEL;
3369 RET_LABEL:;
3370 return var;
3371 }
3372 /* method array#ArrayMap#length for (self: Object): Int */
3373 long VIRTUAL_array__ArrayMap__length(val* self) {
3374 long var /* : Int */;
3375 long var1 /* : Int */;
3376 var1 = array__ArrayMap__length(self);
3377 var = var1;
3378 RET_LABEL:;
3379 return var;
3380 }
3381 /* method array#ArrayMap#couple_iterator for (self: ArrayMap[Object, nullable Object]): Iterator[Couple[Object, nullable Object]] */
3382 val* array__ArrayMap__couple_iterator(val* self) {
3383 val* var /* : Iterator[Couple[Object, nullable Object]] */;
3384 val* var1 /* : Array[Couple[Object, nullable Object]] */;
3385 val* var2 /* : ArrayIterator[nullable Object] */;
3386 var1 = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3387 if (unlikely(var1 == NULL)) {
3388 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _items");
3389 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 485);
3390 show_backtrace(1);
3391 }
3392 {
3393 var2 = array__AbstractArrayRead__iterator(var1);
3394 }
3395 var = var2;
3396 goto RET_LABEL;
3397 RET_LABEL:;
3398 return var;
3399 }
3400 /* method array#ArrayMap#couple_iterator for (self: Object): Iterator[Couple[Object, nullable Object]] */
3401 val* VIRTUAL_array__ArrayMap__couple_iterator(val* self) {
3402 val* var /* : Iterator[Couple[Object, nullable Object]] */;
3403 val* var1 /* : Iterator[Couple[Object, nullable Object]] */;
3404 var1 = array__ArrayMap__couple_iterator(self);
3405 var = var1;
3406 RET_LABEL:;
3407 return var;
3408 }
3409 /* method array#ArrayMap#is_empty for (self: ArrayMap[Object, nullable Object]): Bool */
3410 short int array__ArrayMap__is_empty(val* self) {
3411 short int var /* : Bool */;
3412 val* var1 /* : Array[Couple[Object, nullable Object]] */;
3413 short int var2 /* : Bool */;
3414 var1 = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3415 if (unlikely(var1 == NULL)) {
3416 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _items");
3417 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 487);
3418 show_backtrace(1);
3419 }
3420 {
3421 var2 = array__AbstractArrayRead__is_empty(var1);
3422 }
3423 var = var2;
3424 goto RET_LABEL;
3425 RET_LABEL:;
3426 return var;
3427 }
3428 /* method array#ArrayMap#is_empty for (self: Object): Bool */
3429 short int VIRTUAL_array__ArrayMap__is_empty(val* self) {
3430 short int var /* : Bool */;
3431 short int var1 /* : Bool */;
3432 var1 = array__ArrayMap__is_empty(self);
3433 var = var1;
3434 RET_LABEL:;
3435 return var;
3436 }
3437 /* method array#ArrayMap#clear for (self: ArrayMap[Object, nullable Object]) */
3438 void array__ArrayMap__clear(val* self) {
3439 val* var /* : Array[Couple[Object, nullable Object]] */;
3440 var = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3441 if (unlikely(var == NULL)) {
3442 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _items");
3443 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 489);
3444 show_backtrace(1);
3445 }
3446 {
3447 array__AbstractArray__clear(var); /* Direct call array#AbstractArray#clear on <var:Array[Couple[Object, nullable Object]]>*/
3448 }
3449 RET_LABEL:;
3450 }
3451 /* method array#ArrayMap#clear for (self: Object) */
3452 void VIRTUAL_array__ArrayMap__clear(val* self) {
3453 array__ArrayMap__clear(self); /* Direct call array#ArrayMap#clear on <self:Object(ArrayMap[Object, nullable Object])>*/
3454 RET_LABEL:;
3455 }
3456 /* method array#ArrayMap#remove_at_index for (self: ArrayMap[Object, nullable Object], Int) */
3457 void array__ArrayMap__remove_at_index(val* self, long p0) {
3458 long var_i /* var i: Int */;
3459 val* var /* : Array[Couple[Object, nullable Object]] */;
3460 val* var1 /* : Array[Couple[Object, nullable Object]] */;
3461 val* var2 /* : nullable Object */;
3462 val* var3 /* : Array[Couple[Object, nullable Object]] */;
3463 val* var4 /* : nullable Object */;
3464 var_i = p0;
3465 var = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3466 if (unlikely(var == NULL)) {
3467 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _items");
3468 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 510);
3469 show_backtrace(1);
3470 }
3471 var1 = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3472 if (unlikely(var1 == NULL)) {
3473 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _items");
3474 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 510);
3475 show_backtrace(1);
3476 }
3477 {
3478 var2 = abstract_collection__SequenceRead__last(var1);
3479 }
3480 {
3481 array__Array___91d_93d_61d(var, var_i, var2); /* Direct call array#Array#[]= on <var:Array[Couple[Object, nullable Object]]>*/
3482 }
3483 var3 = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3484 if (unlikely(var3 == NULL)) {
3485 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _items");
3486 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 511);
3487 show_backtrace(1);
3488 }
3489 {
3490 var4 = array__AbstractArray__pop(var3);
3491 }
3492 var4;
3493 RET_LABEL:;
3494 }
3495 /* method array#ArrayMap#remove_at_index for (self: Object, Int) */
3496 void VIRTUAL_array__ArrayMap__remove_at_index(val* self, long p0) {
3497 array__ArrayMap__remove_at_index(self, p0); /* Direct call array#ArrayMap#remove_at_index on <self:Object(ArrayMap[Object, nullable Object])>*/
3498 RET_LABEL:;
3499 }
3500 /* method array#ArrayMap#index for (self: ArrayMap[Object, nullable Object], Object): Int */
3501 long array__ArrayMap__index(val* self, val* p0) {
3502 long var /* : Int */;
3503 short int var1 /* : Bool */;
3504 int cltype;
3505 int idtype;
3506 const struct type* type_struct;
3507 const char* var_class_name;
3508 val* var_key /* var key: Object */;
3509 long var2 /* : Int */;
3510 long var_l /* var l: Int */;
3511 short int var3 /* : Bool */;
3512 val* var4 /* : Array[Couple[Object, nullable Object]] */;
3513 long var5 /* : Int */;
3514 short int var6 /* : Bool */;
3515 short int var8 /* : Bool */;
3516 int cltype9;
3517 int idtype10;
3518 const char* var_class_name11;
3519 short int var12 /* : Bool */;
3520 short int var_ /* var : Bool */;
3521 val* var13 /* : Array[Couple[Object, nullable Object]] */;
3522 val* var14 /* : nullable Object */;
3523 val* var15 /* : nullable Object */;
3524 val* var17 /* : nullable Object */;
3525 short int var18 /* : Bool */;
3526 short int var19 /* : Bool */;
3527 long var20 /* : Int */;
3528 long var_i /* var i: Int */;
3529 val* var21 /* : Array[Couple[Object, nullable Object]] */;
3530 long var22 /* : Int */;
3531 short int var23 /* : Bool */;
3532 short int var25 /* : Bool */;
3533 int cltype26;
3534 int idtype27;
3535 const char* var_class_name28;
3536 short int var29 /* : Bool */;
3537 val* var30 /* : Array[Couple[Object, nullable Object]] */;
3538 val* var31 /* : nullable Object */;
3539 val* var32 /* : nullable Object */;
3540 val* var34 /* : nullable Object */;
3541 short int var35 /* : Bool */;
3542 short int var36 /* : Bool */;
3543 long var37 /* : Int */;
3544 long var38 /* : Int */;
3545 short int var40 /* : Bool */;
3546 int cltype41;
3547 int idtype42;
3548 const char* var_class_name43;
3549 long var44 /* : Int */;
3550 long var45 /* : Int */;
3551 long var46 /* : Int */;
3552 long var48 /* : Int */;
3553 /* Covariant cast for argument 0 (key) <p0:Object> isa ArrayMap#0 */
3554 /* <p0:Object> isa ArrayMap#0 */
3555 type_struct = self->type->resolution_table->types[COLOR_array__ArrayMap_FT0];
3556 cltype = type_struct->color;
3557 idtype = type_struct->id;
3558 if(cltype >= p0->type->table_size) {
3559 var1 = 0;
3560 } else {
3561 var1 = p0->type->type_table[cltype] == idtype;
3562 }
3563 if (unlikely(!var1)) {
3564 var_class_name = p0 == NULL ? "null" : p0->type->name;
3565 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "ArrayMap#0", var_class_name);
3566 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 517);
3567 show_backtrace(1);
3568 }
3569 var_key = p0;
3570 var2 = self->attrs[COLOR_array__ArrayMap___last_index].l; /* _last_index on <self:ArrayMap[Object, nullable Object]> */
3571 var_l = var2;
3572 var4 = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3573 if (unlikely(var4 == NULL)) {
3574 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _items");
3575 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 522);
3576 show_backtrace(1);
3577 }
3578 {
3579 var5 = array__AbstractArrayRead__length(var4);
3580 }
3581 {
3582 { /* Inline kernel#Int#< (var_l,var5) on <var_l:Int> */
3583 /* Covariant cast for argument 0 (i) <var5:Int> isa OTHER */
3584 /* <var5:Int> isa OTHER */
3585 var8 = 1; /* easy <var5:Int> isa OTHER*/
3586 if (unlikely(!var8)) {
3587 var_class_name11 = type_kernel__Int.name;
3588 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name11);
3589 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 325);
3590 show_backtrace(1);
3591 }
3592 var12 = var_l < var5;
3593 var6 = var12;
3594 goto RET_LABEL7;
3595 RET_LABEL7:(void)0;
3596 }
3597 }
3598 var_ = var6;
3599 if (var6){
3600 var13 = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3601 if (unlikely(var13 == NULL)) {
3602 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _items");
3603 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 522);
3604 show_backtrace(1);
3605 }
3606 {
3607 var14 = array__Array___91d_93d(var13, var_l);
3608 }
3609 {
3610 { /* Inline abstract_collection#Couple#first (var14) on <var14:nullable Object(Couple[Object, nullable Object])> */
3611 var17 = var14->attrs[COLOR_abstract_collection__Couple___first].val; /* _first on <var14:nullable Object(Couple[Object, nullable Object])> */
3612 var15 = var17;
3613 RET_LABEL16:(void)0;
3614 }
3615 }
3616 {
3617 var19 = ((short int (*)(val*, val*))(var15->class->vft[COLOR_kernel__Object___61d_61d]))(var15, var_key) /* == on <var15:nullable Object(Object)>*/;
3618 var18 = var19;
3619 }
3620 var3 = var18;
3621 } else {
3622 var3 = var_;
3623 }
3624 if (var3){
3625 var = var_l;
3626 goto RET_LABEL;
3627 } else {
3628 }
3629 var20 = 0;
3630 var_i = var20;
3631 for(;;) {
3632 var21 = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3633 if (unlikely(var21 == NULL)) {
3634 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _items");
3635 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 525);
3636 show_backtrace(1);
3637 }
3638 {
3639 var22 = array__AbstractArrayRead__length(var21);
3640 }
3641 {
3642 { /* Inline kernel#Int#< (var_i,var22) on <var_i:Int> */
3643 /* Covariant cast for argument 0 (i) <var22:Int> isa OTHER */
3644 /* <var22:Int> isa OTHER */
3645 var25 = 1; /* easy <var22:Int> isa OTHER*/
3646 if (unlikely(!var25)) {
3647 var_class_name28 = type_kernel__Int.name;
3648 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name28);
3649 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 325);
3650 show_backtrace(1);
3651 }
3652 var29 = var_i < var22;
3653 var23 = var29;
3654 goto RET_LABEL24;
3655 RET_LABEL24:(void)0;
3656 }
3657 }
3658 if (!var23) break;
3659 var30 = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3660 if (unlikely(var30 == NULL)) {
3661 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _items");
3662 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 526);
3663 show_backtrace(1);
3664 }
3665 {
3666 var31 = array__Array___91d_93d(var30, var_i);
3667 }
3668 {
3669 { /* Inline abstract_collection#Couple#first (var31) on <var31:nullable Object(Couple[Object, nullable Object])> */
3670 var34 = var31->attrs[COLOR_abstract_collection__Couple___first].val; /* _first on <var31:nullable Object(Couple[Object, nullable Object])> */
3671 var32 = var34;
3672 RET_LABEL33:(void)0;
3673 }
3674 }
3675 {
3676 var36 = ((short int (*)(val*, val*))(var32->class->vft[COLOR_kernel__Object___61d_61d]))(var32, var_key) /* == on <var32:nullable Object(Object)>*/;
3677 var35 = var36;
3678 }
3679 if (var35){
3680 self->attrs[COLOR_array__ArrayMap___last_index].l = var_i; /* _last_index on <self:ArrayMap[Object, nullable Object]> */
3681 var = var_i;
3682 goto RET_LABEL;
3683 } else {
3684 }
3685 var37 = 1;
3686 {
3687 { /* Inline kernel#Int#+ (var_i,var37) on <var_i:Int> */
3688 /* Covariant cast for argument 0 (i) <var37:Int> isa OTHER */
3689 /* <var37:Int> isa OTHER */
3690 var40 = 1; /* easy <var37:Int> isa OTHER*/
3691 if (unlikely(!var40)) {
3692 var_class_name43 = type_kernel__Int.name;
3693 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name43);
3694 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
3695 show_backtrace(1);
3696 }
3697 var44 = var_i + var37;
3698 var38 = var44;
3699 goto RET_LABEL39;
3700 RET_LABEL39:(void)0;
3701 }
3702 }
3703 var_i = var38;
3704 CONTINUE_label: (void)0;
3705 }
3706 BREAK_label: (void)0;
3707 var45 = 1;
3708 {
3709 { /* Inline kernel#Int#unary - (var45) on <var45:Int> */
3710 var48 = -var45;
3711 var46 = var48;
3712 goto RET_LABEL47;
3713 RET_LABEL47:(void)0;
3714 }
3715 }
3716 var = var46;
3717 goto RET_LABEL;
3718 RET_LABEL:;
3719 return var;
3720 }
3721 /* method array#ArrayMap#index for (self: Object, Object): Int */
3722 long VIRTUAL_array__ArrayMap__index(val* self, val* p0) {
3723 long var /* : Int */;
3724 long var1 /* : Int */;
3725 var1 = array__ArrayMap__index(self, p0);
3726 var = var1;
3727 RET_LABEL:;
3728 return var;
3729 }
3730 /* method array#ArrayMap#init for (self: ArrayMap[Object, nullable Object]) */
3731 void array__ArrayMap__init(val* self) {
3732 val* var /* : Array[Couple[Object, nullable Object]] */;
3733 var = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arrayabstract_collection__Couplearray__ArrayMap_FT0array__ArrayMap_FT1]);
3734 {
3735 array__Array__init(var); /* Direct call array#Array#init on <var:Array[Couple[Object, nullable Object]]>*/
3736 }
3737 self->attrs[COLOR_array__ArrayMap___items].val = var; /* _items on <self:ArrayMap[Object, nullable Object]> */
3738 RET_LABEL:;
3739 }
3740 /* method array#ArrayMap#init for (self: Object) */
3741 void VIRTUAL_array__ArrayMap__init(val* self) {
3742 array__ArrayMap__init(self); /* Direct call array#ArrayMap#init on <self:Object(ArrayMap[Object, nullable Object])>*/
3743 RET_LABEL:;
3744 }
3745 /* method array#ArrayMapKeys#map for (self: ArrayMapKeys[Object, nullable Object]): ArrayMap[Object, nullable Object] */
3746 val* array__ArrayMapKeys__map(val* self) {
3747 val* var /* : ArrayMap[Object, nullable Object] */;
3748 val* var1 /* : ArrayMap[Object, nullable Object] */;
3749 var1 = self->attrs[COLOR_array__ArrayMapKeys___map].val; /* _map on <self:ArrayMapKeys[Object, nullable Object]> */
3750 if (unlikely(var1 == NULL)) {
3751 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
3752 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 544);
3753 show_backtrace(1);
3754 }
3755 var = var1;
3756 RET_LABEL:;
3757 return var;
3758 }
3759 /* method array#ArrayMapKeys#map for (self: Object): ArrayMap[Object, nullable Object] */
3760 val* VIRTUAL_array__ArrayMapKeys__map(val* self) {
3761 val* var /* : ArrayMap[Object, nullable Object] */;
3762 val* var1 /* : ArrayMap[Object, nullable Object] */;
3763 val* var3 /* : ArrayMap[Object, nullable Object] */;
3764 { /* Inline array#ArrayMapKeys#map (self) on <self:Object(ArrayMapKeys[Object, nullable Object])> */
3765 var3 = self->attrs[COLOR_array__ArrayMapKeys___map].val; /* _map on <self:Object(ArrayMapKeys[Object, nullable Object])> */
3766 if (unlikely(var3 == NULL)) {
3767 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
3768 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 544);
3769 show_backtrace(1);
3770 }
3771 var1 = var3;
3772 RET_LABEL2:(void)0;
3773 }
3774 var = var1;
3775 RET_LABEL:;
3776 return var;
3777 }
3778 /* method array#ArrayMapKeys#first for (self: ArrayMapKeys[Object, nullable Object]): Object */
3779 val* array__ArrayMapKeys__first(val* self) {
3780 val* var /* : Object */;
3781 val* var1 /* : ArrayMap[Object, nullable Object] */;
3782 val* var3 /* : ArrayMap[Object, nullable Object] */;
3783 val* var4 /* : Array[Couple[Object, nullable Object]] */;
3784 val* var5 /* : nullable Object */;
3785 val* var6 /* : nullable Object */;
3786 val* var8 /* : nullable Object */;
3787 {
3788 { /* Inline array#ArrayMapKeys#map (self) on <self:ArrayMapKeys[Object, nullable Object]> */
3789 var3 = self->attrs[COLOR_array__ArrayMapKeys___map].val; /* _map on <self:ArrayMapKeys[Object, nullable Object]> */
3790 if (unlikely(var3 == NULL)) {
3791 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
3792 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 544);
3793 show_backtrace(1);
3794 }
3795 var1 = var3;
3796 RET_LABEL2:(void)0;
3797 }
3798 }
3799 var4 = var1->attrs[COLOR_array__ArrayMap___items].val; /* _items on <var1:ArrayMap[Object, nullable Object]> */
3800 if (unlikely(var4 == NULL)) {
3801 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _items");
3802 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 547);
3803 show_backtrace(1);
3804 }
3805 {
3806 var5 = abstract_collection__SequenceRead__first(var4);
3807 }
3808 {
3809 { /* Inline abstract_collection#Couple#first (var5) on <var5:nullable Object(Couple[Object, nullable Object])> */
3810 var8 = var5->attrs[COLOR_abstract_collection__Couple___first].val; /* _first on <var5:nullable Object(Couple[Object, nullable Object])> */
3811 var6 = var8;
3812 RET_LABEL7:(void)0;
3813 }
3814 }
3815 var = var6;
3816 goto RET_LABEL;
3817 RET_LABEL:;
3818 return var;
3819 }
3820 /* method array#ArrayMapKeys#first for (self: Object): nullable Object */
3821 val* VIRTUAL_array__ArrayMapKeys__first(val* self) {
3822 val* var /* : nullable Object */;
3823 val* var1 /* : Object */;
3824 var1 = array__ArrayMapKeys__first(self);
3825 var = var1;
3826 RET_LABEL:;
3827 return var;
3828 }
3829 /* method array#ArrayMapKeys#has for (self: ArrayMapKeys[Object, nullable Object], Object): Bool */
3830 short int array__ArrayMapKeys__has(val* self, val* p0) {
3831 short int var /* : Bool */;
3832 short int var1 /* : Bool */;
3833 int cltype;
3834 int idtype;
3835 const struct type* type_struct;
3836 const char* var_class_name;
3837 val* var_k /* var k: Object */;
3838 val* var2 /* : ArrayMap[Object, nullable Object] */;
3839 val* var4 /* : ArrayMap[Object, nullable Object] */;
3840 long var5 /* : Int */;
3841 long var6 /* : Int */;
3842 short int var7 /* : Bool */;
3843 short int var9 /* : Bool */;
3844 int cltype10;
3845 int idtype11;
3846 const char* var_class_name12;
3847 short int var13 /* : Bool */;
3848 /* Covariant cast for argument 0 (k) <p0:Object> isa Collection#0 */
3849 /* <p0:Object> isa Collection#0 */
3850 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collection_FT0];
3851 cltype = type_struct->color;
3852 idtype = type_struct->id;
3853 if(cltype >= p0->type->table_size) {
3854 var1 = 0;
3855 } else {
3856 var1 = p0->type->type_table[cltype] == idtype;
3857 }
3858 if (unlikely(!var1)) {
3859 var_class_name = p0 == NULL ? "null" : p0->type->name;
3860 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection#0", var_class_name);
3861 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 548);
3862 show_backtrace(1);
3863 }
3864 var_k = p0;
3865 {
3866 { /* Inline array#ArrayMapKeys#map (self) on <self:ArrayMapKeys[Object, nullable Object]> */
3867 var4 = self->attrs[COLOR_array__ArrayMapKeys___map].val; /* _map on <self:ArrayMapKeys[Object, nullable Object]> */
3868 if (unlikely(var4 == NULL)) {
3869 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
3870 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 544);
3871 show_backtrace(1);
3872 }
3873 var2 = var4;
3874 RET_LABEL3:(void)0;
3875 }
3876 }
3877 {
3878 var5 = array__ArrayMap__index(var2, var_k);
3879 }
3880 var6 = 0;
3881 {
3882 { /* Inline kernel#Int#>= (var5,var6) on <var5:Int> */
3883 /* Covariant cast for argument 0 (i) <var6:Int> isa OTHER */
3884 /* <var6:Int> isa OTHER */
3885 var9 = 1; /* easy <var6:Int> isa OTHER*/
3886 if (unlikely(!var9)) {
3887 var_class_name12 = type_kernel__Int.name;
3888 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name12);
3889 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 326);
3890 show_backtrace(1);
3891 }
3892 var13 = var5 >= var6;
3893 var7 = var13;
3894 goto RET_LABEL8;
3895 RET_LABEL8:(void)0;
3896 }
3897 }
3898 var = var7;
3899 goto RET_LABEL;
3900 RET_LABEL:;
3901 return var;
3902 }
3903 /* method array#ArrayMapKeys#has for (self: Object, nullable Object): Bool */
3904 short int VIRTUAL_array__ArrayMapKeys__has(val* self, val* p0) {
3905 short int var /* : Bool */;
3906 short int var1 /* : Bool */;
3907 var1 = array__ArrayMapKeys__has(self, p0);
3908 var = var1;
3909 RET_LABEL:;
3910 return var;
3911 }
3912 /* method array#ArrayMapKeys#is_empty for (self: ArrayMapKeys[Object, nullable Object]): Bool */
3913 short int array__ArrayMapKeys__is_empty(val* self) {
3914 short int var /* : Bool */;
3915 val* var1 /* : ArrayMap[Object, nullable Object] */;
3916 val* var3 /* : ArrayMap[Object, nullable Object] */;
3917 short int var4 /* : Bool */;
3918 {
3919 { /* Inline array#ArrayMapKeys#map (self) on <self:ArrayMapKeys[Object, nullable Object]> */
3920 var3 = self->attrs[COLOR_array__ArrayMapKeys___map].val; /* _map on <self:ArrayMapKeys[Object, nullable Object]> */
3921 if (unlikely(var3 == NULL)) {
3922 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
3923 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 544);
3924 show_backtrace(1);
3925 }
3926 var1 = var3;
3927 RET_LABEL2:(void)0;
3928 }
3929 }
3930 {
3931 var4 = array__ArrayMap__is_empty(var1);
3932 }
3933 var = var4;
3934 goto RET_LABEL;
3935 RET_LABEL:;
3936 return var;
3937 }
3938 /* method array#ArrayMapKeys#is_empty for (self: Object): Bool */
3939 short int VIRTUAL_array__ArrayMapKeys__is_empty(val* self) {
3940 short int var /* : Bool */;
3941 short int var1 /* : Bool */;
3942 var1 = array__ArrayMapKeys__is_empty(self);
3943 var = var1;
3944 RET_LABEL:;
3945 return var;
3946 }
3947 /* method array#ArrayMapKeys#length for (self: ArrayMapKeys[Object, nullable Object]): Int */
3948 long array__ArrayMapKeys__length(val* self) {
3949 long var /* : Int */;
3950 val* var1 /* : ArrayMap[Object, nullable Object] */;
3951 val* var3 /* : ArrayMap[Object, nullable Object] */;
3952 long var4 /* : Int */;
3953 {
3954 { /* Inline array#ArrayMapKeys#map (self) on <self:ArrayMapKeys[Object, nullable Object]> */
3955 var3 = self->attrs[COLOR_array__ArrayMapKeys___map].val; /* _map on <self:ArrayMapKeys[Object, nullable Object]> */
3956 if (unlikely(var3 == NULL)) {
3957 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
3958 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 544);
3959 show_backtrace(1);
3960 }
3961 var1 = var3;
3962 RET_LABEL2:(void)0;
3963 }
3964 }
3965 {
3966 var4 = array__ArrayMap__length(var1);
3967 }
3968 var = var4;
3969 goto RET_LABEL;
3970 RET_LABEL:;
3971 return var;
3972 }
3973 /* method array#ArrayMapKeys#length for (self: Object): Int */
3974 long VIRTUAL_array__ArrayMapKeys__length(val* self) {
3975 long var /* : Int */;
3976 long var1 /* : Int */;
3977 var1 = array__ArrayMapKeys__length(self);
3978 var = var1;
3979 RET_LABEL:;
3980 return var;
3981 }
3982 /* method array#ArrayMapKeys#iterator for (self: ArrayMapKeys[Object, nullable Object]): Iterator[Object] */
3983 val* array__ArrayMapKeys__iterator(val* self) {
3984 val* var /* : Iterator[Object] */;
3985 val* var1 /* : MapKeysIterator[Object, nullable Object] */;
3986 val* var2 /* : ArrayMap[Object, nullable Object] */;
3987 val* var4 /* : ArrayMap[Object, nullable Object] */;
3988 val* var5 /* : MapIterator[Object, nullable Object] */;
3989 short int var7 /* : Bool */;
3990 int cltype;
3991 int idtype;
3992 const struct type* type_struct;
3993 const char* var_class_name;
3994 var1 = NEW_abstract_collection__MapKeysIterator(self->type->resolution_table->types[COLOR_abstract_collection__MapKeysIteratorarray__ArrayMapKeys_FT0array__ArrayMapKeys_FT1]);
3995 {
3996 { /* Inline array#ArrayMapKeys#map (self) on <self:ArrayMapKeys[Object, nullable Object]> */
3997 var4 = self->attrs[COLOR_array__ArrayMapKeys___map].val; /* _map on <self:ArrayMapKeys[Object, nullable Object]> */
3998 if (unlikely(var4 == NULL)) {
3999 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
4000 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 544);
4001 show_backtrace(1);
4002 }
4003 var2 = var4;
4004 RET_LABEL3:(void)0;
4005 }
4006 }
4007 {
4008 var5 = abstract_collection__CoupleMap__iterator(var2);
4009 }
4010 {
4011 { /* Inline abstract_collection#MapKeysIterator#init (var1,var5) on <var1:MapKeysIterator[Object, nullable Object]> */
4012 /* Covariant cast for argument 0 (original_iterator) <var5:MapIterator[Object, nullable Object]> isa MapIterator[MapKeysIterator#0, MapKeysIterator#1] */
4013 /* <var5:MapIterator[Object, nullable Object]> isa MapIterator[MapKeysIterator#0, MapKeysIterator#1] */
4014 type_struct = var1->type->resolution_table->types[COLOR_abstract_collection__MapIteratorabstract_collection__MapKeysIterator_FT0abstract_collection__MapKeysIterator_FT1];
4015 cltype = type_struct->color;
4016 idtype = type_struct->id;
4017 if(cltype >= var5->type->table_size) {
4018 var7 = 0;
4019 } else {
4020 var7 = var5->type->type_table[cltype] == idtype;
4021 }
4022 if (unlikely(!var7)) {
4023 var_class_name = var5 == NULL ? "null" : var5->type->name;
4024 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MapIterator[MapKeysIterator#0, MapKeysIterator#1]", var_class_name);
4025 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 528);
4026 show_backtrace(1);
4027 }
4028 var1->attrs[COLOR_abstract_collection__MapKeysIterator___original_iterator].val = var5; /* _original_iterator on <var1:MapKeysIterator[Object, nullable Object]> */
4029 RET_LABEL6:(void)0;
4030 }
4031 }
4032 var = var1;
4033 goto RET_LABEL;
4034 RET_LABEL:;
4035 return var;
4036 }
4037 /* method array#ArrayMapKeys#iterator for (self: Object): Iterator[nullable Object] */
4038 val* VIRTUAL_array__ArrayMapKeys__iterator(val* self) {
4039 val* var /* : Iterator[nullable Object] */;
4040 val* var1 /* : Iterator[Object] */;
4041 var1 = array__ArrayMapKeys__iterator(self);
4042 var = var1;
4043 RET_LABEL:;
4044 return var;
4045 }
4046 /* method array#ArrayMapKeys#clear for (self: ArrayMapKeys[Object, nullable Object]) */
4047 void array__ArrayMapKeys__clear(val* self) {
4048 val* var /* : ArrayMap[Object, nullable Object] */;
4049 val* var2 /* : ArrayMap[Object, nullable Object] */;
4050 {
4051 { /* Inline array#ArrayMapKeys#map (self) on <self:ArrayMapKeys[Object, nullable Object]> */
4052 var2 = self->attrs[COLOR_array__ArrayMapKeys___map].val; /* _map on <self:ArrayMapKeys[Object, nullable Object]> */
4053 if (unlikely(var2 == NULL)) {
4054 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
4055 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 544);
4056 show_backtrace(1);
4057 }
4058 var = var2;
4059 RET_LABEL1:(void)0;
4060 }
4061 }
4062 {
4063 array__ArrayMap__clear(var); /* Direct call array#ArrayMap#clear on <var:ArrayMap[Object, nullable Object]>*/
4064 }
4065 RET_LABEL:;
4066 }
4067 /* method array#ArrayMapKeys#clear for (self: Object) */
4068 void VIRTUAL_array__ArrayMapKeys__clear(val* self) {
4069 array__ArrayMapKeys__clear(self); /* Direct call array#ArrayMapKeys#clear on <self:Object(ArrayMapKeys[Object, nullable Object])>*/
4070 RET_LABEL:;
4071 }
4072 /* method array#ArrayMapKeys#remove for (self: ArrayMapKeys[Object, nullable Object], Object) */
4073 void array__ArrayMapKeys__remove(val* self, val* p0) {
4074 short int var /* : Bool */;
4075 int cltype;
4076 int idtype;
4077 const struct type* type_struct;
4078 const char* var_class_name;
4079 val* var_key /* var key: Object */;
4080 val* var1 /* : ArrayMap[Object, nullable Object] */;
4081 val* var3 /* : ArrayMap[Object, nullable Object] */;
4082 long var4 /* : Int */;
4083 long var_i /* var i: Int */;
4084 long var5 /* : Int */;
4085 short int var6 /* : Bool */;
4086 short int var8 /* : Bool */;
4087 int cltype9;
4088 int idtype10;
4089 const char* var_class_name11;
4090 short int var12 /* : Bool */;
4091 val* var13 /* : ArrayMap[Object, nullable Object] */;
4092 val* var15 /* : ArrayMap[Object, nullable Object] */;
4093 /* Covariant cast for argument 0 (key) <p0:Object> isa RemovableCollection#0 */
4094 /* <p0:Object> isa RemovableCollection#0 */
4095 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__RemovableCollection_FT0];
4096 cltype = type_struct->color;
4097 idtype = type_struct->id;
4098 if(cltype >= p0->type->table_size) {
4099 var = 0;
4100 } else {
4101 var = p0->type->type_table[cltype] == idtype;
4102 }
4103 if (unlikely(!var)) {
4104 var_class_name = p0 == NULL ? "null" : p0->type->name;
4105 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "RemovableCollection#0", var_class_name);
4106 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 554);
4107 show_backtrace(1);
4108 }
4109 var_key = p0;
4110 {
4111 { /* Inline array#ArrayMapKeys#map (self) on <self:ArrayMapKeys[Object, nullable Object]> */
4112 var3 = self->attrs[COLOR_array__ArrayMapKeys___map].val; /* _map on <self:ArrayMapKeys[Object, nullable Object]> */
4113 if (unlikely(var3 == NULL)) {
4114 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
4115 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 544);
4116 show_backtrace(1);
4117 }
4118 var1 = var3;
4119 RET_LABEL2:(void)0;
4120 }
4121 }
4122 {
4123 var4 = array__ArrayMap__index(var1, var_key);
4124 }
4125 var_i = var4;
4126 var5 = 0;
4127 {
4128 { /* Inline kernel#Int#>= (var_i,var5) on <var_i:Int> */
4129 /* Covariant cast for argument 0 (i) <var5:Int> isa OTHER */
4130 /* <var5:Int> isa OTHER */
4131 var8 = 1; /* easy <var5:Int> isa OTHER*/
4132 if (unlikely(!var8)) {
4133 var_class_name11 = type_kernel__Int.name;
4134 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name11);
4135 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 326);
4136 show_backtrace(1);
4137 }
4138 var12 = var_i >= var5;
4139 var6 = var12;
4140 goto RET_LABEL7;
4141 RET_LABEL7:(void)0;
4142 }
4143 }
4144 if (var6){
4145 {
4146 { /* Inline array#ArrayMapKeys#map (self) on <self:ArrayMapKeys[Object, nullable Object]> */
4147 var15 = self->attrs[COLOR_array__ArrayMapKeys___map].val; /* _map on <self:ArrayMapKeys[Object, nullable Object]> */
4148 if (unlikely(var15 == NULL)) {
4149 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
4150 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 544);
4151 show_backtrace(1);
4152 }
4153 var13 = var15;
4154 RET_LABEL14:(void)0;
4155 }
4156 }
4157 {
4158 array__ArrayMap__remove_at_index(var13, var_i); /* Direct call array#ArrayMap#remove_at_index on <var13:ArrayMap[Object, nullable Object]>*/
4159 }
4160 } else {
4161 }
4162 RET_LABEL:;
4163 }
4164 /* method array#ArrayMapKeys#remove for (self: Object, nullable Object) */
4165 void VIRTUAL_array__ArrayMapKeys__remove(val* self, val* p0) {
4166 array__ArrayMapKeys__remove(self, p0); /* Direct call array#ArrayMapKeys#remove on <self:Object(ArrayMapKeys[Object, nullable Object])>*/
4167 RET_LABEL:;
4168 }
4169 /* method array#ArrayMapKeys#init for (self: ArrayMapKeys[Object, nullable Object], ArrayMap[Object, nullable Object]) */
4170 void array__ArrayMapKeys__init(val* self, val* p0) {
4171 short int var /* : Bool */;
4172 int cltype;
4173 int idtype;
4174 const struct type* type_struct;
4175 const char* var_class_name;
4176 /* Covariant cast for argument 0 (map) <p0:ArrayMap[Object, nullable Object]> isa ArrayMap[ArrayMapKeys#0, ArrayMapKeys#1] */
4177 /* <p0:ArrayMap[Object, nullable Object]> isa ArrayMap[ArrayMapKeys#0, ArrayMapKeys#1] */
4178 type_struct = self->type->resolution_table->types[COLOR_array__ArrayMaparray__ArrayMapKeys_FT0array__ArrayMapKeys_FT1];
4179 cltype = type_struct->color;
4180 idtype = type_struct->id;
4181 if(cltype >= p0->type->table_size) {
4182 var = 0;
4183 } else {
4184 var = p0->type->type_table[cltype] == idtype;
4185 }
4186 if (unlikely(!var)) {
4187 var_class_name = p0 == NULL ? "null" : p0->type->name;
4188 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "ArrayMap[ArrayMapKeys#0, ArrayMapKeys#1]", var_class_name);
4189 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 542);
4190 show_backtrace(1);
4191 }
4192 self->attrs[COLOR_array__ArrayMapKeys___map].val = p0; /* _map on <self:ArrayMapKeys[Object, nullable Object]> */
4193 RET_LABEL:;
4194 }
4195 /* method array#ArrayMapKeys#init for (self: Object, ArrayMap[Object, nullable Object]) */
4196 void VIRTUAL_array__ArrayMapKeys__init(val* self, val* p0) {
4197 short int var /* : Bool */;
4198 int cltype;
4199 int idtype;
4200 const struct type* type_struct;
4201 const char* var_class_name;
4202 { /* Inline array#ArrayMapKeys#init (self,p0) on <self:Object(ArrayMapKeys[Object, nullable Object])> */
4203 /* Covariant cast for argument 0 (map) <p0:ArrayMap[Object, nullable Object]> isa ArrayMap[ArrayMapKeys#0, ArrayMapKeys#1] */
4204 /* <p0:ArrayMap[Object, nullable Object]> isa ArrayMap[ArrayMapKeys#0, ArrayMapKeys#1] */
4205 type_struct = self->type->resolution_table->types[COLOR_array__ArrayMaparray__ArrayMapKeys_FT0array__ArrayMapKeys_FT1];
4206 cltype = type_struct->color;
4207 idtype = type_struct->id;
4208 if(cltype >= p0->type->table_size) {
4209 var = 0;
4210 } else {
4211 var = p0->type->type_table[cltype] == idtype;
4212 }
4213 if (unlikely(!var)) {
4214 var_class_name = p0 == NULL ? "null" : p0->type->name;
4215 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "ArrayMap[ArrayMapKeys#0, ArrayMapKeys#1]", var_class_name);
4216 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 542);
4217 show_backtrace(1);
4218 }
4219 self->attrs[COLOR_array__ArrayMapKeys___map].val = p0; /* _map on <self:Object(ArrayMapKeys[Object, nullable Object])> */
4220 RET_LABEL1:(void)0;
4221 }
4222 RET_LABEL:;
4223 }
4224 /* method array#ArrayMapValues#map for (self: ArrayMapValues[Object, nullable Object]): ArrayMap[Object, nullable Object] */
4225 val* array__ArrayMapValues__map(val* self) {
4226 val* var /* : ArrayMap[Object, nullable Object] */;
4227 val* var1 /* : ArrayMap[Object, nullable Object] */;
4228 var1 = self->attrs[COLOR_array__ArrayMapValues___map].val; /* _map on <self:ArrayMapValues[Object, nullable Object]> */
4229 if (unlikely(var1 == NULL)) {
4230 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
4231 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 564);
4232 show_backtrace(1);
4233 }
4234 var = var1;
4235 RET_LABEL:;
4236 return var;
4237 }
4238 /* method array#ArrayMapValues#map for (self: Object): ArrayMap[Object, nullable Object] */
4239 val* VIRTUAL_array__ArrayMapValues__map(val* self) {
4240 val* var /* : ArrayMap[Object, nullable Object] */;
4241 val* var1 /* : ArrayMap[Object, nullable Object] */;
4242 val* var3 /* : ArrayMap[Object, nullable Object] */;
4243 { /* Inline array#ArrayMapValues#map (self) on <self:Object(ArrayMapValues[Object, nullable Object])> */
4244 var3 = self->attrs[COLOR_array__ArrayMapValues___map].val; /* _map on <self:Object(ArrayMapValues[Object, nullable Object])> */
4245 if (unlikely(var3 == NULL)) {
4246 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
4247 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 564);
4248 show_backtrace(1);
4249 }
4250 var1 = var3;
4251 RET_LABEL2:(void)0;
4252 }
4253 var = var1;
4254 RET_LABEL:;
4255 return var;
4256 }
4257 /* method array#ArrayMapValues#first for (self: ArrayMapValues[Object, nullable Object]): nullable Object */
4258 val* array__ArrayMapValues__first(val* self) {
4259 val* var /* : nullable Object */;
4260 val* var1 /* : ArrayMap[Object, nullable Object] */;
4261 val* var3 /* : ArrayMap[Object, nullable Object] */;
4262 val* var4 /* : Array[Couple[Object, nullable Object]] */;
4263 val* var5 /* : nullable Object */;
4264 val* var6 /* : nullable Object */;
4265 val* var8 /* : nullable Object */;
4266 {
4267 { /* Inline array#ArrayMapValues#map (self) on <self:ArrayMapValues[Object, nullable Object]> */
4268 var3 = self->attrs[COLOR_array__ArrayMapValues___map].val; /* _map on <self:ArrayMapValues[Object, nullable Object]> */
4269 if (unlikely(var3 == NULL)) {
4270 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
4271 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 564);
4272 show_backtrace(1);
4273 }
4274 var1 = var3;
4275 RET_LABEL2:(void)0;
4276 }
4277 }
4278 var4 = var1->attrs[COLOR_array__ArrayMap___items].val; /* _items on <var1:ArrayMap[Object, nullable Object]> */
4279 if (unlikely(var4 == NULL)) {
4280 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _items");
4281 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 566);
4282 show_backtrace(1);
4283 }
4284 {
4285 var5 = abstract_collection__SequenceRead__first(var4);
4286 }
4287 {
4288 { /* Inline abstract_collection#Couple#second (var5) on <var5:nullable Object(Couple[Object, nullable Object])> */
4289 var8 = var5->attrs[COLOR_abstract_collection__Couple___second].val; /* _second on <var5:nullable Object(Couple[Object, nullable Object])> */
4290 var6 = var8;
4291 RET_LABEL7:(void)0;
4292 }
4293 }
4294 var = var6;
4295 goto RET_LABEL;
4296 RET_LABEL:;
4297 return var;
4298 }
4299 /* method array#ArrayMapValues#first for (self: Object): nullable Object */
4300 val* VIRTUAL_array__ArrayMapValues__first(val* self) {
4301 val* var /* : nullable Object */;
4302 val* var1 /* : nullable Object */;
4303 var1 = array__ArrayMapValues__first(self);
4304 var = var1;
4305 RET_LABEL:;
4306 return var;
4307 }
4308 /* method array#ArrayMapValues#is_empty for (self: ArrayMapValues[Object, nullable Object]): Bool */
4309 short int array__ArrayMapValues__is_empty(val* self) {
4310 short int var /* : Bool */;
4311 val* var1 /* : ArrayMap[Object, nullable Object] */;
4312 val* var3 /* : ArrayMap[Object, nullable Object] */;
4313 short int var4 /* : Bool */;
4314 {
4315 { /* Inline array#ArrayMapValues#map (self) on <self:ArrayMapValues[Object, nullable Object]> */
4316 var3 = self->attrs[COLOR_array__ArrayMapValues___map].val; /* _map on <self:ArrayMapValues[Object, nullable Object]> */
4317 if (unlikely(var3 == NULL)) {
4318 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
4319 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 564);
4320 show_backtrace(1);
4321 }
4322 var1 = var3;
4323 RET_LABEL2:(void)0;
4324 }
4325 }
4326 {
4327 var4 = array__ArrayMap__is_empty(var1);
4328 }
4329 var = var4;
4330 goto RET_LABEL;
4331 RET_LABEL:;
4332 return var;
4333 }
4334 /* method array#ArrayMapValues#is_empty for (self: Object): Bool */
4335 short int VIRTUAL_array__ArrayMapValues__is_empty(val* self) {
4336 short int var /* : Bool */;
4337 short int var1 /* : Bool */;
4338 var1 = array__ArrayMapValues__is_empty(self);
4339 var = var1;
4340 RET_LABEL:;
4341 return var;
4342 }
4343 /* method array#ArrayMapValues#length for (self: ArrayMapValues[Object, nullable Object]): Int */
4344 long array__ArrayMapValues__length(val* self) {
4345 long var /* : Int */;
4346 val* var1 /* : ArrayMap[Object, nullable Object] */;
4347 val* var3 /* : ArrayMap[Object, nullable Object] */;
4348 long var4 /* : Int */;
4349 {
4350 { /* Inline array#ArrayMapValues#map (self) on <self:ArrayMapValues[Object, nullable Object]> */
4351 var3 = self->attrs[COLOR_array__ArrayMapValues___map].val; /* _map on <self:ArrayMapValues[Object, nullable Object]> */
4352 if (unlikely(var3 == NULL)) {
4353 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
4354 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 564);
4355 show_backtrace(1);
4356 }
4357 var1 = var3;
4358 RET_LABEL2:(void)0;
4359 }
4360 }
4361 {
4362 var4 = array__ArrayMap__length(var1);
4363 }
4364 var = var4;
4365 goto RET_LABEL;
4366 RET_LABEL:;
4367 return var;
4368 }
4369 /* method array#ArrayMapValues#length for (self: Object): Int */
4370 long VIRTUAL_array__ArrayMapValues__length(val* self) {
4371 long var /* : Int */;
4372 long var1 /* : Int */;
4373 var1 = array__ArrayMapValues__length(self);
4374 var = var1;
4375 RET_LABEL:;
4376 return var;
4377 }
4378 /* method array#ArrayMapValues#iterator for (self: ArrayMapValues[Object, nullable Object]): Iterator[nullable Object] */
4379 val* array__ArrayMapValues__iterator(val* self) {
4380 val* var /* : Iterator[nullable Object] */;
4381 val* var1 /* : MapValuesIterator[Object, nullable Object] */;
4382 val* var2 /* : ArrayMap[Object, nullable Object] */;
4383 val* var4 /* : ArrayMap[Object, nullable Object] */;
4384 val* var5 /* : MapIterator[Object, nullable Object] */;
4385 short int var7 /* : Bool */;
4386 int cltype;
4387 int idtype;
4388 const struct type* type_struct;
4389 const char* var_class_name;
4390 var1 = NEW_abstract_collection__MapValuesIterator(self->type->resolution_table->types[COLOR_abstract_collection__MapValuesIteratorarray__ArrayMapValues_FT0array__ArrayMapValues_FT1]);
4391 {
4392 { /* Inline array#ArrayMapValues#map (self) on <self:ArrayMapValues[Object, nullable Object]> */
4393 var4 = self->attrs[COLOR_array__ArrayMapValues___map].val; /* _map on <self:ArrayMapValues[Object, nullable Object]> */
4394 if (unlikely(var4 == NULL)) {
4395 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
4396 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 564);
4397 show_backtrace(1);
4398 }
4399 var2 = var4;
4400 RET_LABEL3:(void)0;
4401 }
4402 }
4403 {
4404 var5 = abstract_collection__CoupleMap__iterator(var2);
4405 }
4406 {
4407 { /* Inline abstract_collection#MapValuesIterator#init (var1,var5) on <var1:MapValuesIterator[Object, nullable Object]> */
4408 /* Covariant cast for argument 0 (original_iterator) <var5:MapIterator[Object, nullable Object]> isa MapIterator[MapValuesIterator#0, MapValuesIterator#1] */
4409 /* <var5:MapIterator[Object, nullable Object]> isa MapIterator[MapValuesIterator#0, MapValuesIterator#1] */
4410 type_struct = var1->type->resolution_table->types[COLOR_abstract_collection__MapIteratorabstract_collection__MapValuesIterator_FT0abstract_collection__MapValuesIterator_FT1];
4411 cltype = type_struct->color;
4412 idtype = type_struct->id;
4413 if(cltype >= var5->type->table_size) {
4414 var7 = 0;
4415 } else {
4416 var7 = var5->type->type_table[cltype] == idtype;
4417 }
4418 if (unlikely(!var7)) {
4419 var_class_name = var5 == NULL ? "null" : var5->type->name;
4420 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MapIterator[MapValuesIterator#0, MapValuesIterator#1]", var_class_name);
4421 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 539);
4422 show_backtrace(1);
4423 }
4424 var1->attrs[COLOR_abstract_collection__MapValuesIterator___original_iterator].val = var5; /* _original_iterator on <var1:MapValuesIterator[Object, nullable Object]> */
4425 RET_LABEL6:(void)0;
4426 }
4427 }
4428 var = var1;
4429 goto RET_LABEL;
4430 RET_LABEL:;
4431 return var;
4432 }
4433 /* method array#ArrayMapValues#iterator for (self: Object): Iterator[nullable Object] */
4434 val* VIRTUAL_array__ArrayMapValues__iterator(val* self) {
4435 val* var /* : Iterator[nullable Object] */;
4436 val* var1 /* : Iterator[nullable Object] */;
4437 var1 = array__ArrayMapValues__iterator(self);
4438 var = var1;
4439 RET_LABEL:;
4440 return var;
4441 }
4442 /* method array#ArrayMapValues#has for (self: ArrayMapValues[Object, nullable Object], nullable Object): Bool */
4443 short int array__ArrayMapValues__has(val* self, val* p0) {
4444 short int var /* : Bool */;
4445 short int var1 /* : Bool */;
4446 int cltype;
4447 int idtype;
4448 const struct type* type_struct;
4449 short int is_nullable;
4450 const char* var_class_name;
4451 val* var_item /* var item: nullable Object */;
4452 val* var2 /* : ArrayMap[Object, nullable Object] */;
4453 val* var4 /* : ArrayMap[Object, nullable Object] */;
4454 val* var5 /* : Array[Couple[Object, nullable Object]] */;
4455 val* var6 /* : ArrayIterator[nullable Object] */;
4456 short int var7 /* : Bool */;
4457 val* var8 /* : nullable Object */;
4458 val* var_i /* var i: Couple[Object, nullable Object] */;
4459 val* var9 /* : nullable Object */;
4460 val* var11 /* : nullable Object */;
4461 short int var12 /* : Bool */;
4462 short int var13 /* : Bool */;
4463 short int var14 /* : Bool */;
4464 short int var15 /* : Bool */;
4465 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa Collection#0 */
4466 /* <p0:nullable Object> isa Collection#0 */
4467 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collection_FT0];
4468 cltype = type_struct->color;
4469 idtype = type_struct->id;
4470 is_nullable = type_struct->is_nullable;
4471 if(p0 == NULL) {
4472 var1 = is_nullable;
4473 } else {
4474 if(cltype >= p0->type->table_size) {
4475 var1 = 0;
4476 } else {
4477 var1 = p0->type->type_table[cltype] == idtype;
4478 }
4479 }
4480 if (unlikely(!var1)) {
4481 var_class_name = p0 == NULL ? "null" : p0->type->name;
4482 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection#0", var_class_name);
4483 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 571);
4484 show_backtrace(1);
4485 }
4486 var_item = p0;
4487 {
4488 { /* Inline array#ArrayMapValues#map (self) on <self:ArrayMapValues[Object, nullable Object]> */
4489 var4 = self->attrs[COLOR_array__ArrayMapValues___map].val; /* _map on <self:ArrayMapValues[Object, nullable Object]> */
4490 if (unlikely(var4 == NULL)) {
4491 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
4492 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 564);
4493 show_backtrace(1);
4494 }
4495 var2 = var4;
4496 RET_LABEL3:(void)0;
4497 }
4498 }
4499 var5 = var2->attrs[COLOR_array__ArrayMap___items].val; /* _items on <var2:ArrayMap[Object, nullable Object]> */
4500 if (unlikely(var5 == NULL)) {
4501 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _items");
4502 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 574);
4503 show_backtrace(1);
4504 }
4505 {
4506 var6 = array__AbstractArrayRead__iterator(var5);
4507 }
4508 for(;;) {
4509 {
4510 var7 = array__ArrayIterator__is_ok(var6);
4511 }
4512 if(!var7) break;
4513 {
4514 var8 = array__ArrayIterator__item(var6);
4515 }
4516 var_i = var8;
4517 {
4518 { /* Inline abstract_collection#Couple#second (var_i) on <var_i:Couple[Object, nullable Object]> */
4519 var11 = var_i->attrs[COLOR_abstract_collection__Couple___second].val; /* _second on <var_i:Couple[Object, nullable Object]> */
4520 var9 = var11;
4521 RET_LABEL10:(void)0;
4522 }
4523 }
4524 if (var9 == NULL) {
4525 var12 = (var_item == NULL);
4526 } else {
4527 var13 = ((short int (*)(val*, val*))(var9->class->vft[COLOR_kernel__Object___61d_61d]))(var9, var_item) /* == on <var9:nullable Object>*/;
4528 var12 = var13;
4529 }
4530 if (var12){
4531 var14 = 1;
4532 var = var14;
4533 goto RET_LABEL;
4534 } else {
4535 }
4536 CONTINUE_label: (void)0;
4537 {
4538 array__ArrayIterator__next(var6); /* Direct call array#ArrayIterator#next on <var6:ArrayIterator[nullable Object]>*/
4539 }
4540 }
4541 BREAK_label: (void)0;
4542 var15 = 0;
4543 var = var15;
4544 goto RET_LABEL;
4545 RET_LABEL:;
4546 return var;
4547 }
4548 /* method array#ArrayMapValues#has for (self: Object, nullable Object): Bool */
4549 short int VIRTUAL_array__ArrayMapValues__has(val* self, val* p0) {
4550 short int var /* : Bool */;
4551 short int var1 /* : Bool */;
4552 var1 = array__ArrayMapValues__has(self, p0);
4553 var = var1;
4554 RET_LABEL:;
4555 return var;
4556 }
4557 /* method array#ArrayMapValues#clear for (self: ArrayMapValues[Object, nullable Object]) */
4558 void array__ArrayMapValues__clear(val* self) {
4559 val* var /* : ArrayMap[Object, nullable Object] */;
4560 val* var2 /* : ArrayMap[Object, nullable Object] */;
4561 {
4562 { /* Inline array#ArrayMapValues#map (self) on <self:ArrayMapValues[Object, nullable Object]> */
4563 var2 = self->attrs[COLOR_array__ArrayMapValues___map].val; /* _map on <self:ArrayMapValues[Object, nullable Object]> */
4564 if (unlikely(var2 == NULL)) {
4565 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
4566 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 564);
4567 show_backtrace(1);
4568 }
4569 var = var2;
4570 RET_LABEL1:(void)0;
4571 }
4572 }
4573 {
4574 array__ArrayMap__clear(var); /* Direct call array#ArrayMap#clear on <var:ArrayMap[Object, nullable Object]>*/
4575 }
4576 RET_LABEL:;
4577 }
4578 /* method array#ArrayMapValues#clear for (self: Object) */
4579 void VIRTUAL_array__ArrayMapValues__clear(val* self) {
4580 array__ArrayMapValues__clear(self); /* Direct call array#ArrayMapValues#clear on <self:Object(ArrayMapValues[Object, nullable Object])>*/
4581 RET_LABEL:;
4582 }
4583 /* method array#ArrayMapValues#remove for (self: ArrayMapValues[Object, nullable Object], nullable Object) */
4584 void array__ArrayMapValues__remove(val* self, val* p0) {
4585 short int var /* : Bool */;
4586 int cltype;
4587 int idtype;
4588 const struct type* type_struct;
4589 short int is_nullable;
4590 const char* var_class_name;
4591 val* var_item /* var item: nullable Object */;
4592 val* var1 /* : ArrayMap[Object, nullable Object] */;
4593 val* var3 /* : ArrayMap[Object, nullable Object] */;
4594 val* var_map /* var map: ArrayMap[Object, nullable Object] */;
4595 val* var4 /* : Array[Couple[Object, nullable Object]] */;
4596 long var5 /* : Int */;
4597 long var6 /* : Int */;
4598 long var7 /* : Int */;
4599 short int var9 /* : Bool */;
4600 int cltype10;
4601 int idtype11;
4602 const char* var_class_name12;
4603 long var13 /* : Int */;
4604 long var_i /* var i: Int */;
4605 long var14 /* : Int */;
4606 short int var15 /* : Bool */;
4607 short int var17 /* : Bool */;
4608 int cltype18;
4609 int idtype19;
4610 const char* var_class_name20;
4611 short int var21 /* : Bool */;
4612 val* var22 /* : Array[Couple[Object, nullable Object]] */;
4613 val* var23 /* : nullable Object */;
4614 val* var24 /* : nullable Object */;
4615 val* var26 /* : nullable Object */;
4616 short int var27 /* : Bool */;
4617 short int var28 /* : Bool */;
4618 long var29 /* : Int */;
4619 long var30 /* : Int */;
4620 short int var32 /* : Bool */;
4621 int cltype33;
4622 int idtype34;
4623 const char* var_class_name35;
4624 long var36 /* : Int */;
4625 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa RemovableCollection#0 */
4626 /* <p0:nullable Object> isa RemovableCollection#0 */
4627 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__RemovableCollection_FT0];
4628 cltype = type_struct->color;
4629 idtype = type_struct->id;
4630 is_nullable = type_struct->is_nullable;
4631 if(p0 == NULL) {
4632 var = is_nullable;
4633 } else {
4634 if(cltype >= p0->type->table_size) {
4635 var = 0;
4636 } else {
4637 var = p0->type->type_table[cltype] == idtype;
4638 }
4639 }
4640 if (unlikely(!var)) {
4641 var_class_name = p0 == NULL ? "null" : p0->type->name;
4642 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "RemovableCollection#0", var_class_name);
4643 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 595);
4644 show_backtrace(1);
4645 }
4646 var_item = p0;
4647 {
4648 { /* Inline array#ArrayMapValues#map (self) on <self:ArrayMapValues[Object, nullable Object]> */
4649 var3 = self->attrs[COLOR_array__ArrayMapValues___map].val; /* _map on <self:ArrayMapValues[Object, nullable Object]> */
4650 if (unlikely(var3 == NULL)) {
4651 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
4652 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 564);
4653 show_backtrace(1);
4654 }
4655 var1 = var3;
4656 RET_LABEL2:(void)0;
4657 }
4658 }
4659 var_map = var1;
4660 var4 = var_map->attrs[COLOR_array__ArrayMap___items].val; /* _items on <var_map:ArrayMap[Object, nullable Object]> */
4661 if (unlikely(var4 == NULL)) {
4662 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _items");
4663 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 598);
4664 show_backtrace(1);
4665 }
4666 {
4667 var5 = array__AbstractArrayRead__length(var4);
4668 }
4669 var6 = 1;
4670 {
4671 { /* Inline kernel#Int#- (var5,var6) on <var5:Int> */
4672 /* Covariant cast for argument 0 (i) <var6:Int> isa OTHER */
4673 /* <var6:Int> isa OTHER */
4674 var9 = 1; /* easy <var6:Int> isa OTHER*/
4675 if (unlikely(!var9)) {
4676 var_class_name12 = type_kernel__Int.name;
4677 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name12);
4678 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 331);
4679 show_backtrace(1);
4680 }
4681 var13 = var5 - var6;
4682 var7 = var13;
4683 goto RET_LABEL8;
4684 RET_LABEL8:(void)0;
4685 }
4686 }
4687 var_i = var7;
4688 for(;;) {
4689 var14 = 0;
4690 {
4691 { /* Inline kernel#Int#>= (var_i,var14) on <var_i:Int> */
4692 /* Covariant cast for argument 0 (i) <var14:Int> isa OTHER */
4693 /* <var14:Int> isa OTHER */
4694 var17 = 1; /* easy <var14:Int> isa OTHER*/
4695 if (unlikely(!var17)) {
4696 var_class_name20 = type_kernel__Int.name;
4697 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name20);
4698 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 326);
4699 show_backtrace(1);
4700 }
4701 var21 = var_i >= var14;
4702 var15 = var21;
4703 goto RET_LABEL16;
4704 RET_LABEL16:(void)0;
4705 }
4706 }
4707 if (!var15) break;
4708 var22 = var_map->attrs[COLOR_array__ArrayMap___items].val; /* _items on <var_map:ArrayMap[Object, nullable Object]> */
4709 if (unlikely(var22 == NULL)) {
4710 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _items");
4711 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 600);
4712 show_backtrace(1);
4713 }
4714 {
4715 var23 = array__Array___91d_93d(var22, var_i);
4716 }
4717 {
4718 { /* Inline abstract_collection#Couple#second (var23) on <var23:nullable Object(Couple[Object, nullable Object])> */
4719 var26 = var23->attrs[COLOR_abstract_collection__Couple___second].val; /* _second on <var23:nullable Object(Couple[Object, nullable Object])> */
4720 var24 = var26;
4721 RET_LABEL25:(void)0;
4722 }
4723 }
4724 if (var24 == NULL) {
4725 var27 = (var_item == NULL);
4726 } else {
4727 var28 = ((short int (*)(val*, val*))(var24->class->vft[COLOR_kernel__Object___61d_61d]))(var24, var_item) /* == on <var24:nullable Object>*/;
4728 var27 = var28;
4729 }
4730 if (var27){
4731 {
4732 array__ArrayMap__remove_at_index(var_map, var_i); /* Direct call array#ArrayMap#remove_at_index on <var_map:ArrayMap[Object, nullable Object]>*/
4733 }
4734 goto RET_LABEL;
4735 } else {
4736 }
4737 var29 = 1;
4738 {
4739 { /* Inline kernel#Int#- (var_i,var29) on <var_i:Int> */
4740 /* Covariant cast for argument 0 (i) <var29:Int> isa OTHER */
4741 /* <var29:Int> isa OTHER */
4742 var32 = 1; /* easy <var29:Int> isa OTHER*/
4743 if (unlikely(!var32)) {
4744 var_class_name35 = type_kernel__Int.name;
4745 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name35);
4746 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 331);
4747 show_backtrace(1);
4748 }
4749 var36 = var_i - var29;
4750 var30 = var36;
4751 goto RET_LABEL31;
4752 RET_LABEL31:(void)0;
4753 }
4754 }
4755 var_i = var30;
4756 CONTINUE_label: (void)0;
4757 }
4758 BREAK_label: (void)0;
4759 RET_LABEL:;
4760 }
4761 /* method array#ArrayMapValues#remove for (self: Object, nullable Object) */
4762 void VIRTUAL_array__ArrayMapValues__remove(val* self, val* p0) {
4763 array__ArrayMapValues__remove(self, p0); /* Direct call array#ArrayMapValues#remove on <self:Object(ArrayMapValues[Object, nullable Object])>*/
4764 RET_LABEL:;
4765 }
4766 /* method array#ArrayMapValues#init for (self: ArrayMapValues[Object, nullable Object], ArrayMap[Object, nullable Object]) */
4767 void array__ArrayMapValues__init(val* self, val* p0) {
4768 short int var /* : Bool */;
4769 int cltype;
4770 int idtype;
4771 const struct type* type_struct;
4772 const char* var_class_name;
4773 /* Covariant cast for argument 0 (map) <p0:ArrayMap[Object, nullable Object]> isa ArrayMap[ArrayMapValues#0, ArrayMapValues#1] */
4774 /* <p0:ArrayMap[Object, nullable Object]> isa ArrayMap[ArrayMapValues#0, ArrayMapValues#1] */
4775 type_struct = self->type->resolution_table->types[COLOR_array__ArrayMaparray__ArrayMapValues_FT0array__ArrayMapValues_FT1];
4776 cltype = type_struct->color;
4777 idtype = type_struct->id;
4778 if(cltype >= p0->type->table_size) {
4779 var = 0;
4780 } else {
4781 var = p0->type->type_table[cltype] == idtype;
4782 }
4783 if (unlikely(!var)) {
4784 var_class_name = p0 == NULL ? "null" : p0->type->name;
4785 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "ArrayMap[ArrayMapValues#0, ArrayMapValues#1]", var_class_name);
4786 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 562);
4787 show_backtrace(1);
4788 }
4789 self->attrs[COLOR_array__ArrayMapValues___map].val = p0; /* _map on <self:ArrayMapValues[Object, nullable Object]> */
4790 RET_LABEL:;
4791 }
4792 /* method array#ArrayMapValues#init for (self: Object, ArrayMap[Object, nullable Object]) */
4793 void VIRTUAL_array__ArrayMapValues__init(val* self, val* p0) {
4794 short int var /* : Bool */;
4795 int cltype;
4796 int idtype;
4797 const struct type* type_struct;
4798 const char* var_class_name;
4799 { /* Inline array#ArrayMapValues#init (self,p0) on <self:Object(ArrayMapValues[Object, nullable Object])> */
4800 /* Covariant cast for argument 0 (map) <p0:ArrayMap[Object, nullable Object]> isa ArrayMap[ArrayMapValues#0, ArrayMapValues#1] */
4801 /* <p0:ArrayMap[Object, nullable Object]> isa ArrayMap[ArrayMapValues#0, ArrayMapValues#1] */
4802 type_struct = self->type->resolution_table->types[COLOR_array__ArrayMaparray__ArrayMapValues_FT0array__ArrayMapValues_FT1];
4803 cltype = type_struct->color;
4804 idtype = type_struct->id;
4805 if(cltype >= p0->type->table_size) {
4806 var = 0;
4807 } else {
4808 var = p0->type->type_table[cltype] == idtype;
4809 }
4810 if (unlikely(!var)) {
4811 var_class_name = p0 == NULL ? "null" : p0->type->name;
4812 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "ArrayMap[ArrayMapValues#0, ArrayMapValues#1]", var_class_name);
4813 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 562);
4814 show_backtrace(1);
4815 }
4816 self->attrs[COLOR_array__ArrayMapValues___map].val = p0; /* _map on <self:Object(ArrayMapValues[Object, nullable Object])> */
4817 RET_LABEL1:(void)0;
4818 }
4819 RET_LABEL:;
4820 }
4821 /* method array#Iterator#to_a for (self: Iterator[nullable Object]): Array[nullable Object] */
4822 val* array__Iterator__to_a(val* self) {
4823 val* var /* : Array[nullable Object] */;
4824 val* var1 /* : Array[nullable Object] */;
4825 val* var_res /* var res: Array[nullable Object] */;
4826 short int var2 /* : Bool */;
4827 val* var3 /* : nullable Object */;
4828 var1 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arrayabstract_collection__Iterator_FT0]);
4829 {
4830 array__Array__init(var1); /* Direct call array#Array#init on <var1:Array[nullable Object]>*/
4831 }
4832 var_res = var1;
4833 for(;;) {
4834 {
4835 var2 = ((short int (*)(val*))(self->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(self) /* is_ok on <self:Iterator[nullable Object]>*/;
4836 }
4837 if (!var2) break;
4838 {
4839 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Iterator__item]))(self) /* item on <self:Iterator[nullable Object]>*/;
4840 }
4841 {
4842 array__Array__add(var_res, var3); /* Direct call array#Array#add on <var_res:Array[nullable Object]>*/
4843 }
4844 {
4845 ((void (*)(val*))(self->class->vft[COLOR_abstract_collection__Iterator__next]))(self) /* next on <self:Iterator[nullable Object]>*/;
4846 }
4847 CONTINUE_label: (void)0;
4848 }
4849 BREAK_label: (void)0;
4850 var = var_res;
4851 goto RET_LABEL;
4852 RET_LABEL:;
4853 return var;
4854 }
4855 /* method array#Iterator#to_a for (self: Object): Array[nullable Object] */
4856 val* VIRTUAL_array__Iterator__to_a(val* self) {
4857 val* var /* : Array[nullable Object] */;
4858 val* var1 /* : Array[nullable Object] */;
4859 var1 = array__Iterator__to_a(self);
4860 var = var1;
4861 RET_LABEL:;
4862 return var;
4863 }
4864 /* method array#Collection#to_a for (self: Collection[nullable Object]): Array[nullable Object] */
4865 val* array__Collection__to_a(val* self) {
4866 val* var /* : Array[nullable Object] */;
4867 val* var1 /* : Iterator[nullable Object] */;
4868 val* var2 /* : Array[nullable Object] */;
4869 {
4870 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__iterator]))(self) /* iterator on <self:Collection[nullable Object]>*/;
4871 }
4872 {
4873 var2 = array__Iterator__to_a(var1);
4874 }
4875 var = var2;
4876 goto RET_LABEL;
4877 RET_LABEL:;
4878 return var;
4879 }
4880 /* method array#Collection#to_a for (self: Object): Array[nullable Object] */
4881 val* VIRTUAL_array__Collection__to_a(val* self) {
4882 val* var /* : Array[nullable Object] */;
4883 val* var1 /* : Array[nullable Object] */;
4884 var1 = array__Collection__to_a(self);
4885 var = var1;
4886 RET_LABEL:;
4887 return var;
4888 }
4889 /* method array#ArrayCapable#calloc_array for (self: ArrayCapable[nullable Object], Int): NativeArray[nullable Object] */
4890 val* array__ArrayCapable__calloc_array(val* self, long p0) {
4891 val* var /* : NativeArray[nullable Object] */;
4892 val* var1 /* : NativeArray[nullable Object] */;
4893 var1 = NEW_array__NativeArray(p0, self->type->resolution_table->types[COLOR_array__NativeArrayarray__ArrayCapable_FT0]);
4894 var = var1;
4895 goto RET_LABEL;
4896 RET_LABEL:;
4897 return var;
4898 }
4899 /* method array#ArrayCapable#calloc_array for (self: Object, Int): NativeArray[nullable Object] */
4900 val* VIRTUAL_array__ArrayCapable__calloc_array(val* self, long p0) {
4901 val* var /* : NativeArray[nullable Object] */;
4902 val* var1 /* : NativeArray[nullable Object] */;
4903 val* var3 /* : NativeArray[nullable Object] */;
4904 { /* Inline array#ArrayCapable#calloc_array (self,p0) on <self:Object(ArrayCapable[nullable Object])> */
4905 var3 = NEW_array__NativeArray(p0, self->type->resolution_table->types[COLOR_array__NativeArrayarray__ArrayCapable_FT0]);
4906 var1 = var3;
4907 goto RET_LABEL2;
4908 RET_LABEL2:(void)0;
4909 }
4910 var = var1;
4911 RET_LABEL:;
4912 return var;
4913 }
4914 /* method array#NativeArray#[] for (self: NativeArray[nullable Object], Int): nullable Object */
4915 val* array__NativeArray___91d_93d(val* self, long p0) {
4916 val* var /* : nullable Object */;
4917 val* var1 /* : nullable Object */;
4918 var1 = ((struct instance_array__NativeArray*)self)->values[p0];
4919 var = var1;
4920 goto RET_LABEL;
4921 RET_LABEL:;
4922 return var;
4923 }
4924 /* method array#NativeArray#[] for (self: Object, Int): nullable Object */
4925 val* VIRTUAL_array__NativeArray___91d_93d(val* self, long p0) {
4926 val* var /* : nullable Object */;
4927 val* var1 /* : nullable Object */;
4928 val* var3 /* : nullable Object */;
4929 { /* Inline array#NativeArray#[] (self,p0) on <self:Object(NativeArray[nullable Object])> */
4930 var3 = ((struct instance_array__NativeArray*)self)->values[p0];
4931 var1 = var3;
4932 goto RET_LABEL2;
4933 RET_LABEL2:(void)0;
4934 }
4935 var = var1;
4936 RET_LABEL:;
4937 return var;
4938 }
4939 /* method array#NativeArray#[]= for (self: NativeArray[nullable Object], Int, nullable Object) */
4940 void array__NativeArray___91d_93d_61d(val* self, long p0, val* p1) {
4941 short int var /* : Bool */;
4942 int cltype;
4943 int idtype;
4944 const struct type* type_struct;
4945 short int is_nullable;
4946 const char* var_class_name;
4947 /* Covariant cast for argument 1 (item) <p1:nullable Object> isa NativeArray#0 */
4948 /* <p1:nullable Object> isa NativeArray#0 */
4949 type_struct = self->type->resolution_table->types[COLOR_array__NativeArray_FT0];
4950 cltype = type_struct->color;
4951 idtype = type_struct->id;
4952 is_nullable = type_struct->is_nullable;
4953 if(p1 == NULL) {
4954 var = is_nullable;
4955 } else {
4956 if(cltype >= p1->type->table_size) {
4957 var = 0;
4958 } else {
4959 var = p1->type->type_table[cltype] == idtype;
4960 }
4961 }
4962 if (unlikely(!var)) {
4963 var_class_name = p1 == NULL ? "null" : p1->type->name;
4964 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "NativeArray#0", var_class_name);
4965 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 662);
4966 show_backtrace(1);
4967 }
4968 ((struct instance_array__NativeArray*)self)->values[p0]=p1;
4969 RET_LABEL:;
4970 }
4971 /* method array#NativeArray#[]= for (self: Object, Int, nullable Object) */
4972 void VIRTUAL_array__NativeArray___91d_93d_61d(val* self, long p0, val* p1) {
4973 short int var /* : Bool */;
4974 int cltype;
4975 int idtype;
4976 const struct type* type_struct;
4977 short int is_nullable;
4978 const char* var_class_name;
4979 { /* Inline array#NativeArray#[]= (self,p0,p1) on <self:Object(NativeArray[nullable Object])> */
4980 /* Covariant cast for argument 1 (item) <p1:nullable Object> isa NativeArray#0 */
4981 /* <p1:nullable Object> isa NativeArray#0 */
4982 type_struct = self->type->resolution_table->types[COLOR_array__NativeArray_FT0];
4983 cltype = type_struct->color;
4984 idtype = type_struct->id;
4985 is_nullable = type_struct->is_nullable;
4986 if(p1 == NULL) {
4987 var = is_nullable;
4988 } else {
4989 if(cltype >= p1->type->table_size) {
4990 var = 0;
4991 } else {
4992 var = p1->type->type_table[cltype] == idtype;
4993 }
4994 }
4995 if (unlikely(!var)) {
4996 var_class_name = p1 == NULL ? "null" : p1->type->name;
4997 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "NativeArray#0", var_class_name);
4998 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 662);
4999 show_backtrace(1);
5000 }
5001 ((struct instance_array__NativeArray*)self)->values[p0]=p1;
5002 RET_LABEL1:(void)0;
5003 }
5004 RET_LABEL:;
5005 }
5006 /* method array#NativeArray#copy_to for (self: NativeArray[nullable Object], NativeArray[nullable Object], Int) */
5007 void array__NativeArray__copy_to(val* self, val* p0, long p1) {
5008 short int var /* : Bool */;
5009 int cltype;
5010 int idtype;
5011 const struct type* type_struct;
5012 const char* var_class_name;
5013 /* Covariant cast for argument 0 (dest) <p0:NativeArray[nullable Object]> isa NativeArray[NativeArray#0] */
5014 /* <p0:NativeArray[nullable Object]> isa NativeArray[NativeArray#0] */
5015 type_struct = self->type->resolution_table->types[COLOR_array__NativeArrayarray__NativeArray_FT0];
5016 cltype = type_struct->color;
5017 idtype = type_struct->id;
5018 if(cltype >= p0->type->table_size) {
5019 var = 0;
5020 } else {
5021 var = p0->type->type_table[cltype] == idtype;
5022 }
5023 if (unlikely(!var)) {
5024 var_class_name = p0 == NULL ? "null" : p0->type->name;
5025 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "NativeArray[NativeArray#0]", var_class_name);
5026 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 663);
5027 show_backtrace(1);
5028 }
5029 memcpy(((struct instance_array__NativeArray*)p0)->values, ((struct instance_array__NativeArray*)self)->values, p1*sizeof(val*));
5030 RET_LABEL:;
5031 }
5032 /* method array#NativeArray#copy_to for (self: Object, NativeArray[nullable Object], Int) */
5033 void VIRTUAL_array__NativeArray__copy_to(val* self, val* p0, long p1) {
5034 short int var /* : Bool */;
5035 int cltype;
5036 int idtype;
5037 const struct type* type_struct;
5038 const char* var_class_name;
5039 { /* Inline array#NativeArray#copy_to (self,p0,p1) on <self:Object(NativeArray[nullable Object])> */
5040 /* Covariant cast for argument 0 (dest) <p0:NativeArray[nullable Object]> isa NativeArray[NativeArray#0] */
5041 /* <p0:NativeArray[nullable Object]> isa NativeArray[NativeArray#0] */
5042 type_struct = self->type->resolution_table->types[COLOR_array__NativeArrayarray__NativeArray_FT0];
5043 cltype = type_struct->color;
5044 idtype = type_struct->id;
5045 if(cltype >= p0->type->table_size) {
5046 var = 0;
5047 } else {
5048 var = p0->type->type_table[cltype] == idtype;
5049 }
5050 if (unlikely(!var)) {
5051 var_class_name = p0 == NULL ? "null" : p0->type->name;
5052 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "NativeArray[NativeArray#0]", var_class_name);
5053 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/array.nit", 663);
5054 show_backtrace(1);
5055 }
5056 memcpy(((struct instance_array__NativeArray*)p0)->values, ((struct instance_array__NativeArray*)self)->values, p1*sizeof(val*));
5057 RET_LABEL1:(void)0;
5058 }
5059 RET_LABEL:;
5060 }