Merge: doc: fixed some typos and other misc. corrections
[nit.git] / c_src / core__file.sep.1.c
1 #include "core__file.sep.0.h"
2 /* method file$FileStream$path for (self: FileStream): nullable String */
3 val* core___core__FileStream___path(val* self) {
4 val* var /* : nullable String */;
5 val* var1 /* : nullable String */;
6 var1 = self->attrs[COLOR_core__file__FileStream___path].val; /* _path on <self:FileStream> */
7 var = var1;
8 RET_LABEL:;
9 return var;
10 }
11 /* method file$FileStream$path= for (self: FileStream, nullable String) */
12 void core___core__FileStream___path_61d(val* self, val* p0) {
13 self->attrs[COLOR_core__file__FileStream___path].val = p0; /* _path on <self:FileStream> */
14 RET_LABEL:;
15 }
16 /* method file$FileStream$close for (self: FileStream) */
17 void core___core__FileStream___core__stream__Stream__close(val* self) {
18 val* var /* : nullable NativeFile */;
19 val* var_file /* var file: nullable NativeFile */;
20 short int var1 /* : Bool */;
21 short int var2 /* : Bool */;
22 short int var3 /* : Bool */;
23 short int var5 /* : Bool */;
24 void* var6 /* : Pointer for extern */;
25 val* var7 /* : nullable IOError */;
26 val* var9 /* : nullable IOError */;
27 short int var10 /* : Bool */;
28 short int var11 /* : Bool */;
29 val* var_other /* var other: nullable Object */;
30 short int var13 /* : Bool */;
31 short int var14 /* : Bool */;
32 val* var15 /* : IOError */;
33 static val* varonce;
34 val* var16 /* : String */;
35 char* var17 /* : CString */;
36 val* var18 /* : String */;
37 val* var19 /* : nullable Int */;
38 val* var20 /* : nullable Int */;
39 val* var21 /* : nullable Bool */;
40 val* var22 /* : nullable Bool */;
41 long var24 /* : Int */;
42 long var26 /* : Int */;
43 void* var27 /* : NativeFile for extern */;
44 long var_i /* var i: Int */;
45 short int var28 /* : Bool */;
46 short int var30 /* : Bool */;
47 short int var31 /* : Bool */;
48 val* var32 /* : IOError */;
49 val* var34 /* : NativeArray[String] */;
50 static val* varonce33;
51 static val* varonce35;
52 val* var36 /* : String */;
53 char* var37 /* : CString */;
54 val* var38 /* : String */;
55 val* var39 /* : nullable Int */;
56 val* var40 /* : nullable Int */;
57 val* var41 /* : nullable Bool */;
58 val* var42 /* : nullable Bool */;
59 val* var43 /* : Sys */;
60 val* var45 /* : Sys */;
61 long var46 /* : Int */;
62 long var48 /* : Int */;
63 val* var49 /* : String */;
64 val* var50 /* : String */;
65 var = self->attrs[COLOR_core__file__FileStream___file].val; /* _file on <self:FileStream> */
66 var_file = var;
67 if (var_file == NULL) {
68 var1 = 1; /* is null */
69 } else {
70 var1 = 0; /* arg is null but recv is not */
71 }
72 if (0) {
73 var2 = core___core__Pointer___Object___61d_61d(var_file, ((val*)NULL));
74 var1 = var2;
75 }
76 if (var1){
77 goto RET_LABEL;
78 } else {
79 }
80 {
81 { /* Inline kernel$Pointer$address_is_null (var_file) on <var_file:nullable NativeFile(NativeFile)> */
82 var6 = ((struct instance_core__Pointer*)var_file)->value; /* unboxing nullable NativeFile */
83 var5 = core__kernel___Pointer_address_is_null___impl(var6);
84 var3 = var5;
85 goto RET_LABEL4;
86 RET_LABEL4:(void)0;
87 }
88 }
89 if (var3){
90 {
91 { /* Inline stream$Stream$last_error (self) on <self:FileStream> */
92 var9 = self->attrs[COLOR_core__stream__Stream___last_error].val; /* _last_error on <self:FileStream> */
93 var7 = var9;
94 RET_LABEL8:(void)0;
95 }
96 }
97 if (var7 == NULL) {
98 var10 = 0; /* is null */
99 } else {
100 var10 = 1; /* arg is null and recv is not */
101 }
102 if (0) {
103 { /* Inline kernel$Object$!= (var7,((val*)NULL)) on <var7:nullable IOError> */
104 var_other = ((val*)NULL);
105 {
106 var13 = ((short int(*)(val* self, val* p0))(var7->class->vft[COLOR_core__kernel__Object___61d_61d]))(var7, var_other); /* == on <var7:nullable IOError(IOError)>*/
107 }
108 var14 = !var13;
109 var11 = var14;
110 goto RET_LABEL12;
111 RET_LABEL12:(void)0;
112 }
113 var10 = var11;
114 }
115 if (var10){
116 goto RET_LABEL;
117 } else {
118 }
119 var15 = NEW_core__IOError(&type_core__IOError);
120 if (likely(varonce!=NULL)) {
121 var16 = varonce;
122 } else {
123 var17 = "Cannot close unopened file";
124 var19 = (val*)(26l<<2|1);
125 var20 = (val*)(26l<<2|1);
126 var21 = (val*)((long)(0)<<2|3);
127 var22 = (val*)((long)(0)<<2|3);
128 var18 = core__flat___CString___to_s_unsafe(var17, var19, var20, var21, var22);
129 var16 = var18;
130 varonce = var16;
131 }
132 {
133 ((void(*)(val* self, val* p0))(var15->class->vft[COLOR_core__error__Error__message_61d]))(var15, var16); /* message= on <var15:IOError>*/
134 }
135 {
136 ((void(*)(val* self))(var15->class->vft[COLOR_core__kernel__Object__init]))(var15); /* init on <var15:IOError>*/
137 }
138 {
139 { /* Inline stream$Stream$last_error= (self,var15) on <self:FileStream> */
140 self->attrs[COLOR_core__stream__Stream___last_error].val = var15; /* _last_error on <self:FileStream> */
141 RET_LABEL23:(void)0;
142 }
143 }
144 goto RET_LABEL;
145 } else {
146 }
147 {
148 { /* Inline file$NativeFile$io_close (var_file) on <var_file:nullable NativeFile(NativeFile)> */
149 var27 = ((struct instance_core__Pointer*)var_file)->value; /* unboxing nullable NativeFile */
150 var26 = core__file___NativeFile_io_close___impl(var27);
151 var24 = var26;
152 goto RET_LABEL25;
153 RET_LABEL25:(void)0;
154 }
155 }
156 var_i = var24;
157 {
158 { /* Inline kernel$Int$!= (var_i,0l) on <var_i:Int> */
159 var30 = var_i == 0l;
160 var31 = !var30;
161 var28 = var31;
162 goto RET_LABEL29;
163 RET_LABEL29:(void)0;
164 }
165 }
166 if (var28){
167 var32 = NEW_core__IOError(&type_core__IOError);
168 if (unlikely(varonce33==NULL)) {
169 var34 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
170 if (likely(varonce35!=NULL)) {
171 var36 = varonce35;
172 } else {
173 var37 = "Close failed due to error ";
174 var39 = (val*)(26l<<2|1);
175 var40 = (val*)(26l<<2|1);
176 var41 = (val*)((long)(0)<<2|3);
177 var42 = (val*)((long)(0)<<2|3);
178 var38 = core__flat___CString___to_s_unsafe(var37, var39, var40, var41, var42);
179 var36 = var38;
180 varonce35 = var36;
181 }
182 ((struct instance_core__NativeArray*)var34)->values[0]=var36;
183 } else {
184 var34 = varonce33;
185 varonce33 = NULL;
186 }
187 {
188 { /* Inline kernel$Object$sys (self) on <self:FileStream> */
189 var45 = glob_sys;
190 var43 = var45;
191 goto RET_LABEL44;
192 RET_LABEL44:(void)0;
193 }
194 }
195 {
196 { /* Inline kernel$Sys$errno (var43) on <var43:Sys> */
197 struct nitni_instance* var_for_c_0;
198 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
199 var_for_c_0->value = var43;
200 var48 = core__kernel___Sys_errno___impl(var_for_c_0);
201 var46 = var48;
202 goto RET_LABEL47;
203 RET_LABEL47:(void)0;
204 }
205 }
206 {
207 var49 = core__abstract_text___Int___strerror(var46);
208 }
209 ((struct instance_core__NativeArray*)var34)->values[1]=var49;
210 {
211 var50 = ((val*(*)(val* self))(var34->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var34); /* native_to_s on <var34:NativeArray[String]>*/
212 }
213 varonce33 = var34;
214 {
215 ((void(*)(val* self, val* p0))(var32->class->vft[COLOR_core__error__Error__message_61d]))(var32, var50); /* message= on <var32:IOError>*/
216 }
217 {
218 ((void(*)(val* self))(var32->class->vft[COLOR_core__kernel__Object__init]))(var32); /* init on <var32:IOError>*/
219 }
220 {
221 { /* Inline stream$Stream$last_error= (self,var32) on <self:FileStream> */
222 self->attrs[COLOR_core__stream__Stream___last_error].val = var32; /* _last_error on <self:FileStream> */
223 RET_LABEL51:(void)0;
224 }
225 }
226 } else {
227 }
228 self->attrs[COLOR_core__file__FileStream___file].val = ((val*)NULL); /* _file on <self:FileStream> */
229 RET_LABEL:;
230 }
231 /* method file$FileStream$set_buffering_mode for (self: FileStream, Int, Int) */
232 void core___core__FileStream___set_buffering_mode(val* self, long p0, long p1) {
233 long var_buf_size /* var buf_size: Int */;
234 long var_mode /* var mode: Int */;
235 short int var /* : Bool */;
236 short int var2 /* : Bool */;
237 int cltype;
238 int idtype;
239 const char* var_class_name;
240 short int var3 /* : Bool */;
241 val* var4 /* : nullable NativeFile */;
242 long var5 /* : Int */;
243 long var7 /* : Int */;
244 void* var8 /* : NativeFile for extern */;
245 short int var9 /* : Bool */;
246 short int var11 /* : Bool */;
247 short int var12 /* : Bool */;
248 val* var13 /* : IOError */;
249 val* var14 /* : NativeArray[String] */;
250 static val* varonce;
251 static val* varonce15;
252 val* var16 /* : String */;
253 char* var17 /* : CString */;
254 val* var18 /* : String */;
255 val* var19 /* : nullable Int */;
256 val* var20 /* : nullable Int */;
257 val* var21 /* : nullable Bool */;
258 val* var22 /* : nullable Bool */;
259 val* var23 /* : Sys */;
260 val* var25 /* : Sys */;
261 long var26 /* : Int */;
262 long var28 /* : Int */;
263 val* var29 /* : String */;
264 val* var30 /* : String */;
265 var_buf_size = p0;
266 var_mode = p1;
267 {
268 { /* Inline kernel$Int$<= (var_buf_size,0l) on <var_buf_size:Int> */
269 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
270 /* <0l:Int> isa OTHER */
271 var2 = 1; /* easy <0l:Int> isa OTHER*/
272 if (unlikely(!var2)) {
273 var_class_name = type_core__Int.name;
274 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
275 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 724);
276 fatal_exit(1);
277 }
278 var3 = var_buf_size <= 0l;
279 var = var3;
280 goto RET_LABEL1;
281 RET_LABEL1:(void)0;
282 }
283 }
284 if (var){
285 var_buf_size = 512l;
286 } else {
287 }
288 var4 = self->attrs[COLOR_core__file__FileStream___file].val; /* _file on <self:FileStream> */
289 if (unlikely(var4 == NULL)) {
290 if(catchStack.cursor >= 0){
291 longjmp(catchStack.envs[catchStack.cursor], 1);
292 }
293 PRINT_ERROR("Runtime error: %s", "Cast failed");
294 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 95);
295 fatal_exit(1);
296 }
297 {
298 { /* Inline file$NativeFile$set_buffering_type (var4,var_buf_size,var_mode) on <var4:nullable NativeFile(NativeFile)> */
299 var8 = ((struct instance_core__Pointer*)var4)->value; /* unboxing nullable NativeFile */
300 var7 = core__file___NativeFile_set_buffering_type___impl(var8, var_buf_size, var_mode);
301 var5 = var7;
302 goto RET_LABEL6;
303 RET_LABEL6:(void)0;
304 }
305 }
306 {
307 { /* Inline kernel$Int$!= (var5,0l) on <var5:Int> */
308 var11 = var5 == 0l;
309 var12 = !var11;
310 var9 = var12;
311 goto RET_LABEL10;
312 RET_LABEL10:(void)0;
313 }
314 }
315 if (var9){
316 var13 = NEW_core__IOError(&type_core__IOError);
317 if (unlikely(varonce==NULL)) {
318 var14 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
319 if (likely(varonce15!=NULL)) {
320 var16 = varonce15;
321 } else {
322 var17 = "Error while changing buffering type for FileStream, returned error ";
323 var19 = (val*)(67l<<2|1);
324 var20 = (val*)(67l<<2|1);
325 var21 = (val*)((long)(0)<<2|3);
326 var22 = (val*)((long)(0)<<2|3);
327 var18 = core__flat___CString___to_s_unsafe(var17, var19, var20, var21, var22);
328 var16 = var18;
329 varonce15 = var16;
330 }
331 ((struct instance_core__NativeArray*)var14)->values[0]=var16;
332 } else {
333 var14 = varonce;
334 varonce = NULL;
335 }
336 {
337 { /* Inline kernel$Object$sys (self) on <self:FileStream> */
338 var25 = glob_sys;
339 var23 = var25;
340 goto RET_LABEL24;
341 RET_LABEL24:(void)0;
342 }
343 }
344 {
345 { /* Inline kernel$Sys$errno (var23) on <var23:Sys> */
346 struct nitni_instance* var_for_c_0;
347 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
348 var_for_c_0->value = var23;
349 var28 = core__kernel___Sys_errno___impl(var_for_c_0);
350 var26 = var28;
351 goto RET_LABEL27;
352 RET_LABEL27:(void)0;
353 }
354 }
355 {
356 var29 = core__abstract_text___Int___strerror(var26);
357 }
358 ((struct instance_core__NativeArray*)var14)->values[1]=var29;
359 {
360 var30 = ((val*(*)(val* self))(var14->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var14); /* native_to_s on <var14:NativeArray[String]>*/
361 }
362 varonce = var14;
363 {
364 ((void(*)(val* self, val* p0))(var13->class->vft[COLOR_core__error__Error__message_61d]))(var13, var30); /* message= on <var13:IOError>*/
365 }
366 {
367 ((void(*)(val* self))(var13->class->vft[COLOR_core__kernel__Object__init]))(var13); /* init on <var13:IOError>*/
368 }
369 {
370 { /* Inline stream$Stream$last_error= (self,var13) on <self:FileStream> */
371 self->attrs[COLOR_core__stream__Stream___last_error].val = var13; /* _last_error on <self:FileStream> */
372 RET_LABEL31:(void)0;
373 }
374 }
375 } else {
376 }
377 RET_LABEL:;
378 }
379 /* method file$FileReader$close for (self: FileReader) */
380 void core___core__FileReader___core__stream__Stream__close(val* self) {
381 {
382 ((void(*)(val* self))(self->class->vft[COLOR_core___core__FileReader___core__stream__Stream__close]))(self); /* close on <self:FileReader>*/
383 }
384 {
385 core___core__BufferedReader___buffer_reset(self); /* Direct call stream$BufferedReader$buffer_reset on <self:FileReader>*/
386 }
387 {
388 { /* Inline file$FileReader$end_reached= (self,1) on <self:FileReader> */
389 self->attrs[COLOR_core__file__FileReader___end_reached].s = 1; /* _end_reached on <self:FileReader> */
390 RET_LABEL1:(void)0;
391 }
392 }
393 RET_LABEL:;
394 }
395 /* method file$FileReader$fill_buffer for (self: FileReader) */
396 void core___core__FileReader___core__stream__BufferedReader__fill_buffer(val* self) {
397 val* var /* : nullable NativeFile */;
398 char* var1 /* : CString */;
399 long var2 /* : Int */;
400 long var3 /* : Int */;
401 long var5 /* : Int */;
402 void* var6 /* : NativeFile for extern */;
403 long var_nb /* var nb: Int */;
404 short int var7 /* : Bool */;
405 val* var8 /* : nullable IOError */;
406 val* var10 /* : nullable IOError */;
407 short int var11 /* : Bool */;
408 short int var12 /* : Bool */;
409 val* var_other /* var other: nullable Object */;
410 short int var14 /* : Bool */;
411 short int var16 /* : Bool */;
412 short int var_ /* var : Bool */;
413 val* var17 /* : nullable NativeFile */;
414 short int var18 /* : Bool */;
415 short int var20 /* : Bool */;
416 void* var21 /* : NativeFile for extern */;
417 val* var22 /* : IOError */;
418 val* var23 /* : NativeArray[String] */;
419 static val* varonce;
420 static val* varonce24;
421 val* var25 /* : String */;
422 char* var26 /* : CString */;
423 val* var27 /* : String */;
424 val* var28 /* : nullable Int */;
425 val* var29 /* : nullable Int */;
426 val* var30 /* : nullable Bool */;
427 val* var31 /* : nullable Bool */;
428 static val* varonce32;
429 val* var33 /* : String */;
430 char* var34 /* : CString */;
431 val* var35 /* : String */;
432 val* var36 /* : nullable Int */;
433 val* var37 /* : nullable Int */;
434 val* var38 /* : nullable Bool */;
435 val* var39 /* : nullable Bool */;
436 val* var40 /* : nullable String */;
437 val* var42 /* : nullable String */;
438 val* var43 /* : Sys */;
439 val* var45 /* : Sys */;
440 long var46 /* : Int */;
441 long var48 /* : Int */;
442 val* var49 /* : String */;
443 val* var50 /* : String */;
444 short int var53 /* : Bool */;
445 short int var55 /* : Bool */;
446 int cltype;
447 int idtype;
448 const char* var_class_name;
449 short int var56 /* : Bool */;
450 var = self->attrs[COLOR_core__file__FileStream___file].val; /* _file on <self:FileReader> */
451 if (unlikely(var == NULL)) {
452 if(catchStack.cursor >= 0){
453 longjmp(catchStack.envs[catchStack.cursor], 1);
454 }
455 PRINT_ERROR("Runtime error: %s", "Cast failed");
456 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 138);
457 fatal_exit(1);
458 }
459 var1 = self->attrs[COLOR_core__stream__BufferedReader___buffer].str; /* _buffer on <self:FileReader> */
460 var2 = self->attrs[COLOR_core__stream__BufferedReader___buffer_capacity].l; /* _buffer_capacity on <self:FileReader> */
461 {
462 { /* Inline file$NativeFile$io_read (var,var1,var2) on <var:nullable NativeFile(NativeFile)> */
463 var6 = ((struct instance_core__Pointer*)var)->value; /* unboxing nullable NativeFile */
464 var5 = core__file___NativeFile_io_read___impl(var6, var1, var2);
465 var3 = var5;
466 goto RET_LABEL4;
467 RET_LABEL4:(void)0;
468 }
469 }
470 var_nb = var3;
471 {
472 { /* Inline stream$Stream$last_error (self) on <self:FileReader> */
473 var10 = self->attrs[COLOR_core__stream__Stream___last_error].val; /* _last_error on <self:FileReader> */
474 var8 = var10;
475 RET_LABEL9:(void)0;
476 }
477 }
478 if (var8 == NULL) {
479 var11 = 1; /* is null */
480 } else {
481 var11 = 0; /* arg is null but recv is not */
482 }
483 if (0) {
484 { /* Inline kernel$Object$== (var8,((val*)NULL)) on <var8:nullable IOError> */
485 var_other = ((val*)NULL);
486 {
487 { /* Inline kernel$Object$is_same_instance (var8,var_other) on <var8:nullable IOError(IOError)> */
488 var16 = var8 == var_other;
489 var14 = var16;
490 goto RET_LABEL15;
491 RET_LABEL15:(void)0;
492 }
493 }
494 var12 = var14;
495 goto RET_LABEL13;
496 RET_LABEL13:(void)0;
497 }
498 var11 = var12;
499 }
500 var_ = var11;
501 if (var11){
502 var17 = self->attrs[COLOR_core__file__FileStream___file].val; /* _file on <self:FileReader> */
503 if (unlikely(var17 == NULL)) {
504 if(catchStack.cursor >= 0){
505 longjmp(catchStack.envs[catchStack.cursor], 1);
506 }
507 PRINT_ERROR("Runtime error: %s", "Cast failed");
508 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 139);
509 fatal_exit(1);
510 }
511 {
512 { /* Inline file$NativeFile$ferror (var17) on <var17:nullable NativeFile(NativeFile)> */
513 var21 = ((struct instance_core__Pointer*)var17)->value; /* unboxing nullable NativeFile */
514 var20 = core__file___NativeFile_ferror___impl(var21);
515 var18 = var20;
516 goto RET_LABEL19;
517 RET_LABEL19:(void)0;
518 }
519 }
520 var7 = var18;
521 } else {
522 var7 = var_;
523 }
524 if (var7){
525 var22 = NEW_core__IOError(&type_core__IOError);
526 if (unlikely(varonce==NULL)) {
527 var23 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
528 if (likely(varonce24!=NULL)) {
529 var25 = varonce24;
530 } else {
531 var26 = "Cannot read `";
532 var28 = (val*)(13l<<2|1);
533 var29 = (val*)(13l<<2|1);
534 var30 = (val*)((long)(0)<<2|3);
535 var31 = (val*)((long)(0)<<2|3);
536 var27 = core__flat___CString___to_s_unsafe(var26, var28, var29, var30, var31);
537 var25 = var27;
538 varonce24 = var25;
539 }
540 ((struct instance_core__NativeArray*)var23)->values[0]=var25;
541 if (likely(varonce32!=NULL)) {
542 var33 = varonce32;
543 } else {
544 var34 = "`: ";
545 var36 = (val*)(3l<<2|1);
546 var37 = (val*)(3l<<2|1);
547 var38 = (val*)((long)(0)<<2|3);
548 var39 = (val*)((long)(0)<<2|3);
549 var35 = core__flat___CString___to_s_unsafe(var34, var36, var37, var38, var39);
550 var33 = var35;
551 varonce32 = var33;
552 }
553 ((struct instance_core__NativeArray*)var23)->values[2]=var33;
554 } else {
555 var23 = varonce;
556 varonce = NULL;
557 }
558 {
559 { /* Inline file$FileStream$path (self) on <self:FileReader> */
560 var42 = self->attrs[COLOR_core__file__FileStream___path].val; /* _path on <self:FileReader> */
561 var40 = var42;
562 RET_LABEL41:(void)0;
563 }
564 }
565 if (unlikely(var40 == NULL)) {
566 if(catchStack.cursor >= 0){
567 longjmp(catchStack.envs[catchStack.cursor], 1);
568 }
569 PRINT_ERROR("Runtime error: %s", "Cast failed");
570 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 140);
571 fatal_exit(1);
572 }
573 ((struct instance_core__NativeArray*)var23)->values[1]=var40;
574 {
575 { /* Inline kernel$Object$sys (self) on <self:FileReader> */
576 var45 = glob_sys;
577 var43 = var45;
578 goto RET_LABEL44;
579 RET_LABEL44:(void)0;
580 }
581 }
582 {
583 { /* Inline kernel$Sys$errno (var43) on <var43:Sys> */
584 struct nitni_instance* var_for_c_0;
585 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
586 var_for_c_0->value = var43;
587 var48 = core__kernel___Sys_errno___impl(var_for_c_0);
588 var46 = var48;
589 goto RET_LABEL47;
590 RET_LABEL47:(void)0;
591 }
592 }
593 {
594 var49 = core__abstract_text___Int___strerror(var46);
595 }
596 ((struct instance_core__NativeArray*)var23)->values[3]=var49;
597 {
598 var50 = ((val*(*)(val* self))(var23->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var23); /* native_to_s on <var23:NativeArray[String]>*/
599 }
600 varonce = var23;
601 {
602 ((void(*)(val* self, val* p0))(var22->class->vft[COLOR_core__error__Error__message_61d]))(var22, var50); /* message= on <var22:IOError>*/
603 }
604 {
605 ((void(*)(val* self))(var22->class->vft[COLOR_core__kernel__Object__init]))(var22); /* init on <var22:IOError>*/
606 }
607 {
608 { /* Inline stream$Stream$last_error= (self,var22) on <self:FileReader> */
609 self->attrs[COLOR_core__stream__Stream___last_error].val = var22; /* _last_error on <self:FileReader> */
610 RET_LABEL51:(void)0;
611 }
612 }
613 {
614 { /* Inline file$FileReader$end_reached= (self,1) on <self:FileReader> */
615 self->attrs[COLOR_core__file__FileReader___end_reached].s = 1; /* _end_reached on <self:FileReader> */
616 RET_LABEL52:(void)0;
617 }
618 }
619 } else {
620 }
621 {
622 { /* Inline kernel$Int$<= (var_nb,0l) on <var_nb:Int> */
623 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
624 /* <0l:Int> isa OTHER */
625 var55 = 1; /* easy <0l:Int> isa OTHER*/
626 if (unlikely(!var55)) {
627 var_class_name = type_core__Int.name;
628 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
629 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 724);
630 fatal_exit(1);
631 }
632 var56 = var_nb <= 0l;
633 var53 = var56;
634 goto RET_LABEL54;
635 RET_LABEL54:(void)0;
636 }
637 }
638 if (var53){
639 {
640 { /* Inline file$FileReader$end_reached= (self,1) on <self:FileReader> */
641 self->attrs[COLOR_core__file__FileReader___end_reached].s = 1; /* _end_reached on <self:FileReader> */
642 RET_LABEL57:(void)0;
643 }
644 }
645 var_nb = 0l;
646 } else {
647 }
648 self->attrs[COLOR_core__stream__BufferedReader___buffer_length].l = var_nb; /* _buffer_length on <self:FileReader> */
649 self->attrs[COLOR_core__stream__BufferedReader___buffer_pos].l = 0l; /* _buffer_pos on <self:FileReader> */
650 RET_LABEL:;
651 }
652 /* method file$FileReader$end_reached for (self: FileReader): Bool */
653 short int core___core__FileReader___core__stream__BufferedReader__end_reached(val* self) {
654 short int var /* : Bool */;
655 short int var1 /* : Bool */;
656 var1 = self->attrs[COLOR_core__file__FileReader___end_reached].s; /* _end_reached on <self:FileReader> */
657 var = var1;
658 RET_LABEL:;
659 return var;
660 }
661 /* method file$FileReader$end_reached= for (self: FileReader, Bool) */
662 void core___core__FileReader___end_reached_61d(val* self, short int p0) {
663 self->attrs[COLOR_core__file__FileReader___end_reached].s = p0; /* _end_reached on <self:FileReader> */
664 RET_LABEL:;
665 }
666 /* method file$FileReader$open for (self: FileReader, String) */
667 void core___core__FileReader___open(val* self, val* p0) {
668 val* var_path /* var path: String */;
669 static val* varoncenew;
670 static int varoncenew_guard;
671 val* var /* : NativeFile */;
672 val* var2 /* : NativeFile */;
673 char* var3 /* : CString */;
674 val* var4 /* : NativeFile */;
675 val* var5 /* : nullable NativeFile */;
676 short int var6 /* : Bool */;
677 short int var8 /* : Bool */;
678 void* var9 /* : Pointer for extern */;
679 val* var10 /* : IOError */;
680 val* var11 /* : NativeArray[String] */;
681 static val* varonce;
682 static val* varonce12;
683 val* var13 /* : String */;
684 char* var14 /* : CString */;
685 val* var15 /* : String */;
686 val* var16 /* : nullable Int */;
687 val* var17 /* : nullable Int */;
688 val* var18 /* : nullable Bool */;
689 val* var19 /* : nullable Bool */;
690 static val* varonce20;
691 val* var21 /* : String */;
692 char* var22 /* : CString */;
693 val* var23 /* : String */;
694 val* var24 /* : nullable Int */;
695 val* var25 /* : nullable Int */;
696 val* var26 /* : nullable Bool */;
697 val* var27 /* : nullable Bool */;
698 val* var28 /* : Sys */;
699 val* var30 /* : Sys */;
700 long var31 /* : Int */;
701 long var33 /* : Int */;
702 val* var34 /* : String */;
703 val* var35 /* : String */;
704 {
705 ((void(*)(val* self))(self->class->vft[COLOR_core__kernel__Object__init]))(self); /* init on <self:FileReader>*/
706 }
707 var_path = p0;
708 {
709 { /* Inline file$FileStream$path= (self,var_path) on <self:FileReader> */
710 self->attrs[COLOR_core__file__FileStream___path].val = var_path; /* _path on <self:FileReader> */
711 RET_LABEL1:(void)0;
712 }
713 }
714 {
715 core___core__BufferedReader___prepare_buffer(self, 100l); /* Direct call stream$BufferedReader$prepare_buffer on <self:FileReader>*/
716 }
717 if (likely(varoncenew_guard)) {
718 var = varoncenew;
719 } else {
720 var2 = NEW_core__file__NativeFile(&type_core__file__NativeFile);
721 var = var2;
722 varoncenew = var;
723 varoncenew_guard = 1;
724 }
725 {
726 var3 = ((char*(*)(val* self))(var_path->class->vft[COLOR_core__abstract_text__Text__to_cstring]))(var_path); /* to_cstring on <var_path:String>*/
727 }
728 {
729 var4 = core__file___core__file__NativeFile___io_open_read(var, var3);
730 }
731 self->attrs[COLOR_core__file__FileStream___file].val = var4; /* _file on <self:FileReader> */
732 var5 = self->attrs[COLOR_core__file__FileStream___file].val; /* _file on <self:FileReader> */
733 if (unlikely(var5 == NULL)) {
734 if(catchStack.cursor >= 0){
735 longjmp(catchStack.envs[catchStack.cursor], 1);
736 }
737 PRINT_ERROR("Runtime error: %s", "Cast failed");
738 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 170);
739 fatal_exit(1);
740 }
741 {
742 { /* Inline kernel$Pointer$address_is_null (var5) on <var5:nullable NativeFile(NativeFile)> */
743 var9 = ((struct instance_core__Pointer*)var5)->value; /* unboxing nullable NativeFile */
744 var8 = core__kernel___Pointer_address_is_null___impl(var9);
745 var6 = var8;
746 goto RET_LABEL7;
747 RET_LABEL7:(void)0;
748 }
749 }
750 if (var6){
751 var10 = NEW_core__IOError(&type_core__IOError);
752 if (unlikely(varonce==NULL)) {
753 var11 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
754 if (likely(varonce12!=NULL)) {
755 var13 = varonce12;
756 } else {
757 var14 = "Cannot open `";
758 var16 = (val*)(13l<<2|1);
759 var17 = (val*)(13l<<2|1);
760 var18 = (val*)((long)(0)<<2|3);
761 var19 = (val*)((long)(0)<<2|3);
762 var15 = core__flat___CString___to_s_unsafe(var14, var16, var17, var18, var19);
763 var13 = var15;
764 varonce12 = var13;
765 }
766 ((struct instance_core__NativeArray*)var11)->values[0]=var13;
767 if (likely(varonce20!=NULL)) {
768 var21 = varonce20;
769 } else {
770 var22 = "`: ";
771 var24 = (val*)(3l<<2|1);
772 var25 = (val*)(3l<<2|1);
773 var26 = (val*)((long)(0)<<2|3);
774 var27 = (val*)((long)(0)<<2|3);
775 var23 = core__flat___CString___to_s_unsafe(var22, var24, var25, var26, var27);
776 var21 = var23;
777 varonce20 = var21;
778 }
779 ((struct instance_core__NativeArray*)var11)->values[2]=var21;
780 } else {
781 var11 = varonce;
782 varonce = NULL;
783 }
784 ((struct instance_core__NativeArray*)var11)->values[1]=var_path;
785 {
786 { /* Inline kernel$Object$sys (self) on <self:FileReader> */
787 var30 = glob_sys;
788 var28 = var30;
789 goto RET_LABEL29;
790 RET_LABEL29:(void)0;
791 }
792 }
793 {
794 { /* Inline kernel$Sys$errno (var28) on <var28:Sys> */
795 struct nitni_instance* var_for_c_0;
796 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
797 var_for_c_0->value = var28;
798 var33 = core__kernel___Sys_errno___impl(var_for_c_0);
799 var31 = var33;
800 goto RET_LABEL32;
801 RET_LABEL32:(void)0;
802 }
803 }
804 {
805 var34 = core__abstract_text___Int___strerror(var31);
806 }
807 ((struct instance_core__NativeArray*)var11)->values[3]=var34;
808 {
809 var35 = ((val*(*)(val* self))(var11->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var11); /* native_to_s on <var11:NativeArray[String]>*/
810 }
811 varonce = var11;
812 {
813 ((void(*)(val* self, val* p0))(var10->class->vft[COLOR_core__error__Error__message_61d]))(var10, var35); /* message= on <var10:IOError>*/
814 }
815 {
816 ((void(*)(val* self))(var10->class->vft[COLOR_core__kernel__Object__init]))(var10); /* init on <var10:IOError>*/
817 }
818 {
819 { /* Inline stream$Stream$last_error= (self,var10) on <self:FileReader> */
820 self->attrs[COLOR_core__stream__Stream___last_error].val = var10; /* _last_error on <self:FileReader> */
821 RET_LABEL36:(void)0;
822 }
823 }
824 {
825 { /* Inline file$FileReader$end_reached= (self,1) on <self:FileReader> */
826 self->attrs[COLOR_core__file__FileReader___end_reached].s = 1; /* _end_reached on <self:FileReader> */
827 RET_LABEL37:(void)0;
828 }
829 }
830 } else {
831 }
832 RET_LABEL:;
833 }
834 /* method file$FileWriter$write_bytes for (self: FileWriter, Bytes) */
835 void core___core__FileWriter___core__stream__Writer__write_bytes(val* self, val* p0) {
836 val* var_s /* var s: Bytes */;
837 val* var /* : nullable IOError */;
838 val* var2 /* : nullable IOError */;
839 short int var3 /* : Bool */;
840 short int var4 /* : Bool */;
841 val* var_other /* var other: nullable Object */;
842 short int var6 /* : Bool */;
843 short int var7 /* : Bool */;
844 short int var8 /* : Bool */;
845 short int var9 /* : Bool */;
846 val* var10 /* : IOError */;
847 static val* varonce;
848 val* var11 /* : String */;
849 char* var12 /* : CString */;
850 val* var13 /* : String */;
851 val* var14 /* : nullable Int */;
852 val* var15 /* : nullable Int */;
853 val* var16 /* : nullable Bool */;
854 val* var17 /* : nullable Bool */;
855 char* var19 /* : CString */;
856 char* var21 /* : CString */;
857 long var22 /* : Int */;
858 long var24 /* : Int */;
859 var_s = p0;
860 {
861 { /* Inline stream$Stream$last_error (self) on <self:FileWriter> */
862 var2 = self->attrs[COLOR_core__stream__Stream___last_error].val; /* _last_error on <self:FileWriter> */
863 var = var2;
864 RET_LABEL1:(void)0;
865 }
866 }
867 if (var == NULL) {
868 var3 = 0; /* is null */
869 } else {
870 var3 = 1; /* arg is null and recv is not */
871 }
872 if (0) {
873 { /* Inline kernel$Object$!= (var,((val*)NULL)) on <var:nullable IOError> */
874 var_other = ((val*)NULL);
875 {
876 var6 = ((short int(*)(val* self, val* p0))(var->class->vft[COLOR_core__kernel__Object___61d_61d]))(var, var_other); /* == on <var:nullable IOError(IOError)>*/
877 }
878 var7 = !var6;
879 var4 = var7;
880 goto RET_LABEL5;
881 RET_LABEL5:(void)0;
882 }
883 var3 = var4;
884 }
885 if (var3){
886 goto RET_LABEL;
887 } else {
888 }
889 var8 = self->attrs[COLOR_core__file__FileWriter___is_writable].s; /* _is_writable on <self:FileWriter> */
890 var9 = !var8;
891 if (var9){
892 var10 = NEW_core__IOError(&type_core__IOError);
893 if (likely(varonce!=NULL)) {
894 var11 = varonce;
895 } else {
896 var12 = "cannot write to non-writable stream";
897 var14 = (val*)(35l<<2|1);
898 var15 = (val*)(35l<<2|1);
899 var16 = (val*)((long)(0)<<2|3);
900 var17 = (val*)((long)(0)<<2|3);
901 var13 = core__flat___CString___to_s_unsafe(var12, var14, var15, var16, var17);
902 var11 = var13;
903 varonce = var11;
904 }
905 {
906 ((void(*)(val* self, val* p0))(var10->class->vft[COLOR_core__error__Error__message_61d]))(var10, var11); /* message= on <var10:IOError>*/
907 }
908 {
909 ((void(*)(val* self))(var10->class->vft[COLOR_core__kernel__Object__init]))(var10); /* init on <var10:IOError>*/
910 }
911 {
912 { /* Inline stream$Stream$last_error= (self,var10) on <self:FileWriter> */
913 self->attrs[COLOR_core__stream__Stream___last_error].val = var10; /* _last_error on <self:FileWriter> */
914 RET_LABEL18:(void)0;
915 }
916 }
917 goto RET_LABEL;
918 } else {
919 }
920 {
921 { /* Inline bytes$Bytes$items (var_s) on <var_s:Bytes> */
922 var21 = var_s->attrs[COLOR_core__bytes__Bytes___items].str; /* _items on <var_s:Bytes> */
923 var19 = var21;
924 RET_LABEL20:(void)0;
925 }
926 }
927 {
928 { /* Inline bytes$Bytes$length (var_s) on <var_s:Bytes> */
929 var24 = var_s->attrs[COLOR_core__bytes__Bytes___length].l; /* _length on <var_s:Bytes> */
930 var22 = var24;
931 RET_LABEL23:(void)0;
932 }
933 }
934 {
935 core___core__FileWriter___write_native(self, var19, 0l, var22); /* Direct call file$FileWriter$write_native on <self:FileWriter>*/
936 }
937 RET_LABEL:;
938 }
939 /* method file$FileWriter$write for (self: FileWriter, Text) */
940 void core___core__FileWriter___core__stream__Writer__write(val* self, val* p0) {
941 val* var_s /* var s: Text */;
942 val* var /* : nullable IOError */;
943 val* var2 /* : nullable IOError */;
944 short int var3 /* : Bool */;
945 short int var4 /* : Bool */;
946 val* var_other /* var other: nullable Object */;
947 short int var6 /* : Bool */;
948 short int var7 /* : Bool */;
949 short int var8 /* : Bool */;
950 short int var9 /* : Bool */;
951 val* var10 /* : IOError */;
952 static val* varonce;
953 val* var11 /* : String */;
954 char* var12 /* : CString */;
955 val* var13 /* : String */;
956 val* var14 /* : nullable Int */;
957 val* var15 /* : nullable Int */;
958 val* var16 /* : nullable Bool */;
959 val* var17 /* : nullable Bool */;
960 var_s = p0;
961 {
962 { /* Inline stream$Stream$last_error (self) on <self:FileWriter> */
963 var2 = self->attrs[COLOR_core__stream__Stream___last_error].val; /* _last_error on <self:FileWriter> */
964 var = var2;
965 RET_LABEL1:(void)0;
966 }
967 }
968 if (var == NULL) {
969 var3 = 0; /* is null */
970 } else {
971 var3 = 1; /* arg is null and recv is not */
972 }
973 if (0) {
974 { /* Inline kernel$Object$!= (var,((val*)NULL)) on <var:nullable IOError> */
975 var_other = ((val*)NULL);
976 {
977 var6 = ((short int(*)(val* self, val* p0))(var->class->vft[COLOR_core__kernel__Object___61d_61d]))(var, var_other); /* == on <var:nullable IOError(IOError)>*/
978 }
979 var7 = !var6;
980 var4 = var7;
981 goto RET_LABEL5;
982 RET_LABEL5:(void)0;
983 }
984 var3 = var4;
985 }
986 if (var3){
987 goto RET_LABEL;
988 } else {
989 }
990 var8 = self->attrs[COLOR_core__file__FileWriter___is_writable].s; /* _is_writable on <self:FileWriter> */
991 var9 = !var8;
992 if (var9){
993 var10 = NEW_core__IOError(&type_core__IOError);
994 if (likely(varonce!=NULL)) {
995 var11 = varonce;
996 } else {
997 var12 = "cannot write to non-writable stream";
998 var14 = (val*)(35l<<2|1);
999 var15 = (val*)(35l<<2|1);
1000 var16 = (val*)((long)(0)<<2|3);
1001 var17 = (val*)((long)(0)<<2|3);
1002 var13 = core__flat___CString___to_s_unsafe(var12, var14, var15, var16, var17);
1003 var11 = var13;
1004 varonce = var11;
1005 }
1006 {
1007 ((void(*)(val* self, val* p0))(var10->class->vft[COLOR_core__error__Error__message_61d]))(var10, var11); /* message= on <var10:IOError>*/
1008 }
1009 {
1010 ((void(*)(val* self))(var10->class->vft[COLOR_core__kernel__Object__init]))(var10); /* init on <var10:IOError>*/
1011 }
1012 {
1013 { /* Inline stream$Stream$last_error= (self,var10) on <self:FileWriter> */
1014 self->attrs[COLOR_core__stream__Stream___last_error].val = var10; /* _last_error on <self:FileWriter> */
1015 RET_LABEL18:(void)0;
1016 }
1017 }
1018 goto RET_LABEL;
1019 } else {
1020 }
1021 {
1022 ((void(*)(val* self, val* p0))(var_s->class->vft[COLOR_core__file__Text__write_native_to]))(var_s, self); /* write_native_to on <var_s:Text>*/
1023 }
1024 RET_LABEL:;
1025 }
1026 /* method file$FileWriter$close for (self: FileWriter) */
1027 void core___core__FileWriter___core__stream__Stream__close(val* self) {
1028 {
1029 ((void(*)(val* self))(self->class->vft[COLOR_core___core__FileWriter___core__stream__Stream__close]))(self); /* close on <self:FileWriter>*/
1030 }
1031 self->attrs[COLOR_core__file__FileWriter___is_writable].s = 0; /* _is_writable on <self:FileWriter> */
1032 RET_LABEL:;
1033 }
1034 /* method file$FileWriter$is_writable= for (self: FileWriter, Bool) */
1035 void core___core__FileWriter___is_writable_61d(val* self, short int p0) {
1036 self->attrs[COLOR_core__file__FileWriter___is_writable].s = p0; /* _is_writable on <self:FileWriter> */
1037 RET_LABEL:;
1038 }
1039 /* method file$FileWriter$write_native for (self: FileWriter, CString, Int, Int) */
1040 void core___core__FileWriter___write_native(val* self, char* p0, long p1, long p2) {
1041 char* var_native /* var native: CString */;
1042 long var_from /* var from: Int */;
1043 long var_len /* var len: Int */;
1044 val* var /* : nullable IOError */;
1045 val* var2 /* : nullable IOError */;
1046 short int var3 /* : Bool */;
1047 short int var4 /* : Bool */;
1048 val* var_other /* var other: nullable Object */;
1049 short int var6 /* : Bool */;
1050 short int var7 /* : Bool */;
1051 short int var8 /* : Bool */;
1052 short int var9 /* : Bool */;
1053 val* var10 /* : IOError */;
1054 static val* varonce;
1055 val* var11 /* : String */;
1056 char* var12 /* : CString */;
1057 val* var13 /* : String */;
1058 val* var14 /* : nullable Int */;
1059 val* var15 /* : nullable Int */;
1060 val* var16 /* : nullable Bool */;
1061 val* var17 /* : nullable Bool */;
1062 val* var19 /* : nullable NativeFile */;
1063 short int var20 /* : Bool */;
1064 short int var22 /* : Bool */;
1065 void* var23 /* : Pointer for extern */;
1066 val* var24 /* : IOError */;
1067 static val* varonce25;
1068 val* var26 /* : String */;
1069 char* var27 /* : CString */;
1070 val* var28 /* : String */;
1071 val* var29 /* : nullable Int */;
1072 val* var30 /* : nullable Int */;
1073 val* var31 /* : nullable Bool */;
1074 val* var32 /* : nullable Bool */;
1075 val* var34 /* : nullable NativeFile */;
1076 long var35 /* : Int */;
1077 long var37 /* : Int */;
1078 void* var38 /* : NativeFile for extern */;
1079 long var_err /* var err: Int */;
1080 short int var39 /* : Bool */;
1081 short int var41 /* : Bool */;
1082 short int var42 /* : Bool */;
1083 val* var43 /* : IOError */;
1084 val* var45 /* : NativeArray[String] */;
1085 static val* varonce44;
1086 static val* varonce46;
1087 val* var47 /* : String */;
1088 char* var48 /* : CString */;
1089 val* var49 /* : String */;
1090 val* var50 /* : nullable Int */;
1091 val* var51 /* : nullable Int */;
1092 val* var52 /* : nullable Bool */;
1093 val* var53 /* : nullable Bool */;
1094 static val* varonce54;
1095 val* var55 /* : String */;
1096 char* var56 /* : CString */;
1097 val* var57 /* : String */;
1098 val* var58 /* : nullable Int */;
1099 val* var59 /* : nullable Int */;
1100 val* var60 /* : nullable Bool */;
1101 val* var61 /* : nullable Bool */;
1102 static val* varonce62;
1103 val* var63 /* : String */;
1104 char* var64 /* : CString */;
1105 val* var65 /* : String */;
1106 val* var66 /* : nullable Int */;
1107 val* var67 /* : nullable Int */;
1108 val* var68 /* : nullable Bool */;
1109 val* var69 /* : nullable Bool */;
1110 val* var70 /* : String */;
1111 val* var71 /* : String */;
1112 val* var72 /* : String */;
1113 var_native = p0;
1114 var_from = p1;
1115 var_len = p2;
1116 {
1117 { /* Inline stream$Stream$last_error (self) on <self:FileWriter> */
1118 var2 = self->attrs[COLOR_core__stream__Stream___last_error].val; /* _last_error on <self:FileWriter> */
1119 var = var2;
1120 RET_LABEL1:(void)0;
1121 }
1122 }
1123 if (var == NULL) {
1124 var3 = 0; /* is null */
1125 } else {
1126 var3 = 1; /* arg is null and recv is not */
1127 }
1128 if (0) {
1129 { /* Inline kernel$Object$!= (var,((val*)NULL)) on <var:nullable IOError> */
1130 var_other = ((val*)NULL);
1131 {
1132 var6 = ((short int(*)(val* self, val* p0))(var->class->vft[COLOR_core__kernel__Object___61d_61d]))(var, var_other); /* == on <var:nullable IOError(IOError)>*/
1133 }
1134 var7 = !var6;
1135 var4 = var7;
1136 goto RET_LABEL5;
1137 RET_LABEL5:(void)0;
1138 }
1139 var3 = var4;
1140 }
1141 if (var3){
1142 goto RET_LABEL;
1143 } else {
1144 }
1145 var8 = self->attrs[COLOR_core__file__FileWriter___is_writable].s; /* _is_writable on <self:FileWriter> */
1146 var9 = !var8;
1147 if (var9){
1148 var10 = NEW_core__IOError(&type_core__IOError);
1149 if (likely(varonce!=NULL)) {
1150 var11 = varonce;
1151 } else {
1152 var12 = "Cannot write to non-writable stream";
1153 var14 = (val*)(35l<<2|1);
1154 var15 = (val*)(35l<<2|1);
1155 var16 = (val*)((long)(0)<<2|3);
1156 var17 = (val*)((long)(0)<<2|3);
1157 var13 = core__flat___CString___to_s_unsafe(var12, var14, var15, var16, var17);
1158 var11 = var13;
1159 varonce = var11;
1160 }
1161 {
1162 ((void(*)(val* self, val* p0))(var10->class->vft[COLOR_core__error__Error__message_61d]))(var10, var11); /* message= on <var10:IOError>*/
1163 }
1164 {
1165 ((void(*)(val* self))(var10->class->vft[COLOR_core__kernel__Object__init]))(var10); /* init on <var10:IOError>*/
1166 }
1167 {
1168 { /* Inline stream$Stream$last_error= (self,var10) on <self:FileWriter> */
1169 self->attrs[COLOR_core__stream__Stream___last_error].val = var10; /* _last_error on <self:FileWriter> */
1170 RET_LABEL18:(void)0;
1171 }
1172 }
1173 goto RET_LABEL;
1174 } else {
1175 }
1176 var19 = self->attrs[COLOR_core__file__FileStream___file].val; /* _file on <self:FileWriter> */
1177 if (unlikely(var19 == NULL)) {
1178 if(catchStack.cursor >= 0){
1179 longjmp(catchStack.envs[catchStack.cursor], 1);
1180 }
1181 PRINT_ERROR("Runtime error: %s", "Cast failed");
1182 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 267);
1183 fatal_exit(1);
1184 }
1185 {
1186 { /* Inline kernel$Pointer$address_is_null (var19) on <var19:nullable NativeFile(NativeFile)> */
1187 var23 = ((struct instance_core__Pointer*)var19)->value; /* unboxing nullable NativeFile */
1188 var22 = core__kernel___Pointer_address_is_null___impl(var23);
1189 var20 = var22;
1190 goto RET_LABEL21;
1191 RET_LABEL21:(void)0;
1192 }
1193 }
1194 if (var20){
1195 var24 = NEW_core__IOError(&type_core__IOError);
1196 if (likely(varonce25!=NULL)) {
1197 var26 = varonce25;
1198 } else {
1199 var27 = "Writing on a null stream";
1200 var29 = (val*)(24l<<2|1);
1201 var30 = (val*)(24l<<2|1);
1202 var31 = (val*)((long)(0)<<2|3);
1203 var32 = (val*)((long)(0)<<2|3);
1204 var28 = core__flat___CString___to_s_unsafe(var27, var29, var30, var31, var32);
1205 var26 = var28;
1206 varonce25 = var26;
1207 }
1208 {
1209 ((void(*)(val* self, val* p0))(var24->class->vft[COLOR_core__error__Error__message_61d]))(var24, var26); /* message= on <var24:IOError>*/
1210 }
1211 {
1212 ((void(*)(val* self))(var24->class->vft[COLOR_core__kernel__Object__init]))(var24); /* init on <var24:IOError>*/
1213 }
1214 {
1215 { /* Inline stream$Stream$last_error= (self,var24) on <self:FileWriter> */
1216 self->attrs[COLOR_core__stream__Stream___last_error].val = var24; /* _last_error on <self:FileWriter> */
1217 RET_LABEL33:(void)0;
1218 }
1219 }
1220 self->attrs[COLOR_core__file__FileWriter___is_writable].s = 0; /* _is_writable on <self:FileWriter> */
1221 goto RET_LABEL;
1222 } else {
1223 }
1224 var34 = self->attrs[COLOR_core__file__FileStream___file].val; /* _file on <self:FileWriter> */
1225 if (unlikely(var34 == NULL)) {
1226 if(catchStack.cursor >= 0){
1227 longjmp(catchStack.envs[catchStack.cursor], 1);
1228 }
1229 PRINT_ERROR("Runtime error: %s", "Cast failed");
1230 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 272);
1231 fatal_exit(1);
1232 }
1233 {
1234 { /* Inline file$NativeFile$io_write (var34,var_native,var_from,var_len) on <var34:nullable NativeFile(NativeFile)> */
1235 var38 = ((struct instance_core__Pointer*)var34)->value; /* unboxing nullable NativeFile */
1236 var37 = core__file___NativeFile_io_write___impl(var38, var_native, var_from, var_len);
1237 var35 = var37;
1238 goto RET_LABEL36;
1239 RET_LABEL36:(void)0;
1240 }
1241 }
1242 var_err = var35;
1243 {
1244 { /* Inline kernel$Int$!= (var_err,var_len) on <var_err:Int> */
1245 var41 = var_err == var_len;
1246 var42 = !var41;
1247 var39 = var42;
1248 goto RET_LABEL40;
1249 RET_LABEL40:(void)0;
1250 }
1251 }
1252 if (var39){
1253 var43 = NEW_core__IOError(&type_core__IOError);
1254 if (unlikely(varonce44==NULL)) {
1255 var45 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
1256 if (likely(varonce46!=NULL)) {
1257 var47 = varonce46;
1258 } else {
1259 var48 = "Problem in writing : ";
1260 var50 = (val*)(21l<<2|1);
1261 var51 = (val*)(21l<<2|1);
1262 var52 = (val*)((long)(0)<<2|3);
1263 var53 = (val*)((long)(0)<<2|3);
1264 var49 = core__flat___CString___to_s_unsafe(var48, var50, var51, var52, var53);
1265 var47 = var49;
1266 varonce46 = var47;
1267 }
1268 ((struct instance_core__NativeArray*)var45)->values[0]=var47;
1269 if (likely(varonce54!=NULL)) {
1270 var55 = varonce54;
1271 } else {
1272 var56 = " ";
1273 var58 = (val*)(1l<<2|1);
1274 var59 = (val*)(1l<<2|1);
1275 var60 = (val*)((long)(0)<<2|3);
1276 var61 = (val*)((long)(0)<<2|3);
1277 var57 = core__flat___CString___to_s_unsafe(var56, var58, var59, var60, var61);
1278 var55 = var57;
1279 varonce54 = var55;
1280 }
1281 ((struct instance_core__NativeArray*)var45)->values[2]=var55;
1282 if (likely(varonce62!=NULL)) {
1283 var63 = varonce62;
1284 } else {
1285 var64 = " \n";
1286 var66 = (val*)(2l<<2|1);
1287 var67 = (val*)(2l<<2|1);
1288 var68 = (val*)((long)(0)<<2|3);
1289 var69 = (val*)((long)(0)<<2|3);
1290 var65 = core__flat___CString___to_s_unsafe(var64, var66, var67, var68, var69);
1291 var63 = var65;
1292 varonce62 = var63;
1293 }
1294 ((struct instance_core__NativeArray*)var45)->values[4]=var63;
1295 } else {
1296 var45 = varonce44;
1297 varonce44 = NULL;
1298 }
1299 var70 = core__flat___Int___core__abstract_text__Object__to_s(var_err);
1300 ((struct instance_core__NativeArray*)var45)->values[1]=var70;
1301 var71 = core__flat___Int___core__abstract_text__Object__to_s(var_len);
1302 ((struct instance_core__NativeArray*)var45)->values[3]=var71;
1303 {
1304 var72 = ((val*(*)(val* self))(var45->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var45); /* native_to_s on <var45:NativeArray[String]>*/
1305 }
1306 varonce44 = var45;
1307 {
1308 ((void(*)(val* self, val* p0))(var43->class->vft[COLOR_core__error__Error__message_61d]))(var43, var72); /* message= on <var43:IOError>*/
1309 }
1310 {
1311 ((void(*)(val* self))(var43->class->vft[COLOR_core__kernel__Object__init]))(var43); /* init on <var43:IOError>*/
1312 }
1313 {
1314 { /* Inline stream$Stream$last_error= (self,var43) on <self:FileWriter> */
1315 self->attrs[COLOR_core__stream__Stream___last_error].val = var43; /* _last_error on <self:FileWriter> */
1316 RET_LABEL73:(void)0;
1317 }
1318 }
1319 } else {
1320 }
1321 RET_LABEL:;
1322 }
1323 /* method file$FileWriter$open for (self: FileWriter, String) */
1324 void core___core__FileWriter___open(val* self, val* p0) {
1325 val* var_path /* var path: String */;
1326 static val* varoncenew;
1327 static int varoncenew_guard;
1328 val* var /* : NativeFile */;
1329 val* var1 /* : NativeFile */;
1330 char* var2 /* : CString */;
1331 val* var3 /* : NativeFile */;
1332 val* var5 /* : nullable NativeFile */;
1333 short int var6 /* : Bool */;
1334 short int var8 /* : Bool */;
1335 void* var9 /* : Pointer for extern */;
1336 val* var10 /* : IOError */;
1337 val* var11 /* : NativeArray[String] */;
1338 static val* varonce;
1339 static val* varonce12;
1340 val* var13 /* : String */;
1341 char* var14 /* : CString */;
1342 val* var15 /* : String */;
1343 val* var16 /* : nullable Int */;
1344 val* var17 /* : nullable Int */;
1345 val* var18 /* : nullable Bool */;
1346 val* var19 /* : nullable Bool */;
1347 static val* varonce20;
1348 val* var21 /* : String */;
1349 char* var22 /* : CString */;
1350 val* var23 /* : String */;
1351 val* var24 /* : nullable Int */;
1352 val* var25 /* : nullable Int */;
1353 val* var26 /* : nullable Bool */;
1354 val* var27 /* : nullable Bool */;
1355 val* var28 /* : Sys */;
1356 val* var30 /* : Sys */;
1357 long var31 /* : Int */;
1358 long var33 /* : Int */;
1359 val* var34 /* : String */;
1360 val* var35 /* : String */;
1361 {
1362 ((void(*)(val* self))(self->class->vft[COLOR_core__kernel__Object__init]))(self); /* init on <self:FileWriter>*/
1363 }
1364 var_path = p0;
1365 if (likely(varoncenew_guard)) {
1366 var = varoncenew;
1367 } else {
1368 var1 = NEW_core__file__NativeFile(&type_core__file__NativeFile);
1369 var = var1;
1370 varoncenew = var;
1371 varoncenew_guard = 1;
1372 }
1373 {
1374 var2 = ((char*(*)(val* self))(var_path->class->vft[COLOR_core__abstract_text__Text__to_cstring]))(var_path); /* to_cstring on <var_path:String>*/
1375 }
1376 {
1377 var3 = core__file___core__file__NativeFile___io_open_write(var, var2);
1378 }
1379 self->attrs[COLOR_core__file__FileStream___file].val = var3; /* _file on <self:FileWriter> */
1380 {
1381 { /* Inline file$FileStream$path= (self,var_path) on <self:FileWriter> */
1382 self->attrs[COLOR_core__file__FileStream___path].val = var_path; /* _path on <self:FileWriter> */
1383 RET_LABEL4:(void)0;
1384 }
1385 }
1386 self->attrs[COLOR_core__file__FileWriter___is_writable].s = 1; /* _is_writable on <self:FileWriter> */
1387 var5 = self->attrs[COLOR_core__file__FileStream___file].val; /* _file on <self:FileWriter> */
1388 if (unlikely(var5 == NULL)) {
1389 if(catchStack.cursor >= 0){
1390 longjmp(catchStack.envs[catchStack.cursor], 1);
1391 }
1392 PRINT_ERROR("Runtime error: %s", "Cast failed");
1393 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 285);
1394 fatal_exit(1);
1395 }
1396 {
1397 { /* Inline kernel$Pointer$address_is_null (var5) on <var5:nullable NativeFile(NativeFile)> */
1398 var9 = ((struct instance_core__Pointer*)var5)->value; /* unboxing nullable NativeFile */
1399 var8 = core__kernel___Pointer_address_is_null___impl(var9);
1400 var6 = var8;
1401 goto RET_LABEL7;
1402 RET_LABEL7:(void)0;
1403 }
1404 }
1405 if (var6){
1406 var10 = NEW_core__IOError(&type_core__IOError);
1407 if (unlikely(varonce==NULL)) {
1408 var11 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
1409 if (likely(varonce12!=NULL)) {
1410 var13 = varonce12;
1411 } else {
1412 var14 = "Cannot open `";
1413 var16 = (val*)(13l<<2|1);
1414 var17 = (val*)(13l<<2|1);
1415 var18 = (val*)((long)(0)<<2|3);
1416 var19 = (val*)((long)(0)<<2|3);
1417 var15 = core__flat___CString___to_s_unsafe(var14, var16, var17, var18, var19);
1418 var13 = var15;
1419 varonce12 = var13;
1420 }
1421 ((struct instance_core__NativeArray*)var11)->values[0]=var13;
1422 if (likely(varonce20!=NULL)) {
1423 var21 = varonce20;
1424 } else {
1425 var22 = "`: ";
1426 var24 = (val*)(3l<<2|1);
1427 var25 = (val*)(3l<<2|1);
1428 var26 = (val*)((long)(0)<<2|3);
1429 var27 = (val*)((long)(0)<<2|3);
1430 var23 = core__flat___CString___to_s_unsafe(var22, var24, var25, var26, var27);
1431 var21 = var23;
1432 varonce20 = var21;
1433 }
1434 ((struct instance_core__NativeArray*)var11)->values[2]=var21;
1435 } else {
1436 var11 = varonce;
1437 varonce = NULL;
1438 }
1439 ((struct instance_core__NativeArray*)var11)->values[1]=var_path;
1440 {
1441 { /* Inline kernel$Object$sys (self) on <self:FileWriter> */
1442 var30 = glob_sys;
1443 var28 = var30;
1444 goto RET_LABEL29;
1445 RET_LABEL29:(void)0;
1446 }
1447 }
1448 {
1449 { /* Inline kernel$Sys$errno (var28) on <var28:Sys> */
1450 struct nitni_instance* var_for_c_0;
1451 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
1452 var_for_c_0->value = var28;
1453 var33 = core__kernel___Sys_errno___impl(var_for_c_0);
1454 var31 = var33;
1455 goto RET_LABEL32;
1456 RET_LABEL32:(void)0;
1457 }
1458 }
1459 {
1460 var34 = core__abstract_text___Int___strerror(var31);
1461 }
1462 ((struct instance_core__NativeArray*)var11)->values[3]=var34;
1463 {
1464 var35 = ((val*(*)(val* self))(var11->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var11); /* native_to_s on <var11:NativeArray[String]>*/
1465 }
1466 varonce = var11;
1467 {
1468 ((void(*)(val* self, val* p0))(var10->class->vft[COLOR_core__error__Error__message_61d]))(var10, var35); /* message= on <var10:IOError>*/
1469 }
1470 {
1471 ((void(*)(val* self))(var10->class->vft[COLOR_core__kernel__Object__init]))(var10); /* init on <var10:IOError>*/
1472 }
1473 {
1474 { /* Inline stream$Stream$last_error= (self,var10) on <self:FileWriter> */
1475 self->attrs[COLOR_core__stream__Stream___last_error].val = var10; /* _last_error on <self:FileWriter> */
1476 RET_LABEL36:(void)0;
1477 }
1478 }
1479 {
1480 { /* Inline file$FileWriter$is_writable= (self,0) on <self:FileWriter> */
1481 self->attrs[COLOR_core__file__FileWriter___is_writable].s = 0; /* _is_writable on <self:FileWriter> */
1482 RET_LABEL37:(void)0;
1483 }
1484 }
1485 } else {
1486 }
1487 RET_LABEL:;
1488 }
1489 /* method file$Stdin$init for (self: Stdin) */
1490 void core___core__Stdin___core__kernel__Object__init(val* self) {
1491 static val* varoncenew;
1492 static int varoncenew_guard;
1493 val* var /* : NativeFile */;
1494 val* var1 /* : NativeFile */;
1495 val* var2 /* : NativeFile */;
1496 static val* varonce;
1497 val* var3 /* : String */;
1498 char* var4 /* : CString */;
1499 val* var5 /* : String */;
1500 val* var6 /* : nullable Int */;
1501 val* var7 /* : nullable Int */;
1502 val* var8 /* : nullable Bool */;
1503 val* var9 /* : nullable Bool */;
1504 {
1505 ((void(*)(val* self))(self->class->vft[COLOR_core___core__Stdin___core__kernel__Object__init]))(self); /* init on <self:Stdin>*/
1506 }
1507 if (likely(varoncenew_guard)) {
1508 var = varoncenew;
1509 } else {
1510 var1 = NEW_core__file__NativeFile(&type_core__file__NativeFile);
1511 var = var1;
1512 varoncenew = var;
1513 varoncenew_guard = 1;
1514 }
1515 {
1516 var2 = core__file___core__file__NativeFile___native_stdin(var);
1517 }
1518 self->attrs[COLOR_core__file__FileStream___file].val = var2; /* _file on <self:Stdin> */
1519 if (likely(varonce!=NULL)) {
1520 var3 = varonce;
1521 } else {
1522 var4 = "/dev/stdin";
1523 var6 = (val*)(10l<<2|1);
1524 var7 = (val*)(10l<<2|1);
1525 var8 = (val*)((long)(0)<<2|3);
1526 var9 = (val*)((long)(0)<<2|3);
1527 var5 = core__flat___CString___to_s_unsafe(var4, var6, var7, var8, var9);
1528 var3 = var5;
1529 varonce = var3;
1530 }
1531 {
1532 { /* Inline file$FileStream$path= (self,var3) on <self:Stdin> */
1533 self->attrs[COLOR_core__file__FileStream___path].val = var3; /* _path on <self:Stdin> */
1534 RET_LABEL10:(void)0;
1535 }
1536 }
1537 {
1538 core___core__BufferedReader___prepare_buffer(self, 1l); /* Direct call stream$BufferedReader$prepare_buffer on <self:Stdin>*/
1539 }
1540 RET_LABEL:;
1541 }
1542 /* method file$Stdout$init for (self: Stdout) */
1543 void core___core__Stdout___core__kernel__Object__init(val* self) {
1544 static val* varoncenew;
1545 static int varoncenew_guard;
1546 val* var /* : NativeFile */;
1547 val* var1 /* : NativeFile */;
1548 val* var2 /* : NativeFile */;
1549 static val* varonce;
1550 val* var3 /* : String */;
1551 char* var4 /* : CString */;
1552 val* var5 /* : String */;
1553 val* var6 /* : nullable Int */;
1554 val* var7 /* : nullable Int */;
1555 val* var8 /* : nullable Bool */;
1556 val* var9 /* : nullable Bool */;
1557 val* var11 /* : Sys */;
1558 val* var13 /* : Sys */;
1559 long var14 /* : Int */;
1560 long var16 /* : Int */;
1561 {
1562 ((void(*)(val* self))(self->class->vft[COLOR_core___core__Stdout___core__kernel__Object__init]))(self); /* init on <self:Stdout>*/
1563 }
1564 if (likely(varoncenew_guard)) {
1565 var = varoncenew;
1566 } else {
1567 var1 = NEW_core__file__NativeFile(&type_core__file__NativeFile);
1568 var = var1;
1569 varoncenew = var;
1570 varoncenew_guard = 1;
1571 }
1572 {
1573 var2 = core__file___core__file__NativeFile___native_stdout(var);
1574 }
1575 self->attrs[COLOR_core__file__FileStream___file].val = var2; /* _file on <self:Stdout> */
1576 if (likely(varonce!=NULL)) {
1577 var3 = varonce;
1578 } else {
1579 var4 = "/dev/stdout";
1580 var6 = (val*)(11l<<2|1);
1581 var7 = (val*)(11l<<2|1);
1582 var8 = (val*)((long)(0)<<2|3);
1583 var9 = (val*)((long)(0)<<2|3);
1584 var5 = core__flat___CString___to_s_unsafe(var4, var6, var7, var8, var9);
1585 var3 = var5;
1586 varonce = var3;
1587 }
1588 {
1589 { /* Inline file$FileStream$path= (self,var3) on <self:Stdout> */
1590 self->attrs[COLOR_core__file__FileStream___path].val = var3; /* _path on <self:Stdout> */
1591 RET_LABEL10:(void)0;
1592 }
1593 }
1594 self->attrs[COLOR_core__file__FileWriter___is_writable].s = 1; /* _is_writable on <self:Stdout> */
1595 {
1596 { /* Inline kernel$Object$sys (self) on <self:Stdout> */
1597 var13 = glob_sys;
1598 var11 = var13;
1599 goto RET_LABEL12;
1600 RET_LABEL12:(void)0;
1601 }
1602 }
1603 {
1604 { /* Inline file$Sys$buffer_mode_line (var11) on <var11:Sys> */
1605 struct nitni_instance* var_for_c_0;
1606 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
1607 var_for_c_0->value = var11;
1608 var16 = core__file___Sys_buffer_mode_line___impl(var_for_c_0);
1609 var14 = var16;
1610 goto RET_LABEL15;
1611 RET_LABEL15:(void)0;
1612 }
1613 }
1614 {
1615 core___core__FileStream___set_buffering_mode(self, 256l, var14); /* Direct call file$FileStream$set_buffering_mode on <self:Stdout>*/
1616 }
1617 RET_LABEL:;
1618 }
1619 /* method file$Stderr$init for (self: Stderr) */
1620 void core___core__Stderr___core__kernel__Object__init(val* self) {
1621 static val* varoncenew;
1622 static int varoncenew_guard;
1623 val* var /* : NativeFile */;
1624 val* var1 /* : NativeFile */;
1625 val* var2 /* : NativeFile */;
1626 static val* varonce;
1627 val* var3 /* : String */;
1628 char* var4 /* : CString */;
1629 val* var5 /* : String */;
1630 val* var6 /* : nullable Int */;
1631 val* var7 /* : nullable Int */;
1632 val* var8 /* : nullable Bool */;
1633 val* var9 /* : nullable Bool */;
1634 {
1635 ((void(*)(val* self))(self->class->vft[COLOR_core___core__Stderr___core__kernel__Object__init]))(self); /* init on <self:Stderr>*/
1636 }
1637 if (likely(varoncenew_guard)) {
1638 var = varoncenew;
1639 } else {
1640 var1 = NEW_core__file__NativeFile(&type_core__file__NativeFile);
1641 var = var1;
1642 varoncenew = var;
1643 varoncenew_guard = 1;
1644 }
1645 {
1646 var2 = core__file___core__file__NativeFile___native_stderr(var);
1647 }
1648 self->attrs[COLOR_core__file__FileStream___file].val = var2; /* _file on <self:Stderr> */
1649 if (likely(varonce!=NULL)) {
1650 var3 = varonce;
1651 } else {
1652 var4 = "/dev/stderr";
1653 var6 = (val*)(11l<<2|1);
1654 var7 = (val*)(11l<<2|1);
1655 var8 = (val*)((long)(0)<<2|3);
1656 var9 = (val*)((long)(0)<<2|3);
1657 var5 = core__flat___CString___to_s_unsafe(var4, var6, var7, var8, var9);
1658 var3 = var5;
1659 varonce = var3;
1660 }
1661 {
1662 { /* Inline file$FileStream$path= (self,var3) on <self:Stderr> */
1663 self->attrs[COLOR_core__file__FileStream___path].val = var3; /* _path on <self:Stderr> */
1664 RET_LABEL10:(void)0;
1665 }
1666 }
1667 self->attrs[COLOR_core__file__FileWriter___is_writable].s = 1; /* _is_writable on <self:Stderr> */
1668 RET_LABEL:;
1669 }
1670 /* method file$Writable$write_to_file for (self: Writable, String) */
1671 void core__file___Writable___write_to_file(val* self, val* p0) {
1672 val* var_filepath /* var filepath: String */;
1673 val* var /* : FileWriter */;
1674 val* var_stream /* var stream: FileWriter */;
1675 var_filepath = p0;
1676 var = NEW_core__FileWriter(&type_core__FileWriter);
1677 {
1678 core___core__FileWriter___open(var, var_filepath); /* Direct call file$FileWriter$open on <var:FileWriter>*/
1679 }
1680 var_stream = var;
1681 {
1682 ((void(*)(val* self, val* p0))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__stream__Writable__write_to]))(self, var_stream); /* write_to on <self:Writable>*/
1683 }
1684 {
1685 core___core__FileWriter___core__stream__Stream__close(var_stream); /* Direct call file$FileWriter$close on <var_stream:FileWriter>*/
1686 }
1687 RET_LABEL:;
1688 }
1689 /* method file$Path$path for (self: Path): String */
1690 val* core___core__Path___path(val* self) {
1691 val* var /* : String */;
1692 val* var1 /* : String */;
1693 var1 = self->attrs[COLOR_core__file__Path___path].val; /* _path on <self:Path> */
1694 if (unlikely(var1 == NULL)) {
1695 if(catchStack.cursor >= 0){
1696 longjmp(catchStack.envs[catchStack.cursor], 1);
1697 }
1698 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
1699 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 383);
1700 fatal_exit(1);
1701 }
1702 var = var1;
1703 RET_LABEL:;
1704 return var;
1705 }
1706 /* method file$Path$path= for (self: Path, String) */
1707 void core___core__Path___path_61d(val* self, val* p0) {
1708 self->attrs[COLOR_core__file__Path___path].val = p0; /* _path on <self:Path> */
1709 RET_LABEL:;
1710 }
1711 /* method file$Path$to_s for (self: Path): String */
1712 val* core___core__Path___core__abstract_text__Object__to_s(val* self) {
1713 val* var /* : String */;
1714 val* var1 /* : String */;
1715 val* var3 /* : String */;
1716 {
1717 { /* Inline file$Path$path (self) on <self:Path> */
1718 var3 = self->attrs[COLOR_core__file__Path___path].val; /* _path on <self:Path> */
1719 if (unlikely(var3 == NULL)) {
1720 if(catchStack.cursor >= 0){
1721 longjmp(catchStack.envs[catchStack.cursor], 1);
1722 }
1723 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
1724 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 383);
1725 fatal_exit(1);
1726 }
1727 var1 = var3;
1728 RET_LABEL2:(void)0;
1729 }
1730 }
1731 var = var1;
1732 goto RET_LABEL;
1733 RET_LABEL:;
1734 return var;
1735 }
1736 /* method file$Path$simplified for (self: Path): Path */
1737 val* core___core__Path___simplified(val* self) {
1738 val* var /* : Path */;
1739 short int var1 /* : Bool */;
1740 val* var2 /* : Path */;
1741 val* var3 /* : Path */;
1742 val* var5 /* : String */;
1743 val* var7 /* : String */;
1744 val* var8 /* : String */;
1745 val* var9 /* : Path */;
1746 val* var_res /* var res: Path */;
1747 var1 = self->attrs[COLOR_core__file__Path___simplified].val != NULL; /* _simplified on <self:Path> */
1748 if(likely(var1)) {
1749 var2 = self->attrs[COLOR_core__file__Path___simplified].val; /* _simplified on <self:Path> */
1750 if (unlikely(var2 == NULL)) {
1751 if(catchStack.cursor >= 0){
1752 longjmp(catchStack.envs[catchStack.cursor], 1);
1753 }
1754 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _simplified");
1755 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 398);
1756 fatal_exit(1);
1757 }
1758 } else {
1759 {
1760 {
1761 { /* Inline file$Path$path (self) on <self:Path> */
1762 var7 = self->attrs[COLOR_core__file__Path___path].val; /* _path on <self:Path> */
1763 if (unlikely(var7 == NULL)) {
1764 if(catchStack.cursor >= 0){
1765 longjmp(catchStack.envs[catchStack.cursor], 1);
1766 }
1767 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
1768 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 383);
1769 fatal_exit(1);
1770 }
1771 var5 = var7;
1772 RET_LABEL6:(void)0;
1773 }
1774 }
1775 {
1776 var8 = core__file___String___simplify_path(var5);
1777 }
1778 {
1779 var9 = core__file___Text___to_path(var8);
1780 }
1781 var_res = var9;
1782 {
1783 core___core__Path___simplified_61d(var_res, var_res); /* Direct call file$Path$simplified= on <var_res:Path>*/
1784 }
1785 var3 = var_res;
1786 goto RET_LABEL4;
1787 RET_LABEL4:(void)0;
1788 }
1789 self->attrs[COLOR_core__file__Path___simplified].val = var3; /* _simplified on <self:Path> */
1790 var2 = var3;
1791 }
1792 var = var2;
1793 RET_LABEL:;
1794 return var;
1795 }
1796 /* method file$Path$simplified= for (self: Path, Path) */
1797 void core___core__Path___simplified_61d(val* self, val* p0) {
1798 self->attrs[COLOR_core__file__Path___simplified].val = p0; /* _simplified on <self:Path> */
1799 RET_LABEL:;
1800 }
1801 /* method file$Path$last_error= for (self: Path, nullable IOError) */
1802 void core___core__Path___last_error_61d(val* self, val* p0) {
1803 self->attrs[COLOR_core__file__Path___last_error].val = p0; /* _last_error on <self:Path> */
1804 RET_LABEL:;
1805 }
1806 /* method file$Path$copy for (self: Path, Path) */
1807 void core___core__Path___copy(val* self, val* p0) {
1808 val* var_dest /* var dest: Path */;
1809 val* var /* : FileReader */;
1810 val* var_input /* var input: FileReader */;
1811 val* var2 /* : FileWriter */;
1812 val* var_output /* var output: FileWriter */;
1813 short int var3 /* : Bool */;
1814 short int var4 /* : Bool */;
1815 val* var5 /* : Bytes */;
1816 val* var_buffer /* var buffer: Bytes */;
1817 val* var6 /* : nullable IOError */;
1818 val* var7 /* : nullable IOError */;
1819 val* var9 /* : nullable IOError */;
1820 val* var10 /* : nullable IOError */;
1821 val* var12 /* : nullable IOError */;
1822 var_dest = p0;
1823 {
1824 { /* Inline file$Path$last_error= (self,((val*)NULL)) on <self:Path> */
1825 self->attrs[COLOR_core__file__Path___last_error].val = ((val*)NULL); /* _last_error on <self:Path> */
1826 RET_LABEL1:(void)0;
1827 }
1828 }
1829 {
1830 var = core___core__Path___open_ro(self);
1831 }
1832 var_input = var;
1833 {
1834 var2 = core___core__Path___open_wo(var_dest);
1835 }
1836 var_output = var2;
1837 for(;;) {
1838 {
1839 var3 = core___core__BufferedReader___Reader__eof(var_input);
1840 }
1841 var4 = !var3;
1842 if (var4){
1843 {
1844 var5 = core___core__BufferedReader___Reader__read_bytes(var_input, 1024l);
1845 }
1846 var_buffer = var5;
1847 {
1848 core___core__FileWriter___core__stream__Writer__write_bytes(var_output, var_buffer); /* Direct call file$FileWriter$write_bytes on <var_output:FileWriter>*/
1849 }
1850 } else {
1851 goto BREAK_label;
1852 }
1853 }
1854 BREAK_label: (void)0;
1855 {
1856 core___core__FileReader___core__stream__Stream__close(var_input); /* Direct call file$FileReader$close on <var_input:FileReader>*/
1857 }
1858 {
1859 core___core__FileWriter___core__stream__Stream__close(var_output); /* Direct call file$FileWriter$close on <var_output:FileWriter>*/
1860 }
1861 {
1862 { /* Inline stream$Stream$last_error (var_input) on <var_input:FileReader> */
1863 var9 = var_input->attrs[COLOR_core__stream__Stream___last_error].val; /* _last_error on <var_input:FileReader> */
1864 var7 = var9;
1865 RET_LABEL8:(void)0;
1866 }
1867 }
1868 if (var7!=NULL) {
1869 var6 = var7;
1870 } else {
1871 {
1872 { /* Inline stream$Stream$last_error (var_output) on <var_output:FileWriter> */
1873 var12 = var_output->attrs[COLOR_core__stream__Stream___last_error].val; /* _last_error on <var_output:FileWriter> */
1874 var10 = var12;
1875 RET_LABEL11:(void)0;
1876 }
1877 }
1878 var6 = var10;
1879 }
1880 {
1881 { /* Inline file$Path$last_error= (self,var6) on <self:Path> */
1882 self->attrs[COLOR_core__file__Path___last_error].val = var6; /* _last_error on <self:Path> */
1883 RET_LABEL13:(void)0;
1884 }
1885 }
1886 RET_LABEL:;
1887 }
1888 /* method file$Path$open_ro for (self: Path): FileReader */
1889 val* core___core__Path___open_ro(val* self) {
1890 val* var /* : FileReader */;
1891 val* var1 /* : FileReader */;
1892 val* var2 /* : String */;
1893 val* var4 /* : String */;
1894 val* var_res /* var res: FileReader */;
1895 val* var5 /* : nullable IOError */;
1896 val* var7 /* : nullable IOError */;
1897 var1 = NEW_core__FileReader(&type_core__FileReader);
1898 {
1899 { /* Inline file$Path$path (self) on <self:Path> */
1900 var4 = self->attrs[COLOR_core__file__Path___path].val; /* _path on <self:Path> */
1901 if (unlikely(var4 == NULL)) {
1902 if(catchStack.cursor >= 0){
1903 longjmp(catchStack.envs[catchStack.cursor], 1);
1904 }
1905 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
1906 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 383);
1907 fatal_exit(1);
1908 }
1909 var2 = var4;
1910 RET_LABEL3:(void)0;
1911 }
1912 }
1913 {
1914 core___core__FileReader___open(var1, var2); /* Direct call file$FileReader$open on <var1:FileReader>*/
1915 }
1916 var_res = var1;
1917 {
1918 { /* Inline stream$Stream$last_error (var_res) on <var_res:FileReader> */
1919 var7 = var_res->attrs[COLOR_core__stream__Stream___last_error].val; /* _last_error on <var_res:FileReader> */
1920 var5 = var7;
1921 RET_LABEL6:(void)0;
1922 }
1923 }
1924 {
1925 { /* Inline file$Path$last_error= (self,var5) on <self:Path> */
1926 self->attrs[COLOR_core__file__Path___last_error].val = var5; /* _last_error on <self:Path> */
1927 RET_LABEL8:(void)0;
1928 }
1929 }
1930 var = var_res;
1931 goto RET_LABEL;
1932 RET_LABEL:;
1933 return var;
1934 }
1935 /* method file$Path$open_wo for (self: Path): FileWriter */
1936 val* core___core__Path___open_wo(val* self) {
1937 val* var /* : FileWriter */;
1938 val* var1 /* : FileWriter */;
1939 val* var2 /* : String */;
1940 val* var4 /* : String */;
1941 val* var_res /* var res: FileWriter */;
1942 val* var5 /* : nullable IOError */;
1943 val* var7 /* : nullable IOError */;
1944 var1 = NEW_core__FileWriter(&type_core__FileWriter);
1945 {
1946 { /* Inline file$Path$path (self) on <self:Path> */
1947 var4 = self->attrs[COLOR_core__file__Path___path].val; /* _path on <self:Path> */
1948 if (unlikely(var4 == NULL)) {
1949 if(catchStack.cursor >= 0){
1950 longjmp(catchStack.envs[catchStack.cursor], 1);
1951 }
1952 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
1953 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 383);
1954 fatal_exit(1);
1955 }
1956 var2 = var4;
1957 RET_LABEL3:(void)0;
1958 }
1959 }
1960 {
1961 core___core__FileWriter___open(var1, var2); /* Direct call file$FileWriter$open on <var1:FileWriter>*/
1962 }
1963 var_res = var1;
1964 {
1965 { /* Inline stream$Stream$last_error (var_res) on <var_res:FileWriter> */
1966 var7 = var_res->attrs[COLOR_core__stream__Stream___last_error].val; /* _last_error on <var_res:FileWriter> */
1967 var5 = var7;
1968 RET_LABEL6:(void)0;
1969 }
1970 }
1971 {
1972 { /* Inline file$Path$last_error= (self,var5) on <self:Path> */
1973 self->attrs[COLOR_core__file__Path___last_error].val = var5; /* _last_error on <self:Path> */
1974 RET_LABEL8:(void)0;
1975 }
1976 }
1977 var = var_res;
1978 goto RET_LABEL;
1979 RET_LABEL:;
1980 return var;
1981 }
1982 /* method file$Path$== for (self: Path, nullable Object): Bool */
1983 short int core___core__Path___core__kernel__Object___61d_61d(val* self, val* p0) {
1984 short int var /* : Bool */;
1985 val* var_other /* var other: nullable Object */;
1986 short int var1 /* : Bool */;
1987 short int var2 /* : Bool */;
1988 int cltype;
1989 int idtype;
1990 short int var_ /* var : Bool */;
1991 val* var3 /* : Path */;
1992 val* var4 /* : String */;
1993 val* var6 /* : String */;
1994 val* var7 /* : Path */;
1995 val* var8 /* : String */;
1996 val* var10 /* : String */;
1997 short int var11 /* : Bool */;
1998 var_other = p0;
1999 /* <var_other:nullable Object> isa Path */
2000 cltype = type_core__Path.color;
2001 idtype = type_core__Path.id;
2002 if(var_other == NULL) {
2003 var2 = 0;
2004 } else {
2005 if(cltype >= (((long)var_other&3)?type_info[((long)var_other&3)]:var_other->type)->table_size) {
2006 var2 = 0;
2007 } else {
2008 var2 = (((long)var_other&3)?type_info[((long)var_other&3)]:var_other->type)->type_table[cltype] == idtype;
2009 }
2010 }
2011 var_ = var2;
2012 if (var2){
2013 {
2014 var3 = core___core__Path___simplified(self);
2015 }
2016 {
2017 { /* Inline file$Path$path (var3) on <var3:Path> */
2018 var6 = var3->attrs[COLOR_core__file__Path___path].val; /* _path on <var3:Path> */
2019 if (unlikely(var6 == NULL)) {
2020 if(catchStack.cursor >= 0){
2021 longjmp(catchStack.envs[catchStack.cursor], 1);
2022 }
2023 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
2024 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 383);
2025 fatal_exit(1);
2026 }
2027 var4 = var6;
2028 RET_LABEL5:(void)0;
2029 }
2030 }
2031 {
2032 var7 = core___core__Path___simplified(var_other);
2033 }
2034 {
2035 { /* Inline file$Path$path (var7) on <var7:Path> */
2036 var10 = var7->attrs[COLOR_core__file__Path___path].val; /* _path on <var7:Path> */
2037 if (unlikely(var10 == NULL)) {
2038 if(catchStack.cursor >= 0){
2039 longjmp(catchStack.envs[catchStack.cursor], 1);
2040 }
2041 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
2042 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 383);
2043 fatal_exit(1);
2044 }
2045 var8 = var10;
2046 RET_LABEL9:(void)0;
2047 }
2048 }
2049 {
2050 var11 = ((short int(*)(val* self, val* p0))(var4->class->vft[COLOR_core__kernel__Object___61d_61d]))(var4, var8); /* == on <var4:String>*/
2051 }
2052 var1 = var11;
2053 } else {
2054 var1 = var_;
2055 }
2056 var = var1;
2057 goto RET_LABEL;
2058 RET_LABEL:;
2059 return var;
2060 }
2061 /* method file$Path$hash for (self: Path): Int */
2062 long core___core__Path___core__kernel__Object__hash(val* self) {
2063 long var /* : Int */;
2064 val* var1 /* : Path */;
2065 val* var2 /* : String */;
2066 val* var4 /* : String */;
2067 long var5 /* : Int */;
2068 {
2069 var1 = core___core__Path___simplified(self);
2070 }
2071 {
2072 { /* Inline file$Path$path (var1) on <var1:Path> */
2073 var4 = var1->attrs[COLOR_core__file__Path___path].val; /* _path on <var1:Path> */
2074 if (unlikely(var4 == NULL)) {
2075 if(catchStack.cursor >= 0){
2076 longjmp(catchStack.envs[catchStack.cursor], 1);
2077 }
2078 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
2079 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 383);
2080 fatal_exit(1);
2081 }
2082 var2 = var4;
2083 RET_LABEL3:(void)0;
2084 }
2085 }
2086 {
2087 var5 = ((long(*)(val* self))(var2->class->vft[COLOR_core__kernel__Object__hash]))(var2); /* hash on <var2:String>*/
2088 }
2089 var = var5;
2090 goto RET_LABEL;
2091 RET_LABEL:;
2092 return var;
2093 }
2094 /* method file$Path$init for (self: Path) */
2095 void core___core__Path___core__kernel__Object__init(val* self) {
2096 {
2097 ((void(*)(val* self))(self->class->vft[COLOR_core___core__Path___core__kernel__Object__init]))(self); /* init on <self:Path>*/
2098 }
2099 RET_LABEL:;
2100 }
2101 /* method file$FileStat$stat for (self: FileStat): NativeFileStat */
2102 val* core___core__FileStat___stat(val* self) {
2103 val* var /* : NativeFileStat */;
2104 val* var1 /* : NativeFileStat */;
2105 var1 = self->attrs[COLOR_core__file__FileStat___stat].val; /* _stat on <self:FileStat> */
2106 if (unlikely(var1 == NULL)) {
2107 if(catchStack.cursor >= 0){
2108 longjmp(catchStack.envs[catchStack.cursor], 1);
2109 }
2110 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stat");
2111 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 769);
2112 fatal_exit(1);
2113 }
2114 var = var1;
2115 RET_LABEL:;
2116 return var;
2117 }
2118 /* method file$FileStat$stat= for (self: FileStat, NativeFileStat) */
2119 void core___core__FileStat___stat_61d(val* self, val* p0) {
2120 self->attrs[COLOR_core__file__FileStat___stat].val = p0; /* _stat on <self:FileStat> */
2121 RET_LABEL:;
2122 }
2123 /* method file$FileStat$finalized for (self: FileStat): Bool */
2124 short int core___core__FileStat___finalized(val* self) {
2125 short int var /* : Bool */;
2126 short int var1 /* : Bool */;
2127 var1 = self->attrs[COLOR_core__file__FileStat___finalized].s; /* _finalized on <self:FileStat> */
2128 var = var1;
2129 RET_LABEL:;
2130 return var;
2131 }
2132 /* method file$FileStat$finalized= for (self: FileStat, Bool) */
2133 void core___core__FileStat___finalized_61d(val* self, short int p0) {
2134 self->attrs[COLOR_core__file__FileStat___finalized].s = p0; /* _finalized on <self:FileStat> */
2135 RET_LABEL:;
2136 }
2137 /* method file$FileStat$finalize for (self: FileStat) */
2138 void core___core__FileStat___core__gc__Finalizable__finalize(val* self) {
2139 short int var /* : Bool */;
2140 short int var2 /* : Bool */;
2141 short int var3 /* : Bool */;
2142 val* var4 /* : NativeFileStat */;
2143 val* var6 /* : NativeFileStat */;
2144 void* var8 /* : Pointer for extern */;
2145 {
2146 { /* Inline file$FileStat$finalized (self) on <self:FileStat> */
2147 var2 = self->attrs[COLOR_core__file__FileStat___finalized].s; /* _finalized on <self:FileStat> */
2148 var = var2;
2149 RET_LABEL1:(void)0;
2150 }
2151 }
2152 var3 = !var;
2153 if (var3){
2154 {
2155 { /* Inline file$FileStat$stat (self) on <self:FileStat> */
2156 var6 = self->attrs[COLOR_core__file__FileStat___stat].val; /* _stat on <self:FileStat> */
2157 if (unlikely(var6 == NULL)) {
2158 if(catchStack.cursor >= 0){
2159 longjmp(catchStack.envs[catchStack.cursor], 1);
2160 }
2161 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stat");
2162 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 769);
2163 fatal_exit(1);
2164 }
2165 var4 = var6;
2166 RET_LABEL5:(void)0;
2167 }
2168 }
2169 {
2170 { /* Inline kernel$Pointer$free (var4) on <var4:NativeFileStat> */
2171 var8 = ((struct instance_core__Pointer*)var4)->value; /* unboxing NativeFileStat */
2172 core__kernel___Pointer_free___impl(var8);
2173 RET_LABEL7:(void)0;
2174 }
2175 }
2176 {
2177 { /* Inline file$FileStat$finalized= (self,1) on <self:FileStat> */
2178 self->attrs[COLOR_core__file__FileStat___finalized].s = 1; /* _finalized on <self:FileStat> */
2179 RET_LABEL9:(void)0;
2180 }
2181 }
2182 } else {
2183 }
2184 RET_LABEL:;
2185 }
2186 /* method file$FileStat$is_dir for (self: FileStat): Bool */
2187 short int core___core__FileStat___is_dir(val* self) {
2188 short int var /* : Bool */;
2189 short int var1 /* : Bool */;
2190 short int var3 /* : Bool */;
2191 short int var4 /* : Bool */;
2192 val* var5 /* : NativeFileStat */;
2193 val* var7 /* : NativeFileStat */;
2194 short int var8 /* : Bool */;
2195 short int var10 /* : Bool */;
2196 void* var11 /* : NativeFileStat for extern */;
2197 {
2198 { /* Inline file$FileStat$finalized (self) on <self:FileStat> */
2199 var3 = self->attrs[COLOR_core__file__FileStat___finalized].s; /* _finalized on <self:FileStat> */
2200 var1 = var3;
2201 RET_LABEL2:(void)0;
2202 }
2203 }
2204 var4 = !var1;
2205 if (unlikely(!var4)) {
2206 if(catchStack.cursor >= 0){
2207 longjmp(catchStack.envs[catchStack.cursor], 1);
2208 }
2209 PRINT_ERROR("Runtime error: %s", "Assert failed");
2210 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 829);
2211 fatal_exit(1);
2212 }
2213 {
2214 { /* Inline file$FileStat$stat (self) on <self:FileStat> */
2215 var7 = self->attrs[COLOR_core__file__FileStat___stat].val; /* _stat on <self:FileStat> */
2216 if (unlikely(var7 == NULL)) {
2217 if(catchStack.cursor >= 0){
2218 longjmp(catchStack.envs[catchStack.cursor], 1);
2219 }
2220 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stat");
2221 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 769);
2222 fatal_exit(1);
2223 }
2224 var5 = var7;
2225 RET_LABEL6:(void)0;
2226 }
2227 }
2228 {
2229 { /* Inline file$NativeFileStat$is_dir (var5) on <var5:NativeFileStat> */
2230 var11 = ((struct instance_core__Pointer*)var5)->value; /* unboxing NativeFileStat */
2231 var10 = core__file___NativeFileStat_is_dir___impl(var11);
2232 var8 = var10;
2233 goto RET_LABEL9;
2234 RET_LABEL9:(void)0;
2235 }
2236 }
2237 var = var8;
2238 goto RET_LABEL;
2239 RET_LABEL:;
2240 return var;
2241 }
2242 /* method file$FileStat$init for (self: FileStat) */
2243 void core___core__FileStat___core__kernel__Object__init(val* self) {
2244 {
2245 ((void(*)(val* self))(self->class->vft[COLOR_core___core__FileStat___core__kernel__Object__init]))(self); /* init on <self:FileStat>*/
2246 }
2247 RET_LABEL:;
2248 }
2249 /* method file$Text$to_path for (self: Text): Path */
2250 val* core__file___Text___to_path(val* self) {
2251 val* var /* : Path */;
2252 val* var1 /* : Path */;
2253 val* var2 /* : String */;
2254 var1 = NEW_core__Path(&type_core__Path);
2255 {
2256 var2 = ((val*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Object__to_s]))(self); /* to_s on <self:Text>*/
2257 }
2258 {
2259 ((void(*)(val* self, val* p0))(var1->class->vft[COLOR_core__file__Path__path_61d]))(var1, var2); /* path= on <var1:Path>*/
2260 }
2261 {
2262 ((void(*)(val* self))(var1->class->vft[COLOR_core__kernel__Object__init]))(var1); /* init on <var1:Path>*/
2263 }
2264 var = var1;
2265 goto RET_LABEL;
2266 RET_LABEL:;
2267 return var;
2268 }
2269 /* method file$Text$write_native_to for (self: Text, FileWriter) */
2270 void core__file___Text___write_native_to(val* self, val* p0) {
2271 val* var_s /* var s: FileWriter */;
2272 val* var /* : Iterator[FlatText] */;
2273 val* var_ /* var : Iterator[FlatText] */;
2274 val* var1 /* : Iterator[nullable Object] */;
2275 val* var_2 /* var : Iterator[FlatText] */;
2276 short int var3 /* : Bool */;
2277 val* var4 /* : nullable Object */;
2278 val* var_i /* var i: FlatText */;
2279 char* var5 /* : CString */;
2280 long var6 /* : Int */;
2281 long var8 /* : Int */;
2282 var_s = p0;
2283 {
2284 var = ((val*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__substrings]))(self); /* substrings on <self:Text>*/
2285 }
2286 var_ = var;
2287 {
2288 var1 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Iterator__iterator]))(var_); /* iterator on <var_:Iterator[FlatText]>*/
2289 }
2290 var_2 = var1;
2291 for(;;) {
2292 {
2293 var3 = ((short int(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_2); /* is_ok on <var_2:Iterator[FlatText]>*/
2294 }
2295 if (var3){
2296 } else {
2297 goto BREAK_label;
2298 }
2299 {
2300 var4 = ((val*(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_2); /* item on <var_2:Iterator[FlatText]>*/
2301 }
2302 var_i = var4;
2303 {
2304 var5 = ((char*(*)(val* self))(var_i->class->vft[COLOR_core__abstract_text__Text__to_cstring]))(var_i); /* to_cstring on <var_i:FlatText>*/
2305 }
2306 {
2307 { /* Inline abstract_text$FlatText$byte_length (var_i) on <var_i:FlatText> */
2308 var8 = var_i->attrs[COLOR_core__abstract_text__FlatText___byte_length].l; /* _byte_length on <var_i:FlatText> */
2309 var6 = var8;
2310 RET_LABEL7:(void)0;
2311 }
2312 }
2313 {
2314 core___core__FileWriter___write_native(var_s, var5, 0l, var6); /* Direct call file$FileWriter$write_native on <var_s:FileWriter>*/
2315 }
2316 {
2317 ((void(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_2); /* next on <var_2:Iterator[FlatText]>*/
2318 }
2319 }
2320 BREAK_label: (void)0;
2321 {
2322 ((void(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_2); /* finish on <var_2:Iterator[FlatText]>*/
2323 }
2324 RET_LABEL:;
2325 }
2326 /* method file$Text$file_exists for (self: Text): Bool */
2327 short int core__file___Text___file_exists(val* self) {
2328 short int var /* : Bool */;
2329 char* var1 /* : CString */;
2330 short int var2 /* : Bool */;
2331 short int var4 /* : Bool */;
2332 {
2333 var1 = ((char*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__to_cstring]))(self); /* to_cstring on <self:Text>*/
2334 }
2335 {
2336 { /* Inline file$CString$file_exists (var1) on <var1:CString> */
2337 var4 = core__file___CString_file_exists___impl(var1);
2338 var2 = var4;
2339 goto RET_LABEL3;
2340 RET_LABEL3:(void)0;
2341 }
2342 }
2343 var = var2;
2344 goto RET_LABEL;
2345 RET_LABEL:;
2346 return var;
2347 }
2348 /* method file$String$file_stat for (self: String): nullable FileStat */
2349 val* core__file___String___file_stat(val* self) {
2350 val* var /* : nullable FileStat */;
2351 char* var1 /* : CString */;
2352 val* var2 /* : NativeFileStat */;
2353 val* var4 /* : NativeFileStat */;
2354 val* var5 /* : NativeFileStat */;
2355 val* var_stat /* var stat: NativeFileStat */;
2356 short int var6 /* : Bool */;
2357 short int var8 /* : Bool */;
2358 void* var9 /* : Pointer for extern */;
2359 val* var10 /* : FileStat */;
2360 {
2361 var1 = ((char*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__to_cstring]))(self); /* to_cstring on <self:String>*/
2362 }
2363 {
2364 { /* Inline file$CString$file_stat (var1) on <var1:CString> */
2365 var4 = core__file___CString_file_stat___impl(var1);
2366 var5 = BOX_core__Pointer(var4); /* boxing NativeFileStat */
2367 var5->type = &type_core__file__NativeFileStat;
2368 var5->class = &class_core__file__NativeFileStat;
2369 var2 = var5;
2370 goto RET_LABEL3;
2371 RET_LABEL3:(void)0;
2372 }
2373 }
2374 var_stat = var2;
2375 {
2376 { /* Inline kernel$Pointer$address_is_null (var_stat) on <var_stat:NativeFileStat> */
2377 var9 = ((struct instance_core__Pointer*)var_stat)->value; /* unboxing NativeFileStat */
2378 var8 = core__kernel___Pointer_address_is_null___impl(var9);
2379 var6 = var8;
2380 goto RET_LABEL7;
2381 RET_LABEL7:(void)0;
2382 }
2383 }
2384 if (var6){
2385 var = ((val*)NULL);
2386 goto RET_LABEL;
2387 } else {
2388 }
2389 var10 = NEW_core__FileStat(&type_core__FileStat);
2390 {
2391 ((void(*)(val* self, val* p0))(var10->class->vft[COLOR_core__file__FileStat__stat_61d]))(var10, var_stat); /* stat= on <var10:FileStat>*/
2392 }
2393 {
2394 ((void(*)(val* self))(var10->class->vft[COLOR_core__kernel__Object__init]))(var10); /* init on <var10:FileStat>*/
2395 }
2396 var = var10;
2397 goto RET_LABEL;
2398 RET_LABEL:;
2399 return var;
2400 }
2401 /* method file$String$file_copy_to for (self: String, String) */
2402 void core__file___String___file_copy_to(val* self, val* p0) {
2403 val* var_dest /* var dest: String */;
2404 val* var /* : Path */;
2405 val* var1 /* : Path */;
2406 var_dest = p0;
2407 {
2408 var = core__file___Text___to_path(self);
2409 }
2410 {
2411 var1 = core__file___Text___to_path(var_dest);
2412 }
2413 {
2414 core___core__Path___copy(var, var1); /* Direct call file$Path$copy on <var:Path>*/
2415 }
2416 RET_LABEL:;
2417 }
2418 /* method file$String$strip_extension for (self: String, nullable String): String */
2419 val* core__file___String___strip_extension(val* self, val* p0) {
2420 val* var /* : String */;
2421 val* var_extension /* var extension: nullable String */;
2422 short int var1 /* : Bool */;
2423 short int var2 /* : Bool */;
2424 val* var3 /* : nullable String */;
2425 short int var4 /* : Bool */;
2426 short int var5 /* : Bool */;
2427 val* var6 /* : NativeArray[String] */;
2428 static val* varonce;
2429 static val* varonce7;
2430 val* var8 /* : String */;
2431 char* var9 /* : CString */;
2432 val* var10 /* : String */;
2433 val* var11 /* : nullable Int */;
2434 val* var12 /* : nullable Int */;
2435 val* var13 /* : nullable Bool */;
2436 val* var14 /* : nullable Bool */;
2437 val* var15 /* : String */;
2438 short int var16 /* : Bool */;
2439 long var17 /* : Int */;
2440 long var18 /* : Int */;
2441 long var19 /* : Int */;
2442 short int var21 /* : Bool */;
2443 int cltype;
2444 int idtype;
2445 const char* var_class_name;
2446 long var22 /* : Int */;
2447 val* var23 /* : Text */;
2448 var_extension = p0;
2449 if (var_extension == NULL) {
2450 var1 = 1; /* is null */
2451 } else {
2452 var1 = 0; /* arg is null but recv is not */
2453 }
2454 if (0) {
2455 var2 = ((short int(*)(val* self, val* p0))(var_extension->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_extension, ((val*)NULL)); /* == on <var_extension:nullable String>*/
2456 var1 = var2;
2457 }
2458 if (var1){
2459 {
2460 var3 = ((val*(*)(val* self))(self->class->vft[COLOR_core__file__String__file_extension]))(self); /* file_extension on <self:String>*/
2461 }
2462 var_extension = var3;
2463 if (var_extension == NULL) {
2464 var4 = 1; /* is null */
2465 } else {
2466 var4 = 0; /* arg is null but recv is not */
2467 }
2468 if (0) {
2469 var5 = ((short int(*)(val* self, val* p0))(var_extension->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_extension, ((val*)NULL)); /* == on <var_extension:nullable String>*/
2470 var4 = var5;
2471 }
2472 if (var4){
2473 var = self;
2474 goto RET_LABEL;
2475 } else {
2476 if (unlikely(varonce==NULL)) {
2477 var6 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
2478 if (likely(varonce7!=NULL)) {
2479 var8 = varonce7;
2480 } else {
2481 var9 = ".";
2482 var11 = (val*)(1l<<2|1);
2483 var12 = (val*)(1l<<2|1);
2484 var13 = (val*)((long)(0)<<2|3);
2485 var14 = (val*)((long)(0)<<2|3);
2486 var10 = core__flat___CString___to_s_unsafe(var9, var11, var12, var13, var14);
2487 var8 = var10;
2488 varonce7 = var8;
2489 }
2490 ((struct instance_core__NativeArray*)var6)->values[0]=var8;
2491 } else {
2492 var6 = varonce;
2493 varonce = NULL;
2494 }
2495 ((struct instance_core__NativeArray*)var6)->values[1]=var_extension;
2496 {
2497 var15 = ((val*(*)(val* self))(var6->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var6); /* native_to_s on <var6:NativeArray[String]>*/
2498 }
2499 varonce = var6;
2500 var_extension = var15;
2501 }
2502 } else {
2503 }
2504 {
2505 var16 = core___core__Text___has_suffix(self, var_extension);
2506 }
2507 if (var16){
2508 {
2509 var17 = ((long(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__length]))(self); /* length on <self:String>*/
2510 }
2511 {
2512 var18 = ((long(*)(val* self))(var_extension->class->vft[COLOR_core__abstract_text__Text__length]))(var_extension); /* length on <var_extension:nullable String(String)>*/
2513 }
2514 {
2515 { /* Inline kernel$Int$- (var17,var18) on <var17:Int> */
2516 /* Covariant cast for argument 0 (i) <var18:Int> isa OTHER */
2517 /* <var18:Int> isa OTHER */
2518 var21 = 1; /* easy <var18:Int> isa OTHER*/
2519 if (unlikely(!var21)) {
2520 var_class_name = type_core__Int.name;
2521 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2522 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
2523 fatal_exit(1);
2524 }
2525 var22 = var17 - var18;
2526 var19 = var22;
2527 goto RET_LABEL20;
2528 RET_LABEL20:(void)0;
2529 }
2530 }
2531 {
2532 var23 = ((val*(*)(val* self, long p0, long p1))(self->class->vft[COLOR_core__abstract_text__Text__substring]))(self, 0l, var19); /* substring on <self:String>*/
2533 }
2534 var = var23;
2535 goto RET_LABEL;
2536 } else {
2537 }
2538 var = self;
2539 goto RET_LABEL;
2540 RET_LABEL:;
2541 return var;
2542 }
2543 /* method file$String$basename for (self: String, nullable String): String */
2544 val* core__file___String___basename(val* self, val* p0) {
2545 val* var /* : String */;
2546 val* var_extension /* var extension: nullable String */;
2547 val* var_n /* var n: String */;
2548 val* var1 /* : Sys */;
2549 short int var2 /* : Bool */;
2550 short int var4 /* : Bool */;
2551 long var5 /* : Int */;
2552 long var6 /* : Int */;
2553 short int var8 /* : Bool */;
2554 int cltype;
2555 int idtype;
2556 const char* var_class_name;
2557 long var9 /* : Int */;
2558 long var_l /* var l: Int */;
2559 short int var10 /* : Bool */;
2560 short int var11 /* : Bool */;
2561 short int var13 /* : Bool */;
2562 int cltype14;
2563 int idtype15;
2564 const char* var_class_name16;
2565 short int var17 /* : Bool */;
2566 short int var_ /* var : Bool */;
2567 short int var18 /* : Bool */;
2568 val* var19 /* : SequenceRead[Char] */;
2569 val* var20 /* : nullable Object */;
2570 short int var21 /* : Bool */;
2571 short int var23 /* : Bool */;
2572 uint32_t var24 /* : Char */;
2573 short int var_25 /* var : Bool */;
2574 val* var26 /* : SequenceRead[Char] */;
2575 val* var27 /* : nullable Object */;
2576 short int var28 /* : Bool */;
2577 short int var30 /* : Bool */;
2578 uint32_t var31 /* : Char */;
2579 long var32 /* : Int */;
2580 short int var34 /* : Bool */;
2581 int cltype35;
2582 int idtype36;
2583 const char* var_class_name37;
2584 long var38 /* : Int */;
2585 short int var39 /* : Bool */;
2586 short int var41 /* : Bool */;
2587 static val* varonce;
2588 val* var42 /* : String */;
2589 char* var43 /* : CString */;
2590 val* var44 /* : String */;
2591 val* var45 /* : nullable Int */;
2592 val* var46 /* : nullable Int */;
2593 val* var47 /* : nullable Bool */;
2594 val* var48 /* : nullable Bool */;
2595 val* var49 /* : SequenceRead[Char] */;
2596 val* var50 /* : nullable Object */;
2597 long var51 /* : Int */;
2598 long var_pos /* var pos: Int */;
2599 long var52 /* : Int */;
2600 long var53 /* : Int */;
2601 short int var54 /* : Bool */;
2602 short int var56 /* : Bool */;
2603 int cltype57;
2604 int idtype58;
2605 const char* var_class_name59;
2606 short int var60 /* : Bool */;
2607 long var61 /* : Int */;
2608 short int var63 /* : Bool */;
2609 int cltype64;
2610 int idtype65;
2611 const char* var_class_name66;
2612 long var67 /* : Int */;
2613 long var68 /* : Int */;
2614 short int var70 /* : Bool */;
2615 int cltype71;
2616 int idtype72;
2617 const char* var_class_name73;
2618 long var74 /* : Int */;
2619 val* var75 /* : Text */;
2620 long var76 /* : Int */;
2621 long var77 /* : Int */;
2622 short int var79 /* : Bool */;
2623 int cltype80;
2624 int idtype81;
2625 const char* var_class_name82;
2626 long var83 /* : Int */;
2627 long var_l84 /* var l: Int */;
2628 short int var85 /* : Bool */;
2629 short int var86 /* : Bool */;
2630 short int var88 /* : Bool */;
2631 int cltype89;
2632 int idtype90;
2633 const char* var_class_name91;
2634 short int var92 /* : Bool */;
2635 short int var_93 /* var : Bool */;
2636 val* var94 /* : SequenceRead[Char] */;
2637 val* var95 /* : nullable Object */;
2638 short int var96 /* : Bool */;
2639 short int var98 /* : Bool */;
2640 uint32_t var99 /* : Char */;
2641 long var100 /* : Int */;
2642 short int var102 /* : Bool */;
2643 int cltype103;
2644 int idtype104;
2645 const char* var_class_name105;
2646 long var106 /* : Int */;
2647 short int var108 /* : Bool */;
2648 short int var110 /* : Bool */;
2649 static val* varonce111;
2650 val* var112 /* : String */;
2651 char* var113 /* : CString */;
2652 val* var114 /* : String */;
2653 val* var115 /* : nullable Int */;
2654 val* var116 /* : nullable Int */;
2655 val* var117 /* : nullable Bool */;
2656 val* var118 /* : nullable Bool */;
2657 val* var119 /* : SequenceRead[Char] */;
2658 val* var120 /* : nullable Object */;
2659 long var121 /* : Int */;
2660 long var_pos122 /* var pos: Int */;
2661 short int var123 /* : Bool */;
2662 short int var125 /* : Bool */;
2663 int cltype126;
2664 int idtype127;
2665 const char* var_class_name128;
2666 short int var129 /* : Bool */;
2667 long var130 /* : Int */;
2668 short int var132 /* : Bool */;
2669 int cltype133;
2670 int idtype134;
2671 const char* var_class_name135;
2672 long var136 /* : Int */;
2673 long var137 /* : Int */;
2674 short int var139 /* : Bool */;
2675 int cltype140;
2676 int idtype141;
2677 const char* var_class_name142;
2678 long var143 /* : Int */;
2679 val* var144 /* : Text */;
2680 short int var145 /* : Bool */;
2681 short int var146 /* : Bool */;
2682 val* var_other /* var other: nullable Object */;
2683 short int var148 /* : Bool */;
2684 short int var149 /* : Bool */;
2685 val* var150 /* : String */;
2686 var_extension = p0;
2687 var_n = self;
2688 var1 = glob_sys;
2689 {
2690 { /* Inline kernel$Sys$is_windows (var1) on <var1:Sys> */
2691 struct nitni_instance* var_for_c_0;
2692 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
2693 var_for_c_0->value = var1;
2694 var4 = core__kernel___Sys_is_windows___impl(var_for_c_0);
2695 var2 = var4;
2696 goto RET_LABEL3;
2697 RET_LABEL3:(void)0;
2698 }
2699 }
2700 if (var2){
2701 {
2702 var5 = ((long(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__length]))(self); /* length on <self:String>*/
2703 }
2704 {
2705 { /* Inline kernel$Int$- (var5,1l) on <var5:Int> */
2706 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
2707 /* <1l:Int> isa OTHER */
2708 var8 = 1; /* easy <1l:Int> isa OTHER*/
2709 if (unlikely(!var8)) {
2710 var_class_name = type_core__Int.name;
2711 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2712 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
2713 fatal_exit(1);
2714 }
2715 var9 = var5 - 1l;
2716 var6 = var9;
2717 goto RET_LABEL7;
2718 RET_LABEL7:(void)0;
2719 }
2720 }
2721 var_l = var6;
2722 for(;;) {
2723 {
2724 { /* Inline kernel$Int$> (var_l,0l) on <var_l:Int> */
2725 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
2726 /* <0l:Int> isa OTHER */
2727 var13 = 1; /* easy <0l:Int> isa OTHER*/
2728 if (unlikely(!var13)) {
2729 var_class_name16 = type_core__Int.name;
2730 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name16);
2731 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
2732 fatal_exit(1);
2733 }
2734 var17 = var_l > 0l;
2735 var11 = var17;
2736 goto RET_LABEL12;
2737 RET_LABEL12:(void)0;
2738 }
2739 }
2740 var_ = var11;
2741 if (var11){
2742 {
2743 var19 = ((val*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__chars]))(self); /* chars on <self:String>*/
2744 }
2745 {
2746 var20 = ((val*(*)(val* self, long p0))((((long)var19&3)?class_info[((long)var19&3)]:var19->class)->vft[COLOR_core__abstract_collection__SequenceRead___91d_93d]))(var19, var_l); /* [] on <var19:SequenceRead[Char]>*/
2747 }
2748 {
2749 { /* Inline kernel$Char$== (var20,'/') on <var20:nullable Object(Char)> */
2750 var24 = (uint32_t)((long)(var20)>>2);
2751 var23 = var24 == '/';
2752 var21 = var23;
2753 goto RET_LABEL22;
2754 RET_LABEL22:(void)0;
2755 }
2756 }
2757 var_25 = var21;
2758 if (var21){
2759 var18 = var_25;
2760 } else {
2761 {
2762 var26 = ((val*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__chars]))(self); /* chars on <self:String>*/
2763 }
2764 {
2765 var27 = ((val*(*)(val* self, long p0))((((long)var26&3)?class_info[((long)var26&3)]:var26->class)->vft[COLOR_core__abstract_collection__SequenceRead___91d_93d]))(var26, var_l); /* [] on <var26:SequenceRead[Char]>*/
2766 }
2767 {
2768 { /* Inline kernel$Char$== (var27,'\\') on <var27:nullable Object(Char)> */
2769 var31 = (uint32_t)((long)(var27)>>2);
2770 var30 = var31 == '\\';
2771 var28 = var30;
2772 goto RET_LABEL29;
2773 RET_LABEL29:(void)0;
2774 }
2775 }
2776 var18 = var28;
2777 }
2778 var10 = var18;
2779 } else {
2780 var10 = var_;
2781 }
2782 if (var10){
2783 {
2784 { /* Inline kernel$Int$- (var_l,1l) on <var_l:Int> */
2785 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
2786 /* <1l:Int> isa OTHER */
2787 var34 = 1; /* easy <1l:Int> isa OTHER*/
2788 if (unlikely(!var34)) {
2789 var_class_name37 = type_core__Int.name;
2790 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name37);
2791 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
2792 fatal_exit(1);
2793 }
2794 var38 = var_l - 1l;
2795 var32 = var38;
2796 goto RET_LABEL33;
2797 RET_LABEL33:(void)0;
2798 }
2799 }
2800 var_l = var32;
2801 } else {
2802 goto BREAK_label;
2803 }
2804 }
2805 BREAK_label: (void)0;
2806 {
2807 { /* Inline kernel$Int$== (var_l,0l) on <var_l:Int> */
2808 var41 = var_l == 0l;
2809 var39 = var41;
2810 goto RET_LABEL40;
2811 RET_LABEL40:(void)0;
2812 }
2813 }
2814 if (var39){
2815 if (likely(varonce!=NULL)) {
2816 var42 = varonce;
2817 } else {
2818 var43 = "/";
2819 var45 = (val*)(1l<<2|1);
2820 var46 = (val*)(1l<<2|1);
2821 var47 = (val*)((long)(0)<<2|3);
2822 var48 = (val*)((long)(0)<<2|3);
2823 var44 = core__flat___CString___to_s_unsafe(var43, var45, var46, var47, var48);
2824 var42 = var44;
2825 varonce = var42;
2826 }
2827 var = var42;
2828 goto RET_LABEL;
2829 } else {
2830 }
2831 {
2832 var49 = ((val*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__chars]))(self); /* chars on <self:String>*/
2833 }
2834 {
2835 var50 = (val*)((long)('/')<<2|2);
2836 var51 = ((long(*)(val* self, val* p0, long p1))((((long)var49&3)?class_info[((long)var49&3)]:var49->class)->vft[COLOR_core__abstract_collection__SequenceRead__last_index_of_from]))(var49, var50, var_l); /* last_index_of_from on <var49:SequenceRead[Char]>*/
2837 }
2838 var_pos = var51;
2839 {
2840 var52 = core___core__Text___last_index_of_from(self, '\\', var_l);
2841 }
2842 {
2843 var53 = core___core__Int___Comparable__max(var_pos, var52);
2844 }
2845 var_pos = var53;
2846 {
2847 { /* Inline kernel$Int$>= (var_pos,0l) on <var_pos:Int> */
2848 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
2849 /* <0l:Int> isa OTHER */
2850 var56 = 1; /* easy <0l:Int> isa OTHER*/
2851 if (unlikely(!var56)) {
2852 var_class_name59 = type_core__Int.name;
2853 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name59);
2854 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 726);
2855 fatal_exit(1);
2856 }
2857 var60 = var_pos >= 0l;
2858 var54 = var60;
2859 goto RET_LABEL55;
2860 RET_LABEL55:(void)0;
2861 }
2862 }
2863 if (var54){
2864 {
2865 { /* Inline kernel$Int$+ (var_pos,1l) on <var_pos:Int> */
2866 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
2867 /* <1l:Int> isa OTHER */
2868 var63 = 1; /* easy <1l:Int> isa OTHER*/
2869 if (unlikely(!var63)) {
2870 var_class_name66 = type_core__Int.name;
2871 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name66);
2872 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
2873 fatal_exit(1);
2874 }
2875 var67 = var_pos + 1l;
2876 var61 = var67;
2877 goto RET_LABEL62;
2878 RET_LABEL62:(void)0;
2879 }
2880 }
2881 {
2882 { /* Inline kernel$Int$- (var_l,var_pos) on <var_l:Int> */
2883 /* Covariant cast for argument 0 (i) <var_pos:Int> isa OTHER */
2884 /* <var_pos:Int> isa OTHER */
2885 var70 = 1; /* easy <var_pos:Int> isa OTHER*/
2886 if (unlikely(!var70)) {
2887 var_class_name73 = type_core__Int.name;
2888 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name73);
2889 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
2890 fatal_exit(1);
2891 }
2892 var74 = var_l - var_pos;
2893 var68 = var74;
2894 goto RET_LABEL69;
2895 RET_LABEL69:(void)0;
2896 }
2897 }
2898 {
2899 var75 = ((val*(*)(val* self, long p0, long p1))(self->class->vft[COLOR_core__abstract_text__Text__substring]))(self, var61, var68); /* substring on <self:String>*/
2900 }
2901 var_n = var75;
2902 } else {
2903 }
2904 } else {
2905 {
2906 var76 = ((long(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__length]))(self); /* length on <self:String>*/
2907 }
2908 {
2909 { /* Inline kernel$Int$- (var76,1l) on <var76:Int> */
2910 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
2911 /* <1l:Int> isa OTHER */
2912 var79 = 1; /* easy <1l:Int> isa OTHER*/
2913 if (unlikely(!var79)) {
2914 var_class_name82 = type_core__Int.name;
2915 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name82);
2916 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
2917 fatal_exit(1);
2918 }
2919 var83 = var76 - 1l;
2920 var77 = var83;
2921 goto RET_LABEL78;
2922 RET_LABEL78:(void)0;
2923 }
2924 }
2925 var_l84 = var77;
2926 for(;;) {
2927 {
2928 { /* Inline kernel$Int$> (var_l84,0l) on <var_l84:Int> */
2929 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
2930 /* <0l:Int> isa OTHER */
2931 var88 = 1; /* easy <0l:Int> isa OTHER*/
2932 if (unlikely(!var88)) {
2933 var_class_name91 = type_core__Int.name;
2934 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name91);
2935 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
2936 fatal_exit(1);
2937 }
2938 var92 = var_l84 > 0l;
2939 var86 = var92;
2940 goto RET_LABEL87;
2941 RET_LABEL87:(void)0;
2942 }
2943 }
2944 var_93 = var86;
2945 if (var86){
2946 {
2947 var94 = ((val*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__chars]))(self); /* chars on <self:String>*/
2948 }
2949 {
2950 var95 = ((val*(*)(val* self, long p0))((((long)var94&3)?class_info[((long)var94&3)]:var94->class)->vft[COLOR_core__abstract_collection__SequenceRead___91d_93d]))(var94, var_l84); /* [] on <var94:SequenceRead[Char]>*/
2951 }
2952 {
2953 { /* Inline kernel$Char$== (var95,'/') on <var95:nullable Object(Char)> */
2954 var99 = (uint32_t)((long)(var95)>>2);
2955 var98 = var99 == '/';
2956 var96 = var98;
2957 goto RET_LABEL97;
2958 RET_LABEL97:(void)0;
2959 }
2960 }
2961 var85 = var96;
2962 } else {
2963 var85 = var_93;
2964 }
2965 if (var85){
2966 {
2967 { /* Inline kernel$Int$- (var_l84,1l) on <var_l84:Int> */
2968 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
2969 /* <1l:Int> isa OTHER */
2970 var102 = 1; /* easy <1l:Int> isa OTHER*/
2971 if (unlikely(!var102)) {
2972 var_class_name105 = type_core__Int.name;
2973 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name105);
2974 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
2975 fatal_exit(1);
2976 }
2977 var106 = var_l84 - 1l;
2978 var100 = var106;
2979 goto RET_LABEL101;
2980 RET_LABEL101:(void)0;
2981 }
2982 }
2983 var_l84 = var100;
2984 } else {
2985 goto BREAK_label107;
2986 }
2987 }
2988 BREAK_label107: (void)0;
2989 {
2990 { /* Inline kernel$Int$== (var_l84,0l) on <var_l84:Int> */
2991 var110 = var_l84 == 0l;
2992 var108 = var110;
2993 goto RET_LABEL109;
2994 RET_LABEL109:(void)0;
2995 }
2996 }
2997 if (var108){
2998 if (likely(varonce111!=NULL)) {
2999 var112 = varonce111;
3000 } else {
3001 var113 = "/";
3002 var115 = (val*)(1l<<2|1);
3003 var116 = (val*)(1l<<2|1);
3004 var117 = (val*)((long)(0)<<2|3);
3005 var118 = (val*)((long)(0)<<2|3);
3006 var114 = core__flat___CString___to_s_unsafe(var113, var115, var116, var117, var118);
3007 var112 = var114;
3008 varonce111 = var112;
3009 }
3010 var = var112;
3011 goto RET_LABEL;
3012 } else {
3013 }
3014 {
3015 var119 = ((val*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__chars]))(self); /* chars on <self:String>*/
3016 }
3017 {
3018 var120 = (val*)((long)('/')<<2|2);
3019 var121 = ((long(*)(val* self, val* p0, long p1))((((long)var119&3)?class_info[((long)var119&3)]:var119->class)->vft[COLOR_core__abstract_collection__SequenceRead__last_index_of_from]))(var119, var120, var_l84); /* last_index_of_from on <var119:SequenceRead[Char]>*/
3020 }
3021 var_pos122 = var121;
3022 {
3023 { /* Inline kernel$Int$>= (var_pos122,0l) on <var_pos122:Int> */
3024 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
3025 /* <0l:Int> isa OTHER */
3026 var125 = 1; /* easy <0l:Int> isa OTHER*/
3027 if (unlikely(!var125)) {
3028 var_class_name128 = type_core__Int.name;
3029 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name128);
3030 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 726);
3031 fatal_exit(1);
3032 }
3033 var129 = var_pos122 >= 0l;
3034 var123 = var129;
3035 goto RET_LABEL124;
3036 RET_LABEL124:(void)0;
3037 }
3038 }
3039 if (var123){
3040 {
3041 { /* Inline kernel$Int$+ (var_pos122,1l) on <var_pos122:Int> */
3042 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
3043 /* <1l:Int> isa OTHER */
3044 var132 = 1; /* easy <1l:Int> isa OTHER*/
3045 if (unlikely(!var132)) {
3046 var_class_name135 = type_core__Int.name;
3047 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name135);
3048 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
3049 fatal_exit(1);
3050 }
3051 var136 = var_pos122 + 1l;
3052 var130 = var136;
3053 goto RET_LABEL131;
3054 RET_LABEL131:(void)0;
3055 }
3056 }
3057 {
3058 { /* Inline kernel$Int$- (var_l84,var_pos122) on <var_l84:Int> */
3059 /* Covariant cast for argument 0 (i) <var_pos122:Int> isa OTHER */
3060 /* <var_pos122:Int> isa OTHER */
3061 var139 = 1; /* easy <var_pos122:Int> isa OTHER*/
3062 if (unlikely(!var139)) {
3063 var_class_name142 = type_core__Int.name;
3064 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name142);
3065 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
3066 fatal_exit(1);
3067 }
3068 var143 = var_l84 - var_pos122;
3069 var137 = var143;
3070 goto RET_LABEL138;
3071 RET_LABEL138:(void)0;
3072 }
3073 }
3074 {
3075 var144 = ((val*(*)(val* self, long p0, long p1))(self->class->vft[COLOR_core__abstract_text__Text__substring]))(self, var130, var137); /* substring on <self:String>*/
3076 }
3077 var_n = var144;
3078 } else {
3079 }
3080 }
3081 if (var_extension == NULL) {
3082 var145 = 0; /* is null */
3083 } else {
3084 var145 = 1; /* arg is null and recv is not */
3085 }
3086 if (0) {
3087 { /* Inline kernel$Object$!= (var_extension,((val*)NULL)) on <var_extension:nullable String> */
3088 var_other = ((val*)NULL);
3089 {
3090 var148 = ((short int(*)(val* self, val* p0))(var_extension->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_extension, var_other); /* == on <var_extension:nullable String(String)>*/
3091 }
3092 var149 = !var148;
3093 var146 = var149;
3094 goto RET_LABEL147;
3095 RET_LABEL147:(void)0;
3096 }
3097 var145 = var146;
3098 }
3099 if (var145){
3100 {
3101 var150 = core__file___String___strip_extension(var_n, var_extension);
3102 }
3103 var = var150;
3104 goto RET_LABEL;
3105 } else {
3106 var = var_n;
3107 goto RET_LABEL;
3108 }
3109 RET_LABEL:;
3110 return var;
3111 }
3112 /* method file$String$dirname for (self: String): String */
3113 val* core__file___String___dirname(val* self) {
3114 val* var /* : String */;
3115 long var1 /* : Int */;
3116 long var2 /* : Int */;
3117 short int var4 /* : Bool */;
3118 int cltype;
3119 int idtype;
3120 const char* var_class_name;
3121 long var5 /* : Int */;
3122 long var_l /* var l: Int */;
3123 short int var6 /* : Bool */;
3124 short int var7 /* : Bool */;
3125 short int var9 /* : Bool */;
3126 int cltype10;
3127 int idtype11;
3128 const char* var_class_name12;
3129 short int var13 /* : Bool */;
3130 short int var_ /* var : Bool */;
3131 val* var14 /* : SequenceRead[Char] */;
3132 val* var15 /* : nullable Object */;
3133 short int var16 /* : Bool */;
3134 short int var18 /* : Bool */;
3135 uint32_t var19 /* : Char */;
3136 long var20 /* : Int */;
3137 short int var22 /* : Bool */;
3138 int cltype23;
3139 int idtype24;
3140 const char* var_class_name25;
3141 long var26 /* : Int */;
3142 val* var27 /* : SequenceRead[Char] */;
3143 val* var28 /* : nullable Object */;
3144 long var29 /* : Int */;
3145 long var_pos /* var pos: Int */;
3146 short int var30 /* : Bool */;
3147 short int var32 /* : Bool */;
3148 int cltype33;
3149 int idtype34;
3150 const char* var_class_name35;
3151 short int var36 /* : Bool */;
3152 val* var37 /* : Text */;
3153 short int var38 /* : Bool */;
3154 short int var40 /* : Bool */;
3155 static val* varonce;
3156 val* var41 /* : String */;
3157 char* var42 /* : CString */;
3158 val* var43 /* : String */;
3159 val* var44 /* : nullable Int */;
3160 val* var45 /* : nullable Int */;
3161 val* var46 /* : nullable Bool */;
3162 val* var47 /* : nullable Bool */;
3163 static val* varonce48;
3164 val* var49 /* : String */;
3165 char* var50 /* : CString */;
3166 val* var51 /* : String */;
3167 val* var52 /* : nullable Int */;
3168 val* var53 /* : nullable Int */;
3169 val* var54 /* : nullable Bool */;
3170 val* var55 /* : nullable Bool */;
3171 {
3172 var1 = ((long(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__length]))(self); /* length on <self:String>*/
3173 }
3174 {
3175 { /* Inline kernel$Int$- (var1,1l) on <var1:Int> */
3176 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
3177 /* <1l:Int> isa OTHER */
3178 var4 = 1; /* easy <1l:Int> isa OTHER*/
3179 if (unlikely(!var4)) {
3180 var_class_name = type_core__Int.name;
3181 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3182 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
3183 fatal_exit(1);
3184 }
3185 var5 = var1 - 1l;
3186 var2 = var5;
3187 goto RET_LABEL3;
3188 RET_LABEL3:(void)0;
3189 }
3190 }
3191 var_l = var2;
3192 for(;;) {
3193 {
3194 { /* Inline kernel$Int$> (var_l,0l) on <var_l:Int> */
3195 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
3196 /* <0l:Int> isa OTHER */
3197 var9 = 1; /* easy <0l:Int> isa OTHER*/
3198 if (unlikely(!var9)) {
3199 var_class_name12 = type_core__Int.name;
3200 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name12);
3201 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
3202 fatal_exit(1);
3203 }
3204 var13 = var_l > 0l;
3205 var7 = var13;
3206 goto RET_LABEL8;
3207 RET_LABEL8:(void)0;
3208 }
3209 }
3210 var_ = var7;
3211 if (var7){
3212 {
3213 var14 = ((val*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__chars]))(self); /* chars on <self:String>*/
3214 }
3215 {
3216 var15 = ((val*(*)(val* self, long p0))((((long)var14&3)?class_info[((long)var14&3)]:var14->class)->vft[COLOR_core__abstract_collection__SequenceRead___91d_93d]))(var14, var_l); /* [] on <var14:SequenceRead[Char]>*/
3217 }
3218 {
3219 { /* Inline kernel$Char$== (var15,'/') on <var15:nullable Object(Char)> */
3220 var19 = (uint32_t)((long)(var15)>>2);
3221 var18 = var19 == '/';
3222 var16 = var18;
3223 goto RET_LABEL17;
3224 RET_LABEL17:(void)0;
3225 }
3226 }
3227 var6 = var16;
3228 } else {
3229 var6 = var_;
3230 }
3231 if (var6){
3232 {
3233 { /* Inline kernel$Int$- (var_l,1l) on <var_l:Int> */
3234 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
3235 /* <1l:Int> isa OTHER */
3236 var22 = 1; /* easy <1l:Int> isa OTHER*/
3237 if (unlikely(!var22)) {
3238 var_class_name25 = type_core__Int.name;
3239 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name25);
3240 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
3241 fatal_exit(1);
3242 }
3243 var26 = var_l - 1l;
3244 var20 = var26;
3245 goto RET_LABEL21;
3246 RET_LABEL21:(void)0;
3247 }
3248 }
3249 var_l = var20;
3250 } else {
3251 goto BREAK_label;
3252 }
3253 }
3254 BREAK_label: (void)0;
3255 {
3256 var27 = ((val*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__chars]))(self); /* chars on <self:String>*/
3257 }
3258 {
3259 var28 = (val*)((long)('/')<<2|2);
3260 var29 = ((long(*)(val* self, val* p0, long p1))((((long)var27&3)?class_info[((long)var27&3)]:var27->class)->vft[COLOR_core__abstract_collection__SequenceRead__last_index_of_from]))(var27, var28, var_l); /* last_index_of_from on <var27:SequenceRead[Char]>*/
3261 }
3262 var_pos = var29;
3263 {
3264 { /* Inline kernel$Int$> (var_pos,0l) on <var_pos:Int> */
3265 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
3266 /* <0l:Int> isa OTHER */
3267 var32 = 1; /* easy <0l:Int> isa OTHER*/
3268 if (unlikely(!var32)) {
3269 var_class_name35 = type_core__Int.name;
3270 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name35);
3271 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
3272 fatal_exit(1);
3273 }
3274 var36 = var_pos > 0l;
3275 var30 = var36;
3276 goto RET_LABEL31;
3277 RET_LABEL31:(void)0;
3278 }
3279 }
3280 if (var30){
3281 {
3282 var37 = ((val*(*)(val* self, long p0, long p1))(self->class->vft[COLOR_core__abstract_text__Text__substring]))(self, 0l, var_pos); /* substring on <self:String>*/
3283 }
3284 var = var37;
3285 goto RET_LABEL;
3286 } else {
3287 {
3288 { /* Inline kernel$Int$== (var_pos,0l) on <var_pos:Int> */
3289 var40 = var_pos == 0l;
3290 var38 = var40;
3291 goto RET_LABEL39;
3292 RET_LABEL39:(void)0;
3293 }
3294 }
3295 if (var38){
3296 if (likely(varonce!=NULL)) {
3297 var41 = varonce;
3298 } else {
3299 var42 = "/";
3300 var44 = (val*)(1l<<2|1);
3301 var45 = (val*)(1l<<2|1);
3302 var46 = (val*)((long)(0)<<2|3);
3303 var47 = (val*)((long)(0)<<2|3);
3304 var43 = core__flat___CString___to_s_unsafe(var42, var44, var45, var46, var47);
3305 var41 = var43;
3306 varonce = var41;
3307 }
3308 var = var41;
3309 goto RET_LABEL;
3310 } else {
3311 if (likely(varonce48!=NULL)) {
3312 var49 = varonce48;
3313 } else {
3314 var50 = ".";
3315 var52 = (val*)(1l<<2|1);
3316 var53 = (val*)(1l<<2|1);
3317 var54 = (val*)((long)(0)<<2|3);
3318 var55 = (val*)((long)(0)<<2|3);
3319 var51 = core__flat___CString___to_s_unsafe(var50, var52, var53, var54, var55);
3320 var49 = var51;
3321 varonce48 = var49;
3322 }
3323 var = var49;
3324 goto RET_LABEL;
3325 }
3326 }
3327 RET_LABEL:;
3328 return var;
3329 }
3330 /* method file$String$realpath for (self: String): String */
3331 val* core__file___String___realpath(val* self) {
3332 val* var /* : String */;
3333 char* var1 /* : CString */;
3334 char* var2 /* : CString */;
3335 char* var4 /* : CString */;
3336 char* var_cs /* var cs: CString */;
3337 short int var5 /* : Bool */;
3338 val* var6 /* : String */;
3339 val* var_res /* var res: String */;
3340 val* var8 /* : Pointer */;
3341 void* var9 /* : Pointer for extern */;
3342 {
3343 var1 = ((char*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__to_cstring]))(self); /* to_cstring on <self:String>*/
3344 }
3345 {
3346 { /* Inline file$CString$file_realpath (var1) on <var1:CString> */
3347 var4 = core__file___CString_file_realpath___impl(var1);
3348 var2 = var4;
3349 goto RET_LABEL3;
3350 RET_LABEL3:(void)0;
3351 }
3352 }
3353 var_cs = var2;
3354 {
3355 var5 = core__file___Text___file_exists(self);
3356 }
3357 if (unlikely(!var5)) {
3358 if(catchStack.cursor >= 0){
3359 longjmp(catchStack.envs[catchStack.cursor], 1);
3360 }
3361 PRINT_ERROR("Runtime error: %s", "Assert failed");
3362 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 1026);
3363 fatal_exit(1);
3364 }
3365 {
3366 var6 = core__flat___CString___core__abstract_text__Object__to_s(var_cs);
3367 }
3368 var_res = var6;
3369 {
3370 { /* Inline kernel$Pointer$free (var_cs) on <var_cs:CString> */
3371 var8 = BOX_core__Pointer(var_cs); /* autobox from CString to Pointer */
3372 var9 = ((struct instance_core__Pointer*)var8)->value; /* unboxing Pointer */
3373 core__kernel___Pointer_free___impl(var9);
3374 RET_LABEL7:(void)0;
3375 }
3376 }
3377 var = var_res;
3378 goto RET_LABEL;
3379 RET_LABEL:;
3380 return var;
3381 }
3382 /* method file$String$simplify_path for (self: String): String */
3383 val* core__file___String___simplify_path(val* self) {
3384 val* var /* : String */;
3385 val* var1 /* : String */;
3386 val* var2 /* : Sys */;
3387 short int var3 /* : Bool */;
3388 short int var5 /* : Bool */;
3389 static val* varonce;
3390 val* var6 /* : String */;
3391 char* var7 /* : CString */;
3392 val* var8 /* : String */;
3393 val* var9 /* : nullable Int */;
3394 val* var10 /* : nullable Int */;
3395 val* var11 /* : nullable Bool */;
3396 val* var12 /* : nullable Bool */;
3397 static val* varonce13;
3398 val* var14 /* : String */;
3399 char* var15 /* : CString */;
3400 val* var16 /* : String */;
3401 val* var17 /* : nullable Int */;
3402 val* var18 /* : nullable Int */;
3403 val* var19 /* : nullable Bool */;
3404 val* var20 /* : nullable Bool */;
3405 val* var_path_sep /* var path_sep: String */;
3406 val* var21 /* : Array[String] */;
3407 val* var_a /* var a: Array[String] */;
3408 val* var22 /* : Array[String] */;
3409 val* var_a2 /* var a2: Array[String] */;
3410 val* var_ /* var : Array[String] */;
3411 val* var23 /* : IndexedIterator[nullable Object] */;
3412 val* var_24 /* var : IndexedIterator[String] */;
3413 short int var25 /* : Bool */;
3414 val* var26 /* : nullable Object */;
3415 val* var_x /* var x: String */;
3416 short int var27 /* : Bool */;
3417 static val* varonce28;
3418 val* var29 /* : String */;
3419 char* var30 /* : CString */;
3420 val* var31 /* : String */;
3421 val* var32 /* : nullable Int */;
3422 val* var33 /* : nullable Int */;
3423 val* var34 /* : nullable Bool */;
3424 val* var35 /* : nullable Bool */;
3425 short int var36 /* : Bool */;
3426 short int var_37 /* var : Bool */;
3427 short int var38 /* : Bool */;
3428 short int var39 /* : Bool */;
3429 short int var41 /* : Bool */;
3430 static val* varonce42;
3431 val* var43 /* : String */;
3432 char* var44 /* : CString */;
3433 val* var45 /* : String */;
3434 val* var46 /* : nullable Int */;
3435 val* var47 /* : nullable Int */;
3436 val* var48 /* : nullable Bool */;
3437 val* var49 /* : nullable Bool */;
3438 short int var50 /* : Bool */;
3439 short int var_51 /* var : Bool */;
3440 short int var52 /* : Bool */;
3441 short int var53 /* : Bool */;
3442 short int var54 /* : Bool */;
3443 short int var55 /* : Bool */;
3444 static val* varonce56;
3445 val* var57 /* : String */;
3446 char* var58 /* : CString */;
3447 val* var59 /* : String */;
3448 val* var60 /* : nullable Int */;
3449 val* var61 /* : nullable Int */;
3450 val* var62 /* : nullable Bool */;
3451 val* var63 /* : nullable Bool */;
3452 short int var64 /* : Bool */;
3453 short int var_65 /* var : Bool */;
3454 short int var66 /* : Bool */;
3455 short int var67 /* : Bool */;
3456 short int var_68 /* var : Bool */;
3457 val* var69 /* : nullable Object */;
3458 static val* varonce70;
3459 val* var71 /* : String */;
3460 char* var72 /* : CString */;
3461 val* var73 /* : String */;
3462 val* var74 /* : nullable Int */;
3463 val* var75 /* : nullable Int */;
3464 val* var76 /* : nullable Bool */;
3465 val* var77 /* : nullable Bool */;
3466 short int var78 /* : Bool */;
3467 val* var_other /* var other: nullable Object */;
3468 short int var80 /* : Bool */;
3469 short int var81 /* : Bool */;
3470 val* var82 /* : nullable Object */;
3471 static val* varonce83;
3472 val* var84 /* : String */;
3473 char* var85 /* : CString */;
3474 val* var86 /* : String */;
3475 val* var87 /* : nullable Int */;
3476 val* var88 /* : nullable Int */;
3477 val* var89 /* : nullable Bool */;
3478 val* var90 /* : nullable Bool */;
3479 short int var91 /* : Bool */;
3480 val* var92 /* : nullable Object */;
3481 val* var93 /* : nullable Object */;
3482 short int var94 /* : Bool */;
3483 short int var95 /* : Bool */;
3484 short int var96 /* : Bool */;
3485 short int var_97 /* var : Bool */;
3486 val* var98 /* : nullable Object */;
3487 static val* varonce99;
3488 val* var100 /* : String */;
3489 char* var101 /* : CString */;
3490 val* var102 /* : String */;
3491 val* var103 /* : nullable Int */;
3492 val* var104 /* : nullable Int */;
3493 val* var105 /* : nullable Bool */;
3494 val* var106 /* : nullable Bool */;
3495 short int var107 /* : Bool */;
3496 val* var108 /* : nullable Object */;
3497 short int var109 /* : Bool */;
3498 static val* varonce110;
3499 val* var111 /* : String */;
3500 char* var112 /* : CString */;
3501 val* var113 /* : String */;
3502 val* var114 /* : nullable Int */;
3503 val* var115 /* : nullable Int */;
3504 val* var116 /* : nullable Bool */;
3505 val* var117 /* : nullable Bool */;
3506 short int var118 /* : Bool */;
3507 long var119 /* : Int */;
3508 long var121 /* : Int */;
3509 short int var122 /* : Bool */;
3510 short int var124 /* : Bool */;
3511 short int var_125 /* var : Bool */;
3512 val* var126 /* : nullable Object */;
3513 static val* varonce127;
3514 val* var128 /* : String */;
3515 char* var129 /* : CString */;
3516 val* var130 /* : String */;
3517 val* var131 /* : nullable Int */;
3518 val* var132 /* : nullable Int */;
3519 val* var133 /* : nullable Bool */;
3520 val* var134 /* : nullable Bool */;
3521 short int var135 /* : Bool */;
3522 static val* varonce136;
3523 val* var137 /* : String */;
3524 char* var138 /* : CString */;
3525 val* var139 /* : String */;
3526 val* var140 /* : nullable Int */;
3527 val* var141 /* : nullable Int */;
3528 val* var142 /* : nullable Bool */;
3529 val* var143 /* : nullable Bool */;
3530 static val* varonce144;
3531 val* var145 /* : String */;
3532 char* var146 /* : CString */;
3533 val* var147 /* : String */;
3534 val* var148 /* : nullable Int */;
3535 val* var149 /* : nullable Int */;
3536 val* var150 /* : nullable Bool */;
3537 val* var151 /* : nullable Bool */;
3538 val* var152 /* : String */;
3539 var2 = glob_sys;
3540 {
3541 { /* Inline kernel$Sys$is_windows (var2) on <var2:Sys> */
3542 struct nitni_instance* var_for_c_0;
3543 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
3544 var_for_c_0->value = var2;
3545 var5 = core__kernel___Sys_is_windows___impl(var_for_c_0);
3546 var3 = var5;
3547 goto RET_LABEL4;
3548 RET_LABEL4:(void)0;
3549 }
3550 }
3551 if (var3){
3552 if (likely(varonce!=NULL)) {
3553 var6 = varonce;
3554 } else {
3555 var7 = "\\";
3556 var9 = (val*)(1l<<2|1);
3557 var10 = (val*)(1l<<2|1);
3558 var11 = (val*)((long)(0)<<2|3);
3559 var12 = (val*)((long)(0)<<2|3);
3560 var8 = core__flat___CString___to_s_unsafe(var7, var9, var10, var11, var12);
3561 var6 = var8;
3562 varonce = var6;
3563 }
3564 var1 = var6;
3565 } else {
3566 if (likely(varonce13!=NULL)) {
3567 var14 = varonce13;
3568 } else {
3569 var15 = "/";
3570 var17 = (val*)(1l<<2|1);
3571 var18 = (val*)(1l<<2|1);
3572 var19 = (val*)((long)(0)<<2|3);
3573 var20 = (val*)((long)(0)<<2|3);
3574 var16 = core__flat___CString___to_s_unsafe(var15, var17, var18, var19, var20);
3575 var14 = var16;
3576 varonce13 = var14;
3577 }
3578 var1 = var14;
3579 }
3580 var_path_sep = var1;
3581 {
3582 var21 = core__string_search___Text___split_with(self, var_path_sep);
3583 }
3584 var_a = var21;
3585 var22 = NEW_core__Array(&type_core__Array__core__String);
3586 {
3587 core___core__Array___core__kernel__Object__init(var22); /* Direct call array$Array$init on <var22:Array[String]>*/
3588 }
3589 var_a2 = var22;
3590 var_ = var_a;
3591 {
3592 var23 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
3593 }
3594 var_24 = var23;
3595 for(;;) {
3596 {
3597 var25 = ((short int(*)(val* self))((((long)var_24&3)?class_info[((long)var_24&3)]:var_24->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_24); /* is_ok on <var_24:IndexedIterator[String]>*/
3598 }
3599 if (var25){
3600 } else {
3601 goto BREAK_label;
3602 }
3603 {
3604 var26 = ((val*(*)(val* self))((((long)var_24&3)?class_info[((long)var_24&3)]:var_24->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_24); /* item on <var_24:IndexedIterator[String]>*/
3605 }
3606 var_x = var26;
3607 if (likely(varonce28!=NULL)) {
3608 var29 = varonce28;
3609 } else {
3610 var30 = ".";
3611 var32 = (val*)(1l<<2|1);
3612 var33 = (val*)(1l<<2|1);
3613 var34 = (val*)((long)(0)<<2|3);
3614 var35 = (val*)((long)(0)<<2|3);
3615 var31 = core__flat___CString___to_s_unsafe(var30, var32, var33, var34, var35);
3616 var29 = var31;
3617 varonce28 = var29;
3618 }
3619 {
3620 var36 = ((short int(*)(val* self, val* p0))(var_x->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_x, var29); /* == on <var_x:String>*/
3621 }
3622 var_37 = var36;
3623 if (var36){
3624 {
3625 var38 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_a2);
3626 }
3627 var39 = !var38;
3628 var27 = var39;
3629 } else {
3630 var27 = var_37;
3631 }
3632 if (var27){
3633 goto BREAK_label40;
3634 } else {
3635 }
3636 if (likely(varonce42!=NULL)) {
3637 var43 = varonce42;
3638 } else {
3639 var44 = "";
3640 var46 = (val*)(0l<<2|1);
3641 var47 = (val*)(0l<<2|1);
3642 var48 = (val*)((long)(0)<<2|3);
3643 var49 = (val*)((long)(0)<<2|3);
3644 var45 = core__flat___CString___to_s_unsafe(var44, var46, var47, var48, var49);
3645 var43 = var45;
3646 varonce42 = var43;
3647 }
3648 {
3649 var50 = ((short int(*)(val* self, val* p0))(var_x->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_x, var43); /* == on <var_x:String>*/
3650 }
3651 var_51 = var50;
3652 if (var50){
3653 {
3654 var52 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_a2);
3655 }
3656 var53 = !var52;
3657 var41 = var53;
3658 } else {
3659 var41 = var_51;
3660 }
3661 if (var41){
3662 goto BREAK_label40;
3663 } else {
3664 }
3665 if (likely(varonce56!=NULL)) {
3666 var57 = varonce56;
3667 } else {
3668 var58 = "..";
3669 var60 = (val*)(2l<<2|1);
3670 var61 = (val*)(2l<<2|1);
3671 var62 = (val*)((long)(0)<<2|3);
3672 var63 = (val*)((long)(0)<<2|3);
3673 var59 = core__flat___CString___to_s_unsafe(var58, var60, var61, var62, var63);
3674 var57 = var59;
3675 varonce56 = var57;
3676 }
3677 {
3678 var64 = ((short int(*)(val* self, val* p0))(var_x->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_x, var57); /* == on <var_x:String>*/
3679 }
3680 var_65 = var64;
3681 if (var64){
3682 {
3683 var66 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_a2);
3684 }
3685 var67 = !var66;
3686 var55 = var67;
3687 } else {
3688 var55 = var_65;
3689 }
3690 var_68 = var55;
3691 if (var55){
3692 {
3693 var69 = core___core__SequenceRead___last(var_a2);
3694 }
3695 if (likely(varonce70!=NULL)) {
3696 var71 = varonce70;
3697 } else {
3698 var72 = "..";
3699 var74 = (val*)(2l<<2|1);
3700 var75 = (val*)(2l<<2|1);
3701 var76 = (val*)((long)(0)<<2|3);
3702 var77 = (val*)((long)(0)<<2|3);
3703 var73 = core__flat___CString___to_s_unsafe(var72, var74, var75, var76, var77);
3704 var71 = var73;
3705 varonce70 = var71;
3706 }
3707 {
3708 { /* Inline kernel$Object$!= (var69,var71) on <var69:nullable Object(String)> */
3709 var_other = var71;
3710 {
3711 var80 = ((short int(*)(val* self, val* p0))(var69->class->vft[COLOR_core__kernel__Object___61d_61d]))(var69, var_other); /* == on <var69:nullable Object(String)>*/
3712 }
3713 var81 = !var80;
3714 var78 = var81;
3715 goto RET_LABEL79;
3716 RET_LABEL79:(void)0;
3717 }
3718 }
3719 var54 = var78;
3720 } else {
3721 var54 = var_68;
3722 }
3723 if (var54){
3724 {
3725 var82 = core___core__SequenceRead___last(var_a2);
3726 }
3727 if (likely(varonce83!=NULL)) {
3728 var84 = varonce83;
3729 } else {
3730 var85 = ".";
3731 var87 = (val*)(1l<<2|1);
3732 var88 = (val*)(1l<<2|1);
3733 var89 = (val*)((long)(0)<<2|3);
3734 var90 = (val*)((long)(0)<<2|3);
3735 var86 = core__flat___CString___to_s_unsafe(var85, var87, var88, var89, var90);
3736 var84 = var86;
3737 varonce83 = var84;
3738 }
3739 {
3740 var91 = ((short int(*)(val* self, val* p0))(var82->class->vft[COLOR_core__kernel__Object___61d_61d]))(var82, var84); /* == on <var82:nullable Object(String)>*/
3741 }
3742 if (var91){
3743 {
3744 var92 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_a2);
3745 }
3746 } else {
3747 {
3748 var93 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_a2);
3749 }
3750 goto BREAK_label40;
3751 }
3752 } else {
3753 {
3754 var95 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_a2);
3755 }
3756 var96 = !var95;
3757 var_97 = var96;
3758 if (var96){
3759 {
3760 var98 = core___core__SequenceRead___last(var_a2);
3761 }
3762 if (likely(varonce99!=NULL)) {
3763 var100 = varonce99;
3764 } else {
3765 var101 = ".";
3766 var103 = (val*)(1l<<2|1);
3767 var104 = (val*)(1l<<2|1);
3768 var105 = (val*)((long)(0)<<2|3);
3769 var106 = (val*)((long)(0)<<2|3);
3770 var102 = core__flat___CString___to_s_unsafe(var101, var103, var104, var105, var106);
3771 var100 = var102;
3772 varonce99 = var100;
3773 }
3774 {
3775 var107 = ((short int(*)(val* self, val* p0))(var98->class->vft[COLOR_core__kernel__Object___61d_61d]))(var98, var100); /* == on <var98:nullable Object(String)>*/
3776 }
3777 var94 = var107;
3778 } else {
3779 var94 = var_97;
3780 }
3781 if (var94){
3782 {
3783 var108 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_a2);
3784 }
3785 } else {
3786 }
3787 }
3788 {
3789 core___core__AbstractArray___core__abstract_collection__Sequence__push(var_a2, var_x); /* Direct call array$AbstractArray$push on <var_a2:Array[String]>*/
3790 }
3791 BREAK_label40: (void)0;
3792 {
3793 ((void(*)(val* self))((((long)var_24&3)?class_info[((long)var_24&3)]:var_24->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_24); /* next on <var_24:IndexedIterator[String]>*/
3794 }
3795 }
3796 BREAK_label: (void)0;
3797 {
3798 ((void(*)(val* self))((((long)var_24&3)?class_info[((long)var_24&3)]:var_24->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_24); /* finish on <var_24:IndexedIterator[String]>*/
3799 }
3800 {
3801 var109 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_a2);
3802 }
3803 if (var109){
3804 if (likely(varonce110!=NULL)) {
3805 var111 = varonce110;
3806 } else {
3807 var112 = ".";
3808 var114 = (val*)(1l<<2|1);
3809 var115 = (val*)(1l<<2|1);
3810 var116 = (val*)((long)(0)<<2|3);
3811 var117 = (val*)((long)(0)<<2|3);
3812 var113 = core__flat___CString___to_s_unsafe(var112, var114, var115, var116, var117);
3813 var111 = var113;
3814 varonce110 = var111;
3815 }
3816 var = var111;
3817 goto RET_LABEL;
3818 } else {
3819 }
3820 {
3821 { /* Inline array$AbstractArrayRead$length (var_a2) on <var_a2:Array[String]> */
3822 var121 = var_a2->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_a2:Array[String]> */
3823 var119 = var121;
3824 RET_LABEL120:(void)0;
3825 }
3826 }
3827 {
3828 { /* Inline kernel$Int$== (var119,1l) on <var119:Int> */
3829 var124 = var119 == 1l;
3830 var122 = var124;
3831 goto RET_LABEL123;
3832 RET_LABEL123:(void)0;
3833 }
3834 }
3835 var_125 = var122;
3836 if (var122){
3837 {
3838 var126 = core___core__SequenceRead___Collection__first(var_a2);
3839 }
3840 if (likely(varonce127!=NULL)) {
3841 var128 = varonce127;
3842 } else {
3843 var129 = "";
3844 var131 = (val*)(0l<<2|1);
3845 var132 = (val*)(0l<<2|1);
3846 var133 = (val*)((long)(0)<<2|3);
3847 var134 = (val*)((long)(0)<<2|3);
3848 var130 = core__flat___CString___to_s_unsafe(var129, var131, var132, var133, var134);
3849 var128 = var130;
3850 varonce127 = var128;
3851 }
3852 {
3853 var135 = ((short int(*)(val* self, val* p0))(var126->class->vft[COLOR_core__kernel__Object___61d_61d]))(var126, var128); /* == on <var126:nullable Object(String)>*/
3854 }
3855 var118 = var135;
3856 } else {
3857 var118 = var_125;
3858 }
3859 if (var118){
3860 if (likely(varonce136!=NULL)) {
3861 var137 = varonce136;
3862 } else {
3863 var138 = "/";
3864 var140 = (val*)(1l<<2|1);
3865 var141 = (val*)(1l<<2|1);
3866 var142 = (val*)((long)(0)<<2|3);
3867 var143 = (val*)((long)(0)<<2|3);
3868 var139 = core__flat___CString___to_s_unsafe(var138, var140, var141, var142, var143);
3869 var137 = var139;
3870 varonce136 = var137;
3871 }
3872 var = var137;
3873 goto RET_LABEL;
3874 } else {
3875 }
3876 if (likely(varonce144!=NULL)) {
3877 var145 = varonce144;
3878 } else {
3879 var146 = "/";
3880 var148 = (val*)(1l<<2|1);
3881 var149 = (val*)(1l<<2|1);
3882 var150 = (val*)((long)(0)<<2|3);
3883 var151 = (val*)((long)(0)<<2|3);
3884 var147 = core__flat___CString___to_s_unsafe(var146, var148, var149, var150, var151);
3885 var145 = var147;
3886 varonce144 = var145;
3887 }
3888 {
3889 var152 = core__abstract_text___Collection___join(var_a2, var145, ((val*)NULL));
3890 }
3891 var = var152;
3892 goto RET_LABEL;
3893 RET_LABEL:;
3894 return var;
3895 }
3896 /* method file$String$join_path for (self: String, String): String */
3897 val* core__file___String___join_path(val* self, val* p0) {
3898 val* var /* : String */;
3899 val* var_path /* var path: String */;
3900 short int var1 /* : Bool */;
3901 short int var2 /* : Bool */;
3902 val* var3 /* : SequenceRead[Char] */;
3903 val* var4 /* : nullable Object */;
3904 short int var5 /* : Bool */;
3905 short int var7 /* : Bool */;
3906 uint32_t var8 /* : Char */;
3907 uint32_t var9 /* : Char */;
3908 short int var10 /* : Bool */;
3909 short int var12 /* : Bool */;
3910 val* var13 /* : NativeArray[String] */;
3911 static val* varonce;
3912 val* var14 /* : String */;
3913 val* var16 /* : NativeArray[String] */;
3914 static val* varonce15;
3915 static val* varonce17;
3916 val* var18 /* : String */;
3917 char* var19 /* : CString */;
3918 val* var20 /* : String */;
3919 val* var21 /* : nullable Int */;
3920 val* var22 /* : nullable Int */;
3921 val* var23 /* : nullable Bool */;
3922 val* var24 /* : nullable Bool */;
3923 val* var25 /* : String */;
3924 var_path = p0;
3925 {
3926 var1 = ((short int(*)(val* self))(var_path->class->vft[COLOR_core__abstract_text__Text__is_empty]))(var_path); /* is_empty on <var_path:String>*/
3927 }
3928 if (var1){
3929 var = self;
3930 goto RET_LABEL;
3931 } else {
3932 }
3933 {
3934 var2 = ((short int(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__is_empty]))(self); /* is_empty on <self:String>*/
3935 }
3936 if (var2){
3937 var = var_path;
3938 goto RET_LABEL;
3939 } else {
3940 }
3941 {
3942 var3 = ((val*(*)(val* self))(var_path->class->vft[COLOR_core__abstract_text__Text__chars]))(var_path); /* chars on <var_path:String>*/
3943 }
3944 {
3945 var4 = ((val*(*)(val* self, long p0))((((long)var3&3)?class_info[((long)var3&3)]:var3->class)->vft[COLOR_core__abstract_collection__SequenceRead___91d_93d]))(var3, 0l); /* [] on <var3:SequenceRead[Char]>*/
3946 }
3947 {
3948 { /* Inline kernel$Char$== (var4,'/') on <var4:nullable Object(Char)> */
3949 var8 = (uint32_t)((long)(var4)>>2);
3950 var7 = var8 == '/';
3951 var5 = var7;
3952 goto RET_LABEL6;
3953 RET_LABEL6:(void)0;
3954 }
3955 }
3956 if (var5){
3957 var = var_path;
3958 goto RET_LABEL;
3959 } else {
3960 }
3961 {
3962 var9 = core___core__Text___last(self);
3963 }
3964 {
3965 { /* Inline kernel$Char$== (var9,'/') on <var9:Char> */
3966 var12 = var9 == '/';
3967 var10 = var12;
3968 goto RET_LABEL11;
3969 RET_LABEL11:(void)0;
3970 }
3971 }
3972 if (var10){
3973 if (unlikely(varonce==NULL)) {
3974 var13 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
3975 } else {
3976 var13 = varonce;
3977 varonce = NULL;
3978 }
3979 ((struct instance_core__NativeArray*)var13)->values[0]=self;
3980 ((struct instance_core__NativeArray*)var13)->values[1]=var_path;
3981 {
3982 var14 = ((val*(*)(val* self))(var13->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var13); /* native_to_s on <var13:NativeArray[String]>*/
3983 }
3984 varonce = var13;
3985 var = var14;
3986 goto RET_LABEL;
3987 } else {
3988 }
3989 if (unlikely(varonce15==NULL)) {
3990 var16 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
3991 if (likely(varonce17!=NULL)) {
3992 var18 = varonce17;
3993 } else {
3994 var19 = "/";
3995 var21 = (val*)(1l<<2|1);
3996 var22 = (val*)(1l<<2|1);
3997 var23 = (val*)((long)(0)<<2|3);
3998 var24 = (val*)((long)(0)<<2|3);
3999 var20 = core__flat___CString___to_s_unsafe(var19, var21, var22, var23, var24);
4000 var18 = var20;
4001 varonce17 = var18;
4002 }
4003 ((struct instance_core__NativeArray*)var16)->values[1]=var18;
4004 } else {
4005 var16 = varonce15;
4006 varonce15 = NULL;
4007 }
4008 ((struct instance_core__NativeArray*)var16)->values[0]=self;
4009 ((struct instance_core__NativeArray*)var16)->values[2]=var_path;
4010 {
4011 var25 = ((val*(*)(val* self))(var16->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var16); /* native_to_s on <var16:NativeArray[String]>*/
4012 }
4013 varonce15 = var16;
4014 var = var25;
4015 goto RET_LABEL;
4016 RET_LABEL:;
4017 return var;
4018 }
4019 /* method file$String$/ for (self: String, String): String */
4020 val* core__file___String____47d(val* self, val* p0) {
4021 val* var /* : String */;
4022 val* var_path /* var path: String */;
4023 val* var1 /* : String */;
4024 var_path = p0;
4025 {
4026 var1 = core__file___String___join_path(self, var_path);
4027 }
4028 var = var1;
4029 goto RET_LABEL;
4030 RET_LABEL:;
4031 return var;
4032 }
4033 /* method file$String$relpath for (self: String, String): String */
4034 val* core__file___String___relpath(val* self, val* p0) {
4035 val* var /* : String */;
4036 val* var_dest /* var dest: String */;
4037 val* var1 /* : Sys */;
4038 val* var2 /* : String */;
4039 val* var_cwd /* var cwd: String */;
4040 val* var3 /* : String */;
4041 val* var4 /* : String */;
4042 static val* varonce;
4043 val* var5 /* : String */;
4044 char* var6 /* : CString */;
4045 val* var7 /* : String */;
4046 val* var8 /* : nullable Int */;
4047 val* var9 /* : nullable Int */;
4048 val* var10 /* : nullable Bool */;
4049 val* var11 /* : nullable Bool */;
4050 val* var12 /* : Array[String] */;
4051 val* var_from /* var from: Array[String] */;
4052 val* var13 /* : nullable Object */;
4053 short int var14 /* : Bool */;
4054 val* var15 /* : nullable Object */;
4055 val* var16 /* : String */;
4056 val* var17 /* : String */;
4057 static val* varonce18;
4058 val* var19 /* : String */;
4059 char* var20 /* : CString */;
4060 val* var21 /* : String */;
4061 val* var22 /* : nullable Int */;
4062 val* var23 /* : nullable Int */;
4063 val* var24 /* : nullable Bool */;
4064 val* var25 /* : nullable Bool */;
4065 val* var26 /* : Array[String] */;
4066 val* var_to /* var to: Array[String] */;
4067 val* var27 /* : nullable Object */;
4068 short int var28 /* : Bool */;
4069 val* var29 /* : nullable Object */;
4070 short int var30 /* : Bool */;
4071 short int var31 /* : Bool */;
4072 short int var32 /* : Bool */;
4073 short int var33 /* : Bool */;
4074 short int var_ /* var : Bool */;
4075 short int var34 /* : Bool */;
4076 short int var35 /* : Bool */;
4077 short int var_36 /* var : Bool */;
4078 val* var37 /* : nullable Object */;
4079 val* var38 /* : nullable Object */;
4080 short int var39 /* : Bool */;
4081 val* var40 /* : nullable Object */;
4082 val* var41 /* : nullable Object */;
4083 long var42 /* : Int */;
4084 long var44 /* : Int */;
4085 long var_from_len /* var from_len: Int */;
4086 short int var45 /* : Bool */;
4087 short int var47 /* : Bool */;
4088 static val* varonce48;
4089 val* var49 /* : String */;
4090 char* var50 /* : CString */;
4091 val* var51 /* : String */;
4092 val* var52 /* : nullable Int */;
4093 val* var53 /* : nullable Int */;
4094 val* var54 /* : nullable Bool */;
4095 val* var55 /* : nullable Bool */;
4096 val* var56 /* : String */;
4097 static val* varonce57;
4098 val* var58 /* : String */;
4099 char* var59 /* : CString */;
4100 val* var60 /* : String */;
4101 val* var61 /* : nullable Int */;
4102 val* var62 /* : nullable Int */;
4103 val* var63 /* : nullable Bool */;
4104 val* var64 /* : nullable Bool */;
4105 long var65 /* : Int */;
4106 short int var67 /* : Bool */;
4107 int cltype;
4108 int idtype;
4109 const char* var_class_name;
4110 long var68 /* : Int */;
4111 val* var69 /* : Text */;
4112 static val* varonce70;
4113 val* var71 /* : String */;
4114 char* var72 /* : CString */;
4115 val* var73 /* : String */;
4116 val* var74 /* : nullable Int */;
4117 val* var75 /* : nullable Int */;
4118 val* var76 /* : nullable Bool */;
4119 val* var77 /* : nullable Bool */;
4120 val* var78 /* : Text */;
4121 val* var_up /* var up: String */;
4122 short int var79 /* : Bool */;
4123 static val* varonce80;
4124 val* var81 /* : String */;
4125 char* var82 /* : CString */;
4126 val* var83 /* : String */;
4127 val* var84 /* : nullable Int */;
4128 val* var85 /* : nullable Int */;
4129 val* var86 /* : nullable Bool */;
4130 val* var87 /* : nullable Bool */;
4131 val* var88 /* : Text */;
4132 static val* varonce89;
4133 val* var90 /* : String */;
4134 char* var91 /* : CString */;
4135 val* var92 /* : String */;
4136 val* var93 /* : nullable Int */;
4137 val* var94 /* : nullable Int */;
4138 val* var95 /* : nullable Bool */;
4139 val* var96 /* : nullable Bool */;
4140 val* var97 /* : String */;
4141 val* var98 /* : Text */;
4142 val* var_res /* var res: String */;
4143 var_dest = p0;
4144 var1 = glob_sys;
4145 {
4146 var2 = core__file___Sys___getcwd(var1);
4147 }
4148 var_cwd = var2;
4149 {
4150 var3 = core__file___String____47d(var_cwd, self);
4151 }
4152 {
4153 var4 = core__file___String___simplify_path(var3);
4154 }
4155 if (likely(varonce!=NULL)) {
4156 var5 = varonce;
4157 } else {
4158 var6 = "/";
4159 var8 = (val*)(1l<<2|1);
4160 var9 = (val*)(1l<<2|1);
4161 var10 = (val*)((long)(0)<<2|3);
4162 var11 = (val*)((long)(0)<<2|3);
4163 var7 = core__flat___CString___to_s_unsafe(var6, var8, var9, var10, var11);
4164 var5 = var7;
4165 varonce = var5;
4166 }
4167 {
4168 var12 = core__string_search___Text___split(var4, var5);
4169 }
4170 var_from = var12;
4171 {
4172 var13 = core___core__SequenceRead___last(var_from);
4173 }
4174 {
4175 var14 = ((short int(*)(val* self))(var13->class->vft[COLOR_core__abstract_text__Text__is_empty]))(var13); /* is_empty on <var13:nullable Object(String)>*/
4176 }
4177 if (var14){
4178 {
4179 var15 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_from);
4180 }
4181 } else {
4182 }
4183 {
4184 var16 = core__file___String____47d(var_cwd, var_dest);
4185 }
4186 {
4187 var17 = core__file___String___simplify_path(var16);
4188 }
4189 if (likely(varonce18!=NULL)) {
4190 var19 = varonce18;
4191 } else {
4192 var20 = "/";
4193 var22 = (val*)(1l<<2|1);
4194 var23 = (val*)(1l<<2|1);
4195 var24 = (val*)((long)(0)<<2|3);
4196 var25 = (val*)((long)(0)<<2|3);
4197 var21 = core__flat___CString___to_s_unsafe(var20, var22, var23, var24, var25);
4198 var19 = var21;
4199 varonce18 = var19;
4200 }
4201 {
4202 var26 = core__string_search___Text___split(var17, var19);
4203 }
4204 var_to = var26;
4205 {
4206 var27 = core___core__SequenceRead___last(var_to);
4207 }
4208 {
4209 var28 = ((short int(*)(val* self))(var27->class->vft[COLOR_core__abstract_text__Text__is_empty]))(var27); /* is_empty on <var27:nullable Object(String)>*/
4210 }
4211 if (var28){
4212 {
4213 var29 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_to);
4214 }
4215 } else {
4216 }
4217 for(;;) {
4218 {
4219 var32 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_from);
4220 }
4221 var33 = !var32;
4222 var_ = var33;
4223 if (var33){
4224 {
4225 var34 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_to);
4226 }
4227 var35 = !var34;
4228 var31 = var35;
4229 } else {
4230 var31 = var_;
4231 }
4232 var_36 = var31;
4233 if (var31){
4234 {
4235 var37 = core___core__SequenceRead___Collection__first(var_from);
4236 }
4237 {
4238 var38 = core___core__SequenceRead___Collection__first(var_to);
4239 }
4240 {
4241 var39 = ((short int(*)(val* self, val* p0))(var37->class->vft[COLOR_core__kernel__Object___61d_61d]))(var37, var38); /* == on <var37:nullable Object(String)>*/
4242 }
4243 var30 = var39;
4244 } else {
4245 var30 = var_36;
4246 }
4247 if (var30){
4248 {
4249 var40 = core___core__AbstractArray___core__abstract_collection__Sequence__shift(var_from);
4250 }
4251 {
4252 var41 = core___core__AbstractArray___core__abstract_collection__Sequence__shift(var_to);
4253 }
4254 } else {
4255 goto BREAK_label;
4256 }
4257 }
4258 BREAK_label: (void)0;
4259 {
4260 { /* Inline array$AbstractArrayRead$length (var_from) on <var_from:Array[String]> */
4261 var44 = var_from->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_from:Array[String]> */
4262 var42 = var44;
4263 RET_LABEL43:(void)0;
4264 }
4265 }
4266 var_from_len = var42;
4267 {
4268 { /* Inline kernel$Int$== (var_from_len,0l) on <var_from_len:Int> */
4269 var47 = var_from_len == 0l;
4270 var45 = var47;
4271 goto RET_LABEL46;
4272 RET_LABEL46:(void)0;
4273 }
4274 }
4275 if (var45){
4276 if (likely(varonce48!=NULL)) {
4277 var49 = varonce48;
4278 } else {
4279 var50 = "/";
4280 var52 = (val*)(1l<<2|1);
4281 var53 = (val*)(1l<<2|1);
4282 var54 = (val*)((long)(0)<<2|3);
4283 var55 = (val*)((long)(0)<<2|3);
4284 var51 = core__flat___CString___to_s_unsafe(var50, var52, var53, var54, var55);
4285 var49 = var51;
4286 varonce48 = var49;
4287 }
4288 {
4289 var56 = core__abstract_text___Collection___join(var_to, var49, ((val*)NULL));
4290 }
4291 var = var56;
4292 goto RET_LABEL;
4293 } else {
4294 }
4295 if (likely(varonce57!=NULL)) {
4296 var58 = varonce57;
4297 } else {
4298 var59 = "../";
4299 var61 = (val*)(3l<<2|1);
4300 var62 = (val*)(3l<<2|1);
4301 var63 = (val*)((long)(0)<<2|3);
4302 var64 = (val*)((long)(0)<<2|3);
4303 var60 = core__flat___CString___to_s_unsafe(var59, var61, var62, var63, var64);
4304 var58 = var60;
4305 varonce57 = var58;
4306 }
4307 {
4308 { /* Inline kernel$Int$- (var_from_len,1l) on <var_from_len:Int> */
4309 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
4310 /* <1l:Int> isa OTHER */
4311 var67 = 1; /* easy <1l:Int> isa OTHER*/
4312 if (unlikely(!var67)) {
4313 var_class_name = type_core__Int.name;
4314 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
4315 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
4316 fatal_exit(1);
4317 }
4318 var68 = var_from_len - 1l;
4319 var65 = var68;
4320 goto RET_LABEL66;
4321 RET_LABEL66:(void)0;
4322 }
4323 }
4324 {
4325 var69 = ((val*(*)(val* self, long p0))(var58->class->vft[COLOR_core__abstract_text__Text___42d]))(var58, var65); /* * on <var58:String>*/
4326 }
4327 if (likely(varonce70!=NULL)) {
4328 var71 = varonce70;
4329 } else {
4330 var72 = "..";
4331 var74 = (val*)(2l<<2|1);
4332 var75 = (val*)(2l<<2|1);
4333 var76 = (val*)((long)(0)<<2|3);
4334 var77 = (val*)((long)(0)<<2|3);
4335 var73 = core__flat___CString___to_s_unsafe(var72, var74, var75, var76, var77);
4336 var71 = var73;
4337 varonce70 = var71;
4338 }
4339 {
4340 var78 = ((val*(*)(val* self, val* p0))(var69->class->vft[COLOR_core__abstract_text__Text___43d]))(var69, var71); /* + on <var69:Text(String)>*/
4341 }
4342 var_up = var78;
4343 {
4344 var79 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_to);
4345 }
4346 if (var79){
4347 var = var_up;
4348 goto RET_LABEL;
4349 } else {
4350 }
4351 if (likely(varonce80!=NULL)) {
4352 var81 = varonce80;
4353 } else {
4354 var82 = "/";
4355 var84 = (val*)(1l<<2|1);
4356 var85 = (val*)(1l<<2|1);
4357 var86 = (val*)((long)(0)<<2|3);
4358 var87 = (val*)((long)(0)<<2|3);
4359 var83 = core__flat___CString___to_s_unsafe(var82, var84, var85, var86, var87);
4360 var81 = var83;
4361 varonce80 = var81;
4362 }
4363 {
4364 var88 = ((val*(*)(val* self, val* p0))(var_up->class->vft[COLOR_core__abstract_text__Text___43d]))(var_up, var81); /* + on <var_up:String>*/
4365 }
4366 if (likely(varonce89!=NULL)) {
4367 var90 = varonce89;
4368 } else {
4369 var91 = "/";
4370 var93 = (val*)(1l<<2|1);
4371 var94 = (val*)(1l<<2|1);
4372 var95 = (val*)((long)(0)<<2|3);
4373 var96 = (val*)((long)(0)<<2|3);
4374 var92 = core__flat___CString___to_s_unsafe(var91, var93, var94, var95, var96);
4375 var90 = var92;
4376 varonce89 = var90;
4377 }
4378 {
4379 var97 = core__abstract_text___Collection___join(var_to, var90, ((val*)NULL));
4380 }
4381 {
4382 var98 = ((val*(*)(val* self, val* p0))(var88->class->vft[COLOR_core__abstract_text__Text___43d]))(var88, var97); /* + on <var88:Text(String)>*/
4383 }
4384 var_res = var98;
4385 var = var_res;
4386 goto RET_LABEL;
4387 RET_LABEL:;
4388 return var;
4389 }
4390 /* method file$String$mkdir for (self: String, nullable Int): nullable Error */
4391 val* core__file___String___mkdir(val* self, val* p0) {
4392 val* var /* : nullable Error */;
4393 val* var_mode /* var mode: nullable Int */;
4394 long var1 /* : Int */;
4395 long var2 /* : Int */;
4396 val* var3 /* : nullable Int */;
4397 static val* varonce;
4398 val* var4 /* : String */;
4399 char* var5 /* : CString */;
4400 val* var6 /* : String */;
4401 val* var7 /* : nullable Int */;
4402 val* var8 /* : nullable Int */;
4403 val* var9 /* : nullable Bool */;
4404 val* var10 /* : nullable Bool */;
4405 val* var11 /* : Array[String] */;
4406 val* var_dirs /* var dirs: Array[String] */;
4407 val* var12 /* : FlatBuffer */;
4408 val* var_path /* var path: FlatBuffer */;
4409 short int var14 /* : Bool */;
4410 val* var15 /* : nullable Object */;
4411 short int var16 /* : Bool */;
4412 val* var_error /* var error: nullable Error */;
4413 long var_i /* var i: Int */;
4414 long var17 /* : Int */;
4415 long var19 /* : Int */;
4416 long var20 /* : Int */;
4417 short int var22 /* : Bool */;
4418 int cltype;
4419 int idtype;
4420 const char* var_class_name;
4421 long var23 /* : Int */;
4422 long var_ /* var : Int */;
4423 short int var24 /* : Bool */;
4424 short int var26 /* : Bool */;
4425 int cltype27;
4426 int idtype28;
4427 const char* var_class_name29;
4428 short int var30 /* : Bool */;
4429 val* var31 /* : nullable Object */;
4430 val* var_d /* var d: String */;
4431 short int var32 /* : Bool */;
4432 short int var34 /* : Bool */;
4433 char* var35 /* : CString */;
4434 short int var36 /* : Bool */;
4435 short int var38 /* : Bool */;
4436 long var39 /* : Int */;
4437 short int var_res /* var res: Bool */;
4438 short int var40 /* : Bool */;
4439 short int var41 /* : Bool */;
4440 short int var_42 /* var : Bool */;
4441 short int var43 /* : Bool */;
4442 short int var44 /* : Bool */;
4443 val* var_other /* var other: nullable Object */;
4444 short int var46 /* : Bool */;
4445 short int var48 /* : Bool */;
4446 val* var49 /* : IOError */;
4447 val* var51 /* : NativeArray[String] */;
4448 static val* varonce50;
4449 static val* varonce52;
4450 val* var53 /* : String */;
4451 char* var54 /* : CString */;
4452 val* var55 /* : String */;
4453 val* var56 /* : nullable Int */;
4454 val* var57 /* : nullable Int */;
4455 val* var58 /* : nullable Bool */;
4456 val* var59 /* : nullable Bool */;
4457 static val* varonce60;
4458 val* var61 /* : String */;
4459 char* var62 /* : CString */;
4460 val* var63 /* : String */;
4461 val* var64 /* : nullable Int */;
4462 val* var65 /* : nullable Int */;
4463 val* var66 /* : nullable Bool */;
4464 val* var67 /* : nullable Bool */;
4465 val* var68 /* : String */;
4466 val* var69 /* : Sys */;
4467 val* var71 /* : Sys */;
4468 long var72 /* : Int */;
4469 long var74 /* : Int */;
4470 val* var75 /* : String */;
4471 val* var76 /* : String */;
4472 long var77 /* : Int */;
4473 char* var78 /* : CString */;
4474 short int var79 /* : Bool */;
4475 short int var81 /* : Bool */;
4476 long var82 /* : Int */;
4477 short int var_res83 /* var res: Bool */;
4478 short int var84 /* : Bool */;
4479 short int var85 /* : Bool */;
4480 short int var_86 /* var : Bool */;
4481 short int var87 /* : Bool */;
4482 short int var88 /* : Bool */;
4483 short int var90 /* : Bool */;
4484 short int var92 /* : Bool */;
4485 val* var93 /* : IOError */;
4486 val* var95 /* : NativeArray[String] */;
4487 static val* varonce94;
4488 static val* varonce96;
4489 val* var97 /* : String */;
4490 char* var98 /* : CString */;
4491 val* var99 /* : String */;
4492 val* var100 /* : nullable Int */;
4493 val* var101 /* : nullable Int */;
4494 val* var102 /* : nullable Bool */;
4495 val* var103 /* : nullable Bool */;
4496 static val* varonce104;
4497 val* var105 /* : String */;
4498 char* var106 /* : CString */;
4499 val* var107 /* : String */;
4500 val* var108 /* : nullable Int */;
4501 val* var109 /* : nullable Int */;
4502 val* var110 /* : nullable Bool */;
4503 val* var111 /* : nullable Bool */;
4504 val* var112 /* : String */;
4505 val* var113 /* : Sys */;
4506 val* var115 /* : Sys */;
4507 long var116 /* : Int */;
4508 long var118 /* : Int */;
4509 val* var119 /* : String */;
4510 val* var120 /* : String */;
4511 var_mode = p0;
4512 if (var_mode!=NULL) {
4513 var2 = (long)(var_mode)>>2;
4514 var1 = var2;
4515 } else {
4516 var1 = 511l;
4517 }
4518 var3 = (val*)(var1<<2|1);
4519 var_mode = var3;
4520 if (likely(varonce!=NULL)) {
4521 var4 = varonce;
4522 } else {
4523 var5 = "/";
4524 var7 = (val*)(1l<<2|1);
4525 var8 = (val*)(1l<<2|1);
4526 var9 = (val*)((long)(0)<<2|3);
4527 var10 = (val*)((long)(0)<<2|3);
4528 var6 = core__flat___CString___to_s_unsafe(var5, var7, var8, var9, var10);
4529 var4 = var6;
4530 varonce = var4;
4531 }
4532 {
4533 var11 = core__string_search___Text___split_with(self, var4);
4534 }
4535 var_dirs = var11;
4536 var12 = NEW_core__FlatBuffer(&type_core__FlatBuffer);
4537 {
4538 { /* Inline flat$FlatBuffer$init (var12) on <var12:FlatBuffer> */
4539 {
4540 ((void(*)(val* self))(var12->class->vft[COLOR_core___core__FlatBuffer___core__kernel__Object__init]))(var12); /* init on <var12:FlatBuffer>*/
4541 }
4542 RET_LABEL13:(void)0;
4543 }
4544 }
4545 var_path = var12;
4546 {
4547 var14 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_dirs);
4548 }
4549 if (var14){
4550 var = ((val*)NULL);
4551 goto RET_LABEL;
4552 } else {
4553 }
4554 {
4555 var15 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_dirs, 0l);
4556 }
4557 {
4558 var16 = ((short int(*)(val* self))(var15->class->vft[COLOR_core__abstract_text__Text__is_empty]))(var15); /* is_empty on <var15:nullable Object(String)>*/
4559 }
4560 if (var16){
4561 {
4562 core___core__FlatBuffer___core__abstract_text__Buffer__add(var_path, '/'); /* Direct call flat$FlatBuffer$add on <var_path:FlatBuffer>*/
4563 }
4564 } else {
4565 }
4566 var_error = ((val*)NULL);
4567 var_i = 0l;
4568 {
4569 { /* Inline array$AbstractArrayRead$length (var_dirs) on <var_dirs:Array[String]> */
4570 var19 = var_dirs->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_dirs:Array[String]> */
4571 var17 = var19;
4572 RET_LABEL18:(void)0;
4573 }
4574 }
4575 {
4576 { /* Inline kernel$Int$- (var17,1l) on <var17:Int> */
4577 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
4578 /* <1l:Int> isa OTHER */
4579 var22 = 1; /* easy <1l:Int> isa OTHER*/
4580 if (unlikely(!var22)) {
4581 var_class_name = type_core__Int.name;
4582 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
4583 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
4584 fatal_exit(1);
4585 }
4586 var23 = var17 - 1l;
4587 var20 = var23;
4588 goto RET_LABEL21;
4589 RET_LABEL21:(void)0;
4590 }
4591 }
4592 var_ = var20;
4593 for(;;) {
4594 {
4595 { /* Inline kernel$Int$< (var_i,var_) on <var_i:Int> */
4596 /* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
4597 /* <var_:Int> isa OTHER */
4598 var26 = 1; /* easy <var_:Int> isa OTHER*/
4599 if (unlikely(!var26)) {
4600 var_class_name29 = type_core__Int.name;
4601 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name29);
4602 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
4603 fatal_exit(1);
4604 }
4605 var30 = var_i < var_;
4606 var24 = var30;
4607 goto RET_LABEL25;
4608 RET_LABEL25:(void)0;
4609 }
4610 }
4611 if (var24){
4612 } else {
4613 goto BREAK_label;
4614 }
4615 {
4616 var31 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_dirs, var_i);
4617 }
4618 var_d = var31;
4619 {
4620 var32 = ((short int(*)(val* self))(var_d->class->vft[COLOR_core__abstract_text__Text__is_empty]))(var_d); /* is_empty on <var_d:String>*/
4621 }
4622 if (var32){
4623 goto BREAK_label33;
4624 } else {
4625 }
4626 {
4627 core___core__FlatBuffer___core__abstract_text__Buffer__append(var_path, var_d); /* Direct call flat$FlatBuffer$append on <var_path:FlatBuffer>*/
4628 }
4629 {
4630 core___core__FlatBuffer___core__abstract_text__Buffer__add(var_path, '/'); /* Direct call flat$FlatBuffer$add on <var_path:FlatBuffer>*/
4631 }
4632 {
4633 var34 = core__file___Text___file_exists(var_path);
4634 }
4635 if (var34){
4636 goto BREAK_label33;
4637 } else {
4638 }
4639 {
4640 var35 = core___core__FlatBuffer___core__abstract_text__Text__to_cstring(var_path);
4641 }
4642 {
4643 { /* Inline file$CString$file_mkdir (var35,var_mode) on <var35:CString> */
4644 var39 = (long)(var_mode)>>2;
4645 var38 = core__file___CString_file_mkdir___impl(var35, var39);
4646 var36 = var38;
4647 goto RET_LABEL37;
4648 RET_LABEL37:(void)0;
4649 }
4650 }
4651 var_res = var36;
4652 var41 = !var_res;
4653 var_42 = var41;
4654 if (var41){
4655 if (var_error == NULL) {
4656 var43 = 1; /* is null */
4657 } else {
4658 var43 = 0; /* arg is null but recv is not */
4659 }
4660 if (0) {
4661 { /* Inline kernel$Object$== (var_error,((val*)NULL)) on <var_error:nullable Error> */
4662 var_other = ((val*)NULL);
4663 {
4664 { /* Inline kernel$Object$is_same_instance (var_error,var_other) on <var_error:nullable Error(Error)> */
4665 var48 = var_error == var_other;
4666 var46 = var48;
4667 goto RET_LABEL47;
4668 RET_LABEL47:(void)0;
4669 }
4670 }
4671 var44 = var46;
4672 goto RET_LABEL45;
4673 RET_LABEL45:(void)0;
4674 }
4675 var43 = var44;
4676 }
4677 var40 = var43;
4678 } else {
4679 var40 = var_42;
4680 }
4681 if (var40){
4682 var49 = NEW_core__IOError(&type_core__IOError);
4683 if (unlikely(varonce50==NULL)) {
4684 var51 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
4685 if (likely(varonce52!=NULL)) {
4686 var53 = varonce52;
4687 } else {
4688 var54 = "Cannot create directory `";
4689 var56 = (val*)(25l<<2|1);
4690 var57 = (val*)(25l<<2|1);
4691 var58 = (val*)((long)(0)<<2|3);
4692 var59 = (val*)((long)(0)<<2|3);
4693 var55 = core__flat___CString___to_s_unsafe(var54, var56, var57, var58, var59);
4694 var53 = var55;
4695 varonce52 = var53;
4696 }
4697 ((struct instance_core__NativeArray*)var51)->values[0]=var53;
4698 if (likely(varonce60!=NULL)) {
4699 var61 = varonce60;
4700 } else {
4701 var62 = "`: ";
4702 var64 = (val*)(3l<<2|1);
4703 var65 = (val*)(3l<<2|1);
4704 var66 = (val*)((long)(0)<<2|3);
4705 var67 = (val*)((long)(0)<<2|3);
4706 var63 = core__flat___CString___to_s_unsafe(var62, var64, var65, var66, var67);
4707 var61 = var63;
4708 varonce60 = var61;
4709 }
4710 ((struct instance_core__NativeArray*)var51)->values[2]=var61;
4711 } else {
4712 var51 = varonce50;
4713 varonce50 = NULL;
4714 }
4715 {
4716 var68 = ((val*(*)(val* self))(var_path->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_path); /* to_s on <var_path:FlatBuffer>*/
4717 }
4718 ((struct instance_core__NativeArray*)var51)->values[1]=var68;
4719 {
4720 { /* Inline kernel$Object$sys (self) on <self:String> */
4721 var71 = glob_sys;
4722 var69 = var71;
4723 goto RET_LABEL70;
4724 RET_LABEL70:(void)0;
4725 }
4726 }
4727 {
4728 { /* Inline kernel$Sys$errno (var69) on <var69:Sys> */
4729 struct nitni_instance* var_for_c_0;
4730 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
4731 var_for_c_0->value = var69;
4732 var74 = core__kernel___Sys_errno___impl(var_for_c_0);
4733 var72 = var74;
4734 goto RET_LABEL73;
4735 RET_LABEL73:(void)0;
4736 }
4737 }
4738 {
4739 var75 = core__abstract_text___Int___strerror(var72);
4740 }
4741 ((struct instance_core__NativeArray*)var51)->values[3]=var75;
4742 {
4743 var76 = ((val*(*)(val* self))(var51->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var51); /* native_to_s on <var51:NativeArray[String]>*/
4744 }
4745 varonce50 = var51;
4746 {
4747 ((void(*)(val* self, val* p0))(var49->class->vft[COLOR_core__error__Error__message_61d]))(var49, var76); /* message= on <var49:IOError>*/
4748 }
4749 {
4750 ((void(*)(val* self))(var49->class->vft[COLOR_core__kernel__Object__init]))(var49); /* init on <var49:IOError>*/
4751 }
4752 var_error = var49;
4753 } else {
4754 }
4755 BREAK_label33: (void)0;
4756 {
4757 var77 = core___core__Int___Discrete__successor(var_i, 1l);
4758 }
4759 var_i = var77;
4760 }
4761 BREAK_label: (void)0;
4762 {
4763 var78 = ((char*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__to_cstring]))(self); /* to_cstring on <self:String>*/
4764 }
4765 {
4766 { /* Inline file$CString$file_mkdir (var78,var_mode) on <var78:CString> */
4767 var82 = (long)(var_mode)>>2;
4768 var81 = core__file___CString_file_mkdir___impl(var78, var82);
4769 var79 = var81;
4770 goto RET_LABEL80;
4771 RET_LABEL80:(void)0;
4772 }
4773 }
4774 var_res83 = var79;
4775 var85 = !var_res83;
4776 var_86 = var85;
4777 if (var85){
4778 if (var_error == NULL) {
4779 var87 = 1; /* is null */
4780 } else {
4781 var87 = 0; /* arg is null but recv is not */
4782 }
4783 if (0) {
4784 { /* Inline kernel$Object$== (var_error,((val*)NULL)) on <var_error:nullable Error> */
4785 var_other = ((val*)NULL);
4786 {
4787 { /* Inline kernel$Object$is_same_instance (var_error,var_other) on <var_error:nullable Error(Error)> */
4788 var92 = var_error == var_other;
4789 var90 = var92;
4790 goto RET_LABEL91;
4791 RET_LABEL91:(void)0;
4792 }
4793 }
4794 var88 = var90;
4795 goto RET_LABEL89;
4796 RET_LABEL89:(void)0;
4797 }
4798 var87 = var88;
4799 }
4800 var84 = var87;
4801 } else {
4802 var84 = var_86;
4803 }
4804 if (var84){
4805 var93 = NEW_core__IOError(&type_core__IOError);
4806 if (unlikely(varonce94==NULL)) {
4807 var95 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
4808 if (likely(varonce96!=NULL)) {
4809 var97 = varonce96;
4810 } else {
4811 var98 = "Cannot create directory `";
4812 var100 = (val*)(25l<<2|1);
4813 var101 = (val*)(25l<<2|1);
4814 var102 = (val*)((long)(0)<<2|3);
4815 var103 = (val*)((long)(0)<<2|3);
4816 var99 = core__flat___CString___to_s_unsafe(var98, var100, var101, var102, var103);
4817 var97 = var99;
4818 varonce96 = var97;
4819 }
4820 ((struct instance_core__NativeArray*)var95)->values[0]=var97;
4821 if (likely(varonce104!=NULL)) {
4822 var105 = varonce104;
4823 } else {
4824 var106 = "`: ";
4825 var108 = (val*)(3l<<2|1);
4826 var109 = (val*)(3l<<2|1);
4827 var110 = (val*)((long)(0)<<2|3);
4828 var111 = (val*)((long)(0)<<2|3);
4829 var107 = core__flat___CString___to_s_unsafe(var106, var108, var109, var110, var111);
4830 var105 = var107;
4831 varonce104 = var105;
4832 }
4833 ((struct instance_core__NativeArray*)var95)->values[2]=var105;
4834 } else {
4835 var95 = varonce94;
4836 varonce94 = NULL;
4837 }
4838 {
4839 var112 = ((val*(*)(val* self))(var_path->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_path); /* to_s on <var_path:FlatBuffer>*/
4840 }
4841 ((struct instance_core__NativeArray*)var95)->values[1]=var112;
4842 {
4843 { /* Inline kernel$Object$sys (self) on <self:String> */
4844 var115 = glob_sys;
4845 var113 = var115;
4846 goto RET_LABEL114;
4847 RET_LABEL114:(void)0;
4848 }
4849 }
4850 {
4851 { /* Inline kernel$Sys$errno (var113) on <var113:Sys> */
4852 struct nitni_instance* var_for_c_0;
4853 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
4854 var_for_c_0->value = var113;
4855 var118 = core__kernel___Sys_errno___impl(var_for_c_0);
4856 var116 = var118;
4857 goto RET_LABEL117;
4858 RET_LABEL117:(void)0;
4859 }
4860 }
4861 {
4862 var119 = core__abstract_text___Int___strerror(var116);
4863 }
4864 ((struct instance_core__NativeArray*)var95)->values[3]=var119;
4865 {
4866 var120 = ((val*(*)(val* self))(var95->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var95); /* native_to_s on <var95:NativeArray[String]>*/
4867 }
4868 varonce94 = var95;
4869 {
4870 ((void(*)(val* self, val* p0))(var93->class->vft[COLOR_core__error__Error__message_61d]))(var93, var120); /* message= on <var93:IOError>*/
4871 }
4872 {
4873 ((void(*)(val* self))(var93->class->vft[COLOR_core__kernel__Object__init]))(var93); /* init on <var93:IOError>*/
4874 }
4875 var_error = var93;
4876 } else {
4877 }
4878 var = var_error;
4879 goto RET_LABEL;
4880 RET_LABEL:;
4881 return var;
4882 }
4883 /* method file$String$file_extension for (self: String): nullable String */
4884 val* core__file___String___file_extension(val* self) {
4885 val* var /* : nullable String */;
4886 val* var1 /* : SequenceRead[Char] */;
4887 val* var2 /* : nullable Object */;
4888 long var3 /* : Int */;
4889 long var_last_slash /* var last_slash: Int */;
4890 short int var4 /* : Bool */;
4891 short int var6 /* : Bool */;
4892 int cltype;
4893 int idtype;
4894 const char* var_class_name;
4895 short int var7 /* : Bool */;
4896 long var8 /* : Int */;
4897 short int var10 /* : Bool */;
4898 int cltype11;
4899 int idtype12;
4900 const char* var_class_name13;
4901 long var14 /* : Int */;
4902 long var15 /* : Int */;
4903 val* var16 /* : Text */;
4904 {
4905 var1 = ((val*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__chars]))(self); /* chars on <self:String>*/
4906 }
4907 {
4908 var2 = (val*)((long)('.')<<2|2);
4909 var3 = ((long(*)(val* self, val* p0))((((long)var1&3)?class_info[((long)var1&3)]:var1->class)->vft[COLOR_core__abstract_collection__SequenceRead__last_index_of]))(var1, var2); /* last_index_of on <var1:SequenceRead[Char]>*/
4910 }
4911 var_last_slash = var3;
4912 {
4913 { /* Inline kernel$Int$> (var_last_slash,0l) on <var_last_slash:Int> */
4914 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
4915 /* <0l:Int> isa OTHER */
4916 var6 = 1; /* easy <0l:Int> isa OTHER*/
4917 if (unlikely(!var6)) {
4918 var_class_name = type_core__Int.name;
4919 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
4920 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
4921 fatal_exit(1);
4922 }
4923 var7 = var_last_slash > 0l;
4924 var4 = var7;
4925 goto RET_LABEL5;
4926 RET_LABEL5:(void)0;
4927 }
4928 }
4929 if (var4){
4930 {
4931 { /* Inline kernel$Int$+ (var_last_slash,1l) on <var_last_slash:Int> */
4932 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
4933 /* <1l:Int> isa OTHER */
4934 var10 = 1; /* easy <1l:Int> isa OTHER*/
4935 if (unlikely(!var10)) {
4936 var_class_name13 = type_core__Int.name;
4937 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
4938 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
4939 fatal_exit(1);
4940 }
4941 var14 = var_last_slash + 1l;
4942 var8 = var14;
4943 goto RET_LABEL9;
4944 RET_LABEL9:(void)0;
4945 }
4946 }
4947 {
4948 var15 = ((long(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__length]))(self); /* length on <self:String>*/
4949 }
4950 {
4951 var16 = ((val*(*)(val* self, long p0, long p1))(self->class->vft[COLOR_core__abstract_text__Text__substring]))(self, var8, var15); /* substring on <self:String>*/
4952 }
4953 var = var16;
4954 goto RET_LABEL;
4955 } else {
4956 var = ((val*)NULL);
4957 goto RET_LABEL;
4958 }
4959 RET_LABEL:;
4960 return var;
4961 }
4962 /* method file$String$files for (self: String): Array[String] */
4963 val* core__file___String___files(val* self) {
4964 val* var /* : Array[String] */;
4965 val* var1 /* : Array[String] */;
4966 val* var_res /* var res: Array[String] */;
4967 static val* varoncenew;
4968 static int varoncenew_guard;
4969 val* var2 /* : NativeDir */;
4970 val* var3 /* : NativeDir */;
4971 char* var4 /* : CString */;
4972 val* var5 /* : NativeDir */;
4973 val* var_d /* var d: NativeDir */;
4974 short int var6 /* : Bool */;
4975 short int var8 /* : Bool */;
4976 void* var9 /* : Pointer for extern */;
4977 char* var10 /* : CString */;
4978 char* var12 /* : CString */;
4979 void* var13 /* : NativeDir for extern */;
4980 char* var_de /* var de: CString */;
4981 short int var14 /* : Bool */;
4982 short int var16 /* : Bool */;
4983 val* var17 /* : Pointer */;
4984 void* var18 /* : Pointer for extern */;
4985 val* var19 /* : String */;
4986 val* var_name /* var name: String */;
4987 short int var20 /* : Bool */;
4988 static val* varonce;
4989 val* var21 /* : String */;
4990 char* var22 /* : CString */;
4991 val* var23 /* : String */;
4992 val* var24 /* : nullable Int */;
4993 val* var25 /* : nullable Int */;
4994 val* var26 /* : nullable Bool */;
4995 val* var27 /* : nullable Bool */;
4996 short int var28 /* : Bool */;
4997 short int var_ /* var : Bool */;
4998 static val* varonce29;
4999 val* var30 /* : String */;
5000 char* var31 /* : CString */;
5001 val* var32 /* : String */;
5002 val* var33 /* : nullable Int */;
5003 val* var34 /* : nullable Int */;
5004 val* var35 /* : nullable Bool */;
5005 val* var36 /* : nullable Bool */;
5006 short int var37 /* : Bool */;
5007 void* var40 /* : NativeDir for extern */;
5008 var1 = NEW_core__Array(&type_core__Array__core__String);
5009 {
5010 core___core__Array___core__kernel__Object__init(var1); /* Direct call array$Array$init on <var1:Array[String]>*/
5011 }
5012 var_res = var1;
5013 if (likely(varoncenew_guard)) {
5014 var2 = varoncenew;
5015 } else {
5016 var3 = NEW_core__file__NativeDir(&type_core__file__NativeDir);
5017 var2 = var3;
5018 varoncenew = var2;
5019 varoncenew_guard = 1;
5020 }
5021 {
5022 var4 = ((char*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__to_cstring]))(self); /* to_cstring on <self:String>*/
5023 }
5024 {
5025 var5 = core__file___core__file__NativeDir___opendir(var2, var4);
5026 }
5027 var_d = var5;
5028 {
5029 { /* Inline kernel$Pointer$address_is_null (var_d) on <var_d:NativeDir> */
5030 var9 = ((struct instance_core__Pointer*)var_d)->value; /* unboxing NativeDir */
5031 var8 = core__kernel___Pointer_address_is_null___impl(var9);
5032 var6 = var8;
5033 goto RET_LABEL7;
5034 RET_LABEL7:(void)0;
5035 }
5036 }
5037 if (var6){
5038 var = var_res;
5039 goto RET_LABEL;
5040 } else {
5041 }
5042 for(;;) {
5043 {
5044 { /* Inline file$NativeDir$readdir (var_d) on <var_d:NativeDir> */
5045 var13 = ((struct instance_core__Pointer*)var_d)->value; /* unboxing NativeDir */
5046 var12 = core__file___NativeDir_readdir___impl(var13);
5047 var10 = var12;
5048 goto RET_LABEL11;
5049 RET_LABEL11:(void)0;
5050 }
5051 }
5052 var_de = var10;
5053 {
5054 { /* Inline kernel$Pointer$address_is_null (var_de) on <var_de:CString> */
5055 var17 = BOX_core__Pointer(var_de); /* autobox from CString to Pointer */
5056 var18 = ((struct instance_core__Pointer*)var17)->value; /* unboxing Pointer */
5057 var16 = core__kernel___Pointer_address_is_null___impl(var18);
5058 var14 = var16;
5059 goto RET_LABEL15;
5060 RET_LABEL15:(void)0;
5061 }
5062 }
5063 if (var14){
5064 goto BREAK_label;
5065 } else {
5066 }
5067 {
5068 var19 = core__flat___CString___core__abstract_text__Object__to_s(var_de);
5069 }
5070 var_name = var19;
5071 if (likely(varonce!=NULL)) {
5072 var21 = varonce;
5073 } else {
5074 var22 = ".";
5075 var24 = (val*)(1l<<2|1);
5076 var25 = (val*)(1l<<2|1);
5077 var26 = (val*)((long)(0)<<2|3);
5078 var27 = (val*)((long)(0)<<2|3);
5079 var23 = core__flat___CString___to_s_unsafe(var22, var24, var25, var26, var27);
5080 var21 = var23;
5081 varonce = var21;
5082 }
5083 {
5084 var28 = ((short int(*)(val* self, val* p0))(var_name->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_name, var21); /* == on <var_name:String>*/
5085 }
5086 var_ = var28;
5087 if (var28){
5088 var20 = var_;
5089 } else {
5090 if (likely(varonce29!=NULL)) {
5091 var30 = varonce29;
5092 } else {
5093 var31 = "..";
5094 var33 = (val*)(2l<<2|1);
5095 var34 = (val*)(2l<<2|1);
5096 var35 = (val*)((long)(0)<<2|3);
5097 var36 = (val*)((long)(0)<<2|3);
5098 var32 = core__flat___CString___to_s_unsafe(var31, var33, var34, var35, var36);
5099 var30 = var32;
5100 varonce29 = var30;
5101 }
5102 {
5103 var37 = ((short int(*)(val* self, val* p0))(var_name->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_name, var30); /* == on <var_name:String>*/
5104 }
5105 var20 = var37;
5106 }
5107 if (var20){
5108 goto BREAK_label38;
5109 } else {
5110 }
5111 {
5112 core___core__Array___core__abstract_collection__SimpleCollection__add(var_res, var_name); /* Direct call array$Array$add on <var_res:Array[String]>*/
5113 }
5114 BREAK_label38: (void)0;
5115 }
5116 BREAK_label: (void)0;
5117 {
5118 { /* Inline file$NativeDir$closedir (var_d) on <var_d:NativeDir> */
5119 var40 = ((struct instance_core__Pointer*)var_d)->value; /* unboxing NativeDir */
5120 core__file___NativeDir_closedir___impl(var40);
5121 RET_LABEL39:(void)0;
5122 }
5123 }
5124 var = var_res;
5125 goto RET_LABEL;
5126 RET_LABEL:;
5127 return var;
5128 }
5129 /* method file$FlatString$write_native_to for (self: FlatString, FileWriter) */
5130 void core__file___FlatString___Text__write_native_to(val* self, val* p0) {
5131 val* var_s /* var s: FileWriter */;
5132 char* var /* : CString */;
5133 char* var2 /* : CString */;
5134 long var3 /* : Int */;
5135 long var5 /* : Int */;
5136 long var6 /* : Int */;
5137 long var8 /* : Int */;
5138 var_s = p0;
5139 {
5140 { /* Inline abstract_text$FlatText$items (self) on <self:FlatString> */
5141 var2 = self->attrs[COLOR_core__abstract_text__FlatText___items].str; /* _items on <self:FlatString> */
5142 var = var2;
5143 RET_LABEL1:(void)0;
5144 }
5145 }
5146 {
5147 { /* Inline flat$FlatString$first_byte (self) on <self:FlatString> */
5148 var5 = self->attrs[COLOR_core__flat__FlatString___first_byte].l; /* _first_byte on <self:FlatString> */
5149 var3 = var5;
5150 RET_LABEL4:(void)0;
5151 }
5152 }
5153 {
5154 { /* Inline abstract_text$FlatText$byte_length (self) on <self:FlatString> */
5155 var8 = self->attrs[COLOR_core__abstract_text__FlatText___byte_length].l; /* _byte_length on <self:FlatString> */
5156 var6 = var8;
5157 RET_LABEL7:(void)0;
5158 }
5159 }
5160 {
5161 core___core__FileWriter___write_native(var_s, var, var3, var6); /* Direct call file$FileWriter$write_native on <var_s:FileWriter>*/
5162 }
5163 RET_LABEL:;
5164 }
5165 /* method file$FlatString$file_extension for (self: FlatString): nullable String */
5166 val* core__file___FlatString___String__file_extension(val* self) {
5167 val* var /* : nullable String */;
5168 char* var1 /* : CString */;
5169 char* var_its /* var its: CString */;
5170 long var2 /* : Int */;
5171 long var_p /* var p: Int */;
5172 unsigned char var3 /* : Byte */;
5173 unsigned char var5 /* : Byte */;
5174 unsigned char var_c /* var c: Byte */;
5175 long var6 /* : Int */;
5176 long var_st /* var st: Int */;
5177 short int var7 /* : Bool */;
5178 short int var8 /* : Bool */;
5179 short int var10 /* : Bool */;
5180 int cltype;
5181 int idtype;
5182 const char* var_class_name;
5183 short int var11 /* : Bool */;
5184 short int var_ /* var : Bool */;
5185 unsigned char var12 /* : Byte */;
5186 short int var13 /* : Bool */;
5187 short int var15 /* : Bool */;
5188 short int var16 /* : Bool */;
5189 long var17 /* : Int */;
5190 short int var19 /* : Bool */;
5191 int cltype20;
5192 int idtype21;
5193 const char* var_class_name22;
5194 long var23 /* : Int */;
5195 unsigned char var24 /* : Byte */;
5196 unsigned char var26 /* : Byte */;
5197 short int var27 /* : Bool */;
5198 short int var29 /* : Bool */;
5199 int cltype30;
5200 int idtype31;
5201 const char* var_class_name32;
5202 short int var33 /* : Bool */;
5203 long var34 /* : Int */;
5204 long var_ls /* var ls: Int */;
5205 static val* varoncenew;
5206 static int varoncenew_guard;
5207 val* var35 /* : FlatString */;
5208 val* var36 /* : FlatString */;
5209 long var37 /* : Int */;
5210 short int var39 /* : Bool */;
5211 int cltype40;
5212 int idtype41;
5213 const char* var_class_name42;
5214 long var43 /* : Int */;
5215 long var44 /* : Int */;
5216 short int var46 /* : Bool */;
5217 int cltype47;
5218 int idtype48;
5219 const char* var_class_name49;
5220 long var50 /* : Int */;
5221 val* var51 /* : FlatString */;
5222 var1 = self->attrs[COLOR_core__abstract_text__FlatText___items].str; /* _items on <self:FlatString> */
5223 var_its = var1;
5224 {
5225 var2 = core__flat___FlatText___last_byte(self);
5226 }
5227 var_p = var2;
5228 {
5229 { /* Inline native$CString$[] (var_its,var_p) on <var_its:CString> */
5230 var5 = (unsigned char)((int)var_its[var_p]);
5231 var3 = var5;
5232 goto RET_LABEL4;
5233 RET_LABEL4:(void)0;
5234 }
5235 }
5236 var_c = var3;
5237 var6 = self->attrs[COLOR_core__flat__FlatString___first_byte].l; /* _first_byte on <self:FlatString> */
5238 var_st = var6;
5239 for(;;) {
5240 {
5241 { /* Inline kernel$Int$>= (var_p,var_st) on <var_p:Int> */
5242 /* Covariant cast for argument 0 (i) <var_st:Int> isa OTHER */
5243 /* <var_st:Int> isa OTHER */
5244 var10 = 1; /* easy <var_st:Int> isa OTHER*/
5245 if (unlikely(!var10)) {
5246 var_class_name = type_core__Int.name;
5247 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
5248 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 726);
5249 fatal_exit(1);
5250 }
5251 var11 = var_p >= var_st;
5252 var8 = var11;
5253 goto RET_LABEL9;
5254 RET_LABEL9:(void)0;
5255 }
5256 }
5257 var_ = var8;
5258 if (var8){
5259 {
5260 var12 = core___core__Char___ascii('.');
5261 }
5262 {
5263 { /* Inline kernel$Byte$!= (var_c,var12) on <var_c:Byte> */
5264 var15 = var_c == var12;
5265 var16 = !var15;
5266 var13 = var16;
5267 goto RET_LABEL14;
5268 RET_LABEL14:(void)0;
5269 }
5270 }
5271 var7 = var13;
5272 } else {
5273 var7 = var_;
5274 }
5275 if (var7){
5276 {
5277 { /* Inline kernel$Int$- (var_p,1l) on <var_p:Int> */
5278 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
5279 /* <1l:Int> isa OTHER */
5280 var19 = 1; /* easy <1l:Int> isa OTHER*/
5281 if (unlikely(!var19)) {
5282 var_class_name22 = type_core__Int.name;
5283 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name22);
5284 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
5285 fatal_exit(1);
5286 }
5287 var23 = var_p - 1l;
5288 var17 = var23;
5289 goto RET_LABEL18;
5290 RET_LABEL18:(void)0;
5291 }
5292 }
5293 var_p = var17;
5294 {
5295 { /* Inline native$CString$[] (var_its,var_p) on <var_its:CString> */
5296 var26 = (unsigned char)((int)var_its[var_p]);
5297 var24 = var26;
5298 goto RET_LABEL25;
5299 RET_LABEL25:(void)0;
5300 }
5301 }
5302 var_c = var24;
5303 } else {
5304 goto BREAK_label;
5305 }
5306 }
5307 BREAK_label: (void)0;
5308 {
5309 { /* Inline kernel$Int$<= (var_p,var_st) on <var_p:Int> */
5310 /* Covariant cast for argument 0 (i) <var_st:Int> isa OTHER */
5311 /* <var_st:Int> isa OTHER */
5312 var29 = 1; /* easy <var_st:Int> isa OTHER*/
5313 if (unlikely(!var29)) {
5314 var_class_name32 = type_core__Int.name;
5315 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name32);
5316 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 724);
5317 fatal_exit(1);
5318 }
5319 var33 = var_p <= var_st;
5320 var27 = var33;
5321 goto RET_LABEL28;
5322 RET_LABEL28:(void)0;
5323 }
5324 }
5325 if (var27){
5326 var = ((val*)NULL);
5327 goto RET_LABEL;
5328 } else {
5329 }
5330 {
5331 var34 = core__flat___FlatText___last_byte(self);
5332 }
5333 var_ls = var34;
5334 if (likely(varoncenew_guard)) {
5335 var35 = varoncenew;
5336 } else {
5337 var36 = NEW_core__FlatString(&type_core__FlatString);
5338 var35 = var36;
5339 varoncenew = var35;
5340 varoncenew_guard = 1;
5341 }
5342 {
5343 { /* Inline kernel$Int$- (var_ls,var_p) on <var_ls:Int> */
5344 /* Covariant cast for argument 0 (i) <var_p:Int> isa OTHER */
5345 /* <var_p:Int> isa OTHER */
5346 var39 = 1; /* easy <var_p:Int> isa OTHER*/
5347 if (unlikely(!var39)) {
5348 var_class_name42 = type_core__Int.name;
5349 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name42);
5350 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
5351 fatal_exit(1);
5352 }
5353 var43 = var_ls - var_p;
5354 var37 = var43;
5355 goto RET_LABEL38;
5356 RET_LABEL38:(void)0;
5357 }
5358 }
5359 {
5360 { /* Inline kernel$Int$+ (var_p,1l) on <var_p:Int> */
5361 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
5362 /* <1l:Int> isa OTHER */
5363 var46 = 1; /* easy <1l:Int> isa OTHER*/
5364 if (unlikely(!var46)) {
5365 var_class_name49 = type_core__Int.name;
5366 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name49);
5367 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
5368 fatal_exit(1);
5369 }
5370 var50 = var_p + 1l;
5371 var44 = var50;
5372 goto RET_LABEL45;
5373 RET_LABEL45:(void)0;
5374 }
5375 }
5376 {
5377 var51 = core___core__FlatString___with_infos(var35, var_its, var37, var44);
5378 }
5379 var = var51;
5380 goto RET_LABEL;
5381 RET_LABEL:;
5382 return var;
5383 }
5384 /* method file$FlatString$basename for (self: FlatString, nullable String): String */
5385 val* core__file___FlatString___String__basename(val* self, val* p0) {
5386 val* var /* : String */;
5387 val* var_extension /* var extension: nullable String */;
5388 val* var1 /* : Sys */;
5389 short int var2 /* : Bool */;
5390 short int var4 /* : Bool */;
5391 long var5 /* : Int */;
5392 long var_l /* var l: Int */;
5393 char* var6 /* : CString */;
5394 char* var_its /* var its: CString */;
5395 long var7 /* : Int */;
5396 long var_min /* var min: Int */;
5397 unsigned char var8 /* : Byte */;
5398 unsigned char var_sl /* var sl: Byte */;
5399 unsigned char var9 /* : Byte */;
5400 unsigned char var_ls /* var ls: Byte */;
5401 short int var10 /* : Bool */;
5402 short int var11 /* : Bool */;
5403 short int var13 /* : Bool */;
5404 int cltype;
5405 int idtype;
5406 const char* var_class_name;
5407 short int var14 /* : Bool */;
5408 short int var_ /* var : Bool */;
5409 short int var15 /* : Bool */;
5410 unsigned char var16 /* : Byte */;
5411 unsigned char var18 /* : Byte */;
5412 short int var19 /* : Bool */;
5413 short int var21 /* : Bool */;
5414 short int var_22 /* var : Bool */;
5415 unsigned char var23 /* : Byte */;
5416 unsigned char var25 /* : Byte */;
5417 short int var26 /* : Bool */;
5418 short int var28 /* : Bool */;
5419 long var29 /* : Int */;
5420 short int var31 /* : Bool */;
5421 int cltype32;
5422 int idtype33;
5423 const char* var_class_name34;
5424 long var35 /* : Int */;
5425 short int var36 /* : Bool */;
5426 short int var38 /* : Bool */;
5427 static val* varonce;
5428 val* var39 /* : String */;
5429 char* var40 /* : CString */;
5430 val* var41 /* : String */;
5431 val* var42 /* : nullable Int */;
5432 val* var43 /* : nullable Int */;
5433 val* var44 /* : nullable Bool */;
5434 val* var45 /* : nullable Bool */;
5435 long var_ns /* var ns: Int */;
5436 short int var46 /* : Bool */;
5437 short int var47 /* : Bool */;
5438 short int var48 /* : Bool */;
5439 short int var50 /* : Bool */;
5440 int cltype51;
5441 int idtype52;
5442 const char* var_class_name53;
5443 short int var54 /* : Bool */;
5444 short int var_55 /* var : Bool */;
5445 unsigned char var56 /* : Byte */;
5446 unsigned char var58 /* : Byte */;
5447 short int var59 /* : Bool */;
5448 short int var61 /* : Bool */;
5449 short int var62 /* : Bool */;
5450 short int var_63 /* var : Bool */;
5451 unsigned char var64 /* : Byte */;
5452 unsigned char var66 /* : Byte */;
5453 short int var67 /* : Bool */;
5454 short int var69 /* : Bool */;
5455 short int var70 /* : Bool */;
5456 long var71 /* : Int */;
5457 short int var73 /* : Bool */;
5458 int cltype74;
5459 int idtype75;
5460 const char* var_class_name76;
5461 long var77 /* : Int */;
5462 static val* varoncenew;
5463 static int varoncenew_guard;
5464 val* var79 /* : FlatString */;
5465 val* var80 /* : FlatString */;
5466 long var81 /* : Int */;
5467 short int var83 /* : Bool */;
5468 int cltype84;
5469 int idtype85;
5470 const char* var_class_name86;
5471 long var87 /* : Int */;
5472 long var88 /* : Int */;
5473 short int var90 /* : Bool */;
5474 int cltype91;
5475 int idtype92;
5476 const char* var_class_name93;
5477 long var94 /* : Int */;
5478 val* var95 /* : FlatString */;
5479 val* var_bname /* var bname: nullable Object */;
5480 long var96 /* : Int */;
5481 long var_l97 /* var l: Int */;
5482 char* var98 /* : CString */;
5483 char* var_its99 /* var its: CString */;
5484 long var100 /* : Int */;
5485 long var_min101 /* var min: Int */;
5486 unsigned char var102 /* : Byte */;
5487 unsigned char var_sl103 /* var sl: Byte */;
5488 short int var104 /* : Bool */;
5489 short int var105 /* : Bool */;
5490 short int var107 /* : Bool */;
5491 int cltype108;
5492 int idtype109;
5493 const char* var_class_name110;
5494 short int var111 /* : Bool */;
5495 short int var_112 /* var : Bool */;
5496 unsigned char var113 /* : Byte */;
5497 unsigned char var115 /* : Byte */;
5498 short int var116 /* : Bool */;
5499 short int var118 /* : Bool */;
5500 long var119 /* : Int */;
5501 short int var121 /* : Bool */;
5502 int cltype122;
5503 int idtype123;
5504 const char* var_class_name124;
5505 long var125 /* : Int */;
5506 short int var127 /* : Bool */;
5507 short int var129 /* : Bool */;
5508 static val* varonce130;
5509 val* var131 /* : String */;
5510 char* var132 /* : CString */;
5511 val* var133 /* : String */;
5512 val* var134 /* : nullable Int */;
5513 val* var135 /* : nullable Int */;
5514 val* var136 /* : nullable Bool */;
5515 val* var137 /* : nullable Bool */;
5516 long var_ns138 /* var ns: Int */;
5517 short int var139 /* : Bool */;
5518 short int var140 /* : Bool */;
5519 short int var142 /* : Bool */;
5520 int cltype143;
5521 int idtype144;
5522 const char* var_class_name145;
5523 short int var146 /* : Bool */;
5524 short int var_147 /* var : Bool */;
5525 unsigned char var148 /* : Byte */;
5526 unsigned char var150 /* : Byte */;
5527 short int var151 /* : Bool */;
5528 short int var153 /* : Bool */;
5529 short int var154 /* : Bool */;
5530 long var155 /* : Int */;
5531 short int var157 /* : Bool */;
5532 int cltype158;
5533 int idtype159;
5534 const char* var_class_name160;
5535 long var161 /* : Int */;
5536 static val* varoncenew163;
5537 static int varoncenew163_guard;
5538 val* var164 /* : FlatString */;
5539 val* var165 /* : FlatString */;
5540 long var166 /* : Int */;
5541 short int var168 /* : Bool */;
5542 int cltype169;
5543 int idtype170;
5544 const char* var_class_name171;
5545 long var172 /* : Int */;
5546 long var173 /* : Int */;
5547 short int var175 /* : Bool */;
5548 int cltype176;
5549 int idtype177;
5550 const char* var_class_name178;
5551 long var179 /* : Int */;
5552 val* var180 /* : FlatString */;
5553 val* var181 /* : String */;
5554 short int var182 /* : Bool */;
5555 short int var183 /* : Bool */;
5556 val* var_other /* var other: nullable Object */;
5557 short int var185 /* : Bool */;
5558 short int var186 /* : Bool */;
5559 val* var187 /* : String */;
5560 var_extension = p0;
5561 var1 = glob_sys;
5562 {
5563 { /* Inline kernel$Sys$is_windows (var1) on <var1:Sys> */
5564 struct nitni_instance* var_for_c_0;
5565 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
5566 var_for_c_0->value = var1;
5567 var4 = core__kernel___Sys_is_windows___impl(var_for_c_0);
5568 var2 = var4;
5569 goto RET_LABEL3;
5570 RET_LABEL3:(void)0;
5571 }
5572 }
5573 if (var2){
5574 {
5575 var5 = core__flat___FlatText___last_byte(self);
5576 }
5577 var_l = var5;
5578 var6 = self->attrs[COLOR_core__abstract_text__FlatText___items].str; /* _items on <self:FlatString> */
5579 var_its = var6;
5580 var7 = self->attrs[COLOR_core__flat__FlatString___first_byte].l; /* _first_byte on <self:FlatString> */
5581 var_min = var7;
5582 {
5583 var8 = core___core__Char___ascii('/');
5584 }
5585 var_sl = var8;
5586 {
5587 var9 = core___core__Char___ascii('\\');
5588 }
5589 var_ls = var9;
5590 for(;;) {
5591 {
5592 { /* Inline kernel$Int$> (var_l,var_min) on <var_l:Int> */
5593 /* Covariant cast for argument 0 (i) <var_min:Int> isa OTHER */
5594 /* <var_min:Int> isa OTHER */
5595 var13 = 1; /* easy <var_min:Int> isa OTHER*/
5596 if (unlikely(!var13)) {
5597 var_class_name = type_core__Int.name;
5598 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
5599 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
5600 fatal_exit(1);
5601 }
5602 var14 = var_l > var_min;
5603 var11 = var14;
5604 goto RET_LABEL12;
5605 RET_LABEL12:(void)0;
5606 }
5607 }
5608 var_ = var11;
5609 if (var11){
5610 {
5611 { /* Inline native$CString$[] (var_its,var_l) on <var_its:CString> */
5612 var18 = (unsigned char)((int)var_its[var_l]);
5613 var16 = var18;
5614 goto RET_LABEL17;
5615 RET_LABEL17:(void)0;
5616 }
5617 }
5618 {
5619 { /* Inline kernel$Byte$== (var16,var_sl) on <var16:Byte> */
5620 var21 = var16 == var_sl;
5621 var19 = var21;
5622 goto RET_LABEL20;
5623 RET_LABEL20:(void)0;
5624 }
5625 }
5626 var_22 = var19;
5627 if (var19){
5628 var15 = var_22;
5629 } else {
5630 {
5631 { /* Inline native$CString$[] (var_its,var_l) on <var_its:CString> */
5632 var25 = (unsigned char)((int)var_its[var_l]);
5633 var23 = var25;
5634 goto RET_LABEL24;
5635 RET_LABEL24:(void)0;
5636 }
5637 }
5638 {
5639 { /* Inline kernel$Byte$== (var23,var_ls) on <var23:Byte> */
5640 var28 = var23 == var_ls;
5641 var26 = var28;
5642 goto RET_LABEL27;
5643 RET_LABEL27:(void)0;
5644 }
5645 }
5646 var15 = var26;
5647 }
5648 var10 = var15;
5649 } else {
5650 var10 = var_;
5651 }
5652 if (var10){
5653 {
5654 { /* Inline kernel$Int$- (var_l,1l) on <var_l:Int> */
5655 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
5656 /* <1l:Int> isa OTHER */
5657 var31 = 1; /* easy <1l:Int> isa OTHER*/
5658 if (unlikely(!var31)) {
5659 var_class_name34 = type_core__Int.name;
5660 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name34);
5661 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
5662 fatal_exit(1);
5663 }
5664 var35 = var_l - 1l;
5665 var29 = var35;
5666 goto RET_LABEL30;
5667 RET_LABEL30:(void)0;
5668 }
5669 }
5670 var_l = var29;
5671 } else {
5672 goto BREAK_label;
5673 }
5674 }
5675 BREAK_label: (void)0;
5676 {
5677 { /* Inline kernel$Int$== (var_l,var_min) on <var_l:Int> */
5678 var38 = var_l == var_min;
5679 var36 = var38;
5680 goto RET_LABEL37;
5681 RET_LABEL37:(void)0;
5682 }
5683 }
5684 if (var36){
5685 if (likely(varonce!=NULL)) {
5686 var39 = varonce;
5687 } else {
5688 var40 = "\\";
5689 var42 = (val*)(1l<<2|1);
5690 var43 = (val*)(1l<<2|1);
5691 var44 = (val*)((long)(0)<<2|3);
5692 var45 = (val*)((long)(0)<<2|3);
5693 var41 = core__flat___CString___to_s_unsafe(var40, var42, var43, var44, var45);
5694 var39 = var41;
5695 varonce = var39;
5696 }
5697 var = var39;
5698 goto RET_LABEL;
5699 } else {
5700 }
5701 var_ns = var_l;
5702 for(;;) {
5703 {
5704 { /* Inline kernel$Int$>= (var_ns,var_min) on <var_ns:Int> */
5705 /* Covariant cast for argument 0 (i) <var_min:Int> isa OTHER */
5706 /* <var_min:Int> isa OTHER */
5707 var50 = 1; /* easy <var_min:Int> isa OTHER*/
5708 if (unlikely(!var50)) {
5709 var_class_name53 = type_core__Int.name;
5710 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name53);
5711 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 726);
5712 fatal_exit(1);
5713 }
5714 var54 = var_ns >= var_min;
5715 var48 = var54;
5716 goto RET_LABEL49;
5717 RET_LABEL49:(void)0;
5718 }
5719 }
5720 var_55 = var48;
5721 if (var48){
5722 {
5723 { /* Inline native$CString$[] (var_its,var_ns) on <var_its:CString> */
5724 var58 = (unsigned char)((int)var_its[var_ns]);
5725 var56 = var58;
5726 goto RET_LABEL57;
5727 RET_LABEL57:(void)0;
5728 }
5729 }
5730 {
5731 { /* Inline kernel$Byte$!= (var56,var_sl) on <var56:Byte> */
5732 var61 = var56 == var_sl;
5733 var62 = !var61;
5734 var59 = var62;
5735 goto RET_LABEL60;
5736 RET_LABEL60:(void)0;
5737 }
5738 }
5739 var47 = var59;
5740 } else {
5741 var47 = var_55;
5742 }
5743 var_63 = var47;
5744 if (var47){
5745 {
5746 { /* Inline native$CString$[] (var_its,var_ns) on <var_its:CString> */
5747 var66 = (unsigned char)((int)var_its[var_ns]);
5748 var64 = var66;
5749 goto RET_LABEL65;
5750 RET_LABEL65:(void)0;
5751 }
5752 }
5753 {
5754 { /* Inline kernel$Byte$!= (var64,var_ls) on <var64:Byte> */
5755 var69 = var64 == var_ls;
5756 var70 = !var69;
5757 var67 = var70;
5758 goto RET_LABEL68;
5759 RET_LABEL68:(void)0;
5760 }
5761 }
5762 var46 = var67;
5763 } else {
5764 var46 = var_63;
5765 }
5766 if (var46){
5767 {
5768 { /* Inline kernel$Int$- (var_ns,1l) on <var_ns:Int> */
5769 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
5770 /* <1l:Int> isa OTHER */
5771 var73 = 1; /* easy <1l:Int> isa OTHER*/
5772 if (unlikely(!var73)) {
5773 var_class_name76 = type_core__Int.name;
5774 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name76);
5775 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
5776 fatal_exit(1);
5777 }
5778 var77 = var_ns - 1l;
5779 var71 = var77;
5780 goto RET_LABEL72;
5781 RET_LABEL72:(void)0;
5782 }
5783 }
5784 var_ns = var71;
5785 } else {
5786 goto BREAK_label78;
5787 }
5788 }
5789 BREAK_label78: (void)0;
5790 if (likely(varoncenew_guard)) {
5791 var79 = varoncenew;
5792 } else {
5793 var80 = NEW_core__FlatString(&type_core__FlatString);
5794 var79 = var80;
5795 varoncenew = var79;
5796 varoncenew_guard = 1;
5797 }
5798 {
5799 { /* Inline kernel$Int$- (var_l,var_ns) on <var_l:Int> */
5800 /* Covariant cast for argument 0 (i) <var_ns:Int> isa OTHER */
5801 /* <var_ns:Int> isa OTHER */
5802 var83 = 1; /* easy <var_ns:Int> isa OTHER*/
5803 if (unlikely(!var83)) {
5804 var_class_name86 = type_core__Int.name;
5805 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name86);
5806 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
5807 fatal_exit(1);
5808 }
5809 var87 = var_l - var_ns;
5810 var81 = var87;
5811 goto RET_LABEL82;
5812 RET_LABEL82:(void)0;
5813 }
5814 }
5815 {
5816 { /* Inline kernel$Int$+ (var_ns,1l) on <var_ns:Int> */
5817 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
5818 /* <1l:Int> isa OTHER */
5819 var90 = 1; /* easy <1l:Int> isa OTHER*/
5820 if (unlikely(!var90)) {
5821 var_class_name93 = type_core__Int.name;
5822 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name93);
5823 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
5824 fatal_exit(1);
5825 }
5826 var94 = var_ns + 1l;
5827 var88 = var94;
5828 goto RET_LABEL89;
5829 RET_LABEL89:(void)0;
5830 }
5831 }
5832 {
5833 var95 = core___core__FlatString___with_infos(var79, var_its, var81, var88);
5834 }
5835 var_bname = var95;
5836 } else {
5837 {
5838 var96 = core__flat___FlatText___last_byte(self);
5839 }
5840 var_l97 = var96;
5841 var98 = self->attrs[COLOR_core__abstract_text__FlatText___items].str; /* _items on <self:FlatString> */
5842 var_its99 = var98;
5843 var100 = self->attrs[COLOR_core__flat__FlatString___first_byte].l; /* _first_byte on <self:FlatString> */
5844 var_min101 = var100;
5845 {
5846 var102 = core___core__Char___ascii('/');
5847 }
5848 var_sl103 = var102;
5849 for(;;) {
5850 {
5851 { /* Inline kernel$Int$> (var_l97,var_min101) on <var_l97:Int> */
5852 /* Covariant cast for argument 0 (i) <var_min101:Int> isa OTHER */
5853 /* <var_min101:Int> isa OTHER */
5854 var107 = 1; /* easy <var_min101:Int> isa OTHER*/
5855 if (unlikely(!var107)) {
5856 var_class_name110 = type_core__Int.name;
5857 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name110);
5858 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
5859 fatal_exit(1);
5860 }
5861 var111 = var_l97 > var_min101;
5862 var105 = var111;
5863 goto RET_LABEL106;
5864 RET_LABEL106:(void)0;
5865 }
5866 }
5867 var_112 = var105;
5868 if (var105){
5869 {
5870 { /* Inline native$CString$[] (var_its99,var_l97) on <var_its99:CString> */
5871 var115 = (unsigned char)((int)var_its99[var_l97]);
5872 var113 = var115;
5873 goto RET_LABEL114;
5874 RET_LABEL114:(void)0;
5875 }
5876 }
5877 {
5878 { /* Inline kernel$Byte$== (var113,var_sl103) on <var113:Byte> */
5879 var118 = var113 == var_sl103;
5880 var116 = var118;
5881 goto RET_LABEL117;
5882 RET_LABEL117:(void)0;
5883 }
5884 }
5885 var104 = var116;
5886 } else {
5887 var104 = var_112;
5888 }
5889 if (var104){
5890 {
5891 { /* Inline kernel$Int$- (var_l97,1l) on <var_l97:Int> */
5892 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
5893 /* <1l:Int> isa OTHER */
5894 var121 = 1; /* easy <1l:Int> isa OTHER*/
5895 if (unlikely(!var121)) {
5896 var_class_name124 = type_core__Int.name;
5897 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name124);
5898 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
5899 fatal_exit(1);
5900 }
5901 var125 = var_l97 - 1l;
5902 var119 = var125;
5903 goto RET_LABEL120;
5904 RET_LABEL120:(void)0;
5905 }
5906 }
5907 var_l97 = var119;
5908 } else {
5909 goto BREAK_label126;
5910 }
5911 }
5912 BREAK_label126: (void)0;
5913 {
5914 { /* Inline kernel$Int$== (var_l97,var_min101) on <var_l97:Int> */
5915 var129 = var_l97 == var_min101;
5916 var127 = var129;
5917 goto RET_LABEL128;
5918 RET_LABEL128:(void)0;
5919 }
5920 }
5921 if (var127){
5922 if (likely(varonce130!=NULL)) {
5923 var131 = varonce130;
5924 } else {
5925 var132 = "/";
5926 var134 = (val*)(1l<<2|1);
5927 var135 = (val*)(1l<<2|1);
5928 var136 = (val*)((long)(0)<<2|3);
5929 var137 = (val*)((long)(0)<<2|3);
5930 var133 = core__flat___CString___to_s_unsafe(var132, var134, var135, var136, var137);
5931 var131 = var133;
5932 varonce130 = var131;
5933 }
5934 var = var131;
5935 goto RET_LABEL;
5936 } else {
5937 }
5938 var_ns138 = var_l97;
5939 for(;;) {
5940 {
5941 { /* Inline kernel$Int$>= (var_ns138,var_min101) on <var_ns138:Int> */
5942 /* Covariant cast for argument 0 (i) <var_min101:Int> isa OTHER */
5943 /* <var_min101:Int> isa OTHER */
5944 var142 = 1; /* easy <var_min101:Int> isa OTHER*/
5945 if (unlikely(!var142)) {
5946 var_class_name145 = type_core__Int.name;
5947 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name145);
5948 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 726);
5949 fatal_exit(1);
5950 }
5951 var146 = var_ns138 >= var_min101;
5952 var140 = var146;
5953 goto RET_LABEL141;
5954 RET_LABEL141:(void)0;
5955 }
5956 }
5957 var_147 = var140;
5958 if (var140){
5959 {
5960 { /* Inline native$CString$[] (var_its99,var_ns138) on <var_its99:CString> */
5961 var150 = (unsigned char)((int)var_its99[var_ns138]);
5962 var148 = var150;
5963 goto RET_LABEL149;
5964 RET_LABEL149:(void)0;
5965 }
5966 }
5967 {
5968 { /* Inline kernel$Byte$!= (var148,var_sl103) on <var148:Byte> */
5969 var153 = var148 == var_sl103;
5970 var154 = !var153;
5971 var151 = var154;
5972 goto RET_LABEL152;
5973 RET_LABEL152:(void)0;
5974 }
5975 }
5976 var139 = var151;
5977 } else {
5978 var139 = var_147;
5979 }
5980 if (var139){
5981 {
5982 { /* Inline kernel$Int$- (var_ns138,1l) on <var_ns138:Int> */
5983 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
5984 /* <1l:Int> isa OTHER */
5985 var157 = 1; /* easy <1l:Int> isa OTHER*/
5986 if (unlikely(!var157)) {
5987 var_class_name160 = type_core__Int.name;
5988 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name160);
5989 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
5990 fatal_exit(1);
5991 }
5992 var161 = var_ns138 - 1l;
5993 var155 = var161;
5994 goto RET_LABEL156;
5995 RET_LABEL156:(void)0;
5996 }
5997 }
5998 var_ns138 = var155;
5999 } else {
6000 goto BREAK_label162;
6001 }
6002 }
6003 BREAK_label162: (void)0;
6004 if (likely(varoncenew163_guard)) {
6005 var164 = varoncenew163;
6006 } else {
6007 var165 = NEW_core__FlatString(&type_core__FlatString);
6008 var164 = var165;
6009 varoncenew163 = var164;
6010 varoncenew163_guard = 1;
6011 }
6012 {
6013 { /* Inline kernel$Int$- (var_l97,var_ns138) on <var_l97:Int> */
6014 /* Covariant cast for argument 0 (i) <var_ns138:Int> isa OTHER */
6015 /* <var_ns138:Int> isa OTHER */
6016 var168 = 1; /* easy <var_ns138:Int> isa OTHER*/
6017 if (unlikely(!var168)) {
6018 var_class_name171 = type_core__Int.name;
6019 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name171);
6020 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
6021 fatal_exit(1);
6022 }
6023 var172 = var_l97 - var_ns138;
6024 var166 = var172;
6025 goto RET_LABEL167;
6026 RET_LABEL167:(void)0;
6027 }
6028 }
6029 {
6030 { /* Inline kernel$Int$+ (var_ns138,1l) on <var_ns138:Int> */
6031 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
6032 /* <1l:Int> isa OTHER */
6033 var175 = 1; /* easy <1l:Int> isa OTHER*/
6034 if (unlikely(!var175)) {
6035 var_class_name178 = type_core__Int.name;
6036 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name178);
6037 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
6038 fatal_exit(1);
6039 }
6040 var179 = var_ns138 + 1l;
6041 var173 = var179;
6042 goto RET_LABEL174;
6043 RET_LABEL174:(void)0;
6044 }
6045 }
6046 {
6047 var180 = core___core__FlatString___with_infos(var164, var_its99, var166, var173);
6048 }
6049 var_bname = var180;
6050 }
6051 if (var_extension == NULL) {
6052 var182 = 0; /* is null */
6053 } else {
6054 var182 = 1; /* arg is null and recv is not */
6055 }
6056 if (0) {
6057 { /* Inline kernel$Object$!= (var_extension,((val*)NULL)) on <var_extension:nullable String> */
6058 var_other = ((val*)NULL);
6059 {
6060 var185 = ((short int(*)(val* self, val* p0))(var_extension->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_extension, var_other); /* == on <var_extension:nullable String(String)>*/
6061 }
6062 var186 = !var185;
6063 var183 = var186;
6064 goto RET_LABEL184;
6065 RET_LABEL184:(void)0;
6066 }
6067 var182 = var183;
6068 }
6069 if (var182){
6070 {
6071 var187 = core__file___String___strip_extension(var_bname, var_extension);
6072 }
6073 var181 = var187;
6074 } else {
6075 var181 = var_bname;
6076 }
6077 var = var181;
6078 goto RET_LABEL;
6079 RET_LABEL:;
6080 return var;
6081 }
6082 /* method file$CString$file_exists for (self: CString): Bool */
6083 short int core__file___CString___file_exists(char* self) {
6084 short int var /* : Bool */;
6085 short int var1 /* : Bool */;
6086 var1 = core__file___CString_file_exists___impl(self);
6087 var = var1;
6088 goto RET_LABEL;
6089 RET_LABEL:;
6090 return var;
6091 }
6092 /* method file$CString$file_stat for (self: CString): NativeFileStat */
6093 val* core__file___CString___file_stat(char* self) {
6094 val* var /* : NativeFileStat */;
6095 val* var1 /* : NativeFileStat */;
6096 val* var2 /* : NativeFileStat */;
6097 var1 = core__file___CString_file_stat___impl(self);
6098 var2 = BOX_core__Pointer(var1); /* boxing NativeFileStat */
6099 var2->type = &type_core__file__NativeFileStat;
6100 var2->class = &class_core__file__NativeFileStat;
6101 var = var2;
6102 goto RET_LABEL;
6103 RET_LABEL:;
6104 return var;
6105 }
6106 /* method file$CString$file_mkdir for (self: CString, Int): Bool */
6107 short int core__file___CString___file_mkdir(char* self, long p0) {
6108 short int var /* : Bool */;
6109 short int var1 /* : Bool */;
6110 var1 = core__file___CString_file_mkdir___impl(self, p0);
6111 var = var1;
6112 goto RET_LABEL;
6113 RET_LABEL:;
6114 return var;
6115 }
6116 /* method file$CString$file_realpath for (self: CString): CString */
6117 char* core__file___CString___file_realpath(char* self) {
6118 char* var /* : CString */;
6119 char* var1 /* : CString */;
6120 var1 = core__file___CString_file_realpath___impl(self);
6121 var = var1;
6122 goto RET_LABEL;
6123 RET_LABEL:;
6124 return var;
6125 }
6126 /* method file$NativeFileStat$is_dir for (self: NativeFileStat): Bool */
6127 short int core__file___core__file__NativeFileStat___is_dir(val* self) {
6128 short int var /* : Bool */;
6129 short int var1 /* : Bool */;
6130 void* var2 /* : NativeFileStat for extern */;
6131 var2 = ((struct instance_core__Pointer*)self)->value; /* unboxing NativeFileStat */
6132 var1 = core__file___NativeFileStat_is_dir___impl(var2);
6133 var = var1;
6134 goto RET_LABEL;
6135 RET_LABEL:;
6136 return var;
6137 }
6138 /* method file$NativeFile$io_read for (self: NativeFile, CString, Int): Int */
6139 long core__file___core__file__NativeFile___io_read(val* self, char* p0, long p1) {
6140 long var /* : Int */;
6141 long var1 /* : Int */;
6142 void* var2 /* : NativeFile for extern */;
6143 var2 = ((struct instance_core__Pointer*)self)->value; /* unboxing NativeFile */
6144 var1 = core__file___NativeFile_io_read___impl(var2, p0, p1);
6145 var = var1;
6146 goto RET_LABEL;
6147 RET_LABEL:;
6148 return var;
6149 }
6150 /* method file$NativeFile$io_write for (self: NativeFile, CString, Int, Int): Int */
6151 long core__file___core__file__NativeFile___io_write(val* self, char* p0, long p1, long p2) {
6152 long var /* : Int */;
6153 long var1 /* : Int */;
6154 void* var2 /* : NativeFile for extern */;
6155 var2 = ((struct instance_core__Pointer*)self)->value; /* unboxing NativeFile */
6156 var1 = core__file___NativeFile_io_write___impl(var2, p0, p1, p2);
6157 var = var1;
6158 goto RET_LABEL;
6159 RET_LABEL:;
6160 return var;
6161 }
6162 /* method file$NativeFile$io_close for (self: NativeFile): Int */
6163 long core__file___core__file__NativeFile___io_close(val* self) {
6164 long var /* : Int */;
6165 long var1 /* : Int */;
6166 void* var2 /* : NativeFile for extern */;
6167 var2 = ((struct instance_core__Pointer*)self)->value; /* unboxing NativeFile */
6168 var1 = core__file___NativeFile_io_close___impl(var2);
6169 var = var1;
6170 goto RET_LABEL;
6171 RET_LABEL:;
6172 return var;
6173 }
6174 /* method file$NativeFile$ferror for (self: NativeFile): Bool */
6175 short int core__file___core__file__NativeFile___ferror(val* self) {
6176 short int var /* : Bool */;
6177 short int var1 /* : Bool */;
6178 void* var2 /* : NativeFile for extern */;
6179 var2 = ((struct instance_core__Pointer*)self)->value; /* unboxing NativeFile */
6180 var1 = core__file___NativeFile_ferror___impl(var2);
6181 var = var1;
6182 goto RET_LABEL;
6183 RET_LABEL:;
6184 return var;
6185 }
6186 /* method file$NativeFile$set_buffering_type for (self: NativeFile, Int, Int): Int */
6187 long core__file___core__file__NativeFile___set_buffering_type(val* self, long p0, long p1) {
6188 long var /* : Int */;
6189 long var1 /* : Int */;
6190 void* var2 /* : NativeFile for extern */;
6191 var2 = ((struct instance_core__Pointer*)self)->value; /* unboxing NativeFile */
6192 var1 = core__file___NativeFile_set_buffering_type___impl(var2, p0, p1);
6193 var = var1;
6194 goto RET_LABEL;
6195 RET_LABEL:;
6196 return var;
6197 }
6198 /* method file$NativeFile$io_open_read for (self: NativeFile, CString): NativeFile */
6199 val* core__file___core__file__NativeFile___io_open_read(val* self, char* p0) {
6200 val* var /* : NativeFile */;
6201 val* var1 /* : NativeFile */;
6202 val* var2 /* : NativeFile */;
6203 var1 = core__file___new_NativeFile_io_open_read___impl(p0);
6204 var2 = BOX_core__Pointer(var1); /* boxing NativeFile */
6205 var2->type = &type_core__file__NativeFile;
6206 var2->class = &class_core__file__NativeFile;
6207 var = var2;
6208 goto RET_LABEL;
6209 RET_LABEL:;
6210 return var;
6211 }
6212 /* method file$NativeFile$io_open_write for (self: NativeFile, CString): NativeFile */
6213 val* core__file___core__file__NativeFile___io_open_write(val* self, char* p0) {
6214 val* var /* : NativeFile */;
6215 val* var1 /* : NativeFile */;
6216 val* var2 /* : NativeFile */;
6217 var1 = core__file___new_NativeFile_io_open_write___impl(p0);
6218 var2 = BOX_core__Pointer(var1); /* boxing NativeFile */
6219 var2->type = &type_core__file__NativeFile;
6220 var2->class = &class_core__file__NativeFile;
6221 var = var2;
6222 goto RET_LABEL;
6223 RET_LABEL:;
6224 return var;
6225 }
6226 /* method file$NativeFile$native_stdin for (self: NativeFile): NativeFile */
6227 val* core__file___core__file__NativeFile___native_stdin(val* self) {
6228 val* var /* : NativeFile */;
6229 val* var1 /* : NativeFile */;
6230 val* var2 /* : NativeFile */;
6231 var1 = core__file___new_NativeFile_native_stdin___impl();
6232 var2 = BOX_core__Pointer(var1); /* boxing NativeFile */
6233 var2->type = &type_core__file__NativeFile;
6234 var2->class = &class_core__file__NativeFile;
6235 var = var2;
6236 goto RET_LABEL;
6237 RET_LABEL:;
6238 return var;
6239 }
6240 /* method file$NativeFile$native_stdout for (self: NativeFile): NativeFile */
6241 val* core__file___core__file__NativeFile___native_stdout(val* self) {
6242 val* var /* : NativeFile */;
6243 val* var1 /* : NativeFile */;
6244 val* var2 /* : NativeFile */;
6245 var1 = core__file___new_NativeFile_native_stdout___impl();
6246 var2 = BOX_core__Pointer(var1); /* boxing NativeFile */
6247 var2->type = &type_core__file__NativeFile;
6248 var2->class = &class_core__file__NativeFile;
6249 var = var2;
6250 goto RET_LABEL;
6251 RET_LABEL:;
6252 return var;
6253 }
6254 /* method file$NativeFile$native_stderr for (self: NativeFile): NativeFile */
6255 val* core__file___core__file__NativeFile___native_stderr(val* self) {
6256 val* var /* : NativeFile */;
6257 val* var1 /* : NativeFile */;
6258 val* var2 /* : NativeFile */;
6259 var1 = core__file___new_NativeFile_native_stderr___impl();
6260 var2 = BOX_core__Pointer(var1); /* boxing NativeFile */
6261 var2->type = &type_core__file__NativeFile;
6262 var2->class = &class_core__file__NativeFile;
6263 var = var2;
6264 goto RET_LABEL;
6265 RET_LABEL:;
6266 return var;
6267 }
6268 /* method file$NativeDir$opendir for (self: NativeDir, CString): NativeDir */
6269 val* core__file___core__file__NativeDir___opendir(val* self, char* p0) {
6270 val* var /* : NativeDir */;
6271 val* var1 /* : NativeDir */;
6272 val* var2 /* : NativeDir */;
6273 var1 = core__file___new_NativeDir_opendir___impl(p0);
6274 var2 = BOX_core__Pointer(var1); /* boxing NativeDir */
6275 var2->type = &type_core__file__NativeDir;
6276 var2->class = &class_core__file__NativeDir;
6277 var = var2;
6278 goto RET_LABEL;
6279 RET_LABEL:;
6280 return var;
6281 }
6282 /* method file$NativeDir$closedir for (self: NativeDir) */
6283 void core__file___core__file__NativeDir___closedir(val* self) {
6284 void* var /* : NativeDir for extern */;
6285 var = ((struct instance_core__Pointer*)self)->value; /* unboxing NativeDir */
6286 core__file___NativeDir_closedir___impl(var);
6287 RET_LABEL:;
6288 }
6289 /* method file$NativeDir$readdir for (self: NativeDir): CString */
6290 char* core__file___core__file__NativeDir___readdir(val* self) {
6291 char* var /* : CString */;
6292 char* var1 /* : CString */;
6293 void* var2 /* : NativeDir for extern */;
6294 var2 = ((struct instance_core__Pointer*)self)->value; /* unboxing NativeDir */
6295 var1 = core__file___NativeDir_readdir___impl(var2);
6296 var = var1;
6297 goto RET_LABEL;
6298 RET_LABEL:;
6299 return var;
6300 }
6301 /* method file$Sys$stdout for (self: Sys): Writer */
6302 val* core__file___Sys___stdout(val* self) {
6303 val* var /* : Writer */;
6304 short int var1 /* : Bool */;
6305 val* var2 /* : Writer */;
6306 val* var3 /* : Stdout */;
6307 var1 = self->attrs[COLOR_core__file__Sys___stdout].val != NULL; /* _stdout on <self:Sys> */
6308 if(likely(var1)) {
6309 var2 = self->attrs[COLOR_core__file__Sys___stdout].val; /* _stdout on <self:Sys> */
6310 if (unlikely(var2 == NULL)) {
6311 if(catchStack.cursor >= 0){
6312 longjmp(catchStack.envs[catchStack.cursor], 1);
6313 }
6314 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stdout");
6315 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 1583);
6316 fatal_exit(1);
6317 }
6318 } else {
6319 var3 = NEW_core__Stdout(&type_core__Stdout);
6320 {
6321 core___core__Stdout___core__kernel__Object__init(var3); /* Direct call file$Stdout$init on <var3:Stdout>*/
6322 }
6323 self->attrs[COLOR_core__file__Sys___stdout].val = var3; /* _stdout on <self:Sys> */
6324 var2 = var3;
6325 }
6326 var = var2;
6327 RET_LABEL:;
6328 return var;
6329 }
6330 /* method file$Sys$stderr for (self: Sys): Writer */
6331 val* core__file___Sys___stderr(val* self) {
6332 val* var /* : Writer */;
6333 short int var1 /* : Bool */;
6334 val* var2 /* : Writer */;
6335 val* var3 /* : Stderr */;
6336 var1 = self->attrs[COLOR_core__file__Sys___stderr].val != NULL; /* _stderr on <self:Sys> */
6337 if(likely(var1)) {
6338 var2 = self->attrs[COLOR_core__file__Sys___stderr].val; /* _stderr on <self:Sys> */
6339 if (unlikely(var2 == NULL)) {
6340 if(catchStack.cursor >= 0){
6341 longjmp(catchStack.envs[catchStack.cursor], 1);
6342 }
6343 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stderr");
6344 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 1586);
6345 fatal_exit(1);
6346 }
6347 } else {
6348 var3 = NEW_core__Stderr(&type_core__Stderr);
6349 {
6350 core___core__Stderr___core__kernel__Object__init(var3); /* Direct call file$Stderr$init on <var3:Stderr>*/
6351 }
6352 self->attrs[COLOR_core__file__Sys___stderr].val = var3; /* _stderr on <self:Sys> */
6353 var2 = var3;
6354 }
6355 var = var2;
6356 RET_LABEL:;
6357 return var;
6358 }
6359 /* method file$Sys$buffer_mode_line for (self: Sys): Int */
6360 long core__file___Sys___buffer_mode_line(val* self) {
6361 long var /* : Int */;
6362 long var1 /* : Int */;
6363 struct nitni_instance* var_for_c_0;
6364 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
6365 var_for_c_0->value = self;
6366 var1 = core__file___Sys_buffer_mode_line___impl(var_for_c_0);
6367 var = var1;
6368 goto RET_LABEL;
6369 RET_LABEL:;
6370 return var;
6371 }
6372 /* method file$Sys$printn for (self: Sys, Array[Object]) */
6373 void core__file___Sys___printn(val* self, val* p0) {
6374 val* var_objects /* var objects: Array[Object] */;
6375 val* var /* : Sys */;
6376 val* var2 /* : Sys */;
6377 val* var3 /* : Writer */;
6378 val* var4 /* : String */;
6379 var_objects = p0;
6380 {
6381 { /* Inline kernel$Object$sys (self) on <self:Sys> */
6382 var2 = glob_sys;
6383 var = var2;
6384 goto RET_LABEL1;
6385 RET_LABEL1:(void)0;
6386 }
6387 }
6388 {
6389 var3 = core__file___Sys___stdout(var);
6390 }
6391 {
6392 var4 = core__flat___Array___core__abstract_text__Collection__plain_to_s(var_objects);
6393 }
6394 {
6395 core___core__FileWriter___core__stream__Writer__write(var3, var4); /* Direct call file$FileWriter$write on <var3:Writer>*/
6396 }
6397 RET_LABEL:;
6398 }
6399 /* method file$Sys$print for (self: Sys, Object) */
6400 void core__file___Sys___print(val* self, val* p0) {
6401 val* var_object /* var object: Object */;
6402 val* var /* : Sys */;
6403 val* var2 /* : Sys */;
6404 val* var3 /* : Writer */;
6405 val* var4 /* : String */;
6406 val* var5 /* : Sys */;
6407 val* var7 /* : Sys */;
6408 val* var8 /* : Writer */;
6409 static val* varonce;
6410 val* var9 /* : String */;
6411 char* var10 /* : CString */;
6412 val* var11 /* : String */;
6413 val* var12 /* : nullable Int */;
6414 val* var13 /* : nullable Int */;
6415 val* var14 /* : nullable Bool */;
6416 val* var15 /* : nullable Bool */;
6417 var_object = p0;
6418 {
6419 { /* Inline kernel$Object$sys (self) on <self:Sys> */
6420 var2 = glob_sys;
6421 var = var2;
6422 goto RET_LABEL1;
6423 RET_LABEL1:(void)0;
6424 }
6425 }
6426 {
6427 var3 = core__file___Sys___stdout(var);
6428 }
6429 {
6430 var4 = ((val*(*)(val* self))((((long)var_object&3)?class_info[((long)var_object&3)]:var_object->class)->vft[COLOR_core__abstract_text__Object__to_s]))(var_object); /* to_s on <var_object:Object>*/
6431 }
6432 {
6433 core___core__FileWriter___core__stream__Writer__write(var3, var4); /* Direct call file$FileWriter$write on <var3:Writer>*/
6434 }
6435 {
6436 { /* Inline kernel$Object$sys (self) on <self:Sys> */
6437 var7 = glob_sys;
6438 var5 = var7;
6439 goto RET_LABEL6;
6440 RET_LABEL6:(void)0;
6441 }
6442 }
6443 {
6444 var8 = core__file___Sys___stdout(var5);
6445 }
6446 if (likely(varonce!=NULL)) {
6447 var9 = varonce;
6448 } else {
6449 var10 = "\n";
6450 var12 = (val*)(1l<<2|1);
6451 var13 = (val*)(1l<<2|1);
6452 var14 = (val*)((long)(0)<<2|3);
6453 var15 = (val*)((long)(0)<<2|3);
6454 var11 = core__flat___CString___to_s_unsafe(var10, var12, var13, var14, var15);
6455 var9 = var11;
6456 varonce = var9;
6457 }
6458 {
6459 core___core__FileWriter___core__stream__Writer__write(var8, var9); /* Direct call file$FileWriter$write on <var8:Writer>*/
6460 }
6461 RET_LABEL:;
6462 }
6463 /* method file$Sys$print_error for (self: Sys, Object) */
6464 void core__file___Sys___print_error(val* self, val* p0) {
6465 val* var_object /* var object: Object */;
6466 val* var /* : Sys */;
6467 val* var2 /* : Sys */;
6468 val* var3 /* : Writer */;
6469 val* var4 /* : String */;
6470 val* var5 /* : Sys */;
6471 val* var7 /* : Sys */;
6472 val* var8 /* : Writer */;
6473 static val* varonce;
6474 val* var9 /* : String */;
6475 char* var10 /* : CString */;
6476 val* var11 /* : String */;
6477 val* var12 /* : nullable Int */;
6478 val* var13 /* : nullable Int */;
6479 val* var14 /* : nullable Bool */;
6480 val* var15 /* : nullable Bool */;
6481 var_object = p0;
6482 {
6483 { /* Inline kernel$Object$sys (self) on <self:Sys> */
6484 var2 = glob_sys;
6485 var = var2;
6486 goto RET_LABEL1;
6487 RET_LABEL1:(void)0;
6488 }
6489 }
6490 {
6491 var3 = core__file___Sys___stderr(var);
6492 }
6493 {
6494 var4 = ((val*(*)(val* self))((((long)var_object&3)?class_info[((long)var_object&3)]:var_object->class)->vft[COLOR_core__abstract_text__Object__to_s]))(var_object); /* to_s on <var_object:Object>*/
6495 }
6496 {
6497 core___core__FileWriter___core__stream__Writer__write(var3, var4); /* Direct call file$FileWriter$write on <var3:Writer>*/
6498 }
6499 {
6500 { /* Inline kernel$Object$sys (self) on <self:Sys> */
6501 var7 = glob_sys;
6502 var5 = var7;
6503 goto RET_LABEL6;
6504 RET_LABEL6:(void)0;
6505 }
6506 }
6507 {
6508 var8 = core__file___Sys___stderr(var5);
6509 }
6510 if (likely(varonce!=NULL)) {
6511 var9 = varonce;
6512 } else {
6513 var10 = "\n";
6514 var12 = (val*)(1l<<2|1);
6515 var13 = (val*)(1l<<2|1);
6516 var14 = (val*)((long)(0)<<2|3);
6517 var15 = (val*)((long)(0)<<2|3);
6518 var11 = core__flat___CString___to_s_unsafe(var10, var12, var13, var14, var15);
6519 var9 = var11;
6520 varonce = var9;
6521 }
6522 {
6523 core___core__FileWriter___core__stream__Writer__write(var8, var9); /* Direct call file$FileWriter$write on <var8:Writer>*/
6524 }
6525 RET_LABEL:;
6526 }
6527 /* method file$Sys$getcwd for (self: Sys): String */
6528 val* core__file___Sys___getcwd(val* self) {
6529 val* var /* : String */;
6530 char* var1 /* : CString */;
6531 char* var3 /* : CString */;
6532 val* var4 /* : String */;
6533 {
6534 { /* Inline file$Sys$native_getcwd (self) on <self:Sys> */
6535 struct nitni_instance* var_for_c_0;
6536 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
6537 var_for_c_0->value = self;
6538 var3 = core__file___Sys_native_getcwd___impl(var_for_c_0);
6539 var1 = var3;
6540 goto RET_LABEL2;
6541 RET_LABEL2:(void)0;
6542 }
6543 }
6544 {
6545 var4 = core__flat___CString___core__abstract_text__Object__to_s(var1);
6546 }
6547 var = var4;
6548 goto RET_LABEL;
6549 RET_LABEL:;
6550 return var;
6551 }
6552 /* method file$Sys$native_getcwd for (self: Sys): CString */
6553 char* core__file___Sys___native_getcwd(val* self) {
6554 char* var /* : CString */;
6555 char* var1 /* : CString */;
6556 struct nitni_instance* var_for_c_0;
6557 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
6558 var_for_c_0->value = self;
6559 var1 = core__file___Sys_native_getcwd___impl(var_for_c_0);
6560 var = var1;
6561 goto RET_LABEL;
6562 RET_LABEL:;
6563 return var;
6564 }