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