README: document nit_env.sh
[nit.git] / c_src / standard__file.sep.1.c
1 #include "standard__file.sep.0.h"
2 /* method file#FileStream#path= for (self: FileStream, nullable String) */
3 void standard___standard__FileStream___path_61d(val* self, val* p0) {
4 self->attrs[COLOR_standard__file__FileStream___path].val = p0; /* _path on <self:FileStream> */
5 RET_LABEL:;
6 }
7 /* method file#FileStream#close for (self: FileStream) */
8 void standard___standard__FileStream___standard__stream__Stream__close(val* self) {
9 val* var /* : nullable NativeFile */;
10 short int var1 /* : Bool */;
11 short int var2 /* : Bool */;
12 val* var_other /* var other: nullable Object */;
13 short int var4 /* : Bool */;
14 short int var6 /* : Bool */;
15 val* var7 /* : nullable NativeFile */;
16 short int var8 /* : Bool */;
17 short int var10 /* : Bool for extern */;
18 void* var11 /* : Pointer for extern */;
19 val* var12 /* : nullable IOError */;
20 val* var14 /* : nullable IOError */;
21 short int var15 /* : Bool */;
22 short int var16 /* : Bool */;
23 val* var_other18 /* var other: nullable Object */;
24 short int var19 /* : Bool */;
25 short int var20 /* : Bool */;
26 val* var21 /* : IOError */;
27 static val* varonce;
28 val* var22 /* : String */;
29 char* var23 /* : NativeString */;
30 val* var24 /* : FlatString */;
31 val* var26 /* : nullable NativeFile */;
32 long var27 /* : Int */;
33 long var29 /* : Int for extern */;
34 void* var30 /* : NativeFile for extern */;
35 long var_i /* var i: Int */;
36 short int var31 /* : Bool */;
37 short int var33 /* : Bool */;
38 short int var34 /* : Bool */;
39 val* var35 /* : IOError */;
40 val* var37 /* : NativeArray[String] */;
41 static val* varonce36;
42 static val* varonce38;
43 val* var39 /* : String */;
44 char* var40 /* : NativeString */;
45 val* var41 /* : FlatString */;
46 val* var42 /* : Sys */;
47 val* var44 /* : Sys */;
48 long var45 /* : Int */;
49 long var47 /* : Int for extern */;
50 val* var48 /* : String */;
51 val* var49 /* : String */;
52 var = self->attrs[COLOR_standard__file__FileStream___file].val; /* _file on <self:FileStream> */
53 if (var == NULL) {
54 var1 = 1; /* is null */
55 } else {
56 var1 = 0; /* arg is null but recv is not */
57 }
58 if (0) {
59 { /* Inline kernel#Object#== (var,((val*)NULL)) on <var:nullable NativeFile> */
60 var_other = ((val*)NULL);
61 {
62 { /* Inline kernel#Object#is_same_instance (var,var_other) on <var:nullable NativeFile(NativeFile)> */
63 var6 = var == var_other;
64 var4 = var6;
65 goto RET_LABEL5;
66 RET_LABEL5:(void)0;
67 }
68 }
69 var2 = var4;
70 goto RET_LABEL3;
71 RET_LABEL3:(void)0;
72 }
73 var1 = var2;
74 }
75 if (var1){
76 goto RET_LABEL;
77 } else {
78 }
79 var7 = self->attrs[COLOR_standard__file__FileStream___file].val; /* _file on <self:FileStream> */
80 if (var7 == NULL) {
81 PRINT_ERROR("Runtime error: %s", "Receiver is null");
82 PRINT_ERROR(" (%s:%d)\n", FILE_standard__file, 63);
83 fatal_exit(1);
84 } else {
85 { /* Inline kernel#Pointer#address_is_null (var7) on <var7:nullable NativeFile> */
86 var11 = ((struct instance_standard__Pointer*)var7)->value; /* unboxing nullable NativeFile */
87 var10 = address_is_null(var11);
88 var8 = var10;
89 goto RET_LABEL9;
90 RET_LABEL9:(void)0;
91 }
92 }
93 if (var8){
94 {
95 { /* Inline stream#Stream#last_error (self) on <self:FileStream> */
96 var14 = self->attrs[COLOR_standard__stream__Stream___last_error].val; /* _last_error on <self:FileStream> */
97 var12 = var14;
98 RET_LABEL13:(void)0;
99 }
100 }
101 if (var12 == NULL) {
102 var15 = 0; /* is null */
103 } else {
104 var15 = 1; /* arg is null and recv is not */
105 }
106 if (0) {
107 { /* Inline kernel#Object#!= (var12,((val*)NULL)) on <var12:nullable IOError> */
108 var_other18 = ((val*)NULL);
109 {
110 var19 = ((short int(*)(val* self, val* p0))(var12->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var12, var_other18); /* == on <var12:nullable IOError(IOError)>*/
111 }
112 var20 = !var19;
113 var16 = var20;
114 goto RET_LABEL17;
115 RET_LABEL17:(void)0;
116 }
117 var15 = var16;
118 }
119 if (var15){
120 goto RET_LABEL;
121 } else {
122 }
123 var21 = NEW_standard__IOError(&type_standard__IOError);
124 if (likely(varonce!=NULL)) {
125 var22 = varonce;
126 } else {
127 var23 = "Cannot close unopened file";
128 var24 = standard___standard__NativeString___to_s_with_length(var23, 26l);
129 var22 = var24;
130 varonce = var22;
131 }
132 {
133 ((void(*)(val* self, val* p0))(var21->class->vft[COLOR_standard__error__Error__message_61d]))(var21, var22); /* message= on <var21:IOError>*/
134 }
135 {
136 ((void(*)(val* self))(var21->class->vft[COLOR_standard__kernel__Object__init]))(var21); /* init on <var21:IOError>*/
137 }
138 {
139 { /* Inline stream#Stream#last_error= (self,var21) on <self:FileStream> */
140 self->attrs[COLOR_standard__stream__Stream___last_error].val = var21; /* _last_error on <self:FileStream> */
141 RET_LABEL25:(void)0;
142 }
143 }
144 goto RET_LABEL;
145 } else {
146 }
147 var26 = self->attrs[COLOR_standard__file__FileStream___file].val; /* _file on <self:FileStream> */
148 if (var26 == NULL) {
149 PRINT_ERROR("Runtime error: %s", "Receiver is null");
150 PRINT_ERROR(" (%s:%d)\n", FILE_standard__file, 68);
151 fatal_exit(1);
152 } else {
153 { /* Inline file#NativeFile#io_close (var26) on <var26:nullable NativeFile> */
154 var30 = ((struct instance_standard__Pointer*)var26)->value; /* unboxing nullable NativeFile */
155 var29 = file_NativeFile_NativeFile_io_close_0(var30);
156 var27 = var29;
157 goto RET_LABEL28;
158 RET_LABEL28:(void)0;
159 }
160 }
161 var_i = var27;
162 {
163 { /* Inline kernel#Int#!= (var_i,0l) on <var_i:Int> */
164 var33 = var_i == 0l;
165 var34 = !var33;
166 var31 = var34;
167 goto RET_LABEL32;
168 RET_LABEL32:(void)0;
169 }
170 }
171 if (var31){
172 var35 = NEW_standard__IOError(&type_standard__IOError);
173 if (unlikely(varonce36==NULL)) {
174 var37 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
175 if (likely(varonce38!=NULL)) {
176 var39 = varonce38;
177 } else {
178 var40 = "Close failed due to error ";
179 var41 = standard___standard__NativeString___to_s_with_length(var40, 26l);
180 var39 = var41;
181 varonce38 = var39;
182 }
183 ((struct instance_standard__NativeArray*)var37)->values[0]=var39;
184 } else {
185 var37 = varonce36;
186 varonce36 = NULL;
187 }
188 {
189 { /* Inline kernel#Object#sys (self) on <self:FileStream> */
190 var44 = glob_sys;
191 var42 = var44;
192 goto RET_LABEL43;
193 RET_LABEL43:(void)0;
194 }
195 }
196 {
197 { /* Inline kernel#Sys#errno (var42) on <var42:Sys> */
198 var47 = sys_errno(var42);
199 var45 = var47;
200 goto RET_LABEL46;
201 RET_LABEL46:(void)0;
202 }
203 }
204 {
205 var48 = standard__string___Int___strerror(var45);
206 }
207 ((struct instance_standard__NativeArray*)var37)->values[1]=var48;
208 {
209 var49 = ((val*(*)(val* self))(var37->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var37); /* native_to_s on <var37:NativeArray[String]>*/
210 }
211 varonce36 = var37;
212 {
213 ((void(*)(val* self, val* p0))(var35->class->vft[COLOR_standard__error__Error__message_61d]))(var35, var49); /* message= on <var35:IOError>*/
214 }
215 {
216 ((void(*)(val* self))(var35->class->vft[COLOR_standard__kernel__Object__init]))(var35); /* init on <var35:IOError>*/
217 }
218 {
219 { /* Inline stream#Stream#last_error= (self,var35) on <self:FileStream> */
220 self->attrs[COLOR_standard__stream__Stream___last_error].val = var35; /* _last_error on <self:FileStream> */
221 RET_LABEL50:(void)0;
222 }
223 }
224 } else {
225 }
226 self->attrs[COLOR_standard__file__FileStream___file].val = ((val*)NULL); /* _file on <self:FileStream> */
227 RET_LABEL:;
228 }
229 /* method file#FileStream#set_buffering_mode for (self: FileStream, Int, Int) */
230 void standard___standard__FileStream___set_buffering_mode(val* self, long p0, long p1) {
231 long var_buf_size /* var buf_size: Int */;
232 long var_mode /* var mode: Int */;
233 short int var /* : Bool */;
234 short int var2 /* : Bool */;
235 int cltype;
236 int idtype;
237 const char* var_class_name;
238 short int var3 /* : Bool */;
239 val* var4 /* : nullable NativeFile */;
240 long var5 /* : Int */;
241 long var7 /* : Int for extern */;
242 void* var8 /* : NativeFile for extern */;
243 short int var9 /* : Bool */;
244 short int var11 /* : Bool */;
245 short int var12 /* : Bool */;
246 val* var13 /* : IOError */;
247 val* var14 /* : NativeArray[String] */;
248 static val* varonce;
249 static val* varonce15;
250 val* var16 /* : String */;
251 char* var17 /* : NativeString */;
252 val* var18 /* : FlatString */;
253 val* var19 /* : Sys */;
254 val* var21 /* : Sys */;
255 long var22 /* : Int */;
256 long var24 /* : Int for extern */;
257 val* var25 /* : String */;
258 val* var26 /* : String */;
259 var_buf_size = p0;
260 var_mode = p1;
261 {
262 { /* Inline kernel#Int#<= (var_buf_size,0l) on <var_buf_size:Int> */
263 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
264 /* <0l:Int> isa OTHER */
265 var2 = 1; /* easy <0l:Int> isa OTHER*/
266 if (unlikely(!var2)) {
267 var_class_name = type_standard__Int.name;
268 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
269 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 533);
270 fatal_exit(1);
271 }
272 var3 = var_buf_size <= 0l;
273 var = var3;
274 goto RET_LABEL1;
275 RET_LABEL1:(void)0;
276 }
277 }
278 if (var){
279 var_buf_size = 512l;
280 } else {
281 }
282 var4 = self->attrs[COLOR_standard__file__FileStream___file].val; /* _file on <self:FileStream> */
283 if (var4 == NULL) {
284 PRINT_ERROR("Runtime error: %s", "Receiver is null");
285 PRINT_ERROR(" (%s:%d)\n", FILE_standard__file, 85);
286 fatal_exit(1);
287 } else {
288 { /* Inline file#NativeFile#set_buffering_type (var4,var_buf_size,var_mode) on <var4:nullable NativeFile> */
289 var8 = ((struct instance_standard__Pointer*)var4)->value; /* unboxing nullable NativeFile */
290 var7 = file_NativeFile_NativeFile_set_buffering_type_0(var8, var_buf_size, var_mode);
291 var5 = var7;
292 goto RET_LABEL6;
293 RET_LABEL6:(void)0;
294 }
295 }
296 {
297 { /* Inline kernel#Int#!= (var5,0l) on <var5:Int> */
298 var11 = var5 == 0l;
299 var12 = !var11;
300 var9 = var12;
301 goto RET_LABEL10;
302 RET_LABEL10:(void)0;
303 }
304 }
305 if (var9){
306 var13 = NEW_standard__IOError(&type_standard__IOError);
307 if (unlikely(varonce==NULL)) {
308 var14 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
309 if (likely(varonce15!=NULL)) {
310 var16 = varonce15;
311 } else {
312 var17 = "Error while changing buffering type for FileStream, returned error ";
313 var18 = standard___standard__NativeString___to_s_with_length(var17, 67l);
314 var16 = var18;
315 varonce15 = var16;
316 }
317 ((struct instance_standard__NativeArray*)var14)->values[0]=var16;
318 } else {
319 var14 = varonce;
320 varonce = NULL;
321 }
322 {
323 { /* Inline kernel#Object#sys (self) on <self:FileStream> */
324 var21 = glob_sys;
325 var19 = var21;
326 goto RET_LABEL20;
327 RET_LABEL20:(void)0;
328 }
329 }
330 {
331 { /* Inline kernel#Sys#errno (var19) on <var19:Sys> */
332 var24 = sys_errno(var19);
333 var22 = var24;
334 goto RET_LABEL23;
335 RET_LABEL23:(void)0;
336 }
337 }
338 {
339 var25 = standard__string___Int___strerror(var22);
340 }
341 ((struct instance_standard__NativeArray*)var14)->values[1]=var25;
342 {
343 var26 = ((val*(*)(val* self))(var14->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var14); /* native_to_s on <var14:NativeArray[String]>*/
344 }
345 varonce = var14;
346 {
347 ((void(*)(val* self, val* p0))(var13->class->vft[COLOR_standard__error__Error__message_61d]))(var13, var26); /* message= on <var13:IOError>*/
348 }
349 {
350 ((void(*)(val* self))(var13->class->vft[COLOR_standard__kernel__Object__init]))(var13); /* init on <var13:IOError>*/
351 }
352 {
353 { /* Inline stream#Stream#last_error= (self,var13) on <self:FileStream> */
354 self->attrs[COLOR_standard__stream__Stream___last_error].val = var13; /* _last_error on <self:FileStream> */
355 RET_LABEL27:(void)0;
356 }
357 }
358 } else {
359 }
360 RET_LABEL:;
361 }
362 /* method file#FileReader#close for (self: FileReader) */
363 void standard___standard__FileReader___standard__stream__Stream__close(val* self) {
364 {
365 ((void(*)(val* self))(self->class->vft[COLOR_standard___standard__FileReader___standard__stream__Stream__close]))(self); /* close on <self:FileReader>*/
366 }
367 {
368 standard___standard__BufferedReader___buffer_reset(self); /* Direct call stream#BufferedReader#buffer_reset on <self:FileReader>*/
369 }
370 {
371 { /* Inline file#FileReader#end_reached= (self,1) on <self:FileReader> */
372 self->attrs[COLOR_standard__file__FileReader___end_reached].s = 1; /* _end_reached on <self:FileReader> */
373 RET_LABEL1:(void)0;
374 }
375 }
376 RET_LABEL:;
377 }
378 /* method file#FileReader#fill_buffer for (self: FileReader) */
379 void standard___standard__FileReader___standard__stream__BufferedReader__fill_buffer(val* self) {
380 val* var /* : nullable NativeFile */;
381 char* var1 /* : NativeString */;
382 long var2 /* : Int */;
383 long var3 /* : Int */;
384 long var5 /* : Int for extern */;
385 void* var6 /* : NativeFile for extern */;
386 long var_nb /* var nb: Int */;
387 short int var7 /* : Bool */;
388 short int var9 /* : Bool */;
389 int cltype;
390 int idtype;
391 const char* var_class_name;
392 short int var10 /* : Bool */;
393 var = self->attrs[COLOR_standard__file__FileStream___file].val; /* _file on <self:FileReader> */
394 var1 = self->attrs[COLOR_standard__stream__BufferedReader___buffer].str; /* _buffer on <self:FileReader> */
395 var2 = self->attrs[COLOR_standard__stream__BufferedReader___buffer_capacity].l; /* _buffer_capacity on <self:FileReader> */
396 if (var == NULL) {
397 PRINT_ERROR("Runtime error: %s", "Receiver is null");
398 PRINT_ERROR(" (%s:%d)\n", FILE_standard__file, 128);
399 fatal_exit(1);
400 } else {
401 { /* Inline file#NativeFile#io_read (var,var1,var2) on <var:nullable NativeFile> */
402 var6 = ((struct instance_standard__Pointer*)var)->value; /* unboxing nullable NativeFile */
403 var5 = file_NativeFile_NativeFile_io_read_2(var6, var1, var2);
404 var3 = var5;
405 goto RET_LABEL4;
406 RET_LABEL4:(void)0;
407 }
408 }
409 var_nb = var3;
410 {
411 { /* Inline kernel#Int#<= (var_nb,0l) on <var_nb:Int> */
412 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
413 /* <0l:Int> isa OTHER */
414 var9 = 1; /* easy <0l:Int> isa OTHER*/
415 if (unlikely(!var9)) {
416 var_class_name = type_standard__Int.name;
417 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
418 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 533);
419 fatal_exit(1);
420 }
421 var10 = var_nb <= 0l;
422 var7 = var10;
423 goto RET_LABEL8;
424 RET_LABEL8:(void)0;
425 }
426 }
427 if (var7){
428 {
429 { /* Inline file#FileReader#end_reached= (self,1) on <self:FileReader> */
430 self->attrs[COLOR_standard__file__FileReader___end_reached].s = 1; /* _end_reached on <self:FileReader> */
431 RET_LABEL11:(void)0;
432 }
433 }
434 var_nb = 0l;
435 } else {
436 }
437 self->attrs[COLOR_standard__stream__BufferedReader___buffer_length].l = var_nb; /* _buffer_length on <self:FileReader> */
438 self->attrs[COLOR_standard__stream__BufferedReader___buffer_pos].l = 0l; /* _buffer_pos on <self:FileReader> */
439 RET_LABEL:;
440 }
441 /* method file#FileReader#end_reached for (self: FileReader): Bool */
442 short int standard___standard__FileReader___standard__stream__BufferedReader__end_reached(val* self) {
443 short int var /* : Bool */;
444 short int var1 /* : Bool */;
445 var1 = self->attrs[COLOR_standard__file__FileReader___end_reached].s; /* _end_reached on <self:FileReader> */
446 var = var1;
447 RET_LABEL:;
448 return var;
449 }
450 /* method file#FileReader#end_reached= for (self: FileReader, Bool) */
451 void standard___standard__FileReader___end_reached_61d(val* self, short int p0) {
452 self->attrs[COLOR_standard__file__FileReader___end_reached].s = p0; /* _end_reached on <self:FileReader> */
453 RET_LABEL:;
454 }
455 /* method file#FileReader#open for (self: FileReader, String) */
456 void standard___standard__FileReader___open(val* self, val* p0) {
457 val* var_path /* var path: String */;
458 val* var /* : NativeFile */;
459 char* var2 /* : NativeString */;
460 val* var3 /* : NativeFile */;
461 val* var4 /* : nullable NativeFile */;
462 short int var5 /* : Bool */;
463 short int var7 /* : Bool for extern */;
464 void* var8 /* : Pointer for extern */;
465 val* var9 /* : IOError */;
466 val* var10 /* : NativeArray[String] */;
467 static val* varonce;
468 static val* varonce11;
469 val* var12 /* : String */;
470 char* var13 /* : NativeString */;
471 val* var14 /* : FlatString */;
472 static val* varonce15;
473 val* var16 /* : String */;
474 char* var17 /* : NativeString */;
475 val* var18 /* : FlatString */;
476 static val* varonce19;
477 val* var20 /* : String */;
478 char* var21 /* : NativeString */;
479 val* var22 /* : FlatString */;
480 val* var23 /* : Sys */;
481 val* var25 /* : Sys */;
482 long var26 /* : Int */;
483 long var28 /* : Int for extern */;
484 val* var29 /* : String */;
485 val* var30 /* : String */;
486 {
487 ((void(*)(val* self))(self->class->vft[COLOR_standard__kernel__Object__init]))(self); /* init on <self:FileReader>*/
488 }
489 var_path = p0;
490 {
491 { /* Inline file#FileStream#path= (self,var_path) on <self:FileReader> */
492 self->attrs[COLOR_standard__file__FileStream___path].val = var_path; /* _path on <self:FileReader> */
493 RET_LABEL1:(void)0;
494 }
495 }
496 {
497 standard___standard__BufferedReader___prepare_buffer(self, 10l); /* Direct call stream#BufferedReader#prepare_buffer on <self:FileReader>*/
498 }
499 var = NEW_standard__file__NativeFile(&type_standard__file__NativeFile);
500 {
501 var2 = ((char*(*)(val* self))(var_path->class->vft[COLOR_standard__string__Text__to_cstring]))(var_path); /* to_cstring on <var_path:String>*/
502 }
503 {
504 var3 = standard__file___standard__file__NativeFile___io_open_read(var, var2);
505 }
506 self->attrs[COLOR_standard__file__FileStream___file].val = var3; /* _file on <self:FileReader> */
507 var4 = self->attrs[COLOR_standard__file__FileStream___file].val; /* _file on <self:FileReader> */
508 if (var4 == NULL) {
509 PRINT_ERROR("Runtime error: %s", "Receiver is null");
510 PRINT_ERROR(" (%s:%d)\n", FILE_standard__file, 156);
511 fatal_exit(1);
512 } else {
513 { /* Inline kernel#Pointer#address_is_null (var4) on <var4:nullable NativeFile> */
514 var8 = ((struct instance_standard__Pointer*)var4)->value; /* unboxing nullable NativeFile */
515 var7 = address_is_null(var8);
516 var5 = var7;
517 goto RET_LABEL6;
518 RET_LABEL6:(void)0;
519 }
520 }
521 if (var5){
522 var9 = NEW_standard__IOError(&type_standard__IOError);
523 if (unlikely(varonce==NULL)) {
524 var10 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
525 if (likely(varonce11!=NULL)) {
526 var12 = varonce11;
527 } else {
528 var13 = "Error: Opening file at \'";
529 var14 = standard___standard__NativeString___to_s_with_length(var13, 24l);
530 var12 = var14;
531 varonce11 = var12;
532 }
533 ((struct instance_standard__NativeArray*)var10)->values[0]=var12;
534 if (likely(varonce15!=NULL)) {
535 var16 = varonce15;
536 } else {
537 var17 = "\' failed with \'";
538 var18 = standard___standard__NativeString___to_s_with_length(var17, 15l);
539 var16 = var18;
540 varonce15 = var16;
541 }
542 ((struct instance_standard__NativeArray*)var10)->values[2]=var16;
543 if (likely(varonce19!=NULL)) {
544 var20 = varonce19;
545 } else {
546 var21 = "\'";
547 var22 = standard___standard__NativeString___to_s_with_length(var21, 1l);
548 var20 = var22;
549 varonce19 = var20;
550 }
551 ((struct instance_standard__NativeArray*)var10)->values[4]=var20;
552 } else {
553 var10 = varonce;
554 varonce = NULL;
555 }
556 ((struct instance_standard__NativeArray*)var10)->values[1]=var_path;
557 {
558 { /* Inline kernel#Object#sys (self) on <self:FileReader> */
559 var25 = glob_sys;
560 var23 = var25;
561 goto RET_LABEL24;
562 RET_LABEL24:(void)0;
563 }
564 }
565 {
566 { /* Inline kernel#Sys#errno (var23) on <var23:Sys> */
567 var28 = sys_errno(var23);
568 var26 = var28;
569 goto RET_LABEL27;
570 RET_LABEL27:(void)0;
571 }
572 }
573 {
574 var29 = standard__string___Int___strerror(var26);
575 }
576 ((struct instance_standard__NativeArray*)var10)->values[3]=var29;
577 {
578 var30 = ((val*(*)(val* self))(var10->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var10); /* native_to_s on <var10:NativeArray[String]>*/
579 }
580 varonce = var10;
581 {
582 ((void(*)(val* self, val* p0))(var9->class->vft[COLOR_standard__error__Error__message_61d]))(var9, var30); /* message= on <var9:IOError>*/
583 }
584 {
585 ((void(*)(val* self))(var9->class->vft[COLOR_standard__kernel__Object__init]))(var9); /* init on <var9:IOError>*/
586 }
587 {
588 { /* Inline stream#Stream#last_error= (self,var9) on <self:FileReader> */
589 self->attrs[COLOR_standard__stream__Stream___last_error].val = var9; /* _last_error on <self:FileReader> */
590 RET_LABEL31:(void)0;
591 }
592 }
593 {
594 { /* Inline file#FileReader#end_reached= (self,1) on <self:FileReader> */
595 self->attrs[COLOR_standard__file__FileReader___end_reached].s = 1; /* _end_reached on <self:FileReader> */
596 RET_LABEL32:(void)0;
597 }
598 }
599 } else {
600 }
601 RET_LABEL:;
602 }
603 /* method file#FileWriter#write for (self: FileWriter, Text) */
604 void standard___standard__FileWriter___standard__stream__Writer__write(val* self, val* p0) {
605 val* var_s /* var s: Text */;
606 val* var /* : nullable IOError */;
607 val* var2 /* : nullable IOError */;
608 short int var3 /* : Bool */;
609 short int var4 /* : Bool */;
610 val* var_other /* var other: nullable Object */;
611 short int var6 /* : Bool */;
612 short int var7 /* : Bool */;
613 short int var8 /* : Bool */;
614 short int var9 /* : Bool */;
615 val* var10 /* : IOError */;
616 static val* varonce;
617 val* var11 /* : String */;
618 char* var12 /* : NativeString */;
619 val* var13 /* : FlatString */;
620 val* var15 /* : Iterator[FlatText] */;
621 val* var_ /* var : Iterator[FlatText] */;
622 val* var16 /* : Iterator[nullable Object] */;
623 val* var_17 /* var : Iterator[FlatText] */;
624 short int var18 /* : Bool */;
625 val* var19 /* : nullable Object */;
626 val* var_i /* var i: FlatText */;
627 char* var20 /* : NativeString */;
628 long var21 /* : Int */;
629 long var23 /* : Int */;
630 var_s = p0;
631 {
632 { /* Inline stream#Stream#last_error (self) on <self:FileWriter> */
633 var2 = self->attrs[COLOR_standard__stream__Stream___last_error].val; /* _last_error on <self:FileWriter> */
634 var = var2;
635 RET_LABEL1:(void)0;
636 }
637 }
638 if (var == NULL) {
639 var3 = 0; /* is null */
640 } else {
641 var3 = 1; /* arg is null and recv is not */
642 }
643 if (0) {
644 { /* Inline kernel#Object#!= (var,((val*)NULL)) on <var:nullable IOError> */
645 var_other = ((val*)NULL);
646 {
647 var6 = ((short int(*)(val* self, val* p0))(var->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var, var_other); /* == on <var:nullable IOError(IOError)>*/
648 }
649 var7 = !var6;
650 var4 = var7;
651 goto RET_LABEL5;
652 RET_LABEL5:(void)0;
653 }
654 var3 = var4;
655 }
656 if (var3){
657 goto RET_LABEL;
658 } else {
659 }
660 var8 = self->attrs[COLOR_standard__file__FileWriter___is_writable].s; /* _is_writable on <self:FileWriter> */
661 var9 = !var8;
662 if (var9){
663 var10 = NEW_standard__IOError(&type_standard__IOError);
664 if (likely(varonce!=NULL)) {
665 var11 = varonce;
666 } else {
667 var12 = "cannot write to non-writable stream";
668 var13 = standard___standard__NativeString___to_s_with_length(var12, 35l);
669 var11 = var13;
670 varonce = var11;
671 }
672 {
673 ((void(*)(val* self, val* p0))(var10->class->vft[COLOR_standard__error__Error__message_61d]))(var10, var11); /* message= on <var10:IOError>*/
674 }
675 {
676 ((void(*)(val* self))(var10->class->vft[COLOR_standard__kernel__Object__init]))(var10); /* init on <var10:IOError>*/
677 }
678 {
679 { /* Inline stream#Stream#last_error= (self,var10) on <self:FileWriter> */
680 self->attrs[COLOR_standard__stream__Stream___last_error].val = var10; /* _last_error on <self:FileWriter> */
681 RET_LABEL14:(void)0;
682 }
683 }
684 goto RET_LABEL;
685 } else {
686 }
687 {
688 var15 = ((val*(*)(val* self))(var_s->class->vft[COLOR_standard__string__Text__substrings]))(var_s); /* substrings on <var_s:Text>*/
689 }
690 var_ = var15;
691 {
692 var16 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_standard__abstract_collection__Iterator__iterator]))(var_); /* iterator on <var_:Iterator[FlatText]>*/
693 }
694 var_17 = var16;
695 for(;;) {
696 {
697 var18 = ((short int(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_17); /* is_ok on <var_17:Iterator[FlatText]>*/
698 }
699 if (var18){
700 {
701 var19 = ((val*(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_17); /* item on <var_17:Iterator[FlatText]>*/
702 }
703 var_i = var19;
704 {
705 var20 = ((char*(*)(val* self))(var_i->class->vft[COLOR_standard__string__Text__to_cstring]))(var_i); /* to_cstring on <var_i:FlatText>*/
706 }
707 {
708 { /* Inline string#FlatText#length (var_i) on <var_i:FlatText> */
709 var23 = var_i->attrs[COLOR_standard__string__FlatText___length].l; /* _length on <var_i:FlatText> */
710 var21 = var23;
711 RET_LABEL22:(void)0;
712 }
713 }
714 {
715 standard___standard__FileWriter___write_native(self, var20, var21); /* Direct call file#FileWriter#write_native on <self:FileWriter>*/
716 }
717 {
718 ((void(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_17); /* next on <var_17:Iterator[FlatText]>*/
719 }
720 } else {
721 goto BREAK_label;
722 }
723 }
724 BREAK_label: (void)0;
725 {
726 ((void(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_17); /* finish on <var_17:Iterator[FlatText]>*/
727 }
728 RET_LABEL:;
729 }
730 /* method file#FileWriter#close for (self: FileWriter) */
731 void standard___standard__FileWriter___standard__stream__Stream__close(val* self) {
732 {
733 ((void(*)(val* self))(self->class->vft[COLOR_standard___standard__FileWriter___standard__stream__Stream__close]))(self); /* close on <self:FileWriter>*/
734 }
735 self->attrs[COLOR_standard__file__FileWriter___is_writable].s = 0; /* _is_writable on <self:FileWriter> */
736 RET_LABEL:;
737 }
738 /* method file#FileWriter#is_writable= for (self: FileWriter, Bool) */
739 void standard___standard__FileWriter___is_writable_61d(val* self, short int p0) {
740 self->attrs[COLOR_standard__file__FileWriter___is_writable].s = p0; /* _is_writable on <self:FileWriter> */
741 RET_LABEL:;
742 }
743 /* method file#FileWriter#write_native for (self: FileWriter, NativeString, Int) */
744 void standard___standard__FileWriter___write_native(val* self, char* p0, long p1) {
745 char* var_native /* var native: NativeString */;
746 long var_len /* var len: Int */;
747 val* var /* : nullable IOError */;
748 val* var2 /* : nullable IOError */;
749 short int var3 /* : Bool */;
750 short int var4 /* : Bool */;
751 val* var_other /* var other: nullable Object */;
752 short int var6 /* : Bool */;
753 short int var7 /* : Bool */;
754 short int var8 /* : Bool */;
755 short int var9 /* : Bool */;
756 val* var10 /* : IOError */;
757 static val* varonce;
758 val* var11 /* : String */;
759 char* var12 /* : NativeString */;
760 val* var13 /* : FlatString */;
761 val* var15 /* : nullable NativeFile */;
762 short int var16 /* : Bool */;
763 short int var18 /* : Bool for extern */;
764 void* var19 /* : Pointer for extern */;
765 val* var20 /* : IOError */;
766 static val* varonce21;
767 val* var22 /* : String */;
768 char* var23 /* : NativeString */;
769 val* var24 /* : FlatString */;
770 val* var26 /* : nullable NativeFile */;
771 long var27 /* : Int */;
772 long var29 /* : Int for extern */;
773 void* var30 /* : NativeFile for extern */;
774 long var_err /* var err: Int */;
775 short int var31 /* : Bool */;
776 short int var33 /* : Bool */;
777 short int var34 /* : Bool */;
778 val* var35 /* : IOError */;
779 val* var37 /* : NativeArray[String] */;
780 static val* varonce36;
781 static val* varonce38;
782 val* var39 /* : String */;
783 char* var40 /* : NativeString */;
784 val* var41 /* : FlatString */;
785 static val* varonce42;
786 val* var43 /* : String */;
787 char* var44 /* : NativeString */;
788 val* var45 /* : FlatString */;
789 static val* varonce46;
790 val* var47 /* : String */;
791 char* var48 /* : NativeString */;
792 val* var49 /* : FlatString */;
793 val* var50 /* : String */;
794 val* var51 /* : String */;
795 val* var52 /* : String */;
796 var_native = p0;
797 var_len = p1;
798 {
799 { /* Inline stream#Stream#last_error (self) on <self:FileWriter> */
800 var2 = self->attrs[COLOR_standard__stream__Stream___last_error].val; /* _last_error on <self:FileWriter> */
801 var = var2;
802 RET_LABEL1:(void)0;
803 }
804 }
805 if (var == NULL) {
806 var3 = 0; /* is null */
807 } else {
808 var3 = 1; /* arg is null and recv is not */
809 }
810 if (0) {
811 { /* Inline kernel#Object#!= (var,((val*)NULL)) on <var:nullable IOError> */
812 var_other = ((val*)NULL);
813 {
814 var6 = ((short int(*)(val* self, val* p0))(var->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var, var_other); /* == on <var:nullable IOError(IOError)>*/
815 }
816 var7 = !var6;
817 var4 = var7;
818 goto RET_LABEL5;
819 RET_LABEL5:(void)0;
820 }
821 var3 = var4;
822 }
823 if (var3){
824 goto RET_LABEL;
825 } else {
826 }
827 var8 = self->attrs[COLOR_standard__file__FileWriter___is_writable].s; /* _is_writable on <self:FileWriter> */
828 var9 = !var8;
829 if (var9){
830 var10 = NEW_standard__IOError(&type_standard__IOError);
831 if (likely(varonce!=NULL)) {
832 var11 = varonce;
833 } else {
834 var12 = "Cannot write to non-writable stream";
835 var13 = standard___standard__NativeString___to_s_with_length(var12, 35l);
836 var11 = var13;
837 varonce = var11;
838 }
839 {
840 ((void(*)(val* self, val* p0))(var10->class->vft[COLOR_standard__error__Error__message_61d]))(var10, var11); /* message= on <var10:IOError>*/
841 }
842 {
843 ((void(*)(val* self))(var10->class->vft[COLOR_standard__kernel__Object__init]))(var10); /* init on <var10:IOError>*/
844 }
845 {
846 { /* Inline stream#Stream#last_error= (self,var10) on <self:FileWriter> */
847 self->attrs[COLOR_standard__stream__Stream___last_error].val = var10; /* _last_error on <self:FileWriter> */
848 RET_LABEL14:(void)0;
849 }
850 }
851 goto RET_LABEL;
852 } else {
853 }
854 var15 = self->attrs[COLOR_standard__file__FileStream___file].val; /* _file on <self:FileWriter> */
855 if (var15 == NULL) {
856 PRINT_ERROR("Runtime error: %s", "Receiver is null");
857 PRINT_ERROR(" (%s:%d)\n", FILE_standard__file, 235);
858 fatal_exit(1);
859 } else {
860 { /* Inline kernel#Pointer#address_is_null (var15) on <var15:nullable NativeFile> */
861 var19 = ((struct instance_standard__Pointer*)var15)->value; /* unboxing nullable NativeFile */
862 var18 = address_is_null(var19);
863 var16 = var18;
864 goto RET_LABEL17;
865 RET_LABEL17:(void)0;
866 }
867 }
868 if (var16){
869 var20 = NEW_standard__IOError(&type_standard__IOError);
870 if (likely(varonce21!=NULL)) {
871 var22 = varonce21;
872 } else {
873 var23 = "Writing on a null stream";
874 var24 = standard___standard__NativeString___to_s_with_length(var23, 24l);
875 var22 = var24;
876 varonce21 = var22;
877 }
878 {
879 ((void(*)(val* self, val* p0))(var20->class->vft[COLOR_standard__error__Error__message_61d]))(var20, var22); /* message= on <var20:IOError>*/
880 }
881 {
882 ((void(*)(val* self))(var20->class->vft[COLOR_standard__kernel__Object__init]))(var20); /* init on <var20:IOError>*/
883 }
884 {
885 { /* Inline stream#Stream#last_error= (self,var20) on <self:FileWriter> */
886 self->attrs[COLOR_standard__stream__Stream___last_error].val = var20; /* _last_error on <self:FileWriter> */
887 RET_LABEL25:(void)0;
888 }
889 }
890 self->attrs[COLOR_standard__file__FileWriter___is_writable].s = 0; /* _is_writable on <self:FileWriter> */
891 goto RET_LABEL;
892 } else {
893 }
894 var26 = self->attrs[COLOR_standard__file__FileStream___file].val; /* _file on <self:FileWriter> */
895 if (var26 == NULL) {
896 PRINT_ERROR("Runtime error: %s", "Receiver is null");
897 PRINT_ERROR(" (%s:%d)\n", FILE_standard__file, 240);
898 fatal_exit(1);
899 } else {
900 { /* Inline file#NativeFile#io_write (var26,var_native,var_len) on <var26:nullable NativeFile> */
901 var30 = ((struct instance_standard__Pointer*)var26)->value; /* unboxing nullable NativeFile */
902 var29 = file_NativeFile_NativeFile_io_write_2(var30, var_native, var_len);
903 var27 = var29;
904 goto RET_LABEL28;
905 RET_LABEL28:(void)0;
906 }
907 }
908 var_err = var27;
909 {
910 { /* Inline kernel#Int#!= (var_err,var_len) on <var_err:Int> */
911 var33 = var_err == var_len;
912 var34 = !var33;
913 var31 = var34;
914 goto RET_LABEL32;
915 RET_LABEL32:(void)0;
916 }
917 }
918 if (var31){
919 var35 = NEW_standard__IOError(&type_standard__IOError);
920 if (unlikely(varonce36==NULL)) {
921 var37 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
922 if (likely(varonce38!=NULL)) {
923 var39 = varonce38;
924 } else {
925 var40 = "Problem in writing : ";
926 var41 = standard___standard__NativeString___to_s_with_length(var40, 21l);
927 var39 = var41;
928 varonce38 = var39;
929 }
930 ((struct instance_standard__NativeArray*)var37)->values[0]=var39;
931 if (likely(varonce42!=NULL)) {
932 var43 = varonce42;
933 } else {
934 var44 = " ";
935 var45 = standard___standard__NativeString___to_s_with_length(var44, 1l);
936 var43 = var45;
937 varonce42 = var43;
938 }
939 ((struct instance_standard__NativeArray*)var37)->values[2]=var43;
940 if (likely(varonce46!=NULL)) {
941 var47 = varonce46;
942 } else {
943 var48 = " \n";
944 var49 = standard___standard__NativeString___to_s_with_length(var48, 2l);
945 var47 = var49;
946 varonce46 = var47;
947 }
948 ((struct instance_standard__NativeArray*)var37)->values[4]=var47;
949 } else {
950 var37 = varonce36;
951 varonce36 = NULL;
952 }
953 var50 = standard__string___Int___Object__to_s(var_err);
954 ((struct instance_standard__NativeArray*)var37)->values[1]=var50;
955 var51 = standard__string___Int___Object__to_s(var_len);
956 ((struct instance_standard__NativeArray*)var37)->values[3]=var51;
957 {
958 var52 = ((val*(*)(val* self))(var37->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var37); /* native_to_s on <var37:NativeArray[String]>*/
959 }
960 varonce36 = var37;
961 {
962 ((void(*)(val* self, val* p0))(var35->class->vft[COLOR_standard__error__Error__message_61d]))(var35, var52); /* message= on <var35:IOError>*/
963 }
964 {
965 ((void(*)(val* self))(var35->class->vft[COLOR_standard__kernel__Object__init]))(var35); /* init on <var35:IOError>*/
966 }
967 {
968 { /* Inline stream#Stream#last_error= (self,var35) on <self:FileWriter> */
969 self->attrs[COLOR_standard__stream__Stream___last_error].val = var35; /* _last_error on <self:FileWriter> */
970 RET_LABEL53:(void)0;
971 }
972 }
973 } else {
974 }
975 RET_LABEL:;
976 }
977 /* method file#FileWriter#open for (self: FileWriter, String) */
978 void standard___standard__FileWriter___open(val* self, val* p0) {
979 val* var_path /* var path: String */;
980 val* var /* : NativeFile */;
981 char* var1 /* : NativeString */;
982 val* var2 /* : NativeFile */;
983 val* var4 /* : nullable NativeFile */;
984 short int var5 /* : Bool */;
985 short int var7 /* : Bool for extern */;
986 void* var8 /* : Pointer for extern */;
987 val* var9 /* : IOError */;
988 val* var10 /* : NativeArray[String] */;
989 static val* varonce;
990 static val* varonce11;
991 val* var12 /* : String */;
992 char* var13 /* : NativeString */;
993 val* var14 /* : FlatString */;
994 static val* varonce15;
995 val* var16 /* : String */;
996 char* var17 /* : NativeString */;
997 val* var18 /* : FlatString */;
998 static val* varonce19;
999 val* var20 /* : String */;
1000 char* var21 /* : NativeString */;
1001 val* var22 /* : FlatString */;
1002 val* var23 /* : Sys */;
1003 val* var25 /* : Sys */;
1004 long var26 /* : Int */;
1005 long var28 /* : Int for extern */;
1006 val* var29 /* : String */;
1007 val* var30 /* : String */;
1008 {
1009 ((void(*)(val* self))(self->class->vft[COLOR_standard__kernel__Object__init]))(self); /* init on <self:FileWriter>*/
1010 }
1011 var_path = p0;
1012 var = NEW_standard__file__NativeFile(&type_standard__file__NativeFile);
1013 {
1014 var1 = ((char*(*)(val* self))(var_path->class->vft[COLOR_standard__string__Text__to_cstring]))(var_path); /* to_cstring on <var_path:String>*/
1015 }
1016 {
1017 var2 = standard__file___standard__file__NativeFile___io_open_write(var, var1);
1018 }
1019 self->attrs[COLOR_standard__file__FileStream___file].val = var2; /* _file on <self:FileWriter> */
1020 {
1021 { /* Inline file#FileStream#path= (self,var_path) on <self:FileWriter> */
1022 self->attrs[COLOR_standard__file__FileStream___path].val = var_path; /* _path on <self:FileWriter> */
1023 RET_LABEL3:(void)0;
1024 }
1025 }
1026 self->attrs[COLOR_standard__file__FileWriter___is_writable].s = 1; /* _is_writable on <self:FileWriter> */
1027 var4 = self->attrs[COLOR_standard__file__FileStream___file].val; /* _file on <self:FileWriter> */
1028 if (var4 == NULL) {
1029 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1030 PRINT_ERROR(" (%s:%d)\n", FILE_standard__file, 253);
1031 fatal_exit(1);
1032 } else {
1033 { /* Inline kernel#Pointer#address_is_null (var4) on <var4:nullable NativeFile> */
1034 var8 = ((struct instance_standard__Pointer*)var4)->value; /* unboxing nullable NativeFile */
1035 var7 = address_is_null(var8);
1036 var5 = var7;
1037 goto RET_LABEL6;
1038 RET_LABEL6:(void)0;
1039 }
1040 }
1041 if (var5){
1042 var9 = NEW_standard__IOError(&type_standard__IOError);
1043 if (unlikely(varonce==NULL)) {
1044 var10 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
1045 if (likely(varonce11!=NULL)) {
1046 var12 = varonce11;
1047 } else {
1048 var13 = "Error: Opening file at \'";
1049 var14 = standard___standard__NativeString___to_s_with_length(var13, 24l);
1050 var12 = var14;
1051 varonce11 = var12;
1052 }
1053 ((struct instance_standard__NativeArray*)var10)->values[0]=var12;
1054 if (likely(varonce15!=NULL)) {
1055 var16 = varonce15;
1056 } else {
1057 var17 = "\' failed with \'";
1058 var18 = standard___standard__NativeString___to_s_with_length(var17, 15l);
1059 var16 = var18;
1060 varonce15 = var16;
1061 }
1062 ((struct instance_standard__NativeArray*)var10)->values[2]=var16;
1063 if (likely(varonce19!=NULL)) {
1064 var20 = varonce19;
1065 } else {
1066 var21 = "\'";
1067 var22 = standard___standard__NativeString___to_s_with_length(var21, 1l);
1068 var20 = var22;
1069 varonce19 = var20;
1070 }
1071 ((struct instance_standard__NativeArray*)var10)->values[4]=var20;
1072 } else {
1073 var10 = varonce;
1074 varonce = NULL;
1075 }
1076 ((struct instance_standard__NativeArray*)var10)->values[1]=var_path;
1077 {
1078 { /* Inline kernel#Object#sys (self) on <self:FileWriter> */
1079 var25 = glob_sys;
1080 var23 = var25;
1081 goto RET_LABEL24;
1082 RET_LABEL24:(void)0;
1083 }
1084 }
1085 {
1086 { /* Inline kernel#Sys#errno (var23) on <var23:Sys> */
1087 var28 = sys_errno(var23);
1088 var26 = var28;
1089 goto RET_LABEL27;
1090 RET_LABEL27:(void)0;
1091 }
1092 }
1093 {
1094 var29 = standard__string___Int___strerror(var26);
1095 }
1096 ((struct instance_standard__NativeArray*)var10)->values[3]=var29;
1097 {
1098 var30 = ((val*(*)(val* self))(var10->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var10); /* native_to_s on <var10:NativeArray[String]>*/
1099 }
1100 varonce = var10;
1101 {
1102 ((void(*)(val* self, val* p0))(var9->class->vft[COLOR_standard__error__Error__message_61d]))(var9, var30); /* message= on <var9:IOError>*/
1103 }
1104 {
1105 ((void(*)(val* self))(var9->class->vft[COLOR_standard__kernel__Object__init]))(var9); /* init on <var9:IOError>*/
1106 }
1107 {
1108 { /* Inline stream#Stream#last_error= (self,var9) on <self:FileWriter> */
1109 self->attrs[COLOR_standard__stream__Stream___last_error].val = var9; /* _last_error on <self:FileWriter> */
1110 RET_LABEL31:(void)0;
1111 }
1112 }
1113 {
1114 { /* Inline file#FileWriter#is_writable= (self,0) on <self:FileWriter> */
1115 self->attrs[COLOR_standard__file__FileWriter___is_writable].s = 0; /* _is_writable on <self:FileWriter> */
1116 RET_LABEL32:(void)0;
1117 }
1118 }
1119 } else {
1120 }
1121 RET_LABEL:;
1122 }
1123 /* method file#Stdin#init for (self: Stdin) */
1124 void standard___standard__Stdin___standard__kernel__Object__init(val* self) {
1125 val* var /* : NativeFile */;
1126 val* var1 /* : NativeFile */;
1127 static val* varonce;
1128 val* var2 /* : String */;
1129 char* var3 /* : NativeString */;
1130 val* var4 /* : FlatString */;
1131 {
1132 ((void(*)(val* self))(self->class->vft[COLOR_standard___standard__Stdin___standard__kernel__Object__init]))(self); /* init on <self:Stdin>*/
1133 }
1134 var = NEW_standard__file__NativeFile(&type_standard__file__NativeFile);
1135 {
1136 var1 = standard__file___standard__file__NativeFile___native_stdin(var);
1137 }
1138 self->attrs[COLOR_standard__file__FileStream___file].val = var1; /* _file on <self:Stdin> */
1139 if (likely(varonce!=NULL)) {
1140 var2 = varonce;
1141 } else {
1142 var3 = "/dev/stdin";
1143 var4 = standard___standard__NativeString___to_s_with_length(var3, 10l);
1144 var2 = var4;
1145 varonce = var2;
1146 }
1147 {
1148 { /* Inline file#FileStream#path= (self,var2) on <self:Stdin> */
1149 self->attrs[COLOR_standard__file__FileStream___path].val = var2; /* _path on <self:Stdin> */
1150 RET_LABEL5:(void)0;
1151 }
1152 }
1153 {
1154 standard___standard__BufferedReader___prepare_buffer(self, 1l); /* Direct call stream#BufferedReader#prepare_buffer on <self:Stdin>*/
1155 }
1156 RET_LABEL:;
1157 }
1158 /* method file#Stdout#init for (self: Stdout) */
1159 void standard___standard__Stdout___standard__kernel__Object__init(val* self) {
1160 val* var /* : NativeFile */;
1161 val* var1 /* : NativeFile */;
1162 static val* varonce;
1163 val* var2 /* : String */;
1164 char* var3 /* : NativeString */;
1165 val* var4 /* : FlatString */;
1166 val* var6 /* : Sys */;
1167 val* var8 /* : Sys */;
1168 long var9 /* : Int */;
1169 long var11 /* : Int for extern */;
1170 {
1171 ((void(*)(val* self))(self->class->vft[COLOR_standard___standard__Stdout___standard__kernel__Object__init]))(self); /* init on <self:Stdout>*/
1172 }
1173 var = NEW_standard__file__NativeFile(&type_standard__file__NativeFile);
1174 {
1175 var1 = standard__file___standard__file__NativeFile___native_stdout(var);
1176 }
1177 self->attrs[COLOR_standard__file__FileStream___file].val = var1; /* _file on <self:Stdout> */
1178 if (likely(varonce!=NULL)) {
1179 var2 = varonce;
1180 } else {
1181 var3 = "/dev/stdout";
1182 var4 = standard___standard__NativeString___to_s_with_length(var3, 11l);
1183 var2 = var4;
1184 varonce = var2;
1185 }
1186 {
1187 { /* Inline file#FileStream#path= (self,var2) on <self:Stdout> */
1188 self->attrs[COLOR_standard__file__FileStream___path].val = var2; /* _path on <self:Stdout> */
1189 RET_LABEL5:(void)0;
1190 }
1191 }
1192 self->attrs[COLOR_standard__file__FileWriter___is_writable].s = 1; /* _is_writable on <self:Stdout> */
1193 {
1194 { /* Inline kernel#Object#sys (self) on <self:Stdout> */
1195 var8 = glob_sys;
1196 var6 = var8;
1197 goto RET_LABEL7;
1198 RET_LABEL7:(void)0;
1199 }
1200 }
1201 {
1202 { /* Inline file#Sys#buffer_mode_line (var6) on <var6:Sys> */
1203 var11 = file_Sys_Sys_buffer_mode_line_0(var6);
1204 var9 = var11;
1205 goto RET_LABEL10;
1206 RET_LABEL10:(void)0;
1207 }
1208 }
1209 {
1210 standard___standard__FileStream___set_buffering_mode(self, 256l, var9); /* Direct call file#FileStream#set_buffering_mode on <self:Stdout>*/
1211 }
1212 RET_LABEL:;
1213 }
1214 /* method file#Stderr#init for (self: Stderr) */
1215 void standard___standard__Stderr___standard__kernel__Object__init(val* self) {
1216 val* var /* : NativeFile */;
1217 val* var1 /* : NativeFile */;
1218 static val* varonce;
1219 val* var2 /* : String */;
1220 char* var3 /* : NativeString */;
1221 val* var4 /* : FlatString */;
1222 {
1223 ((void(*)(val* self))(self->class->vft[COLOR_standard___standard__Stderr___standard__kernel__Object__init]))(self); /* init on <self:Stderr>*/
1224 }
1225 var = NEW_standard__file__NativeFile(&type_standard__file__NativeFile);
1226 {
1227 var1 = standard__file___standard__file__NativeFile___native_stderr(var);
1228 }
1229 self->attrs[COLOR_standard__file__FileStream___file].val = var1; /* _file on <self:Stderr> */
1230 if (likely(varonce!=NULL)) {
1231 var2 = varonce;
1232 } else {
1233 var3 = "/dev/stderr";
1234 var4 = standard___standard__NativeString___to_s_with_length(var3, 11l);
1235 var2 = var4;
1236 varonce = var2;
1237 }
1238 {
1239 { /* Inline file#FileStream#path= (self,var2) on <self:Stderr> */
1240 self->attrs[COLOR_standard__file__FileStream___path].val = var2; /* _path on <self:Stderr> */
1241 RET_LABEL5:(void)0;
1242 }
1243 }
1244 self->attrs[COLOR_standard__file__FileWriter___is_writable].s = 1; /* _is_writable on <self:Stderr> */
1245 RET_LABEL:;
1246 }
1247 /* method file#Writable#write_to_file for (self: Writable, String) */
1248 void standard__file___Writable___write_to_file(val* self, val* p0) {
1249 val* var_filepath /* var filepath: String */;
1250 val* var /* : FileWriter */;
1251 val* var_stream /* var stream: FileWriter */;
1252 var_filepath = p0;
1253 var = NEW_standard__FileWriter(&type_standard__FileWriter);
1254 {
1255 standard___standard__FileWriter___open(var, var_filepath); /* Direct call file#FileWriter#open on <var:FileWriter>*/
1256 }
1257 var_stream = var;
1258 {
1259 ((void(*)(val* self, val* p0))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_standard__stream__Writable__write_to]))(self, var_stream); /* write_to on <self:Writable>*/
1260 }
1261 {
1262 standard___standard__FileWriter___standard__stream__Stream__close(var_stream); /* Direct call file#FileWriter#close on <var_stream:FileWriter>*/
1263 }
1264 RET_LABEL:;
1265 }
1266 /* method file#Path#path for (self: Path): String */
1267 val* standard___standard__Path___path(val* self) {
1268 val* var /* : String */;
1269 val* var1 /* : String */;
1270 var1 = self->attrs[COLOR_standard__file__Path___path].val; /* _path on <self:Path> */
1271 if (unlikely(var1 == NULL)) {
1272 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
1273 PRINT_ERROR(" (%s:%d)\n", FILE_standard__file, 347);
1274 fatal_exit(1);
1275 }
1276 var = var1;
1277 RET_LABEL:;
1278 return var;
1279 }
1280 /* method file#Path#path= for (self: Path, String) */
1281 void standard___standard__Path___path_61d(val* self, val* p0) {
1282 self->attrs[COLOR_standard__file__Path___path].val = p0; /* _path on <self:Path> */
1283 RET_LABEL:;
1284 }
1285 /* method file#Path#to_s for (self: Path): String */
1286 val* standard___standard__Path___standard__string__Object__to_s(val* self) {
1287 val* var /* : String */;
1288 val* var1 /* : String */;
1289 val* var3 /* : String */;
1290 {
1291 { /* Inline file#Path#path (self) on <self:Path> */
1292 var3 = self->attrs[COLOR_standard__file__Path___path].val; /* _path on <self:Path> */
1293 if (unlikely(var3 == NULL)) {
1294 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
1295 PRINT_ERROR(" (%s:%d)\n", FILE_standard__file, 347);
1296 fatal_exit(1);
1297 }
1298 var1 = var3;
1299 RET_LABEL2:(void)0;
1300 }
1301 }
1302 var = var1;
1303 goto RET_LABEL;
1304 RET_LABEL:;
1305 return var;
1306 }
1307 /* method file#Path#copy for (self: Path, Path) */
1308 void standard___standard__Path___copy(val* self, val* p0) {
1309 val* var_dest /* var dest: Path */;
1310 val* var /* : FileReader */;
1311 val* var_input /* var input: FileReader */;
1312 val* var1 /* : FileWriter */;
1313 val* var_output /* var output: FileWriter */;
1314 short int var2 /* : Bool */;
1315 short int var3 /* : Bool */;
1316 val* var4 /* : String */;
1317 val* var_buffer /* var buffer: String */;
1318 var_dest = p0;
1319 {
1320 var = standard___standard__Path___open_ro(self);
1321 }
1322 var_input = var;
1323 {
1324 var1 = standard___standard__Path___open_wo(var_dest);
1325 }
1326 var_output = var1;
1327 for(;;) {
1328 {
1329 var2 = standard___standard__BufferedReader___Reader__eof(var_input);
1330 }
1331 var3 = !var2;
1332 if (var3){
1333 {
1334 var4 = standard___standard__Reader___read(var_input, 1024l);
1335 }
1336 var_buffer = var4;
1337 {
1338 standard___standard__FileWriter___standard__stream__Writer__write(var_output, var_buffer); /* Direct call file#FileWriter#write on <var_output:FileWriter>*/
1339 }
1340 } else {
1341 goto BREAK_label;
1342 }
1343 }
1344 BREAK_label: (void)0;
1345 {
1346 standard___standard__FileReader___standard__stream__Stream__close(var_input); /* Direct call file#FileReader#close on <var_input:FileReader>*/
1347 }
1348 {
1349 standard___standard__FileWriter___standard__stream__Stream__close(var_output); /* Direct call file#FileWriter#close on <var_output:FileWriter>*/
1350 }
1351 RET_LABEL:;
1352 }
1353 /* method file#Path#open_ro for (self: Path): FileReader */
1354 val* standard___standard__Path___open_ro(val* self) {
1355 val* var /* : FileReader */;
1356 val* var1 /* : FileReader */;
1357 val* var2 /* : String */;
1358 val* var4 /* : String */;
1359 var1 = NEW_standard__FileReader(&type_standard__FileReader);
1360 {
1361 { /* Inline file#Path#path (self) on <self:Path> */
1362 var4 = self->attrs[COLOR_standard__file__Path___path].val; /* _path on <self:Path> */
1363 if (unlikely(var4 == NULL)) {
1364 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
1365 PRINT_ERROR(" (%s:%d)\n", FILE_standard__file, 347);
1366 fatal_exit(1);
1367 }
1368 var2 = var4;
1369 RET_LABEL3:(void)0;
1370 }
1371 }
1372 {
1373 standard___standard__FileReader___open(var1, var2); /* Direct call file#FileReader#open on <var1:FileReader>*/
1374 }
1375 var = var1;
1376 goto RET_LABEL;
1377 RET_LABEL:;
1378 return var;
1379 }
1380 /* method file#Path#open_wo for (self: Path): FileWriter */
1381 val* standard___standard__Path___open_wo(val* self) {
1382 val* var /* : FileWriter */;
1383 val* var1 /* : FileWriter */;
1384 val* var2 /* : String */;
1385 val* var4 /* : String */;
1386 var1 = NEW_standard__FileWriter(&type_standard__FileWriter);
1387 {
1388 { /* Inline file#Path#path (self) on <self:Path> */
1389 var4 = self->attrs[COLOR_standard__file__Path___path].val; /* _path on <self:Path> */
1390 if (unlikely(var4 == NULL)) {
1391 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
1392 PRINT_ERROR(" (%s:%d)\n", FILE_standard__file, 347);
1393 fatal_exit(1);
1394 }
1395 var2 = var4;
1396 RET_LABEL3:(void)0;
1397 }
1398 }
1399 {
1400 standard___standard__FileWriter___open(var1, var2); /* Direct call file#FileWriter#open on <var1:FileWriter>*/
1401 }
1402 var = var1;
1403 goto RET_LABEL;
1404 RET_LABEL:;
1405 return var;
1406 }
1407 /* method file#Path#== for (self: Path, nullable Object): Bool */
1408 short int standard___standard__Path___standard__kernel__Object___61d_61d(val* self, val* p0) {
1409 short int var /* : Bool */;
1410 val* var_other /* var other: nullable Object */;
1411 short int var1 /* : Bool */;
1412 short int var2 /* : Bool */;
1413 int cltype;
1414 int idtype;
1415 short int var_ /* var : Bool */;
1416 val* var3 /* : String */;
1417 val* var5 /* : String */;
1418 val* var6 /* : String */;
1419 val* var7 /* : String */;
1420 val* var9 /* : String */;
1421 val* var10 /* : String */;
1422 short int var11 /* : Bool */;
1423 var_other = p0;
1424 /* <var_other:nullable Object> isa Path */
1425 cltype = type_standard__Path.color;
1426 idtype = type_standard__Path.id;
1427 if(var_other == NULL) {
1428 var2 = 0;
1429 } else {
1430 if(cltype >= (((long)var_other&3)?type_info[((long)var_other&3)]:var_other->type)->table_size) {
1431 var2 = 0;
1432 } else {
1433 var2 = (((long)var_other&3)?type_info[((long)var_other&3)]:var_other->type)->type_table[cltype] == idtype;
1434 }
1435 }
1436 var_ = var2;
1437 if (var2){
1438 {
1439 { /* Inline file#Path#path (self) on <self:Path> */
1440 var5 = self->attrs[COLOR_standard__file__Path___path].val; /* _path on <self:Path> */
1441 if (unlikely(var5 == NULL)) {
1442 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
1443 PRINT_ERROR(" (%s:%d)\n", FILE_standard__file, 347);
1444 fatal_exit(1);
1445 }
1446 var3 = var5;
1447 RET_LABEL4:(void)0;
1448 }
1449 }
1450 {
1451 var6 = standard__file___String___simplify_path(var3);
1452 }
1453 {
1454 { /* Inline file#Path#path (var_other) on <var_other:nullable Object(Path)> */
1455 var9 = var_other->attrs[COLOR_standard__file__Path___path].val; /* _path on <var_other:nullable Object(Path)> */
1456 if (unlikely(var9 == NULL)) {
1457 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
1458 PRINT_ERROR(" (%s:%d)\n", FILE_standard__file, 347);
1459 fatal_exit(1);
1460 }
1461 var7 = var9;
1462 RET_LABEL8:(void)0;
1463 }
1464 }
1465 {
1466 var10 = standard__file___String___simplify_path(var7);
1467 }
1468 {
1469 var11 = ((short int(*)(val* self, val* p0))(var6->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var6, var10); /* == on <var6:String>*/
1470 }
1471 var1 = var11;
1472 } else {
1473 var1 = var_;
1474 }
1475 var = var1;
1476 goto RET_LABEL;
1477 RET_LABEL:;
1478 return var;
1479 }
1480 /* method file#Path#hash for (self: Path): Int */
1481 long standard___standard__Path___standard__kernel__Object__hash(val* self) {
1482 long var /* : Int */;
1483 val* var1 /* : String */;
1484 val* var3 /* : String */;
1485 val* var4 /* : String */;
1486 long var5 /* : Int */;
1487 {
1488 { /* Inline file#Path#path (self) on <self:Path> */
1489 var3 = self->attrs[COLOR_standard__file__Path___path].val; /* _path on <self:Path> */
1490 if (unlikely(var3 == NULL)) {
1491 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
1492 PRINT_ERROR(" (%s:%d)\n", FILE_standard__file, 347);
1493 fatal_exit(1);
1494 }
1495 var1 = var3;
1496 RET_LABEL2:(void)0;
1497 }
1498 }
1499 {
1500 var4 = standard__file___String___simplify_path(var1);
1501 }
1502 {
1503 var5 = ((long(*)(val* self))(var4->class->vft[COLOR_standard__kernel__Object__hash]))(var4); /* hash on <var4:String>*/
1504 }
1505 var = var5;
1506 goto RET_LABEL;
1507 RET_LABEL:;
1508 return var;
1509 }
1510 /* method file#Path#init for (self: Path) */
1511 void standard___standard__Path___standard__kernel__Object__init(val* self) {
1512 {
1513 ((void(*)(val* self))(self->class->vft[COLOR_standard___standard__Path___standard__kernel__Object__init]))(self); /* init on <self:Path>*/
1514 }
1515 RET_LABEL:;
1516 }
1517 /* method file#Text#to_path for (self: Text): Path */
1518 val* standard__file___Text___to_path(val* self) {
1519 val* var /* : Path */;
1520 val* var1 /* : Path */;
1521 val* var2 /* : String */;
1522 var1 = NEW_standard__Path(&type_standard__Path);
1523 {
1524 var2 = ((val*(*)(val* self))(self->class->vft[COLOR_standard__string__Object__to_s]))(self); /* to_s on <self:Text>*/
1525 }
1526 {
1527 ((void(*)(val* self, val* p0))(var1->class->vft[COLOR_standard__file__Path__path_61d]))(var1, var2); /* path= on <var1:Path>*/
1528 }
1529 {
1530 ((void(*)(val* self))(var1->class->vft[COLOR_standard__kernel__Object__init]))(var1); /* init on <var1:Path>*/
1531 }
1532 var = var1;
1533 goto RET_LABEL;
1534 RET_LABEL:;
1535 return var;
1536 }
1537 /* method file#String#file_exists for (self: String): Bool */
1538 short int standard__file___String___file_exists(val* self) {
1539 short int var /* : Bool */;
1540 char* var1 /* : NativeString */;
1541 short int var2 /* : Bool */;
1542 short int var4 /* : Bool for extern */;
1543 {
1544 var1 = ((char*(*)(val* self))(self->class->vft[COLOR_standard__string__Text__to_cstring]))(self); /* to_cstring on <self:String>*/
1545 }
1546 {
1547 { /* Inline file#NativeString#file_exists (var1) on <var1:NativeString> */
1548 var4 = string_NativeString_NativeString_file_exists_0(var1);
1549 var2 = var4;
1550 goto RET_LABEL3;
1551 RET_LABEL3:(void)0;
1552 }
1553 }
1554 var = var2;
1555 goto RET_LABEL;
1556 RET_LABEL:;
1557 return var;
1558 }
1559 /* method file#String#file_copy_to for (self: String, String) */
1560 void standard__file___String___file_copy_to(val* self, val* p0) {
1561 val* var_dest /* var dest: String */;
1562 val* var /* : Path */;
1563 val* var1 /* : Path */;
1564 var_dest = p0;
1565 {
1566 var = standard__file___Text___to_path(self);
1567 }
1568 {
1569 var1 = standard__file___Text___to_path(var_dest);
1570 }
1571 {
1572 standard___standard__Path___copy(var, var1); /* Direct call file#Path#copy on <var:Path>*/
1573 }
1574 RET_LABEL:;
1575 }
1576 /* method file#String#strip_extension for (self: String, String): String */
1577 val* standard__file___String___strip_extension(val* self, val* p0) {
1578 val* var /* : String */;
1579 val* var_ext /* var ext: String */;
1580 short int var1 /* : Bool */;
1581 long var2 /* : Int */;
1582 long var3 /* : Int */;
1583 long var4 /* : Int */;
1584 short int var6 /* : Bool */;
1585 int cltype;
1586 int idtype;
1587 const char* var_class_name;
1588 long var7 /* : Int */;
1589 val* var8 /* : Text */;
1590 var_ext = p0;
1591 {
1592 var1 = standard___standard__Text___has_suffix(self, var_ext);
1593 }
1594 if (var1){
1595 {
1596 var2 = ((long(*)(val* self))(self->class->vft[COLOR_standard__string__Text__length]))(self); /* length on <self:String>*/
1597 }
1598 {
1599 var3 = ((long(*)(val* self))(var_ext->class->vft[COLOR_standard__string__Text__length]))(var_ext); /* length on <var_ext:String>*/
1600 }
1601 {
1602 { /* Inline kernel#Int#- (var2,var3) on <var2:Int> */
1603 /* Covariant cast for argument 0 (i) <var3:Int> isa OTHER */
1604 /* <var3:Int> isa OTHER */
1605 var6 = 1; /* easy <var3:Int> isa OTHER*/
1606 if (unlikely(!var6)) {
1607 var_class_name = type_standard__Int.name;
1608 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1609 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
1610 fatal_exit(1);
1611 }
1612 var7 = var2 - var3;
1613 var4 = var7;
1614 goto RET_LABEL5;
1615 RET_LABEL5:(void)0;
1616 }
1617 }
1618 {
1619 var8 = ((val*(*)(val* self, long p0, long p1))(self->class->vft[COLOR_standard__string__Text__substring]))(self, 0l, var4); /* substring on <self:String>*/
1620 }
1621 var = var8;
1622 goto RET_LABEL;
1623 } else {
1624 }
1625 var = self;
1626 goto RET_LABEL;
1627 RET_LABEL:;
1628 return var;
1629 }
1630 /* method file#String#basename for (self: String, String): String */
1631 val* standard__file___String___basename(val* self, val* p0) {
1632 val* var /* : String */;
1633 val* var_ext /* var ext: String */;
1634 long var1 /* : Int */;
1635 long var2 /* : Int */;
1636 short int var4 /* : Bool */;
1637 int cltype;
1638 int idtype;
1639 const char* var_class_name;
1640 long var5 /* : Int */;
1641 long var_l /* var l: Int */;
1642 short int var6 /* : Bool */;
1643 short int var7 /* : Bool */;
1644 short int var9 /* : Bool */;
1645 int cltype10;
1646 int idtype11;
1647 const char* var_class_name12;
1648 short int var13 /* : Bool */;
1649 short int var_ /* var : Bool */;
1650 val* var14 /* : SequenceRead[Char] */;
1651 val* var15 /* : nullable Object */;
1652 short int var16 /* : Bool */;
1653 short int var18 /* : Bool */;
1654 uint32_t var19 /* : Char */;
1655 long var20 /* : Int */;
1656 short int var22 /* : Bool */;
1657 int cltype23;
1658 int idtype24;
1659 const char* var_class_name25;
1660 long var26 /* : Int */;
1661 short int var27 /* : Bool */;
1662 short int var29 /* : Bool */;
1663 static val* varonce;
1664 val* var30 /* : String */;
1665 char* var31 /* : NativeString */;
1666 val* var32 /* : FlatString */;
1667 val* var33 /* : SequenceRead[Char] */;
1668 val* var34 /* : nullable Object */;
1669 long var35 /* : Int */;
1670 long var_pos /* var pos: Int */;
1671 val* var_n /* var n: String */;
1672 short int var36 /* : Bool */;
1673 short int var38 /* : Bool */;
1674 int cltype39;
1675 int idtype40;
1676 const char* var_class_name41;
1677 short int var42 /* : Bool */;
1678 long var43 /* : Int */;
1679 short int var45 /* : Bool */;
1680 int cltype46;
1681 int idtype47;
1682 const char* var_class_name48;
1683 long var49 /* : Int */;
1684 long var50 /* : Int */;
1685 short int var52 /* : Bool */;
1686 int cltype53;
1687 int idtype54;
1688 const char* var_class_name55;
1689 long var56 /* : Int */;
1690 val* var57 /* : Text */;
1691 val* var58 /* : String */;
1692 var_ext = p0;
1693 {
1694 var1 = ((long(*)(val* self))(self->class->vft[COLOR_standard__string__Text__length]))(self); /* length on <self:String>*/
1695 }
1696 {
1697 { /* Inline kernel#Int#- (var1,1l) on <var1:Int> */
1698 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
1699 /* <1l:Int> isa OTHER */
1700 var4 = 1; /* easy <1l:Int> isa OTHER*/
1701 if (unlikely(!var4)) {
1702 var_class_name = type_standard__Int.name;
1703 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1704 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
1705 fatal_exit(1);
1706 }
1707 var5 = var1 - 1l;
1708 var2 = var5;
1709 goto RET_LABEL3;
1710 RET_LABEL3:(void)0;
1711 }
1712 }
1713 var_l = var2;
1714 for(;;) {
1715 {
1716 { /* Inline kernel#Int#> (var_l,0l) on <var_l:Int> */
1717 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
1718 /* <0l:Int> isa OTHER */
1719 var9 = 1; /* easy <0l:Int> isa OTHER*/
1720 if (unlikely(!var9)) {
1721 var_class_name12 = type_standard__Int.name;
1722 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name12);
1723 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 536);
1724 fatal_exit(1);
1725 }
1726 var13 = var_l > 0l;
1727 var7 = var13;
1728 goto RET_LABEL8;
1729 RET_LABEL8:(void)0;
1730 }
1731 }
1732 var_ = var7;
1733 if (var7){
1734 {
1735 var14 = ((val*(*)(val* self))(self->class->vft[COLOR_standard__string__Text__chars]))(self); /* chars on <self:String>*/
1736 }
1737 {
1738 var15 = ((val*(*)(val* self, long p0))((((long)var14&3)?class_info[((long)var14&3)]:var14->class)->vft[COLOR_standard__abstract_collection__SequenceRead___91d_93d]))(var14, var_l); /* [] on <var14:SequenceRead[Char]>*/
1739 }
1740 {
1741 { /* Inline kernel#Char#== (var15,'/') on <var15:nullable Object(Char)> */
1742 var19 = (uint32_t)((long)(var15)>>2);
1743 var18 = (var15 != NULL) && (var19 == '/');
1744 var16 = var18;
1745 goto RET_LABEL17;
1746 RET_LABEL17:(void)0;
1747 }
1748 }
1749 var6 = var16;
1750 } else {
1751 var6 = var_;
1752 }
1753 if (var6){
1754 {
1755 { /* Inline kernel#Int#- (var_l,1l) on <var_l:Int> */
1756 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
1757 /* <1l:Int> isa OTHER */
1758 var22 = 1; /* easy <1l:Int> isa OTHER*/
1759 if (unlikely(!var22)) {
1760 var_class_name25 = type_standard__Int.name;
1761 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name25);
1762 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
1763 fatal_exit(1);
1764 }
1765 var26 = var_l - 1l;
1766 var20 = var26;
1767 goto RET_LABEL21;
1768 RET_LABEL21:(void)0;
1769 }
1770 }
1771 var_l = var20;
1772 } else {
1773 goto BREAK_label;
1774 }
1775 }
1776 BREAK_label: (void)0;
1777 {
1778 { /* Inline kernel#Int#== (var_l,0l) on <var_l:Int> */
1779 var29 = var_l == 0l;
1780 var27 = var29;
1781 goto RET_LABEL28;
1782 RET_LABEL28:(void)0;
1783 }
1784 }
1785 if (var27){
1786 if (likely(varonce!=NULL)) {
1787 var30 = varonce;
1788 } else {
1789 var31 = "/";
1790 var32 = standard___standard__NativeString___to_s_with_length(var31, 1l);
1791 var30 = var32;
1792 varonce = var30;
1793 }
1794 var = var30;
1795 goto RET_LABEL;
1796 } else {
1797 }
1798 {
1799 var33 = ((val*(*)(val* self))(self->class->vft[COLOR_standard__string__Text__chars]))(self); /* chars on <self:String>*/
1800 }
1801 {
1802 var34 = (val*)((long)('/')<<2|2);
1803 var35 = ((long(*)(val* self, val* p0, long p1))((((long)var33&3)?class_info[((long)var33&3)]:var33->class)->vft[COLOR_standard__abstract_collection__SequenceRead__last_index_of_from]))(var33, var34, var_l); /* last_index_of_from on <var33:SequenceRead[Char]>*/
1804 }
1805 var_pos = var35;
1806 var_n = self;
1807 {
1808 { /* Inline kernel#Int#>= (var_pos,0l) on <var_pos:Int> */
1809 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
1810 /* <0l:Int> isa OTHER */
1811 var38 = 1; /* easy <0l:Int> isa OTHER*/
1812 if (unlikely(!var38)) {
1813 var_class_name41 = type_standard__Int.name;
1814 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name41);
1815 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 535);
1816 fatal_exit(1);
1817 }
1818 var42 = var_pos >= 0l;
1819 var36 = var42;
1820 goto RET_LABEL37;
1821 RET_LABEL37:(void)0;
1822 }
1823 }
1824 if (var36){
1825 {
1826 { /* Inline kernel#Int#+ (var_pos,1l) on <var_pos:Int> */
1827 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
1828 /* <1l:Int> isa OTHER */
1829 var45 = 1; /* easy <1l:Int> isa OTHER*/
1830 if (unlikely(!var45)) {
1831 var_class_name48 = type_standard__Int.name;
1832 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name48);
1833 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
1834 fatal_exit(1);
1835 }
1836 var49 = var_pos + 1l;
1837 var43 = var49;
1838 goto RET_LABEL44;
1839 RET_LABEL44:(void)0;
1840 }
1841 }
1842 {
1843 { /* Inline kernel#Int#- (var_l,var_pos) on <var_l:Int> */
1844 /* Covariant cast for argument 0 (i) <var_pos:Int> isa OTHER */
1845 /* <var_pos:Int> isa OTHER */
1846 var52 = 1; /* easy <var_pos:Int> isa OTHER*/
1847 if (unlikely(!var52)) {
1848 var_class_name55 = type_standard__Int.name;
1849 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name55);
1850 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
1851 fatal_exit(1);
1852 }
1853 var56 = var_l - var_pos;
1854 var50 = var56;
1855 goto RET_LABEL51;
1856 RET_LABEL51:(void)0;
1857 }
1858 }
1859 {
1860 var57 = ((val*(*)(val* self, long p0, long p1))(self->class->vft[COLOR_standard__string__Text__substring]))(self, var43, var50); /* substring on <self:String>*/
1861 }
1862 var_n = var57;
1863 } else {
1864 }
1865 {
1866 var58 = standard__file___String___strip_extension(var_n, var_ext);
1867 }
1868 var = var58;
1869 goto RET_LABEL;
1870 RET_LABEL:;
1871 return var;
1872 }
1873 /* method file#String#dirname for (self: String): String */
1874 val* standard__file___String___dirname(val* self) {
1875 val* var /* : String */;
1876 long var1 /* : Int */;
1877 long var2 /* : Int */;
1878 short int var4 /* : Bool */;
1879 int cltype;
1880 int idtype;
1881 const char* var_class_name;
1882 long var5 /* : Int */;
1883 long var_l /* var l: Int */;
1884 short int var6 /* : Bool */;
1885 short int var7 /* : Bool */;
1886 short int var9 /* : Bool */;
1887 int cltype10;
1888 int idtype11;
1889 const char* var_class_name12;
1890 short int var13 /* : Bool */;
1891 short int var_ /* var : Bool */;
1892 val* var14 /* : SequenceRead[Char] */;
1893 val* var15 /* : nullable Object */;
1894 short int var16 /* : Bool */;
1895 short int var18 /* : Bool */;
1896 uint32_t var19 /* : Char */;
1897 long var20 /* : Int */;
1898 short int var22 /* : Bool */;
1899 int cltype23;
1900 int idtype24;
1901 const char* var_class_name25;
1902 long var26 /* : Int */;
1903 val* var27 /* : SequenceRead[Char] */;
1904 val* var28 /* : nullable Object */;
1905 long var29 /* : Int */;
1906 long var_pos /* var pos: Int */;
1907 short int var30 /* : Bool */;
1908 short int var32 /* : Bool */;
1909 int cltype33;
1910 int idtype34;
1911 const char* var_class_name35;
1912 short int var36 /* : Bool */;
1913 val* var37 /* : Text */;
1914 short int var38 /* : Bool */;
1915 short int var40 /* : Bool */;
1916 static val* varonce;
1917 val* var41 /* : String */;
1918 char* var42 /* : NativeString */;
1919 val* var43 /* : FlatString */;
1920 static val* varonce44;
1921 val* var45 /* : String */;
1922 char* var46 /* : NativeString */;
1923 val* var47 /* : FlatString */;
1924 {
1925 var1 = ((long(*)(val* self))(self->class->vft[COLOR_standard__string__Text__length]))(self); /* length on <self:String>*/
1926 }
1927 {
1928 { /* Inline kernel#Int#- (var1,1l) on <var1:Int> */
1929 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
1930 /* <1l:Int> isa OTHER */
1931 var4 = 1; /* easy <1l:Int> isa OTHER*/
1932 if (unlikely(!var4)) {
1933 var_class_name = type_standard__Int.name;
1934 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1935 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
1936 fatal_exit(1);
1937 }
1938 var5 = var1 - 1l;
1939 var2 = var5;
1940 goto RET_LABEL3;
1941 RET_LABEL3:(void)0;
1942 }
1943 }
1944 var_l = var2;
1945 for(;;) {
1946 {
1947 { /* Inline kernel#Int#> (var_l,0l) on <var_l:Int> */
1948 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
1949 /* <0l:Int> isa OTHER */
1950 var9 = 1; /* easy <0l:Int> isa OTHER*/
1951 if (unlikely(!var9)) {
1952 var_class_name12 = type_standard__Int.name;
1953 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name12);
1954 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 536);
1955 fatal_exit(1);
1956 }
1957 var13 = var_l > 0l;
1958 var7 = var13;
1959 goto RET_LABEL8;
1960 RET_LABEL8:(void)0;
1961 }
1962 }
1963 var_ = var7;
1964 if (var7){
1965 {
1966 var14 = ((val*(*)(val* self))(self->class->vft[COLOR_standard__string__Text__chars]))(self); /* chars on <self:String>*/
1967 }
1968 {
1969 var15 = ((val*(*)(val* self, long p0))((((long)var14&3)?class_info[((long)var14&3)]:var14->class)->vft[COLOR_standard__abstract_collection__SequenceRead___91d_93d]))(var14, var_l); /* [] on <var14:SequenceRead[Char]>*/
1970 }
1971 {
1972 { /* Inline kernel#Char#== (var15,'/') on <var15:nullable Object(Char)> */
1973 var19 = (uint32_t)((long)(var15)>>2);
1974 var18 = (var15 != NULL) && (var19 == '/');
1975 var16 = var18;
1976 goto RET_LABEL17;
1977 RET_LABEL17:(void)0;
1978 }
1979 }
1980 var6 = var16;
1981 } else {
1982 var6 = var_;
1983 }
1984 if (var6){
1985 {
1986 { /* Inline kernel#Int#- (var_l,1l) on <var_l:Int> */
1987 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
1988 /* <1l:Int> isa OTHER */
1989 var22 = 1; /* easy <1l:Int> isa OTHER*/
1990 if (unlikely(!var22)) {
1991 var_class_name25 = type_standard__Int.name;
1992 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name25);
1993 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
1994 fatal_exit(1);
1995 }
1996 var26 = var_l - 1l;
1997 var20 = var26;
1998 goto RET_LABEL21;
1999 RET_LABEL21:(void)0;
2000 }
2001 }
2002 var_l = var20;
2003 } else {
2004 goto BREAK_label;
2005 }
2006 }
2007 BREAK_label: (void)0;
2008 {
2009 var27 = ((val*(*)(val* self))(self->class->vft[COLOR_standard__string__Text__chars]))(self); /* chars on <self:String>*/
2010 }
2011 {
2012 var28 = (val*)((long)('/')<<2|2);
2013 var29 = ((long(*)(val* self, val* p0, long p1))((((long)var27&3)?class_info[((long)var27&3)]:var27->class)->vft[COLOR_standard__abstract_collection__SequenceRead__last_index_of_from]))(var27, var28, var_l); /* last_index_of_from on <var27:SequenceRead[Char]>*/
2014 }
2015 var_pos = var29;
2016 {
2017 { /* Inline kernel#Int#> (var_pos,0l) on <var_pos:Int> */
2018 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
2019 /* <0l:Int> isa OTHER */
2020 var32 = 1; /* easy <0l:Int> isa OTHER*/
2021 if (unlikely(!var32)) {
2022 var_class_name35 = type_standard__Int.name;
2023 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name35);
2024 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 536);
2025 fatal_exit(1);
2026 }
2027 var36 = var_pos > 0l;
2028 var30 = var36;
2029 goto RET_LABEL31;
2030 RET_LABEL31:(void)0;
2031 }
2032 }
2033 if (var30){
2034 {
2035 var37 = ((val*(*)(val* self, long p0, long p1))(self->class->vft[COLOR_standard__string__Text__substring]))(self, 0l, var_pos); /* substring on <self:String>*/
2036 }
2037 var = var37;
2038 goto RET_LABEL;
2039 } else {
2040 {
2041 { /* Inline kernel#Int#== (var_pos,0l) on <var_pos:Int> */
2042 var40 = var_pos == 0l;
2043 var38 = var40;
2044 goto RET_LABEL39;
2045 RET_LABEL39:(void)0;
2046 }
2047 }
2048 if (var38){
2049 if (likely(varonce!=NULL)) {
2050 var41 = varonce;
2051 } else {
2052 var42 = "/";
2053 var43 = standard___standard__NativeString___to_s_with_length(var42, 1l);
2054 var41 = var43;
2055 varonce = var41;
2056 }
2057 var = var41;
2058 goto RET_LABEL;
2059 } else {
2060 if (likely(varonce44!=NULL)) {
2061 var45 = varonce44;
2062 } else {
2063 var46 = ".";
2064 var47 = standard___standard__NativeString___to_s_with_length(var46, 1l);
2065 var45 = var47;
2066 varonce44 = var45;
2067 }
2068 var = var45;
2069 goto RET_LABEL;
2070 }
2071 }
2072 RET_LABEL:;
2073 return var;
2074 }
2075 /* method file#String#realpath for (self: String): String */
2076 val* standard__file___String___realpath(val* self) {
2077 val* var /* : String */;
2078 char* var1 /* : NativeString */;
2079 char* var2 /* : NativeString */;
2080 void* var4 /* : NativeString for extern */;
2081 char* var_cs /* var cs: NativeString */;
2082 val* var5 /* : FlatString */;
2083 val* var_res /* var res: FlatString */;
2084 {
2085 var1 = ((char*(*)(val* self))(self->class->vft[COLOR_standard__string__Text__to_cstring]))(self); /* to_cstring on <self:String>*/
2086 }
2087 {
2088 { /* Inline file#NativeString#file_realpath (var1) on <var1:NativeString> */
2089 var4 = file_NativeString_realpath(var1);
2090 var2 = var4;
2091 goto RET_LABEL3;
2092 RET_LABEL3:(void)0;
2093 }
2094 }
2095 var_cs = var2;
2096 {
2097 var5 = standard___standard__NativeString___to_s_with_copy(var_cs);
2098 }
2099 var_res = var5;
2100 var = var_res;
2101 goto RET_LABEL;
2102 RET_LABEL:;
2103 return var;
2104 }
2105 /* method file#String#simplify_path for (self: String): String */
2106 val* standard__file___String___simplify_path(val* self) {
2107 val* var /* : String */;
2108 static val* varonce;
2109 val* var1 /* : String */;
2110 char* var2 /* : NativeString */;
2111 val* var3 /* : FlatString */;
2112 val* var4 /* : Array[String] */;
2113 val* var_a /* var a: Array[String] */;
2114 val* var5 /* : Array[String] */;
2115 val* var_a2 /* var a2: Array[String] */;
2116 val* var_ /* var : Array[String] */;
2117 val* var6 /* : ArrayIterator[nullable Object] */;
2118 val* var_7 /* var : ArrayIterator[String] */;
2119 short int var8 /* : Bool */;
2120 val* var9 /* : nullable Object */;
2121 val* var_x /* var x: String */;
2122 short int var10 /* : Bool */;
2123 static val* varonce11;
2124 val* var12 /* : String */;
2125 char* var13 /* : NativeString */;
2126 val* var14 /* : FlatString */;
2127 short int var15 /* : Bool */;
2128 short int var_16 /* var : Bool */;
2129 short int var17 /* : Bool */;
2130 short int var18 /* : Bool */;
2131 short int var19 /* : Bool */;
2132 static val* varonce20;
2133 val* var21 /* : String */;
2134 char* var22 /* : NativeString */;
2135 val* var23 /* : FlatString */;
2136 short int var24 /* : Bool */;
2137 short int var_25 /* var : Bool */;
2138 short int var26 /* : Bool */;
2139 short int var27 /* : Bool */;
2140 short int var28 /* : Bool */;
2141 short int var29 /* : Bool */;
2142 static val* varonce30;
2143 val* var31 /* : String */;
2144 char* var32 /* : NativeString */;
2145 val* var33 /* : FlatString */;
2146 short int var34 /* : Bool */;
2147 short int var_35 /* var : Bool */;
2148 short int var36 /* : Bool */;
2149 short int var37 /* : Bool */;
2150 short int var_38 /* var : Bool */;
2151 val* var39 /* : nullable Object */;
2152 static val* varonce40;
2153 val* var41 /* : String */;
2154 char* var42 /* : NativeString */;
2155 val* var43 /* : FlatString */;
2156 short int var44 /* : Bool */;
2157 val* var_other /* var other: nullable Object */;
2158 short int var46 /* : Bool */;
2159 short int var47 /* : Bool */;
2160 val* var48 /* : nullable Object */;
2161 static val* varonce49;
2162 val* var50 /* : String */;
2163 char* var51 /* : NativeString */;
2164 val* var52 /* : FlatString */;
2165 short int var53 /* : Bool */;
2166 val* var54 /* : nullable Object */;
2167 val* var55 /* : nullable Object */;
2168 short int var56 /* : Bool */;
2169 short int var57 /* : Bool */;
2170 short int var58 /* : Bool */;
2171 short int var_59 /* var : Bool */;
2172 val* var60 /* : nullable Object */;
2173 static val* varonce61;
2174 val* var62 /* : String */;
2175 char* var63 /* : NativeString */;
2176 val* var64 /* : FlatString */;
2177 short int var65 /* : Bool */;
2178 val* var66 /* : nullable Object */;
2179 short int var68 /* : Bool */;
2180 static val* varonce69;
2181 val* var70 /* : String */;
2182 char* var71 /* : NativeString */;
2183 val* var72 /* : FlatString */;
2184 short int var73 /* : Bool */;
2185 long var74 /* : Int */;
2186 long var76 /* : Int */;
2187 short int var77 /* : Bool */;
2188 short int var79 /* : Bool */;
2189 short int var_80 /* var : Bool */;
2190 val* var81 /* : nullable Object */;
2191 static val* varonce82;
2192 val* var83 /* : String */;
2193 char* var84 /* : NativeString */;
2194 val* var85 /* : FlatString */;
2195 short int var86 /* : Bool */;
2196 static val* varonce87;
2197 val* var88 /* : String */;
2198 char* var89 /* : NativeString */;
2199 val* var90 /* : FlatString */;
2200 static val* varonce91;
2201 val* var92 /* : String */;
2202 char* var93 /* : NativeString */;
2203 val* var94 /* : FlatString */;
2204 val* var95 /* : String */;
2205 if (likely(varonce!=NULL)) {
2206 var1 = varonce;
2207 } else {
2208 var2 = "/";
2209 var3 = standard___standard__NativeString___to_s_with_length(var2, 1l);
2210 var1 = var3;
2211 varonce = var1;
2212 }
2213 {
2214 var4 = standard__string_search___Text___split_with(self, var1);
2215 }
2216 var_a = var4;
2217 var5 = NEW_standard__Array(&type_standard__Array__standard__String);
2218 {
2219 standard___standard__Array___standard__kernel__Object__init(var5); /* Direct call array#Array#init on <var5:Array[String]>*/
2220 }
2221 var_a2 = var5;
2222 var_ = var_a;
2223 {
2224 var6 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
2225 }
2226 var_7 = var6;
2227 for(;;) {
2228 {
2229 var8 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_7);
2230 }
2231 if (var8){
2232 {
2233 var9 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_7);
2234 }
2235 var_x = var9;
2236 if (likely(varonce11!=NULL)) {
2237 var12 = varonce11;
2238 } else {
2239 var13 = ".";
2240 var14 = standard___standard__NativeString___to_s_with_length(var13, 1l);
2241 var12 = var14;
2242 varonce11 = var12;
2243 }
2244 {
2245 var15 = ((short int(*)(val* self, val* p0))(var_x->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_x, var12); /* == on <var_x:String>*/
2246 }
2247 var_16 = var15;
2248 if (var15){
2249 {
2250 var17 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var_a2);
2251 }
2252 var18 = !var17;
2253 var10 = var18;
2254 } else {
2255 var10 = var_16;
2256 }
2257 if (var10){
2258 goto BREAK_label;
2259 } else {
2260 }
2261 if (likely(varonce20!=NULL)) {
2262 var21 = varonce20;
2263 } else {
2264 var22 = "";
2265 var23 = standard___standard__NativeString___to_s_with_length(var22, 0l);
2266 var21 = var23;
2267 varonce20 = var21;
2268 }
2269 {
2270 var24 = ((short int(*)(val* self, val* p0))(var_x->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_x, var21); /* == on <var_x:String>*/
2271 }
2272 var_25 = var24;
2273 if (var24){
2274 {
2275 var26 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var_a2);
2276 }
2277 var27 = !var26;
2278 var19 = var27;
2279 } else {
2280 var19 = var_25;
2281 }
2282 if (var19){
2283 goto BREAK_label;
2284 } else {
2285 }
2286 if (likely(varonce30!=NULL)) {
2287 var31 = varonce30;
2288 } else {
2289 var32 = "..";
2290 var33 = standard___standard__NativeString___to_s_with_length(var32, 2l);
2291 var31 = var33;
2292 varonce30 = var31;
2293 }
2294 {
2295 var34 = ((short int(*)(val* self, val* p0))(var_x->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_x, var31); /* == on <var_x:String>*/
2296 }
2297 var_35 = var34;
2298 if (var34){
2299 {
2300 var36 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var_a2);
2301 }
2302 var37 = !var36;
2303 var29 = var37;
2304 } else {
2305 var29 = var_35;
2306 }
2307 var_38 = var29;
2308 if (var29){
2309 {
2310 var39 = standard___standard__SequenceRead___last(var_a2);
2311 }
2312 if (likely(varonce40!=NULL)) {
2313 var41 = varonce40;
2314 } else {
2315 var42 = "..";
2316 var43 = standard___standard__NativeString___to_s_with_length(var42, 2l);
2317 var41 = var43;
2318 varonce40 = var41;
2319 }
2320 {
2321 { /* Inline kernel#Object#!= (var39,var41) on <var39:nullable Object(String)> */
2322 var_other = var41;
2323 {
2324 var46 = ((short int(*)(val* self, val* p0))(var39->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var39, var_other); /* == on <var39:nullable Object(String)>*/
2325 }
2326 var47 = !var46;
2327 var44 = var47;
2328 goto RET_LABEL45;
2329 RET_LABEL45:(void)0;
2330 }
2331 }
2332 var28 = var44;
2333 } else {
2334 var28 = var_38;
2335 }
2336 if (var28){
2337 {
2338 var48 = standard___standard__SequenceRead___last(var_a2);
2339 }
2340 if (likely(varonce49!=NULL)) {
2341 var50 = varonce49;
2342 } else {
2343 var51 = ".";
2344 var52 = standard___standard__NativeString___to_s_with_length(var51, 1l);
2345 var50 = var52;
2346 varonce49 = var50;
2347 }
2348 {
2349 var53 = ((short int(*)(val* self, val* p0))(var48->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var48, var50); /* == on <var48:nullable Object(String)>*/
2350 }
2351 if (var53){
2352 {
2353 var54 = standard___standard__AbstractArray___standard__abstract_collection__Sequence__pop(var_a2);
2354 }
2355 } else {
2356 {
2357 var55 = standard___standard__AbstractArray___standard__abstract_collection__Sequence__pop(var_a2);
2358 }
2359 goto BREAK_label;
2360 }
2361 } else {
2362 {
2363 var57 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var_a2);
2364 }
2365 var58 = !var57;
2366 var_59 = var58;
2367 if (var58){
2368 {
2369 var60 = standard___standard__SequenceRead___last(var_a2);
2370 }
2371 if (likely(varonce61!=NULL)) {
2372 var62 = varonce61;
2373 } else {
2374 var63 = ".";
2375 var64 = standard___standard__NativeString___to_s_with_length(var63, 1l);
2376 var62 = var64;
2377 varonce61 = var62;
2378 }
2379 {
2380 var65 = ((short int(*)(val* self, val* p0))(var60->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var60, var62); /* == on <var60:nullable Object(String)>*/
2381 }
2382 var56 = var65;
2383 } else {
2384 var56 = var_59;
2385 }
2386 if (var56){
2387 {
2388 var66 = standard___standard__AbstractArray___standard__abstract_collection__Sequence__pop(var_a2);
2389 }
2390 } else {
2391 }
2392 }
2393 {
2394 standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_a2, var_x); /* Direct call array#AbstractArray#push on <var_a2:Array[String]>*/
2395 }
2396 BREAK_label: (void)0;
2397 {
2398 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_7); /* Direct call array#ArrayIterator#next on <var_7:ArrayIterator[String]>*/
2399 }
2400 } else {
2401 goto BREAK_label67;
2402 }
2403 }
2404 BREAK_label67: (void)0;
2405 {
2406 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_7); /* Direct call array#ArrayIterator#finish on <var_7:ArrayIterator[String]>*/
2407 }
2408 {
2409 var68 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var_a2);
2410 }
2411 if (var68){
2412 if (likely(varonce69!=NULL)) {
2413 var70 = varonce69;
2414 } else {
2415 var71 = ".";
2416 var72 = standard___standard__NativeString___to_s_with_length(var71, 1l);
2417 var70 = var72;
2418 varonce69 = var70;
2419 }
2420 var = var70;
2421 goto RET_LABEL;
2422 } else {
2423 }
2424 {
2425 { /* Inline array#AbstractArrayRead#length (var_a2) on <var_a2:Array[String]> */
2426 var76 = var_a2->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_a2:Array[String]> */
2427 var74 = var76;
2428 RET_LABEL75:(void)0;
2429 }
2430 }
2431 {
2432 { /* Inline kernel#Int#== (var74,1l) on <var74:Int> */
2433 var79 = var74 == 1l;
2434 var77 = var79;
2435 goto RET_LABEL78;
2436 RET_LABEL78:(void)0;
2437 }
2438 }
2439 var_80 = var77;
2440 if (var77){
2441 {
2442 var81 = standard___standard__SequenceRead___Collection__first(var_a2);
2443 }
2444 if (likely(varonce82!=NULL)) {
2445 var83 = varonce82;
2446 } else {
2447 var84 = "";
2448 var85 = standard___standard__NativeString___to_s_with_length(var84, 0l);
2449 var83 = var85;
2450 varonce82 = var83;
2451 }
2452 {
2453 var86 = ((short int(*)(val* self, val* p0))(var81->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var81, var83); /* == on <var81:nullable Object(String)>*/
2454 }
2455 var73 = var86;
2456 } else {
2457 var73 = var_80;
2458 }
2459 if (var73){
2460 if (likely(varonce87!=NULL)) {
2461 var88 = varonce87;
2462 } else {
2463 var89 = "/";
2464 var90 = standard___standard__NativeString___to_s_with_length(var89, 1l);
2465 var88 = var90;
2466 varonce87 = var88;
2467 }
2468 var = var88;
2469 goto RET_LABEL;
2470 } else {
2471 }
2472 if (likely(varonce91!=NULL)) {
2473 var92 = varonce91;
2474 } else {
2475 var93 = "/";
2476 var94 = standard___standard__NativeString___to_s_with_length(var93, 1l);
2477 var92 = var94;
2478 varonce91 = var92;
2479 }
2480 {
2481 var95 = standard__string___Collection___join(var_a2, var92);
2482 }
2483 var = var95;
2484 goto RET_LABEL;
2485 RET_LABEL:;
2486 return var;
2487 }
2488 /* method file#String#join_path for (self: String, String): String */
2489 val* standard__file___String___join_path(val* self, val* p0) {
2490 val* var /* : String */;
2491 val* var_path /* var path: String */;
2492 short int var1 /* : Bool */;
2493 short int var2 /* : Bool */;
2494 val* var3 /* : SequenceRead[Char] */;
2495 val* var4 /* : nullable Object */;
2496 short int var5 /* : Bool */;
2497 short int var7 /* : Bool */;
2498 uint32_t var8 /* : Char */;
2499 uint32_t var9 /* : Char */;
2500 short int var10 /* : Bool */;
2501 short int var12 /* : Bool */;
2502 val* var13 /* : NativeArray[String] */;
2503 static val* varonce;
2504 val* var14 /* : String */;
2505 val* var16 /* : NativeArray[String] */;
2506 static val* varonce15;
2507 static val* varonce17;
2508 val* var18 /* : String */;
2509 char* var19 /* : NativeString */;
2510 val* var20 /* : FlatString */;
2511 val* var21 /* : String */;
2512 var_path = p0;
2513 {
2514 var1 = standard___standard__Text___is_empty(var_path);
2515 }
2516 if (var1){
2517 var = self;
2518 goto RET_LABEL;
2519 } else {
2520 }
2521 {
2522 var2 = standard___standard__Text___is_empty(self);
2523 }
2524 if (var2){
2525 var = var_path;
2526 goto RET_LABEL;
2527 } else {
2528 }
2529 {
2530 var3 = ((val*(*)(val* self))(var_path->class->vft[COLOR_standard__string__Text__chars]))(var_path); /* chars on <var_path:String>*/
2531 }
2532 {
2533 var4 = ((val*(*)(val* self, long p0))((((long)var3&3)?class_info[((long)var3&3)]:var3->class)->vft[COLOR_standard__abstract_collection__SequenceRead___91d_93d]))(var3, 0l); /* [] on <var3:SequenceRead[Char]>*/
2534 }
2535 {
2536 { /* Inline kernel#Char#== (var4,'/') on <var4:nullable Object(Char)> */
2537 var8 = (uint32_t)((long)(var4)>>2);
2538 var7 = (var4 != NULL) && (var8 == '/');
2539 var5 = var7;
2540 goto RET_LABEL6;
2541 RET_LABEL6:(void)0;
2542 }
2543 }
2544 if (var5){
2545 var = var_path;
2546 goto RET_LABEL;
2547 } else {
2548 }
2549 {
2550 var9 = standard___standard__Text___last(self);
2551 }
2552 {
2553 { /* Inline kernel#Char#== (var9,'/') on <var9:Char> */
2554 var12 = var9 == '/';
2555 var10 = var12;
2556 goto RET_LABEL11;
2557 RET_LABEL11:(void)0;
2558 }
2559 }
2560 if (var10){
2561 if (unlikely(varonce==NULL)) {
2562 var13 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
2563 } else {
2564 var13 = varonce;
2565 varonce = NULL;
2566 }
2567 ((struct instance_standard__NativeArray*)var13)->values[0]=self;
2568 ((struct instance_standard__NativeArray*)var13)->values[1]=var_path;
2569 {
2570 var14 = ((val*(*)(val* self))(var13->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var13); /* native_to_s on <var13:NativeArray[String]>*/
2571 }
2572 varonce = var13;
2573 var = var14;
2574 goto RET_LABEL;
2575 } else {
2576 }
2577 if (unlikely(varonce15==NULL)) {
2578 var16 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
2579 if (likely(varonce17!=NULL)) {
2580 var18 = varonce17;
2581 } else {
2582 var19 = "/";
2583 var20 = standard___standard__NativeString___to_s_with_length(var19, 1l);
2584 var18 = var20;
2585 varonce17 = var18;
2586 }
2587 ((struct instance_standard__NativeArray*)var16)->values[1]=var18;
2588 } else {
2589 var16 = varonce15;
2590 varonce15 = NULL;
2591 }
2592 ((struct instance_standard__NativeArray*)var16)->values[0]=self;
2593 ((struct instance_standard__NativeArray*)var16)->values[2]=var_path;
2594 {
2595 var21 = ((val*(*)(val* self))(var16->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var16); /* native_to_s on <var16:NativeArray[String]>*/
2596 }
2597 varonce15 = var16;
2598 var = var21;
2599 goto RET_LABEL;
2600 RET_LABEL:;
2601 return var;
2602 }
2603 /* method file#String#/ for (self: String, String): String */
2604 val* standard__file___String____47d(val* self, val* p0) {
2605 val* var /* : String */;
2606 val* var_path /* var path: String */;
2607 val* var1 /* : String */;
2608 var_path = p0;
2609 {
2610 var1 = standard__file___String___join_path(self, var_path);
2611 }
2612 var = var1;
2613 goto RET_LABEL;
2614 RET_LABEL:;
2615 return var;
2616 }
2617 /* method file#String#relpath for (self: String, String): String */
2618 val* standard__file___String___relpath(val* self, val* p0) {
2619 val* var /* : String */;
2620 val* var_dest /* var dest: String */;
2621 val* var1 /* : Sys */;
2622 val* var2 /* : String */;
2623 val* var_cwd /* var cwd: String */;
2624 val* var3 /* : String */;
2625 val* var4 /* : String */;
2626 static val* varonce;
2627 val* var5 /* : String */;
2628 char* var6 /* : NativeString */;
2629 val* var7 /* : FlatString */;
2630 val* var8 /* : Array[String] */;
2631 val* var_from /* var from: Array[String] */;
2632 val* var9 /* : nullable Object */;
2633 short int var10 /* : Bool */;
2634 val* var11 /* : nullable Object */;
2635 val* var12 /* : String */;
2636 val* var13 /* : String */;
2637 static val* varonce14;
2638 val* var15 /* : String */;
2639 char* var16 /* : NativeString */;
2640 val* var17 /* : FlatString */;
2641 val* var18 /* : Array[String] */;
2642 val* var_to /* var to: Array[String] */;
2643 val* var19 /* : nullable Object */;
2644 short int var20 /* : Bool */;
2645 val* var21 /* : nullable Object */;
2646 short int var22 /* : Bool */;
2647 short int var23 /* : Bool */;
2648 short int var24 /* : Bool */;
2649 short int var25 /* : Bool */;
2650 short int var_ /* var : Bool */;
2651 short int var26 /* : Bool */;
2652 short int var27 /* : Bool */;
2653 short int var_28 /* var : Bool */;
2654 val* var29 /* : nullable Object */;
2655 val* var30 /* : nullable Object */;
2656 short int var31 /* : Bool */;
2657 val* var32 /* : nullable Object */;
2658 val* var33 /* : nullable Object */;
2659 long var34 /* : Int */;
2660 long var36 /* : Int */;
2661 long var_from_len /* var from_len: Int */;
2662 short int var37 /* : Bool */;
2663 short int var39 /* : Bool */;
2664 static val* varonce40;
2665 val* var41 /* : String */;
2666 char* var42 /* : NativeString */;
2667 val* var43 /* : FlatString */;
2668 val* var44 /* : String */;
2669 static val* varonce45;
2670 val* var46 /* : String */;
2671 char* var47 /* : NativeString */;
2672 val* var48 /* : FlatString */;
2673 long var49 /* : Int */;
2674 short int var51 /* : Bool */;
2675 int cltype;
2676 int idtype;
2677 const char* var_class_name;
2678 long var52 /* : Int */;
2679 val* var53 /* : String */;
2680 static val* varonce54;
2681 val* var55 /* : String */;
2682 char* var56 /* : NativeString */;
2683 val* var57 /* : FlatString */;
2684 val* var58 /* : String */;
2685 val* var_up /* var up: String */;
2686 short int var59 /* : Bool */;
2687 static val* varonce60;
2688 val* var61 /* : String */;
2689 char* var62 /* : NativeString */;
2690 val* var63 /* : FlatString */;
2691 val* var64 /* : String */;
2692 static val* varonce65;
2693 val* var66 /* : String */;
2694 char* var67 /* : NativeString */;
2695 val* var68 /* : FlatString */;
2696 val* var69 /* : String */;
2697 val* var70 /* : String */;
2698 val* var_res /* var res: String */;
2699 var_dest = p0;
2700 var1 = glob_sys;
2701 {
2702 var2 = standard__file___Sys___getcwd(var1);
2703 }
2704 var_cwd = var2;
2705 {
2706 var3 = standard__file___String____47d(var_cwd, self);
2707 }
2708 {
2709 var4 = standard__file___String___simplify_path(var3);
2710 }
2711 if (likely(varonce!=NULL)) {
2712 var5 = varonce;
2713 } else {
2714 var6 = "/";
2715 var7 = standard___standard__NativeString___to_s_with_length(var6, 1l);
2716 var5 = var7;
2717 varonce = var5;
2718 }
2719 {
2720 var8 = standard__string_search___Text___split(var4, var5);
2721 }
2722 var_from = var8;
2723 {
2724 var9 = standard___standard__SequenceRead___last(var_from);
2725 }
2726 {
2727 var10 = standard___standard__Text___is_empty(var9);
2728 }
2729 if (var10){
2730 {
2731 var11 = standard___standard__AbstractArray___standard__abstract_collection__Sequence__pop(var_from);
2732 }
2733 } else {
2734 }
2735 {
2736 var12 = standard__file___String____47d(var_cwd, var_dest);
2737 }
2738 {
2739 var13 = standard__file___String___simplify_path(var12);
2740 }
2741 if (likely(varonce14!=NULL)) {
2742 var15 = varonce14;
2743 } else {
2744 var16 = "/";
2745 var17 = standard___standard__NativeString___to_s_with_length(var16, 1l);
2746 var15 = var17;
2747 varonce14 = var15;
2748 }
2749 {
2750 var18 = standard__string_search___Text___split(var13, var15);
2751 }
2752 var_to = var18;
2753 {
2754 var19 = standard___standard__SequenceRead___last(var_to);
2755 }
2756 {
2757 var20 = standard___standard__Text___is_empty(var19);
2758 }
2759 if (var20){
2760 {
2761 var21 = standard___standard__AbstractArray___standard__abstract_collection__Sequence__pop(var_to);
2762 }
2763 } else {
2764 }
2765 for(;;) {
2766 {
2767 var24 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var_from);
2768 }
2769 var25 = !var24;
2770 var_ = var25;
2771 if (var25){
2772 {
2773 var26 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var_to);
2774 }
2775 var27 = !var26;
2776 var23 = var27;
2777 } else {
2778 var23 = var_;
2779 }
2780 var_28 = var23;
2781 if (var23){
2782 {
2783 var29 = standard___standard__SequenceRead___Collection__first(var_from);
2784 }
2785 {
2786 var30 = standard___standard__SequenceRead___Collection__first(var_to);
2787 }
2788 {
2789 var31 = ((short int(*)(val* self, val* p0))(var29->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var29, var30); /* == on <var29:nullable Object(String)>*/
2790 }
2791 var22 = var31;
2792 } else {
2793 var22 = var_28;
2794 }
2795 if (var22){
2796 {
2797 var32 = standard___standard__AbstractArray___standard__abstract_collection__Sequence__shift(var_from);
2798 }
2799 {
2800 var33 = standard___standard__AbstractArray___standard__abstract_collection__Sequence__shift(var_to);
2801 }
2802 } else {
2803 goto BREAK_label;
2804 }
2805 }
2806 BREAK_label: (void)0;
2807 {
2808 { /* Inline array#AbstractArrayRead#length (var_from) on <var_from:Array[String]> */
2809 var36 = var_from->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_from:Array[String]> */
2810 var34 = var36;
2811 RET_LABEL35:(void)0;
2812 }
2813 }
2814 var_from_len = var34;
2815 {
2816 { /* Inline kernel#Int#== (var_from_len,0l) on <var_from_len:Int> */
2817 var39 = var_from_len == 0l;
2818 var37 = var39;
2819 goto RET_LABEL38;
2820 RET_LABEL38:(void)0;
2821 }
2822 }
2823 if (var37){
2824 if (likely(varonce40!=NULL)) {
2825 var41 = varonce40;
2826 } else {
2827 var42 = "/";
2828 var43 = standard___standard__NativeString___to_s_with_length(var42, 1l);
2829 var41 = var43;
2830 varonce40 = var41;
2831 }
2832 {
2833 var44 = standard__string___Collection___join(var_to, var41);
2834 }
2835 var = var44;
2836 goto RET_LABEL;
2837 } else {
2838 }
2839 if (likely(varonce45!=NULL)) {
2840 var46 = varonce45;
2841 } else {
2842 var47 = "../";
2843 var48 = standard___standard__NativeString___to_s_with_length(var47, 3l);
2844 var46 = var48;
2845 varonce45 = var46;
2846 }
2847 {
2848 { /* Inline kernel#Int#- (var_from_len,1l) on <var_from_len:Int> */
2849 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
2850 /* <1l:Int> isa OTHER */
2851 var51 = 1; /* easy <1l:Int> isa OTHER*/
2852 if (unlikely(!var51)) {
2853 var_class_name = type_standard__Int.name;
2854 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2855 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
2856 fatal_exit(1);
2857 }
2858 var52 = var_from_len - 1l;
2859 var49 = var52;
2860 goto RET_LABEL50;
2861 RET_LABEL50:(void)0;
2862 }
2863 }
2864 {
2865 var53 = ((val*(*)(val* self, long p0))(var46->class->vft[COLOR_standard__string__String___42d]))(var46, var49); /* * on <var46:String>*/
2866 }
2867 if (likely(varonce54!=NULL)) {
2868 var55 = varonce54;
2869 } else {
2870 var56 = "..";
2871 var57 = standard___standard__NativeString___to_s_with_length(var56, 2l);
2872 var55 = var57;
2873 varonce54 = var55;
2874 }
2875 {
2876 var58 = ((val*(*)(val* self, val* p0))(var53->class->vft[COLOR_standard__string__String___43d]))(var53, var55); /* + on <var53:String>*/
2877 }
2878 var_up = var58;
2879 {
2880 var59 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var_to);
2881 }
2882 if (var59){
2883 var = var_up;
2884 goto RET_LABEL;
2885 } else {
2886 }
2887 if (likely(varonce60!=NULL)) {
2888 var61 = varonce60;
2889 } else {
2890 var62 = "/";
2891 var63 = standard___standard__NativeString___to_s_with_length(var62, 1l);
2892 var61 = var63;
2893 varonce60 = var61;
2894 }
2895 {
2896 var64 = ((val*(*)(val* self, val* p0))(var_up->class->vft[COLOR_standard__string__String___43d]))(var_up, var61); /* + on <var_up:String>*/
2897 }
2898 if (likely(varonce65!=NULL)) {
2899 var66 = varonce65;
2900 } else {
2901 var67 = "/";
2902 var68 = standard___standard__NativeString___to_s_with_length(var67, 1l);
2903 var66 = var68;
2904 varonce65 = var66;
2905 }
2906 {
2907 var69 = standard__string___Collection___join(var_to, var66);
2908 }
2909 {
2910 var70 = ((val*(*)(val* self, val* p0))(var64->class->vft[COLOR_standard__string__String___43d]))(var64, var69); /* + on <var64:String>*/
2911 }
2912 var_res = var70;
2913 var = var_res;
2914 goto RET_LABEL;
2915 RET_LABEL:;
2916 return var;
2917 }
2918 /* method file#String#mkdir for (self: String): nullable Error */
2919 val* standard__file___String___mkdir(val* self) {
2920 val* var /* : nullable Error */;
2921 static val* varonce;
2922 val* var1 /* : String */;
2923 char* var2 /* : NativeString */;
2924 val* var3 /* : FlatString */;
2925 val* var4 /* : Array[String] */;
2926 val* var_dirs /* var dirs: Array[String] */;
2927 val* var5 /* : FlatBuffer */;
2928 val* var_path /* var path: FlatBuffer */;
2929 short int var7 /* : Bool */;
2930 val* var8 /* : nullable Object */;
2931 short int var9 /* : Bool */;
2932 val* var_error /* var error: nullable Error */;
2933 val* var_ /* var : Array[String] */;
2934 val* var10 /* : ArrayIterator[nullable Object] */;
2935 val* var_11 /* var : ArrayIterator[String] */;
2936 short int var12 /* : Bool */;
2937 val* var13 /* : nullable Object */;
2938 val* var_d /* var d: String */;
2939 short int var14 /* : Bool */;
2940 val* var15 /* : String */;
2941 char* var16 /* : NativeString */;
2942 short int var17 /* : Bool */;
2943 short int var19 /* : Bool for extern */;
2944 short int var_res /* var res: Bool */;
2945 short int var20 /* : Bool */;
2946 short int var21 /* : Bool */;
2947 short int var_22 /* var : Bool */;
2948 short int var23 /* : Bool */;
2949 short int var24 /* : Bool */;
2950 val* var_other /* var other: nullable Object */;
2951 short int var26 /* : Bool */;
2952 short int var28 /* : Bool */;
2953 val* var29 /* : IOError */;
2954 val* var31 /* : NativeArray[String] */;
2955 static val* varonce30;
2956 static val* varonce32;
2957 val* var33 /* : String */;
2958 char* var34 /* : NativeString */;
2959 val* var35 /* : FlatString */;
2960 static val* varonce36;
2961 val* var37 /* : String */;
2962 char* var38 /* : NativeString */;
2963 val* var39 /* : FlatString */;
2964 val* var40 /* : String */;
2965 val* var41 /* : Sys */;
2966 val* var43 /* : Sys */;
2967 long var44 /* : Int */;
2968 long var46 /* : Int for extern */;
2969 val* var47 /* : String */;
2970 val* var48 /* : String */;
2971 if (likely(varonce!=NULL)) {
2972 var1 = varonce;
2973 } else {
2974 var2 = "/";
2975 var3 = standard___standard__NativeString___to_s_with_length(var2, 1l);
2976 var1 = var3;
2977 varonce = var1;
2978 }
2979 {
2980 var4 = standard__string_search___Text___split_with(self, var1);
2981 }
2982 var_dirs = var4;
2983 var5 = NEW_standard__FlatBuffer(&type_standard__FlatBuffer);
2984 {
2985 { /* Inline string#FlatBuffer#init (var5) on <var5:FlatBuffer> */
2986 {
2987 ((void(*)(val* self))(var5->class->vft[COLOR_standard___standard__FlatBuffer___standard__kernel__Object__init]))(var5); /* init on <var5:FlatBuffer>*/
2988 }
2989 RET_LABEL6:(void)0;
2990 }
2991 }
2992 var_path = var5;
2993 {
2994 var7 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var_dirs);
2995 }
2996 if (var7){
2997 var = ((val*)NULL);
2998 goto RET_LABEL;
2999 } else {
3000 }
3001 {
3002 var8 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var_dirs, 0l);
3003 }
3004 {
3005 var9 = standard___standard__Text___is_empty(var8);
3006 }
3007 if (var9){
3008 {
3009 standard___standard__FlatBuffer___Buffer__add(var_path, '/'); /* Direct call string#FlatBuffer#add on <var_path:FlatBuffer>*/
3010 }
3011 } else {
3012 }
3013 var_error = ((val*)NULL);
3014 var_ = var_dirs;
3015 {
3016 var10 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
3017 }
3018 var_11 = var10;
3019 for(;;) {
3020 {
3021 var12 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_11);
3022 }
3023 if (var12){
3024 {
3025 var13 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_11);
3026 }
3027 var_d = var13;
3028 {
3029 var14 = standard___standard__Text___is_empty(var_d);
3030 }
3031 if (var14){
3032 goto BREAK_label;
3033 } else {
3034 }
3035 {
3036 standard___standard__FlatBuffer___Buffer__append(var_path, var_d); /* Direct call string#FlatBuffer#append on <var_path:FlatBuffer>*/
3037 }
3038 {
3039 standard___standard__FlatBuffer___Buffer__add(var_path, '/'); /* Direct call string#FlatBuffer#add on <var_path:FlatBuffer>*/
3040 }
3041 {
3042 var15 = standard___standard__FlatBuffer___Object__to_s(var_path);
3043 }
3044 {
3045 var16 = ((char*(*)(val* self))(var15->class->vft[COLOR_standard__string__Text__to_cstring]))(var15); /* to_cstring on <var15:String>*/
3046 }
3047 {
3048 { /* Inline file#NativeString#file_mkdir (var16) on <var16:NativeString> */
3049 var19 = string_NativeString_NativeString_file_mkdir_0(var16);
3050 var17 = var19;
3051 goto RET_LABEL18;
3052 RET_LABEL18:(void)0;
3053 }
3054 }
3055 var_res = var17;
3056 var21 = !var_res;
3057 var_22 = var21;
3058 if (var21){
3059 if (var_error == NULL) {
3060 var23 = 1; /* is null */
3061 } else {
3062 var23 = 0; /* arg is null but recv is not */
3063 }
3064 if (0) {
3065 { /* Inline kernel#Object#== (var_error,((val*)NULL)) on <var_error:nullable Error> */
3066 var_other = ((val*)NULL);
3067 {
3068 { /* Inline kernel#Object#is_same_instance (var_error,var_other) on <var_error:nullable Error(Error)> */
3069 var28 = var_error == var_other;
3070 var26 = var28;
3071 goto RET_LABEL27;
3072 RET_LABEL27:(void)0;
3073 }
3074 }
3075 var24 = var26;
3076 goto RET_LABEL25;
3077 RET_LABEL25:(void)0;
3078 }
3079 var23 = var24;
3080 }
3081 var20 = var23;
3082 } else {
3083 var20 = var_22;
3084 }
3085 if (var20){
3086 var29 = NEW_standard__IOError(&type_standard__IOError);
3087 if (unlikely(varonce30==NULL)) {
3088 var31 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
3089 if (likely(varonce32!=NULL)) {
3090 var33 = varonce32;
3091 } else {
3092 var34 = "Cannot create directory `";
3093 var35 = standard___standard__NativeString___to_s_with_length(var34, 25l);
3094 var33 = var35;
3095 varonce32 = var33;
3096 }
3097 ((struct instance_standard__NativeArray*)var31)->values[0]=var33;
3098 if (likely(varonce36!=NULL)) {
3099 var37 = varonce36;
3100 } else {
3101 var38 = "`: ";
3102 var39 = standard___standard__NativeString___to_s_with_length(var38, 3l);
3103 var37 = var39;
3104 varonce36 = var37;
3105 }
3106 ((struct instance_standard__NativeArray*)var31)->values[2]=var37;
3107 } else {
3108 var31 = varonce30;
3109 varonce30 = NULL;
3110 }
3111 {
3112 var40 = ((val*(*)(val* self))(var_path->class->vft[COLOR_standard__string__Object__to_s]))(var_path); /* to_s on <var_path:FlatBuffer>*/
3113 }
3114 ((struct instance_standard__NativeArray*)var31)->values[1]=var40;
3115 {
3116 { /* Inline kernel#Object#sys (self) on <self:String> */
3117 var43 = glob_sys;
3118 var41 = var43;
3119 goto RET_LABEL42;
3120 RET_LABEL42:(void)0;
3121 }
3122 }
3123 {
3124 { /* Inline kernel#Sys#errno (var41) on <var41:Sys> */
3125 var46 = sys_errno(var41);
3126 var44 = var46;
3127 goto RET_LABEL45;
3128 RET_LABEL45:(void)0;
3129 }
3130 }
3131 {
3132 var47 = standard__string___Int___strerror(var44);
3133 }
3134 ((struct instance_standard__NativeArray*)var31)->values[3]=var47;
3135 {
3136 var48 = ((val*(*)(val* self))(var31->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var31); /* native_to_s on <var31:NativeArray[String]>*/
3137 }
3138 varonce30 = var31;
3139 {
3140 ((void(*)(val* self, val* p0))(var29->class->vft[COLOR_standard__error__Error__message_61d]))(var29, var48); /* message= on <var29:IOError>*/
3141 }
3142 {
3143 ((void(*)(val* self))(var29->class->vft[COLOR_standard__kernel__Object__init]))(var29); /* init on <var29:IOError>*/
3144 }
3145 var_error = var29;
3146 } else {
3147 }
3148 BREAK_label: (void)0;
3149 {
3150 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_11); /* Direct call array#ArrayIterator#next on <var_11:ArrayIterator[String]>*/
3151 }
3152 } else {
3153 goto BREAK_label49;
3154 }
3155 }
3156 BREAK_label49: (void)0;
3157 {
3158 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_11); /* Direct call array#ArrayIterator#finish on <var_11:ArrayIterator[String]>*/
3159 }
3160 var = var_error;
3161 goto RET_LABEL;
3162 RET_LABEL:;
3163 return var;
3164 }
3165 /* method file#String#file_extension for (self: String): nullable String */
3166 val* standard__file___String___file_extension(val* self) {
3167 val* var /* : nullable String */;
3168 val* var1 /* : SequenceRead[Char] */;
3169 val* var2 /* : nullable Object */;
3170 long var3 /* : Int */;
3171 long var_last_slash /* var last_slash: Int */;
3172 short int var4 /* : Bool */;
3173 short int var6 /* : Bool */;
3174 int cltype;
3175 int idtype;
3176 const char* var_class_name;
3177 short int var7 /* : Bool */;
3178 long var8 /* : Int */;
3179 short int var10 /* : Bool */;
3180 int cltype11;
3181 int idtype12;
3182 const char* var_class_name13;
3183 long var14 /* : Int */;
3184 long var15 /* : Int */;
3185 val* var16 /* : Text */;
3186 {
3187 var1 = ((val*(*)(val* self))(self->class->vft[COLOR_standard__string__Text__chars]))(self); /* chars on <self:String>*/
3188 }
3189 {
3190 var2 = (val*)((long)('.')<<2|2);
3191 var3 = ((long(*)(val* self, val* p0))((((long)var1&3)?class_info[((long)var1&3)]:var1->class)->vft[COLOR_standard__abstract_collection__SequenceRead__last_index_of]))(var1, var2); /* last_index_of on <var1:SequenceRead[Char]>*/
3192 }
3193 var_last_slash = var3;
3194 {
3195 { /* Inline kernel#Int#> (var_last_slash,0l) on <var_last_slash:Int> */
3196 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
3197 /* <0l:Int> isa OTHER */
3198 var6 = 1; /* easy <0l:Int> isa OTHER*/
3199 if (unlikely(!var6)) {
3200 var_class_name = type_standard__Int.name;
3201 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3202 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 536);
3203 fatal_exit(1);
3204 }
3205 var7 = var_last_slash > 0l;
3206 var4 = var7;
3207 goto RET_LABEL5;
3208 RET_LABEL5:(void)0;
3209 }
3210 }
3211 if (var4){
3212 {
3213 { /* Inline kernel#Int#+ (var_last_slash,1l) on <var_last_slash:Int> */
3214 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
3215 /* <1l:Int> isa OTHER */
3216 var10 = 1; /* easy <1l:Int> isa OTHER*/
3217 if (unlikely(!var10)) {
3218 var_class_name13 = type_standard__Int.name;
3219 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
3220 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
3221 fatal_exit(1);
3222 }
3223 var14 = var_last_slash + 1l;
3224 var8 = var14;
3225 goto RET_LABEL9;
3226 RET_LABEL9:(void)0;
3227 }
3228 }
3229 {
3230 var15 = ((long(*)(val* self))(self->class->vft[COLOR_standard__string__Text__length]))(self); /* length on <self:String>*/
3231 }
3232 {
3233 var16 = ((val*(*)(val* self, long p0, long p1))(self->class->vft[COLOR_standard__string__Text__substring]))(self, var8, var15); /* substring on <self:String>*/
3234 }
3235 var = var16;
3236 goto RET_LABEL;
3237 } else {
3238 var = ((val*)NULL);
3239 goto RET_LABEL;
3240 }
3241 RET_LABEL:;
3242 return var;
3243 }
3244 /* method file#NativeString#file_exists for (self: NativeString): Bool */
3245 short int standard__file___NativeString___file_exists(char* self) {
3246 short int var /* : Bool */;
3247 short int var1 /* : Bool for extern */;
3248 var1 = string_NativeString_NativeString_file_exists_0(self);
3249 var = var1;
3250 goto RET_LABEL;
3251 RET_LABEL:;
3252 return var;
3253 }
3254 /* method file#NativeString#file_mkdir for (self: NativeString): Bool */
3255 short int standard__file___NativeString___file_mkdir(char* self) {
3256 short int var /* : Bool */;
3257 short int var1 /* : Bool for extern */;
3258 var1 = string_NativeString_NativeString_file_mkdir_0(self);
3259 var = var1;
3260 goto RET_LABEL;
3261 RET_LABEL:;
3262 return var;
3263 }
3264 /* method file#NativeString#file_realpath for (self: NativeString): NativeString */
3265 char* standard__file___NativeString___file_realpath(char* self) {
3266 char* var /* : NativeString */;
3267 void* var1 /* : NativeString for extern */;
3268 var1 = file_NativeString_realpath(self);
3269 var = var1;
3270 goto RET_LABEL;
3271 RET_LABEL:;
3272 return var;
3273 }
3274 /* method file#NativeFile#io_read for (self: NativeFile, NativeString, Int): Int */
3275 long standard__file___standard__file__NativeFile___io_read(val* self, char* p0, long p1) {
3276 long var /* : Int */;
3277 long var1 /* : Int for extern */;
3278 void* var2 /* : NativeFile for extern */;
3279 var2 = ((struct instance_standard__Pointer*)self)->value; /* unboxing NativeFile */
3280 var1 = file_NativeFile_NativeFile_io_read_2(var2, p0, p1);
3281 var = var1;
3282 goto RET_LABEL;
3283 RET_LABEL:;
3284 return var;
3285 }
3286 /* method file#NativeFile#io_write for (self: NativeFile, NativeString, Int): Int */
3287 long standard__file___standard__file__NativeFile___io_write(val* self, char* p0, long p1) {
3288 long var /* : Int */;
3289 long var1 /* : Int for extern */;
3290 void* var2 /* : NativeFile for extern */;
3291 var2 = ((struct instance_standard__Pointer*)self)->value; /* unboxing NativeFile */
3292 var1 = file_NativeFile_NativeFile_io_write_2(var2, p0, p1);
3293 var = var1;
3294 goto RET_LABEL;
3295 RET_LABEL:;
3296 return var;
3297 }
3298 /* method file#NativeFile#io_close for (self: NativeFile): Int */
3299 long standard__file___standard__file__NativeFile___io_close(val* self) {
3300 long var /* : Int */;
3301 long var1 /* : Int for extern */;
3302 void* var2 /* : NativeFile for extern */;
3303 var2 = ((struct instance_standard__Pointer*)self)->value; /* unboxing NativeFile */
3304 var1 = file_NativeFile_NativeFile_io_close_0(var2);
3305 var = var1;
3306 goto RET_LABEL;
3307 RET_LABEL:;
3308 return var;
3309 }
3310 /* method file#NativeFile#set_buffering_type for (self: NativeFile, Int, Int): Int */
3311 long standard__file___standard__file__NativeFile___set_buffering_type(val* self, long p0, long p1) {
3312 long var /* : Int */;
3313 long var1 /* : Int for extern */;
3314 void* var2 /* : NativeFile for extern */;
3315 var2 = ((struct instance_standard__Pointer*)self)->value; /* unboxing NativeFile */
3316 var1 = file_NativeFile_NativeFile_set_buffering_type_0(var2, p0, p1);
3317 var = var1;
3318 goto RET_LABEL;
3319 RET_LABEL:;
3320 return var;
3321 }
3322 /* method file#NativeFile#io_open_read for (self: NativeFile, NativeString): NativeFile */
3323 val* standard__file___standard__file__NativeFile___io_open_read(val* self, char* p0) {
3324 val* var /* : NativeFile */;
3325 void* var1 /* : NativeFile for extern */;
3326 val* var2 /* : NativeFile */;
3327 var1 = file_NativeFileCapable_NativeFileCapable_io_open_read_1(p0);
3328 var2 = BOX_standard__Pointer(var1); /* boxing NativeFile */
3329 var2->type = &type_standard__file__NativeFile;
3330 var2->class = &class_standard__file__NativeFile;
3331 var = var2;
3332 goto RET_LABEL;
3333 RET_LABEL:;
3334 return var;
3335 }
3336 /* method file#NativeFile#io_open_write for (self: NativeFile, NativeString): NativeFile */
3337 val* standard__file___standard__file__NativeFile___io_open_write(val* self, char* p0) {
3338 val* var /* : NativeFile */;
3339 void* var1 /* : NativeFile for extern */;
3340 val* var2 /* : NativeFile */;
3341 var1 = file_NativeFileCapable_NativeFileCapable_io_open_write_1(p0);
3342 var2 = BOX_standard__Pointer(var1); /* boxing NativeFile */
3343 var2->type = &type_standard__file__NativeFile;
3344 var2->class = &class_standard__file__NativeFile;
3345 var = var2;
3346 goto RET_LABEL;
3347 RET_LABEL:;
3348 return var;
3349 }
3350 /* method file#NativeFile#native_stdin for (self: NativeFile): NativeFile */
3351 val* standard__file___standard__file__NativeFile___native_stdin(val* self) {
3352 val* var /* : NativeFile */;
3353 void* var1 /* : NativeFile for extern */;
3354 val* var2 /* : NativeFile */;
3355 var1 = file_NativeFileCapable_NativeFileCapable_native_stdin_0();
3356 var2 = BOX_standard__Pointer(var1); /* boxing NativeFile */
3357 var2->type = &type_standard__file__NativeFile;
3358 var2->class = &class_standard__file__NativeFile;
3359 var = var2;
3360 goto RET_LABEL;
3361 RET_LABEL:;
3362 return var;
3363 }
3364 /* method file#NativeFile#native_stdout for (self: NativeFile): NativeFile */
3365 val* standard__file___standard__file__NativeFile___native_stdout(val* self) {
3366 val* var /* : NativeFile */;
3367 void* var1 /* : NativeFile for extern */;
3368 val* var2 /* : NativeFile */;
3369 var1 = file_NativeFileCapable_NativeFileCapable_native_stdout_0();
3370 var2 = BOX_standard__Pointer(var1); /* boxing NativeFile */
3371 var2->type = &type_standard__file__NativeFile;
3372 var2->class = &class_standard__file__NativeFile;
3373 var = var2;
3374 goto RET_LABEL;
3375 RET_LABEL:;
3376 return var;
3377 }
3378 /* method file#NativeFile#native_stderr for (self: NativeFile): NativeFile */
3379 val* standard__file___standard__file__NativeFile___native_stderr(val* self) {
3380 val* var /* : NativeFile */;
3381 void* var1 /* : NativeFile for extern */;
3382 val* var2 /* : NativeFile */;
3383 var1 = file_NativeFileCapable_NativeFileCapable_native_stderr_0();
3384 var2 = BOX_standard__Pointer(var1); /* boxing NativeFile */
3385 var2->type = &type_standard__file__NativeFile;
3386 var2->class = &class_standard__file__NativeFile;
3387 var = var2;
3388 goto RET_LABEL;
3389 RET_LABEL:;
3390 return var;
3391 }
3392 /* method file#Sys#stdout for (self: Sys): Writer */
3393 val* standard__file___Sys___stdout(val* self) {
3394 val* var /* : Writer */;
3395 short int var1 /* : Bool */;
3396 val* var2 /* : Writer */;
3397 val* var3 /* : Stdout */;
3398 var1 = self->attrs[COLOR_standard__file__Sys___stdout].val != NULL; /* _stdout on <self:Sys> */
3399 if(likely(var1)) {
3400 var2 = self->attrs[COLOR_standard__file__Sys___stdout].val; /* _stdout on <self:Sys> */
3401 if (unlikely(var2 == NULL)) {
3402 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stdout");
3403 PRINT_ERROR(" (%s:%d)\n", FILE_standard__file, 1158);
3404 fatal_exit(1);
3405 }
3406 } else {
3407 var3 = NEW_standard__Stdout(&type_standard__Stdout);
3408 {
3409 standard___standard__Stdout___standard__kernel__Object__init(var3); /* Direct call file#Stdout#init on <var3:Stdout>*/
3410 }
3411 self->attrs[COLOR_standard__file__Sys___stdout].val = var3; /* _stdout on <self:Sys> */
3412 var2 = var3;
3413 }
3414 var = var2;
3415 RET_LABEL:;
3416 return var;
3417 }
3418 /* method file#Sys#stderr for (self: Sys): Writer */
3419 val* standard__file___Sys___stderr(val* self) {
3420 val* var /* : Writer */;
3421 short int var1 /* : Bool */;
3422 val* var2 /* : Writer */;
3423 val* var3 /* : Stderr */;
3424 var1 = self->attrs[COLOR_standard__file__Sys___stderr].val != NULL; /* _stderr on <self:Sys> */
3425 if(likely(var1)) {
3426 var2 = self->attrs[COLOR_standard__file__Sys___stderr].val; /* _stderr on <self:Sys> */
3427 if (unlikely(var2 == NULL)) {
3428 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stderr");
3429 PRINT_ERROR(" (%s:%d)\n", FILE_standard__file, 1161);
3430 fatal_exit(1);
3431 }
3432 } else {
3433 var3 = NEW_standard__Stderr(&type_standard__Stderr);
3434 {
3435 standard___standard__Stderr___standard__kernel__Object__init(var3); /* Direct call file#Stderr#init on <var3:Stderr>*/
3436 }
3437 self->attrs[COLOR_standard__file__Sys___stderr].val = var3; /* _stderr on <self:Sys> */
3438 var2 = var3;
3439 }
3440 var = var2;
3441 RET_LABEL:;
3442 return var;
3443 }
3444 /* method file#Sys#buffer_mode_line for (self: Sys): Int */
3445 long standard__file___Sys___buffer_mode_line(val* self) {
3446 long var /* : Int */;
3447 long var1 /* : Int for extern */;
3448 var1 = file_Sys_Sys_buffer_mode_line_0(self);
3449 var = var1;
3450 goto RET_LABEL;
3451 RET_LABEL:;
3452 return var;
3453 }
3454 /* method file#Sys#printn for (self: Sys, Array[Object]) */
3455 void standard__file___Sys___printn(val* self, val* p0) {
3456 val* var_objects /* var objects: Array[Object] */;
3457 val* var /* : Sys */;
3458 val* var2 /* : Sys */;
3459 val* var3 /* : Writer */;
3460 val* var4 /* : String */;
3461 var_objects = p0;
3462 {
3463 { /* Inline kernel#Object#sys (self) on <self:Sys> */
3464 var2 = glob_sys;
3465 var = var2;
3466 goto RET_LABEL1;
3467 RET_LABEL1:(void)0;
3468 }
3469 }
3470 {
3471 var3 = standard__file___Sys___stdout(var);
3472 }
3473 {
3474 var4 = standard__string___Array___Collection__plain_to_s(var_objects);
3475 }
3476 {
3477 standard___standard__FileWriter___standard__stream__Writer__write(var3, var4); /* Direct call file#FileWriter#write on <var3:Writer>*/
3478 }
3479 RET_LABEL:;
3480 }
3481 /* method file#Sys#print for (self: Sys, Object) */
3482 void standard__file___Sys___print(val* self, val* p0) {
3483 val* var_object /* var object: Object */;
3484 val* var /* : Sys */;
3485 val* var2 /* : Sys */;
3486 val* var3 /* : Writer */;
3487 val* var4 /* : String */;
3488 val* var5 /* : Sys */;
3489 val* var7 /* : Sys */;
3490 val* var8 /* : Writer */;
3491 static val* varonce;
3492 val* var9 /* : String */;
3493 char* var10 /* : NativeString */;
3494 val* var11 /* : FlatString */;
3495 var_object = p0;
3496 {
3497 { /* Inline kernel#Object#sys (self) on <self:Sys> */
3498 var2 = glob_sys;
3499 var = var2;
3500 goto RET_LABEL1;
3501 RET_LABEL1:(void)0;
3502 }
3503 }
3504 {
3505 var3 = standard__file___Sys___stdout(var);
3506 }
3507 {
3508 var4 = ((val*(*)(val* self))((((long)var_object&3)?class_info[((long)var_object&3)]:var_object->class)->vft[COLOR_standard__string__Object__to_s]))(var_object); /* to_s on <var_object:Object>*/
3509 }
3510 {
3511 standard___standard__FileWriter___standard__stream__Writer__write(var3, var4); /* Direct call file#FileWriter#write on <var3:Writer>*/
3512 }
3513 {
3514 { /* Inline kernel#Object#sys (self) on <self:Sys> */
3515 var7 = glob_sys;
3516 var5 = var7;
3517 goto RET_LABEL6;
3518 RET_LABEL6:(void)0;
3519 }
3520 }
3521 {
3522 var8 = standard__file___Sys___stdout(var5);
3523 }
3524 if (likely(varonce!=NULL)) {
3525 var9 = varonce;
3526 } else {
3527 var10 = "\n";
3528 var11 = standard___standard__NativeString___to_s_with_length(var10, 1l);
3529 var9 = var11;
3530 varonce = var9;
3531 }
3532 {
3533 standard___standard__FileWriter___standard__stream__Writer__write(var8, var9); /* Direct call file#FileWriter#write on <var8:Writer>*/
3534 }
3535 RET_LABEL:;
3536 }
3537 /* method file#Sys#getcwd for (self: Sys): String */
3538 val* standard__file___Sys___getcwd(val* self) {
3539 val* var /* : String */;
3540 char* var1 /* : NativeString */;
3541 void* var3 /* : NativeString for extern */;
3542 val* var4 /* : String */;
3543 {
3544 { /* Inline file#Sys#file_getcwd (self) on <self:Sys> */
3545 var3 = string_NativeString_NativeString_file_getcwd_0(self);
3546 var1 = var3;
3547 goto RET_LABEL2;
3548 RET_LABEL2:(void)0;
3549 }
3550 }
3551 {
3552 var4 = standard___standard__NativeString___Object__to_s(var1);
3553 }
3554 var = var4;
3555 goto RET_LABEL;
3556 RET_LABEL:;
3557 return var;
3558 }
3559 /* method file#Sys#file_getcwd for (self: Sys): NativeString */
3560 char* standard__file___Sys___file_getcwd(val* self) {
3561 char* var /* : NativeString */;
3562 void* var1 /* : NativeString for extern */;
3563 var1 = string_NativeString_NativeString_file_getcwd_0(self);
3564 var = var1;
3565 goto RET_LABEL;
3566 RET_LABEL:;
3567 return var;
3568 }