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