doc: added comment for standard::math::Int::rand
[nit.git] / c_src / string.sep.1.c
1 #include "string.sep.0.h"
2 /* method string#AbstractString#items for (self: AbstractString): NativeString */
3 char* string__AbstractString__items(val* self) {
4 char* var /* : NativeString */;
5 char* var1 /* : NativeString */;
6 var1 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:AbstractString> */
7 var = var1;
8 RET_LABEL:;
9 return var;
10 }
11 /* method string#AbstractString#items for (self: Object): NativeString */
12 char* VIRTUAL_string__AbstractString__items(val* self) {
13 char* var /* : NativeString */;
14 char* var1 /* : NativeString */;
15 var1 = string__AbstractString__items(self);
16 var = var1;
17 RET_LABEL:;
18 return var;
19 }
20 /* method string#AbstractString#[] for (self: AbstractString, Int): Char */
21 char string__AbstractString___91d_93d(val* self, long p0) {
22 char var /* : Char */;
23 long var_index /* var index: Int */;
24 char* var1 /* : NativeString */;
25 char var2 /* : Char */;
26 char var4 /* : Char */;
27 var_index = p0;
28 var1 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:AbstractString> */
29 { /* Inline string#NativeString#[] (var1,var_index) */
30 var4 = var1[var_index];
31 var2 = var4;
32 goto RET_LABEL3;
33 RET_LABEL3:(void)0;
34 }
35 var = var2;
36 goto RET_LABEL;
37 RET_LABEL:;
38 return var;
39 }
40 /* method string#AbstractString#[] for (self: Object, Int): nullable Object */
41 val* VIRTUAL_string__AbstractString___91d_93d(val* self, long p0) {
42 val* var /* : nullable Object */;
43 char var1 /* : Char */;
44 val* var2 /* : nullable Object */;
45 var1 = string__AbstractString___91d_93d(self, p0);
46 var2 = BOX_kernel__Char(var1); /* autobox from Char to nullable Object */
47 var = var2;
48 RET_LABEL:;
49 return var;
50 }
51 /* method string#AbstractString#substring for (self: AbstractString, Int, Int): String */
52 val* string__AbstractString__substring(val* self, long p0, long p1) {
53 val* var /* : String */;
54 long var_from /* var from: Int */;
55 long var_count /* var count: Int */;
56 long var1 /* : Int */;
57 short int var2 /* : Bool */;
58 short int var4 /* : Bool */;
59 int cltype;
60 int idtype;
61 const char* var_class_name;
62 short int var5 /* : Bool */;
63 long var6 /* : Int */;
64 long var8 /* : Int */;
65 long var9 /* : Int */;
66 short int var10 /* : Bool */;
67 short int var12 /* : Bool */;
68 int cltype13;
69 int idtype14;
70 const char* var_class_name15;
71 short int var16 /* : Bool */;
72 long var17 /* : Int */;
73 long var18 /* : Int */;
74 short int var19 /* : Bool */;
75 short int var21 /* : Bool */;
76 int cltype22;
77 int idtype23;
78 const char* var_class_name24;
79 short int var25 /* : Bool */;
80 long var26 /* : Int */;
81 short int var27 /* : Bool */;
82 short int var29 /* : Bool */;
83 int cltype30;
84 int idtype31;
85 const char* var_class_name32;
86 short int var33 /* : Bool */;
87 val* var34 /* : Buffer */;
88 long var35 /* : Int */;
89 long var37 /* : Int */;
90 val* var_r /* var r: Buffer */;
91 short int var38 /* : Bool */;
92 short int var40 /* : Bool */;
93 int cltype41;
94 int idtype42;
95 const char* var_class_name43;
96 short int var44 /* : Bool */;
97 char* var45 /* : NativeString */;
98 char var46 /* : Char */;
99 char var48 /* : Char */;
100 val* var49 /* : nullable Object */;
101 long var50 /* : Int */;
102 long var51 /* : Int */;
103 long var53 /* : Int */;
104 val* var54 /* : String */;
105 static val* varonce;
106 val* var55 /* : String */;
107 char* var56 /* : NativeString */;
108 long var57 /* : Int */;
109 val* var58 /* : String */;
110 var_from = p0;
111 var_count = p1;
112 var1 = 0;
113 { /* Inline kernel#Int#>= (var_count,var1) */
114 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
115 /* <var1:Int> isa OTHER */
116 var4 = 1; /* easy <var1:Int> isa OTHER*/
117 if (!var4) {
118 var_class_name = type_kernel__Int.name;
119 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
120 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
121 show_backtrace(1);
122 }
123 var5 = var_count >= var1;
124 var2 = var5;
125 goto RET_LABEL3;
126 RET_LABEL3:(void)0;
127 }
128 if (!var2) {
129 fprintf(stderr, "Runtime error: %s", "Assert failed");
130 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 50);
131 show_backtrace(1);
132 }
133 { /* Inline kernel#Int#+ (var_count,var_from) */
134 var8 = var_count + var_from;
135 var6 = var8;
136 goto RET_LABEL7;
137 RET_LABEL7:(void)0;
138 }
139 var_count = var6;
140 var9 = 0;
141 { /* Inline kernel#Int#< (var_from,var9) */
142 /* Covariant cast for argument 0 (i) <var9:Int> isa OTHER */
143 /* <var9:Int> isa OTHER */
144 var12 = 1; /* easy <var9:Int> isa OTHER*/
145 if (!var12) {
146 var_class_name15 = type_kernel__Int.name;
147 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name15);
148 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
149 show_backtrace(1);
150 }
151 var16 = var_from < var9;
152 var10 = var16;
153 goto RET_LABEL11;
154 RET_LABEL11:(void)0;
155 }
156 if (var10){
157 var17 = 0;
158 var_from = var17;
159 } else {
160 }
161 var18 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractString>*/;
162 { /* Inline kernel#Int#> (var_count,var18) */
163 /* Covariant cast for argument 0 (i) <var18:Int> isa OTHER */
164 /* <var18:Int> isa OTHER */
165 var21 = 1; /* easy <var18:Int> isa OTHER*/
166 if (!var21) {
167 var_class_name24 = type_kernel__Int.name;
168 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name24);
169 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
170 show_backtrace(1);
171 }
172 var25 = var_count > var18;
173 var19 = var25;
174 goto RET_LABEL20;
175 RET_LABEL20:(void)0;
176 }
177 if (var19){
178 var26 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractString>*/;
179 var_count = var26;
180 } else {
181 }
182 { /* Inline kernel#Int#< (var_from,var_count) */
183 /* Covariant cast for argument 0 (i) <var_count:Int> isa OTHER */
184 /* <var_count:Int> isa OTHER */
185 var29 = 1; /* easy <var_count:Int> isa OTHER*/
186 if (!var29) {
187 var_class_name32 = type_kernel__Int.name;
188 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name32);
189 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
190 show_backtrace(1);
191 }
192 var33 = var_from < var_count;
193 var27 = var33;
194 goto RET_LABEL28;
195 RET_LABEL28:(void)0;
196 }
197 if (var27){
198 var34 = NEW_string__Buffer(&type_string__Buffer);
199 { /* Inline kernel#Int#- (var_count,var_from) */
200 var37 = var_count - var_from;
201 var35 = var37;
202 goto RET_LABEL36;
203 RET_LABEL36:(void)0;
204 }
205 ((void (*)(val*, long))(var34->class->vft[COLOR_string__Buffer__with_capacity]))(var34, var35) /* with_capacity on <var34:Buffer>*/;
206 var_r = var34;
207 for(;;) {
208 { /* Inline kernel#Int#< (var_from,var_count) */
209 /* Covariant cast for argument 0 (i) <var_count:Int> isa OTHER */
210 /* <var_count:Int> isa OTHER */
211 var40 = 1; /* easy <var_count:Int> isa OTHER*/
212 if (!var40) {
213 var_class_name43 = type_kernel__Int.name;
214 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name43);
215 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
216 show_backtrace(1);
217 }
218 var44 = var_from < var_count;
219 var38 = var44;
220 goto RET_LABEL39;
221 RET_LABEL39:(void)0;
222 }
223 if (!var38) break;
224 var45 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:AbstractString> */
225 { /* Inline string#NativeString#[] (var45,var_from) */
226 var48 = var45[var_from];
227 var46 = var48;
228 goto RET_LABEL47;
229 RET_LABEL47:(void)0;
230 }
231 var49 = BOX_kernel__Char(var46); /* autobox from Char to nullable Object */
232 ((void (*)(val*, val*))(var_r->class->vft[COLOR_abstract_collection__Sequence__push]))(var_r, var49) /* push on <var_r:Buffer>*/;
233 var50 = 1;
234 { /* Inline kernel#Int#+ (var_from,var50) */
235 var53 = var_from + var50;
236 var51 = var53;
237 goto RET_LABEL52;
238 RET_LABEL52:(void)0;
239 }
240 var_from = var51;
241 CONTINUE_label: (void)0;
242 }
243 BREAK_label: (void)0;
244 var54 = ((val* (*)(val*))(var_r->class->vft[COLOR_string__Object__to_s]))(var_r) /* to_s on <var_r:Buffer>*/;
245 var = var54;
246 goto RET_LABEL;
247 } else {
248 if (varonce) {
249 var55 = varonce;
250 } else {
251 var56 = "";
252 var57 = 0;
253 var58 = string__NativeString__to_s_with_length(var56, var57);
254 var55 = var58;
255 varonce = var55;
256 }
257 var = var55;
258 goto RET_LABEL;
259 }
260 RET_LABEL:;
261 return var;
262 }
263 /* method string#AbstractString#substring for (self: Object, Int, Int): String */
264 val* VIRTUAL_string__AbstractString__substring(val* self, long p0, long p1) {
265 val* var /* : String */;
266 val* var1 /* : String */;
267 var1 = string__AbstractString__substring(self, p0, p1);
268 var = var1;
269 RET_LABEL:;
270 return var;
271 }
272 /* method string#AbstractString#substring_from for (self: AbstractString, Int): String */
273 val* string__AbstractString__substring_from(val* self, long p0) {
274 val* var /* : String */;
275 long var_from /* var from: Int */;
276 long var1 /* : Int */;
277 short int var2 /* : Bool */;
278 short int var4 /* : Bool */;
279 int cltype;
280 int idtype;
281 const char* var_class_name;
282 short int var5 /* : Bool */;
283 long var6 /* : Int */;
284 long var7 /* : Int */;
285 long var9 /* : Int */;
286 val* var10 /* : String */;
287 var_from = p0;
288 var1 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractString>*/;
289 { /* Inline kernel#Int#< (var_from,var1) */
290 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
291 /* <var1:Int> isa OTHER */
292 var4 = 1; /* easy <var1:Int> isa OTHER*/
293 if (!var4) {
294 var_class_name = type_kernel__Int.name;
295 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
296 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
297 show_backtrace(1);
298 }
299 var5 = var_from < var1;
300 var2 = var5;
301 goto RET_LABEL3;
302 RET_LABEL3:(void)0;
303 }
304 if (!var2) {
305 fprintf(stderr, "Runtime error: %s", "Assert failed");
306 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 75);
307 show_backtrace(1);
308 }
309 var6 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractString>*/;
310 { /* Inline kernel#Int#- (var6,var_from) */
311 var9 = var6 - var_from;
312 var7 = var9;
313 goto RET_LABEL8;
314 RET_LABEL8:(void)0;
315 }
316 var10 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_string__AbstractString__substring]))(self, var_from, var7) /* substring on <self:AbstractString>*/;
317 var = var10;
318 goto RET_LABEL;
319 RET_LABEL:;
320 return var;
321 }
322 /* method string#AbstractString#substring_from for (self: Object, Int): String */
323 val* VIRTUAL_string__AbstractString__substring_from(val* self, long p0) {
324 val* var /* : String */;
325 val* var1 /* : String */;
326 var1 = string__AbstractString__substring_from(self, p0);
327 var = var1;
328 RET_LABEL:;
329 return var;
330 }
331 /* method string#AbstractString#has_substring for (self: AbstractString, String, Int): Bool */
332 short int string__AbstractString__has_substring(val* self, val* p0, long p1) {
333 short int var /* : Bool */;
334 val* var_str /* var str: String */;
335 long var_pos /* var pos: Int */;
336 long var1 /* : Int */;
337 long var2 /* : Int */;
338 long var3 /* : Int */;
339 long var5 /* : Int */;
340 long var_itsindex /* var itsindex: Int */;
341 long var6 /* : Int */;
342 long var8 /* : Int */;
343 long var_myindex /* var myindex: Int */;
344 char* var9 /* : NativeString */;
345 char* var_myitems /* var myitems: NativeString */;
346 char* var10 /* : NativeString */;
347 char* var_itsitems /* var itsitems: NativeString */;
348 short int var11 /* : Bool */;
349 long var12 /* : Int */;
350 short int var13 /* : Bool */;
351 short int var15 /* : Bool */;
352 int cltype;
353 int idtype;
354 const char* var_class_name;
355 short int var16 /* : Bool */;
356 short int var_ /* var : Bool */;
357 short int var17 /* : Bool */;
358 short int var19 /* : Bool */;
359 int cltype20;
360 int idtype21;
361 const char* var_class_name22;
362 short int var23 /* : Bool */;
363 short int var24 /* : Bool */;
364 long var25 /* : Int */;
365 long var_its_index_from /* var its_index_from: Int */;
366 long var26 /* : Int */;
367 long var28 /* : Int */;
368 short int var29 /* : Bool */;
369 short int var31 /* : Bool */;
370 int cltype32;
371 int idtype33;
372 const char* var_class_name34;
373 short int var35 /* : Bool */;
374 char var36 /* : Char */;
375 char var38 /* : Char */;
376 char var39 /* : Char */;
377 char var41 /* : Char */;
378 short int var42 /* : Bool */;
379 short int var44 /* : Bool */;
380 short int var45 /* : Bool */;
381 short int var46 /* : Bool */;
382 long var47 /* : Int */;
383 long var48 /* : Int */;
384 long var50 /* : Int */;
385 long var51 /* : Int */;
386 long var52 /* : Int */;
387 long var54 /* : Int */;
388 short int var55 /* : Bool */;
389 var_str = p0;
390 var_pos = p1;
391 var1 = ((long (*)(val*))(var_str->class->vft[COLOR_abstract_collection__Collection__length]))(var_str) /* length on <var_str:String>*/;
392 var2 = 1;
393 { /* Inline kernel#Int#- (var1,var2) */
394 var5 = var1 - var2;
395 var3 = var5;
396 goto RET_LABEL4;
397 RET_LABEL4:(void)0;
398 }
399 var_itsindex = var3;
400 { /* Inline kernel#Int#+ (var_pos,var_itsindex) */
401 var8 = var_pos + var_itsindex;
402 var6 = var8;
403 goto RET_LABEL7;
404 RET_LABEL7:(void)0;
405 }
406 var_myindex = var6;
407 var9 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:AbstractString> */
408 var_myitems = var9;
409 var10 = var_str->attrs[COLOR_string__AbstractString___items].str; /* _items on <var_str:String> */
410 var_itsitems = var10;
411 var12 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractString>*/;
412 { /* Inline kernel#Int#> (var_myindex,var12) */
413 /* Covariant cast for argument 0 (i) <var12:Int> isa OTHER */
414 /* <var12:Int> isa OTHER */
415 var15 = 1; /* easy <var12:Int> isa OTHER*/
416 if (!var15) {
417 var_class_name = type_kernel__Int.name;
418 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
419 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
420 show_backtrace(1);
421 }
422 var16 = var_myindex > var12;
423 var13 = var16;
424 goto RET_LABEL14;
425 RET_LABEL14:(void)0;
426 }
427 var_ = var13;
428 if (var13){
429 var11 = var_;
430 } else {
431 { /* Inline kernel#Int#> (var_itsindex,var_myindex) */
432 /* Covariant cast for argument 0 (i) <var_myindex:Int> isa OTHER */
433 /* <var_myindex:Int> isa OTHER */
434 var19 = 1; /* easy <var_myindex:Int> isa OTHER*/
435 if (!var19) {
436 var_class_name22 = type_kernel__Int.name;
437 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name22);
438 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
439 show_backtrace(1);
440 }
441 var23 = var_itsindex > var_myindex;
442 var17 = var23;
443 goto RET_LABEL18;
444 RET_LABEL18:(void)0;
445 }
446 var11 = var17;
447 }
448 if (var11){
449 var24 = 0;
450 var = var24;
451 goto RET_LABEL;
452 } else {
453 }
454 var25 = var_str->attrs[COLOR_string__String___index_from].l; /* _index_from on <var_str:String> */
455 var_its_index_from = var25;
456 { /* Inline kernel#Int#+ (var_itsindex,var_its_index_from) */
457 var28 = var_itsindex + var_its_index_from;
458 var26 = var28;
459 goto RET_LABEL27;
460 RET_LABEL27:(void)0;
461 }
462 var_itsindex = var26;
463 for(;;) {
464 { /* Inline kernel#Int#>= (var_itsindex,var_its_index_from) */
465 /* Covariant cast for argument 0 (i) <var_its_index_from:Int> isa OTHER */
466 /* <var_its_index_from:Int> isa OTHER */
467 var31 = 1; /* easy <var_its_index_from:Int> isa OTHER*/
468 if (!var31) {
469 var_class_name34 = type_kernel__Int.name;
470 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name34);
471 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
472 show_backtrace(1);
473 }
474 var35 = var_itsindex >= var_its_index_from;
475 var29 = var35;
476 goto RET_LABEL30;
477 RET_LABEL30:(void)0;
478 }
479 if (!var29) break;
480 { /* Inline string#NativeString#[] (var_myitems,var_myindex) */
481 var38 = var_myitems[var_myindex];
482 var36 = var38;
483 goto RET_LABEL37;
484 RET_LABEL37:(void)0;
485 }
486 { /* Inline string#NativeString#[] (var_itsitems,var_itsindex) */
487 var41 = var_itsitems[var_itsindex];
488 var39 = var41;
489 goto RET_LABEL40;
490 RET_LABEL40:(void)0;
491 }
492 { /* Inline kernel#Char#!= (var36,var39) */
493 var44 = var36 == var39;
494 var45 = !var44;
495 var42 = var45;
496 goto RET_LABEL43;
497 RET_LABEL43:(void)0;
498 }
499 if (var42){
500 var46 = 0;
501 var = var46;
502 goto RET_LABEL;
503 } else {
504 }
505 var47 = 1;
506 { /* Inline kernel#Int#- (var_myindex,var47) */
507 var50 = var_myindex - var47;
508 var48 = var50;
509 goto RET_LABEL49;
510 RET_LABEL49:(void)0;
511 }
512 var_myindex = var48;
513 var51 = 1;
514 { /* Inline kernel#Int#- (var_itsindex,var51) */
515 var54 = var_itsindex - var51;
516 var52 = var54;
517 goto RET_LABEL53;
518 RET_LABEL53:(void)0;
519 }
520 var_itsindex = var52;
521 CONTINUE_label: (void)0;
522 }
523 BREAK_label: (void)0;
524 var55 = 1;
525 var = var55;
526 goto RET_LABEL;
527 RET_LABEL:;
528 return var;
529 }
530 /* method string#AbstractString#has_substring for (self: Object, String, Int): Bool */
531 short int VIRTUAL_string__AbstractString__has_substring(val* self, val* p0, long p1) {
532 short int var /* : Bool */;
533 short int var1 /* : Bool */;
534 var1 = string__AbstractString__has_substring(self, p0, p1);
535 var = var1;
536 RET_LABEL:;
537 return var;
538 }
539 /* method string#AbstractString#has_prefix for (self: AbstractString, String): Bool */
540 short int string__AbstractString__has_prefix(val* self, val* p0) {
541 short int var /* : Bool */;
542 val* var_prefix /* var prefix: String */;
543 long var1 /* : Int */;
544 short int var2 /* : Bool */;
545 var_prefix = p0;
546 var1 = 0;
547 var2 = ((short int (*)(val*, val*, long))(self->class->vft[COLOR_string__AbstractString__has_substring]))(self, var_prefix, var1) /* has_substring on <self:AbstractString>*/;
548 var = var2;
549 goto RET_LABEL;
550 RET_LABEL:;
551 return var;
552 }
553 /* method string#AbstractString#has_prefix for (self: Object, String): Bool */
554 short int VIRTUAL_string__AbstractString__has_prefix(val* self, val* p0) {
555 short int var /* : Bool */;
556 short int var1 /* : Bool */;
557 var1 = string__AbstractString__has_prefix(self, p0);
558 var = var1;
559 RET_LABEL:;
560 return var;
561 }
562 /* method string#AbstractString#has_suffix for (self: AbstractString, String): Bool */
563 short int string__AbstractString__has_suffix(val* self, val* p0) {
564 short int var /* : Bool */;
565 val* var_suffix /* var suffix: String */;
566 long var1 /* : Int */;
567 long var2 /* : Int */;
568 long var3 /* : Int */;
569 long var5 /* : Int */;
570 short int var6 /* : Bool */;
571 var_suffix = p0;
572 var1 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractString>*/;
573 var2 = ((long (*)(val*))(var_suffix->class->vft[COLOR_abstract_collection__Collection__length]))(var_suffix) /* length on <var_suffix:String>*/;
574 { /* Inline kernel#Int#- (var1,var2) */
575 var5 = var1 - var2;
576 var3 = var5;
577 goto RET_LABEL4;
578 RET_LABEL4:(void)0;
579 }
580 var6 = ((short int (*)(val*, val*, long))(self->class->vft[COLOR_string__AbstractString__has_substring]))(self, var_suffix, var3) /* has_substring on <self:AbstractString>*/;
581 var = var6;
582 goto RET_LABEL;
583 RET_LABEL:;
584 return var;
585 }
586 /* method string#AbstractString#has_suffix for (self: Object, String): Bool */
587 short int VIRTUAL_string__AbstractString__has_suffix(val* self, val* p0) {
588 short int var /* : Bool */;
589 short int var1 /* : Bool */;
590 var1 = string__AbstractString__has_suffix(self, p0);
591 var = var1;
592 RET_LABEL:;
593 return var;
594 }
595 /* method string#AbstractString#to_i for (self: AbstractString): Int */
596 long string__AbstractString__to_i(val* self) {
597 long var /* : Int */;
598 val* var1 /* : String */;
599 char* var2 /* : NativeString */;
600 long var3 /* : Int */;
601 long var5 /* : Int */;
602 var1 = ((val* (*)(val*))(self->class->vft[COLOR_string__Object__to_s]))(self) /* to_s on <self:AbstractString>*/;
603 var2 = ((char* (*)(val*))(var1->class->vft[COLOR_string__String__to_cstring]))(var1) /* to_cstring on <var1:String>*/;
604 { /* Inline string#NativeString#atoi (var2) */
605 var5 = atoi(var2);;
606 var3 = var5;
607 goto RET_LABEL4;
608 RET_LABEL4:(void)0;
609 }
610 var = var3;
611 goto RET_LABEL;
612 RET_LABEL:;
613 return var;
614 }
615 /* method string#AbstractString#to_i for (self: Object): Int */
616 long VIRTUAL_string__AbstractString__to_i(val* self) {
617 long var /* : Int */;
618 long var1 /* : Int */;
619 var1 = string__AbstractString__to_i(self);
620 var = var1;
621 RET_LABEL:;
622 return var;
623 }
624 /* method string#AbstractString#to_f for (self: AbstractString): Float */
625 double string__AbstractString__to_f(val* self) {
626 double var /* : Float */;
627 val* var1 /* : String */;
628 char* var2 /* : NativeString */;
629 double var3 /* : Float */;
630 var1 = ((val* (*)(val*))(self->class->vft[COLOR_string__Object__to_s]))(self) /* to_s on <self:AbstractString>*/;
631 var2 = ((char* (*)(val*))(var1->class->vft[COLOR_string__String__to_cstring]))(var1) /* to_cstring on <var1:String>*/;
632 var3 = string__NativeString__atof(var2);
633 var = var3;
634 goto RET_LABEL;
635 RET_LABEL:;
636 return var;
637 }
638 /* method string#AbstractString#to_f for (self: Object): Float */
639 double VIRTUAL_string__AbstractString__to_f(val* self) {
640 double var /* : Float */;
641 double var1 /* : Float */;
642 var1 = string__AbstractString__to_f(self);
643 var = var1;
644 RET_LABEL:;
645 return var;
646 }
647 /* method string#AbstractString#to_hex for (self: AbstractString): Int */
648 long string__AbstractString__to_hex(val* self) {
649 long var /* : Int */;
650 long var1 /* : Int */;
651 long var2 /* : Int */;
652 var1 = 16;
653 var2 = ((long (*)(val*, long))(self->class->vft[COLOR_string__AbstractString__a_to]))(self, var1) /* a_to on <self:AbstractString>*/;
654 var = var2;
655 goto RET_LABEL;
656 RET_LABEL:;
657 return var;
658 }
659 /* method string#AbstractString#to_hex for (self: Object): Int */
660 long VIRTUAL_string__AbstractString__to_hex(val* self) {
661 long var /* : Int */;
662 long var1 /* : Int */;
663 var1 = string__AbstractString__to_hex(self);
664 var = var1;
665 RET_LABEL:;
666 return var;
667 }
668 /* method string#AbstractString#a_to for (self: AbstractString, Int): Int */
669 long string__AbstractString__a_to(val* self, long p0) {
670 long var /* : Int */;
671 long var_base /* var base: Int */;
672 long var1 /* : Int */;
673 long var_i /* var i: Int */;
674 short int var2 /* : Bool */;
675 short int var_neg /* var neg: Bool */;
676 val* var3 /* : Iterator[nullable Object] */;
677 short int var4 /* : Bool */;
678 val* var5 /* : nullable Object */;
679 char var_c /* var c: Char */;
680 char var6 /* : Char */;
681 long var7 /* : Int */;
682 long var_v /* var v: Int */;
683 short int var8 /* : Bool */;
684 short int var10 /* : Bool */;
685 int cltype;
686 int idtype;
687 const char* var_class_name;
688 short int var11 /* : Bool */;
689 long var12 /* : Int */;
690 long var14 /* : Int */;
691 long var15 /* : Int */;
692 short int var16 /* : Bool */;
693 short int var18 /* : Bool */;
694 int cltype19;
695 int idtype20;
696 const char* var_class_name21;
697 short int var22 /* : Bool */;
698 short int var23 /* : Bool */;
699 long var24 /* : Int */;
700 long var26 /* : Int */;
701 long var27 /* : Int */;
702 long var29 /* : Int */;
703 long var30 /* : Int */;
704 long var32 /* : Int */;
705 var_base = p0;
706 var1 = 0;
707 var_i = var1;
708 var2 = 0;
709 var_neg = var2;
710 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__iterator]))(self) /* iterator on <self:AbstractString>*/;
711 for(;;) {
712 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
713 if(!var4) break;
714 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
715 var6 = ((struct instance_kernel__Char*)var5)->value; /* autounbox from nullable Object to Char */;
716 var_c = var6;
717 var7 = kernel__Char__to_i(var_c);
718 var_v = var7;
719 { /* Inline kernel#Int#> (var_v,var_base) */
720 /* Covariant cast for argument 0 (i) <var_base:Int> isa OTHER */
721 /* <var_base:Int> isa OTHER */
722 var10 = 1; /* easy <var_base:Int> isa OTHER*/
723 if (!var10) {
724 var_class_name = type_kernel__Int.name;
725 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
726 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
727 show_backtrace(1);
728 }
729 var11 = var_v > var_base;
730 var8 = var11;
731 goto RET_LABEL9;
732 RET_LABEL9:(void)0;
733 }
734 if (var8){
735 if (var_neg){
736 { /* Inline kernel#Int#unary - (var_i) */
737 var14 = -var_i;
738 var12 = var14;
739 goto RET_LABEL13;
740 RET_LABEL13:(void)0;
741 }
742 var = var12;
743 goto RET_LABEL;
744 } else {
745 var = var_i;
746 goto RET_LABEL;
747 }
748 } else {
749 var15 = 0;
750 { /* Inline kernel#Int#< (var_v,var15) */
751 /* Covariant cast for argument 0 (i) <var15:Int> isa OTHER */
752 /* <var15:Int> isa OTHER */
753 var18 = 1; /* easy <var15:Int> isa OTHER*/
754 if (!var18) {
755 var_class_name21 = type_kernel__Int.name;
756 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name21);
757 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
758 show_backtrace(1);
759 }
760 var22 = var_v < var15;
761 var16 = var22;
762 goto RET_LABEL17;
763 RET_LABEL17:(void)0;
764 }
765 if (var16){
766 var23 = 1;
767 var_neg = var23;
768 } else {
769 { /* Inline kernel#Int#* (var_i,var_base) */
770 var26 = var_i * var_base;
771 var24 = var26;
772 goto RET_LABEL25;
773 RET_LABEL25:(void)0;
774 }
775 { /* Inline kernel#Int#+ (var24,var_v) */
776 var29 = var24 + var_v;
777 var27 = var29;
778 goto RET_LABEL28;
779 RET_LABEL28:(void)0;
780 }
781 var_i = var27;
782 }
783 }
784 CONTINUE_label: (void)0;
785 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
786 }
787 BREAK_label: (void)0;
788 if (var_neg){
789 { /* Inline kernel#Int#unary - (var_i) */
790 var32 = -var_i;
791 var30 = var32;
792 goto RET_LABEL31;
793 RET_LABEL31:(void)0;
794 }
795 var = var30;
796 goto RET_LABEL;
797 } else {
798 var = var_i;
799 goto RET_LABEL;
800 }
801 RET_LABEL:;
802 return var;
803 }
804 /* method string#AbstractString#a_to for (self: Object, Int): Int */
805 long VIRTUAL_string__AbstractString__a_to(val* self, long p0) {
806 long var /* : Int */;
807 long var1 /* : Int */;
808 var1 = string__AbstractString__a_to(self, p0);
809 var = var1;
810 RET_LABEL:;
811 return var;
812 }
813 /* method string#AbstractString#is_numeric for (self: AbstractString): Bool */
814 short int string__AbstractString__is_numeric(val* self) {
815 short int var /* : Bool */;
816 short int var1 /* : Bool */;
817 short int var_has_point_or_comma /* var has_point_or_comma: Bool */;
818 val* var2 /* : Iterator[nullable Object] */;
819 short int var3 /* : Bool */;
820 val* var4 /* : nullable Object */;
821 char var_i /* var i: Char */;
822 char var5 /* : Char */;
823 short int var6 /* : Bool */;
824 short int var7 /* : Bool */;
825 short int var8 /* : Bool */;
826 short int var9 /* : Bool */;
827 char var10 /* : Char */;
828 short int var11 /* : Bool */;
829 short int var13 /* : Bool */;
830 short int var_ /* var : Bool */;
831 char var14 /* : Char */;
832 short int var15 /* : Bool */;
833 short int var17 /* : Bool */;
834 short int var_18 /* var : Bool */;
835 short int var19 /* : Bool */;
836 short int var20 /* : Bool */;
837 short int var21 /* : Bool */;
838 short int var22 /* : Bool */;
839 var1 = 0;
840 var_has_point_or_comma = var1;
841 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__iterator]))(self) /* iterator on <self:AbstractString>*/;
842 for(;;) {
843 var3 = ((short int (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var2) /* is_ok on <var2:Iterator[nullable Object]>*/;
844 if(!var3) break;
845 var4 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__item]))(var2) /* item on <var2:Iterator[nullable Object]>*/;
846 var5 = ((struct instance_kernel__Char*)var4)->value; /* autounbox from nullable Object to Char */;
847 var_i = var5;
848 var6 = string__Char__is_numeric(var_i);
849 var7 = !var6;
850 if (var7){
851 var10 = '.';
852 { /* Inline kernel#Char#== (var_i,var10) */
853 var13 = var_i == var10;
854 var11 = var13;
855 goto RET_LABEL12;
856 RET_LABEL12:(void)0;
857 }
858 var_ = var11;
859 if (var11){
860 var9 = var_;
861 } else {
862 var14 = ',';
863 { /* Inline kernel#Char#== (var_i,var14) */
864 var17 = var_i == var14;
865 var15 = var17;
866 goto RET_LABEL16;
867 RET_LABEL16:(void)0;
868 }
869 var9 = var15;
870 }
871 var_18 = var9;
872 if (var9){
873 var19 = !var_has_point_or_comma;
874 var8 = var19;
875 } else {
876 var8 = var_18;
877 }
878 if (var8){
879 var20 = 1;
880 var_has_point_or_comma = var20;
881 } else {
882 var21 = 0;
883 var = var21;
884 goto RET_LABEL;
885 }
886 } else {
887 }
888 CONTINUE_label: (void)0;
889 ((void (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__next]))(var2) /* next on <var2:Iterator[nullable Object]>*/;
890 }
891 BREAK_label: (void)0;
892 var22 = 1;
893 var = var22;
894 goto RET_LABEL;
895 RET_LABEL:;
896 return var;
897 }
898 /* method string#AbstractString#is_numeric for (self: Object): Bool */
899 short int VIRTUAL_string__AbstractString__is_numeric(val* self) {
900 short int var /* : Bool */;
901 short int var1 /* : Bool */;
902 var1 = string__AbstractString__is_numeric(self);
903 var = var1;
904 RET_LABEL:;
905 return var;
906 }
907 /* method string#AbstractString#to_upper for (self: AbstractString): String */
908 val* string__AbstractString__to_upper(val* self) {
909 val* var /* : String */;
910 val* var1 /* : Buffer */;
911 long var2 /* : Int */;
912 val* var_s /* var s: Buffer */;
913 val* var3 /* : Iterator[nullable Object] */;
914 short int var4 /* : Bool */;
915 val* var5 /* : nullable Object */;
916 char var_i /* var i: Char */;
917 char var6 /* : Char */;
918 char var7 /* : Char */;
919 val* var8 /* : nullable Object */;
920 val* var9 /* : String */;
921 var1 = NEW_string__Buffer(&type_string__Buffer);
922 var2 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractString>*/;
923 ((void (*)(val*, long))(var1->class->vft[COLOR_string__Buffer__with_capacity]))(var1, var2) /* with_capacity on <var1:Buffer>*/;
924 var_s = var1;
925 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__iterator]))(self) /* iterator on <self:AbstractString>*/;
926 for(;;) {
927 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
928 if(!var4) break;
929 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
930 var6 = ((struct instance_kernel__Char*)var5)->value; /* autounbox from nullable Object to Char */;
931 var_i = var6;
932 var7 = kernel__Char__to_upper(var_i);
933 var8 = BOX_kernel__Char(var7); /* autobox from Char to nullable Object */
934 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_s, var8) /* add on <var_s:Buffer>*/;
935 CONTINUE_label: (void)0;
936 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
937 }
938 BREAK_label: (void)0;
939 var9 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Object__to_s]))(var_s) /* to_s on <var_s:Buffer>*/;
940 var = var9;
941 goto RET_LABEL;
942 RET_LABEL:;
943 return var;
944 }
945 /* method string#AbstractString#to_upper for (self: Object): String */
946 val* VIRTUAL_string__AbstractString__to_upper(val* self) {
947 val* var /* : String */;
948 val* var1 /* : String */;
949 var1 = string__AbstractString__to_upper(self);
950 var = var1;
951 RET_LABEL:;
952 return var;
953 }
954 /* method string#AbstractString#to_lower for (self: AbstractString): String */
955 val* string__AbstractString__to_lower(val* self) {
956 val* var /* : String */;
957 val* var1 /* : Buffer */;
958 long var2 /* : Int */;
959 val* var_s /* var s: Buffer */;
960 val* var3 /* : Iterator[nullable Object] */;
961 short int var4 /* : Bool */;
962 val* var5 /* : nullable Object */;
963 char var_i /* var i: Char */;
964 char var6 /* : Char */;
965 char var7 /* : Char */;
966 val* var8 /* : nullable Object */;
967 val* var9 /* : String */;
968 var1 = NEW_string__Buffer(&type_string__Buffer);
969 var2 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractString>*/;
970 ((void (*)(val*, long))(var1->class->vft[COLOR_string__Buffer__with_capacity]))(var1, var2) /* with_capacity on <var1:Buffer>*/;
971 var_s = var1;
972 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__iterator]))(self) /* iterator on <self:AbstractString>*/;
973 for(;;) {
974 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
975 if(!var4) break;
976 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
977 var6 = ((struct instance_kernel__Char*)var5)->value; /* autounbox from nullable Object to Char */;
978 var_i = var6;
979 var7 = kernel__Char__to_lower(var_i);
980 var8 = BOX_kernel__Char(var7); /* autobox from Char to nullable Object */
981 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_s, var8) /* add on <var_s:Buffer>*/;
982 CONTINUE_label: (void)0;
983 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
984 }
985 BREAK_label: (void)0;
986 var9 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Object__to_s]))(var_s) /* to_s on <var_s:Buffer>*/;
987 var = var9;
988 goto RET_LABEL;
989 RET_LABEL:;
990 return var;
991 }
992 /* method string#AbstractString#to_lower for (self: Object): String */
993 val* VIRTUAL_string__AbstractString__to_lower(val* self) {
994 val* var /* : String */;
995 val* var1 /* : String */;
996 var1 = string__AbstractString__to_lower(self);
997 var = var1;
998 RET_LABEL:;
999 return var;
1000 }
1001 /* method string#AbstractString#trim for (self: AbstractString): String */
1002 val* string__AbstractString__trim(val* self) {
1003 val* var /* : String */;
1004 long var1 /* : Int */;
1005 long var2 /* : Int */;
1006 short int var3 /* : Bool */;
1007 short int var5 /* : Bool */;
1008 val* var6 /* : String */;
1009 long var7 /* : Int */;
1010 long var_start_pos /* var start_pos: Int */;
1011 val* var8 /* : nullable Object */;
1012 long var9 /* : Int */;
1013 char var11 /* : Char */;
1014 long var12 /* : Int */;
1015 long var13 /* : Int */;
1016 short int var14 /* : Bool */;
1017 short int var16 /* : Bool */;
1018 int cltype;
1019 int idtype;
1020 const char* var_class_name;
1021 short int var17 /* : Bool */;
1022 long var18 /* : Int */;
1023 long var19 /* : Int */;
1024 long var21 /* : Int */;
1025 long var22 /* : Int */;
1026 short int var23 /* : Bool */;
1027 short int var25 /* : Bool */;
1028 static val* varonce;
1029 val* var26 /* : String */;
1030 char* var27 /* : NativeString */;
1031 long var28 /* : Int */;
1032 val* var29 /* : String */;
1033 long var30 /* : Int */;
1034 long var31 /* : Int */;
1035 long var32 /* : Int */;
1036 long var34 /* : Int */;
1037 long var_end_pos /* var end_pos: Int */;
1038 val* var35 /* : nullable Object */;
1039 long var36 /* : Int */;
1040 char var38 /* : Char */;
1041 long var39 /* : Int */;
1042 long var40 /* : Int */;
1043 short int var41 /* : Bool */;
1044 short int var43 /* : Bool */;
1045 int cltype44;
1046 int idtype45;
1047 const char* var_class_name46;
1048 short int var47 /* : Bool */;
1049 long var48 /* : Int */;
1050 long var49 /* : Int */;
1051 long var51 /* : Int */;
1052 short int var52 /* : Bool */;
1053 short int var54 /* : Bool */;
1054 val* var55 /* : nullable Object */;
1055 val* var56 /* : String */;
1056 char var57 /* : Char */;
1057 long var59 /* : Int */;
1058 long var61 /* : Int */;
1059 long var62 /* : Int */;
1060 long var63 /* : Int */;
1061 long var65 /* : Int */;
1062 val* var66 /* : String */;
1063 var1 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:AbstractString> */
1064 var2 = 0;
1065 { /* Inline kernel#Int#== (var1,var2) */
1066 var5 = var1 == var2;
1067 var3 = var5;
1068 goto RET_LABEL4;
1069 RET_LABEL4:(void)0;
1070 }
1071 if (var3){
1072 var6 = ((val* (*)(val*))(self->class->vft[COLOR_string__Object__to_s]))(self) /* to_s on <self:AbstractString>*/;
1073 var = var6;
1074 goto RET_LABEL;
1075 } else {
1076 }
1077 var7 = 0;
1078 var_start_pos = var7;
1079 for(;;) {
1080 var8 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_start_pos) /* [] on <self:AbstractString>*/;
1081 { /* Inline kernel#Char#ascii (var8) */
1082 var11 = ((struct instance_kernel__Char*)var8)->value; /* autounbox from nullable Object to Char */;
1083 var12 = (unsigned char)var11;
1084 var9 = var12;
1085 goto RET_LABEL10;
1086 RET_LABEL10:(void)0;
1087 }
1088 var13 = 32;
1089 { /* Inline kernel#Int#<= (var9,var13) */
1090 /* Covariant cast for argument 0 (i) <var13:Int> isa OTHER */
1091 /* <var13:Int> isa OTHER */
1092 var16 = 1; /* easy <var13:Int> isa OTHER*/
1093 if (!var16) {
1094 var_class_name = type_kernel__Int.name;
1095 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1096 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
1097 show_backtrace(1);
1098 }
1099 var17 = var9 <= var13;
1100 var14 = var17;
1101 goto RET_LABEL15;
1102 RET_LABEL15:(void)0;
1103 }
1104 if (!var14) break;
1105 var18 = 1;
1106 { /* Inline kernel#Int#+ (var_start_pos,var18) */
1107 var21 = var_start_pos + var18;
1108 var19 = var21;
1109 goto RET_LABEL20;
1110 RET_LABEL20:(void)0;
1111 }
1112 var_start_pos = var19;
1113 var22 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:AbstractString> */
1114 { /* Inline kernel#Int#== (var_start_pos,var22) */
1115 var25 = var_start_pos == var22;
1116 var23 = var25;
1117 goto RET_LABEL24;
1118 RET_LABEL24:(void)0;
1119 }
1120 if (var23){
1121 if (varonce) {
1122 var26 = varonce;
1123 } else {
1124 var27 = "";
1125 var28 = 0;
1126 var29 = string__NativeString__to_s_with_length(var27, var28);
1127 var26 = var29;
1128 varonce = var26;
1129 }
1130 var = var26;
1131 goto RET_LABEL;
1132 } else {
1133 }
1134 CONTINUE_label: (void)0;
1135 }
1136 BREAK_label: (void)0;
1137 var30 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractString>*/;
1138 var31 = 1;
1139 { /* Inline kernel#Int#- (var30,var31) */
1140 var34 = var30 - var31;
1141 var32 = var34;
1142 goto RET_LABEL33;
1143 RET_LABEL33:(void)0;
1144 }
1145 var_end_pos = var32;
1146 for(;;) {
1147 var35 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_end_pos) /* [] on <self:AbstractString>*/;
1148 { /* Inline kernel#Char#ascii (var35) */
1149 var38 = ((struct instance_kernel__Char*)var35)->value; /* autounbox from nullable Object to Char */;
1150 var39 = (unsigned char)var38;
1151 var36 = var39;
1152 goto RET_LABEL37;
1153 RET_LABEL37:(void)0;
1154 }
1155 var40 = 32;
1156 { /* Inline kernel#Int#<= (var36,var40) */
1157 /* Covariant cast for argument 0 (i) <var40:Int> isa OTHER */
1158 /* <var40:Int> isa OTHER */
1159 var43 = 1; /* easy <var40:Int> isa OTHER*/
1160 if (!var43) {
1161 var_class_name46 = type_kernel__Int.name;
1162 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name46);
1163 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
1164 show_backtrace(1);
1165 }
1166 var47 = var36 <= var40;
1167 var41 = var47;
1168 goto RET_LABEL42;
1169 RET_LABEL42:(void)0;
1170 }
1171 if (!var41) break;
1172 var48 = 1;
1173 { /* Inline kernel#Int#- (var_end_pos,var48) */
1174 var51 = var_end_pos - var48;
1175 var49 = var51;
1176 goto RET_LABEL50;
1177 RET_LABEL50:(void)0;
1178 }
1179 var_end_pos = var49;
1180 { /* Inline kernel#Int#== (var_end_pos,var_start_pos) */
1181 var54 = var_end_pos == var_start_pos;
1182 var52 = var54;
1183 goto RET_LABEL53;
1184 RET_LABEL53:(void)0;
1185 }
1186 if (var52){
1187 var55 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_start_pos) /* [] on <self:AbstractString>*/;
1188 var57 = ((struct instance_kernel__Char*)var55)->value; /* autounbox from nullable Object to Char */;
1189 var56 = string__Char__to_s(var57);
1190 var = var56;
1191 goto RET_LABEL;
1192 } else {
1193 }
1194 CONTINUE_label58: (void)0;
1195 }
1196 BREAK_label58: (void)0;
1197 { /* Inline kernel#Int#- (var_end_pos,var_start_pos) */
1198 var61 = var_end_pos - var_start_pos;
1199 var59 = var61;
1200 goto RET_LABEL60;
1201 RET_LABEL60:(void)0;
1202 }
1203 var62 = 1;
1204 { /* Inline kernel#Int#+ (var59,var62) */
1205 var65 = var59 + var62;
1206 var63 = var65;
1207 goto RET_LABEL64;
1208 RET_LABEL64:(void)0;
1209 }
1210 var66 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_string__AbstractString__substring]))(self, var_start_pos, var63) /* substring on <self:AbstractString>*/;
1211 var = var66;
1212 goto RET_LABEL;
1213 RET_LABEL:;
1214 return var;
1215 }
1216 /* method string#AbstractString#trim for (self: Object): String */
1217 val* VIRTUAL_string__AbstractString__trim(val* self) {
1218 val* var /* : String */;
1219 val* var1 /* : String */;
1220 var1 = string__AbstractString__trim(self);
1221 var = var1;
1222 RET_LABEL:;
1223 return var;
1224 }
1225 /* method string#AbstractString#output for (self: AbstractString) */
1226 void string__AbstractString__output(val* self) {
1227 long var /* : Int */;
1228 long var_i /* var i: Int */;
1229 long var1 /* : Int */;
1230 short int var2 /* : Bool */;
1231 short int var4 /* : Bool */;
1232 int cltype;
1233 int idtype;
1234 const char* var_class_name;
1235 short int var5 /* : Bool */;
1236 char* var6 /* : NativeString */;
1237 char var7 /* : Char */;
1238 char var9 /* : Char */;
1239 long var11 /* : Int */;
1240 long var12 /* : Int */;
1241 long var14 /* : Int */;
1242 var = 0;
1243 var_i = var;
1244 for(;;) {
1245 var1 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractString>*/;
1246 { /* Inline kernel#Int#< (var_i,var1) */
1247 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
1248 /* <var1:Int> isa OTHER */
1249 var4 = 1; /* easy <var1:Int> isa OTHER*/
1250 if (!var4) {
1251 var_class_name = type_kernel__Int.name;
1252 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1253 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
1254 show_backtrace(1);
1255 }
1256 var5 = var_i < var1;
1257 var2 = var5;
1258 goto RET_LABEL3;
1259 RET_LABEL3:(void)0;
1260 }
1261 if (!var2) break;
1262 var6 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:AbstractString> */
1263 { /* Inline string#NativeString#[] (var6,var_i) */
1264 var9 = var6[var_i];
1265 var7 = var9;
1266 goto RET_LABEL8;
1267 RET_LABEL8:(void)0;
1268 }
1269 { /* Inline kernel#Char#output (var7) */
1270 printf("%c", var7);
1271 RET_LABEL10:(void)0;
1272 }
1273 var11 = 1;
1274 { /* Inline kernel#Int#+ (var_i,var11) */
1275 var14 = var_i + var11;
1276 var12 = var14;
1277 goto RET_LABEL13;
1278 RET_LABEL13:(void)0;
1279 }
1280 var_i = var12;
1281 CONTINUE_label: (void)0;
1282 }
1283 BREAK_label: (void)0;
1284 RET_LABEL:;
1285 }
1286 /* method string#AbstractString#output for (self: Object) */
1287 void VIRTUAL_string__AbstractString__output(val* self) {
1288 string__AbstractString__output(self);
1289 RET_LABEL:;
1290 }
1291 /* method string#AbstractString#to_cmangle for (self: AbstractString): String */
1292 val* string__AbstractString__to_cmangle(val* self) {
1293 val* var /* : String */;
1294 val* var1 /* : Buffer */;
1295 val* var_res /* var res: Buffer */;
1296 short int var2 /* : Bool */;
1297 short int var_underscore /* var underscore: Bool */;
1298 val* var3 /* : Iterator[nullable Object] */;
1299 short int var4 /* : Bool */;
1300 val* var5 /* : nullable Object */;
1301 char var_c /* var c: Char */;
1302 char var6 /* : Char */;
1303 short int var7 /* : Bool */;
1304 short int var8 /* : Bool */;
1305 char var9 /* : Char */;
1306 short int var10 /* : Bool */;
1307 short int var12 /* : Bool */;
1308 int cltype;
1309 int idtype;
1310 const char* var_class_name;
1311 short int var13 /* : Bool */;
1312 short int var_ /* var : Bool */;
1313 char var14 /* : Char */;
1314 short int var15 /* : Bool */;
1315 short int var17 /* : Bool */;
1316 int cltype18;
1317 int idtype19;
1318 const char* var_class_name20;
1319 short int var21 /* : Bool */;
1320 short int var_22 /* var : Bool */;
1321 short int var23 /* : Bool */;
1322 char var24 /* : Char */;
1323 short int var25 /* : Bool */;
1324 short int var27 /* : Bool */;
1325 int cltype28;
1326 int idtype29;
1327 const char* var_class_name30;
1328 short int var31 /* : Bool */;
1329 short int var_32 /* var : Bool */;
1330 char var33 /* : Char */;
1331 short int var34 /* : Bool */;
1332 short int var36 /* : Bool */;
1333 int cltype37;
1334 int idtype38;
1335 const char* var_class_name39;
1336 short int var40 /* : Bool */;
1337 val* var41 /* : nullable Object */;
1338 short int var42 /* : Bool */;
1339 char var43 /* : Char */;
1340 long var44 /* : Int */;
1341 long var46 /* : Int */;
1342 val* var47 /* : String */;
1343 char var48 /* : Char */;
1344 val* var49 /* : nullable Object */;
1345 short int var50 /* : Bool */;
1346 char var51 /* : Char */;
1347 short int var52 /* : Bool */;
1348 short int var54 /* : Bool */;
1349 int cltype55;
1350 int idtype56;
1351 const char* var_class_name57;
1352 short int var58 /* : Bool */;
1353 short int var_59 /* var : Bool */;
1354 char var60 /* : Char */;
1355 short int var61 /* : Bool */;
1356 short int var63 /* : Bool */;
1357 int cltype64;
1358 int idtype65;
1359 const char* var_class_name66;
1360 short int var67 /* : Bool */;
1361 val* var68 /* : nullable Object */;
1362 short int var69 /* : Bool */;
1363 char var70 /* : Char */;
1364 short int var71 /* : Bool */;
1365 short int var73 /* : Bool */;
1366 val* var74 /* : nullable Object */;
1367 short int var75 /* : Bool */;
1368 char var76 /* : Char */;
1369 val* var77 /* : nullable Object */;
1370 long var78 /* : Int */;
1371 long var80 /* : Int */;
1372 val* var81 /* : String */;
1373 char var82 /* : Char */;
1374 val* var83 /* : nullable Object */;
1375 short int var84 /* : Bool */;
1376 val* var85 /* : String */;
1377 var1 = NEW_string__Buffer(&type_string__Buffer);
1378 ((void (*)(val*))(var1->class->vft[COLOR_string__Buffer__init]))(var1) /* init on <var1:Buffer>*/;
1379 var_res = var1;
1380 var2 = 0;
1381 var_underscore = var2;
1382 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__iterator]))(self) /* iterator on <self:AbstractString>*/;
1383 for(;;) {
1384 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
1385 if(!var4) break;
1386 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
1387 var6 = ((struct instance_kernel__Char*)var5)->value; /* autounbox from nullable Object to Char */;
1388 var_c = var6;
1389 var9 = 'a';
1390 { /* Inline kernel#Char#>= (var_c,var9) */
1391 /* Covariant cast for argument 0 (i) <var9:Char> isa OTHER */
1392 /* <var9:Char> isa OTHER */
1393 var12 = 1; /* easy <var9:Char> isa OTHER*/
1394 if (!var12) {
1395 var_class_name = type_kernel__Char.name;
1396 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1397 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 438);
1398 show_backtrace(1);
1399 }
1400 var13 = var_c >= var9;
1401 var10 = var13;
1402 goto RET_LABEL11;
1403 RET_LABEL11:(void)0;
1404 }
1405 var_ = var10;
1406 if (var10){
1407 var14 = 'z';
1408 { /* Inline kernel#Char#<= (var_c,var14) */
1409 /* Covariant cast for argument 0 (i) <var14:Char> isa OTHER */
1410 /* <var14:Char> isa OTHER */
1411 var17 = 1; /* easy <var14:Char> isa OTHER*/
1412 if (!var17) {
1413 var_class_name20 = type_kernel__Char.name;
1414 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name20);
1415 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 436);
1416 show_backtrace(1);
1417 }
1418 var21 = var_c <= var14;
1419 var15 = var21;
1420 goto RET_LABEL16;
1421 RET_LABEL16:(void)0;
1422 }
1423 var8 = var15;
1424 } else {
1425 var8 = var_;
1426 }
1427 var_22 = var8;
1428 if (var8){
1429 var7 = var_22;
1430 } else {
1431 var24 = 'A';
1432 { /* Inline kernel#Char#>= (var_c,var24) */
1433 /* Covariant cast for argument 0 (i) <var24:Char> isa OTHER */
1434 /* <var24:Char> isa OTHER */
1435 var27 = 1; /* easy <var24:Char> isa OTHER*/
1436 if (!var27) {
1437 var_class_name30 = type_kernel__Char.name;
1438 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name30);
1439 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 438);
1440 show_backtrace(1);
1441 }
1442 var31 = var_c >= var24;
1443 var25 = var31;
1444 goto RET_LABEL26;
1445 RET_LABEL26:(void)0;
1446 }
1447 var_32 = var25;
1448 if (var25){
1449 var33 = 'Z';
1450 { /* Inline kernel#Char#<= (var_c,var33) */
1451 /* Covariant cast for argument 0 (i) <var33:Char> isa OTHER */
1452 /* <var33:Char> isa OTHER */
1453 var36 = 1; /* easy <var33:Char> isa OTHER*/
1454 if (!var36) {
1455 var_class_name39 = type_kernel__Char.name;
1456 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name39);
1457 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 436);
1458 show_backtrace(1);
1459 }
1460 var40 = var_c <= var33;
1461 var34 = var40;
1462 goto RET_LABEL35;
1463 RET_LABEL35:(void)0;
1464 }
1465 var23 = var34;
1466 } else {
1467 var23 = var_32;
1468 }
1469 var7 = var23;
1470 }
1471 if (var7){
1472 var41 = BOX_kernel__Char(var_c); /* autobox from Char to nullable Object */
1473 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var41) /* add on <var_res:Buffer>*/;
1474 var42 = 0;
1475 var_underscore = var42;
1476 goto CONTINUE_label;
1477 } else {
1478 }
1479 if (var_underscore){
1480 var43 = '_';
1481 { /* Inline kernel#Char#ascii (var43) */
1482 var46 = (unsigned char)var43;
1483 var44 = var46;
1484 goto RET_LABEL45;
1485 RET_LABEL45:(void)0;
1486 }
1487 var47 = string__Int__to_s(var44);
1488 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__Sequence__append]))(var_res, var47) /* append on <var_res:Buffer>*/;
1489 var48 = 'd';
1490 var49 = BOX_kernel__Char(var48); /* autobox from Char to nullable Object */
1491 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var49) /* add on <var_res:Buffer>*/;
1492 } else {
1493 }
1494 var51 = '0';
1495 { /* Inline kernel#Char#>= (var_c,var51) */
1496 /* Covariant cast for argument 0 (i) <var51:Char> isa OTHER */
1497 /* <var51:Char> isa OTHER */
1498 var54 = 1; /* easy <var51:Char> isa OTHER*/
1499 if (!var54) {
1500 var_class_name57 = type_kernel__Char.name;
1501 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name57);
1502 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 438);
1503 show_backtrace(1);
1504 }
1505 var58 = var_c >= var51;
1506 var52 = var58;
1507 goto RET_LABEL53;
1508 RET_LABEL53:(void)0;
1509 }
1510 var_59 = var52;
1511 if (var52){
1512 var60 = '9';
1513 { /* Inline kernel#Char#<= (var_c,var60) */
1514 /* Covariant cast for argument 0 (i) <var60:Char> isa OTHER */
1515 /* <var60:Char> isa OTHER */
1516 var63 = 1; /* easy <var60:Char> isa OTHER*/
1517 if (!var63) {
1518 var_class_name66 = type_kernel__Char.name;
1519 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name66);
1520 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 436);
1521 show_backtrace(1);
1522 }
1523 var67 = var_c <= var60;
1524 var61 = var67;
1525 goto RET_LABEL62;
1526 RET_LABEL62:(void)0;
1527 }
1528 var50 = var61;
1529 } else {
1530 var50 = var_59;
1531 }
1532 if (var50){
1533 var68 = BOX_kernel__Char(var_c); /* autobox from Char to nullable Object */
1534 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var68) /* add on <var_res:Buffer>*/;
1535 var69 = 0;
1536 var_underscore = var69;
1537 } else {
1538 var70 = '_';
1539 { /* Inline kernel#Char#== (var_c,var70) */
1540 var73 = var_c == var70;
1541 var71 = var73;
1542 goto RET_LABEL72;
1543 RET_LABEL72:(void)0;
1544 }
1545 if (var71){
1546 var74 = BOX_kernel__Char(var_c); /* autobox from Char to nullable Object */
1547 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var74) /* add on <var_res:Buffer>*/;
1548 var75 = 1;
1549 var_underscore = var75;
1550 } else {
1551 var76 = '_';
1552 var77 = BOX_kernel__Char(var76); /* autobox from Char to nullable Object */
1553 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var77) /* add on <var_res:Buffer>*/;
1554 { /* Inline kernel#Char#ascii (var_c) */
1555 var80 = (unsigned char)var_c;
1556 var78 = var80;
1557 goto RET_LABEL79;
1558 RET_LABEL79:(void)0;
1559 }
1560 var81 = string__Int__to_s(var78);
1561 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__Sequence__append]))(var_res, var81) /* append on <var_res:Buffer>*/;
1562 var82 = 'd';
1563 var83 = BOX_kernel__Char(var82); /* autobox from Char to nullable Object */
1564 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var83) /* add on <var_res:Buffer>*/;
1565 var84 = 0;
1566 var_underscore = var84;
1567 }
1568 }
1569 CONTINUE_label: (void)0;
1570 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
1571 }
1572 BREAK_label: (void)0;
1573 var85 = ((val* (*)(val*))(var_res->class->vft[COLOR_string__Object__to_s]))(var_res) /* to_s on <var_res:Buffer>*/;
1574 var = var85;
1575 goto RET_LABEL;
1576 RET_LABEL:;
1577 return var;
1578 }
1579 /* method string#AbstractString#to_cmangle for (self: Object): String */
1580 val* VIRTUAL_string__AbstractString__to_cmangle(val* self) {
1581 val* var /* : String */;
1582 val* var1 /* : String */;
1583 var1 = string__AbstractString__to_cmangle(self);
1584 var = var1;
1585 RET_LABEL:;
1586 return var;
1587 }
1588 /* method string#AbstractString#escape_to_c for (self: AbstractString): String */
1589 val* string__AbstractString__escape_to_c(val* self) {
1590 val* var /* : String */;
1591 val* var1 /* : Buffer */;
1592 val* var_b /* var b: Buffer */;
1593 val* var2 /* : Iterator[nullable Object] */;
1594 short int var3 /* : Bool */;
1595 val* var4 /* : nullable Object */;
1596 char var_c /* var c: Char */;
1597 char var5 /* : Char */;
1598 char var6 /* : Char */;
1599 short int var7 /* : Bool */;
1600 short int var9 /* : Bool */;
1601 static val* varonce;
1602 val* var10 /* : String */;
1603 char* var11 /* : NativeString */;
1604 long var12 /* : Int */;
1605 val* var13 /* : String */;
1606 char var14 /* : Char */;
1607 short int var15 /* : Bool */;
1608 short int var17 /* : Bool */;
1609 static val* varonce18;
1610 val* var19 /* : String */;
1611 char* var20 /* : NativeString */;
1612 long var21 /* : Int */;
1613 val* var22 /* : String */;
1614 char var23 /* : Char */;
1615 short int var24 /* : Bool */;
1616 short int var26 /* : Bool */;
1617 static val* varonce27;
1618 val* var28 /* : String */;
1619 char* var29 /* : NativeString */;
1620 long var30 /* : Int */;
1621 val* var31 /* : String */;
1622 char var32 /* : Char */;
1623 short int var33 /* : Bool */;
1624 short int var35 /* : Bool */;
1625 static val* varonce36;
1626 val* var37 /* : String */;
1627 char* var38 /* : NativeString */;
1628 long var39 /* : Int */;
1629 val* var40 /* : String */;
1630 char var41 /* : Char */;
1631 short int var42 /* : Bool */;
1632 short int var44 /* : Bool */;
1633 static val* varonce45;
1634 val* var46 /* : String */;
1635 char* var47 /* : NativeString */;
1636 long var48 /* : Int */;
1637 val* var49 /* : String */;
1638 long var50 /* : Int */;
1639 long var52 /* : Int */;
1640 long var53 /* : Int */;
1641 short int var54 /* : Bool */;
1642 short int var56 /* : Bool */;
1643 int cltype;
1644 int idtype;
1645 const char* var_class_name;
1646 short int var57 /* : Bool */;
1647 static val* varonce58;
1648 val* var59 /* : String */;
1649 char* var60 /* : NativeString */;
1650 long var61 /* : Int */;
1651 val* var62 /* : String */;
1652 long var63 /* : Int */;
1653 long var65 /* : Int */;
1654 long var66 /* : Int */;
1655 short int var67 /* : Bool */;
1656 val* var68 /* : String */;
1657 val* var69 /* : Array[Object] */;
1658 long var70 /* : Int */;
1659 val* var71 /* : NativeArray[Object] */;
1660 val* var72 /* : String */;
1661 val* var73 /* : nullable Object */;
1662 val* var74 /* : String */;
1663 var1 = NEW_string__Buffer(&type_string__Buffer);
1664 ((void (*)(val*))(var1->class->vft[COLOR_string__Buffer__init]))(var1) /* init on <var1:Buffer>*/;
1665 var_b = var1;
1666 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__iterator]))(self) /* iterator on <self:AbstractString>*/;
1667 for(;;) {
1668 var3 = ((short int (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var2) /* is_ok on <var2:Iterator[nullable Object]>*/;
1669 if(!var3) break;
1670 var4 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__item]))(var2) /* item on <var2:Iterator[nullable Object]>*/;
1671 var5 = ((struct instance_kernel__Char*)var4)->value; /* autounbox from nullable Object to Char */;
1672 var_c = var5;
1673 var6 = '\n';
1674 { /* Inline kernel#Char#== (var_c,var6) */
1675 var9 = var_c == var6;
1676 var7 = var9;
1677 goto RET_LABEL8;
1678 RET_LABEL8:(void)0;
1679 }
1680 if (var7){
1681 if (varonce) {
1682 var10 = varonce;
1683 } else {
1684 var11 = "\\n";
1685 var12 = 2;
1686 var13 = string__NativeString__to_s_with_length(var11, var12);
1687 var10 = var13;
1688 varonce = var10;
1689 }
1690 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var10) /* append on <var_b:Buffer>*/;
1691 } else {
1692 var14 = '\0';
1693 { /* Inline kernel#Char#== (var_c,var14) */
1694 var17 = var_c == var14;
1695 var15 = var17;
1696 goto RET_LABEL16;
1697 RET_LABEL16:(void)0;
1698 }
1699 if (var15){
1700 if (varonce18) {
1701 var19 = varonce18;
1702 } else {
1703 var20 = "\\0";
1704 var21 = 2;
1705 var22 = string__NativeString__to_s_with_length(var20, var21);
1706 var19 = var22;
1707 varonce18 = var19;
1708 }
1709 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var19) /* append on <var_b:Buffer>*/;
1710 } else {
1711 var23 = '\"';
1712 { /* Inline kernel#Char#== (var_c,var23) */
1713 var26 = var_c == var23;
1714 var24 = var26;
1715 goto RET_LABEL25;
1716 RET_LABEL25:(void)0;
1717 }
1718 if (var24){
1719 if (varonce27) {
1720 var28 = varonce27;
1721 } else {
1722 var29 = "\\\"";
1723 var30 = 2;
1724 var31 = string__NativeString__to_s_with_length(var29, var30);
1725 var28 = var31;
1726 varonce27 = var28;
1727 }
1728 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var28) /* append on <var_b:Buffer>*/;
1729 } else {
1730 var32 = '\'';
1731 { /* Inline kernel#Char#== (var_c,var32) */
1732 var35 = var_c == var32;
1733 var33 = var35;
1734 goto RET_LABEL34;
1735 RET_LABEL34:(void)0;
1736 }
1737 if (var33){
1738 if (varonce36) {
1739 var37 = varonce36;
1740 } else {
1741 var38 = "\\\'";
1742 var39 = 2;
1743 var40 = string__NativeString__to_s_with_length(var38, var39);
1744 var37 = var40;
1745 varonce36 = var37;
1746 }
1747 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var37) /* append on <var_b:Buffer>*/;
1748 } else {
1749 var41 = '\\';
1750 { /* Inline kernel#Char#== (var_c,var41) */
1751 var44 = var_c == var41;
1752 var42 = var44;
1753 goto RET_LABEL43;
1754 RET_LABEL43:(void)0;
1755 }
1756 if (var42){
1757 if (varonce45) {
1758 var46 = varonce45;
1759 } else {
1760 var47 = "\\\\";
1761 var48 = 2;
1762 var49 = string__NativeString__to_s_with_length(var47, var48);
1763 var46 = var49;
1764 varonce45 = var46;
1765 }
1766 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var46) /* append on <var_b:Buffer>*/;
1767 } else {
1768 { /* Inline kernel#Char#ascii (var_c) */
1769 var52 = (unsigned char)var_c;
1770 var50 = var52;
1771 goto RET_LABEL51;
1772 RET_LABEL51:(void)0;
1773 }
1774 var53 = 32;
1775 { /* Inline kernel#Int#< (var50,var53) */
1776 /* Covariant cast for argument 0 (i) <var53:Int> isa OTHER */
1777 /* <var53:Int> isa OTHER */
1778 var56 = 1; /* easy <var53:Int> isa OTHER*/
1779 if (!var56) {
1780 var_class_name = type_kernel__Int.name;
1781 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1782 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
1783 show_backtrace(1);
1784 }
1785 var57 = var50 < var53;
1786 var54 = var57;
1787 goto RET_LABEL55;
1788 RET_LABEL55:(void)0;
1789 }
1790 if (var54){
1791 if (varonce58) {
1792 var59 = varonce58;
1793 } else {
1794 var60 = "\\";
1795 var61 = 1;
1796 var62 = string__NativeString__to_s_with_length(var60, var61);
1797 var59 = var62;
1798 varonce58 = var59;
1799 }
1800 { /* Inline kernel#Char#ascii (var_c) */
1801 var65 = (unsigned char)var_c;
1802 var63 = var65;
1803 goto RET_LABEL64;
1804 RET_LABEL64:(void)0;
1805 }
1806 var66 = 8;
1807 var67 = 0;
1808 var68 = string__Int__to_base(var63, var66, var67);
1809 var69 = NEW_array__Array(&type_array__Arraykernel__Object);
1810 { /* var69 = array_instance Array[Object] */
1811 var70 = 2;
1812 var71 = NEW_array__NativeArray(var70, &type_array__NativeArraykernel__Object);
1813 ((struct instance_array__NativeArray*)var71)->values[0] = (val*) var59;
1814 ((struct instance_array__NativeArray*)var71)->values[1] = (val*) var68;
1815 ((void (*)(val*, val*, long))(var69->class->vft[COLOR_array__Array__with_native]))(var69, var71, var70) /* with_native on <var69:Array[Object]>*/;
1816 }
1817 var72 = ((val* (*)(val*))(var69->class->vft[COLOR_string__Object__to_s]))(var69) /* to_s on <var69:Array[Object]>*/;
1818 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var72) /* append on <var_b:Buffer>*/;
1819 } else {
1820 var73 = BOX_kernel__Char(var_c); /* autobox from Char to nullable Object */
1821 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_b, var73) /* add on <var_b:Buffer>*/;
1822 }
1823 }
1824 }
1825 }
1826 }
1827 }
1828 CONTINUE_label: (void)0;
1829 ((void (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__next]))(var2) /* next on <var2:Iterator[nullable Object]>*/;
1830 }
1831 BREAK_label: (void)0;
1832 var74 = ((val* (*)(val*))(var_b->class->vft[COLOR_string__Object__to_s]))(var_b) /* to_s on <var_b:Buffer>*/;
1833 var = var74;
1834 goto RET_LABEL;
1835 RET_LABEL:;
1836 return var;
1837 }
1838 /* method string#AbstractString#escape_to_c for (self: Object): String */
1839 val* VIRTUAL_string__AbstractString__escape_to_c(val* self) {
1840 val* var /* : String */;
1841 val* var1 /* : String */;
1842 var1 = string__AbstractString__escape_to_c(self);
1843 var = var1;
1844 RET_LABEL:;
1845 return var;
1846 }
1847 /* method string#AbstractString#escape_more_to_c for (self: AbstractString, String): String */
1848 val* string__AbstractString__escape_more_to_c(val* self, val* p0) {
1849 val* var /* : String */;
1850 val* var_chars /* var chars: String */;
1851 val* var1 /* : Buffer */;
1852 val* var_b /* var b: Buffer */;
1853 val* var2 /* : String */;
1854 val* var3 /* : Iterator[nullable Object] */;
1855 short int var4 /* : Bool */;
1856 val* var5 /* : nullable Object */;
1857 char var_c /* var c: Char */;
1858 char var6 /* : Char */;
1859 short int var7 /* : Bool */;
1860 val* var8 /* : nullable Object */;
1861 char var9 /* : Char */;
1862 val* var10 /* : nullable Object */;
1863 val* var11 /* : nullable Object */;
1864 val* var12 /* : String */;
1865 var_chars = p0;
1866 var1 = NEW_string__Buffer(&type_string__Buffer);
1867 ((void (*)(val*))(var1->class->vft[COLOR_string__Buffer__init]))(var1) /* init on <var1:Buffer>*/;
1868 var_b = var1;
1869 var2 = ((val* (*)(val*))(self->class->vft[COLOR_string__AbstractString__escape_to_c]))(self) /* escape_to_c on <self:AbstractString>*/;
1870 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:String>*/;
1871 for(;;) {
1872 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
1873 if(!var4) break;
1874 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
1875 var6 = ((struct instance_kernel__Char*)var5)->value; /* autounbox from nullable Object to Char */;
1876 var_c = var6;
1877 var8 = BOX_kernel__Char(var_c); /* autobox from Char to nullable Object */
1878 var7 = ((short int (*)(val*, val*))(var_chars->class->vft[COLOR_abstract_collection__Collection__has]))(var_chars, var8) /* has on <var_chars:String>*/;
1879 if (var7){
1880 var9 = '\\';
1881 var10 = BOX_kernel__Char(var9); /* autobox from Char to nullable Object */
1882 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_b, var10) /* add on <var_b:Buffer>*/;
1883 } else {
1884 }
1885 var11 = BOX_kernel__Char(var_c); /* autobox from Char to nullable Object */
1886 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_b, var11) /* add on <var_b:Buffer>*/;
1887 CONTINUE_label: (void)0;
1888 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
1889 }
1890 BREAK_label: (void)0;
1891 var12 = ((val* (*)(val*))(var_b->class->vft[COLOR_string__Object__to_s]))(var_b) /* to_s on <var_b:Buffer>*/;
1892 var = var12;
1893 goto RET_LABEL;
1894 RET_LABEL:;
1895 return var;
1896 }
1897 /* method string#AbstractString#escape_more_to_c for (self: Object, String): String */
1898 val* VIRTUAL_string__AbstractString__escape_more_to_c(val* self, val* p0) {
1899 val* var /* : String */;
1900 val* var1 /* : String */;
1901 var1 = string__AbstractString__escape_more_to_c(self, p0);
1902 var = var1;
1903 RET_LABEL:;
1904 return var;
1905 }
1906 /* method string#AbstractString#escape_to_nit for (self: AbstractString): String */
1907 val* string__AbstractString__escape_to_nit(val* self) {
1908 val* var /* : String */;
1909 static val* varonce;
1910 val* var1 /* : String */;
1911 char* var2 /* : NativeString */;
1912 long var3 /* : Int */;
1913 val* var4 /* : String */;
1914 val* var5 /* : String */;
1915 if (varonce) {
1916 var1 = varonce;
1917 } else {
1918 var2 = "{}";
1919 var3 = 2;
1920 var4 = string__NativeString__to_s_with_length(var2, var3);
1921 var1 = var4;
1922 varonce = var1;
1923 }
1924 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_string__AbstractString__escape_more_to_c]))(self, var1) /* escape_more_to_c on <self:AbstractString>*/;
1925 var = var5;
1926 goto RET_LABEL;
1927 RET_LABEL:;
1928 return var;
1929 }
1930 /* method string#AbstractString#escape_to_nit for (self: Object): String */
1931 val* VIRTUAL_string__AbstractString__escape_to_nit(val* self) {
1932 val* var /* : String */;
1933 val* var1 /* : String */;
1934 var1 = string__AbstractString__escape_to_nit(self);
1935 var = var1;
1936 RET_LABEL:;
1937 return var;
1938 }
1939 /* method string#AbstractString#unescape_nit for (self: AbstractString): String */
1940 val* string__AbstractString__unescape_nit(val* self) {
1941 val* var /* : String */;
1942 val* var1 /* : Buffer */;
1943 long var2 /* : Int */;
1944 val* var_res /* var res: Buffer */;
1945 short int var3 /* : Bool */;
1946 short int var_was_slash /* var was_slash: Bool */;
1947 val* var4 /* : Iterator[nullable Object] */;
1948 short int var5 /* : Bool */;
1949 val* var6 /* : nullable Object */;
1950 char var_c /* var c: Char */;
1951 char var7 /* : Char */;
1952 short int var8 /* : Bool */;
1953 char var9 /* : Char */;
1954 short int var10 /* : Bool */;
1955 short int var12 /* : Bool */;
1956 short int var13 /* : Bool */;
1957 val* var14 /* : nullable Object */;
1958 short int var15 /* : Bool */;
1959 char var16 /* : Char */;
1960 short int var17 /* : Bool */;
1961 short int var19 /* : Bool */;
1962 char var20 /* : Char */;
1963 val* var21 /* : nullable Object */;
1964 char var22 /* : Char */;
1965 short int var23 /* : Bool */;
1966 short int var25 /* : Bool */;
1967 char var26 /* : Char */;
1968 val* var27 /* : nullable Object */;
1969 char var28 /* : Char */;
1970 short int var29 /* : Bool */;
1971 short int var31 /* : Bool */;
1972 char var32 /* : Char */;
1973 val* var33 /* : nullable Object */;
1974 char var34 /* : Char */;
1975 short int var35 /* : Bool */;
1976 short int var37 /* : Bool */;
1977 char var38 /* : Char */;
1978 val* var39 /* : nullable Object */;
1979 val* var40 /* : nullable Object */;
1980 val* var41 /* : String */;
1981 var1 = NEW_string__Buffer(&type_string__Buffer);
1982 var2 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractString>*/;
1983 ((void (*)(val*, long))(var1->class->vft[COLOR_string__Buffer__with_capacity]))(var1, var2) /* with_capacity on <var1:Buffer>*/;
1984 var_res = var1;
1985 var3 = 0;
1986 var_was_slash = var3;
1987 var4 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__iterator]))(self) /* iterator on <self:AbstractString>*/;
1988 for(;;) {
1989 var5 = ((short int (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var4) /* is_ok on <var4:Iterator[nullable Object]>*/;
1990 if(!var5) break;
1991 var6 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__item]))(var4) /* item on <var4:Iterator[nullable Object]>*/;
1992 var7 = ((struct instance_kernel__Char*)var6)->value; /* autounbox from nullable Object to Char */;
1993 var_c = var7;
1994 var8 = !var_was_slash;
1995 if (var8){
1996 var9 = '\\';
1997 { /* Inline kernel#Char#== (var_c,var9) */
1998 var12 = var_c == var9;
1999 var10 = var12;
2000 goto RET_LABEL11;
2001 RET_LABEL11:(void)0;
2002 }
2003 if (var10){
2004 var13 = 1;
2005 var_was_slash = var13;
2006 } else {
2007 var14 = BOX_kernel__Char(var_c); /* autobox from Char to nullable Object */
2008 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var14) /* add on <var_res:Buffer>*/;
2009 }
2010 goto CONTINUE_label;
2011 } else {
2012 }
2013 var15 = 0;
2014 var_was_slash = var15;
2015 var16 = 'n';
2016 { /* Inline kernel#Char#== (var_c,var16) */
2017 var19 = var_c == var16;
2018 var17 = var19;
2019 goto RET_LABEL18;
2020 RET_LABEL18:(void)0;
2021 }
2022 if (var17){
2023 var20 = '\n';
2024 var21 = BOX_kernel__Char(var20); /* autobox from Char to nullable Object */
2025 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var21) /* add on <var_res:Buffer>*/;
2026 } else {
2027 var22 = 'r';
2028 { /* Inline kernel#Char#== (var_c,var22) */
2029 var25 = var_c == var22;
2030 var23 = var25;
2031 goto RET_LABEL24;
2032 RET_LABEL24:(void)0;
2033 }
2034 if (var23){
2035 var26 = '\15';
2036 var27 = BOX_kernel__Char(var26); /* autobox from Char to nullable Object */
2037 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var27) /* add on <var_res:Buffer>*/;
2038 } else {
2039 var28 = 't';
2040 { /* Inline kernel#Char#== (var_c,var28) */
2041 var31 = var_c == var28;
2042 var29 = var31;
2043 goto RET_LABEL30;
2044 RET_LABEL30:(void)0;
2045 }
2046 if (var29){
2047 var32 = '\11';
2048 var33 = BOX_kernel__Char(var32); /* autobox from Char to nullable Object */
2049 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var33) /* add on <var_res:Buffer>*/;
2050 } else {
2051 var34 = '0';
2052 { /* Inline kernel#Char#== (var_c,var34) */
2053 var37 = var_c == var34;
2054 var35 = var37;
2055 goto RET_LABEL36;
2056 RET_LABEL36:(void)0;
2057 }
2058 if (var35){
2059 var38 = '\0';
2060 var39 = BOX_kernel__Char(var38); /* autobox from Char to nullable Object */
2061 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var39) /* add on <var_res:Buffer>*/;
2062 } else {
2063 var40 = BOX_kernel__Char(var_c); /* autobox from Char to nullable Object */
2064 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var40) /* add on <var_res:Buffer>*/;
2065 }
2066 }
2067 }
2068 }
2069 CONTINUE_label: (void)0;
2070 ((void (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__next]))(var4) /* next on <var4:Iterator[nullable Object]>*/;
2071 }
2072 BREAK_label: (void)0;
2073 var41 = ((val* (*)(val*))(var_res->class->vft[COLOR_string__Object__to_s]))(var_res) /* to_s on <var_res:Buffer>*/;
2074 var = var41;
2075 goto RET_LABEL;
2076 RET_LABEL:;
2077 return var;
2078 }
2079 /* method string#AbstractString#unescape_nit for (self: Object): String */
2080 val* VIRTUAL_string__AbstractString__unescape_nit(val* self) {
2081 val* var /* : String */;
2082 val* var1 /* : String */;
2083 var1 = string__AbstractString__unescape_nit(self);
2084 var = var1;
2085 RET_LABEL:;
2086 return var;
2087 }
2088 /* method string#AbstractString#init for (self: AbstractString) */
2089 void string__AbstractString__init(val* self) {
2090 ((void (*)(val*))(self->class->vft[COLOR_array__AbstractArrayRead__init]))(self) /* init on <self:AbstractString>*/;
2091 RET_LABEL:;
2092 }
2093 /* method string#AbstractString#init for (self: Object) */
2094 void VIRTUAL_string__AbstractString__init(val* self) {
2095 string__AbstractString__init(self);
2096 RET_LABEL:;
2097 }
2098 /* method string#String#index_from for (self: String): Int */
2099 long string__String__index_from(val* self) {
2100 long var /* : Int */;
2101 long var1 /* : Int */;
2102 var1 = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
2103 var = var1;
2104 RET_LABEL:;
2105 return var;
2106 }
2107 /* method string#String#index_from for (self: Object): Int */
2108 long VIRTUAL_string__String__index_from(val* self) {
2109 long var /* : Int */;
2110 long var1 /* : Int */;
2111 var1 = string__String__index_from(self);
2112 var = var1;
2113 RET_LABEL:;
2114 return var;
2115 }
2116 /* method string#String#index_to for (self: String): Int */
2117 long string__String__index_to(val* self) {
2118 long var /* : Int */;
2119 long var1 /* : Int */;
2120 var1 = self->attrs[COLOR_string__String___index_to].l; /* _index_to on <self:String> */
2121 var = var1;
2122 RET_LABEL:;
2123 return var;
2124 }
2125 /* method string#String#index_to for (self: Object): Int */
2126 long VIRTUAL_string__String__index_to(val* self) {
2127 long var /* : Int */;
2128 long var1 /* : Int */;
2129 var1 = string__String__index_to(self);
2130 var = var1;
2131 RET_LABEL:;
2132 return var;
2133 }
2134 /* method string#String#[] for (self: String, Int): Char */
2135 char string__String___91d_93d(val* self, long p0) {
2136 char var /* : Char */;
2137 long var_index /* var index: Int */;
2138 long var1 /* : Int */;
2139 short int var2 /* : Bool */;
2140 short int var4 /* : Bool */;
2141 int cltype;
2142 int idtype;
2143 const char* var_class_name;
2144 short int var5 /* : Bool */;
2145 long var6 /* : Int */;
2146 long var7 /* : Int */;
2147 long var9 /* : Int */;
2148 long var10 /* : Int */;
2149 short int var11 /* : Bool */;
2150 short int var13 /* : Bool */;
2151 int cltype14;
2152 int idtype15;
2153 const char* var_class_name16;
2154 short int var17 /* : Bool */;
2155 char* var18 /* : NativeString */;
2156 long var19 /* : Int */;
2157 long var20 /* : Int */;
2158 long var22 /* : Int */;
2159 char var23 /* : Char */;
2160 char var25 /* : Char */;
2161 var_index = p0;
2162 var1 = 0;
2163 { /* Inline kernel#Int#>= (var_index,var1) */
2164 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
2165 /* <var1:Int> isa OTHER */
2166 var4 = 1; /* easy <var1:Int> isa OTHER*/
2167 if (!var4) {
2168 var_class_name = type_kernel__Int.name;
2169 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2170 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
2171 show_backtrace(1);
2172 }
2173 var5 = var_index >= var1;
2174 var2 = var5;
2175 goto RET_LABEL3;
2176 RET_LABEL3:(void)0;
2177 }
2178 if (!var2) {
2179 fprintf(stderr, "Runtime error: %s", "Assert failed");
2180 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 379);
2181 show_backtrace(1);
2182 }
2183 var6 = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
2184 { /* Inline kernel#Int#+ (var_index,var6) */
2185 var9 = var_index + var6;
2186 var7 = var9;
2187 goto RET_LABEL8;
2188 RET_LABEL8:(void)0;
2189 }
2190 var10 = self->attrs[COLOR_string__String___index_to].l; /* _index_to on <self:String> */
2191 { /* Inline kernel#Int#<= (var7,var10) */
2192 /* Covariant cast for argument 0 (i) <var10:Int> isa OTHER */
2193 /* <var10:Int> isa OTHER */
2194 var13 = 1; /* easy <var10:Int> isa OTHER*/
2195 if (!var13) {
2196 var_class_name16 = type_kernel__Int.name;
2197 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name16);
2198 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
2199 show_backtrace(1);
2200 }
2201 var17 = var7 <= var10;
2202 var11 = var17;
2203 goto RET_LABEL12;
2204 RET_LABEL12:(void)0;
2205 }
2206 if (!var11) {
2207 fprintf(stderr, "Runtime error: %s", "Assert failed");
2208 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 382);
2209 show_backtrace(1);
2210 }
2211 var18 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
2212 var19 = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
2213 { /* Inline kernel#Int#+ (var_index,var19) */
2214 var22 = var_index + var19;
2215 var20 = var22;
2216 goto RET_LABEL21;
2217 RET_LABEL21:(void)0;
2218 }
2219 { /* Inline string#NativeString#[] (var18,var20) */
2220 var25 = var18[var20];
2221 var23 = var25;
2222 goto RET_LABEL24;
2223 RET_LABEL24:(void)0;
2224 }
2225 var = var23;
2226 goto RET_LABEL;
2227 RET_LABEL:;
2228 return var;
2229 }
2230 /* method string#String#[] for (self: Object, Int): nullable Object */
2231 val* VIRTUAL_string__String___91d_93d(val* self, long p0) {
2232 val* var /* : nullable Object */;
2233 char var1 /* : Char */;
2234 val* var2 /* : nullable Object */;
2235 var1 = string__String___91d_93d(self, p0);
2236 var2 = BOX_kernel__Char(var1); /* autobox from Char to nullable Object */
2237 var = var2;
2238 RET_LABEL:;
2239 return var;
2240 }
2241 /* method string#String#substring for (self: String, Int, Int): String */
2242 val* string__String__substring(val* self, long p0, long p1) {
2243 val* var /* : String */;
2244 long var_from /* var from: Int */;
2245 long var_count /* var count: Int */;
2246 long var1 /* : Int */;
2247 short int var2 /* : Bool */;
2248 short int var4 /* : Bool */;
2249 int cltype;
2250 int idtype;
2251 const char* var_class_name;
2252 short int var5 /* : Bool */;
2253 long var6 /* : Int */;
2254 short int var7 /* : Bool */;
2255 short int var9 /* : Bool */;
2256 int cltype10;
2257 int idtype11;
2258 const char* var_class_name12;
2259 short int var13 /* : Bool */;
2260 long var14 /* : Int */;
2261 long var16 /* : Int */;
2262 long var17 /* : Int */;
2263 short int var18 /* : Bool */;
2264 short int var20 /* : Bool */;
2265 int cltype21;
2266 int idtype22;
2267 const char* var_class_name23;
2268 short int var24 /* : Bool */;
2269 long var25 /* : Int */;
2270 long var26 /* : Int */;
2271 long var27 /* : Int */;
2272 long var28 /* : Int */;
2273 long var30 /* : Int */;
2274 long var_realFrom /* var realFrom: Int */;
2275 long var31 /* : Int */;
2276 long var33 /* : Int */;
2277 long var34 /* : Int */;
2278 short int var35 /* : Bool */;
2279 short int var37 /* : Bool */;
2280 int cltype38;
2281 int idtype39;
2282 const char* var_class_name40;
2283 short int var41 /* : Bool */;
2284 val* var42 /* : String */;
2285 long var43 /* : Int */;
2286 char* var44 /* : NativeString */;
2287 long var45 /* : Int */;
2288 short int var46 /* : Bool */;
2289 short int var48 /* : Bool */;
2290 static val* varonce;
2291 val* var49 /* : String */;
2292 char* var50 /* : NativeString */;
2293 long var51 /* : Int */;
2294 val* var52 /* : String */;
2295 val* var53 /* : String */;
2296 long var54 /* : Int */;
2297 long var56 /* : Int */;
2298 long var57 /* : Int */;
2299 long var58 /* : Int */;
2300 long var60 /* : Int */;
2301 char* var61 /* : NativeString */;
2302 var_from = p0;
2303 var_count = p1;
2304 var1 = 0;
2305 { /* Inline kernel#Int#>= (var_count,var1) */
2306 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
2307 /* <var1:Int> isa OTHER */
2308 var4 = 1; /* easy <var1:Int> isa OTHER*/
2309 if (!var4) {
2310 var_class_name = type_kernel__Int.name;
2311 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2312 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
2313 show_backtrace(1);
2314 }
2315 var5 = var_count >= var1;
2316 var2 = var5;
2317 goto RET_LABEL3;
2318 RET_LABEL3:(void)0;
2319 }
2320 if (!var2) {
2321 fprintf(stderr, "Runtime error: %s", "Assert failed");
2322 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 388);
2323 show_backtrace(1);
2324 }
2325 var6 = 0;
2326 { /* Inline kernel#Int#< (var_from,var6) */
2327 /* Covariant cast for argument 0 (i) <var6:Int> isa OTHER */
2328 /* <var6:Int> isa OTHER */
2329 var9 = 1; /* easy <var6:Int> isa OTHER*/
2330 if (!var9) {
2331 var_class_name12 = type_kernel__Int.name;
2332 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name12);
2333 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
2334 show_backtrace(1);
2335 }
2336 var13 = var_from < var6;
2337 var7 = var13;
2338 goto RET_LABEL8;
2339 RET_LABEL8:(void)0;
2340 }
2341 if (var7){
2342 { /* Inline kernel#Int#+ (var_count,var_from) */
2343 var16 = var_count + var_from;
2344 var14 = var16;
2345 goto RET_LABEL15;
2346 RET_LABEL15:(void)0;
2347 }
2348 var_count = var14;
2349 var17 = 0;
2350 { /* Inline kernel#Int#< (var_count,var17) */
2351 /* Covariant cast for argument 0 (i) <var17:Int> isa OTHER */
2352 /* <var17:Int> isa OTHER */
2353 var20 = 1; /* easy <var17:Int> isa OTHER*/
2354 if (!var20) {
2355 var_class_name23 = type_kernel__Int.name;
2356 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name23);
2357 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
2358 show_backtrace(1);
2359 }
2360 var24 = var_count < var17;
2361 var18 = var24;
2362 goto RET_LABEL19;
2363 RET_LABEL19:(void)0;
2364 }
2365 if (var18){
2366 var25 = 0;
2367 var_count = var25;
2368 } else {
2369 }
2370 var26 = 0;
2371 var_from = var26;
2372 } else {
2373 }
2374 var27 = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
2375 { /* Inline kernel#Int#+ (var27,var_from) */
2376 var30 = var27 + var_from;
2377 var28 = var30;
2378 goto RET_LABEL29;
2379 RET_LABEL29:(void)0;
2380 }
2381 var_realFrom = var28;
2382 { /* Inline kernel#Int#+ (var_realFrom,var_count) */
2383 var33 = var_realFrom + var_count;
2384 var31 = var33;
2385 goto RET_LABEL32;
2386 RET_LABEL32:(void)0;
2387 }
2388 var34 = self->attrs[COLOR_string__String___index_to].l; /* _index_to on <self:String> */
2389 { /* Inline kernel#Int#> (var31,var34) */
2390 /* Covariant cast for argument 0 (i) <var34:Int> isa OTHER */
2391 /* <var34:Int> isa OTHER */
2392 var37 = 1; /* easy <var34:Int> isa OTHER*/
2393 if (!var37) {
2394 var_class_name40 = type_kernel__Int.name;
2395 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name40);
2396 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
2397 show_backtrace(1);
2398 }
2399 var41 = var31 > var34;
2400 var35 = var41;
2401 goto RET_LABEL36;
2402 RET_LABEL36:(void)0;
2403 }
2404 if (var35){
2405 var42 = NEW_string__String(&type_string__String);
2406 var43 = self->attrs[COLOR_string__String___index_to].l; /* _index_to on <self:String> */
2407 var44 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
2408 ((void (*)(val*, long, long, char*))(var42->class->vft[COLOR_string__String__from_substring]))(var42, var_realFrom, var43, var44) /* from_substring on <var42:String>*/;
2409 var = var42;
2410 goto RET_LABEL;
2411 } else {
2412 }
2413 var45 = 0;
2414 { /* Inline kernel#Int#== (var_count,var45) */
2415 var48 = var_count == var45;
2416 var46 = var48;
2417 goto RET_LABEL47;
2418 RET_LABEL47:(void)0;
2419 }
2420 if (var46){
2421 if (varonce) {
2422 var49 = varonce;
2423 } else {
2424 var50 = "";
2425 var51 = 0;
2426 var52 = string__NativeString__to_s_with_length(var50, var51);
2427 var49 = var52;
2428 varonce = var49;
2429 }
2430 var = var49;
2431 goto RET_LABEL;
2432 } else {
2433 }
2434 var53 = NEW_string__String(&type_string__String);
2435 { /* Inline kernel#Int#+ (var_realFrom,var_count) */
2436 var56 = var_realFrom + var_count;
2437 var54 = var56;
2438 goto RET_LABEL55;
2439 RET_LABEL55:(void)0;
2440 }
2441 var57 = 1;
2442 { /* Inline kernel#Int#- (var54,var57) */
2443 var60 = var54 - var57;
2444 var58 = var60;
2445 goto RET_LABEL59;
2446 RET_LABEL59:(void)0;
2447 }
2448 var61 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
2449 ((void (*)(val*, long, long, char*))(var53->class->vft[COLOR_string__String__from_substring]))(var53, var_realFrom, var58, var61) /* from_substring on <var53:String>*/;
2450 var = var53;
2451 goto RET_LABEL;
2452 RET_LABEL:;
2453 return var;
2454 }
2455 /* method string#String#substring for (self: Object, Int, Int): String */
2456 val* VIRTUAL_string__String__substring(val* self, long p0, long p1) {
2457 val* var /* : String */;
2458 val* var1 /* : String */;
2459 var1 = string__String__substring(self, p0, p1);
2460 var = var1;
2461 RET_LABEL:;
2462 return var;
2463 }
2464 /* method string#String#substring_from for (self: String, Int): String */
2465 val* string__String__substring_from(val* self, long p0) {
2466 val* var /* : String */;
2467 long var_from /* var from: Int */;
2468 long var1 /* : Int */;
2469 short int var2 /* : Bool */;
2470 short int var4 /* : Bool */;
2471 int cltype;
2472 int idtype;
2473 const char* var_class_name;
2474 short int var5 /* : Bool */;
2475 static val* varonce;
2476 val* var6 /* : String */;
2477 char* var7 /* : NativeString */;
2478 long var8 /* : Int */;
2479 val* var9 /* : String */;
2480 long var10 /* : Int */;
2481 short int var11 /* : Bool */;
2482 short int var13 /* : Bool */;
2483 int cltype14;
2484 int idtype15;
2485 const char* var_class_name16;
2486 short int var17 /* : Bool */;
2487 long var18 /* : Int */;
2488 long var19 /* : Int */;
2489 val* var20 /* : String */;
2490 var_from = p0;
2491 var1 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
2492 { /* Inline kernel#Int#> (var_from,var1) */
2493 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
2494 /* <var1:Int> isa OTHER */
2495 var4 = 1; /* easy <var1:Int> isa OTHER*/
2496 if (!var4) {
2497 var_class_name = type_kernel__Int.name;
2498 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2499 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
2500 show_backtrace(1);
2501 }
2502 var5 = var_from > var1;
2503 var2 = var5;
2504 goto RET_LABEL3;
2505 RET_LABEL3:(void)0;
2506 }
2507 if (var2){
2508 if (varonce) {
2509 var6 = varonce;
2510 } else {
2511 var7 = "";
2512 var8 = 0;
2513 var9 = string__NativeString__to_s_with_length(var7, var8);
2514 var6 = var9;
2515 varonce = var6;
2516 }
2517 var = var6;
2518 goto RET_LABEL;
2519 } else {
2520 }
2521 var10 = 0;
2522 { /* Inline kernel#Int#< (var_from,var10) */
2523 /* Covariant cast for argument 0 (i) <var10:Int> isa OTHER */
2524 /* <var10:Int> isa OTHER */
2525 var13 = 1; /* easy <var10:Int> isa OTHER*/
2526 if (!var13) {
2527 var_class_name16 = type_kernel__Int.name;
2528 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name16);
2529 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
2530 show_backtrace(1);
2531 }
2532 var17 = var_from < var10;
2533 var11 = var17;
2534 goto RET_LABEL12;
2535 RET_LABEL12:(void)0;
2536 }
2537 if (var11){
2538 var18 = 0;
2539 var_from = var18;
2540 } else {
2541 }
2542 var19 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
2543 var20 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_string__AbstractString__substring]))(self, var_from, var19) /* substring on <self:String>*/;
2544 var = var20;
2545 goto RET_LABEL;
2546 RET_LABEL:;
2547 return var;
2548 }
2549 /* method string#String#substring_from for (self: Object, Int): String */
2550 val* VIRTUAL_string__String__substring_from(val* self, long p0) {
2551 val* var /* : String */;
2552 val* var1 /* : String */;
2553 var1 = string__String__substring_from(self, p0);
2554 var = var1;
2555 RET_LABEL:;
2556 return var;
2557 }
2558 /* method string#String#has_substring for (self: String, String, Int): Bool */
2559 short int string__String__has_substring(val* self, val* p0, long p1) {
2560 short int var /* : Bool */;
2561 val* var_str /* var str: String */;
2562 long var_pos /* var pos: Int */;
2563 long var1 /* : Int */;
2564 long var2 /* : Int */;
2565 long var3 /* : Int */;
2566 long var5 /* : Int */;
2567 long var_itsindex /* var itsindex: Int */;
2568 long var6 /* : Int */;
2569 long var8 /* : Int */;
2570 long var_myindex /* var myindex: Int */;
2571 char* var9 /* : NativeString */;
2572 char* var_myitems /* var myitems: NativeString */;
2573 char* var10 /* : NativeString */;
2574 char* var_itsitems /* var itsitems: NativeString */;
2575 short int var11 /* : Bool */;
2576 long var12 /* : Int */;
2577 short int var13 /* : Bool */;
2578 short int var15 /* : Bool */;
2579 int cltype;
2580 int idtype;
2581 const char* var_class_name;
2582 short int var16 /* : Bool */;
2583 short int var_ /* var : Bool */;
2584 short int var17 /* : Bool */;
2585 short int var19 /* : Bool */;
2586 int cltype20;
2587 int idtype21;
2588 const char* var_class_name22;
2589 short int var23 /* : Bool */;
2590 short int var24 /* : Bool */;
2591 long var25 /* : Int */;
2592 long var_itsindexfrom /* var itsindexfrom: Int */;
2593 long var26 /* : Int */;
2594 long var28 /* : Int */;
2595 long var29 /* : Int */;
2596 long var30 /* : Int */;
2597 long var32 /* : Int */;
2598 short int var33 /* : Bool */;
2599 short int var35 /* : Bool */;
2600 int cltype36;
2601 int idtype37;
2602 const char* var_class_name38;
2603 short int var39 /* : Bool */;
2604 char var40 /* : Char */;
2605 char var42 /* : Char */;
2606 char var43 /* : Char */;
2607 char var45 /* : Char */;
2608 short int var46 /* : Bool */;
2609 short int var48 /* : Bool */;
2610 short int var49 /* : Bool */;
2611 short int var50 /* : Bool */;
2612 long var51 /* : Int */;
2613 long var52 /* : Int */;
2614 long var54 /* : Int */;
2615 long var55 /* : Int */;
2616 long var56 /* : Int */;
2617 long var58 /* : Int */;
2618 short int var59 /* : Bool */;
2619 var_str = p0;
2620 var_pos = p1;
2621 var1 = var_str->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_str:String> */
2622 var2 = 1;
2623 { /* Inline kernel#Int#- (var1,var2) */
2624 var5 = var1 - var2;
2625 var3 = var5;
2626 goto RET_LABEL4;
2627 RET_LABEL4:(void)0;
2628 }
2629 var_itsindex = var3;
2630 { /* Inline kernel#Int#+ (var_pos,var_itsindex) */
2631 var8 = var_pos + var_itsindex;
2632 var6 = var8;
2633 goto RET_LABEL7;
2634 RET_LABEL7:(void)0;
2635 }
2636 var_myindex = var6;
2637 var9 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
2638 var_myitems = var9;
2639 var10 = var_str->attrs[COLOR_string__AbstractString___items].str; /* _items on <var_str:String> */
2640 var_itsitems = var10;
2641 var12 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
2642 { /* Inline kernel#Int#> (var_myindex,var12) */
2643 /* Covariant cast for argument 0 (i) <var12:Int> isa OTHER */
2644 /* <var12:Int> isa OTHER */
2645 var15 = 1; /* easy <var12:Int> isa OTHER*/
2646 if (!var15) {
2647 var_class_name = type_kernel__Int.name;
2648 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2649 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
2650 show_backtrace(1);
2651 }
2652 var16 = var_myindex > var12;
2653 var13 = var16;
2654 goto RET_LABEL14;
2655 RET_LABEL14:(void)0;
2656 }
2657 var_ = var13;
2658 if (var13){
2659 var11 = var_;
2660 } else {
2661 { /* Inline kernel#Int#> (var_itsindex,var_myindex) */
2662 /* Covariant cast for argument 0 (i) <var_myindex:Int> isa OTHER */
2663 /* <var_myindex:Int> isa OTHER */
2664 var19 = 1; /* easy <var_myindex:Int> isa OTHER*/
2665 if (!var19) {
2666 var_class_name22 = type_kernel__Int.name;
2667 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name22);
2668 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
2669 show_backtrace(1);
2670 }
2671 var23 = var_itsindex > var_myindex;
2672 var17 = var23;
2673 goto RET_LABEL18;
2674 RET_LABEL18:(void)0;
2675 }
2676 var11 = var17;
2677 }
2678 if (var11){
2679 var24 = 0;
2680 var = var24;
2681 goto RET_LABEL;
2682 } else {
2683 }
2684 var25 = ((long (*)(val*))(var_str->class->vft[COLOR_string__String__index_from]))(var_str) /* index_from on <var_str:String>*/;
2685 var_itsindexfrom = var25;
2686 { /* Inline kernel#Int#+ (var_itsindex,var_itsindexfrom) */
2687 var28 = var_itsindex + var_itsindexfrom;
2688 var26 = var28;
2689 goto RET_LABEL27;
2690 RET_LABEL27:(void)0;
2691 }
2692 var_itsindex = var26;
2693 var29 = ((long (*)(val*))(self->class->vft[COLOR_string__String__index_from]))(self) /* index_from on <self:String>*/;
2694 { /* Inline kernel#Int#+ (var_myindex,var29) */
2695 var32 = var_myindex + var29;
2696 var30 = var32;
2697 goto RET_LABEL31;
2698 RET_LABEL31:(void)0;
2699 }
2700 var_myindex = var30;
2701 for(;;) {
2702 { /* Inline kernel#Int#>= (var_itsindex,var_itsindexfrom) */
2703 /* Covariant cast for argument 0 (i) <var_itsindexfrom:Int> isa OTHER */
2704 /* <var_itsindexfrom:Int> isa OTHER */
2705 var35 = 1; /* easy <var_itsindexfrom:Int> isa OTHER*/
2706 if (!var35) {
2707 var_class_name38 = type_kernel__Int.name;
2708 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name38);
2709 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
2710 show_backtrace(1);
2711 }
2712 var39 = var_itsindex >= var_itsindexfrom;
2713 var33 = var39;
2714 goto RET_LABEL34;
2715 RET_LABEL34:(void)0;
2716 }
2717 if (!var33) break;
2718 { /* Inline string#NativeString#[] (var_myitems,var_myindex) */
2719 var42 = var_myitems[var_myindex];
2720 var40 = var42;
2721 goto RET_LABEL41;
2722 RET_LABEL41:(void)0;
2723 }
2724 { /* Inline string#NativeString#[] (var_itsitems,var_itsindex) */
2725 var45 = var_itsitems[var_itsindex];
2726 var43 = var45;
2727 goto RET_LABEL44;
2728 RET_LABEL44:(void)0;
2729 }
2730 { /* Inline kernel#Char#!= (var40,var43) */
2731 var48 = var40 == var43;
2732 var49 = !var48;
2733 var46 = var49;
2734 goto RET_LABEL47;
2735 RET_LABEL47:(void)0;
2736 }
2737 if (var46){
2738 var50 = 0;
2739 var = var50;
2740 goto RET_LABEL;
2741 } else {
2742 }
2743 var51 = 1;
2744 { /* Inline kernel#Int#- (var_myindex,var51) */
2745 var54 = var_myindex - var51;
2746 var52 = var54;
2747 goto RET_LABEL53;
2748 RET_LABEL53:(void)0;
2749 }
2750 var_myindex = var52;
2751 var55 = 1;
2752 { /* Inline kernel#Int#- (var_itsindex,var55) */
2753 var58 = var_itsindex - var55;
2754 var56 = var58;
2755 goto RET_LABEL57;
2756 RET_LABEL57:(void)0;
2757 }
2758 var_itsindex = var56;
2759 CONTINUE_label: (void)0;
2760 }
2761 BREAK_label: (void)0;
2762 var59 = 1;
2763 var = var59;
2764 goto RET_LABEL;
2765 RET_LABEL:;
2766 return var;
2767 }
2768 /* method string#String#has_substring for (self: Object, String, Int): Bool */
2769 short int VIRTUAL_string__String__has_substring(val* self, val* p0, long p1) {
2770 short int var /* : Bool */;
2771 short int var1 /* : Bool */;
2772 var1 = string__String__has_substring(self, p0, p1);
2773 var = var1;
2774 RET_LABEL:;
2775 return var;
2776 }
2777 /* method string#String#to_upper for (self: String): String */
2778 val* string__String__to_upper(val* self) {
2779 val* var /* : String */;
2780 long var1 /* : Int */;
2781 long var2 /* : Int */;
2782 long var3 /* : Int */;
2783 long var5 /* : Int */;
2784 char* var6 /* : NativeString */;
2785 char* var_outstr /* var outstr: NativeString */;
2786 long var7 /* : Int */;
2787 long var_out_index /* var out_index: Int */;
2788 char* var8 /* : NativeString */;
2789 char* var_myitems /* var myitems: NativeString */;
2790 long var9 /* : Int */;
2791 long var_index_from /* var index_from: Int */;
2792 long var10 /* : Int */;
2793 long var_max /* var max: Int */;
2794 short int var11 /* : Bool */;
2795 short int var13 /* : Bool */;
2796 int cltype;
2797 int idtype;
2798 const char* var_class_name;
2799 short int var14 /* : Bool */;
2800 char var15 /* : Char */;
2801 char var17 /* : Char */;
2802 char var18 /* : Char */;
2803 long var20 /* : Int */;
2804 long var21 /* : Int */;
2805 long var23 /* : Int */;
2806 long var24 /* : Int */;
2807 long var25 /* : Int */;
2808 long var27 /* : Int */;
2809 long var28 /* : Int */;
2810 char var29 /* : Char */;
2811 long var31 /* : Int */;
2812 val* var32 /* : String */;
2813 var1 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
2814 var2 = 1;
2815 { /* Inline kernel#Int#+ (var1,var2) */
2816 var5 = var1 + var2;
2817 var3 = var5;
2818 goto RET_LABEL4;
2819 RET_LABEL4:(void)0;
2820 }
2821 var6 = ((char* (*)(val*, long))(self->class->vft[COLOR_string__StringCapable__calloc_string]))(self, var3) /* calloc_string on <self:String>*/;
2822 var_outstr = var6;
2823 var7 = 0;
2824 var_out_index = var7;
2825 var8 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
2826 var_myitems = var8;
2827 var9 = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
2828 var_index_from = var9;
2829 var10 = self->attrs[COLOR_string__String___index_to].l; /* _index_to on <self:String> */
2830 var_max = var10;
2831 for(;;) {
2832 { /* Inline kernel#Int#<= (var_index_from,var_max) */
2833 /* Covariant cast for argument 0 (i) <var_max:Int> isa OTHER */
2834 /* <var_max:Int> isa OTHER */
2835 var13 = 1; /* easy <var_max:Int> isa OTHER*/
2836 if (!var13) {
2837 var_class_name = type_kernel__Int.name;
2838 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2839 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
2840 show_backtrace(1);
2841 }
2842 var14 = var_index_from <= var_max;
2843 var11 = var14;
2844 goto RET_LABEL12;
2845 RET_LABEL12:(void)0;
2846 }
2847 if (!var11) break;
2848 { /* Inline string#NativeString#[] (var_myitems,var_index_from) */
2849 var17 = var_myitems[var_index_from];
2850 var15 = var17;
2851 goto RET_LABEL16;
2852 RET_LABEL16:(void)0;
2853 }
2854 var18 = kernel__Char__to_upper(var15);
2855 { /* Inline string#NativeString#[]= (var_outstr,var_out_index,var18) */
2856 var_outstr[var_out_index]=var18;
2857 RET_LABEL19:(void)0;
2858 }
2859 var20 = 1;
2860 { /* Inline kernel#Int#+ (var_out_index,var20) */
2861 var23 = var_out_index + var20;
2862 var21 = var23;
2863 goto RET_LABEL22;
2864 RET_LABEL22:(void)0;
2865 }
2866 var_out_index = var21;
2867 var24 = 1;
2868 { /* Inline kernel#Int#+ (var_index_from,var24) */
2869 var27 = var_index_from + var24;
2870 var25 = var27;
2871 goto RET_LABEL26;
2872 RET_LABEL26:(void)0;
2873 }
2874 var_index_from = var25;
2875 CONTINUE_label: (void)0;
2876 }
2877 BREAK_label: (void)0;
2878 var28 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:String>*/;
2879 var29 = '\0';
2880 { /* Inline string#NativeString#[]= (var_outstr,var28,var29) */
2881 var_outstr[var28]=var29;
2882 RET_LABEL30:(void)0;
2883 }
2884 var31 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
2885 var32 = string__NativeString__to_s_with_length(var_outstr, var31);
2886 var = var32;
2887 goto RET_LABEL;
2888 RET_LABEL:;
2889 return var;
2890 }
2891 /* method string#String#to_upper for (self: Object): String */
2892 val* VIRTUAL_string__String__to_upper(val* self) {
2893 val* var /* : String */;
2894 val* var1 /* : String */;
2895 var1 = string__String__to_upper(self);
2896 var = var1;
2897 RET_LABEL:;
2898 return var;
2899 }
2900 /* method string#String#to_lower for (self: String): String */
2901 val* string__String__to_lower(val* self) {
2902 val* var /* : String */;
2903 long var1 /* : Int */;
2904 long var2 /* : Int */;
2905 long var3 /* : Int */;
2906 long var5 /* : Int */;
2907 char* var6 /* : NativeString */;
2908 char* var_outstr /* var outstr: NativeString */;
2909 long var7 /* : Int */;
2910 long var_out_index /* var out_index: Int */;
2911 char* var8 /* : NativeString */;
2912 char* var_myitems /* var myitems: NativeString */;
2913 long var9 /* : Int */;
2914 long var_index_from /* var index_from: Int */;
2915 long var10 /* : Int */;
2916 long var_max /* var max: Int */;
2917 short int var11 /* : Bool */;
2918 short int var13 /* : Bool */;
2919 int cltype;
2920 int idtype;
2921 const char* var_class_name;
2922 short int var14 /* : Bool */;
2923 char var15 /* : Char */;
2924 char var17 /* : Char */;
2925 char var18 /* : Char */;
2926 long var20 /* : Int */;
2927 long var21 /* : Int */;
2928 long var23 /* : Int */;
2929 long var24 /* : Int */;
2930 long var25 /* : Int */;
2931 long var27 /* : Int */;
2932 long var28 /* : Int */;
2933 char var29 /* : Char */;
2934 long var31 /* : Int */;
2935 val* var32 /* : String */;
2936 var1 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
2937 var2 = 1;
2938 { /* Inline kernel#Int#+ (var1,var2) */
2939 var5 = var1 + var2;
2940 var3 = var5;
2941 goto RET_LABEL4;
2942 RET_LABEL4:(void)0;
2943 }
2944 var6 = ((char* (*)(val*, long))(self->class->vft[COLOR_string__StringCapable__calloc_string]))(self, var3) /* calloc_string on <self:String>*/;
2945 var_outstr = var6;
2946 var7 = 0;
2947 var_out_index = var7;
2948 var8 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
2949 var_myitems = var8;
2950 var9 = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
2951 var_index_from = var9;
2952 var10 = self->attrs[COLOR_string__String___index_to].l; /* _index_to on <self:String> */
2953 var_max = var10;
2954 for(;;) {
2955 { /* Inline kernel#Int#<= (var_index_from,var_max) */
2956 /* Covariant cast for argument 0 (i) <var_max:Int> isa OTHER */
2957 /* <var_max:Int> isa OTHER */
2958 var13 = 1; /* easy <var_max:Int> isa OTHER*/
2959 if (!var13) {
2960 var_class_name = type_kernel__Int.name;
2961 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2962 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
2963 show_backtrace(1);
2964 }
2965 var14 = var_index_from <= var_max;
2966 var11 = var14;
2967 goto RET_LABEL12;
2968 RET_LABEL12:(void)0;
2969 }
2970 if (!var11) break;
2971 { /* Inline string#NativeString#[] (var_myitems,var_index_from) */
2972 var17 = var_myitems[var_index_from];
2973 var15 = var17;
2974 goto RET_LABEL16;
2975 RET_LABEL16:(void)0;
2976 }
2977 var18 = kernel__Char__to_lower(var15);
2978 { /* Inline string#NativeString#[]= (var_outstr,var_out_index,var18) */
2979 var_outstr[var_out_index]=var18;
2980 RET_LABEL19:(void)0;
2981 }
2982 var20 = 1;
2983 { /* Inline kernel#Int#+ (var_out_index,var20) */
2984 var23 = var_out_index + var20;
2985 var21 = var23;
2986 goto RET_LABEL22;
2987 RET_LABEL22:(void)0;
2988 }
2989 var_out_index = var21;
2990 var24 = 1;
2991 { /* Inline kernel#Int#+ (var_index_from,var24) */
2992 var27 = var_index_from + var24;
2993 var25 = var27;
2994 goto RET_LABEL26;
2995 RET_LABEL26:(void)0;
2996 }
2997 var_index_from = var25;
2998 CONTINUE_label: (void)0;
2999 }
3000 BREAK_label: (void)0;
3001 var28 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:String>*/;
3002 var29 = '\0';
3003 { /* Inline string#NativeString#[]= (var_outstr,var28,var29) */
3004 var_outstr[var28]=var29;
3005 RET_LABEL30:(void)0;
3006 }
3007 var31 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
3008 var32 = string__NativeString__to_s_with_length(var_outstr, var31);
3009 var = var32;
3010 goto RET_LABEL;
3011 RET_LABEL:;
3012 return var;
3013 }
3014 /* method string#String#to_lower for (self: Object): String */
3015 val* VIRTUAL_string__String__to_lower(val* self) {
3016 val* var /* : String */;
3017 val* var1 /* : String */;
3018 var1 = string__String__to_lower(self);
3019 var = var1;
3020 RET_LABEL:;
3021 return var;
3022 }
3023 /* method string#String#trim for (self: String): String */
3024 val* string__String__trim(val* self) {
3025 val* var /* : String */;
3026 long var1 /* : Int */;
3027 long var2 /* : Int */;
3028 short int var3 /* : Bool */;
3029 short int var5 /* : Bool */;
3030 long var6 /* : Int */;
3031 long var_start_pos /* var start_pos: Int */;
3032 char* var7 /* : NativeString */;
3033 char var8 /* : Char */;
3034 char var10 /* : Char */;
3035 long var11 /* : Int */;
3036 long var13 /* : Int */;
3037 long var14 /* : Int */;
3038 short int var15 /* : Bool */;
3039 short int var17 /* : Bool */;
3040 int cltype;
3041 int idtype;
3042 const char* var_class_name;
3043 short int var18 /* : Bool */;
3044 long var19 /* : Int */;
3045 long var20 /* : Int */;
3046 long var22 /* : Int */;
3047 long var23 /* : Int */;
3048 long var24 /* : Int */;
3049 long var25 /* : Int */;
3050 long var27 /* : Int */;
3051 short int var28 /* : Bool */;
3052 short int var30 /* : Bool */;
3053 static val* varonce;
3054 val* var31 /* : String */;
3055 char* var32 /* : NativeString */;
3056 long var33 /* : Int */;
3057 val* var34 /* : String */;
3058 long var35 /* : Int */;
3059 long var_end_pos /* var end_pos: Int */;
3060 char* var36 /* : NativeString */;
3061 char var37 /* : Char */;
3062 char var39 /* : Char */;
3063 long var40 /* : Int */;
3064 long var42 /* : Int */;
3065 long var43 /* : Int */;
3066 short int var44 /* : Bool */;
3067 short int var46 /* : Bool */;
3068 int cltype47;
3069 int idtype48;
3070 const char* var_class_name49;
3071 short int var50 /* : Bool */;
3072 long var51 /* : Int */;
3073 long var52 /* : Int */;
3074 long var54 /* : Int */;
3075 short int var55 /* : Bool */;
3076 short int var57 /* : Bool */;
3077 char* var58 /* : NativeString */;
3078 char var59 /* : Char */;
3079 char var61 /* : Char */;
3080 val* var62 /* : String */;
3081 long var64 /* : Int */;
3082 long var65 /* : Int */;
3083 long var67 /* : Int */;
3084 long var68 /* : Int */;
3085 long var69 /* : Int */;
3086 long var71 /* : Int */;
3087 long var72 /* : Int */;
3088 long var74 /* : Int */;
3089 long var75 /* : Int */;
3090 long var76 /* : Int */;
3091 long var78 /* : Int */;
3092 val* var79 /* : String */;
3093 var1 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
3094 var2 = 0;
3095 { /* Inline kernel#Int#== (var1,var2) */
3096 var5 = var1 == var2;
3097 var3 = var5;
3098 goto RET_LABEL4;
3099 RET_LABEL4:(void)0;
3100 }
3101 if (var3){
3102 var = self;
3103 goto RET_LABEL;
3104 } else {
3105 }
3106 var6 = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
3107 var_start_pos = var6;
3108 for(;;) {
3109 var7 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
3110 { /* Inline string#NativeString#[] (var7,var_start_pos) */
3111 var10 = var7[var_start_pos];
3112 var8 = var10;
3113 goto RET_LABEL9;
3114 RET_LABEL9:(void)0;
3115 }
3116 { /* Inline kernel#Char#ascii (var8) */
3117 var13 = (unsigned char)var8;
3118 var11 = var13;
3119 goto RET_LABEL12;
3120 RET_LABEL12:(void)0;
3121 }
3122 var14 = 32;
3123 { /* Inline kernel#Int#<= (var11,var14) */
3124 /* Covariant cast for argument 0 (i) <var14:Int> isa OTHER */
3125 /* <var14:Int> isa OTHER */
3126 var17 = 1; /* easy <var14:Int> isa OTHER*/
3127 if (!var17) {
3128 var_class_name = type_kernel__Int.name;
3129 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3130 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
3131 show_backtrace(1);
3132 }
3133 var18 = var11 <= var14;
3134 var15 = var18;
3135 goto RET_LABEL16;
3136 RET_LABEL16:(void)0;
3137 }
3138 if (!var15) break;
3139 var19 = 1;
3140 { /* Inline kernel#Int#+ (var_start_pos,var19) */
3141 var22 = var_start_pos + var19;
3142 var20 = var22;
3143 goto RET_LABEL21;
3144 RET_LABEL21:(void)0;
3145 }
3146 var_start_pos = var20;
3147 var23 = self->attrs[COLOR_string__String___index_to].l; /* _index_to on <self:String> */
3148 var24 = 1;
3149 { /* Inline kernel#Int#+ (var23,var24) */
3150 var27 = var23 + var24;
3151 var25 = var27;
3152 goto RET_LABEL26;
3153 RET_LABEL26:(void)0;
3154 }
3155 { /* Inline kernel#Int#== (var_start_pos,var25) */
3156 var30 = var_start_pos == var25;
3157 var28 = var30;
3158 goto RET_LABEL29;
3159 RET_LABEL29:(void)0;
3160 }
3161 if (var28){
3162 if (varonce) {
3163 var31 = varonce;
3164 } else {
3165 var32 = "";
3166 var33 = 0;
3167 var34 = string__NativeString__to_s_with_length(var32, var33);
3168 var31 = var34;
3169 varonce = var31;
3170 }
3171 var = var31;
3172 goto RET_LABEL;
3173 } else {
3174 }
3175 CONTINUE_label: (void)0;
3176 }
3177 BREAK_label: (void)0;
3178 var35 = self->attrs[COLOR_string__String___index_to].l; /* _index_to on <self:String> */
3179 var_end_pos = var35;
3180 for(;;) {
3181 var36 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
3182 { /* Inline string#NativeString#[] (var36,var_end_pos) */
3183 var39 = var36[var_end_pos];
3184 var37 = var39;
3185 goto RET_LABEL38;
3186 RET_LABEL38:(void)0;
3187 }
3188 { /* Inline kernel#Char#ascii (var37) */
3189 var42 = (unsigned char)var37;
3190 var40 = var42;
3191 goto RET_LABEL41;
3192 RET_LABEL41:(void)0;
3193 }
3194 var43 = 32;
3195 { /* Inline kernel#Int#<= (var40,var43) */
3196 /* Covariant cast for argument 0 (i) <var43:Int> isa OTHER */
3197 /* <var43:Int> isa OTHER */
3198 var46 = 1; /* easy <var43:Int> isa OTHER*/
3199 if (!var46) {
3200 var_class_name49 = type_kernel__Int.name;
3201 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name49);
3202 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
3203 show_backtrace(1);
3204 }
3205 var50 = var40 <= var43;
3206 var44 = var50;
3207 goto RET_LABEL45;
3208 RET_LABEL45:(void)0;
3209 }
3210 if (!var44) break;
3211 var51 = 1;
3212 { /* Inline kernel#Int#- (var_end_pos,var51) */
3213 var54 = var_end_pos - var51;
3214 var52 = var54;
3215 goto RET_LABEL53;
3216 RET_LABEL53:(void)0;
3217 }
3218 var_end_pos = var52;
3219 { /* Inline kernel#Int#== (var_end_pos,var_start_pos) */
3220 var57 = var_end_pos == var_start_pos;
3221 var55 = var57;
3222 goto RET_LABEL56;
3223 RET_LABEL56:(void)0;
3224 }
3225 if (var55){
3226 var58 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
3227 { /* Inline string#NativeString#[] (var58,var_start_pos) */
3228 var61 = var58[var_start_pos];
3229 var59 = var61;
3230 goto RET_LABEL60;
3231 RET_LABEL60:(void)0;
3232 }
3233 var62 = string__Char__to_s(var59);
3234 var = var62;
3235 goto RET_LABEL;
3236 } else {
3237 }
3238 CONTINUE_label63: (void)0;
3239 }
3240 BREAK_label63: (void)0;
3241 var64 = ((long (*)(val*))(self->class->vft[COLOR_string__String__index_from]))(self) /* index_from on <self:String>*/;
3242 { /* Inline kernel#Int#- (var_start_pos,var64) */
3243 var67 = var_start_pos - var64;
3244 var65 = var67;
3245 goto RET_LABEL66;
3246 RET_LABEL66:(void)0;
3247 }
3248 var_start_pos = var65;
3249 var68 = ((long (*)(val*))(self->class->vft[COLOR_string__String__index_from]))(self) /* index_from on <self:String>*/;
3250 { /* Inline kernel#Int#- (var_end_pos,var68) */
3251 var71 = var_end_pos - var68;
3252 var69 = var71;
3253 goto RET_LABEL70;
3254 RET_LABEL70:(void)0;
3255 }
3256 var_end_pos = var69;
3257 { /* Inline kernel#Int#- (var_end_pos,var_start_pos) */
3258 var74 = var_end_pos - var_start_pos;
3259 var72 = var74;
3260 goto RET_LABEL73;
3261 RET_LABEL73:(void)0;
3262 }
3263 var75 = 1;
3264 { /* Inline kernel#Int#+ (var72,var75) */
3265 var78 = var72 + var75;
3266 var76 = var78;
3267 goto RET_LABEL77;
3268 RET_LABEL77:(void)0;
3269 }
3270 var79 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_string__AbstractString__substring]))(self, var_start_pos, var76) /* substring on <self:String>*/;
3271 var = var79;
3272 goto RET_LABEL;
3273 RET_LABEL:;
3274 return var;
3275 }
3276 /* method string#String#trim for (self: Object): String */
3277 val* VIRTUAL_string__String__trim(val* self) {
3278 val* var /* : String */;
3279 val* var1 /* : String */;
3280 var1 = string__String__trim(self);
3281 var = var1;
3282 RET_LABEL:;
3283 return var;
3284 }
3285 /* method string#String#output for (self: String) */
3286 void string__String__output(val* self) {
3287 long var /* : Int */;
3288 long var_i /* var i: Int */;
3289 long var1 /* : Int */;
3290 long var_imax /* var imax: Int */;
3291 short int var2 /* : Bool */;
3292 short int var4 /* : Bool */;
3293 int cltype;
3294 int idtype;
3295 const char* var_class_name;
3296 short int var5 /* : Bool */;
3297 char* var6 /* : NativeString */;
3298 char var7 /* : Char */;
3299 char var9 /* : Char */;
3300 long var11 /* : Int */;
3301 long var12 /* : Int */;
3302 long var14 /* : Int */;
3303 var = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
3304 var_i = var;
3305 var1 = self->attrs[COLOR_string__String___index_to].l; /* _index_to on <self:String> */
3306 var_imax = var1;
3307 for(;;) {
3308 { /* Inline kernel#Int#<= (var_i,var_imax) */
3309 /* Covariant cast for argument 0 (i) <var_imax:Int> isa OTHER */
3310 /* <var_imax:Int> isa OTHER */
3311 var4 = 1; /* easy <var_imax:Int> isa OTHER*/
3312 if (!var4) {
3313 var_class_name = type_kernel__Int.name;
3314 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3315 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
3316 show_backtrace(1);
3317 }
3318 var5 = var_i <= var_imax;
3319 var2 = var5;
3320 goto RET_LABEL3;
3321 RET_LABEL3:(void)0;
3322 }
3323 if (!var2) break;
3324 var6 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
3325 { /* Inline string#NativeString#[] (var6,var_i) */
3326 var9 = var6[var_i];
3327 var7 = var9;
3328 goto RET_LABEL8;
3329 RET_LABEL8:(void)0;
3330 }
3331 { /* Inline kernel#Char#output (var7) */
3332 printf("%c", var7);
3333 RET_LABEL10:(void)0;
3334 }
3335 var11 = 1;
3336 { /* Inline kernel#Int#+ (var_i,var11) */
3337 var14 = var_i + var11;
3338 var12 = var14;
3339 goto RET_LABEL13;
3340 RET_LABEL13:(void)0;
3341 }
3342 var_i = var12;
3343 CONTINUE_label: (void)0;
3344 }
3345 BREAK_label: (void)0;
3346 RET_LABEL:;
3347 }
3348 /* method string#String#output for (self: Object) */
3349 void VIRTUAL_string__String__output(val* self) {
3350 string__String__output(self);
3351 RET_LABEL:;
3352 }
3353 /* method string#String#from_substring for (self: String, Int, Int, NativeString) */
3354 void string__String__from_substring(val* self, long p0, long p1, char* p2) {
3355 long var_from /* var from: Int */;
3356 long var_to /* var to: Int */;
3357 char* var_internalString /* var internalString: NativeString */;
3358 long var /* : Int */;
3359 long var2 /* : Int */;
3360 long var3 /* : Int */;
3361 long var4 /* : Int */;
3362 long var6 /* : Int */;
3363 var_from = p0;
3364 var_to = p1;
3365 var_internalString = p2;
3366 ((void (*)(val*))(self->class->vft[COLOR_string__AbstractString__init]))(self) /* init on <self:String>*/;
3367 self->attrs[COLOR_string__AbstractString___items].str = var_internalString; /* _items on <self:String> */
3368 self->attrs[COLOR_string__String___index_from].l = var_from; /* _index_from on <self:String> */
3369 self->attrs[COLOR_string__String___index_to].l = var_to; /* _index_to on <self:String> */
3370 { /* Inline kernel#Int#- (var_to,var_from) */
3371 var2 = var_to - var_from;
3372 var = var2;
3373 goto RET_LABEL1;
3374 RET_LABEL1:(void)0;
3375 }
3376 var3 = 1;
3377 { /* Inline kernel#Int#+ (var,var3) */
3378 var6 = var + var3;
3379 var4 = var6;
3380 goto RET_LABEL5;
3381 RET_LABEL5:(void)0;
3382 }
3383 self->attrs[COLOR_array__AbstractArrayRead___length].l = var4; /* _length on <self:String> */
3384 RET_LABEL:;
3385 }
3386 /* method string#String#from_substring for (self: Object, Int, Int, NativeString) */
3387 void VIRTUAL_string__String__from_substring(val* self, long p0, long p1, char* p2) {
3388 string__String__from_substring(self, p0, p1, p2);
3389 RET_LABEL:;
3390 }
3391 /* method string#String#with_infos for (self: String, NativeString, Int, Int, Int) */
3392 void string__String__with_infos(val* self, char* p0, long p1, long p2, long p3) {
3393 char* var_items /* var items: NativeString */;
3394 long var_len /* var len: Int */;
3395 long var_from /* var from: Int */;
3396 long var_to /* var to: Int */;
3397 var_items = p0;
3398 var_len = p1;
3399 var_from = p2;
3400 var_to = p3;
3401 ((void (*)(val*))(self->class->vft[COLOR_string__AbstractString__init]))(self) /* init on <self:String>*/;
3402 self->attrs[COLOR_string__AbstractString___items].str = var_items; /* _items on <self:String> */
3403 self->attrs[COLOR_array__AbstractArrayRead___length].l = var_len; /* _length on <self:String> */
3404 self->attrs[COLOR_string__String___index_from].l = var_from; /* _index_from on <self:String> */
3405 self->attrs[COLOR_string__String___index_to].l = var_to; /* _index_to on <self:String> */
3406 RET_LABEL:;
3407 }
3408 /* method string#String#with_infos for (self: Object, NativeString, Int, Int, Int) */
3409 void VIRTUAL_string__String__with_infos(val* self, char* p0, long p1, long p2, long p3) {
3410 string__String__with_infos(self, p0, p1, p2, p3);
3411 RET_LABEL:;
3412 }
3413 /* method string#String#to_cstring for (self: String): NativeString */
3414 char* string__String__to_cstring(val* self) {
3415 char* var /* : NativeString */;
3416 short int var1 /* : Bool */;
3417 long var2 /* : Int */;
3418 long var3 /* : Int */;
3419 short int var4 /* : Bool */;
3420 short int var6 /* : Bool */;
3421 int cltype;
3422 int idtype;
3423 const char* var_class_name;
3424 short int var7 /* : Bool */;
3425 short int var_ /* var : Bool */;
3426 long var8 /* : Int */;
3427 char* var9 /* : NativeString */;
3428 long var10 /* : Int */;
3429 long var11 /* : Int */;
3430 long var12 /* : Int */;
3431 long var14 /* : Int */;
3432 short int var15 /* : Bool */;
3433 short int var17 /* : Bool */;
3434 short int var18 /* : Bool */;
3435 long var19 /* : Int */;
3436 long var20 /* : Int */;
3437 long var21 /* : Int */;
3438 long var23 /* : Int */;
3439 char* var24 /* : NativeString */;
3440 char* var_newItems /* var newItems: NativeString */;
3441 char* var25 /* : NativeString */;
3442 long var26 /* : Int */;
3443 long var27 /* : Int */;
3444 long var28 /* : Int */;
3445 long var30 /* : Int */;
3446 char var31 /* : Char */;
3447 char* var33 /* : NativeString */;
3448 var2 = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
3449 var3 = 0;
3450 { /* Inline kernel#Int#> (var2,var3) */
3451 /* Covariant cast for argument 0 (i) <var3:Int> isa OTHER */
3452 /* <var3:Int> isa OTHER */
3453 var6 = 1; /* easy <var3:Int> isa OTHER*/
3454 if (!var6) {
3455 var_class_name = type_kernel__Int.name;
3456 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3457 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
3458 show_backtrace(1);
3459 }
3460 var7 = var2 > var3;
3461 var4 = var7;
3462 goto RET_LABEL5;
3463 RET_LABEL5:(void)0;
3464 }
3465 var_ = var4;
3466 if (var4){
3467 var1 = var_;
3468 } else {
3469 var8 = self->attrs[COLOR_string__String___index_to].l; /* _index_to on <self:String> */
3470 var9 = ((char* (*)(val*))(self->class->vft[COLOR_string__AbstractString__items]))(self) /* items on <self:String>*/;
3471 var10 = string__NativeString__cstring_length(var9);
3472 var11 = 1;
3473 { /* Inline kernel#Int#- (var10,var11) */
3474 var14 = var10 - var11;
3475 var12 = var14;
3476 goto RET_LABEL13;
3477 RET_LABEL13:(void)0;
3478 }
3479 { /* Inline kernel#Int#!= (var8,var12) */
3480 var17 = var8 == var12;
3481 var18 = !var17;
3482 var15 = var18;
3483 goto RET_LABEL16;
3484 RET_LABEL16:(void)0;
3485 }
3486 var1 = var15;
3487 }
3488 if (var1){
3489 var19 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
3490 var20 = 1;
3491 { /* Inline kernel#Int#+ (var19,var20) */
3492 var23 = var19 + var20;
3493 var21 = var23;
3494 goto RET_LABEL22;
3495 RET_LABEL22:(void)0;
3496 }
3497 var24 = ((char* (*)(val*, long))(self->class->vft[COLOR_string__StringCapable__calloc_string]))(self, var21) /* calloc_string on <self:String>*/;
3498 var_newItems = var24;
3499 var25 = ((char* (*)(val*))(self->class->vft[COLOR_string__AbstractString__items]))(self) /* items on <self:String>*/;
3500 var26 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
3501 var27 = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
3502 var28 = 0;
3503 { /* Inline string#NativeString#copy_to (var25,var_newItems,var26,var27,var28) */
3504 memcpy(var_newItems+var28,var25+var27,var26);
3505 RET_LABEL29:(void)0;
3506 }
3507 var30 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:String>*/;
3508 var31 = '\0';
3509 { /* Inline string#NativeString#[]= (var_newItems,var30,var31) */
3510 var_newItems[var30]=var31;
3511 RET_LABEL32:(void)0;
3512 }
3513 var = var_newItems;
3514 goto RET_LABEL;
3515 } else {
3516 }
3517 var33 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
3518 var = var33;
3519 goto RET_LABEL;
3520 RET_LABEL:;
3521 return var;
3522 }
3523 /* method string#String#to_cstring for (self: Object): NativeString */
3524 char* VIRTUAL_string__String__to_cstring(val* self) {
3525 char* var /* : NativeString */;
3526 char* var1 /* : NativeString */;
3527 var1 = string__String__to_cstring(self);
3528 var = var1;
3529 RET_LABEL:;
3530 return var;
3531 }
3532 /* method string#String#== for (self: String, nullable Object): Bool */
3533 short int string__String___61d_61d(val* self, val* p0) {
3534 short int var /* : Bool */;
3535 val* var_other /* var other: nullable Object */;
3536 short int var1 /* : Bool */;
3537 int cltype;
3538 int idtype;
3539 short int var2 /* : Bool */;
3540 short int var3 /* : Bool */;
3541 long var4 /* : Int */;
3542 long var5 /* : Int */;
3543 short int var6 /* : Bool */;
3544 short int var8 /* : Bool */;
3545 short int var9 /* : Bool */;
3546 long var10 /* : Int */;
3547 long var_my_length /* var my_length: Int */;
3548 long var11 /* : Int */;
3549 short int var12 /* : Bool */;
3550 short int var14 /* : Bool */;
3551 short int var15 /* : Bool */;
3552 short int var16 /* : Bool */;
3553 long var17 /* : Int */;
3554 long var_my_index /* var my_index: Int */;
3555 long var18 /* : Int */;
3556 long var_its_index /* var its_index: Int */;
3557 long var19 /* : Int */;
3558 long var21 /* : Int */;
3559 long var_last_iteration /* var last_iteration: Int */;
3560 char* var22 /* : NativeString */;
3561 char* var_itsitems /* var itsitems: NativeString */;
3562 char* var23 /* : NativeString */;
3563 char* var_myitems /* var myitems: NativeString */;
3564 short int var24 /* : Bool */;
3565 short int var26 /* : Bool */;
3566 int cltype27;
3567 int idtype28;
3568 const char* var_class_name;
3569 short int var29 /* : Bool */;
3570 char var30 /* : Char */;
3571 char var32 /* : Char */;
3572 char var33 /* : Char */;
3573 char var35 /* : Char */;
3574 short int var36 /* : Bool */;
3575 short int var38 /* : Bool */;
3576 short int var39 /* : Bool */;
3577 short int var40 /* : Bool */;
3578 long var41 /* : Int */;
3579 long var42 /* : Int */;
3580 long var44 /* : Int */;
3581 long var45 /* : Int */;
3582 long var46 /* : Int */;
3583 long var48 /* : Int */;
3584 short int var49 /* : Bool */;
3585 var_other = p0;
3586 /* <var_other:nullable Object> isa String */
3587 cltype = type_string__String.color;
3588 idtype = type_string__String.id;
3589 if(var_other == NULL) {
3590 var1 = 0;
3591 } else {
3592 if(cltype >= var_other->type->table_size) {
3593 var1 = 0;
3594 } else {
3595 var1 = var_other->type->type_table[cltype] == idtype;
3596 }
3597 }
3598 var2 = !var1;
3599 if (var2){
3600 var3 = 0;
3601 var = var3;
3602 goto RET_LABEL;
3603 } else {
3604 }
3605 var4 = ((long (*)(val*))(self->class->vft[COLOR_kernel__Object__object_id]))(self) /* object_id on <self:String>*/;
3606 var5 = ((long (*)(val*))(var_other->class->vft[COLOR_kernel__Object__object_id]))(var_other) /* object_id on <var_other:nullable Object(String)>*/;
3607 { /* Inline kernel#Int#== (var4,var5) */
3608 var8 = var4 == var5;
3609 var6 = var8;
3610 goto RET_LABEL7;
3611 RET_LABEL7:(void)0;
3612 }
3613 if (var6){
3614 var9 = 1;
3615 var = var9;
3616 goto RET_LABEL;
3617 } else {
3618 }
3619 var10 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
3620 var_my_length = var10;
3621 var11 = var_other->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_other:nullable Object(String)> */
3622 { /* Inline kernel#Int#!= (var11,var_my_length) */
3623 var14 = var11 == var_my_length;
3624 var15 = !var14;
3625 var12 = var15;
3626 goto RET_LABEL13;
3627 RET_LABEL13:(void)0;
3628 }
3629 if (var12){
3630 var16 = 0;
3631 var = var16;
3632 goto RET_LABEL;
3633 } else {
3634 }
3635 var17 = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
3636 var_my_index = var17;
3637 var18 = var_other->attrs[COLOR_string__String___index_from].l; /* _index_from on <var_other:nullable Object(String)> */
3638 var_its_index = var18;
3639 { /* Inline kernel#Int#+ (var_my_index,var_my_length) */
3640 var21 = var_my_index + var_my_length;
3641 var19 = var21;
3642 goto RET_LABEL20;
3643 RET_LABEL20:(void)0;
3644 }
3645 var_last_iteration = var19;
3646 var22 = var_other->attrs[COLOR_string__AbstractString___items].str; /* _items on <var_other:nullable Object(String)> */
3647 var_itsitems = var22;
3648 var23 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
3649 var_myitems = var23;
3650 for(;;) {
3651 { /* Inline kernel#Int#< (var_my_index,var_last_iteration) */
3652 /* Covariant cast for argument 0 (i) <var_last_iteration:Int> isa OTHER */
3653 /* <var_last_iteration:Int> isa OTHER */
3654 var26 = 1; /* easy <var_last_iteration:Int> isa OTHER*/
3655 if (!var26) {
3656 var_class_name = type_kernel__Int.name;
3657 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3658 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
3659 show_backtrace(1);
3660 }
3661 var29 = var_my_index < var_last_iteration;
3662 var24 = var29;
3663 goto RET_LABEL25;
3664 RET_LABEL25:(void)0;
3665 }
3666 if (!var24) break;
3667 { /* Inline string#NativeString#[] (var_myitems,var_my_index) */
3668 var32 = var_myitems[var_my_index];
3669 var30 = var32;
3670 goto RET_LABEL31;
3671 RET_LABEL31:(void)0;
3672 }
3673 { /* Inline string#NativeString#[] (var_itsitems,var_its_index) */
3674 var35 = var_itsitems[var_its_index];
3675 var33 = var35;
3676 goto RET_LABEL34;
3677 RET_LABEL34:(void)0;
3678 }
3679 { /* Inline kernel#Char#!= (var30,var33) */
3680 var38 = var30 == var33;
3681 var39 = !var38;
3682 var36 = var39;
3683 goto RET_LABEL37;
3684 RET_LABEL37:(void)0;
3685 }
3686 if (var36){
3687 var40 = 0;
3688 var = var40;
3689 goto RET_LABEL;
3690 } else {
3691 }
3692 var41 = 1;
3693 { /* Inline kernel#Int#+ (var_my_index,var41) */
3694 var44 = var_my_index + var41;
3695 var42 = var44;
3696 goto RET_LABEL43;
3697 RET_LABEL43:(void)0;
3698 }
3699 var_my_index = var42;
3700 var45 = 1;
3701 { /* Inline kernel#Int#+ (var_its_index,var45) */
3702 var48 = var_its_index + var45;
3703 var46 = var48;
3704 goto RET_LABEL47;
3705 RET_LABEL47:(void)0;
3706 }
3707 var_its_index = var46;
3708 CONTINUE_label: (void)0;
3709 }
3710 BREAK_label: (void)0;
3711 var49 = 1;
3712 var = var49;
3713 goto RET_LABEL;
3714 RET_LABEL:;
3715 return var;
3716 }
3717 /* method string#String#== for (self: Object, nullable Object): Bool */
3718 short int VIRTUAL_string__String___61d_61d(val* self, val* p0) {
3719 short int var /* : Bool */;
3720 short int var1 /* : Bool */;
3721 var1 = string__String___61d_61d(self, p0);
3722 var = var1;
3723 RET_LABEL:;
3724 return var;
3725 }
3726 /* method string#String#< for (self: String, String): Bool */
3727 short int string__String___60d(val* self, val* p0) {
3728 short int var /* : Bool */;
3729 short int var1 /* : Bool */;
3730 int cltype;
3731 int idtype;
3732 const struct type* type_struct;
3733 const char* var_class_name;
3734 val* var_other /* var other: String */;
3735 long var2 /* : Int */;
3736 long var3 /* : Int */;
3737 short int var4 /* : Bool */;
3738 short int var6 /* : Bool */;
3739 short int var7 /* : Bool */;
3740 long var8 /* : Int */;
3741 long var_curr_id_self /* var curr_id_self: Int */;
3742 long var9 /* : Int */;
3743 long var_curr_id_other /* var curr_id_other: Int */;
3744 char* var10 /* : NativeString */;
3745 char* var_my_items /* var my_items: NativeString */;
3746 char* var11 /* : NativeString */;
3747 char* var_its_items /* var its_items: NativeString */;
3748 long var12 /* : Int */;
3749 long var_my_length /* var my_length: Int */;
3750 long var13 /* : Int */;
3751 long var_its_length /* var its_length: Int */;
3752 long var14 /* : Int */;
3753 long var16 /* : Int */;
3754 long var_max_iterations /* var max_iterations: Int */;
3755 short int var17 /* : Bool */;
3756 short int var19 /* : Bool */;
3757 int cltype20;
3758 int idtype21;
3759 const char* var_class_name22;
3760 short int var23 /* : Bool */;
3761 char var24 /* : Char */;
3762 char var26 /* : Char */;
3763 char var_my_curr_char /* var my_curr_char: Char */;
3764 char var27 /* : Char */;
3765 char var29 /* : Char */;
3766 char var_its_curr_char /* var its_curr_char: Char */;
3767 short int var30 /* : Bool */;
3768 short int var32 /* : Bool */;
3769 short int var33 /* : Bool */;
3770 short int var34 /* : Bool */;
3771 short int var36 /* : Bool */;
3772 int cltype37;
3773 int idtype38;
3774 const char* var_class_name39;
3775 short int var40 /* : Bool */;
3776 short int var41 /* : Bool */;
3777 short int var42 /* : Bool */;
3778 long var43 /* : Int */;
3779 long var44 /* : Int */;
3780 long var46 /* : Int */;
3781 long var47 /* : Int */;
3782 long var48 /* : Int */;
3783 long var50 /* : Int */;
3784 short int var51 /* : Bool */;
3785 short int var53 /* : Bool */;
3786 int cltype54;
3787 int idtype55;
3788 const char* var_class_name56;
3789 short int var57 /* : Bool */;
3790 /* Covariant cast for argument 0 (other) <p0:String> isa OTHER */
3791 /* <p0:String> isa OTHER */
3792 type_struct = self->type->resolution_table->types[COLOR_kernel__Comparable_VTOTHER];
3793 cltype = type_struct->color;
3794 idtype = type_struct->id;
3795 if(cltype >= p0->type->table_size) {
3796 var1 = 0;
3797 } else {
3798 var1 = p0->type->type_table[cltype] == idtype;
3799 }
3800 if (!var1) {
3801 var_class_name = p0 == NULL ? "null" : p0->type->name;
3802 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3803 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 571);
3804 show_backtrace(1);
3805 }
3806 var_other = p0;
3807 var2 = ((long (*)(val*))(self->class->vft[COLOR_kernel__Object__object_id]))(self) /* object_id on <self:String>*/;
3808 var3 = ((long (*)(val*))(var_other->class->vft[COLOR_kernel__Object__object_id]))(var_other) /* object_id on <var_other:String>*/;
3809 { /* Inline kernel#Int#== (var2,var3) */
3810 var6 = var2 == var3;
3811 var4 = var6;
3812 goto RET_LABEL5;
3813 RET_LABEL5:(void)0;
3814 }
3815 if (var4){
3816 var7 = 0;
3817 var = var7;
3818 goto RET_LABEL;
3819 } else {
3820 }
3821 var8 = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
3822 var_curr_id_self = var8;
3823 var9 = var_other->attrs[COLOR_string__String___index_from].l; /* _index_from on <var_other:String> */
3824 var_curr_id_other = var9;
3825 var10 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
3826 var_my_items = var10;
3827 var11 = var_other->attrs[COLOR_string__AbstractString___items].str; /* _items on <var_other:String> */
3828 var_its_items = var11;
3829 var12 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
3830 var_my_length = var12;
3831 var13 = var_other->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_other:String> */
3832 var_its_length = var13;
3833 { /* Inline kernel#Int#+ (var_curr_id_self,var_my_length) */
3834 var16 = var_curr_id_self + var_my_length;
3835 var14 = var16;
3836 goto RET_LABEL15;
3837 RET_LABEL15:(void)0;
3838 }
3839 var_max_iterations = var14;
3840 for(;;) {
3841 { /* Inline kernel#Int#< (var_curr_id_self,var_max_iterations) */
3842 /* Covariant cast for argument 0 (i) <var_max_iterations:Int> isa OTHER */
3843 /* <var_max_iterations:Int> isa OTHER */
3844 var19 = 1; /* easy <var_max_iterations:Int> isa OTHER*/
3845 if (!var19) {
3846 var_class_name22 = type_kernel__Int.name;
3847 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name22);
3848 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
3849 show_backtrace(1);
3850 }
3851 var23 = var_curr_id_self < var_max_iterations;
3852 var17 = var23;
3853 goto RET_LABEL18;
3854 RET_LABEL18:(void)0;
3855 }
3856 if (!var17) break;
3857 { /* Inline string#NativeString#[] (var_my_items,var_curr_id_self) */
3858 var26 = var_my_items[var_curr_id_self];
3859 var24 = var26;
3860 goto RET_LABEL25;
3861 RET_LABEL25:(void)0;
3862 }
3863 var_my_curr_char = var24;
3864 { /* Inline string#NativeString#[] (var_its_items,var_curr_id_other) */
3865 var29 = var_its_items[var_curr_id_other];
3866 var27 = var29;
3867 goto RET_LABEL28;
3868 RET_LABEL28:(void)0;
3869 }
3870 var_its_curr_char = var27;
3871 { /* Inline kernel#Char#!= (var_my_curr_char,var_its_curr_char) */
3872 var32 = var_my_curr_char == var_its_curr_char;
3873 var33 = !var32;
3874 var30 = var33;
3875 goto RET_LABEL31;
3876 RET_LABEL31:(void)0;
3877 }
3878 if (var30){
3879 { /* Inline kernel#Char#< (var_my_curr_char,var_its_curr_char) */
3880 /* Covariant cast for argument 0 (i) <var_its_curr_char:Char> isa OTHER */
3881 /* <var_its_curr_char:Char> isa OTHER */
3882 var36 = 1; /* easy <var_its_curr_char:Char> isa OTHER*/
3883 if (!var36) {
3884 var_class_name39 = type_kernel__Char.name;
3885 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name39);
3886 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 437);
3887 show_backtrace(1);
3888 }
3889 var40 = var_my_curr_char < var_its_curr_char;
3890 var34 = var40;
3891 goto RET_LABEL35;
3892 RET_LABEL35:(void)0;
3893 }
3894 if (var34){
3895 var41 = 1;
3896 var = var41;
3897 goto RET_LABEL;
3898 } else {
3899 }
3900 var42 = 0;
3901 var = var42;
3902 goto RET_LABEL;
3903 } else {
3904 }
3905 var43 = 1;
3906 { /* Inline kernel#Int#+ (var_curr_id_self,var43) */
3907 var46 = var_curr_id_self + var43;
3908 var44 = var46;
3909 goto RET_LABEL45;
3910 RET_LABEL45:(void)0;
3911 }
3912 var_curr_id_self = var44;
3913 var47 = 1;
3914 { /* Inline kernel#Int#+ (var_curr_id_other,var47) */
3915 var50 = var_curr_id_other + var47;
3916 var48 = var50;
3917 goto RET_LABEL49;
3918 RET_LABEL49:(void)0;
3919 }
3920 var_curr_id_other = var48;
3921 CONTINUE_label: (void)0;
3922 }
3923 BREAK_label: (void)0;
3924 { /* Inline kernel#Int#< (var_my_length,var_its_length) */
3925 /* Covariant cast for argument 0 (i) <var_its_length:Int> isa OTHER */
3926 /* <var_its_length:Int> isa OTHER */
3927 var53 = 1; /* easy <var_its_length:Int> isa OTHER*/
3928 if (!var53) {
3929 var_class_name56 = type_kernel__Int.name;
3930 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name56);
3931 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
3932 show_backtrace(1);
3933 }
3934 var57 = var_my_length < var_its_length;
3935 var51 = var57;
3936 goto RET_LABEL52;
3937 RET_LABEL52:(void)0;
3938 }
3939 var = var51;
3940 goto RET_LABEL;
3941 RET_LABEL:;
3942 return var;
3943 }
3944 /* method string#String#< for (self: Object, Comparable): Bool */
3945 short int VIRTUAL_string__String___60d(val* self, val* p0) {
3946 short int var /* : Bool */;
3947 short int var1 /* : Bool */;
3948 var1 = string__String___60d(self, p0);
3949 var = var1;
3950 RET_LABEL:;
3951 return var;
3952 }
3953 /* method string#String#+ for (self: String, String): String */
3954 val* string__String___43d(val* self, val* p0) {
3955 val* var /* : String */;
3956 val* var_s /* var s: String */;
3957 long var1 /* : Int */;
3958 long var_my_length /* var my_length: Int */;
3959 long var2 /* : Int */;
3960 long var_its_length /* var its_length: Int */;
3961 long var3 /* : Int */;
3962 long var5 /* : Int */;
3963 long var_total_length /* var total_length: Int */;
3964 long var6 /* : Int */;
3965 long var8 /* : Int */;
3966 long var9 /* : Int */;
3967 long var10 /* : Int */;
3968 long var12 /* : Int */;
3969 char* var13 /* : NativeString */;
3970 char* var_target_string /* var target_string: NativeString */;
3971 char* var14 /* : NativeString */;
3972 long var15 /* : Int */;
3973 long var16 /* : Int */;
3974 char* var18 /* : NativeString */;
3975 long var19 /* : Int */;
3976 char var21 /* : Char */;
3977 val* var23 /* : String */;
3978 var_s = p0;
3979 var1 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
3980 var_my_length = var1;
3981 var2 = var_s->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_s:String> */
3982 var_its_length = var2;
3983 { /* Inline kernel#Int#+ (var_my_length,var_its_length) */
3984 var5 = var_my_length + var_its_length;
3985 var3 = var5;
3986 goto RET_LABEL4;
3987 RET_LABEL4:(void)0;
3988 }
3989 var_total_length = var3;
3990 { /* Inline kernel#Int#+ (var_my_length,var_its_length) */
3991 var8 = var_my_length + var_its_length;
3992 var6 = var8;
3993 goto RET_LABEL7;
3994 RET_LABEL7:(void)0;
3995 }
3996 var9 = 1;
3997 { /* Inline kernel#Int#+ (var6,var9) */
3998 var12 = var6 + var9;
3999 var10 = var12;
4000 goto RET_LABEL11;
4001 RET_LABEL11:(void)0;
4002 }
4003 var13 = ((char* (*)(val*, long))(self->class->vft[COLOR_string__StringCapable__calloc_string]))(self, var10) /* calloc_string on <self:String>*/;
4004 var_target_string = var13;
4005 var14 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
4006 var15 = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
4007 var16 = 0;
4008 { /* Inline string#NativeString#copy_to (var14,var_target_string,var_my_length,var15,var16) */
4009 memcpy(var_target_string+var16,var14+var15,var_my_length);
4010 RET_LABEL17:(void)0;
4011 }
4012 var18 = var_s->attrs[COLOR_string__AbstractString___items].str; /* _items on <var_s:String> */
4013 var19 = var_s->attrs[COLOR_string__String___index_from].l; /* _index_from on <var_s:String> */
4014 { /* Inline string#NativeString#copy_to (var18,var_target_string,var_its_length,var19,var_my_length) */
4015 memcpy(var_target_string+var_my_length,var18+var19,var_its_length);
4016 RET_LABEL20:(void)0;
4017 }
4018 var21 = '\0';
4019 { /* Inline string#NativeString#[]= (var_target_string,var_total_length,var21) */
4020 var_target_string[var_total_length]=var21;
4021 RET_LABEL22:(void)0;
4022 }
4023 var23 = string__NativeString__to_s_with_length(var_target_string, var_total_length);
4024 var = var23;
4025 goto RET_LABEL;
4026 RET_LABEL:;
4027 return var;
4028 }
4029 /* method string#String#+ for (self: Object, String): String */
4030 val* VIRTUAL_string__String___43d(val* self, val* p0) {
4031 val* var /* : String */;
4032 val* var1 /* : String */;
4033 var1 = string__String___43d(self, p0);
4034 var = var1;
4035 RET_LABEL:;
4036 return var;
4037 }
4038 /* method string#String#* for (self: String, Int): String */
4039 val* string__String___42d(val* self, long p0) {
4040 val* var /* : String */;
4041 long var_i /* var i: Int */;
4042 long var1 /* : Int */;
4043 short int var2 /* : Bool */;
4044 short int var4 /* : Bool */;
4045 int cltype;
4046 int idtype;
4047 const char* var_class_name;
4048 short int var5 /* : Bool */;
4049 long var6 /* : Int */;
4050 long var_my_length /* var my_length: Int */;
4051 long var7 /* : Int */;
4052 long var9 /* : Int */;
4053 long var_final_length /* var final_length: Int */;
4054 char* var10 /* : NativeString */;
4055 char* var_my_items /* var my_items: NativeString */;
4056 long var11 /* : Int */;
4057 long var12 /* : Int */;
4058 long var14 /* : Int */;
4059 char* var15 /* : NativeString */;
4060 char* var_target_string /* var target_string: NativeString */;
4061 char var16 /* : Char */;
4062 long var18 /* : Int */;
4063 long var_current_last /* var current_last: Int */;
4064 val* var19 /* : Range[Int] */;
4065 long var20 /* : Int */;
4066 val* var21 /* : Discrete */;
4067 val* var22 /* : Discrete */;
4068 val* var23 /* : Iterator[nullable Object] */;
4069 short int var24 /* : Bool */;
4070 val* var25 /* : nullable Object */;
4071 long var_iteration /* var iteration: Int */;
4072 long var26 /* : Int */;
4073 long var27 /* : Int */;
4074 long var29 /* : Int */;
4075 long var31 /* : Int */;
4076 val* var32 /* : String */;
4077 var_i = p0;
4078 var1 = 0;
4079 { /* Inline kernel#Int#>= (var_i,var1) */
4080 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
4081 /* <var1:Int> isa OTHER */
4082 var4 = 1; /* easy <var1:Int> isa OTHER*/
4083 if (!var4) {
4084 var_class_name = type_kernel__Int.name;
4085 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
4086 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
4087 show_backtrace(1);
4088 }
4089 var5 = var_i >= var1;
4090 var2 = var5;
4091 goto RET_LABEL3;
4092 RET_LABEL3:(void)0;
4093 }
4094 if (!var2) {
4095 fprintf(stderr, "Runtime error: %s", "Assert failed");
4096 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 635);
4097 show_backtrace(1);
4098 }
4099 var6 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
4100 var_my_length = var6;
4101 { /* Inline kernel#Int#* (var_my_length,var_i) */
4102 var9 = var_my_length * var_i;
4103 var7 = var9;
4104 goto RET_LABEL8;
4105 RET_LABEL8:(void)0;
4106 }
4107 var_final_length = var7;
4108 var10 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
4109 var_my_items = var10;
4110 var11 = 1;
4111 { /* Inline kernel#Int#+ (var_final_length,var11) */
4112 var14 = var_final_length + var11;
4113 var12 = var14;
4114 goto RET_LABEL13;
4115 RET_LABEL13:(void)0;
4116 }
4117 var15 = ((char* (*)(val*, long))(self->class->vft[COLOR_string__StringCapable__calloc_string]))(self, var12) /* calloc_string on <self:String>*/;
4118 var_target_string = var15;
4119 var16 = '\0';
4120 { /* Inline string#NativeString#[]= (var_target_string,var_final_length,var16) */
4121 var_target_string[var_final_length]=var16;
4122 RET_LABEL17:(void)0;
4123 }
4124 var18 = 0;
4125 var_current_last = var18;
4126 var19 = NEW_range__Range(&type_range__Rangekernel__Int);
4127 var20 = 1;
4128 var21 = BOX_kernel__Int(var20); /* autobox from Int to Discrete */
4129 var22 = BOX_kernel__Int(var_i); /* autobox from Int to Discrete */
4130 ((void (*)(val*, val*, val*))(var19->class->vft[COLOR_range__Range__init]))(var19, var21, var22) /* init on <var19:Range[Int]>*/;
4131 var23 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_collection__Collection__iterator]))(var19) /* iterator on <var19:Range[Int]>*/;
4132 for(;;) {
4133 var24 = ((short int (*)(val*))(var23->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var23) /* is_ok on <var23:Iterator[nullable Object]>*/;
4134 if(!var24) break;
4135 var25 = ((val* (*)(val*))(var23->class->vft[COLOR_abstract_collection__Iterator__item]))(var23) /* item on <var23:Iterator[nullable Object]>*/;
4136 var26 = ((struct instance_kernel__Int*)var25)->value; /* autounbox from nullable Object to Int */;
4137 var_iteration = var26;
4138 var27 = 0;
4139 { /* Inline string#NativeString#copy_to (var_my_items,var_target_string,var_my_length,var27,var_current_last) */
4140 memcpy(var_target_string+var_current_last,var_my_items+var27,var_my_length);
4141 RET_LABEL28:(void)0;
4142 }
4143 { /* Inline kernel#Int#+ (var_current_last,var_my_length) */
4144 var31 = var_current_last + var_my_length;
4145 var29 = var31;
4146 goto RET_LABEL30;
4147 RET_LABEL30:(void)0;
4148 }
4149 var_current_last = var29;
4150 CONTINUE_label: (void)0;
4151 ((void (*)(val*))(var23->class->vft[COLOR_abstract_collection__Iterator__next]))(var23) /* next on <var23:Iterator[nullable Object]>*/;
4152 }
4153 BREAK_label: (void)0;
4154 var32 = string__NativeString__to_s_with_length(var_target_string, var_final_length);
4155 var = var32;
4156 goto RET_LABEL;
4157 RET_LABEL:;
4158 return var;
4159 }
4160 /* method string#String#* for (self: Object, Int): String */
4161 val* VIRTUAL_string__String___42d(val* self, long p0) {
4162 val* var /* : String */;
4163 val* var1 /* : String */;
4164 var1 = string__String___42d(self, p0);
4165 var = var1;
4166 RET_LABEL:;
4167 return var;
4168 }
4169 /* method string#String#to_s for (self: String): String */
4170 val* string__String__to_s(val* self) {
4171 val* var /* : String */;
4172 var = self;
4173 goto RET_LABEL;
4174 RET_LABEL:;
4175 return var;
4176 }
4177 /* method string#String#to_s for (self: Object): String */
4178 val* VIRTUAL_string__String__to_s(val* self) {
4179 val* var /* : String */;
4180 val* var1 /* : String */;
4181 var1 = string__String__to_s(self);
4182 var = var1;
4183 RET_LABEL:;
4184 return var;
4185 }
4186 /* method string#String#hash for (self: String): Int */
4187 long string__String__hash(val* self) {
4188 long var /* : Int */;
4189 long var1 /* : Int */;
4190 long var_h /* var h: Int */;
4191 long var2 /* : Int */;
4192 long var3 /* : Int */;
4193 long var4 /* : Int */;
4194 long var6 /* : Int */;
4195 long var_i /* var i: Int */;
4196 char* var7 /* : NativeString */;
4197 char* var_myitems /* var myitems: NativeString */;
4198 long var8 /* : Int */;
4199 long var_strStart /* var strStart: Int */;
4200 long var9 /* : Int */;
4201 long var11 /* : Int */;
4202 short int var12 /* : Bool */;
4203 short int var14 /* : Bool */;
4204 int cltype;
4205 int idtype;
4206 const char* var_class_name;
4207 short int var15 /* : Bool */;
4208 long var16 /* : Int */;
4209 long var17 /* : Int */;
4210 long var19 /* : Int */;
4211 long var20 /* : Int */;
4212 long var22 /* : Int */;
4213 char* var23 /* : NativeString */;
4214 char var24 /* : Char */;
4215 char var26 /* : Char */;
4216 long var27 /* : Int */;
4217 long var29 /* : Int */;
4218 long var30 /* : Int */;
4219 long var32 /* : Int */;
4220 long var33 /* : Int */;
4221 long var34 /* : Int */;
4222 long var36 /* : Int */;
4223 var1 = 5381;
4224 var_h = var1;
4225 var2 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
4226 var3 = 1;
4227 { /* Inline kernel#Int#- (var2,var3) */
4228 var6 = var2 - var3;
4229 var4 = var6;
4230 goto RET_LABEL5;
4231 RET_LABEL5:(void)0;
4232 }
4233 var_i = var4;
4234 var7 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
4235 var_myitems = var7;
4236 var8 = self->attrs[COLOR_string__String___index_from].l; /* _index_from on <self:String> */
4237 var_strStart = var8;
4238 { /* Inline kernel#Int#+ (var_i,var_strStart) */
4239 var11 = var_i + var_strStart;
4240 var9 = var11;
4241 goto RET_LABEL10;
4242 RET_LABEL10:(void)0;
4243 }
4244 var_i = var9;
4245 for(;;) {
4246 { /* Inline kernel#Int#>= (var_i,var_strStart) */
4247 /* Covariant cast for argument 0 (i) <var_strStart:Int> isa OTHER */
4248 /* <var_strStart:Int> isa OTHER */
4249 var14 = 1; /* easy <var_strStart:Int> isa OTHER*/
4250 if (!var14) {
4251 var_class_name = type_kernel__Int.name;
4252 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
4253 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
4254 show_backtrace(1);
4255 }
4256 var15 = var_i >= var_strStart;
4257 var12 = var15;
4258 goto RET_LABEL13;
4259 RET_LABEL13:(void)0;
4260 }
4261 if (!var12) break;
4262 var16 = 32;
4263 { /* Inline kernel#Int#* (var_h,var16) */
4264 var19 = var_h * var16;
4265 var17 = var19;
4266 goto RET_LABEL18;
4267 RET_LABEL18:(void)0;
4268 }
4269 { /* Inline kernel#Int#+ (var17,var_h) */
4270 var22 = var17 + var_h;
4271 var20 = var22;
4272 goto RET_LABEL21;
4273 RET_LABEL21:(void)0;
4274 }
4275 var23 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:String> */
4276 { /* Inline string#NativeString#[] (var23,var_i) */
4277 var26 = var23[var_i];
4278 var24 = var26;
4279 goto RET_LABEL25;
4280 RET_LABEL25:(void)0;
4281 }
4282 { /* Inline kernel#Char#ascii (var24) */
4283 var29 = (unsigned char)var24;
4284 var27 = var29;
4285 goto RET_LABEL28;
4286 RET_LABEL28:(void)0;
4287 }
4288 { /* Inline kernel#Int#+ (var20,var27) */
4289 var32 = var20 + var27;
4290 var30 = var32;
4291 goto RET_LABEL31;
4292 RET_LABEL31:(void)0;
4293 }
4294 var_h = var30;
4295 var33 = 1;
4296 { /* Inline kernel#Int#- (var_i,var33) */
4297 var36 = var_i - var33;
4298 var34 = var36;
4299 goto RET_LABEL35;
4300 RET_LABEL35:(void)0;
4301 }
4302 var_i = var34;
4303 CONTINUE_label: (void)0;
4304 }
4305 BREAK_label: (void)0;
4306 var = var_h;
4307 goto RET_LABEL;
4308 RET_LABEL:;
4309 return var;
4310 }
4311 /* method string#String#hash for (self: Object): Int */
4312 long VIRTUAL_string__String__hash(val* self) {
4313 long var /* : Int */;
4314 long var1 /* : Int */;
4315 var1 = string__String__hash(self);
4316 var = var1;
4317 RET_LABEL:;
4318 return var;
4319 }
4320 /* method string#Buffer#[]= for (self: Buffer, Int, Char) */
4321 void string__Buffer___91d_93d_61d(val* self, long p0, char p1) {
4322 short int var /* : Bool */;
4323 int cltype;
4324 int idtype;
4325 const char* var_class_name;
4326 long var_index /* var index: Int */;
4327 char var_item /* var item: Char */;
4328 long var1 /* : Int */;
4329 short int var2 /* : Bool */;
4330 short int var4 /* : Bool */;
4331 val* var5 /* : nullable Object */;
4332 short int var6 /* : Bool */;
4333 long var7 /* : Int */;
4334 short int var8 /* : Bool */;
4335 short int var10 /* : Bool */;
4336 int cltype11;
4337 int idtype12;
4338 const char* var_class_name13;
4339 short int var14 /* : Bool */;
4340 short int var_ /* var : Bool */;
4341 long var15 /* : Int */;
4342 short int var16 /* : Bool */;
4343 short int var18 /* : Bool */;
4344 int cltype19;
4345 int idtype20;
4346 const char* var_class_name21;
4347 short int var22 /* : Bool */;
4348 char* var23 /* : NativeString */;
4349 /* Covariant cast for argument 1 (item) <p1:Char> isa Sequence#0 */
4350 /* <p1:Char> isa Sequence#0 */
4351 var = 1; /* easy <p1:Char> isa Sequence#0*/
4352 if (!var) {
4353 var_class_name = type_kernel__Char.name;
4354 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Sequence#0", var_class_name);
4355 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 688);
4356 show_backtrace(1);
4357 }
4358 var_index = p0;
4359 var_item = p1;
4360 var1 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:Buffer>*/;
4361 { /* Inline kernel#Int#== (var_index,var1) */
4362 var4 = var_index == var1;
4363 var2 = var4;
4364 goto RET_LABEL3;
4365 RET_LABEL3:(void)0;
4366 }
4367 if (var2){
4368 var5 = BOX_kernel__Char(var_item); /* autobox from Char to nullable Object */
4369 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(self, var5) /* add on <self:Buffer>*/;
4370 goto RET_LABEL;
4371 } else {
4372 }
4373 var7 = 0;
4374 { /* Inline kernel#Int#>= (var_index,var7) */
4375 /* Covariant cast for argument 0 (i) <var7:Int> isa OTHER */
4376 /* <var7:Int> isa OTHER */
4377 var10 = 1; /* easy <var7:Int> isa OTHER*/
4378 if (!var10) {
4379 var_class_name13 = type_kernel__Int.name;
4380 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
4381 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
4382 show_backtrace(1);
4383 }
4384 var14 = var_index >= var7;
4385 var8 = var14;
4386 goto RET_LABEL9;
4387 RET_LABEL9:(void)0;
4388 }
4389 var_ = var8;
4390 if (var8){
4391 var15 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:Buffer>*/;
4392 { /* Inline kernel#Int#< (var_index,var15) */
4393 /* Covariant cast for argument 0 (i) <var15:Int> isa OTHER */
4394 /* <var15:Int> isa OTHER */
4395 var18 = 1; /* easy <var15:Int> isa OTHER*/
4396 if (!var18) {
4397 var_class_name21 = type_kernel__Int.name;
4398 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name21);
4399 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
4400 show_backtrace(1);
4401 }
4402 var22 = var_index < var15;
4403 var16 = var22;
4404 goto RET_LABEL17;
4405 RET_LABEL17:(void)0;
4406 }
4407 var6 = var16;
4408 } else {
4409 var6 = var_;
4410 }
4411 if (!var6) {
4412 fprintf(stderr, "Runtime error: %s", "Assert failed");
4413 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 694);
4414 show_backtrace(1);
4415 }
4416 var23 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:Buffer> */
4417 { /* Inline string#NativeString#[]= (var23,var_index,var_item) */
4418 var23[var_index]=var_item;
4419 RET_LABEL24:(void)0;
4420 }
4421 RET_LABEL:;
4422 }
4423 /* method string#Buffer#[]= for (self: Object, Int, nullable Object) */
4424 void VIRTUAL_string__Buffer___91d_93d_61d(val* self, long p0, val* p1) {
4425 char var /* : Char */;
4426 var = ((struct instance_kernel__Char*)p1)->value; /* autounbox from nullable Object to Char */;
4427 string__Buffer___91d_93d_61d(self, p0, var);
4428 RET_LABEL:;
4429 }
4430 /* method string#Buffer#add for (self: Buffer, Char) */
4431 void string__Buffer__add(val* self, char p0) {
4432 short int var /* : Bool */;
4433 int cltype;
4434 int idtype;
4435 const char* var_class_name;
4436 char var_c /* var c: Char */;
4437 long var1 /* : Int */;
4438 long var2 /* : Int */;
4439 short int var3 /* : Bool */;
4440 short int var5 /* : Bool */;
4441 int cltype6;
4442 int idtype7;
4443 const char* var_class_name8;
4444 short int var9 /* : Bool */;
4445 long var10 /* : Int */;
4446 long var11 /* : Int */;
4447 long var12 /* : Int */;
4448 long var14 /* : Int */;
4449 char* var15 /* : NativeString */;
4450 long var16 /* : Int */;
4451 val* var_ /* var : Buffer */;
4452 long var18 /* : Int */;
4453 long var19 /* : Int */;
4454 long var20 /* : Int */;
4455 long var22 /* : Int */;
4456 /* Covariant cast for argument 0 (c) <p0:Char> isa SimpleCollection#0 */
4457 /* <p0:Char> isa SimpleCollection#0 */
4458 var = 1; /* easy <p0:Char> isa SimpleCollection#0*/
4459 if (!var) {
4460 var_class_name = type_kernel__Char.name;
4461 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "SimpleCollection#0", var_class_name);
4462 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 698);
4463 show_backtrace(1);
4464 }
4465 var_c = p0;
4466 var1 = self->attrs[COLOR_string__Buffer___capacity].l; /* _capacity on <self:Buffer> */
4467 var2 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:Buffer>*/;
4468 { /* Inline kernel#Int#<= (var1,var2) */
4469 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
4470 /* <var2:Int> isa OTHER */
4471 var5 = 1; /* easy <var2:Int> isa OTHER*/
4472 if (!var5) {
4473 var_class_name8 = type_kernel__Int.name;
4474 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name8);
4475 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
4476 show_backtrace(1);
4477 }
4478 var9 = var1 <= var2;
4479 var3 = var9;
4480 goto RET_LABEL4;
4481 RET_LABEL4:(void)0;
4482 }
4483 if (var3){
4484 var10 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:Buffer>*/;
4485 var11 = 5;
4486 { /* Inline kernel#Int#+ (var10,var11) */
4487 var14 = var10 + var11;
4488 var12 = var14;
4489 goto RET_LABEL13;
4490 RET_LABEL13:(void)0;
4491 }
4492 ((void (*)(val*, long))(self->class->vft[COLOR_array__AbstractArray__enlarge]))(self, var12) /* enlarge on <self:Buffer>*/;
4493 } else {
4494 }
4495 var15 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:Buffer> */
4496 var16 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:Buffer>*/;
4497 { /* Inline string#NativeString#[]= (var15,var16,var_c) */
4498 var15[var16]=var_c;
4499 RET_LABEL17:(void)0;
4500 }
4501 var_ = self;
4502 var18 = var_->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_:Buffer> */
4503 var19 = 1;
4504 { /* Inline kernel#Int#+ (var18,var19) */
4505 var22 = var18 + var19;
4506 var20 = var22;
4507 goto RET_LABEL21;
4508 RET_LABEL21:(void)0;
4509 }
4510 var_->attrs[COLOR_array__AbstractArrayRead___length].l = var20; /* _length on <var_:Buffer> */
4511 RET_LABEL:;
4512 }
4513 /* method string#Buffer#add for (self: Object, nullable Object) */
4514 void VIRTUAL_string__Buffer__add(val* self, val* p0) {
4515 char var /* : Char */;
4516 var = ((struct instance_kernel__Char*)p0)->value; /* autounbox from nullable Object to Char */;
4517 string__Buffer__add(self, var);
4518 RET_LABEL:;
4519 }
4520 /* method string#Buffer#enlarge for (self: Buffer, Int) */
4521 void string__Buffer__enlarge(val* self, long p0) {
4522 long var_cap /* var cap: Int */;
4523 long var /* : Int */;
4524 long var_c /* var c: Int */;
4525 short int var1 /* : Bool */;
4526 short int var3 /* : Bool */;
4527 int cltype;
4528 int idtype;
4529 const char* var_class_name;
4530 short int var4 /* : Bool */;
4531 short int var5 /* : Bool */;
4532 short int var7 /* : Bool */;
4533 int cltype8;
4534 int idtype9;
4535 const char* var_class_name10;
4536 short int var11 /* : Bool */;
4537 long var12 /* : Int */;
4538 long var13 /* : Int */;
4539 long var15 /* : Int */;
4540 long var16 /* : Int */;
4541 long var17 /* : Int */;
4542 long var19 /* : Int */;
4543 long var20 /* : Int */;
4544 long var21 /* : Int */;
4545 long var23 /* : Int */;
4546 char* var24 /* : NativeString */;
4547 char* var_a /* var a: NativeString */;
4548 char* var25 /* : NativeString */;
4549 long var26 /* : Int */;
4550 long var27 /* : Int */;
4551 long var28 /* : Int */;
4552 var_cap = p0;
4553 var = self->attrs[COLOR_string__Buffer___capacity].l; /* _capacity on <self:Buffer> */
4554 var_c = var;
4555 { /* Inline kernel#Int#<= (var_cap,var_c) */
4556 /* Covariant cast for argument 0 (i) <var_c:Int> isa OTHER */
4557 /* <var_c:Int> isa OTHER */
4558 var3 = 1; /* easy <var_c:Int> isa OTHER*/
4559 if (!var3) {
4560 var_class_name = type_kernel__Int.name;
4561 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
4562 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
4563 show_backtrace(1);
4564 }
4565 var4 = var_cap <= var_c;
4566 var1 = var4;
4567 goto RET_LABEL2;
4568 RET_LABEL2:(void)0;
4569 }
4570 if (var1){
4571 goto RET_LABEL;
4572 } else {
4573 }
4574 for(;;) {
4575 { /* Inline kernel#Int#<= (var_c,var_cap) */
4576 /* Covariant cast for argument 0 (i) <var_cap:Int> isa OTHER */
4577 /* <var_cap:Int> isa OTHER */
4578 var7 = 1; /* easy <var_cap:Int> isa OTHER*/
4579 if (!var7) {
4580 var_class_name10 = type_kernel__Int.name;
4581 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name10);
4582 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
4583 show_backtrace(1);
4584 }
4585 var11 = var_c <= var_cap;
4586 var5 = var11;
4587 goto RET_LABEL6;
4588 RET_LABEL6:(void)0;
4589 }
4590 if (!var5) break;
4591 var12 = 2;
4592 { /* Inline kernel#Int#* (var_c,var12) */
4593 var15 = var_c * var12;
4594 var13 = var15;
4595 goto RET_LABEL14;
4596 RET_LABEL14:(void)0;
4597 }
4598 var16 = 2;
4599 { /* Inline kernel#Int#+ (var13,var16) */
4600 var19 = var13 + var16;
4601 var17 = var19;
4602 goto RET_LABEL18;
4603 RET_LABEL18:(void)0;
4604 }
4605 var_c = var17;
4606 CONTINUE_label: (void)0;
4607 }
4608 BREAK_label: (void)0;
4609 var20 = 1;
4610 { /* Inline kernel#Int#+ (var_c,var20) */
4611 var23 = var_c + var20;
4612 var21 = var23;
4613 goto RET_LABEL22;
4614 RET_LABEL22:(void)0;
4615 }
4616 var24 = ((char* (*)(val*, long))(self->class->vft[COLOR_string__StringCapable__calloc_string]))(self, var21) /* calloc_string on <self:Buffer>*/;
4617 var_a = var24;
4618 var25 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:Buffer> */
4619 var26 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:Buffer>*/;
4620 var27 = 0;
4621 var28 = 0;
4622 { /* Inline string#NativeString#copy_to (var25,var_a,var26,var27,var28) */
4623 memcpy(var_a+var28,var25+var27,var26);
4624 RET_LABEL29:(void)0;
4625 }
4626 self->attrs[COLOR_string__AbstractString___items].str = var_a; /* _items on <self:Buffer> */
4627 self->attrs[COLOR_string__Buffer___capacity].l = var_c; /* _capacity on <self:Buffer> */
4628 RET_LABEL:;
4629 }
4630 /* method string#Buffer#enlarge for (self: Object, Int) */
4631 void VIRTUAL_string__Buffer__enlarge(val* self, long p0) {
4632 string__Buffer__enlarge(self, p0);
4633 RET_LABEL:;
4634 }
4635 /* method string#Buffer#append for (self: Buffer, Collection[Char]) */
4636 void string__Buffer__append(val* self, val* p0) {
4637 short int var /* : Bool */;
4638 int cltype;
4639 int idtype;
4640 const char* var_class_name;
4641 val* var_s /* var s: Collection[Char] */;
4642 short int var1 /* : Bool */;
4643 int cltype2;
4644 int idtype3;
4645 long var4 /* : Int */;
4646 long var_sl /* var sl: Int */;
4647 long var5 /* : Int */;
4648 long var6 /* : Int */;
4649 long var7 /* : Int */;
4650 long var9 /* : Int */;
4651 short int var10 /* : Bool */;
4652 short int var12 /* : Bool */;
4653 int cltype13;
4654 int idtype14;
4655 const char* var_class_name15;
4656 short int var16 /* : Bool */;
4657 long var17 /* : Int */;
4658 long var18 /* : Int */;
4659 long var20 /* : Int */;
4660 char* var21 /* : NativeString */;
4661 char* var22 /* : NativeString */;
4662 long var23 /* : Int */;
4663 long var24 /* : Int */;
4664 val* var_ /* var : Buffer */;
4665 long var26 /* : Int */;
4666 long var27 /* : Int */;
4667 long var29 /* : Int */;
4668 /* Covariant cast for argument 0 (s) <p0:Collection[Char]> isa Collection[Sequence#0] */
4669 /* <p0:Collection[Char]> isa Collection[Sequence#0] */
4670 var = 1; /* easy <p0:Collection[Char]> isa Collection[Sequence#0]*/
4671 if (!var) {
4672 var_class_name = p0 == NULL ? "null" : p0->type->name;
4673 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[Sequence#0]", var_class_name);
4674 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 716);
4675 show_backtrace(1);
4676 }
4677 var_s = p0;
4678 /* <var_s:Collection[Char]> isa String */
4679 cltype2 = type_string__String.color;
4680 idtype3 = type_string__String.id;
4681 if(cltype2 >= var_s->type->table_size) {
4682 var1 = 0;
4683 } else {
4684 var1 = var_s->type->type_table[cltype2] == idtype3;
4685 }
4686 if (var1){
4687 var4 = ((long (*)(val*))(var_s->class->vft[COLOR_abstract_collection__Collection__length]))(var_s) /* length on <var_s:Collection[Char](String)>*/;
4688 var_sl = var4;
4689 var5 = self->attrs[COLOR_string__Buffer___capacity].l; /* _capacity on <self:Buffer> */
4690 var6 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:Buffer> */
4691 { /* Inline kernel#Int#+ (var6,var_sl) */
4692 var9 = var6 + var_sl;
4693 var7 = var9;
4694 goto RET_LABEL8;
4695 RET_LABEL8:(void)0;
4696 }
4697 { /* Inline kernel#Int#< (var5,var7) */
4698 /* Covariant cast for argument 0 (i) <var7:Int> isa OTHER */
4699 /* <var7:Int> isa OTHER */
4700 var12 = 1; /* easy <var7:Int> isa OTHER*/
4701 if (!var12) {
4702 var_class_name15 = type_kernel__Int.name;
4703 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name15);
4704 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
4705 show_backtrace(1);
4706 }
4707 var16 = var5 < var7;
4708 var10 = var16;
4709 goto RET_LABEL11;
4710 RET_LABEL11:(void)0;
4711 }
4712 if (var10){
4713 var17 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:Buffer> */
4714 { /* Inline kernel#Int#+ (var17,var_sl) */
4715 var20 = var17 + var_sl;
4716 var18 = var20;
4717 goto RET_LABEL19;
4718 RET_LABEL19:(void)0;
4719 }
4720 ((void (*)(val*, long))(self->class->vft[COLOR_array__AbstractArray__enlarge]))(self, var18) /* enlarge on <self:Buffer>*/;
4721 } else {
4722 }
4723 var21 = ((char* (*)(val*))(var_s->class->vft[COLOR_string__AbstractString__items]))(var_s) /* items on <var_s:Collection[Char](String)>*/;
4724 var22 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:Buffer> */
4725 var23 = var_s->attrs[COLOR_string__String___index_from].l; /* _index_from on <var_s:Collection[Char](String)> */
4726 var24 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:Buffer> */
4727 { /* Inline string#NativeString#copy_to (var21,var22,var_sl,var23,var24) */
4728 memcpy(var22+var24,var21+var23,var_sl);
4729 RET_LABEL25:(void)0;
4730 }
4731 var_ = self;
4732 var26 = var_->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_:Buffer> */
4733 { /* Inline kernel#Int#+ (var26,var_sl) */
4734 var29 = var26 + var_sl;
4735 var27 = var29;
4736 goto RET_LABEL28;
4737 RET_LABEL28:(void)0;
4738 }
4739 var_->attrs[COLOR_array__AbstractArrayRead___length].l = var27; /* _length on <var_:Buffer> */
4740 } else {
4741 ((void (*)(val*, val*))(self->class->vft[COLOR_string__Buffer__append]))(self, p0) /* append on <self:Buffer>*/;
4742 }
4743 RET_LABEL:;
4744 }
4745 /* method string#Buffer#append for (self: Object, Collection[nullable Object]) */
4746 void VIRTUAL_string__Buffer__append(val* self, val* p0) {
4747 string__Buffer__append(self, p0);
4748 RET_LABEL:;
4749 }
4750 /* method string#Buffer#to_s for (self: Buffer): String */
4751 val* string__Buffer__to_s(val* self) {
4752 val* var /* : String */;
4753 long var1 /* : Int */;
4754 long var_l /* var l: Int */;
4755 long var2 /* : Int */;
4756 long var3 /* : Int */;
4757 long var5 /* : Int */;
4758 char* var6 /* : NativeString */;
4759 char* var_a /* var a: NativeString */;
4760 char* var7 /* : NativeString */;
4761 long var8 /* : Int */;
4762 long var9 /* : Int */;
4763 long var11 /* : Int */;
4764 char var12 /* : Char */;
4765 long var14 /* : Int */;
4766 val* var15 /* : String */;
4767 var1 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:Buffer>*/;
4768 var_l = var1;
4769 var2 = 1;
4770 { /* Inline kernel#Int#+ (var_l,var2) */
4771 var5 = var_l + var2;
4772 var3 = var5;
4773 goto RET_LABEL4;
4774 RET_LABEL4:(void)0;
4775 }
4776 var6 = ((char* (*)(val*, long))(self->class->vft[COLOR_string__StringCapable__calloc_string]))(self, var3) /* calloc_string on <self:Buffer>*/;
4777 var_a = var6;
4778 var7 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:Buffer> */
4779 var8 = 0;
4780 var9 = 0;
4781 { /* Inline string#NativeString#copy_to (var7,var_a,var_l,var8,var9) */
4782 memcpy(var_a+var9,var7+var8,var_l);
4783 RET_LABEL10:(void)0;
4784 }
4785 var11 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:Buffer>*/;
4786 var12 = '\0';
4787 { /* Inline string#NativeString#[]= (var_a,var11,var12) */
4788 var_a[var11]=var12;
4789 RET_LABEL13:(void)0;
4790 }
4791 var14 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:Buffer>*/;
4792 var15 = string__NativeString__to_s_with_length(var_a, var14);
4793 var = var15;
4794 goto RET_LABEL;
4795 RET_LABEL:;
4796 return var;
4797 }
4798 /* method string#Buffer#to_s for (self: Object): String */
4799 val* VIRTUAL_string__Buffer__to_s(val* self) {
4800 val* var /* : String */;
4801 val* var1 /* : String */;
4802 var1 = string__Buffer__to_s(self);
4803 var = var1;
4804 RET_LABEL:;
4805 return var;
4806 }
4807 /* method string#Buffer#< for (self: Buffer, String): Bool */
4808 short int string__Buffer___60d(val* self, val* p0) {
4809 short int var /* : Bool */;
4810 short int var1 /* : Bool */;
4811 int cltype;
4812 int idtype;
4813 const struct type* type_struct;
4814 const char* var_class_name;
4815 val* var_s /* var s: String */;
4816 long var2 /* : Int */;
4817 long var_i /* var i: Int */;
4818 long var3 /* : Int */;
4819 long var_l1 /* var l1: Int */;
4820 long var4 /* : Int */;
4821 long var_l2 /* var l2: Int */;
4822 short int var5 /* : Bool */;
4823 short int var6 /* : Bool */;
4824 short int var8 /* : Bool */;
4825 int cltype9;
4826 int idtype10;
4827 const char* var_class_name11;
4828 short int var12 /* : Bool */;
4829 short int var_ /* var : Bool */;
4830 short int var13 /* : Bool */;
4831 short int var15 /* : Bool */;
4832 int cltype16;
4833 int idtype17;
4834 const char* var_class_name18;
4835 short int var19 /* : Bool */;
4836 val* var20 /* : nullable Object */;
4837 long var21 /* : Int */;
4838 char var23 /* : Char */;
4839 long var24 /* : Int */;
4840 long var_c1 /* var c1: Int */;
4841 val* var25 /* : nullable Object */;
4842 long var26 /* : Int */;
4843 char var28 /* : Char */;
4844 long var29 /* : Int */;
4845 long var_c2 /* var c2: Int */;
4846 short int var30 /* : Bool */;
4847 short int var32 /* : Bool */;
4848 int cltype33;
4849 int idtype34;
4850 const char* var_class_name35;
4851 short int var36 /* : Bool */;
4852 short int var37 /* : Bool */;
4853 short int var38 /* : Bool */;
4854 short int var40 /* : Bool */;
4855 int cltype41;
4856 int idtype42;
4857 const char* var_class_name43;
4858 short int var44 /* : Bool */;
4859 short int var45 /* : Bool */;
4860 long var46 /* : Int */;
4861 long var47 /* : Int */;
4862 long var49 /* : Int */;
4863 short int var50 /* : Bool */;
4864 short int var52 /* : Bool */;
4865 int cltype53;
4866 int idtype54;
4867 const char* var_class_name55;
4868 short int var56 /* : Bool */;
4869 short int var57 /* : Bool */;
4870 short int var58 /* : Bool */;
4871 /* Covariant cast for argument 0 (s) <p0:String> isa OTHER */
4872 /* <p0:String> isa OTHER */
4873 type_struct = self->type->resolution_table->types[COLOR_kernel__Comparable_VTOTHER];
4874 cltype = type_struct->color;
4875 idtype = type_struct->id;
4876 if(cltype >= p0->type->table_size) {
4877 var1 = 0;
4878 } else {
4879 var1 = p0->type->type_table[cltype] == idtype;
4880 }
4881 if (!var1) {
4882 var_class_name = p0 == NULL ? "null" : p0->type->name;
4883 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
4884 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 740);
4885 show_backtrace(1);
4886 }
4887 var_s = p0;
4888 var2 = 0;
4889 var_i = var2;
4890 var3 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:Buffer>*/;
4891 var_l1 = var3;
4892 var4 = ((long (*)(val*))(var_s->class->vft[COLOR_abstract_collection__Collection__length]))(var_s) /* length on <var_s:String>*/;
4893 var_l2 = var4;
4894 for(;;) {
4895 { /* Inline kernel#Int#< (var_i,var_l1) */
4896 /* Covariant cast for argument 0 (i) <var_l1:Int> isa OTHER */
4897 /* <var_l1:Int> isa OTHER */
4898 var8 = 1; /* easy <var_l1:Int> isa OTHER*/
4899 if (!var8) {
4900 var_class_name11 = type_kernel__Int.name;
4901 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name11);
4902 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
4903 show_backtrace(1);
4904 }
4905 var12 = var_i < var_l1;
4906 var6 = var12;
4907 goto RET_LABEL7;
4908 RET_LABEL7:(void)0;
4909 }
4910 var_ = var6;
4911 if (var6){
4912 { /* Inline kernel#Int#< (var_i,var_l2) */
4913 /* Covariant cast for argument 0 (i) <var_l2:Int> isa OTHER */
4914 /* <var_l2:Int> isa OTHER */
4915 var15 = 1; /* easy <var_l2:Int> isa OTHER*/
4916 if (!var15) {
4917 var_class_name18 = type_kernel__Int.name;
4918 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name18);
4919 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
4920 show_backtrace(1);
4921 }
4922 var19 = var_i < var_l2;
4923 var13 = var19;
4924 goto RET_LABEL14;
4925 RET_LABEL14:(void)0;
4926 }
4927 var5 = var13;
4928 } else {
4929 var5 = var_;
4930 }
4931 if (!var5) break;
4932 var20 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_i) /* [] on <self:Buffer>*/;
4933 { /* Inline kernel#Char#ascii (var20) */
4934 var23 = ((struct instance_kernel__Char*)var20)->value; /* autounbox from nullable Object to Char */;
4935 var24 = (unsigned char)var23;
4936 var21 = var24;
4937 goto RET_LABEL22;
4938 RET_LABEL22:(void)0;
4939 }
4940 var_c1 = var21;
4941 var25 = ((val* (*)(val*, long))(var_s->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_s, var_i) /* [] on <var_s:String>*/;
4942 { /* Inline kernel#Char#ascii (var25) */
4943 var28 = ((struct instance_kernel__Char*)var25)->value; /* autounbox from nullable Object to Char */;
4944 var29 = (unsigned char)var28;
4945 var26 = var29;
4946 goto RET_LABEL27;
4947 RET_LABEL27:(void)0;
4948 }
4949 var_c2 = var26;
4950 { /* Inline kernel#Int#< (var_c1,var_c2) */
4951 /* Covariant cast for argument 0 (i) <var_c2:Int> isa OTHER */
4952 /* <var_c2:Int> isa OTHER */
4953 var32 = 1; /* easy <var_c2:Int> isa OTHER*/
4954 if (!var32) {
4955 var_class_name35 = type_kernel__Int.name;
4956 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name35);
4957 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
4958 show_backtrace(1);
4959 }
4960 var36 = var_c1 < var_c2;
4961 var30 = var36;
4962 goto RET_LABEL31;
4963 RET_LABEL31:(void)0;
4964 }
4965 if (var30){
4966 var37 = 1;
4967 var = var37;
4968 goto RET_LABEL;
4969 } else {
4970 { /* Inline kernel#Int#< (var_c2,var_c1) */
4971 /* Covariant cast for argument 0 (i) <var_c1:Int> isa OTHER */
4972 /* <var_c1:Int> isa OTHER */
4973 var40 = 1; /* easy <var_c1:Int> isa OTHER*/
4974 if (!var40) {
4975 var_class_name43 = type_kernel__Int.name;
4976 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name43);
4977 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
4978 show_backtrace(1);
4979 }
4980 var44 = var_c2 < var_c1;
4981 var38 = var44;
4982 goto RET_LABEL39;
4983 RET_LABEL39:(void)0;
4984 }
4985 if (var38){
4986 var45 = 0;
4987 var = var45;
4988 goto RET_LABEL;
4989 } else {
4990 }
4991 }
4992 var46 = 1;
4993 { /* Inline kernel#Int#+ (var_i,var46) */
4994 var49 = var_i + var46;
4995 var47 = var49;
4996 goto RET_LABEL48;
4997 RET_LABEL48:(void)0;
4998 }
4999 var_i = var47;
5000 CONTINUE_label: (void)0;
5001 }
5002 BREAK_label: (void)0;
5003 { /* Inline kernel#Int#< (var_l1,var_l2) */
5004 /* Covariant cast for argument 0 (i) <var_l2:Int> isa OTHER */
5005 /* <var_l2:Int> isa OTHER */
5006 var52 = 1; /* easy <var_l2:Int> isa OTHER*/
5007 if (!var52) {
5008 var_class_name55 = type_kernel__Int.name;
5009 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name55);
5010 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
5011 show_backtrace(1);
5012 }
5013 var56 = var_l1 < var_l2;
5014 var50 = var56;
5015 goto RET_LABEL51;
5016 RET_LABEL51:(void)0;
5017 }
5018 if (var50){
5019 var57 = 1;
5020 var = var57;
5021 goto RET_LABEL;
5022 } else {
5023 var58 = 0;
5024 var = var58;
5025 goto RET_LABEL;
5026 }
5027 RET_LABEL:;
5028 return var;
5029 }
5030 /* method string#Buffer#< for (self: Object, Comparable): Bool */
5031 short int VIRTUAL_string__Buffer___60d(val* self, val* p0) {
5032 short int var /* : Bool */;
5033 short int var1 /* : Bool */;
5034 var1 = string__Buffer___60d(self, p0);
5035 var = var1;
5036 RET_LABEL:;
5037 return var;
5038 }
5039 /* method string#Buffer#init for (self: Buffer) */
5040 void string__Buffer__init(val* self) {
5041 long var /* : Int */;
5042 var = 5;
5043 ((void (*)(val*, long))(self->class->vft[COLOR_string__Buffer__with_capacity]))(self, var) /* with_capacity on <self:Buffer>*/;
5044 RET_LABEL:;
5045 }
5046 /* method string#Buffer#init for (self: Object) */
5047 void VIRTUAL_string__Buffer__init(val* self) {
5048 string__Buffer__init(self);
5049 RET_LABEL:;
5050 }
5051 /* method string#Buffer#from for (self: Buffer, String) */
5052 void string__Buffer__from(val* self, val* p0) {
5053 val* var_s /* var s: String */;
5054 long var /* : Int */;
5055 long var1 /* : Int */;
5056 long var2 /* : Int */;
5057 long var4 /* : Int */;
5058 long var5 /* : Int */;
5059 long var6 /* : Int */;
5060 char* var7 /* : NativeString */;
5061 char* var8 /* : NativeString */;
5062 char* var9 /* : NativeString */;
5063 long var10 /* : Int */;
5064 long var11 /* : Int */;
5065 long var12 /* : Int */;
5066 var_s = p0;
5067 ((void (*)(val*))(self->class->vft[COLOR_string__AbstractString__init]))(self) /* init on <self:Buffer>*/;
5068 ((void (*)(val*))(self->class->vft[COLOR_array__AbstractArray__init]))(self) /* init on <self:Buffer>*/;
5069 var = ((long (*)(val*))(var_s->class->vft[COLOR_abstract_collection__Collection__length]))(var_s) /* length on <var_s:String>*/;
5070 var1 = 1;
5071 { /* Inline kernel#Int#+ (var,var1) */
5072 var4 = var + var1;
5073 var2 = var4;
5074 goto RET_LABEL3;
5075 RET_LABEL3:(void)0;
5076 }
5077 self->attrs[COLOR_string__Buffer___capacity].l = var2; /* _capacity on <self:Buffer> */
5078 var5 = ((long (*)(val*))(var_s->class->vft[COLOR_abstract_collection__Collection__length]))(var_s) /* length on <var_s:String>*/;
5079 self->attrs[COLOR_array__AbstractArrayRead___length].l = var5; /* _length on <self:Buffer> */
5080 var6 = self->attrs[COLOR_string__Buffer___capacity].l; /* _capacity on <self:Buffer> */
5081 var7 = ((char* (*)(val*, long))(self->class->vft[COLOR_string__StringCapable__calloc_string]))(self, var6) /* calloc_string on <self:Buffer>*/;
5082 self->attrs[COLOR_string__AbstractString___items].str = var7; /* _items on <self:Buffer> */
5083 var8 = ((char* (*)(val*))(var_s->class->vft[COLOR_string__AbstractString__items]))(var_s) /* items on <var_s:String>*/;
5084 var9 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:Buffer> */
5085 var10 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:Buffer> */
5086 var11 = var_s->attrs[COLOR_string__String___index_from].l; /* _index_from on <var_s:String> */
5087 var12 = 0;
5088 { /* Inline string#NativeString#copy_to (var8,var9,var10,var11,var12) */
5089 memcpy(var9+var12,var8+var11,var10);
5090 RET_LABEL13:(void)0;
5091 }
5092 RET_LABEL:;
5093 }
5094 /* method string#Buffer#from for (self: Object, String) */
5095 void VIRTUAL_string__Buffer__from(val* self, val* p0) {
5096 string__Buffer__from(self, p0);
5097 RET_LABEL:;
5098 }
5099 /* method string#Buffer#with_capacity for (self: Buffer, Int) */
5100 void string__Buffer__with_capacity(val* self, long p0) {
5101 long var_cap /* var cap: Int */;
5102 long var /* : Int */;
5103 short int var1 /* : Bool */;
5104 short int var3 /* : Bool */;
5105 int cltype;
5106 int idtype;
5107 const char* var_class_name;
5108 short int var4 /* : Bool */;
5109 long var5 /* : Int */;
5110 long var6 /* : Int */;
5111 long var8 /* : Int */;
5112 char* var9 /* : NativeString */;
5113 long var10 /* : Int */;
5114 var_cap = p0;
5115 ((void (*)(val*))(self->class->vft[COLOR_string__AbstractString__init]))(self) /* init on <self:Buffer>*/;
5116 ((void (*)(val*))(self->class->vft[COLOR_array__AbstractArray__init]))(self) /* init on <self:Buffer>*/;
5117 var = 0;
5118 { /* Inline kernel#Int#>= (var_cap,var) */
5119 /* Covariant cast for argument 0 (i) <var:Int> isa OTHER */
5120 /* <var:Int> isa OTHER */
5121 var3 = 1; /* easy <var:Int> isa OTHER*/
5122 if (!var3) {
5123 var_class_name = type_kernel__Int.name;
5124 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
5125 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
5126 show_backtrace(1);
5127 }
5128 var4 = var_cap >= var;
5129 var1 = var4;
5130 goto RET_LABEL2;
5131 RET_LABEL2:(void)0;
5132 }
5133 if (!var1) {
5134 fprintf(stderr, "Runtime error: %s", "Assert failed");
5135 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 779);
5136 show_backtrace(1);
5137 }
5138 var5 = 1;
5139 { /* Inline kernel#Int#+ (var_cap,var5) */
5140 var8 = var_cap + var5;
5141 var6 = var8;
5142 goto RET_LABEL7;
5143 RET_LABEL7:(void)0;
5144 }
5145 var9 = ((char* (*)(val*, long))(self->class->vft[COLOR_string__StringCapable__calloc_string]))(self, var6) /* calloc_string on <self:Buffer>*/;
5146 self->attrs[COLOR_string__AbstractString___items].str = var9; /* _items on <self:Buffer> */
5147 self->attrs[COLOR_string__Buffer___capacity].l = var_cap; /* _capacity on <self:Buffer> */
5148 var10 = 0;
5149 self->attrs[COLOR_array__AbstractArrayRead___length].l = var10; /* _length on <self:Buffer> */
5150 RET_LABEL:;
5151 }
5152 /* method string#Buffer#with_capacity for (self: Object, Int) */
5153 void VIRTUAL_string__Buffer__with_capacity(val* self, long p0) {
5154 string__Buffer__with_capacity(self, p0);
5155 RET_LABEL:;
5156 }
5157 /* method string#Buffer#== for (self: Buffer, nullable Object): Bool */
5158 short int string__Buffer___61d_61d(val* self, val* p0) {
5159 short int var /* : Bool */;
5160 val* var_o /* var o: nullable Object */;
5161 short int var1 /* : Bool */;
5162 int cltype;
5163 int idtype;
5164 short int var2 /* : Bool */;
5165 short int var3 /* : Bool */;
5166 long var4 /* : Int */;
5167 long var_l /* var l: Int */;
5168 long var5 /* : Int */;
5169 short int var6 /* : Bool */;
5170 short int var8 /* : Bool */;
5171 short int var9 /* : Bool */;
5172 short int var10 /* : Bool */;
5173 long var11 /* : Int */;
5174 long var_i /* var i: Int */;
5175 char* var12 /* : NativeString */;
5176 char* var_it /* var it: NativeString */;
5177 char* var13 /* : NativeString */;
5178 char* var_oit /* var oit: NativeString */;
5179 short int var14 /* : Bool */;
5180 short int var16 /* : Bool */;
5181 int cltype17;
5182 int idtype18;
5183 const char* var_class_name;
5184 short int var19 /* : Bool */;
5185 char var20 /* : Char */;
5186 char var22 /* : Char */;
5187 char var23 /* : Char */;
5188 char var25 /* : Char */;
5189 short int var26 /* : Bool */;
5190 short int var28 /* : Bool */;
5191 short int var29 /* : Bool */;
5192 short int var30 /* : Bool */;
5193 long var31 /* : Int */;
5194 long var32 /* : Int */;
5195 long var34 /* : Int */;
5196 short int var35 /* : Bool */;
5197 var_o = p0;
5198 /* <var_o:nullable Object> isa Buffer */
5199 cltype = type_string__Buffer.color;
5200 idtype = type_string__Buffer.id;
5201 if(var_o == NULL) {
5202 var1 = 0;
5203 } else {
5204 if(cltype >= var_o->type->table_size) {
5205 var1 = 0;
5206 } else {
5207 var1 = var_o->type->type_table[cltype] == idtype;
5208 }
5209 }
5210 var2 = !var1;
5211 if (var2){
5212 var3 = 0;
5213 var = var3;
5214 goto RET_LABEL;
5215 } else {
5216 }
5217 var4 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:Buffer>*/;
5218 var_l = var4;
5219 var5 = ((long (*)(val*))(var_o->class->vft[COLOR_abstract_collection__Collection__length]))(var_o) /* length on <var_o:nullable Object(Buffer)>*/;
5220 { /* Inline kernel#Int#!= (var5,var_l) */
5221 var8 = var5 == var_l;
5222 var9 = !var8;
5223 var6 = var9;
5224 goto RET_LABEL7;
5225 RET_LABEL7:(void)0;
5226 }
5227 if (var6){
5228 var10 = 0;
5229 var = var10;
5230 goto RET_LABEL;
5231 } else {
5232 }
5233 var11 = 0;
5234 var_i = var11;
5235 var12 = self->attrs[COLOR_string__AbstractString___items].str; /* _items on <self:Buffer> */
5236 var_it = var12;
5237 var13 = var_o->attrs[COLOR_string__AbstractString___items].str; /* _items on <var_o:nullable Object(Buffer)> */
5238 var_oit = var13;
5239 for(;;) {
5240 { /* Inline kernel#Int#< (var_i,var_l) */
5241 /* Covariant cast for argument 0 (i) <var_l:Int> isa OTHER */
5242 /* <var_l:Int> isa OTHER */
5243 var16 = 1; /* easy <var_l:Int> isa OTHER*/
5244 if (!var16) {
5245 var_class_name = type_kernel__Int.name;
5246 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
5247 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
5248 show_backtrace(1);
5249 }
5250 var19 = var_i < var_l;
5251 var14 = var19;
5252 goto RET_LABEL15;
5253 RET_LABEL15:(void)0;
5254 }
5255 if (!var14) break;
5256 { /* Inline string#NativeString#[] (var_it,var_i) */
5257 var22 = var_it[var_i];
5258 var20 = var22;
5259 goto RET_LABEL21;
5260 RET_LABEL21:(void)0;
5261 }
5262 { /* Inline string#NativeString#[] (var_oit,var_i) */
5263 var25 = var_oit[var_i];
5264 var23 = var25;
5265 goto RET_LABEL24;
5266 RET_LABEL24:(void)0;
5267 }
5268 { /* Inline kernel#Char#!= (var20,var23) */
5269 var28 = var20 == var23;
5270 var29 = !var28;
5271 var26 = var29;
5272 goto RET_LABEL27;
5273 RET_LABEL27:(void)0;
5274 }
5275 if (var26){
5276 var30 = 0;
5277 var = var30;
5278 goto RET_LABEL;
5279 } else {
5280 }
5281 var31 = 1;
5282 { /* Inline kernel#Int#+ (var_i,var31) */
5283 var34 = var_i + var31;
5284 var32 = var34;
5285 goto RET_LABEL33;
5286 RET_LABEL33:(void)0;
5287 }
5288 var_i = var32;
5289 CONTINUE_label: (void)0;
5290 }
5291 BREAK_label: (void)0;
5292 var35 = 1;
5293 var = var35;
5294 goto RET_LABEL;
5295 RET_LABEL:;
5296 return var;
5297 }
5298 /* method string#Buffer#== for (self: Object, nullable Object): Bool */
5299 short int VIRTUAL_string__Buffer___61d_61d(val* self, val* p0) {
5300 short int var /* : Bool */;
5301 short int var1 /* : Bool */;
5302 var1 = string__Buffer___61d_61d(self, p0);
5303 var = var1;
5304 RET_LABEL:;
5305 return var;
5306 }
5307 /* method string#Buffer#capacity for (self: Buffer): Int */
5308 long string__Buffer__capacity(val* self) {
5309 long var /* : Int */;
5310 long var1 /* : Int */;
5311 var1 = self->attrs[COLOR_string__Buffer___capacity].l; /* _capacity on <self:Buffer> */
5312 var = var1;
5313 RET_LABEL:;
5314 return var;
5315 }
5316 /* method string#Buffer#capacity for (self: Object): Int */
5317 long VIRTUAL_string__Buffer__capacity(val* self) {
5318 long var /* : Int */;
5319 long var1 /* : Int */;
5320 var1 = string__Buffer__capacity(self);
5321 var = var1;
5322 RET_LABEL:;
5323 return var;
5324 }
5325 /* method string#Object#to_s for (self: Object): String */
5326 val* string__Object__to_s(val* self) {
5327 val* var /* : String */;
5328 val* var1 /* : String */;
5329 var1 = ((val* (*)(val*))(self->class->vft[COLOR_string__Object__inspect]))(self) /* inspect on <self:Object>*/;
5330 var = var1;
5331 goto RET_LABEL;
5332 RET_LABEL:;
5333 return var;
5334 }
5335 /* method string#Object#to_s for (self: Object): String */
5336 val* VIRTUAL_string__Object__to_s(val* self) {
5337 val* var /* : String */;
5338 val* var1 /* : String */;
5339 var1 = string__Object__to_s(self);
5340 var = var1;
5341 RET_LABEL:;
5342 return var;
5343 }
5344 /* method string#Object#native_class_name for (self: Object): NativeString */
5345 char* string__Object__native_class_name(val* self) {
5346 char* var /* : NativeString */;
5347 const char* var_class_name;
5348 char* var1 /* : NativeString */;
5349 var_class_name = self == NULL ? "null" : self->type->name;
5350 var1 = (char*)var_class_name;
5351 var = var1;
5352 goto RET_LABEL;
5353 RET_LABEL:;
5354 return var;
5355 }
5356 /* method string#Object#native_class_name for (self: Object): NativeString */
5357 char* VIRTUAL_string__Object__native_class_name(val* self) {
5358 char* var /* : NativeString */;
5359 char* var1 /* : NativeString */;
5360 const char* var_class_name;
5361 char* var3 /* : NativeString */;
5362 { /* Inline string#Object#native_class_name (self) */
5363 var_class_name = self == NULL ? "null" : self->type->name;
5364 var3 = (char*)var_class_name;
5365 var1 = var3;
5366 goto RET_LABEL2;
5367 RET_LABEL2:(void)0;
5368 }
5369 var = var1;
5370 RET_LABEL:;
5371 return var;
5372 }
5373 /* method string#Object#class_name for (self: Object): String */
5374 val* string__Object__class_name(val* self) {
5375 val* var /* : String */;
5376 char* var1 /* : NativeString */;
5377 val* var2 /* : String */;
5378 var1 = ((char* (*)(val*))(self->class->vft[COLOR_string__Object__native_class_name]))(self) /* native_class_name on <self:Object>*/;
5379 var2 = string__NativeString__to_s(var1);
5380 var = var2;
5381 goto RET_LABEL;
5382 RET_LABEL:;
5383 return var;
5384 }
5385 /* method string#Object#class_name for (self: Object): String */
5386 val* VIRTUAL_string__Object__class_name(val* self) {
5387 val* var /* : String */;
5388 val* var1 /* : String */;
5389 var1 = string__Object__class_name(self);
5390 var = var1;
5391 RET_LABEL:;
5392 return var;
5393 }
5394 /* method string#Object#inspect for (self: Object): String */
5395 val* string__Object__inspect(val* self) {
5396 val* var /* : String */;
5397 val* var1 /* : Array[Object] */;
5398 long var2 /* : Int */;
5399 val* var_ /* var : Array[Object] */;
5400 static val* varonce;
5401 val* var3 /* : String */;
5402 char* var4 /* : NativeString */;
5403 long var5 /* : Int */;
5404 val* var6 /* : String */;
5405 val* var7 /* : String */;
5406 static val* varonce8;
5407 val* var9 /* : String */;
5408 char* var10 /* : NativeString */;
5409 long var11 /* : Int */;
5410 val* var12 /* : String */;
5411 val* var13 /* : String */;
5412 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
5413 var2 = 3;
5414 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
5415 var_ = var1;
5416 if (varonce) {
5417 var3 = varonce;
5418 } else {
5419 var4 = "<";
5420 var5 = 1;
5421 var6 = string__NativeString__to_s_with_length(var4, var5);
5422 var3 = var6;
5423 varonce = var3;
5424 }
5425 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
5426 var7 = ((val* (*)(val*))(self->class->vft[COLOR_string__Object__inspect_head]))(self) /* inspect_head on <self:Object>*/;
5427 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var7) /* add on <var_:Array[Object]>*/;
5428 if (varonce8) {
5429 var9 = varonce8;
5430 } else {
5431 var10 = ">";
5432 var11 = 1;
5433 var12 = string__NativeString__to_s_with_length(var10, var11);
5434 var9 = var12;
5435 varonce8 = var9;
5436 }
5437 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var9) /* add on <var_:Array[Object]>*/;
5438 var13 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
5439 var = var13;
5440 goto RET_LABEL;
5441 RET_LABEL:;
5442 return var;
5443 }
5444 /* method string#Object#inspect for (self: Object): String */
5445 val* VIRTUAL_string__Object__inspect(val* self) {
5446 val* var /* : String */;
5447 val* var1 /* : String */;
5448 var1 = string__Object__inspect(self);
5449 var = var1;
5450 RET_LABEL:;
5451 return var;
5452 }
5453 /* method string#Object#inspect_head for (self: Object): String */
5454 val* string__Object__inspect_head(val* self) {
5455 val* var /* : String */;
5456 val* var1 /* : Array[Object] */;
5457 long var2 /* : Int */;
5458 val* var_ /* var : Array[Object] */;
5459 static val* varonce;
5460 val* var3 /* : String */;
5461 char* var4 /* : NativeString */;
5462 long var5 /* : Int */;
5463 val* var6 /* : String */;
5464 val* var7 /* : String */;
5465 static val* varonce8;
5466 val* var9 /* : String */;
5467 char* var10 /* : NativeString */;
5468 long var11 /* : Int */;
5469 val* var12 /* : String */;
5470 long var13 /* : Int */;
5471 val* var14 /* : String */;
5472 static val* varonce15;
5473 val* var16 /* : String */;
5474 char* var17 /* : NativeString */;
5475 long var18 /* : Int */;
5476 val* var19 /* : String */;
5477 val* var20 /* : String */;
5478 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
5479 var2 = 5;
5480 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
5481 var_ = var1;
5482 if (varonce) {
5483 var3 = varonce;
5484 } else {
5485 var4 = "";
5486 var5 = 0;
5487 var6 = string__NativeString__to_s_with_length(var4, var5);
5488 var3 = var6;
5489 varonce = var3;
5490 }
5491 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
5492 var7 = ((val* (*)(val*))(self->class->vft[COLOR_string__Object__class_name]))(self) /* class_name on <self:Object>*/;
5493 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var7) /* add on <var_:Array[Object]>*/;
5494 if (varonce8) {
5495 var9 = varonce8;
5496 } else {
5497 var10 = ":#";
5498 var11 = 2;
5499 var12 = string__NativeString__to_s_with_length(var10, var11);
5500 var9 = var12;
5501 varonce8 = var9;
5502 }
5503 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var9) /* add on <var_:Array[Object]>*/;
5504 var13 = ((long (*)(val*))(self->class->vft[COLOR_kernel__Object__object_id]))(self) /* object_id on <self:Object>*/;
5505 var14 = string__Int__to_hex(var13);
5506 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var14) /* add on <var_:Array[Object]>*/;
5507 if (varonce15) {
5508 var16 = varonce15;
5509 } else {
5510 var17 = "";
5511 var18 = 0;
5512 var19 = string__NativeString__to_s_with_length(var17, var18);
5513 var16 = var19;
5514 varonce15 = var16;
5515 }
5516 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var16) /* add on <var_:Array[Object]>*/;
5517 var20 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
5518 var = var20;
5519 goto RET_LABEL;
5520 RET_LABEL:;
5521 return var;
5522 }
5523 /* method string#Object#inspect_head for (self: Object): String */
5524 val* VIRTUAL_string__Object__inspect_head(val* self) {
5525 val* var /* : String */;
5526 val* var1 /* : String */;
5527 var1 = string__Object__inspect_head(self);
5528 var = var1;
5529 RET_LABEL:;
5530 return var;
5531 }
5532 /* method string#Object#args for (self: Object): Sequence[String] */
5533 val* string__Object__args(val* self) {
5534 val* var /* : Sequence[String] */;
5535 val* var1 /* : Sys */;
5536 val* var2 /* : Sequence[String] */;
5537 var1 = ((val* (*)(val*))(self->class->vft[COLOR_kernel__Object__sys]))(self) /* sys on <self:Object>*/;
5538 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_string__Object__args]))(var1) /* args on <var1:Sys>*/;
5539 var = var2;
5540 goto RET_LABEL;
5541 RET_LABEL:;
5542 return var;
5543 }
5544 /* method string#Object#args for (self: Object): Sequence[String] */
5545 val* VIRTUAL_string__Object__args(val* self) {
5546 val* var /* : Sequence[String] */;
5547 val* var1 /* : Sequence[String] */;
5548 var1 = string__Object__args(self);
5549 var = var1;
5550 RET_LABEL:;
5551 return var;
5552 }
5553 /* method string#Bool#to_s for (self: Bool): String */
5554 val* string__Bool__to_s(short int self) {
5555 val* var /* : String */;
5556 static val* varonce;
5557 static int varonce_guard;
5558 val* var1 /* : String */;
5559 static val* varonce2;
5560 val* var3 /* : String */;
5561 char* var4 /* : NativeString */;
5562 long var5 /* : Int */;
5563 val* var6 /* : String */;
5564 static val* varonce7;
5565 static int varonce7_guard;
5566 val* var8 /* : String */;
5567 static val* varonce9;
5568 val* var10 /* : String */;
5569 char* var11 /* : NativeString */;
5570 long var12 /* : Int */;
5571 val* var13 /* : String */;
5572 if (self){
5573 if (varonce_guard) {
5574 var1 = varonce;
5575 } else {
5576 if (varonce2) {
5577 var3 = varonce2;
5578 } else {
5579 var4 = "true";
5580 var5 = 4;
5581 var6 = string__NativeString__to_s_with_length(var4, var5);
5582 var3 = var6;
5583 varonce2 = var3;
5584 }
5585 var1 = var3;
5586 varonce = var1;
5587 varonce_guard = 1;
5588 }
5589 var = var1;
5590 goto RET_LABEL;
5591 } else {
5592 if (varonce7_guard) {
5593 var8 = varonce7;
5594 } else {
5595 if (varonce9) {
5596 var10 = varonce9;
5597 } else {
5598 var11 = "false";
5599 var12 = 5;
5600 var13 = string__NativeString__to_s_with_length(var11, var12);
5601 var10 = var13;
5602 varonce9 = var10;
5603 }
5604 var8 = var10;
5605 varonce7 = var8;
5606 varonce7_guard = 1;
5607 }
5608 var = var8;
5609 goto RET_LABEL;
5610 }
5611 RET_LABEL:;
5612 return var;
5613 }
5614 /* method string#Bool#to_s for (self: Object): String */
5615 val* VIRTUAL_string__Bool__to_s(val* self) {
5616 val* var /* : String */;
5617 val* var1 /* : String */;
5618 short int var2 /* : Bool */;
5619 var2 = ((struct instance_kernel__Bool*)self)->value; /* autounbox from Object to Bool */;
5620 var1 = string__Bool__to_s(var2);
5621 var = var1;
5622 RET_LABEL:;
5623 return var;
5624 }
5625 /* method string#Int#fill_buffer for (self: Int, Buffer, Int, Bool) */
5626 void string__Int__fill_buffer(long self, val* p0, long p1, short int p2) {
5627 val* var_s /* var s: Buffer */;
5628 long var_base /* var base: Int */;
5629 short int var_signed /* var signed: Bool */;
5630 long var /* : Int */;
5631 short int var1 /* : Bool */;
5632 short int var3 /* : Bool */;
5633 int cltype;
5634 int idtype;
5635 const char* var_class_name;
5636 short int var4 /* : Bool */;
5637 long var5 /* : Int */;
5638 long var7 /* : Int */;
5639 long var_n /* var n: Int */;
5640 long var8 /* : Int */;
5641 char var9 /* : Char */;
5642 val* var10 /* : nullable Object */;
5643 long var11 /* : Int */;
5644 short int var12 /* : Bool */;
5645 short int var14 /* : Bool */;
5646 long var15 /* : Int */;
5647 char var16 /* : Char */;
5648 val* var17 /* : nullable Object */;
5649 long var18 /* : Int */;
5650 long var19 /* : Int */;
5651 long var20 /* : Int */;
5652 long var22 /* : Int */;
5653 long var_pos /* var pos: Int */;
5654 short int var23 /* : Bool */;
5655 long var24 /* : Int */;
5656 short int var25 /* : Bool */;
5657 short int var27 /* : Bool */;
5658 int cltype28;
5659 int idtype29;
5660 const char* var_class_name30;
5661 short int var31 /* : Bool */;
5662 short int var_ /* var : Bool */;
5663 long var32 /* : Int */;
5664 short int var33 /* : Bool */;
5665 short int var35 /* : Bool */;
5666 int cltype36;
5667 int idtype37;
5668 const char* var_class_name38;
5669 short int var39 /* : Bool */;
5670 long var40 /* : Int */;
5671 long var42 /* : Int */;
5672 char var43 /* : Char */;
5673 val* var44 /* : nullable Object */;
5674 long var45 /* : Int */;
5675 long var47 /* : Int */;
5676 long var48 /* : Int */;
5677 long var49 /* : Int */;
5678 long var51 /* : Int */;
5679 var_s = p0;
5680 var_base = p1;
5681 var_signed = p2;
5682 var = 0;
5683 { /* Inline kernel#Int#< (self,var) */
5684 /* Covariant cast for argument 0 (i) <var:Int> isa OTHER */
5685 /* <var:Int> isa OTHER */
5686 var3 = 1; /* easy <var:Int> isa OTHER*/
5687 if (!var3) {
5688 var_class_name = type_kernel__Int.name;
5689 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
5690 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
5691 show_backtrace(1);
5692 }
5693 var4 = self < var;
5694 var1 = var4;
5695 goto RET_LABEL2;
5696 RET_LABEL2:(void)0;
5697 }
5698 if (var1){
5699 { /* Inline kernel#Int#unary - (self) */
5700 var7 = -self;
5701 var5 = var7;
5702 goto RET_LABEL6;
5703 RET_LABEL6:(void)0;
5704 }
5705 var_n = var5;
5706 var8 = 0;
5707 var9 = '-';
5708 var10 = BOX_kernel__Char(var9); /* autobox from Char to nullable Object */
5709 ((void (*)(val*, long, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_s, var8, var10) /* []= on <var_s:Buffer>*/;
5710 } else {
5711 var11 = 0;
5712 { /* Inline kernel#Int#== (self,var11) */
5713 var14 = self == var11;
5714 var12 = var14;
5715 goto RET_LABEL13;
5716 RET_LABEL13:(void)0;
5717 }
5718 if (var12){
5719 var15 = 0;
5720 var16 = '0';
5721 var17 = BOX_kernel__Char(var16); /* autobox from Char to nullable Object */
5722 ((void (*)(val*, long, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_s, var15, var17) /* []= on <var_s:Buffer>*/;
5723 goto RET_LABEL;
5724 } else {
5725 var_n = self;
5726 }
5727 }
5728 var18 = kernel__Int__digit_count(self, var_base);
5729 var19 = 1;
5730 { /* Inline kernel#Int#- (var18,var19) */
5731 var22 = var18 - var19;
5732 var20 = var22;
5733 goto RET_LABEL21;
5734 RET_LABEL21:(void)0;
5735 }
5736 var_pos = var20;
5737 for(;;) {
5738 var24 = 0;
5739 { /* Inline kernel#Int#>= (var_pos,var24) */
5740 /* Covariant cast for argument 0 (i) <var24:Int> isa OTHER */
5741 /* <var24:Int> isa OTHER */
5742 var27 = 1; /* easy <var24:Int> isa OTHER*/
5743 if (!var27) {
5744 var_class_name30 = type_kernel__Int.name;
5745 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name30);
5746 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
5747 show_backtrace(1);
5748 }
5749 var31 = var_pos >= var24;
5750 var25 = var31;
5751 goto RET_LABEL26;
5752 RET_LABEL26:(void)0;
5753 }
5754 var_ = var25;
5755 if (var25){
5756 var32 = 0;
5757 { /* Inline kernel#Int#> (var_n,var32) */
5758 /* Covariant cast for argument 0 (i) <var32:Int> isa OTHER */
5759 /* <var32:Int> isa OTHER */
5760 var35 = 1; /* easy <var32:Int> isa OTHER*/
5761 if (!var35) {
5762 var_class_name38 = type_kernel__Int.name;
5763 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name38);
5764 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
5765 show_backtrace(1);
5766 }
5767 var39 = var_n > var32;
5768 var33 = var39;
5769 goto RET_LABEL34;
5770 RET_LABEL34:(void)0;
5771 }
5772 var23 = var33;
5773 } else {
5774 var23 = var_;
5775 }
5776 if (!var23) break;
5777 { /* Inline kernel#Int#% (var_n,var_base) */
5778 var42 = var_n % var_base;
5779 var40 = var42;
5780 goto RET_LABEL41;
5781 RET_LABEL41:(void)0;
5782 }
5783 var43 = kernel__Int__to_c(var40);
5784 var44 = BOX_kernel__Char(var43); /* autobox from Char to nullable Object */
5785 ((void (*)(val*, long, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_s, var_pos, var44) /* []= on <var_s:Buffer>*/;
5786 { /* Inline kernel#Int#/ (var_n,var_base) */
5787 var47 = var_n / var_base;
5788 var45 = var47;
5789 goto RET_LABEL46;
5790 RET_LABEL46:(void)0;
5791 }
5792 var_n = var45;
5793 var48 = 1;
5794 { /* Inline kernel#Int#- (var_pos,var48) */
5795 var51 = var_pos - var48;
5796 var49 = var51;
5797 goto RET_LABEL50;
5798 RET_LABEL50:(void)0;
5799 }
5800 var_pos = var49;
5801 CONTINUE_label: (void)0;
5802 }
5803 BREAK_label: (void)0;
5804 RET_LABEL:;
5805 }
5806 /* method string#Int#fill_buffer for (self: Object, Buffer, Int, Bool) */
5807 void VIRTUAL_string__Int__fill_buffer(val* self, val* p0, long p1, short int p2) {
5808 long var /* : Int */;
5809 var = ((struct instance_kernel__Int*)self)->value; /* autounbox from Object to Int */;
5810 string__Int__fill_buffer(var, p0, p1, p2);
5811 RET_LABEL:;
5812 }
5813 /* method string#Int#native_int_to_s for (self: Int, Int): NativeString */
5814 char* string__Int__native_int_to_s(long self, long p0) {
5815 char* var /* : NativeString */;
5816 char* var1 /* : NativeString */;
5817 var1 = native_int_to_s(self, p0);
5818 var = var1;
5819 goto RET_LABEL;
5820 RET_LABEL:;
5821 return var;
5822 }
5823 /* method string#Int#native_int_to_s for (self: Object, Int): NativeString */
5824 char* VIRTUAL_string__Int__native_int_to_s(val* self, long p0) {
5825 char* var /* : NativeString */;
5826 char* var1 /* : NativeString */;
5827 long var2 /* : Int */;
5828 var2 = ((struct instance_kernel__Int*)self)->value; /* autounbox from Object to Int */;
5829 var1 = string__Int__native_int_to_s(var2, p0);
5830 var = var1;
5831 RET_LABEL:;
5832 return var;
5833 }
5834 /* method string#Int#to_s for (self: Int): String */
5835 val* string__Int__to_s(long self) {
5836 val* var /* : String */;
5837 long var1 /* : Int */;
5838 long var2 /* : Int */;
5839 long var_len /* var len: Int */;
5840 char* var3 /* : NativeString */;
5841 val* var4 /* : String */;
5842 var1 = 10;
5843 var2 = kernel__Int__digit_count(self, var1);
5844 var_len = var2;
5845 var3 = string__Int__native_int_to_s(self, var_len);
5846 var4 = string__NativeString__to_s_with_length(var3, var_len);
5847 var = var4;
5848 goto RET_LABEL;
5849 RET_LABEL:;
5850 return var;
5851 }
5852 /* method string#Int#to_s for (self: Object): String */
5853 val* VIRTUAL_string__Int__to_s(val* self) {
5854 val* var /* : String */;
5855 val* var1 /* : String */;
5856 long var2 /* : Int */;
5857 var2 = ((struct instance_kernel__Int*)self)->value; /* autounbox from Object to Int */;
5858 var1 = string__Int__to_s(var2);
5859 var = var1;
5860 RET_LABEL:;
5861 return var;
5862 }
5863 /* method string#Int#to_hex for (self: Int): String */
5864 val* string__Int__to_hex(long self) {
5865 val* var /* : String */;
5866 long var1 /* : Int */;
5867 short int var2 /* : Bool */;
5868 val* var3 /* : String */;
5869 var1 = 16;
5870 var2 = 0;
5871 var3 = string__Int__to_base(self, var1, var2);
5872 var = var3;
5873 goto RET_LABEL;
5874 RET_LABEL:;
5875 return var;
5876 }
5877 /* method string#Int#to_hex for (self: Object): String */
5878 val* VIRTUAL_string__Int__to_hex(val* self) {
5879 val* var /* : String */;
5880 val* var1 /* : String */;
5881 long var2 /* : Int */;
5882 var2 = ((struct instance_kernel__Int*)self)->value; /* autounbox from Object to Int */;
5883 var1 = string__Int__to_hex(var2);
5884 var = var1;
5885 RET_LABEL:;
5886 return var;
5887 }
5888 /* method string#Int#to_base for (self: Int, Int, Bool): String */
5889 val* string__Int__to_base(long self, long p0, short int p1) {
5890 val* var /* : String */;
5891 long var_base /* var base: Int */;
5892 short int var_signed /* var signed: Bool */;
5893 long var1 /* : Int */;
5894 long var_l /* var l: Int */;
5895 val* var2 /* : Buffer */;
5896 static val* varonce;
5897 val* var3 /* : String */;
5898 char* var4 /* : NativeString */;
5899 long var5 /* : Int */;
5900 val* var6 /* : String */;
5901 val* var7 /* : String */;
5902 val* var_s /* var s: Buffer */;
5903 val* var8 /* : String */;
5904 var_base = p0;
5905 var_signed = p1;
5906 var1 = kernel__Int__digit_count(self, var_base);
5907 var_l = var1;
5908 var2 = NEW_string__Buffer(&type_string__Buffer);
5909 if (varonce) {
5910 var3 = varonce;
5911 } else {
5912 var4 = " ";
5913 var5 = 1;
5914 var6 = string__NativeString__to_s_with_length(var4, var5);
5915 var3 = var6;
5916 varonce = var3;
5917 }
5918 var7 = ((val* (*)(val*, long))(var3->class->vft[COLOR_string__String___42d]))(var3, var_l) /* * on <var3:String>*/;
5919 ((void (*)(val*, val*))(var2->class->vft[COLOR_string__Buffer__from]))(var2, var7) /* from on <var2:Buffer>*/;
5920 var_s = var2;
5921 string__Int__fill_buffer(self, var_s, var_base, var_signed);
5922 var8 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Object__to_s]))(var_s) /* to_s on <var_s:Buffer>*/;
5923 var = var8;
5924 goto RET_LABEL;
5925 RET_LABEL:;
5926 return var;
5927 }
5928 /* method string#Int#to_base for (self: Object, Int, Bool): String */
5929 val* VIRTUAL_string__Int__to_base(val* self, long p0, short int p1) {
5930 val* var /* : String */;
5931 val* var1 /* : String */;
5932 long var2 /* : Int */;
5933 var2 = ((struct instance_kernel__Int*)self)->value; /* autounbox from Object to Int */;
5934 var1 = string__Int__to_base(var2, p0, p1);
5935 var = var1;
5936 RET_LABEL:;
5937 return var;
5938 }
5939 /* method string#Float#to_s for (self: Float): String */
5940 val* string__Float__to_s(double self) {
5941 val* var /* : String */;
5942 long var1 /* : Int */;
5943 val* var2 /* : String */;
5944 val* var_str /* var str: String */;
5945 long var3 /* : Int */;
5946 long var_len /* var len: Int */;
5947 val* var4 /* : Range[Int] */;
5948 long var5 /* : Int */;
5949 long var6 /* : Int */;
5950 long var7 /* : Int */;
5951 long var9 /* : Int */;
5952 val* var10 /* : Discrete */;
5953 val* var11 /* : Discrete */;
5954 val* var12 /* : Iterator[nullable Object] */;
5955 short int var13 /* : Bool */;
5956 val* var14 /* : nullable Object */;
5957 long var_i /* var i: Int */;
5958 long var15 /* : Int */;
5959 long var16 /* : Int */;
5960 long var17 /* : Int */;
5961 long var19 /* : Int */;
5962 long var20 /* : Int */;
5963 long var22 /* : Int */;
5964 long var_j /* var j: Int */;
5965 val* var23 /* : nullable Object */;
5966 char var24 /* : Char */;
5967 char var_c /* var c: Char */;
5968 char var25 /* : Char */;
5969 short int var26 /* : Bool */;
5970 short int var28 /* : Bool */;
5971 char var29 /* : Char */;
5972 short int var30 /* : Bool */;
5973 short int var32 /* : Bool */;
5974 long var33 /* : Int */;
5975 long var34 /* : Int */;
5976 long var35 /* : Int */;
5977 long var37 /* : Int */;
5978 val* var38 /* : String */;
5979 long var39 /* : Int */;
5980 long var40 /* : Int */;
5981 long var41 /* : Int */;
5982 long var43 /* : Int */;
5983 val* var44 /* : String */;
5984 var1 = 3;
5985 var2 = string__Float__to_precision(self, var1);
5986 var_str = var2;
5987 var3 = ((long (*)(val*))(var_str->class->vft[COLOR_abstract_collection__Collection__length]))(var_str) /* length on <var_str:String>*/;
5988 var_len = var3;
5989 var4 = NEW_range__Range(&type_range__Rangekernel__Int);
5990 var5 = 0;
5991 var6 = 1;
5992 { /* Inline kernel#Int#- (var_len,var6) */
5993 var9 = var_len - var6;
5994 var7 = var9;
5995 goto RET_LABEL8;
5996 RET_LABEL8:(void)0;
5997 }
5998 var10 = BOX_kernel__Int(var5); /* autobox from Int to Discrete */
5999 var11 = BOX_kernel__Int(var7); /* autobox from Int to Discrete */
6000 ((void (*)(val*, val*, val*))(var4->class->vft[COLOR_range__Range__init]))(var4, var10, var11) /* init on <var4:Range[Int]>*/;
6001 var12 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Collection__iterator]))(var4) /* iterator on <var4:Range[Int]>*/;
6002 for(;;) {
6003 var13 = ((short int (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var12) /* is_ok on <var12:Iterator[nullable Object]>*/;
6004 if(!var13) break;
6005 var14 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__item]))(var12) /* item on <var12:Iterator[nullable Object]>*/;
6006 var15 = ((struct instance_kernel__Int*)var14)->value; /* autounbox from nullable Object to Int */;
6007 var_i = var15;
6008 var16 = 1;
6009 { /* Inline kernel#Int#- (var_len,var16) */
6010 var19 = var_len - var16;
6011 var17 = var19;
6012 goto RET_LABEL18;
6013 RET_LABEL18:(void)0;
6014 }
6015 { /* Inline kernel#Int#- (var17,var_i) */
6016 var22 = var17 - var_i;
6017 var20 = var22;
6018 goto RET_LABEL21;
6019 RET_LABEL21:(void)0;
6020 }
6021 var_j = var20;
6022 var23 = ((val* (*)(val*, long))(var_str->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_str, var_j) /* [] on <var_str:String>*/;
6023 var24 = ((struct instance_kernel__Char*)var23)->value; /* autounbox from nullable Object to Char */;
6024 var_c = var24;
6025 var25 = '0';
6026 { /* Inline kernel#Char#== (var_c,var25) */
6027 var28 = var_c == var25;
6028 var26 = var28;
6029 goto RET_LABEL27;
6030 RET_LABEL27:(void)0;
6031 }
6032 if (var26){
6033 goto CONTINUE_label;
6034 } else {
6035 var29 = '.';
6036 { /* Inline kernel#Char#== (var_c,var29) */
6037 var32 = var_c == var29;
6038 var30 = var32;
6039 goto RET_LABEL31;
6040 RET_LABEL31:(void)0;
6041 }
6042 if (var30){
6043 var33 = 0;
6044 var34 = 2;
6045 { /* Inline kernel#Int#+ (var_j,var34) */
6046 var37 = var_j + var34;
6047 var35 = var37;
6048 goto RET_LABEL36;
6049 RET_LABEL36:(void)0;
6050 }
6051 var38 = ((val* (*)(val*, long, long))(var_str->class->vft[COLOR_string__AbstractString__substring]))(var_str, var33, var35) /* substring on <var_str:String>*/;
6052 var = var38;
6053 goto RET_LABEL;
6054 } else {
6055 var39 = 0;
6056 var40 = 1;
6057 { /* Inline kernel#Int#+ (var_j,var40) */
6058 var43 = var_j + var40;
6059 var41 = var43;
6060 goto RET_LABEL42;
6061 RET_LABEL42:(void)0;
6062 }
6063 var44 = ((val* (*)(val*, long, long))(var_str->class->vft[COLOR_string__AbstractString__substring]))(var_str, var39, var41) /* substring on <var_str:String>*/;
6064 var = var44;
6065 goto RET_LABEL;
6066 }
6067 }
6068 CONTINUE_label: (void)0;
6069 ((void (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__next]))(var12) /* next on <var12:Iterator[nullable Object]>*/;
6070 }
6071 BREAK_label: (void)0;
6072 var = var_str;
6073 goto RET_LABEL;
6074 RET_LABEL:;
6075 return var;
6076 }
6077 /* method string#Float#to_s for (self: Object): String */
6078 val* VIRTUAL_string__Float__to_s(val* self) {
6079 val* var /* : String */;
6080 val* var1 /* : String */;
6081 double var2 /* : Float */;
6082 var2 = ((struct instance_kernel__Float*)self)->value; /* autounbox from Object to Float */;
6083 var1 = string__Float__to_s(var2);
6084 var = var1;
6085 RET_LABEL:;
6086 return var;
6087 }
6088 /* method string#Float#to_precision for (self: Float, Int): String */
6089 val* string__Float__to_precision(double self, long p0) {
6090 val* var /* : String */;
6091 long var_nb /* var nb: Int */;
6092 long var1 /* : Int */;
6093 short int var2 /* : Bool */;
6094 short int var4 /* : Bool */;
6095 long var5 /* : Int */;
6096 long var7 /* : Int */;
6097 val* var8 /* : String */;
6098 double var_f /* var f: Float */;
6099 val* var9 /* : Range[Int] */;
6100 long var10 /* : Int */;
6101 val* var11 /* : Discrete */;
6102 val* var12 /* : Discrete */;
6103 val* var13 /* : Iterator[nullable Object] */;
6104 short int var14 /* : Bool */;
6105 val* var15 /* : nullable Object */;
6106 long var_i /* var i: Int */;
6107 long var16 /* : Int */;
6108 double var17 /* : Float */;
6109 double var18 /* : Float */;
6110 double var20 /* : Float */;
6111 double var21 /* : Float */;
6112 short int var22 /* : Bool */;
6113 short int var24 /* : Bool */;
6114 double var25 /* : Float */;
6115 double var26 /* : Float */;
6116 double var28 /* : Float */;
6117 double var29 /* : Float */;
6118 double var30 /* : Float */;
6119 double var32 /* : Float */;
6120 long var33 /* : Int */;
6121 long var35 /* : Int */;
6122 long var_i36 /* var i: Int */;
6123 long var37 /* : Int */;
6124 short int var38 /* : Bool */;
6125 short int var40 /* : Bool */;
6126 static val* varonce;
6127 val* var41 /* : String */;
6128 char* var42 /* : NativeString */;
6129 long var43 /* : Int */;
6130 val* var44 /* : String */;
6131 val* var45 /* : String */;
6132 val* var_s /* var s: String */;
6133 long var46 /* : Int */;
6134 long var_sl /* var sl: Int */;
6135 short int var47 /* : Bool */;
6136 short int var49 /* : Bool */;
6137 int cltype;
6138 int idtype;
6139 const char* var_class_name;
6140 short int var50 /* : Bool */;
6141 long var51 /* : Int */;
6142 long var52 /* : Int */;
6143 long var53 /* : Int */;
6144 long var55 /* : Int */;
6145 val* var56 /* : String */;
6146 val* var_p1 /* var p1: String */;
6147 long var57 /* : Int */;
6148 long var58 /* : Int */;
6149 long var60 /* : Int */;
6150 val* var61 /* : String */;
6151 val* var_p2 /* var p2: String */;
6152 static val* varonce62;
6153 val* var63 /* : String */;
6154 char* var64 /* : NativeString */;
6155 long var65 /* : Int */;
6156 val* var66 /* : String */;
6157 val* var67 /* : String */;
6158 val* var68 /* : String */;
6159 static val* varonce69;
6160 val* var70 /* : String */;
6161 char* var71 /* : NativeString */;
6162 long var72 /* : Int */;
6163 val* var73 /* : String */;
6164 static val* varonce74;
6165 val* var75 /* : String */;
6166 char* var76 /* : NativeString */;
6167 long var77 /* : Int */;
6168 val* var78 /* : String */;
6169 long var79 /* : Int */;
6170 long var81 /* : Int */;
6171 val* var82 /* : String */;
6172 val* var83 /* : String */;
6173 val* var84 /* : String */;
6174 var_nb = p0;
6175 var1 = 0;
6176 { /* Inline kernel#Int#== (var_nb,var1) */
6177 var4 = var_nb == var1;
6178 var2 = var4;
6179 goto RET_LABEL3;
6180 RET_LABEL3:(void)0;
6181 }
6182 if (var2){
6183 { /* Inline kernel#Float#to_i (self) */
6184 var7 = (long)self;
6185 var5 = var7;
6186 goto RET_LABEL6;
6187 RET_LABEL6:(void)0;
6188 }
6189 var8 = string__Int__to_s(var5);
6190 var = var8;
6191 goto RET_LABEL;
6192 } else {
6193 }
6194 var_f = self;
6195 var9 = NEW_range__Range(&type_range__Rangekernel__Int);
6196 var10 = 0;
6197 var11 = BOX_kernel__Int(var10); /* autobox from Int to Discrete */
6198 var12 = BOX_kernel__Int(var_nb); /* autobox from Int to Discrete */
6199 ((void (*)(val*, val*, val*))(var9->class->vft[COLOR_range__Range__without_last]))(var9, var11, var12) /* without_last on <var9:Range[Int]>*/;
6200 var13 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Collection__iterator]))(var9) /* iterator on <var9:Range[Int]>*/;
6201 for(;;) {
6202 var14 = ((short int (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var13) /* is_ok on <var13:Iterator[nullable Object]>*/;
6203 if(!var14) break;
6204 var15 = ((val* (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__item]))(var13) /* item on <var13:Iterator[nullable Object]>*/;
6205 var16 = ((struct instance_kernel__Int*)var15)->value; /* autounbox from nullable Object to Int */;
6206 var_i = var16;
6207 var17 = 10.0;
6208 { /* Inline kernel#Float#* (var_f,var17) */
6209 var20 = var_f * var17;
6210 var18 = var20;
6211 goto RET_LABEL19;
6212 RET_LABEL19:(void)0;
6213 }
6214 var_f = var18;
6215 CONTINUE_label: (void)0;
6216 ((void (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__next]))(var13) /* next on <var13:Iterator[nullable Object]>*/;
6217 }
6218 BREAK_label: (void)0;
6219 var21 = 0.0;
6220 { /* Inline kernel#Float#> (self,var21) */
6221 var24 = self > var21;
6222 var22 = var24;
6223 goto RET_LABEL23;
6224 RET_LABEL23:(void)0;
6225 }
6226 if (var22){
6227 var25 = 0.5;
6228 { /* Inline kernel#Float#+ (var_f,var25) */
6229 var28 = var_f + var25;
6230 var26 = var28;
6231 goto RET_LABEL27;
6232 RET_LABEL27:(void)0;
6233 }
6234 var_f = var26;
6235 } else {
6236 var29 = 0.5;
6237 { /* Inline kernel#Float#- (var_f,var29) */
6238 var32 = var_f - var29;
6239 var30 = var32;
6240 goto RET_LABEL31;
6241 RET_LABEL31:(void)0;
6242 }
6243 var_f = var30;
6244 }
6245 { /* Inline kernel#Float#to_i (var_f) */
6246 var35 = (long)var_f;
6247 var33 = var35;
6248 goto RET_LABEL34;
6249 RET_LABEL34:(void)0;
6250 }
6251 var_i36 = var33;
6252 var37 = 0;
6253 { /* Inline kernel#Int#== (var_i36,var37) */
6254 var40 = var_i36 == var37;
6255 var38 = var40;
6256 goto RET_LABEL39;
6257 RET_LABEL39:(void)0;
6258 }
6259 if (var38){
6260 if (varonce) {
6261 var41 = varonce;
6262 } else {
6263 var42 = "0.0";
6264 var43 = 3;
6265 var44 = string__NativeString__to_s_with_length(var42, var43);
6266 var41 = var44;
6267 varonce = var41;
6268 }
6269 var = var41;
6270 goto RET_LABEL;
6271 } else {
6272 }
6273 var45 = string__Int__to_s(var_i36);
6274 var_s = var45;
6275 var46 = ((long (*)(val*))(var_s->class->vft[COLOR_abstract_collection__Collection__length]))(var_s) /* length on <var_s:String>*/;
6276 var_sl = var46;
6277 { /* Inline kernel#Int#> (var_sl,var_nb) */
6278 /* Covariant cast for argument 0 (i) <var_nb:Int> isa OTHER */
6279 /* <var_nb:Int> isa OTHER */
6280 var49 = 1; /* easy <var_nb:Int> isa OTHER*/
6281 if (!var49) {
6282 var_class_name = type_kernel__Int.name;
6283 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
6284 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
6285 show_backtrace(1);
6286 }
6287 var50 = var_sl > var_nb;
6288 var47 = var50;
6289 goto RET_LABEL48;
6290 RET_LABEL48:(void)0;
6291 }
6292 if (var47){
6293 var51 = 0;
6294 var52 = ((long (*)(val*))(var_s->class->vft[COLOR_abstract_collection__Collection__length]))(var_s) /* length on <var_s:String>*/;
6295 { /* Inline kernel#Int#- (var52,var_nb) */
6296 var55 = var52 - var_nb;
6297 var53 = var55;
6298 goto RET_LABEL54;
6299 RET_LABEL54:(void)0;
6300 }
6301 var56 = ((val* (*)(val*, long, long))(var_s->class->vft[COLOR_string__AbstractString__substring]))(var_s, var51, var53) /* substring on <var_s:String>*/;
6302 var_p1 = var56;
6303 var57 = ((long (*)(val*))(var_s->class->vft[COLOR_abstract_collection__Collection__length]))(var_s) /* length on <var_s:String>*/;
6304 { /* Inline kernel#Int#- (var57,var_nb) */
6305 var60 = var57 - var_nb;
6306 var58 = var60;
6307 goto RET_LABEL59;
6308 RET_LABEL59:(void)0;
6309 }
6310 var61 = ((val* (*)(val*, long, long))(var_s->class->vft[COLOR_string__AbstractString__substring]))(var_s, var58, var_nb) /* substring on <var_s:String>*/;
6311 var_p2 = var61;
6312 if (varonce62) {
6313 var63 = varonce62;
6314 } else {
6315 var64 = ".";
6316 var65 = 1;
6317 var66 = string__NativeString__to_s_with_length(var64, var65);
6318 var63 = var66;
6319 varonce62 = var63;
6320 }
6321 var67 = ((val* (*)(val*, val*))(var_p1->class->vft[COLOR_string__String___43d]))(var_p1, var63) /* + on <var_p1:String>*/;
6322 var68 = ((val* (*)(val*, val*))(var67->class->vft[COLOR_string__String___43d]))(var67, var_p2) /* + on <var67:String>*/;
6323 var = var68;
6324 goto RET_LABEL;
6325 } else {
6326 if (varonce69) {
6327 var70 = varonce69;
6328 } else {
6329 var71 = "0.";
6330 var72 = 2;
6331 var73 = string__NativeString__to_s_with_length(var71, var72);
6332 var70 = var73;
6333 varonce69 = var70;
6334 }
6335 if (varonce74) {
6336 var75 = varonce74;
6337 } else {
6338 var76 = "0";
6339 var77 = 1;
6340 var78 = string__NativeString__to_s_with_length(var76, var77);
6341 var75 = var78;
6342 varonce74 = var75;
6343 }
6344 { /* Inline kernel#Int#- (var_nb,var_sl) */
6345 var81 = var_nb - var_sl;
6346 var79 = var81;
6347 goto RET_LABEL80;
6348 RET_LABEL80:(void)0;
6349 }
6350 var82 = ((val* (*)(val*, long))(var75->class->vft[COLOR_string__String___42d]))(var75, var79) /* * on <var75:String>*/;
6351 var83 = ((val* (*)(val*, val*))(var70->class->vft[COLOR_string__String___43d]))(var70, var82) /* + on <var70:String>*/;
6352 var84 = ((val* (*)(val*, val*))(var83->class->vft[COLOR_string__String___43d]))(var83, var_s) /* + on <var83:String>*/;
6353 var = var84;
6354 goto RET_LABEL;
6355 }
6356 RET_LABEL:;
6357 return var;
6358 }
6359 /* method string#Float#to_precision for (self: Object, Int): String */
6360 val* VIRTUAL_string__Float__to_precision(val* self, long p0) {
6361 val* var /* : String */;
6362 val* var1 /* : String */;
6363 double var2 /* : Float */;
6364 var2 = ((struct instance_kernel__Float*)self)->value; /* autounbox from Object to Float */;
6365 var1 = string__Float__to_precision(var2, p0);
6366 var = var1;
6367 RET_LABEL:;
6368 return var;
6369 }
6370 /* method string#Float#to_precision_native for (self: Float, Int): String */
6371 val* string__Float__to_precision_native(double self, long p0) {
6372 val* var /* : String */;
6373 fprintf(stderr, "NOT YET IMPLEMENTED nitni for string#Float#to_precision_native at lib/standard/string.nit:946,2--955,3\n");
6374 show_backtrace(1);
6375 RET_LABEL:;
6376 return var;
6377 }
6378 /* method string#Float#to_precision_native for (self: Object, Int): String */
6379 val* VIRTUAL_string__Float__to_precision_native(val* self, long p0) {
6380 val* var /* : String */;
6381 val* var1 /* : String */;
6382 double var2 /* : Float */;
6383 var2 = ((struct instance_kernel__Float*)self)->value; /* autounbox from Object to Float */;
6384 var1 = string__Float__to_precision_native(var2, p0);
6385 var = var1;
6386 RET_LABEL:;
6387 return var;
6388 }
6389 /* method string#Char#to_s for (self: Char): String */
6390 val* string__Char__to_s(char self) {
6391 val* var /* : String */;
6392 val* var1 /* : Buffer */;
6393 long var2 /* : Int */;
6394 val* var_s /* var s: Buffer */;
6395 long var3 /* : Int */;
6396 val* var4 /* : nullable Object */;
6397 val* var5 /* : String */;
6398 var1 = NEW_string__Buffer(&type_string__Buffer);
6399 var2 = 1;
6400 ((void (*)(val*, long))(var1->class->vft[COLOR_string__Buffer__with_capacity]))(var1, var2) /* with_capacity on <var1:Buffer>*/;
6401 var_s = var1;
6402 var3 = 0;
6403 var4 = BOX_kernel__Char(self); /* autobox from Char to nullable Object */
6404 ((void (*)(val*, long, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_s, var3, var4) /* []= on <var_s:Buffer>*/;
6405 var5 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Object__to_s]))(var_s) /* to_s on <var_s:Buffer>*/;
6406 var = var5;
6407 goto RET_LABEL;
6408 RET_LABEL:;
6409 return var;
6410 }
6411 /* method string#Char#to_s for (self: Object): String */
6412 val* VIRTUAL_string__Char__to_s(val* self) {
6413 val* var /* : String */;
6414 val* var1 /* : String */;
6415 char var2 /* : Char */;
6416 var2 = ((struct instance_kernel__Char*)self)->value; /* autounbox from Object to Char */;
6417 var1 = string__Char__to_s(var2);
6418 var = var1;
6419 RET_LABEL:;
6420 return var;
6421 }
6422 /* method string#Char#is_numeric for (self: Char): Bool */
6423 short int string__Char__is_numeric(char self) {
6424 short int var /* : Bool */;
6425 short int var1 /* : Bool */;
6426 char var2 /* : Char */;
6427 short int var3 /* : Bool */;
6428 short int var5 /* : Bool */;
6429 int cltype;
6430 int idtype;
6431 const char* var_class_name;
6432 short int var6 /* : Bool */;
6433 short int var_ /* var : Bool */;
6434 char var7 /* : Char */;
6435 short int var8 /* : Bool */;
6436 short int var10 /* : Bool */;
6437 int cltype11;
6438 int idtype12;
6439 const char* var_class_name13;
6440 short int var14 /* : Bool */;
6441 short int var15 /* : Bool */;
6442 short int var16 /* : Bool */;
6443 var2 = '0';
6444 { /* Inline kernel#Char#>= (self,var2) */
6445 /* Covariant cast for argument 0 (i) <var2:Char> isa OTHER */
6446 /* <var2:Char> isa OTHER */
6447 var5 = 1; /* easy <var2:Char> isa OTHER*/
6448 if (!var5) {
6449 var_class_name = type_kernel__Char.name;
6450 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
6451 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 438);
6452 show_backtrace(1);
6453 }
6454 var6 = self >= var2;
6455 var3 = var6;
6456 goto RET_LABEL4;
6457 RET_LABEL4:(void)0;
6458 }
6459 var_ = var3;
6460 if (var3){
6461 var7 = '9';
6462 { /* Inline kernel#Char#<= (self,var7) */
6463 /* Covariant cast for argument 0 (i) <var7:Char> isa OTHER */
6464 /* <var7:Char> isa OTHER */
6465 var10 = 1; /* easy <var7:Char> isa OTHER*/
6466 if (!var10) {
6467 var_class_name13 = type_kernel__Char.name;
6468 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
6469 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 436);
6470 show_backtrace(1);
6471 }
6472 var14 = self <= var7;
6473 var8 = var14;
6474 goto RET_LABEL9;
6475 RET_LABEL9:(void)0;
6476 }
6477 var1 = var8;
6478 } else {
6479 var1 = var_;
6480 }
6481 if (var1){
6482 var15 = 1;
6483 var = var15;
6484 goto RET_LABEL;
6485 } else {
6486 }
6487 var16 = 0;
6488 var = var16;
6489 goto RET_LABEL;
6490 RET_LABEL:;
6491 return var;
6492 }
6493 /* method string#Char#is_numeric for (self: Object): Bool */
6494 short int VIRTUAL_string__Char__is_numeric(val* self) {
6495 short int var /* : Bool */;
6496 short int var1 /* : Bool */;
6497 char var2 /* : Char */;
6498 var2 = ((struct instance_kernel__Char*)self)->value; /* autounbox from Object to Char */;
6499 var1 = string__Char__is_numeric(var2);
6500 var = var1;
6501 RET_LABEL:;
6502 return var;
6503 }
6504 /* method string#Char#is_alpha for (self: Char): Bool */
6505 short int string__Char__is_alpha(char self) {
6506 short int var /* : Bool */;
6507 short int var1 /* : Bool */;
6508 short int var2 /* : Bool */;
6509 char var3 /* : Char */;
6510 short int var4 /* : Bool */;
6511 short int var6 /* : Bool */;
6512 int cltype;
6513 int idtype;
6514 const char* var_class_name;
6515 short int var7 /* : Bool */;
6516 short int var_ /* var : Bool */;
6517 char var8 /* : Char */;
6518 short int var9 /* : Bool */;
6519 short int var11 /* : Bool */;
6520 int cltype12;
6521 int idtype13;
6522 const char* var_class_name14;
6523 short int var15 /* : Bool */;
6524 short int var_16 /* var : Bool */;
6525 short int var17 /* : Bool */;
6526 char var18 /* : Char */;
6527 short int var19 /* : Bool */;
6528 short int var21 /* : Bool */;
6529 int cltype22;
6530 int idtype23;
6531 const char* var_class_name24;
6532 short int var25 /* : Bool */;
6533 short int var_26 /* var : Bool */;
6534 char var27 /* : Char */;
6535 short int var28 /* : Bool */;
6536 short int var30 /* : Bool */;
6537 int cltype31;
6538 int idtype32;
6539 const char* var_class_name33;
6540 short int var34 /* : Bool */;
6541 short int var35 /* : Bool */;
6542 short int var36 /* : Bool */;
6543 var3 = 'a';
6544 { /* Inline kernel#Char#>= (self,var3) */
6545 /* Covariant cast for argument 0 (i) <var3:Char> isa OTHER */
6546 /* <var3:Char> isa OTHER */
6547 var6 = 1; /* easy <var3:Char> isa OTHER*/
6548 if (!var6) {
6549 var_class_name = type_kernel__Char.name;
6550 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
6551 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 438);
6552 show_backtrace(1);
6553 }
6554 var7 = self >= var3;
6555 var4 = var7;
6556 goto RET_LABEL5;
6557 RET_LABEL5:(void)0;
6558 }
6559 var_ = var4;
6560 if (var4){
6561 var8 = 'z';
6562 { /* Inline kernel#Char#<= (self,var8) */
6563 /* Covariant cast for argument 0 (i) <var8:Char> isa OTHER */
6564 /* <var8:Char> isa OTHER */
6565 var11 = 1; /* easy <var8:Char> isa OTHER*/
6566 if (!var11) {
6567 var_class_name14 = type_kernel__Char.name;
6568 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name14);
6569 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 436);
6570 show_backtrace(1);
6571 }
6572 var15 = self <= var8;
6573 var9 = var15;
6574 goto RET_LABEL10;
6575 RET_LABEL10:(void)0;
6576 }
6577 var2 = var9;
6578 } else {
6579 var2 = var_;
6580 }
6581 var_16 = var2;
6582 if (var2){
6583 var1 = var_16;
6584 } else {
6585 var18 = 'A';
6586 { /* Inline kernel#Char#>= (self,var18) */
6587 /* Covariant cast for argument 0 (i) <var18:Char> isa OTHER */
6588 /* <var18:Char> isa OTHER */
6589 var21 = 1; /* easy <var18:Char> isa OTHER*/
6590 if (!var21) {
6591 var_class_name24 = type_kernel__Char.name;
6592 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name24);
6593 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 438);
6594 show_backtrace(1);
6595 }
6596 var25 = self >= var18;
6597 var19 = var25;
6598 goto RET_LABEL20;
6599 RET_LABEL20:(void)0;
6600 }
6601 var_26 = var19;
6602 if (var19){
6603 var27 = 'Z';
6604 { /* Inline kernel#Char#<= (self,var27) */
6605 /* Covariant cast for argument 0 (i) <var27:Char> isa OTHER */
6606 /* <var27:Char> isa OTHER */
6607 var30 = 1; /* easy <var27:Char> isa OTHER*/
6608 if (!var30) {
6609 var_class_name33 = type_kernel__Char.name;
6610 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name33);
6611 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 436);
6612 show_backtrace(1);
6613 }
6614 var34 = self <= var27;
6615 var28 = var34;
6616 goto RET_LABEL29;
6617 RET_LABEL29:(void)0;
6618 }
6619 var17 = var28;
6620 } else {
6621 var17 = var_26;
6622 }
6623 var1 = var17;
6624 }
6625 if (var1){
6626 var35 = 1;
6627 var = var35;
6628 goto RET_LABEL;
6629 } else {
6630 }
6631 var36 = 0;
6632 var = var36;
6633 goto RET_LABEL;
6634 RET_LABEL:;
6635 return var;
6636 }
6637 /* method string#Char#is_alpha for (self: Object): Bool */
6638 short int VIRTUAL_string__Char__is_alpha(val* self) {
6639 short int var /* : Bool */;
6640 short int var1 /* : Bool */;
6641 char var2 /* : Char */;
6642 var2 = ((struct instance_kernel__Char*)self)->value; /* autounbox from Object to Char */;
6643 var1 = string__Char__is_alpha(var2);
6644 var = var1;
6645 RET_LABEL:;
6646 return var;
6647 }
6648 /* method string#Char#is_alphanumeric for (self: Char): Bool */
6649 short int string__Char__is_alphanumeric(char self) {
6650 short int var /* : Bool */;
6651 short int var1 /* : Bool */;
6652 short int var2 /* : Bool */;
6653 short int var_ /* var : Bool */;
6654 short int var3 /* : Bool */;
6655 short int var4 /* : Bool */;
6656 short int var5 /* : Bool */;
6657 var2 = string__Char__is_numeric(self);
6658 var_ = var2;
6659 if (var2){
6660 var1 = var_;
6661 } else {
6662 var3 = string__Char__is_alpha(self);
6663 var1 = var3;
6664 }
6665 if (var1){
6666 var4 = 1;
6667 var = var4;
6668 goto RET_LABEL;
6669 } else {
6670 }
6671 var5 = 0;
6672 var = var5;
6673 goto RET_LABEL;
6674 RET_LABEL:;
6675 return var;
6676 }
6677 /* method string#Char#is_alphanumeric for (self: Object): Bool */
6678 short int VIRTUAL_string__Char__is_alphanumeric(val* self) {
6679 short int var /* : Bool */;
6680 short int var1 /* : Bool */;
6681 char var2 /* : Char */;
6682 var2 = ((struct instance_kernel__Char*)self)->value; /* autounbox from Object to Char */;
6683 var1 = string__Char__is_alphanumeric(var2);
6684 var = var1;
6685 RET_LABEL:;
6686 return var;
6687 }
6688 /* method string#Collection#to_s for (self: Collection[nullable Object]): String */
6689 val* string__Collection__to_s(val* self) {
6690 val* var /* : String */;
6691 val* var1 /* : Buffer */;
6692 val* var_s /* var s: Buffer */;
6693 val* var2 /* : Iterator[nullable Object] */;
6694 short int var3 /* : Bool */;
6695 val* var4 /* : nullable Object */;
6696 val* var_e /* var e: nullable Object */;
6697 val* var5 /* : null */;
6698 short int var6 /* : Bool */;
6699 val* var7 /* : String */;
6700 val* var8 /* : String */;
6701 var1 = NEW_string__Buffer(&type_string__Buffer);
6702 ((void (*)(val*))(var1->class->vft[COLOR_string__Buffer__init]))(var1) /* init on <var1:Buffer>*/;
6703 var_s = var1;
6704 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__iterator]))(self) /* iterator on <self:Collection[nullable Object]>*/;
6705 for(;;) {
6706 var3 = ((short int (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var2) /* is_ok on <var2:Iterator[nullable Object]>*/;
6707 if(!var3) break;
6708 var4 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__item]))(var2) /* item on <var2:Iterator[nullable Object]>*/;
6709 var_e = var4;
6710 var5 = NULL;
6711 if (var_e == NULL) {
6712 var6 = 0; /* is null */
6713 } else {
6714 var6 = 1; /* arg is null and recv is not */
6715 }
6716 if (var6){
6717 if (var_e == NULL) {
6718 fprintf(stderr, "Runtime error: %s", "Reciever is null");
6719 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 997);
6720 show_backtrace(1);
6721 } else {
6722 var7 = ((val* (*)(val*))(var_e->class->vft[COLOR_string__Object__to_s]))(var_e) /* to_s on <var_e:nullable Object>*/;
6723 }
6724 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence__append]))(var_s, var7) /* append on <var_s:Buffer>*/;
6725 } else {
6726 }
6727 CONTINUE_label: (void)0;
6728 ((void (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__next]))(var2) /* next on <var2:Iterator[nullable Object]>*/;
6729 }
6730 BREAK_label: (void)0;
6731 var8 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Object__to_s]))(var_s) /* to_s on <var_s:Buffer>*/;
6732 var = var8;
6733 goto RET_LABEL;
6734 RET_LABEL:;
6735 return var;
6736 }
6737 /* method string#Collection#to_s for (self: Object): String */
6738 val* VIRTUAL_string__Collection__to_s(val* self) {
6739 val* var /* : String */;
6740 val* var1 /* : String */;
6741 var1 = string__Collection__to_s(self);
6742 var = var1;
6743 RET_LABEL:;
6744 return var;
6745 }
6746 /* method string#Collection#join for (self: Collection[nullable Object], String): String */
6747 val* string__Collection__join(val* self, val* p0) {
6748 val* var /* : String */;
6749 val* var_sep /* var sep: String */;
6750 short int var1 /* : Bool */;
6751 static val* varonce;
6752 val* var2 /* : String */;
6753 char* var3 /* : NativeString */;
6754 long var4 /* : Int */;
6755 val* var5 /* : String */;
6756 val* var6 /* : Buffer */;
6757 val* var_s /* var s: Buffer */;
6758 val* var7 /* : Iterator[nullable Object] */;
6759 val* var_i /* var i: Iterator[nullable Object] */;
6760 val* var8 /* : nullable Object */;
6761 val* var_e /* var e: nullable Object */;
6762 val* var9 /* : null */;
6763 short int var10 /* : Bool */;
6764 val* var11 /* : String */;
6765 short int var12 /* : Bool */;
6766 val* var13 /* : nullable Object */;
6767 val* var14 /* : null */;
6768 short int var15 /* : Bool */;
6769 val* var16 /* : String */;
6770 val* var17 /* : String */;
6771 var_sep = p0;
6772 var1 = ((short int (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__is_empty]))(self) /* is_empty on <self:Collection[nullable Object]>*/;
6773 if (var1){
6774 if (varonce) {
6775 var2 = varonce;
6776 } else {
6777 var3 = "";
6778 var4 = 0;
6779 var5 = string__NativeString__to_s_with_length(var3, var4);
6780 var2 = var5;
6781 varonce = var2;
6782 }
6783 var = var2;
6784 goto RET_LABEL;
6785 } else {
6786 }
6787 var6 = NEW_string__Buffer(&type_string__Buffer);
6788 ((void (*)(val*))(var6->class->vft[COLOR_string__Buffer__init]))(var6) /* init on <var6:Buffer>*/;
6789 var_s = var6;
6790 var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__iterator]))(self) /* iterator on <self:Collection[nullable Object]>*/;
6791 var_i = var7;
6792 var8 = ((val* (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__item]))(var_i) /* item on <var_i:Iterator[nullable Object]>*/;
6793 var_e = var8;
6794 var9 = NULL;
6795 if (var_e == NULL) {
6796 var10 = 0; /* is null */
6797 } else {
6798 var10 = 1; /* arg is null and recv is not */
6799 }
6800 if (var10){
6801 if (var_e == NULL) {
6802 fprintf(stderr, "Runtime error: %s", "Reciever is null");
6803 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 1014);
6804 show_backtrace(1);
6805 } else {
6806 var11 = ((val* (*)(val*))(var_e->class->vft[COLOR_string__Object__to_s]))(var_e) /* to_s on <var_e:nullable Object>*/;
6807 }
6808 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence__append]))(var_s, var11) /* append on <var_s:Buffer>*/;
6809 } else {
6810 }
6811 ((void (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__next]))(var_i) /* next on <var_i:Iterator[nullable Object]>*/;
6812 for(;;) {
6813 var12 = ((short int (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_i) /* is_ok on <var_i:Iterator[nullable Object]>*/;
6814 if (!var12) break;
6815 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence__append]))(var_s, var_sep) /* append on <var_s:Buffer>*/;
6816 var13 = ((val* (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__item]))(var_i) /* item on <var_i:Iterator[nullable Object]>*/;
6817 var_e = var13;
6818 var14 = NULL;
6819 if (var_e == NULL) {
6820 var15 = 0; /* is null */
6821 } else {
6822 var15 = 1; /* arg is null and recv is not */
6823 }
6824 if (var15){
6825 if (var_e == NULL) {
6826 fprintf(stderr, "Runtime error: %s", "Reciever is null");
6827 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 1021);
6828 show_backtrace(1);
6829 } else {
6830 var16 = ((val* (*)(val*))(var_e->class->vft[COLOR_string__Object__to_s]))(var_e) /* to_s on <var_e:nullable Object>*/;
6831 }
6832 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence__append]))(var_s, var16) /* append on <var_s:Buffer>*/;
6833 } else {
6834 }
6835 ((void (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__next]))(var_i) /* next on <var_i:Iterator[nullable Object]>*/;
6836 CONTINUE_label: (void)0;
6837 }
6838 BREAK_label: (void)0;
6839 var17 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Object__to_s]))(var_s) /* to_s on <var_s:Buffer>*/;
6840 var = var17;
6841 goto RET_LABEL;
6842 RET_LABEL:;
6843 return var;
6844 }
6845 /* method string#Collection#join for (self: Object, String): String */
6846 val* VIRTUAL_string__Collection__join(val* self, val* p0) {
6847 val* var /* : String */;
6848 val* var1 /* : String */;
6849 var1 = string__Collection__join(self, p0);
6850 var = var1;
6851 RET_LABEL:;
6852 return var;
6853 }
6854 /* method string#Array#to_s for (self: Array[nullable Object]): String */
6855 val* string__Array__to_s(val* self) {
6856 val* var /* : String */;
6857 val* var1 /* : Buffer */;
6858 val* var_s /* var s: Buffer */;
6859 long var2 /* : Int */;
6860 long var_i /* var i: Int */;
6861 long var3 /* : Int */;
6862 long var_l /* var l: Int */;
6863 short int var4 /* : Bool */;
6864 short int var6 /* : Bool */;
6865 int cltype;
6866 int idtype;
6867 const char* var_class_name;
6868 short int var7 /* : Bool */;
6869 val* var8 /* : nullable Object */;
6870 val* var_e /* var e: nullable Object */;
6871 val* var9 /* : null */;
6872 short int var10 /* : Bool */;
6873 val* var11 /* : String */;
6874 long var12 /* : Int */;
6875 long var13 /* : Int */;
6876 long var15 /* : Int */;
6877 val* var16 /* : String */;
6878 var1 = NEW_string__Buffer(&type_string__Buffer);
6879 ((void (*)(val*))(var1->class->vft[COLOR_string__Buffer__init]))(var1) /* init on <var1:Buffer>*/;
6880 var_s = var1;
6881 var2 = 0;
6882 var_i = var2;
6883 var3 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:Array[nullable Object]>*/;
6884 var_l = var3;
6885 for(;;) {
6886 { /* Inline kernel#Int#< (var_i,var_l) */
6887 /* Covariant cast for argument 0 (i) <var_l:Int> isa OTHER */
6888 /* <var_l:Int> isa OTHER */
6889 var6 = 1; /* easy <var_l:Int> isa OTHER*/
6890 if (!var6) {
6891 var_class_name = type_kernel__Int.name;
6892 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
6893 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
6894 show_backtrace(1);
6895 }
6896 var7 = var_i < var_l;
6897 var4 = var7;
6898 goto RET_LABEL5;
6899 RET_LABEL5:(void)0;
6900 }
6901 if (!var4) break;
6902 var8 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_i) /* [] on <self:Array[nullable Object]>*/;
6903 var_e = var8;
6904 var9 = NULL;
6905 if (var_e == NULL) {
6906 var10 = 0; /* is null */
6907 } else {
6908 var10 = 1; /* arg is null and recv is not */
6909 }
6910 if (var10){
6911 if (var_e == NULL) {
6912 fprintf(stderr, "Runtime error: %s", "Reciever is null");
6913 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 1037);
6914 show_backtrace(1);
6915 } else {
6916 var11 = ((val* (*)(val*))(var_e->class->vft[COLOR_string__Object__to_s]))(var_e) /* to_s on <var_e:nullable Object>*/;
6917 }
6918 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence__append]))(var_s, var11) /* append on <var_s:Buffer>*/;
6919 } else {
6920 }
6921 var12 = 1;
6922 { /* Inline kernel#Int#+ (var_i,var12) */
6923 var15 = var_i + var12;
6924 var13 = var15;
6925 goto RET_LABEL14;
6926 RET_LABEL14:(void)0;
6927 }
6928 var_i = var13;
6929 CONTINUE_label: (void)0;
6930 }
6931 BREAK_label: (void)0;
6932 var16 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Object__to_s]))(var_s) /* to_s on <var_s:Buffer>*/;
6933 var = var16;
6934 goto RET_LABEL;
6935 RET_LABEL:;
6936 return var;
6937 }
6938 /* method string#Array#to_s for (self: Object): String */
6939 val* VIRTUAL_string__Array__to_s(val* self) {
6940 val* var /* : String */;
6941 val* var1 /* : String */;
6942 var1 = string__Array__to_s(self);
6943 var = var1;
6944 RET_LABEL:;
6945 return var;
6946 }
6947 /* method string#Map#join for (self: Map[Object, nullable Object], String, String): String */
6948 val* string__Map__join(val* self, val* p0, val* p1) {
6949 val* var /* : String */;
6950 val* var_sep /* var sep: String */;
6951 val* var_couple_sep /* var couple_sep: String */;
6952 short int var1 /* : Bool */;
6953 static val* varonce;
6954 val* var2 /* : String */;
6955 char* var3 /* : NativeString */;
6956 long var4 /* : Int */;
6957 val* var5 /* : String */;
6958 val* var6 /* : Buffer */;
6959 val* var_s /* var s: Buffer */;
6960 val* var7 /* : MapIterator[Object, nullable Object] */;
6961 val* var_i /* var i: MapIterator[Object, nullable Object] */;
6962 val* var8 /* : Object */;
6963 val* var_k /* var k: Object */;
6964 val* var9 /* : nullable Object */;
6965 val* var_e /* var e: nullable Object */;
6966 val* var10 /* : Object */;
6967 static val* varonce11;
6968 val* var12 /* : String */;
6969 char* var13 /* : NativeString */;
6970 long var14 /* : Int */;
6971 val* var15 /* : String */;
6972 val* var16 /* : Array[Object] */;
6973 long var17 /* : Int */;
6974 val* var18 /* : NativeArray[Object] */;
6975 val* var19 /* : String */;
6976 short int var20 /* : Bool */;
6977 val* var21 /* : Object */;
6978 val* var22 /* : nullable Object */;
6979 val* var23 /* : Object */;
6980 static val* varonce24;
6981 val* var25 /* : String */;
6982 char* var26 /* : NativeString */;
6983 long var27 /* : Int */;
6984 val* var28 /* : String */;
6985 val* var29 /* : Array[Object] */;
6986 long var30 /* : Int */;
6987 val* var31 /* : NativeArray[Object] */;
6988 val* var32 /* : String */;
6989 val* var33 /* : String */;
6990 var_sep = p0;
6991 var_couple_sep = p1;
6992 var1 = ((short int (*)(val*))(self->class->vft[COLOR_abstract_collection__MapRead__is_empty]))(self) /* is_empty on <self:Map[Object, nullable Object]>*/;
6993 if (var1){
6994 if (varonce) {
6995 var2 = varonce;
6996 } else {
6997 var3 = "";
6998 var4 = 0;
6999 var5 = string__NativeString__to_s_with_length(var3, var4);
7000 var2 = var5;
7001 varonce = var2;
7002 }
7003 var = var2;
7004 goto RET_LABEL;
7005 } else {
7006 }
7007 var6 = NEW_string__Buffer(&type_string__Buffer);
7008 ((void (*)(val*))(var6->class->vft[COLOR_string__Buffer__init]))(var6) /* init on <var6:Buffer>*/;
7009 var_s = var6;
7010 var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__MapRead__iterator]))(self) /* iterator on <self:Map[Object, nullable Object]>*/;
7011 var_i = var7;
7012 var8 = ((val* (*)(val*))(var_i->class->vft[COLOR_abstract_collection__MapIterator__key]))(var_i) /* key on <var_i:MapIterator[Object, nullable Object]>*/;
7013 var_k = var8;
7014 var9 = ((val* (*)(val*))(var_i->class->vft[COLOR_abstract_collection__MapIterator__item]))(var_i) /* item on <var_i:MapIterator[Object, nullable Object]>*/;
7015 var_e = var9;
7016 if (var_e!=NULL) {
7017 var10 = var_e;
7018 } else {
7019 if (varonce11) {
7020 var12 = varonce11;
7021 } else {
7022 var13 = "<null>";
7023 var14 = 6;
7024 var15 = string__NativeString__to_s_with_length(var13, var14);
7025 var12 = var15;
7026 varonce11 = var12;
7027 }
7028 var10 = var12;
7029 }
7030 var16 = NEW_array__Array(&type_array__Arraykernel__Object);
7031 { /* var16 = array_instance Array[Object] */
7032 var17 = 3;
7033 var18 = NEW_array__NativeArray(var17, &type_array__NativeArraykernel__Object);
7034 ((struct instance_array__NativeArray*)var18)->values[0] = (val*) var_k;
7035 ((struct instance_array__NativeArray*)var18)->values[1] = (val*) var_couple_sep;
7036 ((struct instance_array__NativeArray*)var18)->values[2] = (val*) var10;
7037 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[Object]>*/;
7038 }
7039 var19 = ((val* (*)(val*))(var16->class->vft[COLOR_string__Object__to_s]))(var16) /* to_s on <var16:Array[Object]>*/;
7040 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence__append]))(var_s, var19) /* append on <var_s:Buffer>*/;
7041 ((void (*)(val*))(var_i->class->vft[COLOR_abstract_collection__MapIterator__next]))(var_i) /* next on <var_i:MapIterator[Object, nullable Object]>*/;
7042 for(;;) {
7043 var20 = ((short int (*)(val*))(var_i->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var_i) /* is_ok on <var_i:MapIterator[Object, nullable Object]>*/;
7044 if (!var20) break;
7045 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence__append]))(var_s, var_sep) /* append on <var_s:Buffer>*/;
7046 var21 = ((val* (*)(val*))(var_i->class->vft[COLOR_abstract_collection__MapIterator__key]))(var_i) /* key on <var_i:MapIterator[Object, nullable Object]>*/;
7047 var_k = var21;
7048 var22 = ((val* (*)(val*))(var_i->class->vft[COLOR_abstract_collection__MapIterator__item]))(var_i) /* item on <var_i:MapIterator[Object, nullable Object]>*/;
7049 var_e = var22;
7050 if (var_e!=NULL) {
7051 var23 = var_e;
7052 } else {
7053 if (varonce24) {
7054 var25 = varonce24;
7055 } else {
7056 var26 = "<null>";
7057 var27 = 6;
7058 var28 = string__NativeString__to_s_with_length(var26, var27);
7059 var25 = var28;
7060 varonce24 = var25;
7061 }
7062 var23 = var25;
7063 }
7064 var29 = NEW_array__Array(&type_array__Arraykernel__Object);
7065 { /* var29 = array_instance Array[Object] */
7066 var30 = 3;
7067 var31 = NEW_array__NativeArray(var30, &type_array__NativeArraykernel__Object);
7068 ((struct instance_array__NativeArray*)var31)->values[0] = (val*) var_k;
7069 ((struct instance_array__NativeArray*)var31)->values[1] = (val*) var_couple_sep;
7070 ((struct instance_array__NativeArray*)var31)->values[2] = (val*) var23;
7071 ((void (*)(val*, val*, long))(var29->class->vft[COLOR_array__Array__with_native]))(var29, var31, var30) /* with_native on <var29:Array[Object]>*/;
7072 }
7073 var32 = ((val* (*)(val*))(var29->class->vft[COLOR_string__Object__to_s]))(var29) /* to_s on <var29:Array[Object]>*/;
7074 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence__append]))(var_s, var32) /* append on <var_s:Buffer>*/;
7075 ((void (*)(val*))(var_i->class->vft[COLOR_abstract_collection__MapIterator__next]))(var_i) /* next on <var_i:MapIterator[Object, nullable Object]>*/;
7076 CONTINUE_label: (void)0;
7077 }
7078 BREAK_label: (void)0;
7079 var33 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Object__to_s]))(var_s) /* to_s on <var_s:Buffer>*/;
7080 var = var33;
7081 goto RET_LABEL;
7082 RET_LABEL:;
7083 return var;
7084 }
7085 /* method string#Map#join for (self: Object, String, String): String */
7086 val* VIRTUAL_string__Map__join(val* self, val* p0, val* p1) {
7087 val* var /* : String */;
7088 val* var1 /* : String */;
7089 var1 = string__Map__join(self, p0, p1);
7090 var = var1;
7091 RET_LABEL:;
7092 return var;
7093 }
7094 /* method string#NativeString#[] for (self: NativeString, Int): Char */
7095 char string__NativeString___91d_93d(char* self, long p0) {
7096 char var /* : Char */;
7097 char var1 /* : Char */;
7098 var1 = self[p0];
7099 var = var1;
7100 goto RET_LABEL;
7101 RET_LABEL:;
7102 return var;
7103 }
7104 /* method string#NativeString#[] for (self: Object, Int): Char */
7105 char VIRTUAL_string__NativeString___91d_93d(val* self, long p0) {
7106 char var /* : Char */;
7107 char var1 /* : Char */;
7108 char* var3 /* : NativeString */;
7109 char var4 /* : Char */;
7110 { /* Inline string#NativeString#[] (self,p0) */
7111 var3 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
7112 var4 = var3[p0];
7113 var1 = var4;
7114 goto RET_LABEL2;
7115 RET_LABEL2:(void)0;
7116 }
7117 var = var1;
7118 RET_LABEL:;
7119 return var;
7120 }
7121 /* method string#NativeString#[]= for (self: NativeString, Int, Char) */
7122 void string__NativeString___91d_93d_61d(char* self, long p0, char p1) {
7123 self[p0]=p1;
7124 RET_LABEL:;
7125 }
7126 /* method string#NativeString#[]= for (self: Object, Int, Char) */
7127 void VIRTUAL_string__NativeString___91d_93d_61d(val* self, long p0, char p1) {
7128 char* var /* : NativeString */;
7129 { /* Inline string#NativeString#[]= (self,p0,p1) */
7130 var = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
7131 var[p0]=p1;
7132 RET_LABEL1:(void)0;
7133 }
7134 RET_LABEL:;
7135 }
7136 /* method string#NativeString#copy_to for (self: NativeString, NativeString, Int, Int, Int) */
7137 void string__NativeString__copy_to(char* self, char* p0, long p1, long p2, long p3) {
7138 memcpy(p0+p3,self+p2,p1);
7139 RET_LABEL:;
7140 }
7141 /* method string#NativeString#copy_to for (self: Object, NativeString, Int, Int, Int) */
7142 void VIRTUAL_string__NativeString__copy_to(val* self, char* p0, long p1, long p2, long p3) {
7143 char* var /* : NativeString */;
7144 { /* Inline string#NativeString#copy_to (self,p0,p1,p2,p3) */
7145 var = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
7146 memcpy(p0+p3,var+p2,p1);
7147 RET_LABEL1:(void)0;
7148 }
7149 RET_LABEL:;
7150 }
7151 /* method string#NativeString#cstring_length for (self: NativeString): Int */
7152 long string__NativeString__cstring_length(char* self) {
7153 long var /* : Int */;
7154 long var1 /* : Int */;
7155 long var_l /* var l: Int */;
7156 char var2 /* : Char */;
7157 char var4 /* : Char */;
7158 char var5 /* : Char */;
7159 short int var6 /* : Bool */;
7160 short int var8 /* : Bool */;
7161 short int var9 /* : Bool */;
7162 long var10 /* : Int */;
7163 long var11 /* : Int */;
7164 long var13 /* : Int */;
7165 var1 = 0;
7166 var_l = var1;
7167 for(;;) {
7168 { /* Inline string#NativeString#[] (self,var_l) */
7169 var4 = self[var_l];
7170 var2 = var4;
7171 goto RET_LABEL3;
7172 RET_LABEL3:(void)0;
7173 }
7174 var5 = '\0';
7175 { /* Inline kernel#Char#!= (var2,var5) */
7176 var8 = var2 == var5;
7177 var9 = !var8;
7178 var6 = var9;
7179 goto RET_LABEL7;
7180 RET_LABEL7:(void)0;
7181 }
7182 if (!var6) break;
7183 var10 = 1;
7184 { /* Inline kernel#Int#+ (var_l,var10) */
7185 var13 = var_l + var10;
7186 var11 = var13;
7187 goto RET_LABEL12;
7188 RET_LABEL12:(void)0;
7189 }
7190 var_l = var11;
7191 CONTINUE_label: (void)0;
7192 }
7193 BREAK_label: (void)0;
7194 var = var_l;
7195 goto RET_LABEL;
7196 RET_LABEL:;
7197 return var;
7198 }
7199 /* method string#NativeString#cstring_length for (self: Object): Int */
7200 long VIRTUAL_string__NativeString__cstring_length(val* self) {
7201 long var /* : Int */;
7202 long var1 /* : Int */;
7203 char* var2 /* : NativeString */;
7204 var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
7205 var1 = string__NativeString__cstring_length(var2);
7206 var = var1;
7207 RET_LABEL:;
7208 return var;
7209 }
7210 /* method string#NativeString#atoi for (self: NativeString): Int */
7211 long string__NativeString__atoi(char* self) {
7212 long var /* : Int */;
7213 long var1 /* : Int */;
7214 var1 = atoi(self);;
7215 var = var1;
7216 goto RET_LABEL;
7217 RET_LABEL:;
7218 return var;
7219 }
7220 /* method string#NativeString#atoi for (self: Object): Int */
7221 long VIRTUAL_string__NativeString__atoi(val* self) {
7222 long var /* : Int */;
7223 long var1 /* : Int */;
7224 char* var3 /* : NativeString */;
7225 long var4 /* : Int */;
7226 { /* Inline string#NativeString#atoi (self) */
7227 var3 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
7228 var4 = atoi(var3);;
7229 var1 = var4;
7230 goto RET_LABEL2;
7231 RET_LABEL2:(void)0;
7232 }
7233 var = var1;
7234 RET_LABEL:;
7235 return var;
7236 }
7237 /* method string#NativeString#atof for (self: NativeString): Float */
7238 double string__NativeString__atof(char* self) {
7239 double var /* : Float */;
7240 double var1 /* : Float */;
7241 var1 = atof(self);
7242 var = var1;
7243 goto RET_LABEL;
7244 RET_LABEL:;
7245 return var;
7246 }
7247 /* method string#NativeString#atof for (self: Object): Float */
7248 double VIRTUAL_string__NativeString__atof(val* self) {
7249 double var /* : Float */;
7250 double var1 /* : Float */;
7251 char* var2 /* : NativeString */;
7252 var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
7253 var1 = string__NativeString__atof(var2);
7254 var = var1;
7255 RET_LABEL:;
7256 return var;
7257 }
7258 /* method string#NativeString#to_s for (self: NativeString): String */
7259 val* string__NativeString__to_s(char* self) {
7260 val* var /* : String */;
7261 long var1 /* : Int */;
7262 val* var2 /* : String */;
7263 var1 = string__NativeString__cstring_length(self);
7264 var2 = string__NativeString__to_s_with_length(self, var1);
7265 var = var2;
7266 goto RET_LABEL;
7267 RET_LABEL:;
7268 return var;
7269 }
7270 /* method string#NativeString#to_s for (self: Object): String */
7271 val* VIRTUAL_string__NativeString__to_s(val* self) {
7272 val* var /* : String */;
7273 val* var1 /* : String */;
7274 char* var2 /* : NativeString */;
7275 var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
7276 var1 = string__NativeString__to_s(var2);
7277 var = var1;
7278 RET_LABEL:;
7279 return var;
7280 }
7281 /* method string#NativeString#to_s_with_length for (self: NativeString, Int): String */
7282 val* string__NativeString__to_s_with_length(char* self, long p0) {
7283 val* var /* : String */;
7284 long var_length /* var length: Int */;
7285 long var1 /* : Int */;
7286 short int var2 /* : Bool */;
7287 short int var4 /* : Bool */;
7288 int cltype;
7289 int idtype;
7290 const char* var_class_name;
7291 short int var5 /* : Bool */;
7292 val* var6 /* : String */;
7293 long var7 /* : Int */;
7294 long var8 /* : Int */;
7295 long var9 /* : Int */;
7296 long var11 /* : Int */;
7297 var_length = p0;
7298 var1 = 0;
7299 { /* Inline kernel#Int#>= (var_length,var1) */
7300 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
7301 /* <var1:Int> isa OTHER */
7302 var4 = 1; /* easy <var1:Int> isa OTHER*/
7303 if (!var4) {
7304 var_class_name = type_kernel__Int.name;
7305 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
7306 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
7307 show_backtrace(1);
7308 }
7309 var5 = var_length >= var1;
7310 var2 = var5;
7311 goto RET_LABEL3;
7312 RET_LABEL3:(void)0;
7313 }
7314 if (!var2) {
7315 fprintf(stderr, "Runtime error: %s", "Assert failed");
7316 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 1107);
7317 show_backtrace(1);
7318 }
7319 var6 = NEW_string__String(&type_string__String);
7320 var7 = 0;
7321 var8 = 1;
7322 { /* Inline kernel#Int#- (var_length,var8) */
7323 var11 = var_length - var8;
7324 var9 = var11;
7325 goto RET_LABEL10;
7326 RET_LABEL10:(void)0;
7327 }
7328 ((void (*)(val*, char*, long, long, long))(var6->class->vft[COLOR_string__String__with_infos]))(var6, self, var_length, var7, var9) /* with_infos on <var6:String>*/;
7329 var = var6;
7330 goto RET_LABEL;
7331 RET_LABEL:;
7332 return var;
7333 }
7334 /* method string#NativeString#to_s_with_length for (self: Object, Int): String */
7335 val* VIRTUAL_string__NativeString__to_s_with_length(val* self, long p0) {
7336 val* var /* : String */;
7337 val* var1 /* : String */;
7338 char* var2 /* : NativeString */;
7339 var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
7340 var1 = string__NativeString__to_s_with_length(var2, p0);
7341 var = var1;
7342 RET_LABEL:;
7343 return var;
7344 }
7345 /* method string#NativeString#to_s_with_copy for (self: NativeString): String */
7346 val* string__NativeString__to_s_with_copy(char* self) {
7347 val* var /* : String */;
7348 long var1 /* : Int */;
7349 long var_length /* var length: Int */;
7350 long var2 /* : Int */;
7351 long var3 /* : Int */;
7352 long var5 /* : Int */;
7353 char* var6 /* : NativeString */;
7354 val* var8 /* : StringCapable */;
7355 char* var9 /* : NativeString */;
7356 char* var_new_self /* var new_self: NativeString */;
7357 long var10 /* : Int */;
7358 long var11 /* : Int */;
7359 val* var13 /* : String */;
7360 long var14 /* : Int */;
7361 long var15 /* : Int */;
7362 long var16 /* : Int */;
7363 long var18 /* : Int */;
7364 var1 = string__NativeString__cstring_length(self);
7365 var_length = var1;
7366 var2 = 1;
7367 { /* Inline kernel#Int#+ (var_length,var2) */
7368 var5 = var_length + var2;
7369 var3 = var5;
7370 goto RET_LABEL4;
7371 RET_LABEL4:(void)0;
7372 }
7373 { /* Inline string#StringCapable#calloc_string (self,var3) */
7374 var8 = BOX_string__NativeString(self); /* autobox from NativeString to StringCapable */
7375 var9 = (char*)nit_alloc(var3);
7376 var6 = var9;
7377 goto RET_LABEL7;
7378 RET_LABEL7:(void)0;
7379 }
7380 var_new_self = var6;
7381 var10 = 0;
7382 var11 = 0;
7383 { /* Inline string#NativeString#copy_to (self,var_new_self,var_length,var10,var11) */
7384 memcpy(var_new_self+var11,self+var10,var_length);
7385 RET_LABEL12:(void)0;
7386 }
7387 var13 = NEW_string__String(&type_string__String);
7388 var14 = 0;
7389 var15 = 1;
7390 { /* Inline kernel#Int#- (var_length,var15) */
7391 var18 = var_length - var15;
7392 var16 = var18;
7393 goto RET_LABEL17;
7394 RET_LABEL17:(void)0;
7395 }
7396 ((void (*)(val*, char*, long, long, long))(var13->class->vft[COLOR_string__String__with_infos]))(var13, var_new_self, var_length, var14, var16) /* with_infos on <var13:String>*/;
7397 var = var13;
7398 goto RET_LABEL;
7399 RET_LABEL:;
7400 return var;
7401 }
7402 /* method string#NativeString#to_s_with_copy for (self: Object): String */
7403 val* VIRTUAL_string__NativeString__to_s_with_copy(val* self) {
7404 val* var /* : String */;
7405 val* var1 /* : String */;
7406 char* var2 /* : NativeString */;
7407 var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
7408 var1 = string__NativeString__to_s_with_copy(var2);
7409 var = var1;
7410 RET_LABEL:;
7411 return var;
7412 }
7413 /* method string#NativeString#init for (self: NativeString) */
7414 void string__NativeString__init(char* self) {
7415 RET_LABEL:;
7416 }
7417 /* method string#NativeString#init for (self: Object) */
7418 void VIRTUAL_string__NativeString__init(val* self) {
7419 char* var /* : NativeString */;
7420 var = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
7421 string__NativeString__init(var);
7422 RET_LABEL:;
7423 }
7424 /* method string#StringCapable#calloc_string for (self: StringCapable, Int): NativeString */
7425 char* string__StringCapable__calloc_string(val* self, long p0) {
7426 char* var /* : NativeString */;
7427 char* var1 /* : NativeString */;
7428 var1 = (char*)nit_alloc(p0);
7429 var = var1;
7430 goto RET_LABEL;
7431 RET_LABEL:;
7432 return var;
7433 }
7434 /* method string#StringCapable#calloc_string for (self: Object, Int): NativeString */
7435 char* VIRTUAL_string__StringCapable__calloc_string(val* self, long p0) {
7436 char* var /* : NativeString */;
7437 char* var1 /* : NativeString */;
7438 char* var3 /* : NativeString */;
7439 { /* Inline string#StringCapable#calloc_string (self,p0) */
7440 var3 = (char*)nit_alloc(p0);
7441 var1 = var3;
7442 goto RET_LABEL2;
7443 RET_LABEL2:(void)0;
7444 }
7445 var = var1;
7446 RET_LABEL:;
7447 return var;
7448 }
7449 /* method string#Sys#args for (self: Sys): Sequence[String] */
7450 val* string__Sys__args(val* self) {
7451 val* var /* : Sequence[String] */;
7452 val* var1 /* : nullable Sequence[String] */;
7453 val* var2 /* : null */;
7454 short int var3 /* : Bool */;
7455 val* var4 /* : nullable Sequence[String] */;
7456 var1 = self->attrs[COLOR_string__Sys___args_cache].val; /* _args_cache on <self:Sys> */
7457 var2 = NULL;
7458 if (var1 == NULL) {
7459 var3 = 1; /* is null */
7460 } else {
7461 var3 = 0; /* arg is null but recv is not */
7462 }
7463 if (var3){
7464 ((void (*)(val*))(self->class->vft[COLOR_string__Sys__init_args]))(self) /* init_args on <self:Sys>*/;
7465 } else {
7466 }
7467 var4 = self->attrs[COLOR_string__Sys___args_cache].val; /* _args_cache on <self:Sys> */
7468 if (var4 == NULL) {
7469 fprintf(stderr, "Runtime error: %s", "Cast failed");
7470 fprintf(stderr, " (%s:%d)\n", "lib/standard/string.nit", 1132);
7471 show_backtrace(1);
7472 }
7473 var = var4;
7474 goto RET_LABEL;
7475 RET_LABEL:;
7476 return var;
7477 }
7478 /* method string#Sys#args for (self: Object): Sequence[String] */
7479 val* VIRTUAL_string__Sys__args(val* self) {
7480 val* var /* : Sequence[String] */;
7481 val* var1 /* : Sequence[String] */;
7482 var1 = string__Sys__args(self);
7483 var = var1;
7484 RET_LABEL:;
7485 return var;
7486 }
7487 /* method string#Sys#program_name for (self: Sys): String */
7488 val* string__Sys__program_name(val* self) {
7489 val* var /* : String */;
7490 long var1 /* : Int */;
7491 char* var2 /* : NativeString */;
7492 val* var3 /* : String */;
7493 var1 = 0;
7494 var2 = ((char* (*)(val*, long))(self->class->vft[COLOR_string__Sys__native_argv]))(self, var1) /* native_argv on <self:Sys>*/;
7495 var3 = string__NativeString__to_s(var2);
7496 var = var3;
7497 goto RET_LABEL;
7498 RET_LABEL:;
7499 return var;
7500 }
7501 /* method string#Sys#program_name for (self: Object): String */
7502 val* VIRTUAL_string__Sys__program_name(val* self) {
7503 val* var /* : String */;
7504 val* var1 /* : String */;
7505 var1 = string__Sys__program_name(self);
7506 var = var1;
7507 RET_LABEL:;
7508 return var;
7509 }
7510 /* method string#Sys#init_args for (self: Sys) */
7511 void string__Sys__init_args(val* self) {
7512 long var /* : Int */;
7513 long var_argc /* var argc: Int */;
7514 val* var1 /* : Array[String] */;
7515 long var2 /* : Int */;
7516 val* var_args /* var args: Array[String] */;
7517 long var3 /* : Int */;
7518 long var_i /* var i: Int */;
7519 short int var4 /* : Bool */;
7520 short int var6 /* : Bool */;
7521 int cltype;
7522 int idtype;
7523 const char* var_class_name;
7524 short int var7 /* : Bool */;
7525 long var8 /* : Int */;
7526 long var9 /* : Int */;
7527 long var11 /* : Int */;
7528 char* var12 /* : NativeString */;
7529 val* var13 /* : String */;
7530 long var14 /* : Int */;
7531 long var15 /* : Int */;
7532 long var17 /* : Int */;
7533 var = ((long (*)(val*))(self->class->vft[COLOR_string__Sys__native_argc]))(self) /* native_argc on <self:Sys>*/;
7534 var_argc = var;
7535 var1 = NEW_array__Array(&type_array__Arraystring__String);
7536 var2 = 0;
7537 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[String]>*/;
7538 var_args = var1;
7539 var3 = 1;
7540 var_i = var3;
7541 for(;;) {
7542 { /* Inline kernel#Int#< (var_i,var_argc) */
7543 /* Covariant cast for argument 0 (i) <var_argc:Int> isa OTHER */
7544 /* <var_argc:Int> isa OTHER */
7545 var6 = 1; /* easy <var_argc:Int> isa OTHER*/
7546 if (!var6) {
7547 var_class_name = type_kernel__Int.name;
7548 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
7549 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
7550 show_backtrace(1);
7551 }
7552 var7 = var_i < var_argc;
7553 var4 = var7;
7554 goto RET_LABEL5;
7555 RET_LABEL5:(void)0;
7556 }
7557 if (!var4) break;
7558 var8 = 1;
7559 { /* Inline kernel#Int#- (var_i,var8) */
7560 var11 = var_i - var8;
7561 var9 = var11;
7562 goto RET_LABEL10;
7563 RET_LABEL10:(void)0;
7564 }
7565 var12 = ((char* (*)(val*, long))(self->class->vft[COLOR_string__Sys__native_argv]))(self, var_i) /* native_argv on <self:Sys>*/;
7566 var13 = string__NativeString__to_s(var12);
7567 ((void (*)(val*, long, val*))(var_args->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_args, var9, var13) /* []= on <var_args:Array[String]>*/;
7568 var14 = 1;
7569 { /* Inline kernel#Int#+ (var_i,var14) */
7570 var17 = var_i + var14;
7571 var15 = var17;
7572 goto RET_LABEL16;
7573 RET_LABEL16:(void)0;
7574 }
7575 var_i = var15;
7576 CONTINUE_label: (void)0;
7577 }
7578 BREAK_label: (void)0;
7579 self->attrs[COLOR_string__Sys___args_cache].val = var_args; /* _args_cache on <self:Sys> */
7580 RET_LABEL:;
7581 }
7582 /* method string#Sys#init_args for (self: Object) */
7583 void VIRTUAL_string__Sys__init_args(val* self) {
7584 string__Sys__init_args(self);
7585 RET_LABEL:;
7586 }
7587 /* method string#Sys#native_argc for (self: Sys): Int */
7588 long string__Sys__native_argc(val* self) {
7589 long var /* : Int */;
7590 long var1 /* : Int */;
7591 var1 = glob_argc;
7592 var = var1;
7593 goto RET_LABEL;
7594 RET_LABEL:;
7595 return var;
7596 }
7597 /* method string#Sys#native_argc for (self: Object): Int */
7598 long VIRTUAL_string__Sys__native_argc(val* self) {
7599 long var /* : Int */;
7600 long var1 /* : Int */;
7601 long var3 /* : Int */;
7602 { /* Inline string#Sys#native_argc (self) */
7603 var3 = glob_argc;
7604 var1 = var3;
7605 goto RET_LABEL2;
7606 RET_LABEL2:(void)0;
7607 }
7608 var = var1;
7609 RET_LABEL:;
7610 return var;
7611 }
7612 /* method string#Sys#native_argv for (self: Sys, Int): NativeString */
7613 char* string__Sys__native_argv(val* self, long p0) {
7614 char* var /* : NativeString */;
7615 char* var1 /* : NativeString */;
7616 var1 = glob_argv[p0];
7617 var = var1;
7618 goto RET_LABEL;
7619 RET_LABEL:;
7620 return var;
7621 }
7622 /* method string#Sys#native_argv for (self: Object, Int): NativeString */
7623 char* VIRTUAL_string__Sys__native_argv(val* self, long p0) {
7624 char* var /* : NativeString */;
7625 char* var1 /* : NativeString */;
7626 char* var3 /* : NativeString */;
7627 { /* Inline string#Sys#native_argv (self,p0) */
7628 var3 = glob_argv[p0];
7629 var1 = var3;
7630 goto RET_LABEL2;
7631 RET_LABEL2:(void)0;
7632 }
7633 var = var1;
7634 RET_LABEL:;
7635 return var;
7636 }