NOTICE: Update author list and years
[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 short int var1 /* : Bool */;
20 short int var2 /* : Bool */;
21 val* var_other /* var other: nullable Object */;
22 short int var4 /* : Bool */;
23 short int var6 /* : Bool */;
24 val* var7 /* : nullable NativeFile */;
25 short int var8 /* : Bool */;
26 short int var10 /* : Bool */;
27 void* var11 /* : Pointer for extern */;
28 val* var12 /* : nullable IOError */;
29 val* var14 /* : nullable IOError */;
30 short int var15 /* : Bool */;
31 short int var16 /* : Bool */;
32 val* var_other18 /* var other: nullable Object */;
33 short int var19 /* : Bool */;
34 short int var20 /* : Bool */;
35 val* var21 /* : IOError */;
36 static val* varonce;
37 val* var22 /* : String */;
38 char* var23 /* : NativeString */;
39 val* var24 /* : String */;
40 val* var26 /* : nullable NativeFile */;
41 long var27 /* : Int */;
42 long var29 /* : Int */;
43 void* var30 /* : NativeFile for extern */;
44 long var_i /* var i: Int */;
45 short int var31 /* : Bool */;
46 short int var33 /* : Bool */;
47 short int var34 /* : Bool */;
48 val* var35 /* : IOError */;
49 val* var37 /* : NativeArray[String] */;
50 static val* varonce36;
51 static val* varonce38;
52 val* var39 /* : String */;
53 char* var40 /* : NativeString */;
54 val* var41 /* : String */;
55 val* var42 /* : Sys */;
56 val* var44 /* : Sys */;
57 long var45 /* : Int */;
58 long var47 /* : Int */;
59 val* var48 /* : String */;
60 val* var49 /* : String */;
61 var = self->attrs[COLOR_core__file__FileStream___file].val; /* _file on <self:FileStream> */
62 if (var == NULL) {
63 var1 = 1; /* is null */
64 } else {
65 var1 = 0; /* arg is null but recv is not */
66 }
67 if (0) {
68 { /* Inline kernel#Object#== (var,((val*)NULL)) on <var:nullable NativeFile> */
69 var_other = ((val*)NULL);
70 {
71 { /* Inline kernel#Object#is_same_instance (var,var_other) on <var:nullable NativeFile(NativeFile)> */
72 var6 = var == var_other;
73 var4 = var6;
74 goto RET_LABEL5;
75 RET_LABEL5:(void)0;
76 }
77 }
78 var2 = var4;
79 goto RET_LABEL3;
80 RET_LABEL3:(void)0;
81 }
82 var1 = var2;
83 }
84 if (var1){
85 goto RET_LABEL;
86 } else {
87 }
88 var7 = self->attrs[COLOR_core__file__FileStream___file].val; /* _file on <self:FileStream> */
89 if (var7 == NULL) {
90 PRINT_ERROR("Runtime error: %s", "Receiver is null");
91 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 63);
92 fatal_exit(1);
93 } else {
94 { /* Inline kernel#Pointer#address_is_null (var7) on <var7:nullable NativeFile> */
95 var11 = ((struct instance_core__Pointer*)var7)->value; /* unboxing nullable NativeFile */
96 var10 = kernel___Pointer_address_is_null___impl(var11);
97 var8 = var10;
98 goto RET_LABEL9;
99 RET_LABEL9:(void)0;
100 }
101 }
102 if (var8){
103 {
104 { /* Inline stream#Stream#last_error (self) on <self:FileStream> */
105 var14 = self->attrs[COLOR_core__stream__Stream___last_error].val; /* _last_error on <self:FileStream> */
106 var12 = var14;
107 RET_LABEL13:(void)0;
108 }
109 }
110 if (var12 == NULL) {
111 var15 = 0; /* is null */
112 } else {
113 var15 = 1; /* arg is null and recv is not */
114 }
115 if (0) {
116 { /* Inline kernel#Object#!= (var12,((val*)NULL)) on <var12:nullable IOError> */
117 var_other18 = ((val*)NULL);
118 {
119 var19 = ((short int(*)(val* self, val* p0))(var12->class->vft[COLOR_core__kernel__Object___61d_61d]))(var12, var_other18); /* == on <var12:nullable IOError(IOError)>*/
120 }
121 var20 = !var19;
122 var16 = var20;
123 goto RET_LABEL17;
124 RET_LABEL17:(void)0;
125 }
126 var15 = var16;
127 }
128 if (var15){
129 goto RET_LABEL;
130 } else {
131 }
132 var21 = NEW_core__IOError(&type_core__IOError);
133 if (likely(varonce!=NULL)) {
134 var22 = varonce;
135 } else {
136 var23 = "Cannot close unopened file";
137 var24 = core__flat___NativeString___to_s_full(var23, 26l, 26l);
138 var22 = var24;
139 varonce = var22;
140 }
141 {
142 ((void(*)(val* self, val* p0))(var21->class->vft[COLOR_core__error__Error__message_61d]))(var21, var22); /* message= on <var21:IOError>*/
143 }
144 {
145 ((void(*)(val* self))(var21->class->vft[COLOR_core__kernel__Object__init]))(var21); /* init on <var21:IOError>*/
146 }
147 {
148 { /* Inline stream#Stream#last_error= (self,var21) on <self:FileStream> */
149 self->attrs[COLOR_core__stream__Stream___last_error].val = var21; /* _last_error on <self:FileStream> */
150 RET_LABEL25:(void)0;
151 }
152 }
153 goto RET_LABEL;
154 } else {
155 }
156 var26 = self->attrs[COLOR_core__file__FileStream___file].val; /* _file on <self:FileStream> */
157 if (var26 == NULL) {
158 PRINT_ERROR("Runtime error: %s", "Receiver is null");
159 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 68);
160 fatal_exit(1);
161 } else {
162 { /* Inline file#NativeFile#io_close (var26) on <var26:nullable NativeFile> */
163 var30 = ((struct instance_core__Pointer*)var26)->value; /* unboxing nullable NativeFile */
164 var29 = file___NativeFile_io_close___impl(var30);
165 var27 = var29;
166 goto RET_LABEL28;
167 RET_LABEL28:(void)0;
168 }
169 }
170 var_i = var27;
171 {
172 { /* Inline kernel#Int#!= (var_i,0l) on <var_i:Int> */
173 var33 = var_i == 0l;
174 var34 = !var33;
175 var31 = var34;
176 goto RET_LABEL32;
177 RET_LABEL32:(void)0;
178 }
179 }
180 if (var31){
181 var35 = NEW_core__IOError(&type_core__IOError);
182 if (unlikely(varonce36==NULL)) {
183 var37 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
184 if (likely(varonce38!=NULL)) {
185 var39 = varonce38;
186 } else {
187 var40 = "Close failed due to error ";
188 var41 = core__flat___NativeString___to_s_full(var40, 26l, 26l);
189 var39 = var41;
190 varonce38 = var39;
191 }
192 ((struct instance_core__NativeArray*)var37)->values[0]=var39;
193 } else {
194 var37 = varonce36;
195 varonce36 = NULL;
196 }
197 {
198 { /* Inline kernel#Object#sys (self) on <self:FileStream> */
199 var44 = glob_sys;
200 var42 = var44;
201 goto RET_LABEL43;
202 RET_LABEL43:(void)0;
203 }
204 }
205 {
206 { /* Inline kernel#Sys#errno (var42) on <var42:Sys> */
207 struct nitni_instance* var_for_c_0;
208 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
209 var_for_c_0->value = var42;
210 var47 = kernel___Sys_errno___impl(var_for_c_0);
211 var45 = var47;
212 goto RET_LABEL46;
213 RET_LABEL46:(void)0;
214 }
215 }
216 {
217 var48 = core__abstract_text___Int___strerror(var45);
218 }
219 ((struct instance_core__NativeArray*)var37)->values[1]=var48;
220 {
221 var49 = ((val*(*)(val* self))(var37->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var37); /* native_to_s on <var37:NativeArray[String]>*/
222 }
223 varonce36 = var37;
224 {
225 ((void(*)(val* self, val* p0))(var35->class->vft[COLOR_core__error__Error__message_61d]))(var35, var49); /* message= on <var35:IOError>*/
226 }
227 {
228 ((void(*)(val* self))(var35->class->vft[COLOR_core__kernel__Object__init]))(var35); /* init on <var35:IOError>*/
229 }
230 {
231 { /* Inline stream#Stream#last_error= (self,var35) on <self:FileStream> */
232 self->attrs[COLOR_core__stream__Stream___last_error].val = var35; /* _last_error on <self:FileStream> */
233 RET_LABEL50:(void)0;
234 }
235 }
236 } else {
237 }
238 self->attrs[COLOR_core__file__FileStream___file].val = ((val*)NULL); /* _file on <self:FileStream> */
239 RET_LABEL:;
240 }
241 /* method file#FileStream#set_buffering_mode for (self: FileStream, Int, Int) */
242 void core___core__FileStream___set_buffering_mode(val* self, long p0, long p1) {
243 long var_buf_size /* var buf_size: Int */;
244 long var_mode /* var mode: Int */;
245 short int var /* : Bool */;
246 short int var2 /* : Bool */;
247 int cltype;
248 int idtype;
249 const char* var_class_name;
250 short int var3 /* : Bool */;
251 val* var4 /* : nullable NativeFile */;
252 long var5 /* : Int */;
253 long var7 /* : Int */;
254 void* var8 /* : NativeFile for extern */;
255 short int var9 /* : Bool */;
256 short int var11 /* : Bool */;
257 short int var12 /* : Bool */;
258 val* var13 /* : IOError */;
259 val* var14 /* : NativeArray[String] */;
260 static val* varonce;
261 static val* varonce15;
262 val* var16 /* : String */;
263 char* var17 /* : NativeString */;
264 val* var18 /* : String */;
265 val* var19 /* : Sys */;
266 val* var21 /* : Sys */;
267 long var22 /* : Int */;
268 long var24 /* : Int */;
269 val* var25 /* : String */;
270 val* var26 /* : String */;
271 var_buf_size = p0;
272 var_mode = p1;
273 {
274 { /* Inline kernel#Int#<= (var_buf_size,0l) on <var_buf_size:Int> */
275 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
276 /* <0l:Int> isa OTHER */
277 var2 = 1; /* easy <0l:Int> isa OTHER*/
278 if (unlikely(!var2)) {
279 var_class_name = type_core__Int.name;
280 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
281 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
282 fatal_exit(1);
283 }
284 var3 = var_buf_size <= 0l;
285 var = var3;
286 goto RET_LABEL1;
287 RET_LABEL1:(void)0;
288 }
289 }
290 if (var){
291 var_buf_size = 512l;
292 } else {
293 }
294 var4 = self->attrs[COLOR_core__file__FileStream___file].val; /* _file on <self:FileStream> */
295 if (var4 == NULL) {
296 PRINT_ERROR("Runtime error: %s", "Receiver is null");
297 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 86);
298 fatal_exit(1);
299 } else {
300 { /* Inline file#NativeFile#set_buffering_type (var4,var_buf_size,var_mode) on <var4:nullable NativeFile> */
301 var8 = ((struct instance_core__Pointer*)var4)->value; /* unboxing nullable NativeFile */
302 var7 = file___NativeFile_set_buffering_type___impl(var8, var_buf_size, var_mode);
303 var5 = var7;
304 goto RET_LABEL6;
305 RET_LABEL6:(void)0;
306 }
307 }
308 {
309 { /* Inline kernel#Int#!= (var5,0l) on <var5:Int> */
310 var11 = var5 == 0l;
311 var12 = !var11;
312 var9 = var12;
313 goto RET_LABEL10;
314 RET_LABEL10:(void)0;
315 }
316 }
317 if (var9){
318 var13 = NEW_core__IOError(&type_core__IOError);
319 if (unlikely(varonce==NULL)) {
320 var14 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
321 if (likely(varonce15!=NULL)) {
322 var16 = varonce15;
323 } else {
324 var17 = "Error while changing buffering type for FileStream, returned error ";
325 var18 = core__flat___NativeString___to_s_full(var17, 67l, 67l);
326 var16 = var18;
327 varonce15 = var16;
328 }
329 ((struct instance_core__NativeArray*)var14)->values[0]=var16;
330 } else {
331 var14 = varonce;
332 varonce = NULL;
333 }
334 {
335 { /* Inline kernel#Object#sys (self) on <self:FileStream> */
336 var21 = glob_sys;
337 var19 = var21;
338 goto RET_LABEL20;
339 RET_LABEL20:(void)0;
340 }
341 }
342 {
343 { /* Inline kernel#Sys#errno (var19) on <var19:Sys> */
344 struct nitni_instance* var_for_c_0;
345 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
346 var_for_c_0->value = var19;
347 var24 = kernel___Sys_errno___impl(var_for_c_0);
348 var22 = var24;
349 goto RET_LABEL23;
350 RET_LABEL23:(void)0;
351 }
352 }
353 {
354 var25 = core__abstract_text___Int___strerror(var22);
355 }
356 ((struct instance_core__NativeArray*)var14)->values[1]=var25;
357 {
358 var26 = ((val*(*)(val* self))(var14->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var14); /* native_to_s on <var14:NativeArray[String]>*/
359 }
360 varonce = var14;
361 {
362 ((void(*)(val* self, val* p0))(var13->class->vft[COLOR_core__error__Error__message_61d]))(var13, var26); /* message= on <var13:IOError>*/
363 }
364 {
365 ((void(*)(val* self))(var13->class->vft[COLOR_core__kernel__Object__init]))(var13); /* init on <var13:IOError>*/
366 }
367 {
368 { /* Inline stream#Stream#last_error= (self,var13) on <self:FileStream> */
369 self->attrs[COLOR_core__stream__Stream___last_error].val = var13; /* _last_error on <self:FileStream> */
370 RET_LABEL27:(void)0;
371 }
372 }
373 } else {
374 }
375 RET_LABEL:;
376 }
377 /* method file#FileReader#close for (self: FileReader) */
378 void core___core__FileReader___core__stream__Stream__close(val* self) {
379 {
380 ((void(*)(val* self))(self->class->vft[COLOR_core___core__FileReader___core__stream__Stream__close]))(self); /* close on <self:FileReader>*/
381 }
382 {
383 core___core__BufferedReader___buffer_reset(self); /* Direct call stream#BufferedReader#buffer_reset on <self:FileReader>*/
384 }
385 {
386 { /* Inline file#FileReader#end_reached= (self,1) on <self:FileReader> */
387 self->attrs[COLOR_core__file__FileReader___end_reached].s = 1; /* _end_reached on <self:FileReader> */
388 RET_LABEL1:(void)0;
389 }
390 }
391 RET_LABEL:;
392 }
393 /* method file#FileReader#fill_buffer for (self: FileReader) */
394 void core___core__FileReader___core__stream__BufferedReader__fill_buffer(val* self) {
395 val* var /* : nullable NativeFile */;
396 char* var1 /* : NativeString */;
397 long var2 /* : Int */;
398 long var3 /* : Int */;
399 long var5 /* : Int */;
400 void* var6 /* : NativeFile for extern */;
401 long var_nb /* var nb: Int */;
402 short int var7 /* : Bool */;
403 val* var8 /* : nullable IOError */;
404 val* var10 /* : nullable IOError */;
405 short int var11 /* : Bool */;
406 short int var12 /* : Bool */;
407 val* var_other /* var other: nullable Object */;
408 short int var14 /* : Bool */;
409 short int var16 /* : Bool */;
410 short int var_ /* var : Bool */;
411 val* var17 /* : nullable NativeFile */;
412 short int var18 /* : Bool */;
413 short int var20 /* : Bool */;
414 void* var21 /* : NativeFile for extern */;
415 val* var22 /* : IOError */;
416 val* var23 /* : NativeArray[String] */;
417 static val* varonce;
418 static val* varonce24;
419 val* var25 /* : String */;
420 char* var26 /* : NativeString */;
421 val* var27 /* : String */;
422 static val* varonce28;
423 val* var29 /* : String */;
424 char* var30 /* : NativeString */;
425 val* var31 /* : String */;
426 val* var32 /* : nullable String */;
427 val* var34 /* : nullable String */;
428 val* var35 /* : Sys */;
429 val* var37 /* : Sys */;
430 long var38 /* : Int */;
431 long var40 /* : Int */;
432 val* var41 /* : String */;
433 val* var42 /* : String */;
434 short int var45 /* : Bool */;
435 short int var47 /* : Bool */;
436 int cltype;
437 int idtype;
438 const char* var_class_name;
439 short int var48 /* : Bool */;
440 var = self->attrs[COLOR_core__file__FileStream___file].val; /* _file on <self:FileReader> */
441 var1 = self->attrs[COLOR_core__stream__BufferedReader___buffer].str; /* _buffer on <self:FileReader> */
442 var2 = self->attrs[COLOR_core__stream__BufferedReader___buffer_capacity].l; /* _buffer_capacity on <self:FileReader> */
443 if (var == NULL) {
444 PRINT_ERROR("Runtime error: %s", "Receiver is null");
445 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 129);
446 fatal_exit(1);
447 } else {
448 { /* Inline file#NativeFile#io_read (var,var1,var2) on <var:nullable NativeFile> */
449 var6 = ((struct instance_core__Pointer*)var)->value; /* unboxing nullable NativeFile */
450 var5 = file___NativeFile_io_read___impl(var6, var1, var2);
451 var3 = var5;
452 goto RET_LABEL4;
453 RET_LABEL4:(void)0;
454 }
455 }
456 var_nb = var3;
457 {
458 { /* Inline stream#Stream#last_error (self) on <self:FileReader> */
459 var10 = self->attrs[COLOR_core__stream__Stream___last_error].val; /* _last_error on <self:FileReader> */
460 var8 = var10;
461 RET_LABEL9:(void)0;
462 }
463 }
464 if (var8 == NULL) {
465 var11 = 1; /* is null */
466 } else {
467 var11 = 0; /* arg is null but recv is not */
468 }
469 if (0) {
470 { /* Inline kernel#Object#== (var8,((val*)NULL)) on <var8:nullable IOError> */
471 var_other = ((val*)NULL);
472 {
473 { /* Inline kernel#Object#is_same_instance (var8,var_other) on <var8:nullable IOError(IOError)> */
474 var16 = var8 == var_other;
475 var14 = var16;
476 goto RET_LABEL15;
477 RET_LABEL15:(void)0;
478 }
479 }
480 var12 = var14;
481 goto RET_LABEL13;
482 RET_LABEL13:(void)0;
483 }
484 var11 = var12;
485 }
486 var_ = var11;
487 if (var11){
488 var17 = self->attrs[COLOR_core__file__FileStream___file].val; /* _file on <self:FileReader> */
489 if (var17 == NULL) {
490 PRINT_ERROR("Runtime error: %s", "Receiver is null");
491 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 130);
492 fatal_exit(1);
493 } else {
494 { /* Inline file#NativeFile#ferror (var17) on <var17:nullable NativeFile> */
495 var21 = ((struct instance_core__Pointer*)var17)->value; /* unboxing nullable NativeFile */
496 var20 = file___NativeFile_ferror___impl(var21);
497 var18 = var20;
498 goto RET_LABEL19;
499 RET_LABEL19:(void)0;
500 }
501 }
502 var7 = var18;
503 } else {
504 var7 = var_;
505 }
506 if (var7){
507 var22 = NEW_core__IOError(&type_core__IOError);
508 if (unlikely(varonce==NULL)) {
509 var23 = NEW_core__NativeArray(4l, &type_core__NativeArray__core__String);
510 if (likely(varonce24!=NULL)) {
511 var25 = varonce24;
512 } else {
513 var26 = "Cannot read `";
514 var27 = core__flat___NativeString___to_s_full(var26, 13l, 13l);
515 var25 = var27;
516 varonce24 = var25;
517 }
518 ((struct instance_core__NativeArray*)var23)->values[0]=var25;
519 if (likely(varonce28!=NULL)) {
520 var29 = varonce28;
521 } else {
522 var30 = "`: ";
523 var31 = core__flat___NativeString___to_s_full(var30, 3l, 3l);
524 var29 = var31;
525 varonce28 = var29;
526 }
527 ((struct instance_core__NativeArray*)var23)->values[2]=var29;
528 } else {
529 var23 = varonce;
530 varonce = NULL;
531 }
532 {
533 { /* Inline file#FileStream#path (self) on <self:FileReader> */
534 var34 = self->attrs[COLOR_core__file__FileStream___path].val; /* _path on <self:FileReader> */
535 var32 = var34;
536 RET_LABEL33:(void)0;
537 }
538 }
539 if (unlikely(var32 == NULL)) {
540 PRINT_ERROR("Runtime error: %s", "Cast failed");
541 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 131);
542 fatal_exit(1);
543 }
544 ((struct instance_core__NativeArray*)var23)->values[1]=var32;
545 {
546 { /* Inline kernel#Object#sys (self) on <self:FileReader> */
547 var37 = glob_sys;
548 var35 = var37;
549 goto RET_LABEL36;
550 RET_LABEL36:(void)0;
551 }
552 }
553 {
554 { /* Inline kernel#Sys#errno (var35) on <var35:Sys> */
555 struct nitni_instance* var_for_c_0;
556 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
557 var_for_c_0->value = var35;
558 var40 = kernel___Sys_errno___impl(var_for_c_0);
559 var38 = var40;
560 goto RET_LABEL39;
561 RET_LABEL39:(void)0;
562 }
563 }
564 {
565 var41 = core__abstract_text___Int___strerror(var38);
566 }
567 ((struct instance_core__NativeArray*)var23)->values[3]=var41;
568 {
569 var42 = ((val*(*)(val* self))(var23->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var23); /* native_to_s on <var23:NativeArray[String]>*/
570 }
571 varonce = var23;
572 {
573 ((void(*)(val* self, val* p0))(var22->class->vft[COLOR_core__error__Error__message_61d]))(var22, var42); /* message= on <var22:IOError>*/
574 }
575 {
576 ((void(*)(val* self))(var22->class->vft[COLOR_core__kernel__Object__init]))(var22); /* init on <var22:IOError>*/
577 }
578 {
579 { /* Inline stream#Stream#last_error= (self,var22) on <self:FileReader> */
580 self->attrs[COLOR_core__stream__Stream___last_error].val = var22; /* _last_error on <self:FileReader> */
581 RET_LABEL43:(void)0;
582 }
583 }
584 {
585 { /* Inline file#FileReader#end_reached= (self,1) on <self:FileReader> */
586 self->attrs[COLOR_core__file__FileReader___end_reached].s = 1; /* _end_reached on <self:FileReader> */
587 RET_LABEL44:(void)0;
588 }
589 }
590 } else {
591 }
592 {
593 { /* Inline kernel#Int#<= (var_nb,0l) on <var_nb:Int> */
594 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
595 /* <0l:Int> isa OTHER */
596 var47 = 1; /* easy <0l:Int> isa OTHER*/
597 if (unlikely(!var47)) {
598 var_class_name = type_core__Int.name;
599 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
600 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
601 fatal_exit(1);
602 }
603 var48 = var_nb <= 0l;
604 var45 = var48;
605 goto RET_LABEL46;
606 RET_LABEL46:(void)0;
607 }
608 }
609 if (var45){
610 {
611 { /* Inline file#FileReader#end_reached= (self,1) on <self:FileReader> */
612 self->attrs[COLOR_core__file__FileReader___end_reached].s = 1; /* _end_reached on <self:FileReader> */
613 RET_LABEL49:(void)0;
614 }
615 }
616 var_nb = 0l;
617 } else {
618 }
619 self->attrs[COLOR_core__stream__BufferedReader___buffer_length].l = var_nb; /* _buffer_length on <self:FileReader> */
620 self->attrs[COLOR_core__stream__BufferedReader___buffer_pos].l = 0l; /* _buffer_pos on <self:FileReader> */
621 RET_LABEL:;
622 }
623 /* method file#FileReader#end_reached for (self: FileReader): Bool */
624 short int core___core__FileReader___core__stream__BufferedReader__end_reached(val* self) {
625 short int var /* : Bool */;
626 short int var1 /* : Bool */;
627 var1 = self->attrs[COLOR_core__file__FileReader___end_reached].s; /* _end_reached on <self:FileReader> */
628 var = var1;
629 RET_LABEL:;
630 return var;
631 }
632 /* method file#FileReader#end_reached= for (self: FileReader, Bool) */
633 void core___core__FileReader___end_reached_61d(val* self, short int p0) {
634 self->attrs[COLOR_core__file__FileReader___end_reached].s = p0; /* _end_reached on <self:FileReader> */
635 RET_LABEL:;
636 }
637 /* method file#FileReader#open for (self: FileReader, String) */
638 void core___core__FileReader___open(val* self, val* p0) {
639 val* var_path /* var path: String */;
640 val* var /* : NativeFile */;
641 char* var2 /* : NativeString */;
642 val* var3 /* : NativeFile */;
643 val* var4 /* : nullable NativeFile */;
644 short int var5 /* : Bool */;
645 short int var7 /* : Bool */;
646 void* var8 /* : Pointer for extern */;
647 val* var9 /* : IOError */;
648 val* var10 /* : NativeArray[String] */;
649 static val* varonce;
650 static val* varonce11;
651 val* var12 /* : String */;
652 char* var13 /* : NativeString */;
653 val* var14 /* : String */;
654 static val* varonce15;
655 val* var16 /* : String */;
656 char* var17 /* : NativeString */;
657 val* var18 /* : String */;
658 val* var19 /* : Sys */;
659 val* var21 /* : Sys */;
660 long var22 /* : Int */;
661 long var24 /* : Int */;
662 val* var25 /* : String */;
663 val* var26 /* : String */;
664 {
665 ((void(*)(val* self))(self->class->vft[COLOR_core__kernel__Object__init]))(self); /* init on <self:FileReader>*/
666 }
667 var_path = p0;
668 {
669 { /* Inline file#FileStream#path= (self,var_path) on <self:FileReader> */
670 self->attrs[COLOR_core__file__FileStream___path].val = var_path; /* _path on <self:FileReader> */
671 RET_LABEL1:(void)0;
672 }
673 }
674 {
675 core___core__BufferedReader___prepare_buffer(self, 100l); /* Direct call stream#BufferedReader#prepare_buffer on <self:FileReader>*/
676 }
677 var = NEW_core__file__NativeFile(&type_core__file__NativeFile);
678 {
679 var2 = ((char*(*)(val* self))(var_path->class->vft[COLOR_core__abstract_text__Text__to_cstring]))(var_path); /* to_cstring on <var_path:String>*/
680 }
681 {
682 var3 = core__file___core__file__NativeFile___io_open_read(var, var2);
683 }
684 self->attrs[COLOR_core__file__FileStream___file].val = var3; /* _file on <self:FileReader> */
685 var4 = self->attrs[COLOR_core__file__FileStream___file].val; /* _file on <self:FileReader> */
686 if (var4 == NULL) {
687 PRINT_ERROR("Runtime error: %s", "Receiver is null");
688 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 161);
689 fatal_exit(1);
690 } else {
691 { /* Inline kernel#Pointer#address_is_null (var4) on <var4:nullable NativeFile> */
692 var8 = ((struct instance_core__Pointer*)var4)->value; /* unboxing nullable NativeFile */
693 var7 = kernel___Pointer_address_is_null___impl(var8);
694 var5 = var7;
695 goto RET_LABEL6;
696 RET_LABEL6:(void)0;
697 }
698 }
699 if (var5){
700 var9 = NEW_core__IOError(&type_core__IOError);
701 if (unlikely(varonce==NULL)) {
702 var10 = NEW_core__NativeArray(4l, &type_core__NativeArray__core__String);
703 if (likely(varonce11!=NULL)) {
704 var12 = varonce11;
705 } else {
706 var13 = "Cannot open `";
707 var14 = core__flat___NativeString___to_s_full(var13, 13l, 13l);
708 var12 = var14;
709 varonce11 = var12;
710 }
711 ((struct instance_core__NativeArray*)var10)->values[0]=var12;
712 if (likely(varonce15!=NULL)) {
713 var16 = varonce15;
714 } else {
715 var17 = "`: ";
716 var18 = core__flat___NativeString___to_s_full(var17, 3l, 3l);
717 var16 = var18;
718 varonce15 = var16;
719 }
720 ((struct instance_core__NativeArray*)var10)->values[2]=var16;
721 } else {
722 var10 = varonce;
723 varonce = NULL;
724 }
725 ((struct instance_core__NativeArray*)var10)->values[1]=var_path;
726 {
727 { /* Inline kernel#Object#sys (self) on <self:FileReader> */
728 var21 = glob_sys;
729 var19 = var21;
730 goto RET_LABEL20;
731 RET_LABEL20:(void)0;
732 }
733 }
734 {
735 { /* Inline kernel#Sys#errno (var19) on <var19:Sys> */
736 struct nitni_instance* var_for_c_0;
737 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
738 var_for_c_0->value = var19;
739 var24 = kernel___Sys_errno___impl(var_for_c_0);
740 var22 = var24;
741 goto RET_LABEL23;
742 RET_LABEL23:(void)0;
743 }
744 }
745 {
746 var25 = core__abstract_text___Int___strerror(var22);
747 }
748 ((struct instance_core__NativeArray*)var10)->values[3]=var25;
749 {
750 var26 = ((val*(*)(val* self))(var10->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var10); /* native_to_s on <var10:NativeArray[String]>*/
751 }
752 varonce = var10;
753 {
754 ((void(*)(val* self, val* p0))(var9->class->vft[COLOR_core__error__Error__message_61d]))(var9, var26); /* message= on <var9:IOError>*/
755 }
756 {
757 ((void(*)(val* self))(var9->class->vft[COLOR_core__kernel__Object__init]))(var9); /* init on <var9:IOError>*/
758 }
759 {
760 { /* Inline stream#Stream#last_error= (self,var9) on <self:FileReader> */
761 self->attrs[COLOR_core__stream__Stream___last_error].val = var9; /* _last_error on <self:FileReader> */
762 RET_LABEL27:(void)0;
763 }
764 }
765 {
766 { /* Inline file#FileReader#end_reached= (self,1) on <self:FileReader> */
767 self->attrs[COLOR_core__file__FileReader___end_reached].s = 1; /* _end_reached on <self:FileReader> */
768 RET_LABEL28:(void)0;
769 }
770 }
771 } else {
772 }
773 RET_LABEL:;
774 }
775 /* method file#FileWriter#write_bytes for (self: FileWriter, Bytes) */
776 void core___core__FileWriter___core__stream__Writer__write_bytes(val* self, val* p0) {
777 val* var_s /* var s: Bytes */;
778 val* var /* : nullable IOError */;
779 val* var2 /* : nullable IOError */;
780 short int var3 /* : Bool */;
781 short int var4 /* : Bool */;
782 val* var_other /* var other: nullable Object */;
783 short int var6 /* : Bool */;
784 short int var7 /* : Bool */;
785 short int var8 /* : Bool */;
786 short int var9 /* : Bool */;
787 val* var10 /* : IOError */;
788 static val* varonce;
789 val* var11 /* : String */;
790 char* var12 /* : NativeString */;
791 val* var13 /* : String */;
792 char* var15 /* : NativeString */;
793 char* var17 /* : NativeString */;
794 long var18 /* : Int */;
795 long var20 /* : Int */;
796 var_s = p0;
797 {
798 { /* Inline stream#Stream#last_error (self) on <self:FileWriter> */
799 var2 = self->attrs[COLOR_core__stream__Stream___last_error].val; /* _last_error on <self:FileWriter> */
800 var = var2;
801 RET_LABEL1:(void)0;
802 }
803 }
804 if (var == NULL) {
805 var3 = 0; /* is null */
806 } else {
807 var3 = 1; /* arg is null and recv is not */
808 }
809 if (0) {
810 { /* Inline kernel#Object#!= (var,((val*)NULL)) on <var:nullable IOError> */
811 var_other = ((val*)NULL);
812 {
813 var6 = ((short int(*)(val* self, val* p0))(var->class->vft[COLOR_core__kernel__Object___61d_61d]))(var, var_other); /* == on <var:nullable IOError(IOError)>*/
814 }
815 var7 = !var6;
816 var4 = var7;
817 goto RET_LABEL5;
818 RET_LABEL5:(void)0;
819 }
820 var3 = var4;
821 }
822 if (var3){
823 goto RET_LABEL;
824 } else {
825 }
826 var8 = self->attrs[COLOR_core__file__FileWriter___is_writable].s; /* _is_writable on <self:FileWriter> */
827 var9 = !var8;
828 if (var9){
829 var10 = NEW_core__IOError(&type_core__IOError);
830 if (likely(varonce!=NULL)) {
831 var11 = varonce;
832 } else {
833 var12 = "cannot write to non-writable stream";
834 var13 = core__flat___NativeString___to_s_full(var12, 35l, 35l);
835 var11 = var13;
836 varonce = var11;
837 }
838 {
839 ((void(*)(val* self, val* p0))(var10->class->vft[COLOR_core__error__Error__message_61d]))(var10, var11); /* message= on <var10:IOError>*/
840 }
841 {
842 ((void(*)(val* self))(var10->class->vft[COLOR_core__kernel__Object__init]))(var10); /* init on <var10:IOError>*/
843 }
844 {
845 { /* Inline stream#Stream#last_error= (self,var10) on <self:FileWriter> */
846 self->attrs[COLOR_core__stream__Stream___last_error].val = var10; /* _last_error on <self:FileWriter> */
847 RET_LABEL14:(void)0;
848 }
849 }
850 goto RET_LABEL;
851 } else {
852 }
853 {
854 { /* Inline bytes#Bytes#items (var_s) on <var_s:Bytes> */
855 var17 = var_s->attrs[COLOR_core__bytes__Bytes___items].str; /* _items on <var_s:Bytes> */
856 var15 = var17;
857 RET_LABEL16:(void)0;
858 }
859 }
860 {
861 { /* Inline bytes#Bytes#length (var_s) on <var_s:Bytes> */
862 var20 = var_s->attrs[COLOR_core__bytes__Bytes___length].l; /* _length on <var_s:Bytes> */
863 var18 = var20;
864 RET_LABEL19:(void)0;
865 }
866 }
867 {
868 core___core__FileWriter___write_native(self, var15, 0l, var18); /* Direct call file#FileWriter#write_native on <self:FileWriter>*/
869 }
870 RET_LABEL:;
871 }
872 /* method file#FileWriter#write for (self: FileWriter, Text) */
873 void core___core__FileWriter___core__stream__Writer__write(val* self, val* p0) {
874 val* var_s /* var s: Text */;
875 val* var /* : nullable IOError */;
876 val* var2 /* : nullable IOError */;
877 short int var3 /* : Bool */;
878 short int var4 /* : Bool */;
879 val* var_other /* var other: nullable Object */;
880 short int var6 /* : Bool */;
881 short int var7 /* : Bool */;
882 short int var8 /* : Bool */;
883 short int var9 /* : Bool */;
884 val* var10 /* : IOError */;
885 static val* varonce;
886 val* var11 /* : String */;
887 char* var12 /* : NativeString */;
888 val* var13 /* : String */;
889 var_s = p0;
890 {
891 { /* Inline stream#Stream#last_error (self) on <self:FileWriter> */
892 var2 = self->attrs[COLOR_core__stream__Stream___last_error].val; /* _last_error on <self:FileWriter> */
893 var = var2;
894 RET_LABEL1:(void)0;
895 }
896 }
897 if (var == NULL) {
898 var3 = 0; /* is null */
899 } else {
900 var3 = 1; /* arg is null and recv is not */
901 }
902 if (0) {
903 { /* Inline kernel#Object#!= (var,((val*)NULL)) on <var:nullable IOError> */
904 var_other = ((val*)NULL);
905 {
906 var6 = ((short int(*)(val* self, val* p0))(var->class->vft[COLOR_core__kernel__Object___61d_61d]))(var, var_other); /* == on <var:nullable IOError(IOError)>*/
907 }
908 var7 = !var6;
909 var4 = var7;
910 goto RET_LABEL5;
911 RET_LABEL5:(void)0;
912 }
913 var3 = var4;
914 }
915 if (var3){
916 goto RET_LABEL;
917 } else {
918 }
919 var8 = self->attrs[COLOR_core__file__FileWriter___is_writable].s; /* _is_writable on <self:FileWriter> */
920 var9 = !var8;
921 if (var9){
922 var10 = NEW_core__IOError(&type_core__IOError);
923 if (likely(varonce!=NULL)) {
924 var11 = varonce;
925 } else {
926 var12 = "cannot write to non-writable stream";
927 var13 = core__flat___NativeString___to_s_full(var12, 35l, 35l);
928 var11 = var13;
929 varonce = var11;
930 }
931 {
932 ((void(*)(val* self, val* p0))(var10->class->vft[COLOR_core__error__Error__message_61d]))(var10, var11); /* message= on <var10:IOError>*/
933 }
934 {
935 ((void(*)(val* self))(var10->class->vft[COLOR_core__kernel__Object__init]))(var10); /* init on <var10:IOError>*/
936 }
937 {
938 { /* Inline stream#Stream#last_error= (self,var10) on <self:FileWriter> */
939 self->attrs[COLOR_core__stream__Stream___last_error].val = var10; /* _last_error on <self:FileWriter> */
940 RET_LABEL14:(void)0;
941 }
942 }
943 goto RET_LABEL;
944 } else {
945 }
946 {
947 ((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>*/
948 }
949 RET_LABEL:;
950 }
951 /* method file#FileWriter#close for (self: FileWriter) */
952 void core___core__FileWriter___core__stream__Stream__close(val* self) {
953 {
954 ((void(*)(val* self))(self->class->vft[COLOR_core___core__FileWriter___core__stream__Stream__close]))(self); /* close on <self:FileWriter>*/
955 }
956 self->attrs[COLOR_core__file__FileWriter___is_writable].s = 0; /* _is_writable on <self:FileWriter> */
957 RET_LABEL:;
958 }
959 /* method file#FileWriter#is_writable= for (self: FileWriter, Bool) */
960 void core___core__FileWriter___is_writable_61d(val* self, short int p0) {
961 self->attrs[COLOR_core__file__FileWriter___is_writable].s = p0; /* _is_writable on <self:FileWriter> */
962 RET_LABEL:;
963 }
964 /* method file#FileWriter#write_native for (self: FileWriter, NativeString, Int, Int) */
965 void core___core__FileWriter___write_native(val* self, char* p0, long p1, long p2) {
966 char* var_native /* var native: NativeString */;
967 long var_from /* var from: Int */;
968 long var_len /* var len: Int */;
969 val* var /* : nullable IOError */;
970 val* var2 /* : nullable IOError */;
971 short int var3 /* : Bool */;
972 short int var4 /* : Bool */;
973 val* var_other /* var other: nullable Object */;
974 short int var6 /* : Bool */;
975 short int var7 /* : Bool */;
976 short int var8 /* : Bool */;
977 short int var9 /* : Bool */;
978 val* var10 /* : IOError */;
979 static val* varonce;
980 val* var11 /* : String */;
981 char* var12 /* : NativeString */;
982 val* var13 /* : String */;
983 val* var15 /* : nullable NativeFile */;
984 short int var16 /* : Bool */;
985 short int var18 /* : Bool */;
986 void* var19 /* : Pointer for extern */;
987 val* var20 /* : IOError */;
988 static val* varonce21;
989 val* var22 /* : String */;
990 char* var23 /* : NativeString */;
991 val* var24 /* : String */;
992 val* var26 /* : nullable NativeFile */;
993 long var27 /* : Int */;
994 long var29 /* : Int */;
995 void* var30 /* : NativeFile for extern */;
996 long var_err /* var err: Int */;
997 short int var31 /* : Bool */;
998 short int var33 /* : Bool */;
999 short int var34 /* : Bool */;
1000 val* var35 /* : IOError */;
1001 val* var37 /* : NativeArray[String] */;
1002 static val* varonce36;
1003 static val* varonce38;
1004 val* var39 /* : String */;
1005 char* var40 /* : NativeString */;
1006 val* var41 /* : String */;
1007 static val* varonce42;
1008 val* var43 /* : String */;
1009 char* var44 /* : NativeString */;
1010 val* var45 /* : String */;
1011 static val* varonce46;
1012 val* var47 /* : String */;
1013 char* var48 /* : NativeString */;
1014 val* var49 /* : String */;
1015 val* var50 /* : String */;
1016 val* var51 /* : String */;
1017 val* var52 /* : String */;
1018 var_native = p0;
1019 var_from = p1;
1020 var_len = p2;
1021 {
1022 { /* Inline stream#Stream#last_error (self) on <self:FileWriter> */
1023 var2 = self->attrs[COLOR_core__stream__Stream___last_error].val; /* _last_error on <self:FileWriter> */
1024 var = var2;
1025 RET_LABEL1:(void)0;
1026 }
1027 }
1028 if (var == NULL) {
1029 var3 = 0; /* is null */
1030 } else {
1031 var3 = 1; /* arg is null and recv is not */
1032 }
1033 if (0) {
1034 { /* Inline kernel#Object#!= (var,((val*)NULL)) on <var:nullable IOError> */
1035 var_other = ((val*)NULL);
1036 {
1037 var6 = ((short int(*)(val* self, val* p0))(var->class->vft[COLOR_core__kernel__Object___61d_61d]))(var, var_other); /* == on <var:nullable IOError(IOError)>*/
1038 }
1039 var7 = !var6;
1040 var4 = var7;
1041 goto RET_LABEL5;
1042 RET_LABEL5:(void)0;
1043 }
1044 var3 = var4;
1045 }
1046 if (var3){
1047 goto RET_LABEL;
1048 } else {
1049 }
1050 var8 = self->attrs[COLOR_core__file__FileWriter___is_writable].s; /* _is_writable on <self:FileWriter> */
1051 var9 = !var8;
1052 if (var9){
1053 var10 = NEW_core__IOError(&type_core__IOError);
1054 if (likely(varonce!=NULL)) {
1055 var11 = varonce;
1056 } else {
1057 var12 = "Cannot write to non-writable stream";
1058 var13 = core__flat___NativeString___to_s_full(var12, 35l, 35l);
1059 var11 = var13;
1060 varonce = var11;
1061 }
1062 {
1063 ((void(*)(val* self, val* p0))(var10->class->vft[COLOR_core__error__Error__message_61d]))(var10, var11); /* message= on <var10:IOError>*/
1064 }
1065 {
1066 ((void(*)(val* self))(var10->class->vft[COLOR_core__kernel__Object__init]))(var10); /* init on <var10:IOError>*/
1067 }
1068 {
1069 { /* Inline stream#Stream#last_error= (self,var10) on <self:FileWriter> */
1070 self->attrs[COLOR_core__stream__Stream___last_error].val = var10; /* _last_error on <self:FileWriter> */
1071 RET_LABEL14:(void)0;
1072 }
1073 }
1074 goto RET_LABEL;
1075 } else {
1076 }
1077 var15 = self->attrs[COLOR_core__file__FileStream___file].val; /* _file on <self:FileWriter> */
1078 if (var15 == NULL) {
1079 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1080 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 254);
1081 fatal_exit(1);
1082 } else {
1083 { /* Inline kernel#Pointer#address_is_null (var15) on <var15:nullable NativeFile> */
1084 var19 = ((struct instance_core__Pointer*)var15)->value; /* unboxing nullable NativeFile */
1085 var18 = kernel___Pointer_address_is_null___impl(var19);
1086 var16 = var18;
1087 goto RET_LABEL17;
1088 RET_LABEL17:(void)0;
1089 }
1090 }
1091 if (var16){
1092 var20 = NEW_core__IOError(&type_core__IOError);
1093 if (likely(varonce21!=NULL)) {
1094 var22 = varonce21;
1095 } else {
1096 var23 = "Writing on a null stream";
1097 var24 = core__flat___NativeString___to_s_full(var23, 24l, 24l);
1098 var22 = var24;
1099 varonce21 = var22;
1100 }
1101 {
1102 ((void(*)(val* self, val* p0))(var20->class->vft[COLOR_core__error__Error__message_61d]))(var20, var22); /* message= on <var20:IOError>*/
1103 }
1104 {
1105 ((void(*)(val* self))(var20->class->vft[COLOR_core__kernel__Object__init]))(var20); /* init on <var20:IOError>*/
1106 }
1107 {
1108 { /* Inline stream#Stream#last_error= (self,var20) on <self:FileWriter> */
1109 self->attrs[COLOR_core__stream__Stream___last_error].val = var20; /* _last_error on <self:FileWriter> */
1110 RET_LABEL25:(void)0;
1111 }
1112 }
1113 self->attrs[COLOR_core__file__FileWriter___is_writable].s = 0; /* _is_writable on <self:FileWriter> */
1114 goto RET_LABEL;
1115 } else {
1116 }
1117 var26 = self->attrs[COLOR_core__file__FileStream___file].val; /* _file on <self:FileWriter> */
1118 if (var26 == NULL) {
1119 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1120 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 259);
1121 fatal_exit(1);
1122 } else {
1123 { /* Inline file#NativeFile#io_write (var26,var_native,var_from,var_len) on <var26:nullable NativeFile> */
1124 var30 = ((struct instance_core__Pointer*)var26)->value; /* unboxing nullable NativeFile */
1125 var29 = file___NativeFile_io_write___impl(var30, var_native, var_from, var_len);
1126 var27 = var29;
1127 goto RET_LABEL28;
1128 RET_LABEL28:(void)0;
1129 }
1130 }
1131 var_err = var27;
1132 {
1133 { /* Inline kernel#Int#!= (var_err,var_len) on <var_err:Int> */
1134 var33 = var_err == var_len;
1135 var34 = !var33;
1136 var31 = var34;
1137 goto RET_LABEL32;
1138 RET_LABEL32:(void)0;
1139 }
1140 }
1141 if (var31){
1142 var35 = NEW_core__IOError(&type_core__IOError);
1143 if (unlikely(varonce36==NULL)) {
1144 var37 = NEW_core__NativeArray(5l, &type_core__NativeArray__core__String);
1145 if (likely(varonce38!=NULL)) {
1146 var39 = varonce38;
1147 } else {
1148 var40 = "Problem in writing : ";
1149 var41 = core__flat___NativeString___to_s_full(var40, 21l, 21l);
1150 var39 = var41;
1151 varonce38 = var39;
1152 }
1153 ((struct instance_core__NativeArray*)var37)->values[0]=var39;
1154 if (likely(varonce42!=NULL)) {
1155 var43 = varonce42;
1156 } else {
1157 var44 = " ";
1158 var45 = core__flat___NativeString___to_s_full(var44, 1l, 1l);
1159 var43 = var45;
1160 varonce42 = var43;
1161 }
1162 ((struct instance_core__NativeArray*)var37)->values[2]=var43;
1163 if (likely(varonce46!=NULL)) {
1164 var47 = varonce46;
1165 } else {
1166 var48 = " \n";
1167 var49 = core__flat___NativeString___to_s_full(var48, 2l, 2l);
1168 var47 = var49;
1169 varonce46 = var47;
1170 }
1171 ((struct instance_core__NativeArray*)var37)->values[4]=var47;
1172 } else {
1173 var37 = varonce36;
1174 varonce36 = NULL;
1175 }
1176 var50 = core__flat___Int___core__abstract_text__Object__to_s(var_err);
1177 ((struct instance_core__NativeArray*)var37)->values[1]=var50;
1178 var51 = core__flat___Int___core__abstract_text__Object__to_s(var_len);
1179 ((struct instance_core__NativeArray*)var37)->values[3]=var51;
1180 {
1181 var52 = ((val*(*)(val* self))(var37->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var37); /* native_to_s on <var37:NativeArray[String]>*/
1182 }
1183 varonce36 = var37;
1184 {
1185 ((void(*)(val* self, val* p0))(var35->class->vft[COLOR_core__error__Error__message_61d]))(var35, var52); /* message= on <var35:IOError>*/
1186 }
1187 {
1188 ((void(*)(val* self))(var35->class->vft[COLOR_core__kernel__Object__init]))(var35); /* init on <var35:IOError>*/
1189 }
1190 {
1191 { /* Inline stream#Stream#last_error= (self,var35) on <self:FileWriter> */
1192 self->attrs[COLOR_core__stream__Stream___last_error].val = var35; /* _last_error on <self:FileWriter> */
1193 RET_LABEL53:(void)0;
1194 }
1195 }
1196 } else {
1197 }
1198 RET_LABEL:;
1199 }
1200 /* method file#FileWriter#open for (self: FileWriter, String) */
1201 void core___core__FileWriter___open(val* self, val* p0) {
1202 val* var_path /* var path: String */;
1203 val* var /* : NativeFile */;
1204 char* var1 /* : NativeString */;
1205 val* var2 /* : NativeFile */;
1206 val* var4 /* : nullable NativeFile */;
1207 short int var5 /* : Bool */;
1208 short int var7 /* : Bool */;
1209 void* var8 /* : Pointer for extern */;
1210 val* var9 /* : IOError */;
1211 val* var10 /* : NativeArray[String] */;
1212 static val* varonce;
1213 static val* varonce11;
1214 val* var12 /* : String */;
1215 char* var13 /* : NativeString */;
1216 val* var14 /* : String */;
1217 static val* varonce15;
1218 val* var16 /* : String */;
1219 char* var17 /* : NativeString */;
1220 val* var18 /* : String */;
1221 val* var19 /* : Sys */;
1222 val* var21 /* : Sys */;
1223 long var22 /* : Int */;
1224 long var24 /* : Int */;
1225 val* var25 /* : String */;
1226 val* var26 /* : String */;
1227 {
1228 ((void(*)(val* self))(self->class->vft[COLOR_core__kernel__Object__init]))(self); /* init on <self:FileWriter>*/
1229 }
1230 var_path = p0;
1231 var = NEW_core__file__NativeFile(&type_core__file__NativeFile);
1232 {
1233 var1 = ((char*(*)(val* self))(var_path->class->vft[COLOR_core__abstract_text__Text__to_cstring]))(var_path); /* to_cstring on <var_path:String>*/
1234 }
1235 {
1236 var2 = core__file___core__file__NativeFile___io_open_write(var, var1);
1237 }
1238 self->attrs[COLOR_core__file__FileStream___file].val = var2; /* _file on <self:FileWriter> */
1239 {
1240 { /* Inline file#FileStream#path= (self,var_path) on <self:FileWriter> */
1241 self->attrs[COLOR_core__file__FileStream___path].val = var_path; /* _path on <self:FileWriter> */
1242 RET_LABEL3:(void)0;
1243 }
1244 }
1245 self->attrs[COLOR_core__file__FileWriter___is_writable].s = 1; /* _is_writable on <self:FileWriter> */
1246 var4 = self->attrs[COLOR_core__file__FileStream___file].val; /* _file on <self:FileWriter> */
1247 if (var4 == NULL) {
1248 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1249 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 272);
1250 fatal_exit(1);
1251 } else {
1252 { /* Inline kernel#Pointer#address_is_null (var4) on <var4:nullable NativeFile> */
1253 var8 = ((struct instance_core__Pointer*)var4)->value; /* unboxing nullable NativeFile */
1254 var7 = kernel___Pointer_address_is_null___impl(var8);
1255 var5 = var7;
1256 goto RET_LABEL6;
1257 RET_LABEL6:(void)0;
1258 }
1259 }
1260 if (var5){
1261 var9 = NEW_core__IOError(&type_core__IOError);
1262 if (unlikely(varonce==NULL)) {
1263 var10 = NEW_core__NativeArray(4l, &type_core__NativeArray__core__String);
1264 if (likely(varonce11!=NULL)) {
1265 var12 = varonce11;
1266 } else {
1267 var13 = "Cannot open `";
1268 var14 = core__flat___NativeString___to_s_full(var13, 13l, 13l);
1269 var12 = var14;
1270 varonce11 = var12;
1271 }
1272 ((struct instance_core__NativeArray*)var10)->values[0]=var12;
1273 if (likely(varonce15!=NULL)) {
1274 var16 = varonce15;
1275 } else {
1276 var17 = "`: ";
1277 var18 = core__flat___NativeString___to_s_full(var17, 3l, 3l);
1278 var16 = var18;
1279 varonce15 = var16;
1280 }
1281 ((struct instance_core__NativeArray*)var10)->values[2]=var16;
1282 } else {
1283 var10 = varonce;
1284 varonce = NULL;
1285 }
1286 ((struct instance_core__NativeArray*)var10)->values[1]=var_path;
1287 {
1288 { /* Inline kernel#Object#sys (self) on <self:FileWriter> */
1289 var21 = glob_sys;
1290 var19 = var21;
1291 goto RET_LABEL20;
1292 RET_LABEL20:(void)0;
1293 }
1294 }
1295 {
1296 { /* Inline kernel#Sys#errno (var19) on <var19:Sys> */
1297 struct nitni_instance* var_for_c_0;
1298 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
1299 var_for_c_0->value = var19;
1300 var24 = kernel___Sys_errno___impl(var_for_c_0);
1301 var22 = var24;
1302 goto RET_LABEL23;
1303 RET_LABEL23:(void)0;
1304 }
1305 }
1306 {
1307 var25 = core__abstract_text___Int___strerror(var22);
1308 }
1309 ((struct instance_core__NativeArray*)var10)->values[3]=var25;
1310 {
1311 var26 = ((val*(*)(val* self))(var10->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var10); /* native_to_s on <var10:NativeArray[String]>*/
1312 }
1313 varonce = var10;
1314 {
1315 ((void(*)(val* self, val* p0))(var9->class->vft[COLOR_core__error__Error__message_61d]))(var9, var26); /* message= on <var9:IOError>*/
1316 }
1317 {
1318 ((void(*)(val* self))(var9->class->vft[COLOR_core__kernel__Object__init]))(var9); /* init on <var9:IOError>*/
1319 }
1320 {
1321 { /* Inline stream#Stream#last_error= (self,var9) on <self:FileWriter> */
1322 self->attrs[COLOR_core__stream__Stream___last_error].val = var9; /* _last_error on <self:FileWriter> */
1323 RET_LABEL27:(void)0;
1324 }
1325 }
1326 {
1327 { /* Inline file#FileWriter#is_writable= (self,0) on <self:FileWriter> */
1328 self->attrs[COLOR_core__file__FileWriter___is_writable].s = 0; /* _is_writable on <self:FileWriter> */
1329 RET_LABEL28:(void)0;
1330 }
1331 }
1332 } else {
1333 }
1334 RET_LABEL:;
1335 }
1336 /* method file#Stdin#init for (self: Stdin) */
1337 void core___core__Stdin___core__kernel__Object__init(val* self) {
1338 val* var /* : NativeFile */;
1339 val* var1 /* : NativeFile */;
1340 static val* varonce;
1341 val* var2 /* : String */;
1342 char* var3 /* : NativeString */;
1343 val* var4 /* : String */;
1344 {
1345 ((void(*)(val* self))(self->class->vft[COLOR_core___core__Stdin___core__kernel__Object__init]))(self); /* init on <self:Stdin>*/
1346 }
1347 var = NEW_core__file__NativeFile(&type_core__file__NativeFile);
1348 {
1349 var1 = core__file___core__file__NativeFile___native_stdin(var);
1350 }
1351 self->attrs[COLOR_core__file__FileStream___file].val = var1; /* _file on <self:Stdin> */
1352 if (likely(varonce!=NULL)) {
1353 var2 = varonce;
1354 } else {
1355 var3 = "/dev/stdin";
1356 var4 = core__flat___NativeString___to_s_full(var3, 10l, 10l);
1357 var2 = var4;
1358 varonce = var2;
1359 }
1360 {
1361 { /* Inline file#FileStream#path= (self,var2) on <self:Stdin> */
1362 self->attrs[COLOR_core__file__FileStream___path].val = var2; /* _path on <self:Stdin> */
1363 RET_LABEL5:(void)0;
1364 }
1365 }
1366 {
1367 core___core__BufferedReader___prepare_buffer(self, 1l); /* Direct call stream#BufferedReader#prepare_buffer on <self:Stdin>*/
1368 }
1369 RET_LABEL:;
1370 }
1371 /* method file#Stdout#init for (self: Stdout) */
1372 void core___core__Stdout___core__kernel__Object__init(val* self) {
1373 val* var /* : NativeFile */;
1374 val* var1 /* : NativeFile */;
1375 static val* varonce;
1376 val* var2 /* : String */;
1377 char* var3 /* : NativeString */;
1378 val* var4 /* : String */;
1379 val* var6 /* : Sys */;
1380 val* var8 /* : Sys */;
1381 long var9 /* : Int */;
1382 long var11 /* : Int */;
1383 {
1384 ((void(*)(val* self))(self->class->vft[COLOR_core___core__Stdout___core__kernel__Object__init]))(self); /* init on <self:Stdout>*/
1385 }
1386 var = NEW_core__file__NativeFile(&type_core__file__NativeFile);
1387 {
1388 var1 = core__file___core__file__NativeFile___native_stdout(var);
1389 }
1390 self->attrs[COLOR_core__file__FileStream___file].val = var1; /* _file on <self:Stdout> */
1391 if (likely(varonce!=NULL)) {
1392 var2 = varonce;
1393 } else {
1394 var3 = "/dev/stdout";
1395 var4 = core__flat___NativeString___to_s_full(var3, 11l, 11l);
1396 var2 = var4;
1397 varonce = var2;
1398 }
1399 {
1400 { /* Inline file#FileStream#path= (self,var2) on <self:Stdout> */
1401 self->attrs[COLOR_core__file__FileStream___path].val = var2; /* _path on <self:Stdout> */
1402 RET_LABEL5:(void)0;
1403 }
1404 }
1405 self->attrs[COLOR_core__file__FileWriter___is_writable].s = 1; /* _is_writable on <self:Stdout> */
1406 {
1407 { /* Inline kernel#Object#sys (self) on <self:Stdout> */
1408 var8 = glob_sys;
1409 var6 = var8;
1410 goto RET_LABEL7;
1411 RET_LABEL7:(void)0;
1412 }
1413 }
1414 {
1415 { /* Inline file#Sys#buffer_mode_line (var6) on <var6:Sys> */
1416 struct nitni_instance* var_for_c_0;
1417 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
1418 var_for_c_0->value = var6;
1419 var11 = file___Sys_buffer_mode_line___impl(var_for_c_0);
1420 var9 = var11;
1421 goto RET_LABEL10;
1422 RET_LABEL10:(void)0;
1423 }
1424 }
1425 {
1426 core___core__FileStream___set_buffering_mode(self, 256l, var9); /* Direct call file#FileStream#set_buffering_mode on <self:Stdout>*/
1427 }
1428 RET_LABEL:;
1429 }
1430 /* method file#Stderr#init for (self: Stderr) */
1431 void core___core__Stderr___core__kernel__Object__init(val* self) {
1432 val* var /* : NativeFile */;
1433 val* var1 /* : NativeFile */;
1434 static val* varonce;
1435 val* var2 /* : String */;
1436 char* var3 /* : NativeString */;
1437 val* var4 /* : String */;
1438 {
1439 ((void(*)(val* self))(self->class->vft[COLOR_core___core__Stderr___core__kernel__Object__init]))(self); /* init on <self:Stderr>*/
1440 }
1441 var = NEW_core__file__NativeFile(&type_core__file__NativeFile);
1442 {
1443 var1 = core__file___core__file__NativeFile___native_stderr(var);
1444 }
1445 self->attrs[COLOR_core__file__FileStream___file].val = var1; /* _file on <self:Stderr> */
1446 if (likely(varonce!=NULL)) {
1447 var2 = varonce;
1448 } else {
1449 var3 = "/dev/stderr";
1450 var4 = core__flat___NativeString___to_s_full(var3, 11l, 11l);
1451 var2 = var4;
1452 varonce = var2;
1453 }
1454 {
1455 { /* Inline file#FileStream#path= (self,var2) on <self:Stderr> */
1456 self->attrs[COLOR_core__file__FileStream___path].val = var2; /* _path on <self:Stderr> */
1457 RET_LABEL5:(void)0;
1458 }
1459 }
1460 self->attrs[COLOR_core__file__FileWriter___is_writable].s = 1; /* _is_writable on <self:Stderr> */
1461 RET_LABEL:;
1462 }
1463 /* method file#Writable#write_to_file for (self: Writable, String) */
1464 void core__file___Writable___write_to_file(val* self, val* p0) {
1465 val* var_filepath /* var filepath: String */;
1466 val* var /* : FileWriter */;
1467 val* var_stream /* var stream: FileWriter */;
1468 var_filepath = p0;
1469 var = NEW_core__FileWriter(&type_core__FileWriter);
1470 {
1471 core___core__FileWriter___open(var, var_filepath); /* Direct call file#FileWriter#open on <var:FileWriter>*/
1472 }
1473 var_stream = var;
1474 {
1475 ((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>*/
1476 }
1477 {
1478 core___core__FileWriter___core__stream__Stream__close(var_stream); /* Direct call file#FileWriter#close on <var_stream:FileWriter>*/
1479 }
1480 RET_LABEL:;
1481 }
1482 /* method file#Path#path for (self: Path): String */
1483 val* core___core__Path___path(val* self) {
1484 val* var /* : String */;
1485 val* var1 /* : String */;
1486 var1 = self->attrs[COLOR_core__file__Path___path].val; /* _path on <self:Path> */
1487 if (unlikely(var1 == NULL)) {
1488 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
1489 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 370);
1490 fatal_exit(1);
1491 }
1492 var = var1;
1493 RET_LABEL:;
1494 return var;
1495 }
1496 /* method file#Path#path= for (self: Path, String) */
1497 void core___core__Path___path_61d(val* self, val* p0) {
1498 self->attrs[COLOR_core__file__Path___path].val = p0; /* _path on <self:Path> */
1499 RET_LABEL:;
1500 }
1501 /* method file#Path#to_s for (self: Path): String */
1502 val* core___core__Path___core__abstract_text__Object__to_s(val* self) {
1503 val* var /* : String */;
1504 val* var1 /* : String */;
1505 val* var3 /* : String */;
1506 {
1507 { /* Inline file#Path#path (self) on <self:Path> */
1508 var3 = self->attrs[COLOR_core__file__Path___path].val; /* _path on <self:Path> */
1509 if (unlikely(var3 == NULL)) {
1510 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
1511 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 370);
1512 fatal_exit(1);
1513 }
1514 var1 = var3;
1515 RET_LABEL2:(void)0;
1516 }
1517 }
1518 var = var1;
1519 goto RET_LABEL;
1520 RET_LABEL:;
1521 return var;
1522 }
1523 /* method file#Path#simplified for (self: Path): Path */
1524 val* core___core__Path___simplified(val* self) {
1525 val* var /* : Path */;
1526 short int var1 /* : Bool */;
1527 val* var2 /* : Path */;
1528 val* var3 /* : Path */;
1529 val* var5 /* : String */;
1530 val* var7 /* : String */;
1531 val* var8 /* : String */;
1532 val* var9 /* : Path */;
1533 val* var_res /* var res: Path */;
1534 var1 = self->attrs[COLOR_core__file__Path___simplified].val != NULL; /* _simplified on <self:Path> */
1535 if(likely(var1)) {
1536 var2 = self->attrs[COLOR_core__file__Path___simplified].val; /* _simplified on <self:Path> */
1537 if (unlikely(var2 == NULL)) {
1538 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _simplified");
1539 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 385);
1540 fatal_exit(1);
1541 }
1542 } else {
1543 {
1544 {
1545 { /* Inline file#Path#path (self) on <self:Path> */
1546 var7 = self->attrs[COLOR_core__file__Path___path].val; /* _path on <self:Path> */
1547 if (unlikely(var7 == NULL)) {
1548 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
1549 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 370);
1550 fatal_exit(1);
1551 }
1552 var5 = var7;
1553 RET_LABEL6:(void)0;
1554 }
1555 }
1556 {
1557 var8 = core__file___String___simplify_path(var5);
1558 }
1559 {
1560 var9 = core__file___Text___to_path(var8);
1561 }
1562 var_res = var9;
1563 {
1564 core___core__Path___simplified_61d(var_res, var_res); /* Direct call file#Path#simplified= on <var_res:Path>*/
1565 }
1566 var3 = var_res;
1567 goto RET_LABEL4;
1568 RET_LABEL4:(void)0;
1569 }
1570 self->attrs[COLOR_core__file__Path___simplified].val = var3; /* _simplified on <self:Path> */
1571 var2 = var3;
1572 }
1573 var = var2;
1574 RET_LABEL:;
1575 return var;
1576 }
1577 /* method file#Path#simplified= for (self: Path, Path) */
1578 void core___core__Path___simplified_61d(val* self, val* p0) {
1579 self->attrs[COLOR_core__file__Path___simplified].val = p0; /* _simplified on <self:Path> */
1580 RET_LABEL:;
1581 }
1582 /* method file#Path#last_error= for (self: Path, nullable IOError) */
1583 void core___core__Path___last_error_61d(val* self, val* p0) {
1584 self->attrs[COLOR_core__file__Path___last_error].val = p0; /* _last_error on <self:Path> */
1585 RET_LABEL:;
1586 }
1587 /* method file#Path#copy for (self: Path, Path) */
1588 void core___core__Path___copy(val* self, val* p0) {
1589 val* var_dest /* var dest: Path */;
1590 val* var /* : FileReader */;
1591 val* var_input /* var input: FileReader */;
1592 val* var2 /* : FileWriter */;
1593 val* var_output /* var output: FileWriter */;
1594 short int var3 /* : Bool */;
1595 short int var4 /* : Bool */;
1596 val* var5 /* : String */;
1597 val* var_buffer /* var buffer: String */;
1598 val* var6 /* : nullable IOError */;
1599 val* var7 /* : nullable IOError */;
1600 val* var9 /* : nullable IOError */;
1601 val* var10 /* : nullable IOError */;
1602 val* var12 /* : nullable IOError */;
1603 var_dest = p0;
1604 {
1605 { /* Inline file#Path#last_error= (self,((val*)NULL)) on <self:Path> */
1606 self->attrs[COLOR_core__file__Path___last_error].val = ((val*)NULL); /* _last_error on <self:Path> */
1607 RET_LABEL1:(void)0;
1608 }
1609 }
1610 {
1611 var = core___core__Path___open_ro(self);
1612 }
1613 var_input = var;
1614 {
1615 var2 = core___core__Path___open_wo(var_dest);
1616 }
1617 var_output = var2;
1618 for(;;) {
1619 {
1620 var3 = core___core__BufferedReader___Reader__eof(var_input);
1621 }
1622 var4 = !var3;
1623 if (var4){
1624 {
1625 var5 = core___core__Reader___read(var_input, 1024l);
1626 }
1627 var_buffer = var5;
1628 {
1629 core___core__FileWriter___core__stream__Writer__write(var_output, var_buffer); /* Direct call file#FileWriter#write on <var_output:FileWriter>*/
1630 }
1631 } else {
1632 goto BREAK_label;
1633 }
1634 }
1635 BREAK_label: (void)0;
1636 {
1637 core___core__FileReader___core__stream__Stream__close(var_input); /* Direct call file#FileReader#close on <var_input:FileReader>*/
1638 }
1639 {
1640 core___core__FileWriter___core__stream__Stream__close(var_output); /* Direct call file#FileWriter#close on <var_output:FileWriter>*/
1641 }
1642 {
1643 { /* Inline stream#Stream#last_error (var_input) on <var_input:FileReader> */
1644 var9 = var_input->attrs[COLOR_core__stream__Stream___last_error].val; /* _last_error on <var_input:FileReader> */
1645 var7 = var9;
1646 RET_LABEL8:(void)0;
1647 }
1648 }
1649 if (var7!=NULL) {
1650 var6 = var7;
1651 } else {
1652 {
1653 { /* Inline stream#Stream#last_error (var_output) on <var_output:FileWriter> */
1654 var12 = var_output->attrs[COLOR_core__stream__Stream___last_error].val; /* _last_error on <var_output:FileWriter> */
1655 var10 = var12;
1656 RET_LABEL11:(void)0;
1657 }
1658 }
1659 var6 = var10;
1660 }
1661 {
1662 { /* Inline file#Path#last_error= (self,var6) on <self:Path> */
1663 self->attrs[COLOR_core__file__Path___last_error].val = var6; /* _last_error on <self:Path> */
1664 RET_LABEL13:(void)0;
1665 }
1666 }
1667 RET_LABEL:;
1668 }
1669 /* method file#Path#open_ro for (self: Path): FileReader */
1670 val* core___core__Path___open_ro(val* self) {
1671 val* var /* : FileReader */;
1672 val* var1 /* : FileReader */;
1673 val* var2 /* : String */;
1674 val* var4 /* : String */;
1675 val* var_res /* var res: FileReader */;
1676 val* var5 /* : nullable IOError */;
1677 val* var7 /* : nullable IOError */;
1678 var1 = NEW_core__FileReader(&type_core__FileReader);
1679 {
1680 { /* Inline file#Path#path (self) on <self:Path> */
1681 var4 = self->attrs[COLOR_core__file__Path___path].val; /* _path on <self:Path> */
1682 if (unlikely(var4 == NULL)) {
1683 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
1684 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 370);
1685 fatal_exit(1);
1686 }
1687 var2 = var4;
1688 RET_LABEL3:(void)0;
1689 }
1690 }
1691 {
1692 core___core__FileReader___open(var1, var2); /* Direct call file#FileReader#open on <var1:FileReader>*/
1693 }
1694 var_res = var1;
1695 {
1696 { /* Inline stream#Stream#last_error (var_res) on <var_res:FileReader> */
1697 var7 = var_res->attrs[COLOR_core__stream__Stream___last_error].val; /* _last_error on <var_res:FileReader> */
1698 var5 = var7;
1699 RET_LABEL6:(void)0;
1700 }
1701 }
1702 {
1703 { /* Inline file#Path#last_error= (self,var5) on <self:Path> */
1704 self->attrs[COLOR_core__file__Path___last_error].val = var5; /* _last_error on <self:Path> */
1705 RET_LABEL8:(void)0;
1706 }
1707 }
1708 var = var_res;
1709 goto RET_LABEL;
1710 RET_LABEL:;
1711 return var;
1712 }
1713 /* method file#Path#open_wo for (self: Path): FileWriter */
1714 val* core___core__Path___open_wo(val* self) {
1715 val* var /* : FileWriter */;
1716 val* var1 /* : FileWriter */;
1717 val* var2 /* : String */;
1718 val* var4 /* : String */;
1719 val* var_res /* var res: FileWriter */;
1720 val* var5 /* : nullable IOError */;
1721 val* var7 /* : nullable IOError */;
1722 var1 = NEW_core__FileWriter(&type_core__FileWriter);
1723 {
1724 { /* Inline file#Path#path (self) on <self:Path> */
1725 var4 = self->attrs[COLOR_core__file__Path___path].val; /* _path on <self:Path> */
1726 if (unlikely(var4 == NULL)) {
1727 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
1728 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 370);
1729 fatal_exit(1);
1730 }
1731 var2 = var4;
1732 RET_LABEL3:(void)0;
1733 }
1734 }
1735 {
1736 core___core__FileWriter___open(var1, var2); /* Direct call file#FileWriter#open on <var1:FileWriter>*/
1737 }
1738 var_res = var1;
1739 {
1740 { /* Inline stream#Stream#last_error (var_res) on <var_res:FileWriter> */
1741 var7 = var_res->attrs[COLOR_core__stream__Stream___last_error].val; /* _last_error on <var_res:FileWriter> */
1742 var5 = var7;
1743 RET_LABEL6:(void)0;
1744 }
1745 }
1746 {
1747 { /* Inline file#Path#last_error= (self,var5) on <self:Path> */
1748 self->attrs[COLOR_core__file__Path___last_error].val = var5; /* _last_error on <self:Path> */
1749 RET_LABEL8:(void)0;
1750 }
1751 }
1752 var = var_res;
1753 goto RET_LABEL;
1754 RET_LABEL:;
1755 return var;
1756 }
1757 /* method file#Path#== for (self: Path, nullable Object): Bool */
1758 short int core___core__Path___core__kernel__Object___61d_61d(val* self, val* p0) {
1759 short int var /* : Bool */;
1760 val* var_other /* var other: nullable Object */;
1761 short int var1 /* : Bool */;
1762 short int var2 /* : Bool */;
1763 int cltype;
1764 int idtype;
1765 short int var_ /* var : Bool */;
1766 val* var3 /* : Path */;
1767 val* var4 /* : String */;
1768 val* var6 /* : String */;
1769 val* var7 /* : Path */;
1770 val* var8 /* : String */;
1771 val* var10 /* : String */;
1772 short int var11 /* : Bool */;
1773 var_other = p0;
1774 /* <var_other:nullable Object> isa Path */
1775 cltype = type_core__Path.color;
1776 idtype = type_core__Path.id;
1777 if(var_other == NULL) {
1778 var2 = 0;
1779 } else {
1780 if(cltype >= (((long)var_other&3)?type_info[((long)var_other&3)]:var_other->type)->table_size) {
1781 var2 = 0;
1782 } else {
1783 var2 = (((long)var_other&3)?type_info[((long)var_other&3)]:var_other->type)->type_table[cltype] == idtype;
1784 }
1785 }
1786 var_ = var2;
1787 if (var2){
1788 {
1789 var3 = core___core__Path___simplified(self);
1790 }
1791 {
1792 { /* Inline file#Path#path (var3) on <var3:Path> */
1793 var6 = var3->attrs[COLOR_core__file__Path___path].val; /* _path on <var3:Path> */
1794 if (unlikely(var6 == NULL)) {
1795 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
1796 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 370);
1797 fatal_exit(1);
1798 }
1799 var4 = var6;
1800 RET_LABEL5:(void)0;
1801 }
1802 }
1803 {
1804 var7 = core___core__Path___simplified(var_other);
1805 }
1806 {
1807 { /* Inline file#Path#path (var7) on <var7:Path> */
1808 var10 = var7->attrs[COLOR_core__file__Path___path].val; /* _path on <var7:Path> */
1809 if (unlikely(var10 == NULL)) {
1810 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
1811 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 370);
1812 fatal_exit(1);
1813 }
1814 var8 = var10;
1815 RET_LABEL9:(void)0;
1816 }
1817 }
1818 {
1819 var11 = ((short int(*)(val* self, val* p0))(var4->class->vft[COLOR_core__kernel__Object___61d_61d]))(var4, var8); /* == on <var4:String>*/
1820 }
1821 var1 = var11;
1822 } else {
1823 var1 = var_;
1824 }
1825 var = var1;
1826 goto RET_LABEL;
1827 RET_LABEL:;
1828 return var;
1829 }
1830 /* method file#Path#hash for (self: Path): Int */
1831 long core___core__Path___core__kernel__Object__hash(val* self) {
1832 long var /* : Int */;
1833 val* var1 /* : Path */;
1834 val* var2 /* : String */;
1835 val* var4 /* : String */;
1836 long var5 /* : Int */;
1837 {
1838 var1 = core___core__Path___simplified(self);
1839 }
1840 {
1841 { /* Inline file#Path#path (var1) on <var1:Path> */
1842 var4 = var1->attrs[COLOR_core__file__Path___path].val; /* _path on <var1:Path> */
1843 if (unlikely(var4 == NULL)) {
1844 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
1845 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 370);
1846 fatal_exit(1);
1847 }
1848 var2 = var4;
1849 RET_LABEL3:(void)0;
1850 }
1851 }
1852 {
1853 var5 = ((long(*)(val* self))(var2->class->vft[COLOR_core__kernel__Object__hash]))(var2); /* hash on <var2:String>*/
1854 }
1855 var = var5;
1856 goto RET_LABEL;
1857 RET_LABEL:;
1858 return var;
1859 }
1860 /* method file#Path#init for (self: Path) */
1861 void core___core__Path___core__kernel__Object__init(val* self) {
1862 {
1863 ((void(*)(val* self))(self->class->vft[COLOR_core___core__Path___core__kernel__Object__init]))(self); /* init on <self:Path>*/
1864 }
1865 RET_LABEL:;
1866 }
1867 /* method file#FileStat#stat for (self: FileStat): NativeFileStat */
1868 val* core___core__FileStat___stat(val* self) {
1869 val* var /* : NativeFileStat */;
1870 val* var1 /* : NativeFileStat */;
1871 var1 = self->attrs[COLOR_core__file__FileStat___stat].val; /* _stat on <self:FileStat> */
1872 if (unlikely(var1 == NULL)) {
1873 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stat");
1874 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 720);
1875 fatal_exit(1);
1876 }
1877 var = var1;
1878 RET_LABEL:;
1879 return var;
1880 }
1881 /* method file#FileStat#stat= for (self: FileStat, NativeFileStat) */
1882 void core___core__FileStat___stat_61d(val* self, val* p0) {
1883 self->attrs[COLOR_core__file__FileStat___stat].val = p0; /* _stat on <self:FileStat> */
1884 RET_LABEL:;
1885 }
1886 /* method file#FileStat#finalized for (self: FileStat): Bool */
1887 short int core___core__FileStat___finalized(val* self) {
1888 short int var /* : Bool */;
1889 short int var1 /* : Bool */;
1890 var1 = self->attrs[COLOR_core__file__FileStat___finalized].s; /* _finalized on <self:FileStat> */
1891 var = var1;
1892 RET_LABEL:;
1893 return var;
1894 }
1895 /* method file#FileStat#finalized= for (self: FileStat, Bool) */
1896 void core___core__FileStat___finalized_61d(val* self, short int p0) {
1897 self->attrs[COLOR_core__file__FileStat___finalized].s = p0; /* _finalized on <self:FileStat> */
1898 RET_LABEL:;
1899 }
1900 /* method file#FileStat#finalize for (self: FileStat) */
1901 void core___core__FileStat___core__gc__Finalizable__finalize(val* self) {
1902 short int var /* : Bool */;
1903 short int var2 /* : Bool */;
1904 short int var3 /* : Bool */;
1905 val* var4 /* : NativeFileStat */;
1906 val* var6 /* : NativeFileStat */;
1907 void* var8 /* : Pointer for extern */;
1908 {
1909 { /* Inline file#FileStat#finalized (self) on <self:FileStat> */
1910 var2 = self->attrs[COLOR_core__file__FileStat___finalized].s; /* _finalized on <self:FileStat> */
1911 var = var2;
1912 RET_LABEL1:(void)0;
1913 }
1914 }
1915 var3 = !var;
1916 if (var3){
1917 {
1918 { /* Inline file#FileStat#stat (self) on <self:FileStat> */
1919 var6 = self->attrs[COLOR_core__file__FileStat___stat].val; /* _stat on <self:FileStat> */
1920 if (unlikely(var6 == NULL)) {
1921 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stat");
1922 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 720);
1923 fatal_exit(1);
1924 }
1925 var4 = var6;
1926 RET_LABEL5:(void)0;
1927 }
1928 }
1929 {
1930 { /* Inline kernel#Pointer#free (var4) on <var4:NativeFileStat> */
1931 var8 = ((struct instance_core__Pointer*)var4)->value; /* unboxing NativeFileStat */
1932 kernel___Pointer_free___impl(var8);
1933 RET_LABEL7:(void)0;
1934 }
1935 }
1936 {
1937 { /* Inline file#FileStat#finalized= (self,1) on <self:FileStat> */
1938 self->attrs[COLOR_core__file__FileStat___finalized].s = 1; /* _finalized on <self:FileStat> */
1939 RET_LABEL9:(void)0;
1940 }
1941 }
1942 } else {
1943 }
1944 RET_LABEL:;
1945 }
1946 /* method file#FileStat#is_dir for (self: FileStat): Bool */
1947 short int core___core__FileStat___is_dir(val* self) {
1948 short int var /* : Bool */;
1949 short int var1 /* : Bool */;
1950 short int var3 /* : Bool */;
1951 short int var4 /* : Bool */;
1952 val* var5 /* : NativeFileStat */;
1953 val* var7 /* : NativeFileStat */;
1954 short int var8 /* : Bool */;
1955 short int var10 /* : Bool */;
1956 void* var11 /* : NativeFileStat for extern */;
1957 {
1958 { /* Inline file#FileStat#finalized (self) on <self:FileStat> */
1959 var3 = self->attrs[COLOR_core__file__FileStat___finalized].s; /* _finalized on <self:FileStat> */
1960 var1 = var3;
1961 RET_LABEL2:(void)0;
1962 }
1963 }
1964 var4 = !var1;
1965 if (unlikely(!var4)) {
1966 PRINT_ERROR("Runtime error: %s", "Assert failed");
1967 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 780);
1968 fatal_exit(1);
1969 }
1970 {
1971 { /* Inline file#FileStat#stat (self) on <self:FileStat> */
1972 var7 = self->attrs[COLOR_core__file__FileStat___stat].val; /* _stat on <self:FileStat> */
1973 if (unlikely(var7 == NULL)) {
1974 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stat");
1975 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 720);
1976 fatal_exit(1);
1977 }
1978 var5 = var7;
1979 RET_LABEL6:(void)0;
1980 }
1981 }
1982 {
1983 { /* Inline file#NativeFileStat#is_dir (var5) on <var5:NativeFileStat> */
1984 var11 = ((struct instance_core__Pointer*)var5)->value; /* unboxing NativeFileStat */
1985 var10 = file___NativeFileStat_is_dir___impl(var11);
1986 var8 = var10;
1987 goto RET_LABEL9;
1988 RET_LABEL9:(void)0;
1989 }
1990 }
1991 var = var8;
1992 goto RET_LABEL;
1993 RET_LABEL:;
1994 return var;
1995 }
1996 /* method file#FileStat#init for (self: FileStat) */
1997 void core___core__FileStat___core__kernel__Object__init(val* self) {
1998 {
1999 ((void(*)(val* self))(self->class->vft[COLOR_core___core__FileStat___core__kernel__Object__init]))(self); /* init on <self:FileStat>*/
2000 }
2001 RET_LABEL:;
2002 }
2003 /* method file#Text#to_path for (self: Text): Path */
2004 val* core__file___Text___to_path(val* self) {
2005 val* var /* : Path */;
2006 val* var1 /* : Path */;
2007 val* var2 /* : String */;
2008 var1 = NEW_core__Path(&type_core__Path);
2009 {
2010 var2 = ((val*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Object__to_s]))(self); /* to_s on <self:Text>*/
2011 }
2012 {
2013 ((void(*)(val* self, val* p0))(var1->class->vft[COLOR_core__file__Path__path_61d]))(var1, var2); /* path= on <var1:Path>*/
2014 }
2015 {
2016 ((void(*)(val* self))(var1->class->vft[COLOR_core__kernel__Object__init]))(var1); /* init on <var1:Path>*/
2017 }
2018 var = var1;
2019 goto RET_LABEL;
2020 RET_LABEL:;
2021 return var;
2022 }
2023 /* method file#Text#write_native_to for (self: Text, FileWriter) */
2024 void core__file___Text___write_native_to(val* self, val* p0) {
2025 val* var_s /* var s: FileWriter */;
2026 val* var /* : Iterator[FlatText] */;
2027 val* var_ /* var : Iterator[FlatText] */;
2028 val* var1 /* : Iterator[nullable Object] */;
2029 val* var_2 /* var : Iterator[FlatText] */;
2030 short int var3 /* : Bool */;
2031 val* var4 /* : nullable Object */;
2032 val* var_i /* var i: FlatText */;
2033 char* var5 /* : NativeString */;
2034 long var6 /* : Int */;
2035 long var8 /* : Int */;
2036 var_s = p0;
2037 {
2038 var = ((val*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__substrings]))(self); /* substrings on <self:Text>*/
2039 }
2040 var_ = var;
2041 {
2042 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]>*/
2043 }
2044 var_2 = var1;
2045 for(;;) {
2046 {
2047 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]>*/
2048 }
2049 if (var3){
2050 } else {
2051 goto BREAK_label;
2052 }
2053 {
2054 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]>*/
2055 }
2056 var_i = var4;
2057 {
2058 var5 = ((char*(*)(val* self))(var_i->class->vft[COLOR_core__abstract_text__Text__to_cstring]))(var_i); /* to_cstring on <var_i:FlatText>*/
2059 }
2060 {
2061 { /* Inline abstract_text#FlatText#bytelen (var_i) on <var_i:FlatText> */
2062 var8 = var_i->attrs[COLOR_core__abstract_text__FlatText___bytelen].l; /* _bytelen on <var_i:FlatText> */
2063 var6 = var8;
2064 RET_LABEL7:(void)0;
2065 }
2066 }
2067 {
2068 core___core__FileWriter___write_native(var_s, var5, 0l, var6); /* Direct call file#FileWriter#write_native on <var_s:FileWriter>*/
2069 }
2070 {
2071 ((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]>*/
2072 }
2073 }
2074 BREAK_label: (void)0;
2075 {
2076 ((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]>*/
2077 }
2078 RET_LABEL:;
2079 }
2080 /* method file#String#file_exists for (self: String): Bool */
2081 short int core__file___String___file_exists(val* self) {
2082 short int var /* : Bool */;
2083 char* var1 /* : NativeString */;
2084 short int var2 /* : Bool */;
2085 short int var4 /* : Bool */;
2086 {
2087 var1 = ((char*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__to_cstring]))(self); /* to_cstring on <self:String>*/
2088 }
2089 {
2090 { /* Inline file#NativeString#file_exists (var1) on <var1:NativeString> */
2091 var4 = file___NativeString_file_exists___impl(var1);
2092 var2 = var4;
2093 goto RET_LABEL3;
2094 RET_LABEL3:(void)0;
2095 }
2096 }
2097 var = var2;
2098 goto RET_LABEL;
2099 RET_LABEL:;
2100 return var;
2101 }
2102 /* method file#String#file_stat for (self: String): nullable FileStat */
2103 val* core__file___String___file_stat(val* self) {
2104 val* var /* : nullable FileStat */;
2105 char* var1 /* : NativeString */;
2106 val* var2 /* : NativeFileStat */;
2107 val* var4 /* : NativeFileStat */;
2108 val* var5 /* : NativeFileStat */;
2109 val* var_stat /* var stat: NativeFileStat */;
2110 short int var6 /* : Bool */;
2111 short int var8 /* : Bool */;
2112 void* var9 /* : Pointer for extern */;
2113 val* var10 /* : FileStat */;
2114 {
2115 var1 = ((char*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__to_cstring]))(self); /* to_cstring on <self:String>*/
2116 }
2117 {
2118 { /* Inline file#NativeString#file_stat (var1) on <var1:NativeString> */
2119 var4 = file___NativeString_file_stat___impl(var1);
2120 var5 = BOX_core__Pointer(var4); /* boxing NativeFileStat */
2121 var5->type = &type_core__file__NativeFileStat;
2122 var5->class = &class_core__file__NativeFileStat;
2123 var2 = var5;
2124 goto RET_LABEL3;
2125 RET_LABEL3:(void)0;
2126 }
2127 }
2128 var_stat = var2;
2129 {
2130 { /* Inline kernel#Pointer#address_is_null (var_stat) on <var_stat:NativeFileStat> */
2131 var9 = ((struct instance_core__Pointer*)var_stat)->value; /* unboxing NativeFileStat */
2132 var8 = kernel___Pointer_address_is_null___impl(var9);
2133 var6 = var8;
2134 goto RET_LABEL7;
2135 RET_LABEL7:(void)0;
2136 }
2137 }
2138 if (var6){
2139 var = ((val*)NULL);
2140 goto RET_LABEL;
2141 } else {
2142 }
2143 var10 = NEW_core__FileStat(&type_core__FileStat);
2144 {
2145 ((void(*)(val* self, val* p0))(var10->class->vft[COLOR_core__file__FileStat__stat_61d]))(var10, var_stat); /* stat= on <var10:FileStat>*/
2146 }
2147 {
2148 ((void(*)(val* self))(var10->class->vft[COLOR_core__kernel__Object__init]))(var10); /* init on <var10:FileStat>*/
2149 }
2150 var = var10;
2151 goto RET_LABEL;
2152 RET_LABEL:;
2153 return var;
2154 }
2155 /* method file#String#file_copy_to for (self: String, String) */
2156 void core__file___String___file_copy_to(val* self, val* p0) {
2157 val* var_dest /* var dest: String */;
2158 val* var /* : Path */;
2159 val* var1 /* : Path */;
2160 var_dest = p0;
2161 {
2162 var = core__file___Text___to_path(self);
2163 }
2164 {
2165 var1 = core__file___Text___to_path(var_dest);
2166 }
2167 {
2168 core___core__Path___copy(var, var1); /* Direct call file#Path#copy on <var:Path>*/
2169 }
2170 RET_LABEL:;
2171 }
2172 /* method file#String#strip_extension for (self: String, nullable String): String */
2173 val* core__file___String___strip_extension(val* self, val* p0) {
2174 val* var /* : String */;
2175 val* var_extension /* var extension: nullable String */;
2176 short int var1 /* : Bool */;
2177 short int var2 /* : Bool */;
2178 val* var3 /* : nullable String */;
2179 short int var4 /* : Bool */;
2180 short int var5 /* : Bool */;
2181 val* var6 /* : NativeArray[String] */;
2182 static val* varonce;
2183 static val* varonce7;
2184 val* var8 /* : String */;
2185 char* var9 /* : NativeString */;
2186 val* var10 /* : String */;
2187 val* var11 /* : String */;
2188 short int var12 /* : Bool */;
2189 long var13 /* : Int */;
2190 long var14 /* : Int */;
2191 long var15 /* : Int */;
2192 short int var17 /* : Bool */;
2193 int cltype;
2194 int idtype;
2195 const char* var_class_name;
2196 long var18 /* : Int */;
2197 val* var19 /* : Text */;
2198 var_extension = p0;
2199 if (var_extension == NULL) {
2200 var1 = 1; /* is null */
2201 } else {
2202 var1 = 0; /* arg is null but recv is not */
2203 }
2204 if (0) {
2205 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>*/
2206 var1 = var2;
2207 }
2208 if (var1){
2209 {
2210 var3 = ((val*(*)(val* self))(self->class->vft[COLOR_core__file__String__file_extension]))(self); /* file_extension on <self:String>*/
2211 }
2212 var_extension = var3;
2213 if (var_extension == NULL) {
2214 var4 = 1; /* is null */
2215 } else {
2216 var4 = 0; /* arg is null but recv is not */
2217 }
2218 if (0) {
2219 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>*/
2220 var4 = var5;
2221 }
2222 if (var4){
2223 var = self;
2224 goto RET_LABEL;
2225 } else {
2226 if (unlikely(varonce==NULL)) {
2227 var6 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
2228 if (likely(varonce7!=NULL)) {
2229 var8 = varonce7;
2230 } else {
2231 var9 = ".";
2232 var10 = core__flat___NativeString___to_s_full(var9, 1l, 1l);
2233 var8 = var10;
2234 varonce7 = var8;
2235 }
2236 ((struct instance_core__NativeArray*)var6)->values[0]=var8;
2237 } else {
2238 var6 = varonce;
2239 varonce = NULL;
2240 }
2241 ((struct instance_core__NativeArray*)var6)->values[1]=var_extension;
2242 {
2243 var11 = ((val*(*)(val* self))(var6->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var6); /* native_to_s on <var6:NativeArray[String]>*/
2244 }
2245 varonce = var6;
2246 var_extension = var11;
2247 }
2248 } else {
2249 }
2250 {
2251 var12 = core___core__Text___has_suffix(self, var_extension);
2252 }
2253 if (var12){
2254 {
2255 var13 = ((long(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__length]))(self); /* length on <self:String>*/
2256 }
2257 {
2258 var14 = ((long(*)(val* self))(var_extension->class->vft[COLOR_core__abstract_text__Text__length]))(var_extension); /* length on <var_extension:nullable String(String)>*/
2259 }
2260 {
2261 { /* Inline kernel#Int#- (var13,var14) on <var13:Int> */
2262 /* Covariant cast for argument 0 (i) <var14:Int> isa OTHER */
2263 /* <var14:Int> isa OTHER */
2264 var17 = 1; /* easy <var14:Int> isa OTHER*/
2265 if (unlikely(!var17)) {
2266 var_class_name = type_core__Int.name;
2267 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2268 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
2269 fatal_exit(1);
2270 }
2271 var18 = var13 - var14;
2272 var15 = var18;
2273 goto RET_LABEL16;
2274 RET_LABEL16:(void)0;
2275 }
2276 }
2277 {
2278 var19 = ((val*(*)(val* self, long p0, long p1))(self->class->vft[COLOR_core__abstract_text__Text__substring]))(self, 0l, var15); /* substring on <self:String>*/
2279 }
2280 var = var19;
2281 goto RET_LABEL;
2282 } else {
2283 }
2284 var = self;
2285 goto RET_LABEL;
2286 RET_LABEL:;
2287 return var;
2288 }
2289 /* method file#String#basename for (self: String, nullable String): String */
2290 val* core__file___String___basename(val* self, val* p0) {
2291 val* var /* : String */;
2292 val* var_extension /* var extension: nullable String */;
2293 long var1 /* : Int */;
2294 long var2 /* : Int */;
2295 short int var4 /* : Bool */;
2296 int cltype;
2297 int idtype;
2298 const char* var_class_name;
2299 long var5 /* : Int */;
2300 long var_l /* var l: Int */;
2301 short int var6 /* : Bool */;
2302 short int var7 /* : Bool */;
2303 short int var9 /* : Bool */;
2304 int cltype10;
2305 int idtype11;
2306 const char* var_class_name12;
2307 short int var13 /* : Bool */;
2308 short int var_ /* var : Bool */;
2309 val* var14 /* : SequenceRead[Char] */;
2310 val* var15 /* : nullable Object */;
2311 short int var16 /* : Bool */;
2312 short int var18 /* : Bool */;
2313 uint32_t var19 /* : Char */;
2314 long var20 /* : Int */;
2315 short int var22 /* : Bool */;
2316 int cltype23;
2317 int idtype24;
2318 const char* var_class_name25;
2319 long var26 /* : Int */;
2320 short int var27 /* : Bool */;
2321 short int var29 /* : Bool */;
2322 static val* varonce;
2323 val* var30 /* : String */;
2324 char* var31 /* : NativeString */;
2325 val* var32 /* : String */;
2326 val* var33 /* : SequenceRead[Char] */;
2327 val* var34 /* : nullable Object */;
2328 long var35 /* : Int */;
2329 long var_pos /* var pos: Int */;
2330 val* var_n /* var n: String */;
2331 short int var36 /* : Bool */;
2332 short int var38 /* : Bool */;
2333 int cltype39;
2334 int idtype40;
2335 const char* var_class_name41;
2336 short int var42 /* : Bool */;
2337 long var43 /* : Int */;
2338 short int var45 /* : Bool */;
2339 int cltype46;
2340 int idtype47;
2341 const char* var_class_name48;
2342 long var49 /* : Int */;
2343 long var50 /* : Int */;
2344 short int var52 /* : Bool */;
2345 int cltype53;
2346 int idtype54;
2347 const char* var_class_name55;
2348 long var56 /* : Int */;
2349 val* var57 /* : Text */;
2350 short int var58 /* : Bool */;
2351 short int var59 /* : Bool */;
2352 val* var_other /* var other: nullable Object */;
2353 short int var61 /* : Bool */;
2354 short int var62 /* : Bool */;
2355 val* var63 /* : String */;
2356 var_extension = p0;
2357 {
2358 var1 = ((long(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__length]))(self); /* length on <self:String>*/
2359 }
2360 {
2361 { /* Inline kernel#Int#- (var1,1l) on <var1:Int> */
2362 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
2363 /* <1l:Int> isa OTHER */
2364 var4 = 1; /* easy <1l:Int> isa OTHER*/
2365 if (unlikely(!var4)) {
2366 var_class_name = type_core__Int.name;
2367 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2368 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
2369 fatal_exit(1);
2370 }
2371 var5 = var1 - 1l;
2372 var2 = var5;
2373 goto RET_LABEL3;
2374 RET_LABEL3:(void)0;
2375 }
2376 }
2377 var_l = var2;
2378 for(;;) {
2379 {
2380 { /* Inline kernel#Int#> (var_l,0l) on <var_l:Int> */
2381 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
2382 /* <0l:Int> isa OTHER */
2383 var9 = 1; /* easy <0l:Int> isa OTHER*/
2384 if (unlikely(!var9)) {
2385 var_class_name12 = type_core__Int.name;
2386 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name12);
2387 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
2388 fatal_exit(1);
2389 }
2390 var13 = var_l > 0l;
2391 var7 = var13;
2392 goto RET_LABEL8;
2393 RET_LABEL8:(void)0;
2394 }
2395 }
2396 var_ = var7;
2397 if (var7){
2398 {
2399 var14 = ((val*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__chars]))(self); /* chars on <self:String>*/
2400 }
2401 {
2402 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]>*/
2403 }
2404 {
2405 { /* Inline kernel#Char#== (var15,'/') on <var15:nullable Object(Char)> */
2406 var19 = (uint32_t)((long)(var15)>>2);
2407 var18 = var19 == '/';
2408 var16 = var18;
2409 goto RET_LABEL17;
2410 RET_LABEL17:(void)0;
2411 }
2412 }
2413 var6 = var16;
2414 } else {
2415 var6 = var_;
2416 }
2417 if (var6){
2418 {
2419 { /* Inline kernel#Int#- (var_l,1l) on <var_l:Int> */
2420 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
2421 /* <1l:Int> isa OTHER */
2422 var22 = 1; /* easy <1l:Int> isa OTHER*/
2423 if (unlikely(!var22)) {
2424 var_class_name25 = type_core__Int.name;
2425 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name25);
2426 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
2427 fatal_exit(1);
2428 }
2429 var26 = var_l - 1l;
2430 var20 = var26;
2431 goto RET_LABEL21;
2432 RET_LABEL21:(void)0;
2433 }
2434 }
2435 var_l = var20;
2436 } else {
2437 goto BREAK_label;
2438 }
2439 }
2440 BREAK_label: (void)0;
2441 {
2442 { /* Inline kernel#Int#== (var_l,0l) on <var_l:Int> */
2443 var29 = var_l == 0l;
2444 var27 = var29;
2445 goto RET_LABEL28;
2446 RET_LABEL28:(void)0;
2447 }
2448 }
2449 if (var27){
2450 if (likely(varonce!=NULL)) {
2451 var30 = varonce;
2452 } else {
2453 var31 = "/";
2454 var32 = core__flat___NativeString___to_s_full(var31, 1l, 1l);
2455 var30 = var32;
2456 varonce = var30;
2457 }
2458 var = var30;
2459 goto RET_LABEL;
2460 } else {
2461 }
2462 {
2463 var33 = ((val*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__chars]))(self); /* chars on <self:String>*/
2464 }
2465 {
2466 var34 = (val*)((long)('/')<<2|2);
2467 var35 = ((long(*)(val* self, val* p0, long p1))((((long)var33&3)?class_info[((long)var33&3)]:var33->class)->vft[COLOR_core__abstract_collection__SequenceRead__last_index_of_from]))(var33, var34, var_l); /* last_index_of_from on <var33:SequenceRead[Char]>*/
2468 }
2469 var_pos = var35;
2470 var_n = self;
2471 {
2472 { /* Inline kernel#Int#>= (var_pos,0l) on <var_pos:Int> */
2473 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
2474 /* <0l:Int> isa OTHER */
2475 var38 = 1; /* easy <0l:Int> isa OTHER*/
2476 if (unlikely(!var38)) {
2477 var_class_name41 = type_core__Int.name;
2478 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name41);
2479 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 729);
2480 fatal_exit(1);
2481 }
2482 var42 = var_pos >= 0l;
2483 var36 = var42;
2484 goto RET_LABEL37;
2485 RET_LABEL37:(void)0;
2486 }
2487 }
2488 if (var36){
2489 {
2490 { /* Inline kernel#Int#+ (var_pos,1l) on <var_pos:Int> */
2491 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
2492 /* <1l:Int> isa OTHER */
2493 var45 = 1; /* easy <1l:Int> isa OTHER*/
2494 if (unlikely(!var45)) {
2495 var_class_name48 = type_core__Int.name;
2496 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name48);
2497 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
2498 fatal_exit(1);
2499 }
2500 var49 = var_pos + 1l;
2501 var43 = var49;
2502 goto RET_LABEL44;
2503 RET_LABEL44:(void)0;
2504 }
2505 }
2506 {
2507 { /* Inline kernel#Int#- (var_l,var_pos) on <var_l:Int> */
2508 /* Covariant cast for argument 0 (i) <var_pos:Int> isa OTHER */
2509 /* <var_pos:Int> isa OTHER */
2510 var52 = 1; /* easy <var_pos:Int> isa OTHER*/
2511 if (unlikely(!var52)) {
2512 var_class_name55 = type_core__Int.name;
2513 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name55);
2514 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
2515 fatal_exit(1);
2516 }
2517 var56 = var_l - var_pos;
2518 var50 = var56;
2519 goto RET_LABEL51;
2520 RET_LABEL51:(void)0;
2521 }
2522 }
2523 {
2524 var57 = ((val*(*)(val* self, long p0, long p1))(self->class->vft[COLOR_core__abstract_text__Text__substring]))(self, var43, var50); /* substring on <self:String>*/
2525 }
2526 var_n = var57;
2527 } else {
2528 }
2529 if (var_extension == NULL) {
2530 var58 = 0; /* is null */
2531 } else {
2532 var58 = 1; /* arg is null and recv is not */
2533 }
2534 if (0) {
2535 { /* Inline kernel#Object#!= (var_extension,((val*)NULL)) on <var_extension:nullable String> */
2536 var_other = ((val*)NULL);
2537 {
2538 var61 = ((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)>*/
2539 }
2540 var62 = !var61;
2541 var59 = var62;
2542 goto RET_LABEL60;
2543 RET_LABEL60:(void)0;
2544 }
2545 var58 = var59;
2546 }
2547 if (var58){
2548 {
2549 var63 = core__file___String___strip_extension(var_n, var_extension);
2550 }
2551 var = var63;
2552 goto RET_LABEL;
2553 } else {
2554 var = var_n;
2555 goto RET_LABEL;
2556 }
2557 RET_LABEL:;
2558 return var;
2559 }
2560 /* method file#String#dirname for (self: String): String */
2561 val* core__file___String___dirname(val* self) {
2562 val* var /* : String */;
2563 long var1 /* : Int */;
2564 long var2 /* : Int */;
2565 short int var4 /* : Bool */;
2566 int cltype;
2567 int idtype;
2568 const char* var_class_name;
2569 long var5 /* : Int */;
2570 long var_l /* var l: Int */;
2571 short int var6 /* : Bool */;
2572 short int var7 /* : Bool */;
2573 short int var9 /* : Bool */;
2574 int cltype10;
2575 int idtype11;
2576 const char* var_class_name12;
2577 short int var13 /* : Bool */;
2578 short int var_ /* var : Bool */;
2579 val* var14 /* : SequenceRead[Char] */;
2580 val* var15 /* : nullable Object */;
2581 short int var16 /* : Bool */;
2582 short int var18 /* : Bool */;
2583 uint32_t var19 /* : Char */;
2584 long var20 /* : Int */;
2585 short int var22 /* : Bool */;
2586 int cltype23;
2587 int idtype24;
2588 const char* var_class_name25;
2589 long var26 /* : Int */;
2590 val* var27 /* : SequenceRead[Char] */;
2591 val* var28 /* : nullable Object */;
2592 long var29 /* : Int */;
2593 long var_pos /* var pos: Int */;
2594 short int var30 /* : Bool */;
2595 short int var32 /* : Bool */;
2596 int cltype33;
2597 int idtype34;
2598 const char* var_class_name35;
2599 short int var36 /* : Bool */;
2600 val* var37 /* : Text */;
2601 short int var38 /* : Bool */;
2602 short int var40 /* : Bool */;
2603 static val* varonce;
2604 val* var41 /* : String */;
2605 char* var42 /* : NativeString */;
2606 val* var43 /* : String */;
2607 static val* varonce44;
2608 val* var45 /* : String */;
2609 char* var46 /* : NativeString */;
2610 val* var47 /* : String */;
2611 {
2612 var1 = ((long(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__length]))(self); /* length on <self:String>*/
2613 }
2614 {
2615 { /* Inline kernel#Int#- (var1,1l) on <var1:Int> */
2616 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
2617 /* <1l:Int> isa OTHER */
2618 var4 = 1; /* easy <1l:Int> isa OTHER*/
2619 if (unlikely(!var4)) {
2620 var_class_name = type_core__Int.name;
2621 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2622 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
2623 fatal_exit(1);
2624 }
2625 var5 = var1 - 1l;
2626 var2 = var5;
2627 goto RET_LABEL3;
2628 RET_LABEL3:(void)0;
2629 }
2630 }
2631 var_l = var2;
2632 for(;;) {
2633 {
2634 { /* Inline kernel#Int#> (var_l,0l) on <var_l:Int> */
2635 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
2636 /* <0l:Int> isa OTHER */
2637 var9 = 1; /* easy <0l:Int> isa OTHER*/
2638 if (unlikely(!var9)) {
2639 var_class_name12 = type_core__Int.name;
2640 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name12);
2641 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
2642 fatal_exit(1);
2643 }
2644 var13 = var_l > 0l;
2645 var7 = var13;
2646 goto RET_LABEL8;
2647 RET_LABEL8:(void)0;
2648 }
2649 }
2650 var_ = var7;
2651 if (var7){
2652 {
2653 var14 = ((val*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__chars]))(self); /* chars on <self:String>*/
2654 }
2655 {
2656 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]>*/
2657 }
2658 {
2659 { /* Inline kernel#Char#== (var15,'/') on <var15:nullable Object(Char)> */
2660 var19 = (uint32_t)((long)(var15)>>2);
2661 var18 = var19 == '/';
2662 var16 = var18;
2663 goto RET_LABEL17;
2664 RET_LABEL17:(void)0;
2665 }
2666 }
2667 var6 = var16;
2668 } else {
2669 var6 = var_;
2670 }
2671 if (var6){
2672 {
2673 { /* Inline kernel#Int#- (var_l,1l) on <var_l:Int> */
2674 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
2675 /* <1l:Int> isa OTHER */
2676 var22 = 1; /* easy <1l:Int> isa OTHER*/
2677 if (unlikely(!var22)) {
2678 var_class_name25 = type_core__Int.name;
2679 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name25);
2680 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
2681 fatal_exit(1);
2682 }
2683 var26 = var_l - 1l;
2684 var20 = var26;
2685 goto RET_LABEL21;
2686 RET_LABEL21:(void)0;
2687 }
2688 }
2689 var_l = var20;
2690 } else {
2691 goto BREAK_label;
2692 }
2693 }
2694 BREAK_label: (void)0;
2695 {
2696 var27 = ((val*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__chars]))(self); /* chars on <self:String>*/
2697 }
2698 {
2699 var28 = (val*)((long)('/')<<2|2);
2700 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]>*/
2701 }
2702 var_pos = var29;
2703 {
2704 { /* Inline kernel#Int#> (var_pos,0l) on <var_pos:Int> */
2705 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
2706 /* <0l:Int> isa OTHER */
2707 var32 = 1; /* easy <0l:Int> isa OTHER*/
2708 if (unlikely(!var32)) {
2709 var_class_name35 = type_core__Int.name;
2710 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name35);
2711 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
2712 fatal_exit(1);
2713 }
2714 var36 = var_pos > 0l;
2715 var30 = var36;
2716 goto RET_LABEL31;
2717 RET_LABEL31:(void)0;
2718 }
2719 }
2720 if (var30){
2721 {
2722 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>*/
2723 }
2724 var = var37;
2725 goto RET_LABEL;
2726 } else {
2727 {
2728 { /* Inline kernel#Int#== (var_pos,0l) on <var_pos:Int> */
2729 var40 = var_pos == 0l;
2730 var38 = var40;
2731 goto RET_LABEL39;
2732 RET_LABEL39:(void)0;
2733 }
2734 }
2735 if (var38){
2736 if (likely(varonce!=NULL)) {
2737 var41 = varonce;
2738 } else {
2739 var42 = "/";
2740 var43 = core__flat___NativeString___to_s_full(var42, 1l, 1l);
2741 var41 = var43;
2742 varonce = var41;
2743 }
2744 var = var41;
2745 goto RET_LABEL;
2746 } else {
2747 if (likely(varonce44!=NULL)) {
2748 var45 = varonce44;
2749 } else {
2750 var46 = ".";
2751 var47 = core__flat___NativeString___to_s_full(var46, 1l, 1l);
2752 var45 = var47;
2753 varonce44 = var45;
2754 }
2755 var = var45;
2756 goto RET_LABEL;
2757 }
2758 }
2759 RET_LABEL:;
2760 return var;
2761 }
2762 /* method file#String#realpath for (self: String): String */
2763 val* core__file___String___realpath(val* self) {
2764 val* var /* : String */;
2765 char* var1 /* : NativeString */;
2766 char* var2 /* : NativeString */;
2767 char* var4 /* : NativeString */;
2768 char* var_cs /* var cs: NativeString */;
2769 short int var5 /* : Bool */;
2770 val* var6 /* : FlatString */;
2771 val* var_res /* var res: FlatString */;
2772 val* var8 /* : Pointer */;
2773 void* var9 /* : Pointer for extern */;
2774 {
2775 var1 = ((char*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__to_cstring]))(self); /* to_cstring on <self:String>*/
2776 }
2777 {
2778 { /* Inline file#NativeString#file_realpath (var1) on <var1:NativeString> */
2779 var4 = file___NativeString_file_realpath___impl(var1);
2780 var2 = var4;
2781 goto RET_LABEL3;
2782 RET_LABEL3:(void)0;
2783 }
2784 }
2785 var_cs = var2;
2786 {
2787 var5 = core__file___String___file_exists(self);
2788 }
2789 if (unlikely(!var5)) {
2790 PRINT_ERROR("Runtime error: %s", "Assert failed");
2791 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 966);
2792 fatal_exit(1);
2793 }
2794 {
2795 var6 = core__flat___NativeString___to_s_with_copy(var_cs);
2796 }
2797 var_res = var6;
2798 {
2799 { /* Inline kernel#Pointer#free (var_cs) on <var_cs:NativeString> */
2800 var8 = BOX_core__Pointer(var_cs); /* autobox from NativeString to Pointer */
2801 var9 = ((struct instance_core__Pointer*)var8)->value; /* unboxing Pointer */
2802 kernel___Pointer_free___impl(var9);
2803 RET_LABEL7:(void)0;
2804 }
2805 }
2806 var = var_res;
2807 goto RET_LABEL;
2808 RET_LABEL:;
2809 return var;
2810 }
2811 /* method file#String#simplify_path for (self: String): String */
2812 val* core__file___String___simplify_path(val* self) {
2813 val* var /* : String */;
2814 static val* varonce;
2815 val* var1 /* : String */;
2816 char* var2 /* : NativeString */;
2817 val* var3 /* : String */;
2818 val* var4 /* : Array[String] */;
2819 val* var_a /* var a: Array[String] */;
2820 val* var5 /* : Array[String] */;
2821 val* var_a2 /* var a2: Array[String] */;
2822 val* var_ /* var : Array[String] */;
2823 val* var6 /* : IndexedIterator[nullable Object] */;
2824 val* var_7 /* var : IndexedIterator[String] */;
2825 short int var8 /* : Bool */;
2826 val* var9 /* : nullable Object */;
2827 val* var_x /* var x: String */;
2828 short int var10 /* : Bool */;
2829 static val* varonce11;
2830 val* var12 /* : String */;
2831 char* var13 /* : NativeString */;
2832 val* var14 /* : String */;
2833 short int var15 /* : Bool */;
2834 short int var_16 /* var : Bool */;
2835 short int var17 /* : Bool */;
2836 short int var18 /* : Bool */;
2837 short int var20 /* : Bool */;
2838 static val* varonce21;
2839 val* var22 /* : String */;
2840 char* var23 /* : NativeString */;
2841 val* var24 /* : String */;
2842 short int var25 /* : Bool */;
2843 short int var_26 /* var : Bool */;
2844 short int var27 /* : Bool */;
2845 short int var28 /* : Bool */;
2846 short int var29 /* : Bool */;
2847 short int var30 /* : Bool */;
2848 static val* varonce31;
2849 val* var32 /* : String */;
2850 char* var33 /* : NativeString */;
2851 val* var34 /* : String */;
2852 short int var35 /* : Bool */;
2853 short int var_36 /* var : Bool */;
2854 short int var37 /* : Bool */;
2855 short int var38 /* : Bool */;
2856 short int var_39 /* var : Bool */;
2857 val* var40 /* : nullable Object */;
2858 static val* varonce41;
2859 val* var42 /* : String */;
2860 char* var43 /* : NativeString */;
2861 val* var44 /* : String */;
2862 short int var45 /* : Bool */;
2863 val* var_other /* var other: nullable Object */;
2864 short int var47 /* : Bool */;
2865 short int var48 /* : Bool */;
2866 val* var49 /* : nullable Object */;
2867 static val* varonce50;
2868 val* var51 /* : String */;
2869 char* var52 /* : NativeString */;
2870 val* var53 /* : String */;
2871 short int var54 /* : Bool */;
2872 val* var55 /* : nullable Object */;
2873 val* var56 /* : nullable Object */;
2874 short int var57 /* : Bool */;
2875 short int var58 /* : Bool */;
2876 short int var59 /* : Bool */;
2877 short int var_60 /* var : Bool */;
2878 val* var61 /* : nullable Object */;
2879 static val* varonce62;
2880 val* var63 /* : String */;
2881 char* var64 /* : NativeString */;
2882 val* var65 /* : String */;
2883 short int var66 /* : Bool */;
2884 val* var67 /* : nullable Object */;
2885 short int var68 /* : Bool */;
2886 static val* varonce69;
2887 val* var70 /* : String */;
2888 char* var71 /* : NativeString */;
2889 val* var72 /* : String */;
2890 short int var73 /* : Bool */;
2891 long var74 /* : Int */;
2892 long var76 /* : Int */;
2893 short int var77 /* : Bool */;
2894 short int var79 /* : Bool */;
2895 short int var_80 /* var : Bool */;
2896 val* var81 /* : nullable Object */;
2897 static val* varonce82;
2898 val* var83 /* : String */;
2899 char* var84 /* : NativeString */;
2900 val* var85 /* : String */;
2901 short int var86 /* : Bool */;
2902 static val* varonce87;
2903 val* var88 /* : String */;
2904 char* var89 /* : NativeString */;
2905 val* var90 /* : String */;
2906 static val* varonce91;
2907 val* var92 /* : String */;
2908 char* var93 /* : NativeString */;
2909 val* var94 /* : String */;
2910 val* var95 /* : String */;
2911 if (likely(varonce!=NULL)) {
2912 var1 = varonce;
2913 } else {
2914 var2 = "/";
2915 var3 = core__flat___NativeString___to_s_full(var2, 1l, 1l);
2916 var1 = var3;
2917 varonce = var1;
2918 }
2919 {
2920 var4 = core__string_search___Text___split_with(self, var1);
2921 }
2922 var_a = var4;
2923 var5 = NEW_core__Array(&type_core__Array__core__String);
2924 {
2925 core___core__Array___core__kernel__Object__init(var5); /* Direct call array#Array#init on <var5:Array[String]>*/
2926 }
2927 var_a2 = var5;
2928 var_ = var_a;
2929 {
2930 var6 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
2931 }
2932 var_7 = var6;
2933 for(;;) {
2934 {
2935 var8 = ((short int(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_7); /* is_ok on <var_7:IndexedIterator[String]>*/
2936 }
2937 if (var8){
2938 } else {
2939 goto BREAK_label;
2940 }
2941 {
2942 var9 = ((val*(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_7); /* item on <var_7:IndexedIterator[String]>*/
2943 }
2944 var_x = var9;
2945 if (likely(varonce11!=NULL)) {
2946 var12 = varonce11;
2947 } else {
2948 var13 = ".";
2949 var14 = core__flat___NativeString___to_s_full(var13, 1l, 1l);
2950 var12 = var14;
2951 varonce11 = var12;
2952 }
2953 {
2954 var15 = ((short int(*)(val* self, val* p0))(var_x->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_x, var12); /* == on <var_x:String>*/
2955 }
2956 var_16 = var15;
2957 if (var15){
2958 {
2959 var17 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_a2);
2960 }
2961 var18 = !var17;
2962 var10 = var18;
2963 } else {
2964 var10 = var_16;
2965 }
2966 if (var10){
2967 goto BREAK_label19;
2968 } else {
2969 }
2970 if (likely(varonce21!=NULL)) {
2971 var22 = varonce21;
2972 } else {
2973 var23 = "";
2974 var24 = core__flat___NativeString___to_s_full(var23, 0l, 0l);
2975 var22 = var24;
2976 varonce21 = var22;
2977 }
2978 {
2979 var25 = ((short int(*)(val* self, val* p0))(var_x->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_x, var22); /* == on <var_x:String>*/
2980 }
2981 var_26 = var25;
2982 if (var25){
2983 {
2984 var27 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_a2);
2985 }
2986 var28 = !var27;
2987 var20 = var28;
2988 } else {
2989 var20 = var_26;
2990 }
2991 if (var20){
2992 goto BREAK_label19;
2993 } else {
2994 }
2995 if (likely(varonce31!=NULL)) {
2996 var32 = varonce31;
2997 } else {
2998 var33 = "..";
2999 var34 = core__flat___NativeString___to_s_full(var33, 2l, 2l);
3000 var32 = var34;
3001 varonce31 = var32;
3002 }
3003 {
3004 var35 = ((short int(*)(val* self, val* p0))(var_x->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_x, var32); /* == on <var_x:String>*/
3005 }
3006 var_36 = var35;
3007 if (var35){
3008 {
3009 var37 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_a2);
3010 }
3011 var38 = !var37;
3012 var30 = var38;
3013 } else {
3014 var30 = var_36;
3015 }
3016 var_39 = var30;
3017 if (var30){
3018 {
3019 var40 = core___core__SequenceRead___last(var_a2);
3020 }
3021 if (likely(varonce41!=NULL)) {
3022 var42 = varonce41;
3023 } else {
3024 var43 = "..";
3025 var44 = core__flat___NativeString___to_s_full(var43, 2l, 2l);
3026 var42 = var44;
3027 varonce41 = var42;
3028 }
3029 {
3030 { /* Inline kernel#Object#!= (var40,var42) on <var40:nullable Object(String)> */
3031 var_other = var42;
3032 {
3033 var47 = ((short int(*)(val* self, val* p0))(var40->class->vft[COLOR_core__kernel__Object___61d_61d]))(var40, var_other); /* == on <var40:nullable Object(String)>*/
3034 }
3035 var48 = !var47;
3036 var45 = var48;
3037 goto RET_LABEL46;
3038 RET_LABEL46:(void)0;
3039 }
3040 }
3041 var29 = var45;
3042 } else {
3043 var29 = var_39;
3044 }
3045 if (var29){
3046 {
3047 var49 = core___core__SequenceRead___last(var_a2);
3048 }
3049 if (likely(varonce50!=NULL)) {
3050 var51 = varonce50;
3051 } else {
3052 var52 = ".";
3053 var53 = core__flat___NativeString___to_s_full(var52, 1l, 1l);
3054 var51 = var53;
3055 varonce50 = var51;
3056 }
3057 {
3058 var54 = ((short int(*)(val* self, val* p0))(var49->class->vft[COLOR_core__kernel__Object___61d_61d]))(var49, var51); /* == on <var49:nullable Object(String)>*/
3059 }
3060 if (var54){
3061 {
3062 var55 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_a2);
3063 }
3064 } else {
3065 {
3066 var56 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_a2);
3067 }
3068 goto BREAK_label19;
3069 }
3070 } else {
3071 {
3072 var58 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_a2);
3073 }
3074 var59 = !var58;
3075 var_60 = var59;
3076 if (var59){
3077 {
3078 var61 = core___core__SequenceRead___last(var_a2);
3079 }
3080 if (likely(varonce62!=NULL)) {
3081 var63 = varonce62;
3082 } else {
3083 var64 = ".";
3084 var65 = core__flat___NativeString___to_s_full(var64, 1l, 1l);
3085 var63 = var65;
3086 varonce62 = var63;
3087 }
3088 {
3089 var66 = ((short int(*)(val* self, val* p0))(var61->class->vft[COLOR_core__kernel__Object___61d_61d]))(var61, var63); /* == on <var61:nullable Object(String)>*/
3090 }
3091 var57 = var66;
3092 } else {
3093 var57 = var_60;
3094 }
3095 if (var57){
3096 {
3097 var67 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_a2);
3098 }
3099 } else {
3100 }
3101 }
3102 {
3103 core___core__AbstractArray___core__abstract_collection__Sequence__push(var_a2, var_x); /* Direct call array#AbstractArray#push on <var_a2:Array[String]>*/
3104 }
3105 BREAK_label19: (void)0;
3106 {
3107 ((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_7); /* next on <var_7:IndexedIterator[String]>*/
3108 }
3109 }
3110 BREAK_label: (void)0;
3111 {
3112 ((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_7); /* finish on <var_7:IndexedIterator[String]>*/
3113 }
3114 {
3115 var68 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_a2);
3116 }
3117 if (var68){
3118 if (likely(varonce69!=NULL)) {
3119 var70 = varonce69;
3120 } else {
3121 var71 = ".";
3122 var72 = core__flat___NativeString___to_s_full(var71, 1l, 1l);
3123 var70 = var72;
3124 varonce69 = var70;
3125 }
3126 var = var70;
3127 goto RET_LABEL;
3128 } else {
3129 }
3130 {
3131 { /* Inline array#AbstractArrayRead#length (var_a2) on <var_a2:Array[String]> */
3132 var76 = var_a2->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_a2:Array[String]> */
3133 var74 = var76;
3134 RET_LABEL75:(void)0;
3135 }
3136 }
3137 {
3138 { /* Inline kernel#Int#== (var74,1l) on <var74:Int> */
3139 var79 = var74 == 1l;
3140 var77 = var79;
3141 goto RET_LABEL78;
3142 RET_LABEL78:(void)0;
3143 }
3144 }
3145 var_80 = var77;
3146 if (var77){
3147 {
3148 var81 = core___core__SequenceRead___Collection__first(var_a2);
3149 }
3150 if (likely(varonce82!=NULL)) {
3151 var83 = varonce82;
3152 } else {
3153 var84 = "";
3154 var85 = core__flat___NativeString___to_s_full(var84, 0l, 0l);
3155 var83 = var85;
3156 varonce82 = var83;
3157 }
3158 {
3159 var86 = ((short int(*)(val* self, val* p0))(var81->class->vft[COLOR_core__kernel__Object___61d_61d]))(var81, var83); /* == on <var81:nullable Object(String)>*/
3160 }
3161 var73 = var86;
3162 } else {
3163 var73 = var_80;
3164 }
3165 if (var73){
3166 if (likely(varonce87!=NULL)) {
3167 var88 = varonce87;
3168 } else {
3169 var89 = "/";
3170 var90 = core__flat___NativeString___to_s_full(var89, 1l, 1l);
3171 var88 = var90;
3172 varonce87 = var88;
3173 }
3174 var = var88;
3175 goto RET_LABEL;
3176 } else {
3177 }
3178 if (likely(varonce91!=NULL)) {
3179 var92 = varonce91;
3180 } else {
3181 var93 = "/";
3182 var94 = core__flat___NativeString___to_s_full(var93, 1l, 1l);
3183 var92 = var94;
3184 varonce91 = var92;
3185 }
3186 {
3187 var95 = core__abstract_text___Collection___join(var_a2, var92);
3188 }
3189 var = var95;
3190 goto RET_LABEL;
3191 RET_LABEL:;
3192 return var;
3193 }
3194 /* method file#String#join_path for (self: String, String): String */
3195 val* core__file___String___join_path(val* self, val* p0) {
3196 val* var /* : String */;
3197 val* var_path /* var path: String */;
3198 short int var1 /* : Bool */;
3199 short int var2 /* : Bool */;
3200 val* var3 /* : SequenceRead[Char] */;
3201 val* var4 /* : nullable Object */;
3202 short int var5 /* : Bool */;
3203 short int var7 /* : Bool */;
3204 uint32_t var8 /* : Char */;
3205 uint32_t var9 /* : Char */;
3206 short int var10 /* : Bool */;
3207 short int var12 /* : Bool */;
3208 val* var13 /* : NativeArray[String] */;
3209 static val* varonce;
3210 val* var14 /* : String */;
3211 val* var16 /* : NativeArray[String] */;
3212 static val* varonce15;
3213 static val* varonce17;
3214 val* var18 /* : String */;
3215 char* var19 /* : NativeString */;
3216 val* var20 /* : String */;
3217 val* var21 /* : String */;
3218 var_path = p0;
3219 {
3220 var1 = ((short int(*)(val* self))(var_path->class->vft[COLOR_core__abstract_text__Text__is_empty]))(var_path); /* is_empty on <var_path:String>*/
3221 }
3222 if (var1){
3223 var = self;
3224 goto RET_LABEL;
3225 } else {
3226 }
3227 {
3228 var2 = ((short int(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__is_empty]))(self); /* is_empty on <self:String>*/
3229 }
3230 if (var2){
3231 var = var_path;
3232 goto RET_LABEL;
3233 } else {
3234 }
3235 {
3236 var3 = ((val*(*)(val* self))(var_path->class->vft[COLOR_core__abstract_text__Text__chars]))(var_path); /* chars on <var_path:String>*/
3237 }
3238 {
3239 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]>*/
3240 }
3241 {
3242 { /* Inline kernel#Char#== (var4,'/') on <var4:nullable Object(Char)> */
3243 var8 = (uint32_t)((long)(var4)>>2);
3244 var7 = var8 == '/';
3245 var5 = var7;
3246 goto RET_LABEL6;
3247 RET_LABEL6:(void)0;
3248 }
3249 }
3250 if (var5){
3251 var = var_path;
3252 goto RET_LABEL;
3253 } else {
3254 }
3255 {
3256 var9 = core___core__Text___last(self);
3257 }
3258 {
3259 { /* Inline kernel#Char#== (var9,'/') on <var9:Char> */
3260 var12 = var9 == '/';
3261 var10 = var12;
3262 goto RET_LABEL11;
3263 RET_LABEL11:(void)0;
3264 }
3265 }
3266 if (var10){
3267 if (unlikely(varonce==NULL)) {
3268 var13 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
3269 } else {
3270 var13 = varonce;
3271 varonce = NULL;
3272 }
3273 ((struct instance_core__NativeArray*)var13)->values[0]=self;
3274 ((struct instance_core__NativeArray*)var13)->values[1]=var_path;
3275 {
3276 var14 = ((val*(*)(val* self))(var13->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var13); /* native_to_s on <var13:NativeArray[String]>*/
3277 }
3278 varonce = var13;
3279 var = var14;
3280 goto RET_LABEL;
3281 } else {
3282 }
3283 if (unlikely(varonce15==NULL)) {
3284 var16 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
3285 if (likely(varonce17!=NULL)) {
3286 var18 = varonce17;
3287 } else {
3288 var19 = "/";
3289 var20 = core__flat___NativeString___to_s_full(var19, 1l, 1l);
3290 var18 = var20;
3291 varonce17 = var18;
3292 }
3293 ((struct instance_core__NativeArray*)var16)->values[1]=var18;
3294 } else {
3295 var16 = varonce15;
3296 varonce15 = NULL;
3297 }
3298 ((struct instance_core__NativeArray*)var16)->values[0]=self;
3299 ((struct instance_core__NativeArray*)var16)->values[2]=var_path;
3300 {
3301 var21 = ((val*(*)(val* self))(var16->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var16); /* native_to_s on <var16:NativeArray[String]>*/
3302 }
3303 varonce15 = var16;
3304 var = var21;
3305 goto RET_LABEL;
3306 RET_LABEL:;
3307 return var;
3308 }
3309 /* method file#String#/ for (self: String, String): String */
3310 val* core__file___String____47d(val* self, val* p0) {
3311 val* var /* : String */;
3312 val* var_path /* var path: String */;
3313 val* var1 /* : String */;
3314 var_path = p0;
3315 {
3316 var1 = core__file___String___join_path(self, var_path);
3317 }
3318 var = var1;
3319 goto RET_LABEL;
3320 RET_LABEL:;
3321 return var;
3322 }
3323 /* method file#String#relpath for (self: String, String): String */
3324 val* core__file___String___relpath(val* self, val* p0) {
3325 val* var /* : String */;
3326 val* var_dest /* var dest: String */;
3327 val* var1 /* : Sys */;
3328 val* var2 /* : String */;
3329 val* var_cwd /* var cwd: String */;
3330 val* var3 /* : String */;
3331 val* var4 /* : String */;
3332 static val* varonce;
3333 val* var5 /* : String */;
3334 char* var6 /* : NativeString */;
3335 val* var7 /* : String */;
3336 val* var8 /* : Array[String] */;
3337 val* var_from /* var from: Array[String] */;
3338 val* var9 /* : nullable Object */;
3339 short int var10 /* : Bool */;
3340 val* var11 /* : nullable Object */;
3341 val* var12 /* : String */;
3342 val* var13 /* : String */;
3343 static val* varonce14;
3344 val* var15 /* : String */;
3345 char* var16 /* : NativeString */;
3346 val* var17 /* : String */;
3347 val* var18 /* : Array[String] */;
3348 val* var_to /* var to: Array[String] */;
3349 val* var19 /* : nullable Object */;
3350 short int var20 /* : Bool */;
3351 val* var21 /* : nullable Object */;
3352 short int var22 /* : Bool */;
3353 short int var23 /* : Bool */;
3354 short int var24 /* : Bool */;
3355 short int var25 /* : Bool */;
3356 short int var_ /* var : Bool */;
3357 short int var26 /* : Bool */;
3358 short int var27 /* : Bool */;
3359 short int var_28 /* var : Bool */;
3360 val* var29 /* : nullable Object */;
3361 val* var30 /* : nullable Object */;
3362 short int var31 /* : Bool */;
3363 val* var32 /* : nullable Object */;
3364 val* var33 /* : nullable Object */;
3365 long var34 /* : Int */;
3366 long var36 /* : Int */;
3367 long var_from_len /* var from_len: Int */;
3368 short int var37 /* : Bool */;
3369 short int var39 /* : Bool */;
3370 static val* varonce40;
3371 val* var41 /* : String */;
3372 char* var42 /* : NativeString */;
3373 val* var43 /* : String */;
3374 val* var44 /* : String */;
3375 static val* varonce45;
3376 val* var46 /* : String */;
3377 char* var47 /* : NativeString */;
3378 val* var48 /* : String */;
3379 long var49 /* : Int */;
3380 short int var51 /* : Bool */;
3381 int cltype;
3382 int idtype;
3383 const char* var_class_name;
3384 long var52 /* : Int */;
3385 val* var53 /* : String */;
3386 static val* varonce54;
3387 val* var55 /* : String */;
3388 char* var56 /* : NativeString */;
3389 val* var57 /* : String */;
3390 val* var58 /* : String */;
3391 val* var_up /* var up: String */;
3392 short int var59 /* : Bool */;
3393 static val* varonce60;
3394 val* var61 /* : String */;
3395 char* var62 /* : NativeString */;
3396 val* var63 /* : String */;
3397 val* var64 /* : String */;
3398 static val* varonce65;
3399 val* var66 /* : String */;
3400 char* var67 /* : NativeString */;
3401 val* var68 /* : String */;
3402 val* var69 /* : String */;
3403 val* var70 /* : String */;
3404 val* var_res /* var res: String */;
3405 var_dest = p0;
3406 var1 = glob_sys;
3407 {
3408 var2 = core__file___Sys___getcwd(var1);
3409 }
3410 var_cwd = var2;
3411 {
3412 var3 = core__file___String____47d(var_cwd, self);
3413 }
3414 {
3415 var4 = core__file___String___simplify_path(var3);
3416 }
3417 if (likely(varonce!=NULL)) {
3418 var5 = varonce;
3419 } else {
3420 var6 = "/";
3421 var7 = core__flat___NativeString___to_s_full(var6, 1l, 1l);
3422 var5 = var7;
3423 varonce = var5;
3424 }
3425 {
3426 var8 = core__string_search___Text___split(var4, var5);
3427 }
3428 var_from = var8;
3429 {
3430 var9 = core___core__SequenceRead___last(var_from);
3431 }
3432 {
3433 var10 = ((short int(*)(val* self))(var9->class->vft[COLOR_core__abstract_text__Text__is_empty]))(var9); /* is_empty on <var9:nullable Object(String)>*/
3434 }
3435 if (var10){
3436 {
3437 var11 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_from);
3438 }
3439 } else {
3440 }
3441 {
3442 var12 = core__file___String____47d(var_cwd, var_dest);
3443 }
3444 {
3445 var13 = core__file___String___simplify_path(var12);
3446 }
3447 if (likely(varonce14!=NULL)) {
3448 var15 = varonce14;
3449 } else {
3450 var16 = "/";
3451 var17 = core__flat___NativeString___to_s_full(var16, 1l, 1l);
3452 var15 = var17;
3453 varonce14 = var15;
3454 }
3455 {
3456 var18 = core__string_search___Text___split(var13, var15);
3457 }
3458 var_to = var18;
3459 {
3460 var19 = core___core__SequenceRead___last(var_to);
3461 }
3462 {
3463 var20 = ((short int(*)(val* self))(var19->class->vft[COLOR_core__abstract_text__Text__is_empty]))(var19); /* is_empty on <var19:nullable Object(String)>*/
3464 }
3465 if (var20){
3466 {
3467 var21 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_to);
3468 }
3469 } else {
3470 }
3471 for(;;) {
3472 {
3473 var24 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_from);
3474 }
3475 var25 = !var24;
3476 var_ = var25;
3477 if (var25){
3478 {
3479 var26 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_to);
3480 }
3481 var27 = !var26;
3482 var23 = var27;
3483 } else {
3484 var23 = var_;
3485 }
3486 var_28 = var23;
3487 if (var23){
3488 {
3489 var29 = core___core__SequenceRead___Collection__first(var_from);
3490 }
3491 {
3492 var30 = core___core__SequenceRead___Collection__first(var_to);
3493 }
3494 {
3495 var31 = ((short int(*)(val* self, val* p0))(var29->class->vft[COLOR_core__kernel__Object___61d_61d]))(var29, var30); /* == on <var29:nullable Object(String)>*/
3496 }
3497 var22 = var31;
3498 } else {
3499 var22 = var_28;
3500 }
3501 if (var22){
3502 {
3503 var32 = core___core__AbstractArray___core__abstract_collection__Sequence__shift(var_from);
3504 }
3505 {
3506 var33 = core___core__AbstractArray___core__abstract_collection__Sequence__shift(var_to);
3507 }
3508 } else {
3509 goto BREAK_label;
3510 }
3511 }
3512 BREAK_label: (void)0;
3513 {
3514 { /* Inline array#AbstractArrayRead#length (var_from) on <var_from:Array[String]> */
3515 var36 = var_from->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_from:Array[String]> */
3516 var34 = var36;
3517 RET_LABEL35:(void)0;
3518 }
3519 }
3520 var_from_len = var34;
3521 {
3522 { /* Inline kernel#Int#== (var_from_len,0l) on <var_from_len:Int> */
3523 var39 = var_from_len == 0l;
3524 var37 = var39;
3525 goto RET_LABEL38;
3526 RET_LABEL38:(void)0;
3527 }
3528 }
3529 if (var37){
3530 if (likely(varonce40!=NULL)) {
3531 var41 = varonce40;
3532 } else {
3533 var42 = "/";
3534 var43 = core__flat___NativeString___to_s_full(var42, 1l, 1l);
3535 var41 = var43;
3536 varonce40 = var41;
3537 }
3538 {
3539 var44 = core__abstract_text___Collection___join(var_to, var41);
3540 }
3541 var = var44;
3542 goto RET_LABEL;
3543 } else {
3544 }
3545 if (likely(varonce45!=NULL)) {
3546 var46 = varonce45;
3547 } else {
3548 var47 = "../";
3549 var48 = core__flat___NativeString___to_s_full(var47, 3l, 3l);
3550 var46 = var48;
3551 varonce45 = var46;
3552 }
3553 {
3554 { /* Inline kernel#Int#- (var_from_len,1l) on <var_from_len:Int> */
3555 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
3556 /* <1l:Int> isa OTHER */
3557 var51 = 1; /* easy <1l:Int> isa OTHER*/
3558 if (unlikely(!var51)) {
3559 var_class_name = type_core__Int.name;
3560 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3561 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
3562 fatal_exit(1);
3563 }
3564 var52 = var_from_len - 1l;
3565 var49 = var52;
3566 goto RET_LABEL50;
3567 RET_LABEL50:(void)0;
3568 }
3569 }
3570 {
3571 var53 = ((val*(*)(val* self, long p0))(var46->class->vft[COLOR_core__abstract_text__String___42d]))(var46, var49); /* * on <var46:String>*/
3572 }
3573 if (likely(varonce54!=NULL)) {
3574 var55 = varonce54;
3575 } else {
3576 var56 = "..";
3577 var57 = core__flat___NativeString___to_s_full(var56, 2l, 2l);
3578 var55 = var57;
3579 varonce54 = var55;
3580 }
3581 {
3582 var58 = ((val*(*)(val* self, val* p0))(var53->class->vft[COLOR_core__abstract_text__String___43d]))(var53, var55); /* + on <var53:String>*/
3583 }
3584 var_up = var58;
3585 {
3586 var59 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_to);
3587 }
3588 if (var59){
3589 var = var_up;
3590 goto RET_LABEL;
3591 } else {
3592 }
3593 if (likely(varonce60!=NULL)) {
3594 var61 = varonce60;
3595 } else {
3596 var62 = "/";
3597 var63 = core__flat___NativeString___to_s_full(var62, 1l, 1l);
3598 var61 = var63;
3599 varonce60 = var61;
3600 }
3601 {
3602 var64 = ((val*(*)(val* self, val* p0))(var_up->class->vft[COLOR_core__abstract_text__String___43d]))(var_up, var61); /* + on <var_up:String>*/
3603 }
3604 if (likely(varonce65!=NULL)) {
3605 var66 = varonce65;
3606 } else {
3607 var67 = "/";
3608 var68 = core__flat___NativeString___to_s_full(var67, 1l, 1l);
3609 var66 = var68;
3610 varonce65 = var66;
3611 }
3612 {
3613 var69 = core__abstract_text___Collection___join(var_to, var66);
3614 }
3615 {
3616 var70 = ((val*(*)(val* self, val* p0))(var64->class->vft[COLOR_core__abstract_text__String___43d]))(var64, var69); /* + on <var64:String>*/
3617 }
3618 var_res = var70;
3619 var = var_res;
3620 goto RET_LABEL;
3621 RET_LABEL:;
3622 return var;
3623 }
3624 /* method file#String#mkdir for (self: String): nullable Error */
3625 val* core__file___String___mkdir(val* self) {
3626 val* var /* : nullable Error */;
3627 static val* varonce;
3628 val* var1 /* : String */;
3629 char* var2 /* : NativeString */;
3630 val* var3 /* : String */;
3631 val* var4 /* : Array[String] */;
3632 val* var_dirs /* var dirs: Array[String] */;
3633 val* var5 /* : FlatBuffer */;
3634 val* var_path /* var path: FlatBuffer */;
3635 short int var7 /* : Bool */;
3636 val* var8 /* : nullable Object */;
3637 short int var9 /* : Bool */;
3638 val* var_error /* var error: nullable Error */;
3639 val* var_ /* var : Array[String] */;
3640 val* var10 /* : IndexedIterator[nullable Object] */;
3641 val* var_11 /* var : IndexedIterator[String] */;
3642 short int var12 /* : Bool */;
3643 val* var13 /* : nullable Object */;
3644 val* var_d /* var d: String */;
3645 short int var14 /* : Bool */;
3646 val* var16 /* : String */;
3647 char* var17 /* : NativeString */;
3648 short int var18 /* : Bool */;
3649 short int var20 /* : Bool */;
3650 short int var_res /* var res: Bool */;
3651 short int var21 /* : Bool */;
3652 short int var22 /* : Bool */;
3653 short int var_23 /* var : Bool */;
3654 short int var24 /* : Bool */;
3655 short int var25 /* : Bool */;
3656 val* var_other /* var other: nullable Object */;
3657 short int var27 /* : Bool */;
3658 short int var29 /* : Bool */;
3659 val* var30 /* : IOError */;
3660 val* var32 /* : NativeArray[String] */;
3661 static val* varonce31;
3662 static val* varonce33;
3663 val* var34 /* : String */;
3664 char* var35 /* : NativeString */;
3665 val* var36 /* : String */;
3666 static val* varonce37;
3667 val* var38 /* : String */;
3668 char* var39 /* : NativeString */;
3669 val* var40 /* : String */;
3670 val* var41 /* : String */;
3671 val* var42 /* : Sys */;
3672 val* var44 /* : Sys */;
3673 long var45 /* : Int */;
3674 long var47 /* : Int */;
3675 val* var48 /* : String */;
3676 val* var49 /* : String */;
3677 if (likely(varonce!=NULL)) {
3678 var1 = varonce;
3679 } else {
3680 var2 = "/";
3681 var3 = core__flat___NativeString___to_s_full(var2, 1l, 1l);
3682 var1 = var3;
3683 varonce = var1;
3684 }
3685 {
3686 var4 = core__string_search___Text___split_with(self, var1);
3687 }
3688 var_dirs = var4;
3689 var5 = NEW_core__FlatBuffer(&type_core__FlatBuffer);
3690 {
3691 { /* Inline flat#FlatBuffer#init (var5) on <var5:FlatBuffer> */
3692 {
3693 ((void(*)(val* self))(var5->class->vft[COLOR_core___core__FlatBuffer___core__kernel__Object__init]))(var5); /* init on <var5:FlatBuffer>*/
3694 }
3695 RET_LABEL6:(void)0;
3696 }
3697 }
3698 var_path = var5;
3699 {
3700 var7 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_dirs);
3701 }
3702 if (var7){
3703 var = ((val*)NULL);
3704 goto RET_LABEL;
3705 } else {
3706 }
3707 {
3708 var8 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_dirs, 0l);
3709 }
3710 {
3711 var9 = ((short int(*)(val* self))(var8->class->vft[COLOR_core__abstract_text__Text__is_empty]))(var8); /* is_empty on <var8:nullable Object(String)>*/
3712 }
3713 if (var9){
3714 {
3715 core___core__FlatBuffer___core__abstract_text__Buffer__add(var_path, '/'); /* Direct call flat#FlatBuffer#add on <var_path:FlatBuffer>*/
3716 }
3717 } else {
3718 }
3719 var_error = ((val*)NULL);
3720 var_ = var_dirs;
3721 {
3722 var10 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
3723 }
3724 var_11 = var10;
3725 for(;;) {
3726 {
3727 var12 = ((short int(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_11); /* is_ok on <var_11:IndexedIterator[String]>*/
3728 }
3729 if (var12){
3730 } else {
3731 goto BREAK_label;
3732 }
3733 {
3734 var13 = ((val*(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_11); /* item on <var_11:IndexedIterator[String]>*/
3735 }
3736 var_d = var13;
3737 {
3738 var14 = ((short int(*)(val* self))(var_d->class->vft[COLOR_core__abstract_text__Text__is_empty]))(var_d); /* is_empty on <var_d:String>*/
3739 }
3740 if (var14){
3741 goto BREAK_label15;
3742 } else {
3743 }
3744 {
3745 core___core__FlatBuffer___core__abstract_text__Buffer__append(var_path, var_d); /* Direct call flat#FlatBuffer#append on <var_path:FlatBuffer>*/
3746 }
3747 {
3748 core___core__FlatBuffer___core__abstract_text__Buffer__add(var_path, '/'); /* Direct call flat#FlatBuffer#add on <var_path:FlatBuffer>*/
3749 }
3750 {
3751 var16 = core___core__FlatBuffer___core__abstract_text__Object__to_s(var_path);
3752 }
3753 {
3754 var17 = ((char*(*)(val* self))(var16->class->vft[COLOR_core__abstract_text__Text__to_cstring]))(var16); /* to_cstring on <var16:String>*/
3755 }
3756 {
3757 { /* Inline file#NativeString#file_mkdir (var17) on <var17:NativeString> */
3758 var20 = file___NativeString_file_mkdir___impl(var17);
3759 var18 = var20;
3760 goto RET_LABEL19;
3761 RET_LABEL19:(void)0;
3762 }
3763 }
3764 var_res = var18;
3765 var22 = !var_res;
3766 var_23 = var22;
3767 if (var22){
3768 if (var_error == NULL) {
3769 var24 = 1; /* is null */
3770 } else {
3771 var24 = 0; /* arg is null but recv is not */
3772 }
3773 if (0) {
3774 { /* Inline kernel#Object#== (var_error,((val*)NULL)) on <var_error:nullable Error> */
3775 var_other = ((val*)NULL);
3776 {
3777 { /* Inline kernel#Object#is_same_instance (var_error,var_other) on <var_error:nullable Error(Error)> */
3778 var29 = var_error == var_other;
3779 var27 = var29;
3780 goto RET_LABEL28;
3781 RET_LABEL28:(void)0;
3782 }
3783 }
3784 var25 = var27;
3785 goto RET_LABEL26;
3786 RET_LABEL26:(void)0;
3787 }
3788 var24 = var25;
3789 }
3790 var21 = var24;
3791 } else {
3792 var21 = var_23;
3793 }
3794 if (var21){
3795 var30 = NEW_core__IOError(&type_core__IOError);
3796 if (unlikely(varonce31==NULL)) {
3797 var32 = NEW_core__NativeArray(4l, &type_core__NativeArray__core__String);
3798 if (likely(varonce33!=NULL)) {
3799 var34 = varonce33;
3800 } else {
3801 var35 = "Cannot create directory `";
3802 var36 = core__flat___NativeString___to_s_full(var35, 25l, 25l);
3803 var34 = var36;
3804 varonce33 = var34;
3805 }
3806 ((struct instance_core__NativeArray*)var32)->values[0]=var34;
3807 if (likely(varonce37!=NULL)) {
3808 var38 = varonce37;
3809 } else {
3810 var39 = "`: ";
3811 var40 = core__flat___NativeString___to_s_full(var39, 3l, 3l);
3812 var38 = var40;
3813 varonce37 = var38;
3814 }
3815 ((struct instance_core__NativeArray*)var32)->values[2]=var38;
3816 } else {
3817 var32 = varonce31;
3818 varonce31 = NULL;
3819 }
3820 {
3821 var41 = ((val*(*)(val* self))(var_path->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_path); /* to_s on <var_path:FlatBuffer>*/
3822 }
3823 ((struct instance_core__NativeArray*)var32)->values[1]=var41;
3824 {
3825 { /* Inline kernel#Object#sys (self) on <self:String> */
3826 var44 = glob_sys;
3827 var42 = var44;
3828 goto RET_LABEL43;
3829 RET_LABEL43:(void)0;
3830 }
3831 }
3832 {
3833 { /* Inline kernel#Sys#errno (var42) on <var42:Sys> */
3834 struct nitni_instance* var_for_c_0;
3835 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
3836 var_for_c_0->value = var42;
3837 var47 = kernel___Sys_errno___impl(var_for_c_0);
3838 var45 = var47;
3839 goto RET_LABEL46;
3840 RET_LABEL46:(void)0;
3841 }
3842 }
3843 {
3844 var48 = core__abstract_text___Int___strerror(var45);
3845 }
3846 ((struct instance_core__NativeArray*)var32)->values[3]=var48;
3847 {
3848 var49 = ((val*(*)(val* self))(var32->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var32); /* native_to_s on <var32:NativeArray[String]>*/
3849 }
3850 varonce31 = var32;
3851 {
3852 ((void(*)(val* self, val* p0))(var30->class->vft[COLOR_core__error__Error__message_61d]))(var30, var49); /* message= on <var30:IOError>*/
3853 }
3854 {
3855 ((void(*)(val* self))(var30->class->vft[COLOR_core__kernel__Object__init]))(var30); /* init on <var30:IOError>*/
3856 }
3857 var_error = var30;
3858 } else {
3859 }
3860 BREAK_label15: (void)0;
3861 {
3862 ((void(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_11); /* next on <var_11:IndexedIterator[String]>*/
3863 }
3864 }
3865 BREAK_label: (void)0;
3866 {
3867 ((void(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_11); /* finish on <var_11:IndexedIterator[String]>*/
3868 }
3869 var = var_error;
3870 goto RET_LABEL;
3871 RET_LABEL:;
3872 return var;
3873 }
3874 /* method file#String#file_extension for (self: String): nullable String */
3875 val* core__file___String___file_extension(val* self) {
3876 val* var /* : nullable String */;
3877 val* var1 /* : SequenceRead[Char] */;
3878 val* var2 /* : nullable Object */;
3879 long var3 /* : Int */;
3880 long var_last_slash /* var last_slash: Int */;
3881 short int var4 /* : Bool */;
3882 short int var6 /* : Bool */;
3883 int cltype;
3884 int idtype;
3885 const char* var_class_name;
3886 short int var7 /* : Bool */;
3887 long var8 /* : Int */;
3888 short int var10 /* : Bool */;
3889 int cltype11;
3890 int idtype12;
3891 const char* var_class_name13;
3892 long var14 /* : Int */;
3893 long var15 /* : Int */;
3894 val* var16 /* : Text */;
3895 {
3896 var1 = ((val*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__chars]))(self); /* chars on <self:String>*/
3897 }
3898 {
3899 var2 = (val*)((long)('.')<<2|2);
3900 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]>*/
3901 }
3902 var_last_slash = var3;
3903 {
3904 { /* Inline kernel#Int#> (var_last_slash,0l) on <var_last_slash:Int> */
3905 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
3906 /* <0l:Int> isa OTHER */
3907 var6 = 1; /* easy <0l:Int> isa OTHER*/
3908 if (unlikely(!var6)) {
3909 var_class_name = type_core__Int.name;
3910 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3911 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
3912 fatal_exit(1);
3913 }
3914 var7 = var_last_slash > 0l;
3915 var4 = var7;
3916 goto RET_LABEL5;
3917 RET_LABEL5:(void)0;
3918 }
3919 }
3920 if (var4){
3921 {
3922 { /* Inline kernel#Int#+ (var_last_slash,1l) on <var_last_slash:Int> */
3923 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
3924 /* <1l:Int> isa OTHER */
3925 var10 = 1; /* easy <1l:Int> isa OTHER*/
3926 if (unlikely(!var10)) {
3927 var_class_name13 = type_core__Int.name;
3928 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
3929 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
3930 fatal_exit(1);
3931 }
3932 var14 = var_last_slash + 1l;
3933 var8 = var14;
3934 goto RET_LABEL9;
3935 RET_LABEL9:(void)0;
3936 }
3937 }
3938 {
3939 var15 = ((long(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__length]))(self); /* length on <self:String>*/
3940 }
3941 {
3942 var16 = ((val*(*)(val* self, long p0, long p1))(self->class->vft[COLOR_core__abstract_text__Text__substring]))(self, var8, var15); /* substring on <self:String>*/
3943 }
3944 var = var16;
3945 goto RET_LABEL;
3946 } else {
3947 var = ((val*)NULL);
3948 goto RET_LABEL;
3949 }
3950 RET_LABEL:;
3951 return var;
3952 }
3953 /* method file#String#files for (self: String): Array[String] */
3954 val* core__file___String___files(val* self) {
3955 val* var /* : Array[String] */;
3956 val* var1 /* : Array[String] */;
3957 val* var_res /* var res: Array[String] */;
3958 val* var2 /* : NativeDir */;
3959 char* var3 /* : NativeString */;
3960 val* var4 /* : NativeDir */;
3961 val* var_d /* var d: NativeDir */;
3962 short int var5 /* : Bool */;
3963 short int var7 /* : Bool */;
3964 void* var8 /* : Pointer for extern */;
3965 char* var9 /* : NativeString */;
3966 char* var11 /* : NativeString */;
3967 void* var12 /* : NativeDir for extern */;
3968 char* var_de /* var de: NativeString */;
3969 short int var13 /* : Bool */;
3970 short int var15 /* : Bool */;
3971 val* var16 /* : Pointer */;
3972 void* var17 /* : Pointer for extern */;
3973 val* var18 /* : FlatString */;
3974 val* var_name /* var name: FlatString */;
3975 short int var19 /* : Bool */;
3976 static val* varonce;
3977 val* var20 /* : String */;
3978 char* var21 /* : NativeString */;
3979 val* var22 /* : String */;
3980 short int var23 /* : Bool */;
3981 short int var_ /* var : Bool */;
3982 static val* varonce24;
3983 val* var25 /* : String */;
3984 char* var26 /* : NativeString */;
3985 val* var27 /* : String */;
3986 short int var28 /* : Bool */;
3987 void* var31 /* : NativeDir for extern */;
3988 var1 = NEW_core__Array(&type_core__Array__core__String);
3989 {
3990 core___core__Array___core__kernel__Object__init(var1); /* Direct call array#Array#init on <var1:Array[String]>*/
3991 }
3992 var_res = var1;
3993 var2 = NEW_core__file__NativeDir(&type_core__file__NativeDir);
3994 {
3995 var3 = ((char*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__to_cstring]))(self); /* to_cstring on <self:String>*/
3996 }
3997 {
3998 var4 = core__file___core__file__NativeDir___opendir(var2, var3);
3999 }
4000 var_d = var4;
4001 {
4002 { /* Inline kernel#Pointer#address_is_null (var_d) on <var_d:NativeDir> */
4003 var8 = ((struct instance_core__Pointer*)var_d)->value; /* unboxing NativeDir */
4004 var7 = kernel___Pointer_address_is_null___impl(var8);
4005 var5 = var7;
4006 goto RET_LABEL6;
4007 RET_LABEL6:(void)0;
4008 }
4009 }
4010 if (var5){
4011 var = var_res;
4012 goto RET_LABEL;
4013 } else {
4014 }
4015 for(;;) {
4016 {
4017 { /* Inline file#NativeDir#readdir (var_d) on <var_d:NativeDir> */
4018 var12 = ((struct instance_core__Pointer*)var_d)->value; /* unboxing NativeDir */
4019 var11 = file___NativeDir_readdir___impl(var12);
4020 var9 = var11;
4021 goto RET_LABEL10;
4022 RET_LABEL10:(void)0;
4023 }
4024 }
4025 var_de = var9;
4026 {
4027 { /* Inline kernel#Pointer#address_is_null (var_de) on <var_de:NativeString> */
4028 var16 = BOX_core__Pointer(var_de); /* autobox from NativeString to Pointer */
4029 var17 = ((struct instance_core__Pointer*)var16)->value; /* unboxing Pointer */
4030 var15 = kernel___Pointer_address_is_null___impl(var17);
4031 var13 = var15;
4032 goto RET_LABEL14;
4033 RET_LABEL14:(void)0;
4034 }
4035 }
4036 if (var13){
4037 goto BREAK_label;
4038 } else {
4039 }
4040 {
4041 var18 = core__flat___NativeString___to_s_with_copy(var_de);
4042 }
4043 var_name = var18;
4044 if (likely(varonce!=NULL)) {
4045 var20 = varonce;
4046 } else {
4047 var21 = ".";
4048 var22 = core__flat___NativeString___to_s_full(var21, 1l, 1l);
4049 var20 = var22;
4050 varonce = var20;
4051 }
4052 {
4053 var23 = core___core__FlatString___core__kernel__Object___61d_61d(var_name, var20);
4054 }
4055 var_ = var23;
4056 if (var23){
4057 var19 = var_;
4058 } else {
4059 if (likely(varonce24!=NULL)) {
4060 var25 = varonce24;
4061 } else {
4062 var26 = "..";
4063 var27 = core__flat___NativeString___to_s_full(var26, 2l, 2l);
4064 var25 = var27;
4065 varonce24 = var25;
4066 }
4067 {
4068 var28 = core___core__FlatString___core__kernel__Object___61d_61d(var_name, var25);
4069 }
4070 var19 = var28;
4071 }
4072 if (var19){
4073 goto BREAK_label29;
4074 } else {
4075 }
4076 {
4077 core___core__Array___core__abstract_collection__SimpleCollection__add(var_res, var_name); /* Direct call array#Array#add on <var_res:Array[String]>*/
4078 }
4079 BREAK_label29: (void)0;
4080 }
4081 BREAK_label: (void)0;
4082 {
4083 { /* Inline file#NativeDir#closedir (var_d) on <var_d:NativeDir> */
4084 var31 = ((struct instance_core__Pointer*)var_d)->value; /* unboxing NativeDir */
4085 file___NativeDir_closedir___impl(var31);
4086 RET_LABEL30:(void)0;
4087 }
4088 }
4089 var = var_res;
4090 goto RET_LABEL;
4091 RET_LABEL:;
4092 return var;
4093 }
4094 /* method file#FlatString#write_native_to for (self: FlatString, FileWriter) */
4095 void core__file___FlatString___Text__write_native_to(val* self, val* p0) {
4096 val* var_s /* var s: FileWriter */;
4097 char* var /* : NativeString */;
4098 char* var2 /* : NativeString */;
4099 long var3 /* : Int */;
4100 long var5 /* : Int */;
4101 long var6 /* : Int */;
4102 long var8 /* : Int */;
4103 var_s = p0;
4104 {
4105 { /* Inline abstract_text#FlatText#items (self) on <self:FlatString> */
4106 var2 = self->attrs[COLOR_core__abstract_text__FlatText___items].str; /* _items on <self:FlatString> */
4107 var = var2;
4108 RET_LABEL1:(void)0;
4109 }
4110 }
4111 {
4112 { /* Inline flat#FlatString#first_byte (self) on <self:FlatString> */
4113 var5 = self->attrs[COLOR_core__flat__FlatString___first_byte].l; /* _first_byte on <self:FlatString> */
4114 var3 = var5;
4115 RET_LABEL4:(void)0;
4116 }
4117 }
4118 {
4119 { /* Inline abstract_text#FlatText#bytelen (self) on <self:FlatString> */
4120 var8 = self->attrs[COLOR_core__abstract_text__FlatText___bytelen].l; /* _bytelen on <self:FlatString> */
4121 var6 = var8;
4122 RET_LABEL7:(void)0;
4123 }
4124 }
4125 {
4126 core___core__FileWriter___write_native(var_s, var, var3, var6); /* Direct call file#FileWriter#write_native on <var_s:FileWriter>*/
4127 }
4128 RET_LABEL:;
4129 }
4130 /* method file#FlatString#file_extension for (self: FlatString): nullable String */
4131 val* core__file___FlatString___String__file_extension(val* self) {
4132 val* var /* : nullable String */;
4133 char* var1 /* : NativeString */;
4134 char* var_its /* var its: NativeString */;
4135 long var2 /* : Int */;
4136 long var_p /* var p: Int */;
4137 unsigned char var3 /* : Byte */;
4138 unsigned char var5 /* : Byte */;
4139 unsigned char var_c /* var c: Byte */;
4140 long var6 /* : Int */;
4141 long var_st /* var st: Int */;
4142 short int var7 /* : Bool */;
4143 short int var8 /* : Bool */;
4144 short int var10 /* : Bool */;
4145 int cltype;
4146 int idtype;
4147 const char* var_class_name;
4148 short int var11 /* : Bool */;
4149 short int var_ /* var : Bool */;
4150 unsigned char var12 /* : Byte */;
4151 short int var13 /* : Bool */;
4152 short int var15 /* : Bool */;
4153 short int var16 /* : Bool */;
4154 long var17 /* : Int */;
4155 short int var19 /* : Bool */;
4156 int cltype20;
4157 int idtype21;
4158 const char* var_class_name22;
4159 long var23 /* : Int */;
4160 unsigned char var24 /* : Byte */;
4161 unsigned char var26 /* : Byte */;
4162 short int var27 /* : Bool */;
4163 short int var29 /* : Bool */;
4164 int cltype30;
4165 int idtype31;
4166 const char* var_class_name32;
4167 short int var33 /* : Bool */;
4168 long var34 /* : Int */;
4169 long var_ls /* var ls: Int */;
4170 val* var35 /* : FlatString */;
4171 long var36 /* : Int */;
4172 short int var38 /* : Bool */;
4173 int cltype39;
4174 int idtype40;
4175 const char* var_class_name41;
4176 long var42 /* : Int */;
4177 long var43 /* : Int */;
4178 short int var45 /* : Bool */;
4179 int cltype46;
4180 int idtype47;
4181 const char* var_class_name48;
4182 long var49 /* : Int */;
4183 var1 = self->attrs[COLOR_core__abstract_text__FlatText___items].str; /* _items on <self:FlatString> */
4184 var_its = var1;
4185 {
4186 var2 = core__flat___FlatText___last_byte(self);
4187 }
4188 var_p = var2;
4189 {
4190 { /* Inline native#NativeString#[] (var_its,var_p) on <var_its:NativeString> */
4191 var5 = (unsigned char)((int)var_its[var_p]);
4192 var3 = var5;
4193 goto RET_LABEL4;
4194 RET_LABEL4:(void)0;
4195 }
4196 }
4197 var_c = var3;
4198 var6 = self->attrs[COLOR_core__flat__FlatString___first_byte].l; /* _first_byte on <self:FlatString> */
4199 var_st = var6;
4200 for(;;) {
4201 {
4202 { /* Inline kernel#Int#>= (var_p,var_st) on <var_p:Int> */
4203 /* Covariant cast for argument 0 (i) <var_st:Int> isa OTHER */
4204 /* <var_st:Int> isa OTHER */
4205 var10 = 1; /* easy <var_st:Int> isa OTHER*/
4206 if (unlikely(!var10)) {
4207 var_class_name = type_core__Int.name;
4208 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
4209 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 729);
4210 fatal_exit(1);
4211 }
4212 var11 = var_p >= var_st;
4213 var8 = var11;
4214 goto RET_LABEL9;
4215 RET_LABEL9:(void)0;
4216 }
4217 }
4218 var_ = var8;
4219 if (var8){
4220 {
4221 var12 = core___core__Char___ascii('.');
4222 }
4223 {
4224 { /* Inline kernel#Byte#!= (var_c,var12) on <var_c:Byte> */
4225 var15 = var_c == var12;
4226 var16 = !var15;
4227 var13 = var16;
4228 goto RET_LABEL14;
4229 RET_LABEL14:(void)0;
4230 }
4231 }
4232 var7 = var13;
4233 } else {
4234 var7 = var_;
4235 }
4236 if (var7){
4237 {
4238 { /* Inline kernel#Int#- (var_p,1l) on <var_p:Int> */
4239 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
4240 /* <1l:Int> isa OTHER */
4241 var19 = 1; /* easy <1l:Int> isa OTHER*/
4242 if (unlikely(!var19)) {
4243 var_class_name22 = type_core__Int.name;
4244 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name22);
4245 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
4246 fatal_exit(1);
4247 }
4248 var23 = var_p - 1l;
4249 var17 = var23;
4250 goto RET_LABEL18;
4251 RET_LABEL18:(void)0;
4252 }
4253 }
4254 var_p = var17;
4255 {
4256 { /* Inline native#NativeString#[] (var_its,var_p) on <var_its:NativeString> */
4257 var26 = (unsigned char)((int)var_its[var_p]);
4258 var24 = var26;
4259 goto RET_LABEL25;
4260 RET_LABEL25:(void)0;
4261 }
4262 }
4263 var_c = var24;
4264 } else {
4265 goto BREAK_label;
4266 }
4267 }
4268 BREAK_label: (void)0;
4269 {
4270 { /* Inline kernel#Int#<= (var_p,var_st) on <var_p:Int> */
4271 /* Covariant cast for argument 0 (i) <var_st:Int> isa OTHER */
4272 /* <var_st:Int> isa OTHER */
4273 var29 = 1; /* easy <var_st:Int> isa OTHER*/
4274 if (unlikely(!var29)) {
4275 var_class_name32 = type_core__Int.name;
4276 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name32);
4277 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
4278 fatal_exit(1);
4279 }
4280 var33 = var_p <= var_st;
4281 var27 = var33;
4282 goto RET_LABEL28;
4283 RET_LABEL28:(void)0;
4284 }
4285 }
4286 if (var27){
4287 var = ((val*)NULL);
4288 goto RET_LABEL;
4289 } else {
4290 }
4291 {
4292 var34 = core__flat___FlatText___last_byte(self);
4293 }
4294 var_ls = var34;
4295 var35 = NEW_core__FlatString(&type_core__FlatString);
4296 {
4297 { /* Inline kernel#Int#- (var_ls,var_p) on <var_ls:Int> */
4298 /* Covariant cast for argument 0 (i) <var_p:Int> isa OTHER */
4299 /* <var_p:Int> isa OTHER */
4300 var38 = 1; /* easy <var_p:Int> isa OTHER*/
4301 if (unlikely(!var38)) {
4302 var_class_name41 = type_core__Int.name;
4303 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name41);
4304 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
4305 fatal_exit(1);
4306 }
4307 var42 = var_ls - var_p;
4308 var36 = var42;
4309 goto RET_LABEL37;
4310 RET_LABEL37:(void)0;
4311 }
4312 }
4313 {
4314 { /* Inline kernel#Int#+ (var_p,1l) on <var_p:Int> */
4315 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
4316 /* <1l:Int> isa OTHER */
4317 var45 = 1; /* easy <1l:Int> isa OTHER*/
4318 if (unlikely(!var45)) {
4319 var_class_name48 = type_core__Int.name;
4320 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name48);
4321 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
4322 fatal_exit(1);
4323 }
4324 var49 = var_p + 1l;
4325 var43 = var49;
4326 goto RET_LABEL44;
4327 RET_LABEL44:(void)0;
4328 }
4329 }
4330 {
4331 core___core__FlatString___with_infos(var35, var_its, var36, var43); /* Direct call flat#FlatString#with_infos on <var35:FlatString>*/
4332 }
4333 var = var35;
4334 goto RET_LABEL;
4335 RET_LABEL:;
4336 return var;
4337 }
4338 /* method file#FlatString#basename for (self: FlatString, nullable String): String */
4339 val* core__file___FlatString___String__basename(val* self, val* p0) {
4340 val* var /* : String */;
4341 val* var_extension /* var extension: nullable String */;
4342 long var1 /* : Int */;
4343 long var_l /* var l: Int */;
4344 char* var2 /* : NativeString */;
4345 char* var_its /* var its: NativeString */;
4346 long var3 /* : Int */;
4347 long var_min /* var min: Int */;
4348 unsigned char var4 /* : Byte */;
4349 unsigned char var_sl /* var sl: Byte */;
4350 short int var5 /* : Bool */;
4351 short int var6 /* : Bool */;
4352 short int var8 /* : Bool */;
4353 int cltype;
4354 int idtype;
4355 const char* var_class_name;
4356 short int var9 /* : Bool */;
4357 short int var_ /* var : Bool */;
4358 unsigned char var10 /* : Byte */;
4359 unsigned char var12 /* : Byte */;
4360 short int var13 /* : Bool */;
4361 short int var15 /* : Bool */;
4362 long var16 /* : Int */;
4363 short int var18 /* : Bool */;
4364 int cltype19;
4365 int idtype20;
4366 const char* var_class_name21;
4367 long var22 /* : Int */;
4368 short int var23 /* : Bool */;
4369 short int var25 /* : Bool */;
4370 static val* varonce;
4371 val* var26 /* : String */;
4372 char* var27 /* : NativeString */;
4373 val* var28 /* : String */;
4374 long var_ns /* var ns: Int */;
4375 short int var29 /* : Bool */;
4376 short int var30 /* : Bool */;
4377 short int var32 /* : Bool */;
4378 int cltype33;
4379 int idtype34;
4380 const char* var_class_name35;
4381 short int var36 /* : Bool */;
4382 short int var_37 /* var : Bool */;
4383 unsigned char var38 /* : Byte */;
4384 unsigned char var40 /* : Byte */;
4385 short int var41 /* : Bool */;
4386 short int var43 /* : Bool */;
4387 short int var44 /* : Bool */;
4388 long var45 /* : Int */;
4389 short int var47 /* : Bool */;
4390 int cltype48;
4391 int idtype49;
4392 const char* var_class_name50;
4393 long var51 /* : Int */;
4394 val* var53 /* : FlatString */;
4395 long var54 /* : Int */;
4396 short int var56 /* : Bool */;
4397 int cltype57;
4398 int idtype58;
4399 const char* var_class_name59;
4400 long var60 /* : Int */;
4401 long var61 /* : Int */;
4402 short int var63 /* : Bool */;
4403 int cltype64;
4404 int idtype65;
4405 const char* var_class_name66;
4406 long var67 /* : Int */;
4407 val* var_bname /* var bname: FlatString */;
4408 val* var68 /* : String */;
4409 short int var69 /* : Bool */;
4410 short int var70 /* : Bool */;
4411 val* var_other /* var other: nullable Object */;
4412 short int var72 /* : Bool */;
4413 short int var73 /* : Bool */;
4414 val* var74 /* : String */;
4415 var_extension = p0;
4416 {
4417 var1 = core__flat___FlatText___last_byte(self);
4418 }
4419 var_l = var1;
4420 var2 = self->attrs[COLOR_core__abstract_text__FlatText___items].str; /* _items on <self:FlatString> */
4421 var_its = var2;
4422 var3 = self->attrs[COLOR_core__flat__FlatString___first_byte].l; /* _first_byte on <self:FlatString> */
4423 var_min = var3;
4424 {
4425 var4 = core___core__Char___ascii('/');
4426 }
4427 var_sl = var4;
4428 for(;;) {
4429 {
4430 { /* Inline kernel#Int#> (var_l,var_min) on <var_l:Int> */
4431 /* Covariant cast for argument 0 (i) <var_min:Int> isa OTHER */
4432 /* <var_min:Int> isa OTHER */
4433 var8 = 1; /* easy <var_min:Int> isa OTHER*/
4434 if (unlikely(!var8)) {
4435 var_class_name = type_core__Int.name;
4436 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
4437 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
4438 fatal_exit(1);
4439 }
4440 var9 = var_l > var_min;
4441 var6 = var9;
4442 goto RET_LABEL7;
4443 RET_LABEL7:(void)0;
4444 }
4445 }
4446 var_ = var6;
4447 if (var6){
4448 {
4449 { /* Inline native#NativeString#[] (var_its,var_l) on <var_its:NativeString> */
4450 var12 = (unsigned char)((int)var_its[var_l]);
4451 var10 = var12;
4452 goto RET_LABEL11;
4453 RET_LABEL11:(void)0;
4454 }
4455 }
4456 {
4457 { /* Inline kernel#Byte#== (var10,var_sl) on <var10:Byte> */
4458 var15 = var10 == var_sl;
4459 var13 = var15;
4460 goto RET_LABEL14;
4461 RET_LABEL14:(void)0;
4462 }
4463 }
4464 var5 = var13;
4465 } else {
4466 var5 = var_;
4467 }
4468 if (var5){
4469 {
4470 { /* Inline kernel#Int#- (var_l,1l) on <var_l:Int> */
4471 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
4472 /* <1l:Int> isa OTHER */
4473 var18 = 1; /* easy <1l:Int> isa OTHER*/
4474 if (unlikely(!var18)) {
4475 var_class_name21 = type_core__Int.name;
4476 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name21);
4477 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
4478 fatal_exit(1);
4479 }
4480 var22 = var_l - 1l;
4481 var16 = var22;
4482 goto RET_LABEL17;
4483 RET_LABEL17:(void)0;
4484 }
4485 }
4486 var_l = var16;
4487 } else {
4488 goto BREAK_label;
4489 }
4490 }
4491 BREAK_label: (void)0;
4492 {
4493 { /* Inline kernel#Int#== (var_l,var_min) on <var_l:Int> */
4494 var25 = var_l == var_min;
4495 var23 = var25;
4496 goto RET_LABEL24;
4497 RET_LABEL24:(void)0;
4498 }
4499 }
4500 if (var23){
4501 if (likely(varonce!=NULL)) {
4502 var26 = varonce;
4503 } else {
4504 var27 = "/";
4505 var28 = core__flat___NativeString___to_s_full(var27, 1l, 1l);
4506 var26 = var28;
4507 varonce = var26;
4508 }
4509 var = var26;
4510 goto RET_LABEL;
4511 } else {
4512 }
4513 var_ns = var_l;
4514 for(;;) {
4515 {
4516 { /* Inline kernel#Int#>= (var_ns,var_min) on <var_ns:Int> */
4517 /* Covariant cast for argument 0 (i) <var_min:Int> isa OTHER */
4518 /* <var_min:Int> isa OTHER */
4519 var32 = 1; /* easy <var_min:Int> isa OTHER*/
4520 if (unlikely(!var32)) {
4521 var_class_name35 = type_core__Int.name;
4522 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name35);
4523 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 729);
4524 fatal_exit(1);
4525 }
4526 var36 = var_ns >= var_min;
4527 var30 = var36;
4528 goto RET_LABEL31;
4529 RET_LABEL31:(void)0;
4530 }
4531 }
4532 var_37 = var30;
4533 if (var30){
4534 {
4535 { /* Inline native#NativeString#[] (var_its,var_ns) on <var_its:NativeString> */
4536 var40 = (unsigned char)((int)var_its[var_ns]);
4537 var38 = var40;
4538 goto RET_LABEL39;
4539 RET_LABEL39:(void)0;
4540 }
4541 }
4542 {
4543 { /* Inline kernel#Byte#!= (var38,var_sl) on <var38:Byte> */
4544 var43 = var38 == var_sl;
4545 var44 = !var43;
4546 var41 = var44;
4547 goto RET_LABEL42;
4548 RET_LABEL42:(void)0;
4549 }
4550 }
4551 var29 = var41;
4552 } else {
4553 var29 = var_37;
4554 }
4555 if (var29){
4556 {
4557 { /* Inline kernel#Int#- (var_ns,1l) on <var_ns:Int> */
4558 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
4559 /* <1l:Int> isa OTHER */
4560 var47 = 1; /* easy <1l:Int> isa OTHER*/
4561 if (unlikely(!var47)) {
4562 var_class_name50 = type_core__Int.name;
4563 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name50);
4564 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
4565 fatal_exit(1);
4566 }
4567 var51 = var_ns - 1l;
4568 var45 = var51;
4569 goto RET_LABEL46;
4570 RET_LABEL46:(void)0;
4571 }
4572 }
4573 var_ns = var45;
4574 } else {
4575 goto BREAK_label52;
4576 }
4577 }
4578 BREAK_label52: (void)0;
4579 var53 = NEW_core__FlatString(&type_core__FlatString);
4580 {
4581 { /* Inline kernel#Int#- (var_l,var_ns) on <var_l:Int> */
4582 /* Covariant cast for argument 0 (i) <var_ns:Int> isa OTHER */
4583 /* <var_ns:Int> isa OTHER */
4584 var56 = 1; /* easy <var_ns:Int> isa OTHER*/
4585 if (unlikely(!var56)) {
4586 var_class_name59 = type_core__Int.name;
4587 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name59);
4588 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
4589 fatal_exit(1);
4590 }
4591 var60 = var_l - var_ns;
4592 var54 = var60;
4593 goto RET_LABEL55;
4594 RET_LABEL55:(void)0;
4595 }
4596 }
4597 {
4598 { /* Inline kernel#Int#+ (var_ns,1l) on <var_ns:Int> */
4599 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
4600 /* <1l:Int> isa OTHER */
4601 var63 = 1; /* easy <1l:Int> isa OTHER*/
4602 if (unlikely(!var63)) {
4603 var_class_name66 = type_core__Int.name;
4604 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name66);
4605 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
4606 fatal_exit(1);
4607 }
4608 var67 = var_ns + 1l;
4609 var61 = var67;
4610 goto RET_LABEL62;
4611 RET_LABEL62:(void)0;
4612 }
4613 }
4614 {
4615 core___core__FlatString___with_infos(var53, var_its, var54, var61); /* Direct call flat#FlatString#with_infos on <var53:FlatString>*/
4616 }
4617 var_bname = var53;
4618 if (var_extension == NULL) {
4619 var69 = 0; /* is null */
4620 } else {
4621 var69 = 1; /* arg is null and recv is not */
4622 }
4623 if (0) {
4624 { /* Inline kernel#Object#!= (var_extension,((val*)NULL)) on <var_extension:nullable String> */
4625 var_other = ((val*)NULL);
4626 {
4627 var72 = ((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)>*/
4628 }
4629 var73 = !var72;
4630 var70 = var73;
4631 goto RET_LABEL71;
4632 RET_LABEL71:(void)0;
4633 }
4634 var69 = var70;
4635 }
4636 if (var69){
4637 {
4638 var74 = core__file___String___strip_extension(var_bname, var_extension);
4639 }
4640 var68 = var74;
4641 } else {
4642 var68 = var_bname;
4643 }
4644 var = var68;
4645 goto RET_LABEL;
4646 RET_LABEL:;
4647 return var;
4648 }
4649 /* method file#NativeString#file_exists for (self: NativeString): Bool */
4650 short int core__file___NativeString___file_exists(char* self) {
4651 short int var /* : Bool */;
4652 short int var1 /* : Bool */;
4653 var1 = file___NativeString_file_exists___impl(self);
4654 var = var1;
4655 goto RET_LABEL;
4656 RET_LABEL:;
4657 return var;
4658 }
4659 /* method file#NativeString#file_stat for (self: NativeString): NativeFileStat */
4660 val* core__file___NativeString___file_stat(char* self) {
4661 val* var /* : NativeFileStat */;
4662 val* var1 /* : NativeFileStat */;
4663 val* var2 /* : NativeFileStat */;
4664 var1 = file___NativeString_file_stat___impl(self);
4665 var2 = BOX_core__Pointer(var1); /* boxing NativeFileStat */
4666 var2->type = &type_core__file__NativeFileStat;
4667 var2->class = &class_core__file__NativeFileStat;
4668 var = var2;
4669 goto RET_LABEL;
4670 RET_LABEL:;
4671 return var;
4672 }
4673 /* method file#NativeString#file_mkdir for (self: NativeString): Bool */
4674 short int core__file___NativeString___file_mkdir(char* self) {
4675 short int var /* : Bool */;
4676 short int var1 /* : Bool */;
4677 var1 = file___NativeString_file_mkdir___impl(self);
4678 var = var1;
4679 goto RET_LABEL;
4680 RET_LABEL:;
4681 return var;
4682 }
4683 /* method file#NativeString#file_realpath for (self: NativeString): NativeString */
4684 char* core__file___NativeString___file_realpath(char* self) {
4685 char* var /* : NativeString */;
4686 char* var1 /* : NativeString */;
4687 var1 = file___NativeString_file_realpath___impl(self);
4688 var = var1;
4689 goto RET_LABEL;
4690 RET_LABEL:;
4691 return var;
4692 }
4693 /* method file#NativeFileStat#is_dir for (self: NativeFileStat): Bool */
4694 short int core__file___core__file__NativeFileStat___is_dir(val* self) {
4695 short int var /* : Bool */;
4696 short int var1 /* : Bool */;
4697 void* var2 /* : NativeFileStat for extern */;
4698 var2 = ((struct instance_core__Pointer*)self)->value; /* unboxing NativeFileStat */
4699 var1 = file___NativeFileStat_is_dir___impl(var2);
4700 var = var1;
4701 goto RET_LABEL;
4702 RET_LABEL:;
4703 return var;
4704 }
4705 /* method file#NativeFile#io_read for (self: NativeFile, NativeString, Int): Int */
4706 long core__file___core__file__NativeFile___io_read(val* self, char* p0, long p1) {
4707 long var /* : Int */;
4708 long var1 /* : Int */;
4709 void* var2 /* : NativeFile for extern */;
4710 var2 = ((struct instance_core__Pointer*)self)->value; /* unboxing NativeFile */
4711 var1 = file___NativeFile_io_read___impl(var2, p0, p1);
4712 var = var1;
4713 goto RET_LABEL;
4714 RET_LABEL:;
4715 return var;
4716 }
4717 /* method file#NativeFile#io_write for (self: NativeFile, NativeString, Int, Int): Int */
4718 long core__file___core__file__NativeFile___io_write(val* self, char* p0, long p1, long p2) {
4719 long var /* : Int */;
4720 long var1 /* : Int */;
4721 void* var2 /* : NativeFile for extern */;
4722 var2 = ((struct instance_core__Pointer*)self)->value; /* unboxing NativeFile */
4723 var1 = file___NativeFile_io_write___impl(var2, p0, p1, p2);
4724 var = var1;
4725 goto RET_LABEL;
4726 RET_LABEL:;
4727 return var;
4728 }
4729 /* method file#NativeFile#io_close for (self: NativeFile): Int */
4730 long core__file___core__file__NativeFile___io_close(val* self) {
4731 long var /* : Int */;
4732 long var1 /* : Int */;
4733 void* var2 /* : NativeFile for extern */;
4734 var2 = ((struct instance_core__Pointer*)self)->value; /* unboxing NativeFile */
4735 var1 = file___NativeFile_io_close___impl(var2);
4736 var = var1;
4737 goto RET_LABEL;
4738 RET_LABEL:;
4739 return var;
4740 }
4741 /* method file#NativeFile#ferror for (self: NativeFile): Bool */
4742 short int core__file___core__file__NativeFile___ferror(val* self) {
4743 short int var /* : Bool */;
4744 short int var1 /* : Bool */;
4745 void* var2 /* : NativeFile for extern */;
4746 var2 = ((struct instance_core__Pointer*)self)->value; /* unboxing NativeFile */
4747 var1 = file___NativeFile_ferror___impl(var2);
4748 var = var1;
4749 goto RET_LABEL;
4750 RET_LABEL:;
4751 return var;
4752 }
4753 /* method file#NativeFile#set_buffering_type for (self: NativeFile, Int, Int): Int */
4754 long core__file___core__file__NativeFile___set_buffering_type(val* self, long p0, long p1) {
4755 long var /* : Int */;
4756 long var1 /* : Int */;
4757 void* var2 /* : NativeFile for extern */;
4758 var2 = ((struct instance_core__Pointer*)self)->value; /* unboxing NativeFile */
4759 var1 = file___NativeFile_set_buffering_type___impl(var2, p0, p1);
4760 var = var1;
4761 goto RET_LABEL;
4762 RET_LABEL:;
4763 return var;
4764 }
4765 /* method file#NativeFile#io_open_read for (self: NativeFile, NativeString): NativeFile */
4766 val* core__file___core__file__NativeFile___io_open_read(val* self, char* p0) {
4767 val* var /* : NativeFile */;
4768 val* var1 /* : NativeFile */;
4769 val* var2 /* : NativeFile */;
4770 var1 = file___new_NativeFile_io_open_read___impl(p0);
4771 var2 = BOX_core__Pointer(var1); /* boxing NativeFile */
4772 var2->type = &type_core__file__NativeFile;
4773 var2->class = &class_core__file__NativeFile;
4774 var = var2;
4775 goto RET_LABEL;
4776 RET_LABEL:;
4777 return var;
4778 }
4779 /* method file#NativeFile#io_open_write for (self: NativeFile, NativeString): NativeFile */
4780 val* core__file___core__file__NativeFile___io_open_write(val* self, char* p0) {
4781 val* var /* : NativeFile */;
4782 val* var1 /* : NativeFile */;
4783 val* var2 /* : NativeFile */;
4784 var1 = file___new_NativeFile_io_open_write___impl(p0);
4785 var2 = BOX_core__Pointer(var1); /* boxing NativeFile */
4786 var2->type = &type_core__file__NativeFile;
4787 var2->class = &class_core__file__NativeFile;
4788 var = var2;
4789 goto RET_LABEL;
4790 RET_LABEL:;
4791 return var;
4792 }
4793 /* method file#NativeFile#native_stdin for (self: NativeFile): NativeFile */
4794 val* core__file___core__file__NativeFile___native_stdin(val* self) {
4795 val* var /* : NativeFile */;
4796 val* var1 /* : NativeFile */;
4797 val* var2 /* : NativeFile */;
4798 var1 = file___new_NativeFile_native_stdin___impl();
4799 var2 = BOX_core__Pointer(var1); /* boxing NativeFile */
4800 var2->type = &type_core__file__NativeFile;
4801 var2->class = &class_core__file__NativeFile;
4802 var = var2;
4803 goto RET_LABEL;
4804 RET_LABEL:;
4805 return var;
4806 }
4807 /* method file#NativeFile#native_stdout for (self: NativeFile): NativeFile */
4808 val* core__file___core__file__NativeFile___native_stdout(val* self) {
4809 val* var /* : NativeFile */;
4810 val* var1 /* : NativeFile */;
4811 val* var2 /* : NativeFile */;
4812 var1 = file___new_NativeFile_native_stdout___impl();
4813 var2 = BOX_core__Pointer(var1); /* boxing NativeFile */
4814 var2->type = &type_core__file__NativeFile;
4815 var2->class = &class_core__file__NativeFile;
4816 var = var2;
4817 goto RET_LABEL;
4818 RET_LABEL:;
4819 return var;
4820 }
4821 /* method file#NativeFile#native_stderr for (self: NativeFile): NativeFile */
4822 val* core__file___core__file__NativeFile___native_stderr(val* self) {
4823 val* var /* : NativeFile */;
4824 val* var1 /* : NativeFile */;
4825 val* var2 /* : NativeFile */;
4826 var1 = file___new_NativeFile_native_stderr___impl();
4827 var2 = BOX_core__Pointer(var1); /* boxing NativeFile */
4828 var2->type = &type_core__file__NativeFile;
4829 var2->class = &class_core__file__NativeFile;
4830 var = var2;
4831 goto RET_LABEL;
4832 RET_LABEL:;
4833 return var;
4834 }
4835 /* method file#NativeDir#opendir for (self: NativeDir, NativeString): NativeDir */
4836 val* core__file___core__file__NativeDir___opendir(val* self, char* p0) {
4837 val* var /* : NativeDir */;
4838 val* var1 /* : NativeDir */;
4839 val* var2 /* : NativeDir */;
4840 var1 = file___new_NativeDir_opendir___impl(p0);
4841 var2 = BOX_core__Pointer(var1); /* boxing NativeDir */
4842 var2->type = &type_core__file__NativeDir;
4843 var2->class = &class_core__file__NativeDir;
4844 var = var2;
4845 goto RET_LABEL;
4846 RET_LABEL:;
4847 return var;
4848 }
4849 /* method file#NativeDir#closedir for (self: NativeDir) */
4850 void core__file___core__file__NativeDir___closedir(val* self) {
4851 void* var /* : NativeDir for extern */;
4852 var = ((struct instance_core__Pointer*)self)->value; /* unboxing NativeDir */
4853 file___NativeDir_closedir___impl(var);
4854 RET_LABEL:;
4855 }
4856 /* method file#NativeDir#readdir for (self: NativeDir): NativeString */
4857 char* core__file___core__file__NativeDir___readdir(val* self) {
4858 char* var /* : NativeString */;
4859 char* var1 /* : NativeString */;
4860 void* var2 /* : NativeDir for extern */;
4861 var2 = ((struct instance_core__Pointer*)self)->value; /* unboxing NativeDir */
4862 var1 = file___NativeDir_readdir___impl(var2);
4863 var = var1;
4864 goto RET_LABEL;
4865 RET_LABEL:;
4866 return var;
4867 }
4868 /* method file#Sys#stdout for (self: Sys): Writer */
4869 val* core__file___Sys___stdout(val* self) {
4870 val* var /* : Writer */;
4871 short int var1 /* : Bool */;
4872 val* var2 /* : Writer */;
4873 val* var3 /* : Stdout */;
4874 var1 = self->attrs[COLOR_core__file__Sys___stdout].val != NULL; /* _stdout on <self:Sys> */
4875 if(likely(var1)) {
4876 var2 = self->attrs[COLOR_core__file__Sys___stdout].val; /* _stdout on <self:Sys> */
4877 if (unlikely(var2 == NULL)) {
4878 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stdout");
4879 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 1455);
4880 fatal_exit(1);
4881 }
4882 } else {
4883 var3 = NEW_core__Stdout(&type_core__Stdout);
4884 {
4885 core___core__Stdout___core__kernel__Object__init(var3); /* Direct call file#Stdout#init on <var3:Stdout>*/
4886 }
4887 self->attrs[COLOR_core__file__Sys___stdout].val = var3; /* _stdout on <self:Sys> */
4888 var2 = var3;
4889 }
4890 var = var2;
4891 RET_LABEL:;
4892 return var;
4893 }
4894 /* method file#Sys#stderr for (self: Sys): Writer */
4895 val* core__file___Sys___stderr(val* self) {
4896 val* var /* : Writer */;
4897 short int var1 /* : Bool */;
4898 val* var2 /* : Writer */;
4899 val* var3 /* : Stderr */;
4900 var1 = self->attrs[COLOR_core__file__Sys___stderr].val != NULL; /* _stderr on <self:Sys> */
4901 if(likely(var1)) {
4902 var2 = self->attrs[COLOR_core__file__Sys___stderr].val; /* _stderr on <self:Sys> */
4903 if (unlikely(var2 == NULL)) {
4904 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stderr");
4905 PRINT_ERROR(" (%s:%d)\n", FILE_core__file, 1458);
4906 fatal_exit(1);
4907 }
4908 } else {
4909 var3 = NEW_core__Stderr(&type_core__Stderr);
4910 {
4911 core___core__Stderr___core__kernel__Object__init(var3); /* Direct call file#Stderr#init on <var3:Stderr>*/
4912 }
4913 self->attrs[COLOR_core__file__Sys___stderr].val = var3; /* _stderr on <self:Sys> */
4914 var2 = var3;
4915 }
4916 var = var2;
4917 RET_LABEL:;
4918 return var;
4919 }
4920 /* method file#Sys#buffer_mode_line for (self: Sys): Int */
4921 long core__file___Sys___buffer_mode_line(val* self) {
4922 long var /* : Int */;
4923 long var1 /* : Int */;
4924 struct nitni_instance* var_for_c_0;
4925 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
4926 var_for_c_0->value = self;
4927 var1 = file___Sys_buffer_mode_line___impl(var_for_c_0);
4928 var = var1;
4929 goto RET_LABEL;
4930 RET_LABEL:;
4931 return var;
4932 }
4933 /* method file#Sys#printn for (self: Sys, Array[Object]) */
4934 void core__file___Sys___printn(val* self, val* p0) {
4935 val* var_objects /* var objects: Array[Object] */;
4936 val* var /* : Sys */;
4937 val* var2 /* : Sys */;
4938 val* var3 /* : Writer */;
4939 val* var4 /* : String */;
4940 var_objects = p0;
4941 {
4942 { /* Inline kernel#Object#sys (self) on <self:Sys> */
4943 var2 = glob_sys;
4944 var = var2;
4945 goto RET_LABEL1;
4946 RET_LABEL1:(void)0;
4947 }
4948 }
4949 {
4950 var3 = core__file___Sys___stdout(var);
4951 }
4952 {
4953 var4 = core__flat___Array___core__abstract_text__Collection__plain_to_s(var_objects);
4954 }
4955 {
4956 core___core__FileWriter___core__stream__Writer__write(var3, var4); /* Direct call file#FileWriter#write on <var3:Writer>*/
4957 }
4958 RET_LABEL:;
4959 }
4960 /* method file#Sys#print for (self: Sys, Object) */
4961 void core__file___Sys___print(val* self, val* p0) {
4962 val* var_object /* var object: Object */;
4963 val* var /* : Sys */;
4964 val* var2 /* : Sys */;
4965 val* var3 /* : Writer */;
4966 val* var4 /* : String */;
4967 val* var5 /* : Sys */;
4968 val* var7 /* : Sys */;
4969 val* var8 /* : Writer */;
4970 static val* varonce;
4971 val* var9 /* : String */;
4972 char* var10 /* : NativeString */;
4973 val* var11 /* : String */;
4974 var_object = p0;
4975 {
4976 { /* Inline kernel#Object#sys (self) on <self:Sys> */
4977 var2 = glob_sys;
4978 var = var2;
4979 goto RET_LABEL1;
4980 RET_LABEL1:(void)0;
4981 }
4982 }
4983 {
4984 var3 = core__file___Sys___stdout(var);
4985 }
4986 {
4987 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>*/
4988 }
4989 {
4990 core___core__FileWriter___core__stream__Writer__write(var3, var4); /* Direct call file#FileWriter#write on <var3:Writer>*/
4991 }
4992 {
4993 { /* Inline kernel#Object#sys (self) on <self:Sys> */
4994 var7 = glob_sys;
4995 var5 = var7;
4996 goto RET_LABEL6;
4997 RET_LABEL6:(void)0;
4998 }
4999 }
5000 {
5001 var8 = core__file___Sys___stdout(var5);
5002 }
5003 if (likely(varonce!=NULL)) {
5004 var9 = varonce;
5005 } else {
5006 var10 = "\n";
5007 var11 = core__flat___NativeString___to_s_full(var10, 1l, 1l);
5008 var9 = var11;
5009 varonce = var9;
5010 }
5011 {
5012 core___core__FileWriter___core__stream__Writer__write(var8, var9); /* Direct call file#FileWriter#write on <var8:Writer>*/
5013 }
5014 RET_LABEL:;
5015 }
5016 /* method file#Sys#getcwd for (self: Sys): String */
5017 val* core__file___Sys___getcwd(val* self) {
5018 val* var /* : String */;
5019 char* var1 /* : NativeString */;
5020 char* var3 /* : NativeString */;
5021 val* var4 /* : String */;
5022 {
5023 { /* Inline file#Sys#native_getcwd (self) on <self:Sys> */
5024 struct nitni_instance* var_for_c_0;
5025 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
5026 var_for_c_0->value = self;
5027 var3 = file___Sys_native_getcwd___impl(var_for_c_0);
5028 var1 = var3;
5029 goto RET_LABEL2;
5030 RET_LABEL2:(void)0;
5031 }
5032 }
5033 {
5034 var4 = core__flat___NativeString___core__abstract_text__Object__to_s(var1);
5035 }
5036 var = var4;
5037 goto RET_LABEL;
5038 RET_LABEL:;
5039 return var;
5040 }
5041 /* method file#Sys#native_getcwd for (self: Sys): NativeString */
5042 char* core__file___Sys___native_getcwd(val* self) {
5043 char* var /* : NativeString */;
5044 char* var1 /* : NativeString */;
5045 struct nitni_instance* var_for_c_0;
5046 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
5047 var_for_c_0->value = self;
5048 var1 = file___Sys_native_getcwd___impl(var_for_c_0);
5049 var = var1;
5050 goto RET_LABEL;
5051 RET_LABEL:;
5052 return var;
5053 }