NOTICE: update dates and authors.
[nit.git] / c_src / range.sep.1.c
1 #include "range.sep.0.h"
2 /* method range#Range#first for (self: Range[Discrete]): Discrete */
3 val* range__Range__first(val* self) {
4 val* var /* : Discrete */;
5 val* var1 /* : Discrete */;
6 var1 = self->attrs[COLOR_range__Range___first].val; /* _first on <self:Range[Discrete]> */
7 if (unlikely(var1 == NULL)) {
8 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _first");
9 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 22);
10 show_backtrace(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method range#Range#first for (self: Object): nullable Object */
17 val* VIRTUAL_range__Range__first(val* self) {
18 val* var /* : nullable Object */;
19 val* var1 /* : Discrete */;
20 val* var3 /* : Discrete */;
21 { /* Inline range#Range#first (self) on <self:Object(Range[Discrete])> */
22 var3 = self->attrs[COLOR_range__Range___first].val; /* _first on <self:Object(Range[Discrete])> */
23 if (unlikely(var3 == NULL)) {
24 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _first");
25 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 22);
26 show_backtrace(1);
27 }
28 var1 = var3;
29 RET_LABEL2:(void)0;
30 }
31 var = var1;
32 RET_LABEL:;
33 return var;
34 }
35 /* method range#Range#first= for (self: Range[Discrete], Discrete) */
36 void range__Range__first_61d(val* self, val* p0) {
37 short int var /* : Bool */;
38 int cltype;
39 int idtype;
40 const struct type* type_struct;
41 const char* var_class_name;
42 /* Covariant cast for argument 0 (first) <p0:Discrete> isa Range#0 */
43 /* <p0:Discrete> isa Range#0 */
44 type_struct = self->type->resolution_table->types[COLOR_range__Range_FT0];
45 cltype = type_struct->color;
46 idtype = type_struct->id;
47 if(cltype >= p0->type->table_size) {
48 var = 0;
49 } else {
50 var = p0->type->type_table[cltype] == idtype;
51 }
52 if (unlikely(!var)) {
53 var_class_name = p0 == NULL ? "null" : p0->type->name;
54 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Range#0", var_class_name);
55 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 22);
56 show_backtrace(1);
57 }
58 self->attrs[COLOR_range__Range___first].val = p0; /* _first on <self:Range[Discrete]> */
59 RET_LABEL:;
60 }
61 /* method range#Range#first= for (self: Object, Discrete) */
62 void VIRTUAL_range__Range__first_61d(val* self, val* p0) {
63 short int var /* : Bool */;
64 int cltype;
65 int idtype;
66 const struct type* type_struct;
67 const char* var_class_name;
68 { /* Inline range#Range#first= (self,p0) on <self:Object(Range[Discrete])> */
69 /* Covariant cast for argument 0 (first) <p0:Discrete> isa Range#0 */
70 /* <p0:Discrete> isa Range#0 */
71 type_struct = self->type->resolution_table->types[COLOR_range__Range_FT0];
72 cltype = type_struct->color;
73 idtype = type_struct->id;
74 if(cltype >= p0->type->table_size) {
75 var = 0;
76 } else {
77 var = p0->type->type_table[cltype] == idtype;
78 }
79 if (unlikely(!var)) {
80 var_class_name = p0 == NULL ? "null" : p0->type->name;
81 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Range#0", var_class_name);
82 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 22);
83 show_backtrace(1);
84 }
85 self->attrs[COLOR_range__Range___first].val = p0; /* _first on <self:Object(Range[Discrete])> */
86 RET_LABEL1:(void)0;
87 }
88 RET_LABEL:;
89 }
90 /* method range#Range#last for (self: Range[Discrete]): Discrete */
91 val* range__Range__last(val* self) {
92 val* var /* : Discrete */;
93 val* var1 /* : Discrete */;
94 var1 = self->attrs[COLOR_range__Range___last].val; /* _last on <self:Range[Discrete]> */
95 if (unlikely(var1 == NULL)) {
96 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _last");
97 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 24);
98 show_backtrace(1);
99 }
100 var = var1;
101 RET_LABEL:;
102 return var;
103 }
104 /* method range#Range#last for (self: Object): Discrete */
105 val* VIRTUAL_range__Range__last(val* self) {
106 val* var /* : Discrete */;
107 val* var1 /* : Discrete */;
108 val* var3 /* : Discrete */;
109 { /* Inline range#Range#last (self) on <self:Object(Range[Discrete])> */
110 var3 = self->attrs[COLOR_range__Range___last].val; /* _last on <self:Object(Range[Discrete])> */
111 if (unlikely(var3 == NULL)) {
112 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _last");
113 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 24);
114 show_backtrace(1);
115 }
116 var1 = var3;
117 RET_LABEL2:(void)0;
118 }
119 var = var1;
120 RET_LABEL:;
121 return var;
122 }
123 /* method range#Range#last= for (self: Range[Discrete], Discrete) */
124 void range__Range__last_61d(val* self, val* p0) {
125 short int var /* : Bool */;
126 int cltype;
127 int idtype;
128 const struct type* type_struct;
129 const char* var_class_name;
130 /* Covariant cast for argument 0 (last) <p0:Discrete> isa Range#0 */
131 /* <p0:Discrete> isa Range#0 */
132 type_struct = self->type->resolution_table->types[COLOR_range__Range_FT0];
133 cltype = type_struct->color;
134 idtype = type_struct->id;
135 if(cltype >= p0->type->table_size) {
136 var = 0;
137 } else {
138 var = p0->type->type_table[cltype] == idtype;
139 }
140 if (unlikely(!var)) {
141 var_class_name = p0 == NULL ? "null" : p0->type->name;
142 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Range#0", var_class_name);
143 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 24);
144 show_backtrace(1);
145 }
146 self->attrs[COLOR_range__Range___last].val = p0; /* _last on <self:Range[Discrete]> */
147 RET_LABEL:;
148 }
149 /* method range#Range#last= for (self: Object, Discrete) */
150 void VIRTUAL_range__Range__last_61d(val* self, val* p0) {
151 short int var /* : Bool */;
152 int cltype;
153 int idtype;
154 const struct type* type_struct;
155 const char* var_class_name;
156 { /* Inline range#Range#last= (self,p0) on <self:Object(Range[Discrete])> */
157 /* Covariant cast for argument 0 (last) <p0:Discrete> isa Range#0 */
158 /* <p0:Discrete> isa Range#0 */
159 type_struct = self->type->resolution_table->types[COLOR_range__Range_FT0];
160 cltype = type_struct->color;
161 idtype = type_struct->id;
162 if(cltype >= p0->type->table_size) {
163 var = 0;
164 } else {
165 var = p0->type->type_table[cltype] == idtype;
166 }
167 if (unlikely(!var)) {
168 var_class_name = p0 == NULL ? "null" : p0->type->name;
169 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Range#0", var_class_name);
170 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 24);
171 show_backtrace(1);
172 }
173 self->attrs[COLOR_range__Range___last].val = p0; /* _last on <self:Object(Range[Discrete])> */
174 RET_LABEL1:(void)0;
175 }
176 RET_LABEL:;
177 }
178 /* method range#Range#after for (self: Range[Discrete]): Discrete */
179 val* range__Range__after(val* self) {
180 val* var /* : Discrete */;
181 val* var1 /* : Discrete */;
182 var1 = self->attrs[COLOR_range__Range___after].val; /* _after on <self:Range[Discrete]> */
183 if (unlikely(var1 == NULL)) {
184 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _after");
185 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 27);
186 show_backtrace(1);
187 }
188 var = var1;
189 RET_LABEL:;
190 return var;
191 }
192 /* method range#Range#after for (self: Object): Discrete */
193 val* VIRTUAL_range__Range__after(val* self) {
194 val* var /* : Discrete */;
195 val* var1 /* : Discrete */;
196 val* var3 /* : Discrete */;
197 { /* Inline range#Range#after (self) on <self:Object(Range[Discrete])> */
198 var3 = self->attrs[COLOR_range__Range___after].val; /* _after on <self:Object(Range[Discrete])> */
199 if (unlikely(var3 == NULL)) {
200 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _after");
201 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 27);
202 show_backtrace(1);
203 }
204 var1 = var3;
205 RET_LABEL2:(void)0;
206 }
207 var = var1;
208 RET_LABEL:;
209 return var;
210 }
211 /* method range#Range#after= for (self: Range[Discrete], Discrete) */
212 void range__Range__after_61d(val* self, val* p0) {
213 short int var /* : Bool */;
214 int cltype;
215 int idtype;
216 const struct type* type_struct;
217 const char* var_class_name;
218 /* Covariant cast for argument 0 (after) <p0:Discrete> isa Range#0 */
219 /* <p0:Discrete> isa Range#0 */
220 type_struct = self->type->resolution_table->types[COLOR_range__Range_FT0];
221 cltype = type_struct->color;
222 idtype = type_struct->id;
223 if(cltype >= p0->type->table_size) {
224 var = 0;
225 } else {
226 var = p0->type->type_table[cltype] == idtype;
227 }
228 if (unlikely(!var)) {
229 var_class_name = p0 == NULL ? "null" : p0->type->name;
230 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Range#0", var_class_name);
231 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 27);
232 show_backtrace(1);
233 }
234 self->attrs[COLOR_range__Range___after].val = p0; /* _after on <self:Range[Discrete]> */
235 RET_LABEL:;
236 }
237 /* method range#Range#after= for (self: Object, Discrete) */
238 void VIRTUAL_range__Range__after_61d(val* self, val* p0) {
239 short int var /* : Bool */;
240 int cltype;
241 int idtype;
242 const struct type* type_struct;
243 const char* var_class_name;
244 { /* Inline range#Range#after= (self,p0) on <self:Object(Range[Discrete])> */
245 /* Covariant cast for argument 0 (after) <p0:Discrete> isa Range#0 */
246 /* <p0:Discrete> isa Range#0 */
247 type_struct = self->type->resolution_table->types[COLOR_range__Range_FT0];
248 cltype = type_struct->color;
249 idtype = type_struct->id;
250 if(cltype >= p0->type->table_size) {
251 var = 0;
252 } else {
253 var = p0->type->type_table[cltype] == idtype;
254 }
255 if (unlikely(!var)) {
256 var_class_name = p0 == NULL ? "null" : p0->type->name;
257 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Range#0", var_class_name);
258 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 27);
259 show_backtrace(1);
260 }
261 self->attrs[COLOR_range__Range___after].val = p0; /* _after on <self:Object(Range[Discrete])> */
262 RET_LABEL1:(void)0;
263 }
264 RET_LABEL:;
265 }
266 /* method range#Range#has for (self: Range[Discrete], Discrete): Bool */
267 short int range__Range__has(val* self, val* p0) {
268 short int var /* : Bool */;
269 short int var1 /* : Bool */;
270 int cltype;
271 int idtype;
272 const struct type* type_struct;
273 const char* var_class_name;
274 val* var_item /* var item: Discrete */;
275 short int var2 /* : Bool */;
276 val* var3 /* : Discrete */;
277 val* var5 /* : Discrete */;
278 short int var6 /* : Bool */;
279 short int var_ /* var : Bool */;
280 val* var7 /* : Discrete */;
281 val* var9 /* : Discrete */;
282 short int var10 /* : Bool */;
283 /* Covariant cast for argument 0 (item) <p0:Discrete> isa Collection#0 */
284 /* <p0:Discrete> isa Collection#0 */
285 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collection_FT0];
286 cltype = type_struct->color;
287 idtype = type_struct->id;
288 if(cltype >= p0->type->table_size) {
289 var1 = 0;
290 } else {
291 var1 = p0->type->type_table[cltype] == idtype;
292 }
293 if (unlikely(!var1)) {
294 var_class_name = p0 == NULL ? "null" : p0->type->name;
295 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection#0", var_class_name);
296 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 30);
297 show_backtrace(1);
298 }
299 var_item = p0;
300 {
301 { /* Inline range#Range#first (self) on <self:Range[Discrete]> */
302 var5 = self->attrs[COLOR_range__Range___first].val; /* _first on <self:Range[Discrete]> */
303 if (unlikely(var5 == NULL)) {
304 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _first");
305 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 22);
306 show_backtrace(1);
307 }
308 var3 = var5;
309 RET_LABEL4:(void)0;
310 }
311 }
312 {
313 var6 = ((short int (*)(val*, val*))(var_item->class->vft[COLOR_kernel__Comparable___62d_61d]))(var_item, var3) /* >= on <var_item:Discrete>*/;
314 }
315 var_ = var6;
316 if (var6){
317 {
318 { /* Inline range#Range#last (self) on <self:Range[Discrete]> */
319 var9 = self->attrs[COLOR_range__Range___last].val; /* _last on <self:Range[Discrete]> */
320 if (unlikely(var9 == NULL)) {
321 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _last");
322 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 24);
323 show_backtrace(1);
324 }
325 var7 = var9;
326 RET_LABEL8:(void)0;
327 }
328 }
329 {
330 var10 = ((short int (*)(val*, val*))(var_item->class->vft[COLOR_kernel__Comparable___60d_61d]))(var_item, var7) /* <= on <var_item:Discrete>*/;
331 }
332 var2 = var10;
333 } else {
334 var2 = var_;
335 }
336 var = var2;
337 goto RET_LABEL;
338 RET_LABEL:;
339 return var;
340 }
341 /* method range#Range#has for (self: Object, nullable Object): Bool */
342 short int VIRTUAL_range__Range__has(val* self, val* p0) {
343 short int var /* : Bool */;
344 short int var1 /* : Bool */;
345 var1 = range__Range__has(self, p0);
346 var = var1;
347 RET_LABEL:;
348 return var;
349 }
350 /* method range#Range#iterator for (self: Range[Discrete]): Iterator[Discrete] */
351 val* range__Range__iterator(val* self) {
352 val* var /* : Iterator[Discrete] */;
353 val* var1 /* : IteratorRange[Discrete] */;
354 var1 = NEW_range__IteratorRange(self->type->resolution_table->types[COLOR_range__IteratorRangerange__Range_FT0]);
355 {
356 range__IteratorRange__init(var1, self); /* Direct call range#IteratorRange#init on <var1:IteratorRange[Discrete]>*/
357 }
358 var = var1;
359 goto RET_LABEL;
360 RET_LABEL:;
361 return var;
362 }
363 /* method range#Range#iterator for (self: Object): Iterator[nullable Object] */
364 val* VIRTUAL_range__Range__iterator(val* self) {
365 val* var /* : Iterator[nullable Object] */;
366 val* var1 /* : Iterator[Discrete] */;
367 var1 = range__Range__iterator(self);
368 var = var1;
369 RET_LABEL:;
370 return var;
371 }
372 /* method range#Range#length for (self: Range[Discrete]): Int */
373 long range__Range__length(val* self) {
374 long var /* : Int */;
375 val* var1 /* : Discrete */;
376 val* var3 /* : Discrete */;
377 val* var4 /* : Discrete */;
378 val* var6 /* : Discrete */;
379 long var7 /* : Int */;
380 long var_nb /* var nb: Int */;
381 long var8 /* : Int */;
382 short int var9 /* : Bool */;
383 short int var11 /* : Bool */;
384 int cltype;
385 int idtype;
386 const char* var_class_name;
387 short int var12 /* : Bool */;
388 long var13 /* : Int */;
389 {
390 { /* Inline range#Range#first (self) on <self:Range[Discrete]> */
391 var3 = self->attrs[COLOR_range__Range___first].val; /* _first on <self:Range[Discrete]> */
392 if (unlikely(var3 == NULL)) {
393 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _first");
394 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 22);
395 show_backtrace(1);
396 }
397 var1 = var3;
398 RET_LABEL2:(void)0;
399 }
400 }
401 {
402 { /* Inline range#Range#after (self) on <self:Range[Discrete]> */
403 var6 = self->attrs[COLOR_range__Range___after].val; /* _after on <self:Range[Discrete]> */
404 if (unlikely(var6 == NULL)) {
405 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _after");
406 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 27);
407 show_backtrace(1);
408 }
409 var4 = var6;
410 RET_LABEL5:(void)0;
411 }
412 }
413 {
414 var7 = ((long (*)(val*, val*))(var1->class->vft[COLOR_kernel__Discrete__distance]))(var1, var4) /* distance on <var1:Discrete>*/;
415 }
416 var_nb = var7;
417 var8 = 0;
418 {
419 { /* Inline kernel#Int#> (var_nb,var8) on <var_nb:Int> */
420 /* Covariant cast for argument 0 (i) <var8:Int> isa OTHER */
421 /* <var8:Int> isa OTHER */
422 var11 = 1; /* easy <var8:Int> isa OTHER*/
423 if (unlikely(!var11)) {
424 var_class_name = type_kernel__Int.name;
425 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
426 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 327);
427 show_backtrace(1);
428 }
429 var12 = var_nb > var8;
430 var9 = var12;
431 goto RET_LABEL10;
432 RET_LABEL10:(void)0;
433 }
434 }
435 if (var9){
436 var = var_nb;
437 goto RET_LABEL;
438 } else {
439 var13 = 0;
440 var = var13;
441 goto RET_LABEL;
442 }
443 RET_LABEL:;
444 return var;
445 }
446 /* method range#Range#length for (self: Object): Int */
447 long VIRTUAL_range__Range__length(val* self) {
448 long var /* : Int */;
449 long var1 /* : Int */;
450 var1 = range__Range__length(self);
451 var = var1;
452 RET_LABEL:;
453 return var;
454 }
455 /* method range#Range#is_empty for (self: Range[Discrete]): Bool */
456 short int range__Range__is_empty(val* self) {
457 short int var /* : Bool */;
458 val* var1 /* : Discrete */;
459 val* var3 /* : Discrete */;
460 val* var4 /* : Discrete */;
461 val* var6 /* : Discrete */;
462 short int var7 /* : Bool */;
463 {
464 { /* Inline range#Range#first (self) on <self:Range[Discrete]> */
465 var3 = self->attrs[COLOR_range__Range___first].val; /* _first on <self:Range[Discrete]> */
466 if (unlikely(var3 == NULL)) {
467 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _first");
468 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 22);
469 show_backtrace(1);
470 }
471 var1 = var3;
472 RET_LABEL2:(void)0;
473 }
474 }
475 {
476 { /* Inline range#Range#after (self) on <self:Range[Discrete]> */
477 var6 = self->attrs[COLOR_range__Range___after].val; /* _after on <self:Range[Discrete]> */
478 if (unlikely(var6 == NULL)) {
479 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _after");
480 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 27);
481 show_backtrace(1);
482 }
483 var4 = var6;
484 RET_LABEL5:(void)0;
485 }
486 }
487 {
488 var7 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_kernel__Comparable___62d_61d]))(var1, var4) /* >= on <var1:Discrete>*/;
489 }
490 var = var7;
491 goto RET_LABEL;
492 RET_LABEL:;
493 return var;
494 }
495 /* method range#Range#is_empty for (self: Object): Bool */
496 short int VIRTUAL_range__Range__is_empty(val* self) {
497 short int var /* : Bool */;
498 short int var1 /* : Bool */;
499 var1 = range__Range__is_empty(self);
500 var = var1;
501 RET_LABEL:;
502 return var;
503 }
504 /* method range#Range#init for (self: Range[Discrete], Discrete, Discrete) */
505 void range__Range__init(val* self, val* p0, val* p1) {
506 short int var /* : Bool */;
507 int cltype;
508 int idtype;
509 const struct type* type_struct;
510 const char* var_class_name;
511 short int var1 /* : Bool */;
512 int cltype2;
513 int idtype3;
514 const struct type* type_struct4;
515 const char* var_class_name5;
516 val* var_from /* var from: Discrete */;
517 val* var_to /* var to: Discrete */;
518 short int var7 /* : Bool */;
519 int cltype8;
520 int idtype9;
521 const struct type* type_struct10;
522 const char* var_class_name11;
523 short int var13 /* : Bool */;
524 int cltype14;
525 int idtype15;
526 const struct type* type_struct16;
527 const char* var_class_name17;
528 long var18 /* : Int */;
529 val* var19 /* : Discrete */;
530 short int var20 /* : Bool */;
531 int cltype21;
532 int idtype22;
533 const struct type* type_struct23;
534 const char* var_class_name24;
535 short int var26 /* : Bool */;
536 int cltype27;
537 int idtype28;
538 const struct type* type_struct29;
539 const char* var_class_name30;
540 /* Covariant cast for argument 0 (from) <p0:Discrete> isa Range#0 */
541 /* <p0:Discrete> isa Range#0 */
542 type_struct = self->type->resolution_table->types[COLOR_range__Range_FT0];
543 cltype = type_struct->color;
544 idtype = type_struct->id;
545 if(cltype >= p0->type->table_size) {
546 var = 0;
547 } else {
548 var = p0->type->type_table[cltype] == idtype;
549 }
550 if (unlikely(!var)) {
551 var_class_name = p0 == NULL ? "null" : p0->type->name;
552 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Range#0", var_class_name);
553 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 57);
554 show_backtrace(1);
555 }
556 /* Covariant cast for argument 1 (to) <p1:Discrete> isa Range#0 */
557 /* <p1:Discrete> isa Range#0 */
558 type_struct4 = self->type->resolution_table->types[COLOR_range__Range_FT0];
559 cltype2 = type_struct4->color;
560 idtype3 = type_struct4->id;
561 if(cltype2 >= p1->type->table_size) {
562 var1 = 0;
563 } else {
564 var1 = p1->type->type_table[cltype2] == idtype3;
565 }
566 if (unlikely(!var1)) {
567 var_class_name5 = p1 == NULL ? "null" : p1->type->name;
568 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Range#0", var_class_name5);
569 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 57);
570 show_backtrace(1);
571 }
572 var_from = p0;
573 var_to = p1;
574 {
575 { /* Inline range#Range#first= (self,var_from) on <self:Range[Discrete]> */
576 /* Covariant cast for argument 0 (first) <var_from:Discrete> isa Range#0 */
577 /* <var_from:Discrete> isa Range#0 */
578 type_struct10 = self->type->resolution_table->types[COLOR_range__Range_FT0];
579 cltype8 = type_struct10->color;
580 idtype9 = type_struct10->id;
581 if(cltype8 >= var_from->type->table_size) {
582 var7 = 0;
583 } else {
584 var7 = var_from->type->type_table[cltype8] == idtype9;
585 }
586 if (unlikely(!var7)) {
587 var_class_name11 = var_from == NULL ? "null" : var_from->type->name;
588 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Range#0", var_class_name11);
589 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 22);
590 show_backtrace(1);
591 }
592 self->attrs[COLOR_range__Range___first].val = var_from; /* _first on <self:Range[Discrete]> */
593 RET_LABEL6:(void)0;
594 }
595 }
596 {
597 { /* Inline range#Range#last= (self,var_to) on <self:Range[Discrete]> */
598 /* Covariant cast for argument 0 (last) <var_to:Discrete> isa Range#0 */
599 /* <var_to:Discrete> isa Range#0 */
600 type_struct16 = self->type->resolution_table->types[COLOR_range__Range_FT0];
601 cltype14 = type_struct16->color;
602 idtype15 = type_struct16->id;
603 if(cltype14 >= var_to->type->table_size) {
604 var13 = 0;
605 } else {
606 var13 = var_to->type->type_table[cltype14] == idtype15;
607 }
608 if (unlikely(!var13)) {
609 var_class_name17 = var_to == NULL ? "null" : var_to->type->name;
610 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Range#0", var_class_name17);
611 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 24);
612 show_backtrace(1);
613 }
614 self->attrs[COLOR_range__Range___last].val = var_to; /* _last on <self:Range[Discrete]> */
615 RET_LABEL12:(void)0;
616 }
617 }
618 var18 = 1;
619 {
620 var19 = ((val* (*)(val*, long))(var_to->class->vft[COLOR_kernel__Discrete__successor]))(var_to, var18) /* successor on <var_to:Discrete>*/;
621 }
622 /* <var19:Discrete> isa Range#0 */
623 type_struct23 = self->type->resolution_table->types[COLOR_range__Range_FT0];
624 cltype21 = type_struct23->color;
625 idtype22 = type_struct23->id;
626 if(cltype21 >= var19->type->table_size) {
627 var20 = 0;
628 } else {
629 var20 = var19->type->type_table[cltype21] == idtype22;
630 }
631 if (unlikely(!var20)) {
632 var_class_name24 = var19 == NULL ? "null" : var19->type->name;
633 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Range#0", var_class_name24);
634 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 63);
635 show_backtrace(1);
636 }
637 {
638 { /* Inline range#Range#after= (self,var19) on <self:Range[Discrete]> */
639 /* Covariant cast for argument 0 (after) <var19:Discrete> isa Range#0 */
640 /* <var19:Discrete> isa Range#0 */
641 type_struct29 = self->type->resolution_table->types[COLOR_range__Range_FT0];
642 cltype27 = type_struct29->color;
643 idtype28 = type_struct29->id;
644 if(cltype27 >= var19->type->table_size) {
645 var26 = 0;
646 } else {
647 var26 = var19->type->type_table[cltype27] == idtype28;
648 }
649 if (unlikely(!var26)) {
650 var_class_name30 = var19 == NULL ? "null" : var19->type->name;
651 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Range#0", var_class_name30);
652 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 27);
653 show_backtrace(1);
654 }
655 self->attrs[COLOR_range__Range___after].val = var19; /* _after on <self:Range[Discrete]> */
656 RET_LABEL25:(void)0;
657 }
658 }
659 RET_LABEL:;
660 }
661 /* method range#Range#init for (self: Object, Discrete, Discrete) */
662 void VIRTUAL_range__Range__init(val* self, val* p0, val* p1) {
663 range__Range__init(self, p0, p1); /* Direct call range#Range#init on <self:Object(Range[Discrete])>*/
664 RET_LABEL:;
665 }
666 /* method range#Range#without_last for (self: Range[Discrete], Discrete, Discrete) */
667 void range__Range__without_last(val* self, val* p0, val* p1) {
668 short int var /* : Bool */;
669 int cltype;
670 int idtype;
671 const struct type* type_struct;
672 const char* var_class_name;
673 short int var1 /* : Bool */;
674 int cltype2;
675 int idtype3;
676 const struct type* type_struct4;
677 const char* var_class_name5;
678 val* var_from /* var from: Discrete */;
679 val* var_to /* var to: Discrete */;
680 short int var7 /* : Bool */;
681 int cltype8;
682 int idtype9;
683 const struct type* type_struct10;
684 const char* var_class_name11;
685 long var12 /* : Int */;
686 val* var13 /* : Discrete */;
687 short int var14 /* : Bool */;
688 int cltype15;
689 int idtype16;
690 const struct type* type_struct17;
691 const char* var_class_name18;
692 short int var20 /* : Bool */;
693 int cltype21;
694 int idtype22;
695 const struct type* type_struct23;
696 const char* var_class_name24;
697 short int var26 /* : Bool */;
698 int cltype27;
699 int idtype28;
700 const struct type* type_struct29;
701 const char* var_class_name30;
702 /* Covariant cast for argument 0 (from) <p0:Discrete> isa Range#0 */
703 /* <p0:Discrete> isa Range#0 */
704 type_struct = self->type->resolution_table->types[COLOR_range__Range_FT0];
705 cltype = type_struct->color;
706 idtype = type_struct->id;
707 if(cltype >= p0->type->table_size) {
708 var = 0;
709 } else {
710 var = p0->type->type_table[cltype] == idtype;
711 }
712 if (unlikely(!var)) {
713 var_class_name = p0 == NULL ? "null" : p0->type->name;
714 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Range#0", var_class_name);
715 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 66);
716 show_backtrace(1);
717 }
718 /* Covariant cast for argument 1 (to) <p1:Discrete> isa Range#0 */
719 /* <p1:Discrete> isa Range#0 */
720 type_struct4 = self->type->resolution_table->types[COLOR_range__Range_FT0];
721 cltype2 = type_struct4->color;
722 idtype3 = type_struct4->id;
723 if(cltype2 >= p1->type->table_size) {
724 var1 = 0;
725 } else {
726 var1 = p1->type->type_table[cltype2] == idtype3;
727 }
728 if (unlikely(!var1)) {
729 var_class_name5 = p1 == NULL ? "null" : p1->type->name;
730 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Range#0", var_class_name5);
731 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 66);
732 show_backtrace(1);
733 }
734 var_from = p0;
735 var_to = p1;
736 {
737 { /* Inline range#Range#first= (self,var_from) on <self:Range[Discrete]> */
738 /* Covariant cast for argument 0 (first) <var_from:Discrete> isa Range#0 */
739 /* <var_from:Discrete> isa Range#0 */
740 type_struct10 = self->type->resolution_table->types[COLOR_range__Range_FT0];
741 cltype8 = type_struct10->color;
742 idtype9 = type_struct10->id;
743 if(cltype8 >= var_from->type->table_size) {
744 var7 = 0;
745 } else {
746 var7 = var_from->type->type_table[cltype8] == idtype9;
747 }
748 if (unlikely(!var7)) {
749 var_class_name11 = var_from == NULL ? "null" : var_from->type->name;
750 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Range#0", var_class_name11);
751 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 22);
752 show_backtrace(1);
753 }
754 self->attrs[COLOR_range__Range___first].val = var_from; /* _first on <self:Range[Discrete]> */
755 RET_LABEL6:(void)0;
756 }
757 }
758 var12 = 1;
759 {
760 var13 = ((val* (*)(val*, long))(var_to->class->vft[COLOR_kernel__Discrete__predecessor]))(var_to, var12) /* predecessor on <var_to:Discrete>*/;
761 }
762 /* <var13:Discrete> isa Range#0 */
763 type_struct17 = self->type->resolution_table->types[COLOR_range__Range_FT0];
764 cltype15 = type_struct17->color;
765 idtype16 = type_struct17->id;
766 if(cltype15 >= var13->type->table_size) {
767 var14 = 0;
768 } else {
769 var14 = var13->type->type_table[cltype15] == idtype16;
770 }
771 if (unlikely(!var14)) {
772 var_class_name18 = var13 == NULL ? "null" : var13->type->name;
773 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Range#0", var_class_name18);
774 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 71);
775 show_backtrace(1);
776 }
777 {
778 { /* Inline range#Range#last= (self,var13) on <self:Range[Discrete]> */
779 /* Covariant cast for argument 0 (last) <var13:Discrete> isa Range#0 */
780 /* <var13:Discrete> isa Range#0 */
781 type_struct23 = self->type->resolution_table->types[COLOR_range__Range_FT0];
782 cltype21 = type_struct23->color;
783 idtype22 = type_struct23->id;
784 if(cltype21 >= var13->type->table_size) {
785 var20 = 0;
786 } else {
787 var20 = var13->type->type_table[cltype21] == idtype22;
788 }
789 if (unlikely(!var20)) {
790 var_class_name24 = var13 == NULL ? "null" : var13->type->name;
791 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Range#0", var_class_name24);
792 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 24);
793 show_backtrace(1);
794 }
795 self->attrs[COLOR_range__Range___last].val = var13; /* _last on <self:Range[Discrete]> */
796 RET_LABEL19:(void)0;
797 }
798 }
799 {
800 { /* Inline range#Range#after= (self,var_to) on <self:Range[Discrete]> */
801 /* Covariant cast for argument 0 (after) <var_to:Discrete> isa Range#0 */
802 /* <var_to:Discrete> isa Range#0 */
803 type_struct29 = self->type->resolution_table->types[COLOR_range__Range_FT0];
804 cltype27 = type_struct29->color;
805 idtype28 = type_struct29->id;
806 if(cltype27 >= var_to->type->table_size) {
807 var26 = 0;
808 } else {
809 var26 = var_to->type->type_table[cltype27] == idtype28;
810 }
811 if (unlikely(!var26)) {
812 var_class_name30 = var_to == NULL ? "null" : var_to->type->name;
813 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Range#0", var_class_name30);
814 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 27);
815 show_backtrace(1);
816 }
817 self->attrs[COLOR_range__Range___after].val = var_to; /* _after on <self:Range[Discrete]> */
818 RET_LABEL25:(void)0;
819 }
820 }
821 RET_LABEL:;
822 }
823 /* method range#Range#without_last for (self: Object, Discrete, Discrete) */
824 void VIRTUAL_range__Range__without_last(val* self, val* p0, val* p1) {
825 range__Range__without_last(self, p0, p1); /* Direct call range#Range#without_last on <self:Object(Range[Discrete])>*/
826 RET_LABEL:;
827 }
828 /* method range#IteratorRange#item for (self: IteratorRange[Discrete]): Discrete */
829 val* range__IteratorRange__item(val* self) {
830 val* var /* : Discrete */;
831 val* var1 /* : Discrete */;
832 var1 = self->attrs[COLOR_range__IteratorRange___item].val; /* _item on <self:IteratorRange[Discrete]> */
833 if (unlikely(var1 == NULL)) {
834 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _item");
835 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 81);
836 show_backtrace(1);
837 }
838 var = var1;
839 goto RET_LABEL;
840 RET_LABEL:;
841 return var;
842 }
843 /* method range#IteratorRange#item for (self: Object): nullable Object */
844 val* VIRTUAL_range__IteratorRange__item(val* self) {
845 val* var /* : nullable Object */;
846 val* var1 /* : Discrete */;
847 var1 = range__IteratorRange__item(self);
848 var = var1;
849 RET_LABEL:;
850 return var;
851 }
852 /* method range#IteratorRange#is_ok for (self: IteratorRange[Discrete]): Bool */
853 short int range__IteratorRange__is_ok(val* self) {
854 short int var /* : Bool */;
855 val* var1 /* : Discrete */;
856 val* var2 /* : Range[Discrete] */;
857 val* var3 /* : Discrete */;
858 val* var5 /* : Discrete */;
859 short int var6 /* : Bool */;
860 var1 = self->attrs[COLOR_range__IteratorRange___item].val; /* _item on <self:IteratorRange[Discrete]> */
861 if (unlikely(var1 == NULL)) {
862 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _item");
863 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 83);
864 show_backtrace(1);
865 }
866 var2 = self->attrs[COLOR_range__IteratorRange___range].val; /* _range on <self:IteratorRange[Discrete]> */
867 if (unlikely(var2 == NULL)) {
868 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _range");
869 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 83);
870 show_backtrace(1);
871 }
872 {
873 { /* Inline range#Range#after (var2) on <var2:Range[Discrete]> */
874 var5 = var2->attrs[COLOR_range__Range___after].val; /* _after on <var2:Range[Discrete]> */
875 if (unlikely(var5 == NULL)) {
876 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _after");
877 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 27);
878 show_backtrace(1);
879 }
880 var3 = var5;
881 RET_LABEL4:(void)0;
882 }
883 }
884 {
885 var6 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_kernel__Comparable___60d]))(var1, var3) /* < on <var1:Discrete>*/;
886 }
887 var = var6;
888 goto RET_LABEL;
889 RET_LABEL:;
890 return var;
891 }
892 /* method range#IteratorRange#is_ok for (self: Object): Bool */
893 short int VIRTUAL_range__IteratorRange__is_ok(val* self) {
894 short int var /* : Bool */;
895 short int var1 /* : Bool */;
896 var1 = range__IteratorRange__is_ok(self);
897 var = var1;
898 RET_LABEL:;
899 return var;
900 }
901 /* method range#IteratorRange#next for (self: IteratorRange[Discrete]) */
902 void range__IteratorRange__next(val* self) {
903 val* var /* : Discrete */;
904 long var1 /* : Int */;
905 val* var2 /* : Discrete */;
906 short int var3 /* : Bool */;
907 int cltype;
908 int idtype;
909 const struct type* type_struct;
910 const char* var_class_name;
911 var = self->attrs[COLOR_range__IteratorRange___item].val; /* _item on <self:IteratorRange[Discrete]> */
912 if (unlikely(var == NULL)) {
913 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _item");
914 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 85);
915 show_backtrace(1);
916 }
917 var1 = 1;
918 {
919 var2 = ((val* (*)(val*, long))(var->class->vft[COLOR_kernel__Discrete__successor]))(var, var1) /* successor on <var:Discrete>*/;
920 }
921 /* <var2:Discrete> isa IteratorRange#0 */
922 type_struct = self->type->resolution_table->types[COLOR_range__IteratorRange_FT0];
923 cltype = type_struct->color;
924 idtype = type_struct->id;
925 if(cltype >= var2->type->table_size) {
926 var3 = 0;
927 } else {
928 var3 = var2->type->type_table[cltype] == idtype;
929 }
930 if (unlikely(!var3)) {
931 var_class_name = var2 == NULL ? "null" : var2->type->name;
932 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "IteratorRange#0", var_class_name);
933 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 85);
934 show_backtrace(1);
935 }
936 self->attrs[COLOR_range__IteratorRange___item].val = var2; /* _item on <self:IteratorRange[Discrete]> */
937 RET_LABEL:;
938 }
939 /* method range#IteratorRange#next for (self: Object) */
940 void VIRTUAL_range__IteratorRange__next(val* self) {
941 range__IteratorRange__next(self); /* Direct call range#IteratorRange#next on <self:Object(IteratorRange[Discrete])>*/
942 RET_LABEL:;
943 }
944 /* method range#IteratorRange#init for (self: IteratorRange[Discrete], Range[Discrete]) */
945 void range__IteratorRange__init(val* self, val* p0) {
946 short int var /* : Bool */;
947 int cltype;
948 int idtype;
949 const struct type* type_struct;
950 const char* var_class_name;
951 val* var_r /* var r: Range[Discrete] */;
952 val* var1 /* : Discrete */;
953 val* var3 /* : Discrete */;
954 /* Covariant cast for argument 0 (r) <p0:Range[Discrete]> isa Range[IteratorRange#0] */
955 /* <p0:Range[Discrete]> isa Range[IteratorRange#0] */
956 type_struct = self->type->resolution_table->types[COLOR_range__Rangerange__IteratorRange_FT0];
957 cltype = type_struct->color;
958 idtype = type_struct->id;
959 if(cltype >= p0->type->table_size) {
960 var = 0;
961 } else {
962 var = p0->type->type_table[cltype] == idtype;
963 }
964 if (unlikely(!var)) {
965 var_class_name = p0 == NULL ? "null" : p0->type->name;
966 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Range[IteratorRange#0]", var_class_name);
967 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 87);
968 show_backtrace(1);
969 }
970 var_r = p0;
971 self->attrs[COLOR_range__IteratorRange___range].val = var_r; /* _range on <self:IteratorRange[Discrete]> */
972 {
973 { /* Inline range#Range#first (var_r) on <var_r:Range[Discrete]> */
974 var3 = var_r->attrs[COLOR_range__Range___first].val; /* _first on <var_r:Range[Discrete]> */
975 if (unlikely(var3 == NULL)) {
976 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _first");
977 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 22);
978 show_backtrace(1);
979 }
980 var1 = var3;
981 RET_LABEL2:(void)0;
982 }
983 }
984 self->attrs[COLOR_range__IteratorRange___item].val = var1; /* _item on <self:IteratorRange[Discrete]> */
985 RET_LABEL:;
986 }
987 /* method range#IteratorRange#init for (self: Object, Range[Discrete]) */
988 void VIRTUAL_range__IteratorRange__init(val* self, val* p0) {
989 range__IteratorRange__init(self, p0); /* Direct call range#IteratorRange#init on <self:Object(IteratorRange[Discrete])>*/
990 RET_LABEL:;
991 }