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