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