Makefile: Document deeply-nested libraries.
[nit.git] / c_src / file.sep.1.c
1 #include "file.sep.0.h"
2 /* method file#FStream#path= for (self: FStream, nullable String) */
3 void file__FStream__path_61d(val* self, val* p0) {
4 self->attrs[COLOR_file__FStream___path].val = p0; /* _path on <self:FStream> */
5 RET_LABEL:;
6 }
7 /* method file#FStream#path= for (self: Object, nullable String) */
8 void VIRTUAL_file__FStream__path_61d(val* self, val* p0) {
9 { /* Inline file#FStream#path= (self,p0) on <self:Object(FStream)> */
10 self->attrs[COLOR_file__FStream___path].val = p0; /* _path on <self:Object(FStream)> */
11 RET_LABEL1:(void)0;
12 }
13 RET_LABEL:;
14 }
15 /* method file#FStream#init for (self: FStream) */
16 void file__FStream__init(val* self) {
17 RET_LABEL:;
18 }
19 /* method file#FStream#init for (self: Object) */
20 void VIRTUAL_file__FStream__init(val* self) {
21 { /* Inline file#FStream#init (self) on <self:Object(FStream)> */
22 RET_LABEL1:(void)0;
23 }
24 RET_LABEL:;
25 }
26 /* method file#IFStream#close for (self: IFStream) */
27 void file__IFStream__close(val* self) {
28 val* var /* : nullable NativeFile */;
29 long var1 /* : Int */;
30 long var3 /* : Int */;
31 void* var4 /* : NativeFile */;
32 long var_i /* var i: Int */;
33 short int var5 /* : Bool */;
34 var = self->attrs[COLOR_file__FStream___file].val; /* _file on <self:IFStream> */
35 if (var == NULL) {
36 PRINT_ERROR("Runtime error: %s", "Receiver is null");
37 PRINT_ERROR(" (%s:%d)\n", "lib/standard/file.nit", 63);
38 show_backtrace(1);
39 } else {
40 { /* Inline file#NativeFile#io_close (var) on <var:nullable NativeFile> */
41 var4 = ((struct instance_kernel__Pointer*)var)->value; /* autounbox from nullable NativeFile to NativeFile */;
42 var3 = file_NativeFile_NativeFile_io_close_0(var4);
43 var1 = var3;
44 goto RET_LABEL2;
45 RET_LABEL2:(void)0;
46 }
47 }
48 var_i = var1;
49 var5 = 1;
50 {
51 { /* Inline file#IFStream#end_reached= (self,var5) on <self:IFStream> */
52 self->attrs[COLOR_file__IFStream___end_reached].s = var5; /* _end_reached on <self:IFStream> */
53 RET_LABEL6:(void)0;
54 }
55 }
56 RET_LABEL:;
57 }
58 /* method file#IFStream#close for (self: Object) */
59 void VIRTUAL_file__IFStream__close(val* self) {
60 file__IFStream__close(self); /* Direct call file#IFStream#close on <self:Object(IFStream)>*/
61 RET_LABEL:;
62 }
63 /* method file#IFStream#fill_buffer for (self: IFStream) */
64 void file__IFStream__fill_buffer(val* self) {
65 val* var /* : nullable NativeFile */;
66 val* var1 /* : nullable FlatBuffer */;
67 char* var2 /* : NativeString */;
68 char* var4 /* : NativeString */;
69 val* var5 /* : nullable FlatBuffer */;
70 long var6 /* : Int */;
71 long var8 /* : Int */;
72 long var9 /* : Int */;
73 long var11 /* : Int */;
74 void* var12 /* : NativeFile */;
75 long var_nb /* var nb: Int */;
76 long var13 /* : Int */;
77 short int var14 /* : Bool */;
78 short int var16 /* : Bool */;
79 int cltype;
80 int idtype;
81 const char* var_class_name;
82 short int var17 /* : Bool */;
83 short int var18 /* : Bool */;
84 long var20 /* : Int */;
85 val* var21 /* : nullable FlatBuffer */;
86 long var23 /* : Int */;
87 var = self->attrs[COLOR_file__FStream___file].val; /* _file on <self:IFStream> */
88 var1 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:IFStream> */
89 if (var1 == NULL) {
90 PRINT_ERROR("Runtime error: %s", "Receiver is null");
91 PRINT_ERROR(" (%s:%d)\n", "lib/standard/file.nit", 69);
92 show_backtrace(1);
93 } else {
94 { /* Inline string#FlatText#items (var1) on <var1:nullable FlatBuffer> */
95 if (unlikely(var1 == NULL)) {
96 PRINT_ERROR("Runtime error: %s", "Receiver is null");
97 PRINT_ERROR(" (%s:%d)\n", "lib/standard/string.nit", 551);
98 show_backtrace(1);
99 }
100 var4 = var1->attrs[COLOR_string__FlatText___items].str; /* _items on <var1:nullable FlatBuffer> */
101 var2 = var4;
102 RET_LABEL3:(void)0;
103 }
104 }
105 var5 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:IFStream> */
106 if (var5 == NULL) {
107 PRINT_ERROR("Runtime error: %s", "Receiver is null");
108 PRINT_ERROR(" (%s:%d)\n", "lib/standard/file.nit", 69);
109 show_backtrace(1);
110 } else {
111 { /* Inline string#FlatBuffer#capacity (var5) on <var5:nullable FlatBuffer> */
112 if (unlikely(var5 == NULL)) {
113 PRINT_ERROR("Runtime error: %s", "Receiver is null");
114 PRINT_ERROR(" (%s:%d)\n", "lib/standard/string.nit", 1165);
115 show_backtrace(1);
116 }
117 var8 = var5->attrs[COLOR_string__FlatBuffer___capacity].l; /* _capacity on <var5:nullable FlatBuffer> */
118 var6 = var8;
119 RET_LABEL7:(void)0;
120 }
121 }
122 if (var == NULL) {
123 PRINT_ERROR("Runtime error: %s", "Receiver is null");
124 PRINT_ERROR(" (%s:%d)\n", "lib/standard/file.nit", 69);
125 show_backtrace(1);
126 } else {
127 { /* Inline file#NativeFile#io_read (var,var2,var6) on <var:nullable NativeFile> */
128 var12 = ((struct instance_kernel__Pointer*)var)->value; /* autounbox from nullable NativeFile to NativeFile */;
129 var11 = file_NativeFile_NativeFile_io_read_2(var12, var2, var6);
130 var9 = var11;
131 goto RET_LABEL10;
132 RET_LABEL10:(void)0;
133 }
134 }
135 var_nb = var9;
136 var13 = 0;
137 {
138 { /* Inline kernel#Int#<= (var_nb,var13) on <var_nb:Int> */
139 /* Covariant cast for argument 0 (i) <var13:Int> isa OTHER */
140 /* <var13:Int> isa OTHER */
141 var16 = 1; /* easy <var13:Int> isa OTHER*/
142 if (unlikely(!var16)) {
143 var_class_name = type_kernel__Int.name;
144 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
145 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 324);
146 show_backtrace(1);
147 }
148 var17 = var_nb <= var13;
149 var14 = var17;
150 goto RET_LABEL15;
151 RET_LABEL15:(void)0;
152 }
153 }
154 if (var14){
155 var18 = 1;
156 {
157 { /* Inline file#IFStream#end_reached= (self,var18) on <self:IFStream> */
158 self->attrs[COLOR_file__IFStream___end_reached].s = var18; /* _end_reached on <self:IFStream> */
159 RET_LABEL19:(void)0;
160 }
161 }
162 var20 = 0;
163 var_nb = var20;
164 } else {
165 }
166 var21 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:IFStream> */
167 if (var21 == NULL) {
168 PRINT_ERROR("Runtime error: %s", "Receiver is null");
169 PRINT_ERROR(" (%s:%d)\n", "lib/standard/file.nit", 74);
170 show_backtrace(1);
171 } else {
172 { /* Inline string#FlatText#length= (var21,var_nb) on <var21:nullable FlatBuffer> */
173 if (unlikely(var21 == NULL)) {
174 PRINT_ERROR("Runtime error: %s", "Receiver is null");
175 PRINT_ERROR(" (%s:%d)\n", "lib/standard/string.nit", 556);
176 show_backtrace(1);
177 }
178 var21->attrs[COLOR_string__FlatText___length].l = var_nb; /* _length on <var21:nullable FlatBuffer> */
179 RET_LABEL22:(void)0;
180 }
181 }
182 var23 = 0;
183 self->attrs[COLOR_stream__BufferedIStream___buffer_pos].l = var23; /* _buffer_pos on <self:IFStream> */
184 RET_LABEL:;
185 }
186 /* method file#IFStream#fill_buffer for (self: Object) */
187 void VIRTUAL_file__IFStream__fill_buffer(val* self) {
188 file__IFStream__fill_buffer(self); /* Direct call file#IFStream#fill_buffer on <self:Object(IFStream)>*/
189 RET_LABEL:;
190 }
191 /* method file#IFStream#end_reached for (self: IFStream): Bool */
192 short int file__IFStream__end_reached(val* self) {
193 short int var /* : Bool */;
194 short int var1 /* : Bool */;
195 var1 = self->attrs[COLOR_file__IFStream___end_reached].s; /* _end_reached on <self:IFStream> */
196 var = var1;
197 RET_LABEL:;
198 return var;
199 }
200 /* method file#IFStream#end_reached for (self: Object): Bool */
201 short int VIRTUAL_file__IFStream__end_reached(val* self) {
202 short int var /* : Bool */;
203 short int var1 /* : Bool */;
204 short int var3 /* : Bool */;
205 { /* Inline file#IFStream#end_reached (self) on <self:Object(IFStream)> */
206 var3 = self->attrs[COLOR_file__IFStream___end_reached].s; /* _end_reached on <self:Object(IFStream)> */
207 var1 = var3;
208 RET_LABEL2:(void)0;
209 }
210 var = var1;
211 RET_LABEL:;
212 return var;
213 }
214 /* method file#IFStream#end_reached= for (self: IFStream, Bool) */
215 void file__IFStream__end_reached_61d(val* self, short int p0) {
216 self->attrs[COLOR_file__IFStream___end_reached].s = p0; /* _end_reached on <self:IFStream> */
217 RET_LABEL:;
218 }
219 /* method file#IFStream#end_reached= for (self: Object, Bool) */
220 void VIRTUAL_file__IFStream__end_reached_61d(val* self, short int p0) {
221 { /* Inline file#IFStream#end_reached= (self,p0) on <self:Object(IFStream)> */
222 self->attrs[COLOR_file__IFStream___end_reached].s = p0; /* _end_reached on <self:Object(IFStream)> */
223 RET_LABEL1:(void)0;
224 }
225 RET_LABEL:;
226 }
227 /* method file#IFStream#open for (self: IFStream, String) */
228 void file__IFStream__open(val* self, val* p0) {
229 val* var_path /* var path: String */;
230 long var /* : Int */;
231 void* var4 /* : NativeFile */;
232 char* var5 /* : NativeString */;
233 void* var6 /* : NativeFile */;
234 void* var8 /* : NativeFile */;
235 val* var9 /* : nullable NativeFile */;
236 val* var10 /* : nullable NativeFile */;
237 short int var11 /* : Bool */;
238 short int var13 /* : Bool */;
239 void* var14 /* : Pointer */;
240 short int var15 /* : Bool */;
241 static val* varonce;
242 val* var16 /* : String */;
243 char* var17 /* : NativeString */;
244 long var18 /* : Int */;
245 val* var19 /* : FlatString */;
246 static val* varonce20;
247 val* var21 /* : String */;
248 char* var22 /* : NativeString */;
249 long var23 /* : Int */;
250 val* var24 /* : FlatString */;
251 val* var25 /* : Sys */;
252 val* var27 /* : Sys */;
253 long var28 /* : Int */;
254 long var30 /* : Int */;
255 val* var31 /* : String */;
256 static val* varonce32;
257 val* var33 /* : String */;
258 char* var34 /* : NativeString */;
259 long var35 /* : Int */;
260 val* var36 /* : FlatString */;
261 val* var37 /* : Array[Object] */;
262 long var38 /* : Int */;
263 val* var39 /* : NativeArray[Object] */;
264 val* var40 /* : String */;
265 {
266 { /* Inline file#FStream#init (self) on <self:IFStream> */
267 RET_LABEL1:(void)0;
268 }
269 }
270 {
271 { /* Inline stream#BufferedIStream#init (self) on <self:IFStream> */
272 RET_LABEL2:(void)0;
273 }
274 }
275 var_path = p0;
276 {
277 { /* Inline file#FStream#path= (self,var_path) on <self:IFStream> */
278 self->attrs[COLOR_file__FStream___path].val = var_path; /* _path on <self:IFStream> */
279 RET_LABEL3:(void)0;
280 }
281 }
282 var = 10;
283 {
284 stream__BufferedIStream__prepare_buffer(self, var); /* Direct call stream#BufferedIStream#prepare_buffer on <self:IFStream>*/
285 }
286 var4 = NULL/*special!*/;
287 {
288 var5 = string__FlatString__to_cstring(var_path);
289 }
290 {
291 { /* Inline file#NativeFile#io_open_read (var4,var5) on <var4:NativeFile> */
292 var8 = file_NativeFileCapable_NativeFileCapable_io_open_read_1(var5);
293 var6 = var8;
294 goto RET_LABEL7;
295 RET_LABEL7:(void)0;
296 }
297 }
298 var9 = BOX_file__NativeFile(var6); /* autobox from NativeFile to nullable NativeFile */
299 self->attrs[COLOR_file__FStream___file].val = var9; /* _file on <self:IFStream> */
300 var10 = self->attrs[COLOR_file__FStream___file].val; /* _file on <self:IFStream> */
301 if (var10 == NULL) {
302 PRINT_ERROR("Runtime error: %s", "Receiver is null");
303 PRINT_ERROR(" (%s:%d)\n", "lib/standard/file.nit", 87);
304 show_backtrace(1);
305 } else {
306 { /* Inline kernel#Pointer#address_is_null (var10) on <var10:nullable NativeFile> */
307 var14 = ((struct instance_kernel__Pointer*)var10)->value; /* autounbox from nullable NativeFile to Pointer */;
308 var13 = address_is_null(var14);
309 var11 = var13;
310 goto RET_LABEL12;
311 RET_LABEL12:(void)0;
312 }
313 }
314 var15 = !var11;
315 if (unlikely(!var15)) {
316 if (varonce) {
317 var16 = varonce;
318 } else {
319 var17 = "Error: Opening file at \'";
320 var18 = 24;
321 var19 = string__NativeString__to_s_with_length(var17, var18);
322 var16 = var19;
323 varonce = var16;
324 }
325 if (varonce20) {
326 var21 = varonce20;
327 } else {
328 var22 = "\' failed with \'";
329 var23 = 15;
330 var24 = string__NativeString__to_s_with_length(var22, var23);
331 var21 = var24;
332 varonce20 = var21;
333 }
334 {
335 { /* Inline kernel#Object#sys (self) on <self:IFStream> */
336 var27 = glob_sys;
337 var25 = var27;
338 goto RET_LABEL26;
339 RET_LABEL26:(void)0;
340 }
341 }
342 {
343 { /* Inline kernel#Sys#errno (var25) on <var25:Sys> */
344 struct nitni_instance* var_for_c_0;
345 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
346 var_for_c_0->value = var25;
347 var30 = kernel___Sys_errno___impl(var_for_c_0);
348 var28 = var30;
349 goto RET_LABEL29;
350 RET_LABEL29:(void)0;
351 }
352 }
353 {
354 var31 = string__Int__strerror(var28);
355 }
356 if (varonce32) {
357 var33 = varonce32;
358 } else {
359 var34 = "\'";
360 var35 = 1;
361 var36 = string__NativeString__to_s_with_length(var34, var35);
362 var33 = var36;
363 varonce32 = var33;
364 }
365 var37 = NEW_array__Array(&type_array__Arraykernel__Object);
366 { /* var37 = array_instance Array[Object] */
367 var38 = 5;
368 var39 = NEW_array__NativeArray(var38, &type_array__NativeArraykernel__Object);
369 ((struct instance_array__NativeArray*)var39)->values[0] = (val*) var16;
370 ((struct instance_array__NativeArray*)var39)->values[1] = (val*) var_path;
371 ((struct instance_array__NativeArray*)var39)->values[2] = (val*) var21;
372 ((struct instance_array__NativeArray*)var39)->values[3] = (val*) var31;
373 ((struct instance_array__NativeArray*)var39)->values[4] = (val*) var33;
374 {
375 ((void (*)(val*, val*, long))(var37->class->vft[COLOR_array__Array__with_native]))(var37, var39, var38) /* with_native on <var37:Array[Object]>*/;
376 }
377 }
378 {
379 var40 = ((val* (*)(val*))(var37->class->vft[COLOR_string__Object__to_s]))(var37) /* to_s on <var37:Array[Object]>*/;
380 }
381 {
382 file__Object__print(self, var40); /* Direct call file#Object#print on <self:IFStream>*/
383 }
384 PRINT_ERROR("Runtime error: %s", "Assert failed");
385 PRINT_ERROR(" (%s:%d)\n", "lib/standard/file.nit", 87);
386 show_backtrace(1);
387 }
388 RET_LABEL:;
389 }
390 /* method file#IFStream#open for (self: Object, String) */
391 void VIRTUAL_file__IFStream__open(val* self, val* p0) {
392 file__IFStream__open(self, p0); /* Direct call file#IFStream#open on <self:Object(IFStream)>*/
393 RET_LABEL:;
394 }
395 /* method file#IFStream#init for (self: IFStream) */
396 void file__IFStream__init(val* self) {
397 {
398 { /* Inline file#FStream#init (self) on <self:IFStream> */
399 RET_LABEL1:(void)0;
400 }
401 }
402 {
403 { /* Inline stream#BufferedIStream#init (self) on <self:IFStream> */
404 RET_LABEL2:(void)0;
405 }
406 }
407 RET_LABEL:;
408 }
409 /* method file#IFStream#init for (self: Object) */
410 void VIRTUAL_file__IFStream__init(val* self) {
411 file__IFStream__init(self); /* Direct call file#IFStream#init on <self:Object(IFStream)>*/
412 RET_LABEL:;
413 }
414 /* method file#OFStream#write for (self: OFStream, Text) */
415 void file__OFStream__write(val* self, val* p0) {
416 val* var_s /* var s: Text */;
417 short int var /* : Bool */;
418 short int var1 /* : Bool */;
419 int cltype;
420 int idtype;
421 char* var2 /* : NativeString */;
422 long var3 /* : Int */;
423 long var5 /* : Int */;
424 val* var6 /* : Iterator[Text] */;
425 val* var7 /* : Iterator[nullable Object] */;
426 short int var8 /* : Bool */;
427 val* var9 /* : nullable Object */;
428 val* var_i /* var i: Text */;
429 char* var10 /* : NativeString */;
430 long var11 /* : Int */;
431 long var13 /* : Int */;
432 var_s = p0;
433 var = self->attrs[COLOR_file__OFStream___writable].s; /* _writable on <self:OFStream> */
434 if (unlikely(!var)) {
435 PRINT_ERROR("Runtime error: %s", "Assert failed");
436 PRINT_ERROR(" (%s:%d)\n", "lib/standard/file.nit", 103);
437 show_backtrace(1);
438 }
439 /* <var_s:Text> isa FlatText */
440 cltype = type_string__FlatText.color;
441 idtype = type_string__FlatText.id;
442 if(cltype >= var_s->type->table_size) {
443 var1 = 0;
444 } else {
445 var1 = var_s->type->type_table[cltype] == idtype;
446 }
447 if (var1){
448 {
449 var2 = ((char* (*)(val*))(var_s->class->vft[COLOR_string__Text__to_cstring]))(var_s) /* to_cstring on <var_s:Text(FlatText)>*/;
450 }
451 {
452 { /* Inline string#FlatText#length (var_s) on <var_s:Text(FlatText)> */
453 var5 = var_s->attrs[COLOR_string__FlatText___length].l; /* _length on <var_s:Text(FlatText)> */
454 var3 = var5;
455 RET_LABEL4:(void)0;
456 }
457 }
458 {
459 file__OFStream__write_native(self, var2, var3); /* Direct call file#OFStream#write_native on <self:OFStream>*/
460 }
461 } else {
462 {
463 var6 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Text__substrings]))(var_s) /* substrings on <var_s:Text>*/;
464 }
465 {
466 var7 = abstract_collection__Iterator__iterator(var6);
467 }
468 for(;;) {
469 {
470 var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on <var7:Iterator[nullable Object]>*/;
471 }
472 if(!var8) break;
473 {
474 var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
475 }
476 var_i = var9;
477 {
478 var10 = ((char* (*)(val*))(var_i->class->vft[COLOR_string__Text__to_cstring]))(var_i) /* to_cstring on <var_i:Text>*/;
479 }
480 {
481 { /* Inline string#FlatText#length (var_i) on <var_i:Text> */
482 var13 = var_i->attrs[COLOR_string__FlatText___length].l; /* _length on <var_i:Text> */
483 var11 = var13;
484 RET_LABEL12:(void)0;
485 }
486 }
487 {
488 file__OFStream__write_native(self, var10, var11); /* Direct call file#OFStream#write_native on <self:OFStream>*/
489 }
490 CONTINUE_label: (void)0;
491 {
492 ((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
493 }
494 }
495 BREAK_label: (void)0;
496 }
497 RET_LABEL:;
498 }
499 /* method file#OFStream#write for (self: Object, Text) */
500 void VIRTUAL_file__OFStream__write(val* self, val* p0) {
501 file__OFStream__write(self, p0); /* Direct call file#OFStream#write on <self:Object(OFStream)>*/
502 RET_LABEL:;
503 }
504 /* method file#OFStream#close for (self: OFStream) */
505 void file__OFStream__close(val* self) {
506 val* var /* : nullable NativeFile */;
507 long var1 /* : Int */;
508 long var3 /* : Int */;
509 void* var4 /* : NativeFile */;
510 long var_i /* var i: Int */;
511 short int var5 /* : Bool */;
512 var = self->attrs[COLOR_file__FStream___file].val; /* _file on <self:OFStream> */
513 if (var == NULL) {
514 PRINT_ERROR("Runtime error: %s", "Receiver is null");
515 PRINT_ERROR(" (%s:%d)\n", "lib/standard/file.nit", 115);
516 show_backtrace(1);
517 } else {
518 { /* Inline file#NativeFile#io_close (var) on <var:nullable NativeFile> */
519 var4 = ((struct instance_kernel__Pointer*)var)->value; /* autounbox from nullable NativeFile to NativeFile */;
520 var3 = file_NativeFile_NativeFile_io_close_0(var4);
521 var1 = var3;
522 goto RET_LABEL2;
523 RET_LABEL2:(void)0;
524 }
525 }
526 var_i = var1;
527 var5 = 0;
528 self->attrs[COLOR_file__OFStream___writable].s = var5; /* _writable on <self:OFStream> */
529 RET_LABEL:;
530 }
531 /* method file#OFStream#close for (self: Object) */
532 void VIRTUAL_file__OFStream__close(val* self) {
533 file__OFStream__close(self); /* Direct call file#OFStream#close on <self:Object(OFStream)>*/
534 RET_LABEL:;
535 }
536 /* method file#OFStream#write_native for (self: OFStream, NativeString, Int) */
537 void file__OFStream__write_native(val* self, char* p0, long p1) {
538 char* var_native /* var native: NativeString */;
539 long var_len /* var len: Int */;
540 short int var /* : Bool */;
541 val* var1 /* : nullable NativeFile */;
542 long var2 /* : Int */;
543 long var4 /* : Int */;
544 void* var5 /* : NativeFile */;
545 long var_err /* var err: Int */;
546 short int var6 /* : Bool */;
547 short int var7 /* : Bool */;
548 short int var9 /* : Bool */;
549 short int var10 /* : Bool */;
550 static val* varonce;
551 val* var11 /* : String */;
552 char* var12 /* : NativeString */;
553 long var13 /* : Int */;
554 val* var14 /* : FlatString */;
555 static val* varonce15;
556 val* var16 /* : String */;
557 char* var17 /* : NativeString */;
558 long var18 /* : Int */;
559 val* var19 /* : FlatString */;
560 static val* varonce20;
561 val* var21 /* : String */;
562 char* var22 /* : NativeString */;
563 long var23 /* : Int */;
564 val* var24 /* : FlatString */;
565 val* var25 /* : Array[Object] */;
566 long var26 /* : Int */;
567 val* var27 /* : NativeArray[Object] */;
568 val* var28 /* : Object */;
569 val* var29 /* : Object */;
570 var_native = p0;
571 var_len = p1;
572 var = self->attrs[COLOR_file__OFStream___writable].s; /* _writable on <self:OFStream> */
573 if (unlikely(!var)) {
574 PRINT_ERROR("Runtime error: %s", "Assert failed");
575 PRINT_ERROR(" (%s:%d)\n", "lib/standard/file.nit", 125);
576 show_backtrace(1);
577 }
578 var1 = self->attrs[COLOR_file__FStream___file].val; /* _file on <self:OFStream> */
579 if (var1 == NULL) {
580 PRINT_ERROR("Runtime error: %s", "Receiver is null");
581 PRINT_ERROR(" (%s:%d)\n", "lib/standard/file.nit", 126);
582 show_backtrace(1);
583 } else {
584 { /* Inline file#NativeFile#io_write (var1,var_native,var_len) on <var1:nullable NativeFile> */
585 var5 = ((struct instance_kernel__Pointer*)var1)->value; /* autounbox from nullable NativeFile to NativeFile */;
586 var4 = file_NativeFile_NativeFile_io_write_2(var5, var_native, var_len);
587 var2 = var4;
588 goto RET_LABEL3;
589 RET_LABEL3:(void)0;
590 }
591 }
592 var_err = var2;
593 {
594 { /* Inline kernel#Int#!= (var_err,var_len) on <var_err:Int> */
595 var9 = var_err == var_len;
596 var10 = !var9;
597 var7 = var10;
598 goto RET_LABEL8;
599 RET_LABEL8:(void)0;
600 }
601 var6 = var7;
602 }
603 if (var6){
604 if (varonce) {
605 var11 = varonce;
606 } else {
607 var12 = "Problem in writing : ";
608 var13 = 21;
609 var14 = string__NativeString__to_s_with_length(var12, var13);
610 var11 = var14;
611 varonce = var11;
612 }
613 if (varonce15) {
614 var16 = varonce15;
615 } else {
616 var17 = " ";
617 var18 = 1;
618 var19 = string__NativeString__to_s_with_length(var17, var18);
619 var16 = var19;
620 varonce15 = var16;
621 }
622 if (varonce20) {
623 var21 = varonce20;
624 } else {
625 var22 = "\n";
626 var23 = 1;
627 var24 = string__NativeString__to_s_with_length(var22, var23);
628 var21 = var24;
629 varonce20 = var21;
630 }
631 var25 = NEW_array__Array(&type_array__Arraykernel__Object);
632 { /* var25 = array_instance Array[Object] */
633 var26 = 5;
634 var27 = NEW_array__NativeArray(var26, &type_array__NativeArraykernel__Object);
635 ((struct instance_array__NativeArray*)var27)->values[0] = (val*) var11;
636 var28 = BOX_kernel__Int(var_err); /* autobox from Int to Object */
637 ((struct instance_array__NativeArray*)var27)->values[1] = (val*) var28;
638 ((struct instance_array__NativeArray*)var27)->values[2] = (val*) var16;
639 var29 = BOX_kernel__Int(var_len); /* autobox from Int to Object */
640 ((struct instance_array__NativeArray*)var27)->values[3] = (val*) var29;
641 ((struct instance_array__NativeArray*)var27)->values[4] = (val*) var21;
642 {
643 ((void (*)(val*, val*, long))(var25->class->vft[COLOR_array__Array__with_native]))(var25, var27, var26) /* with_native on <var25:Array[Object]>*/;
644 }
645 }
646 {
647 file__Object__printn(self, var25); /* Direct call file#Object#printn on <self:OFStream>*/
648 }
649 } else {
650 }
651 RET_LABEL:;
652 }
653 /* method file#OFStream#write_native for (self: Object, NativeString, Int) */
654 void VIRTUAL_file__OFStream__write_native(val* self, char* p0, long p1) {
655 file__OFStream__write_native(self, p0, p1); /* Direct call file#OFStream#write_native on <self:Object(OFStream)>*/
656 RET_LABEL:;
657 }
658 /* method file#OFStream#open for (self: OFStream, String) */
659 void file__OFStream__open(val* self, val* p0) {
660 val* var_path /* var path: String */;
661 void* var /* : NativeFile */;
662 char* var2 /* : NativeString */;
663 void* var3 /* : NativeFile */;
664 void* var5 /* : NativeFile */;
665 val* var6 /* : nullable NativeFile */;
666 val* var7 /* : nullable NativeFile */;
667 short int var8 /* : Bool */;
668 short int var10 /* : Bool */;
669 void* var11 /* : Pointer */;
670 short int var12 /* : Bool */;
671 static val* varonce;
672 val* var13 /* : String */;
673 char* var14 /* : NativeString */;
674 long var15 /* : Int */;
675 val* var16 /* : FlatString */;
676 static val* varonce17;
677 val* var18 /* : String */;
678 char* var19 /* : NativeString */;
679 long var20 /* : Int */;
680 val* var21 /* : FlatString */;
681 val* var22 /* : Sys */;
682 val* var24 /* : Sys */;
683 long var25 /* : Int */;
684 long var27 /* : Int */;
685 val* var28 /* : String */;
686 static val* varonce29;
687 val* var30 /* : String */;
688 char* var31 /* : NativeString */;
689 long var32 /* : Int */;
690 val* var33 /* : FlatString */;
691 val* var34 /* : Array[Object] */;
692 long var35 /* : Int */;
693 val* var36 /* : NativeArray[Object] */;
694 val* var37 /* : String */;
695 short int var39 /* : Bool */;
696 {
697 { /* Inline file#FStream#init (self) on <self:OFStream> */
698 RET_LABEL1:(void)0;
699 }
700 }
701 var_path = p0;
702 var = NULL/*special!*/;
703 {
704 var2 = string__FlatString__to_cstring(var_path);
705 }
706 {
707 { /* Inline file#NativeFile#io_open_write (var,var2) on <var:NativeFile> */
708 var5 = file_NativeFileCapable_NativeFileCapable_io_open_write_1(var2);
709 var3 = var5;
710 goto RET_LABEL4;
711 RET_LABEL4:(void)0;
712 }
713 }
714 var6 = BOX_file__NativeFile(var3); /* autobox from NativeFile to nullable NativeFile */
715 self->attrs[COLOR_file__FStream___file].val = var6; /* _file on <self:OFStream> */
716 var7 = self->attrs[COLOR_file__FStream___file].val; /* _file on <self:OFStream> */
717 if (var7 == NULL) {
718 PRINT_ERROR("Runtime error: %s", "Receiver is null");
719 PRINT_ERROR(" (%s:%d)\n", "lib/standard/file.nit", 137);
720 show_backtrace(1);
721 } else {
722 { /* Inline kernel#Pointer#address_is_null (var7) on <var7:nullable NativeFile> */
723 var11 = ((struct instance_kernel__Pointer*)var7)->value; /* autounbox from nullable NativeFile to Pointer */;
724 var10 = address_is_null(var11);
725 var8 = var10;
726 goto RET_LABEL9;
727 RET_LABEL9:(void)0;
728 }
729 }
730 var12 = !var8;
731 if (unlikely(!var12)) {
732 if (varonce) {
733 var13 = varonce;
734 } else {
735 var14 = "Error: Opening file at \'";
736 var15 = 24;
737 var16 = string__NativeString__to_s_with_length(var14, var15);
738 var13 = var16;
739 varonce = var13;
740 }
741 if (varonce17) {
742 var18 = varonce17;
743 } else {
744 var19 = "\' failed with \'";
745 var20 = 15;
746 var21 = string__NativeString__to_s_with_length(var19, var20);
747 var18 = var21;
748 varonce17 = var18;
749 }
750 {
751 { /* Inline kernel#Object#sys (self) on <self:OFStream> */
752 var24 = glob_sys;
753 var22 = var24;
754 goto RET_LABEL23;
755 RET_LABEL23:(void)0;
756 }
757 }
758 {
759 { /* Inline kernel#Sys#errno (var22) on <var22:Sys> */
760 struct nitni_instance* var_for_c_0;
761 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
762 var_for_c_0->value = var22;
763 var27 = kernel___Sys_errno___impl(var_for_c_0);
764 var25 = var27;
765 goto RET_LABEL26;
766 RET_LABEL26:(void)0;
767 }
768 }
769 {
770 var28 = string__Int__strerror(var25);
771 }
772 if (varonce29) {
773 var30 = varonce29;
774 } else {
775 var31 = "\'";
776 var32 = 1;
777 var33 = string__NativeString__to_s_with_length(var31, var32);
778 var30 = var33;
779 varonce29 = var30;
780 }
781 var34 = NEW_array__Array(&type_array__Arraykernel__Object);
782 { /* var34 = array_instance Array[Object] */
783 var35 = 5;
784 var36 = NEW_array__NativeArray(var35, &type_array__NativeArraykernel__Object);
785 ((struct instance_array__NativeArray*)var36)->values[0] = (val*) var13;
786 ((struct instance_array__NativeArray*)var36)->values[1] = (val*) var_path;
787 ((struct instance_array__NativeArray*)var36)->values[2] = (val*) var18;
788 ((struct instance_array__NativeArray*)var36)->values[3] = (val*) var28;
789 ((struct instance_array__NativeArray*)var36)->values[4] = (val*) var30;
790 {
791 ((void (*)(val*, val*, long))(var34->class->vft[COLOR_array__Array__with_native]))(var34, var36, var35) /* with_native on <var34:Array[Object]>*/;
792 }
793 }
794 {
795 var37 = ((val* (*)(val*))(var34->class->vft[COLOR_string__Object__to_s]))(var34) /* to_s on <var34:Array[Object]>*/;
796 }
797 {
798 file__Object__print(self, var37); /* Direct call file#Object#print on <self:OFStream>*/
799 }
800 PRINT_ERROR("Runtime error: %s", "Assert failed");
801 PRINT_ERROR(" (%s:%d)\n", "lib/standard/file.nit", 137);
802 show_backtrace(1);
803 }
804 {
805 { /* Inline file#FStream#path= (self,var_path) on <self:OFStream> */
806 self->attrs[COLOR_file__FStream___path].val = var_path; /* _path on <self:OFStream> */
807 RET_LABEL38:(void)0;
808 }
809 }
810 var39 = 1;
811 self->attrs[COLOR_file__OFStream___writable].s = var39; /* _writable on <self:OFStream> */
812 RET_LABEL:;
813 }
814 /* method file#OFStream#open for (self: Object, String) */
815 void VIRTUAL_file__OFStream__open(val* self, val* p0) {
816 file__OFStream__open(self, p0); /* Direct call file#OFStream#open on <self:Object(OFStream)>*/
817 RET_LABEL:;
818 }
819 /* method file#OFStream#init for (self: OFStream) */
820 void file__OFStream__init(val* self) {
821 {
822 { /* Inline file#FStream#init (self) on <self:OFStream> */
823 RET_LABEL1:(void)0;
824 }
825 }
826 RET_LABEL:;
827 }
828 /* method file#OFStream#init for (self: Object) */
829 void VIRTUAL_file__OFStream__init(val* self) {
830 file__OFStream__init(self); /* Direct call file#OFStream#init on <self:Object(OFStream)>*/
831 RET_LABEL:;
832 }
833 /* method file#Stdin#init for (self: Stdin) */
834 void file__Stdin__init(val* self) {
835 void* var /* : NativeFile */;
836 void* var1 /* : NativeFile */;
837 void* var3 /* : NativeFile */;
838 val* var4 /* : nullable NativeFile */;
839 static val* varonce;
840 val* var5 /* : String */;
841 char* var6 /* : NativeString */;
842 long var7 /* : Int */;
843 val* var8 /* : FlatString */;
844 long var10 /* : Int */;
845 {
846 file__IFStream__init(self); /* Direct call file#IFStream#init on <self:Stdin>*/
847 }
848 var = NULL/*special!*/;
849 {
850 { /* Inline file#NativeFile#native_stdin (var) on <var:NativeFile> */
851 var3 = file_NativeFileCapable_NativeFileCapable_native_stdin_0();
852 var1 = var3;
853 goto RET_LABEL2;
854 RET_LABEL2:(void)0;
855 }
856 }
857 var4 = BOX_file__NativeFile(var1); /* autobox from NativeFile to nullable NativeFile */
858 self->attrs[COLOR_file__FStream___file].val = var4; /* _file on <self:Stdin> */
859 if (varonce) {
860 var5 = varonce;
861 } else {
862 var6 = "/dev/stdin";
863 var7 = 10;
864 var8 = string__NativeString__to_s_with_length(var6, var7);
865 var5 = var8;
866 varonce = var5;
867 }
868 {
869 { /* Inline file#FStream#path= (self,var5) on <self:Stdin> */
870 self->attrs[COLOR_file__FStream___path].val = var5; /* _path on <self:Stdin> */
871 RET_LABEL9:(void)0;
872 }
873 }
874 var10 = 1;
875 {
876 stream__BufferedIStream__prepare_buffer(self, var10); /* Direct call stream#BufferedIStream#prepare_buffer on <self:Stdin>*/
877 }
878 RET_LABEL:;
879 }
880 /* method file#Stdin#init for (self: Object) */
881 void VIRTUAL_file__Stdin__init(val* self) {
882 file__Stdin__init(self); /* Direct call file#Stdin#init on <self:Object(Stdin)>*/
883 RET_LABEL:;
884 }
885 /* method file#Stdout#init for (self: Stdout) */
886 void file__Stdout__init(val* self) {
887 void* var /* : NativeFile */;
888 void* var1 /* : NativeFile */;
889 void* var3 /* : NativeFile */;
890 val* var4 /* : nullable NativeFile */;
891 static val* varonce;
892 val* var5 /* : String */;
893 char* var6 /* : NativeString */;
894 long var7 /* : Int */;
895 val* var8 /* : FlatString */;
896 short int var10 /* : Bool */;
897 {
898 file__OFStream__init(self); /* Direct call file#OFStream#init on <self:Stdout>*/
899 }
900 var = NULL/*special!*/;
901 {
902 { /* Inline file#NativeFile#native_stdout (var) on <var:NativeFile> */
903 var3 = file_NativeFileCapable_NativeFileCapable_native_stdout_0();
904 var1 = var3;
905 goto RET_LABEL2;
906 RET_LABEL2:(void)0;
907 }
908 }
909 var4 = BOX_file__NativeFile(var1); /* autobox from NativeFile to nullable NativeFile */
910 self->attrs[COLOR_file__FStream___file].val = var4; /* _file on <self:Stdout> */
911 if (varonce) {
912 var5 = varonce;
913 } else {
914 var6 = "/dev/stdout";
915 var7 = 11;
916 var8 = string__NativeString__to_s_with_length(var6, var7);
917 var5 = var8;
918 varonce = var5;
919 }
920 {
921 { /* Inline file#FStream#path= (self,var5) on <self:Stdout> */
922 self->attrs[COLOR_file__FStream___path].val = var5; /* _path on <self:Stdout> */
923 RET_LABEL9:(void)0;
924 }
925 }
926 var10 = 1;
927 self->attrs[COLOR_file__OFStream___writable].s = var10; /* _writable on <self:Stdout> */
928 RET_LABEL:;
929 }
930 /* method file#Stdout#init for (self: Object) */
931 void VIRTUAL_file__Stdout__init(val* self) {
932 file__Stdout__init(self); /* Direct call file#Stdout#init on <self:Object(Stdout)>*/
933 RET_LABEL:;
934 }
935 /* method file#Stderr#init for (self: Stderr) */
936 void file__Stderr__init(val* self) {
937 void* var /* : NativeFile */;
938 void* var1 /* : NativeFile */;
939 void* var3 /* : NativeFile */;
940 val* var4 /* : nullable NativeFile */;
941 static val* varonce;
942 val* var5 /* : String */;
943 char* var6 /* : NativeString */;
944 long var7 /* : Int */;
945 val* var8 /* : FlatString */;
946 short int var10 /* : Bool */;
947 {
948 file__OFStream__init(self); /* Direct call file#OFStream#init on <self:Stderr>*/
949 }
950 var = NULL/*special!*/;
951 {
952 { /* Inline file#NativeFile#native_stderr (var) on <var:NativeFile> */
953 var3 = file_NativeFileCapable_NativeFileCapable_native_stderr_0();
954 var1 = var3;
955 goto RET_LABEL2;
956 RET_LABEL2:(void)0;
957 }
958 }
959 var4 = BOX_file__NativeFile(var1); /* autobox from NativeFile to nullable NativeFile */
960 self->attrs[COLOR_file__FStream___file].val = var4; /* _file on <self:Stderr> */
961 if (varonce) {
962 var5 = varonce;
963 } else {
964 var6 = "/dev/stderr";
965 var7 = 11;
966 var8 = string__NativeString__to_s_with_length(var6, var7);
967 var5 = var8;
968 varonce = var5;
969 }
970 {
971 { /* Inline file#FStream#path= (self,var5) on <self:Stderr> */
972 self->attrs[COLOR_file__FStream___path].val = var5; /* _path on <self:Stderr> */
973 RET_LABEL9:(void)0;
974 }
975 }
976 var10 = 1;
977 self->attrs[COLOR_file__OFStream___writable].s = var10; /* _writable on <self:Stderr> */
978 RET_LABEL:;
979 }
980 /* method file#Stderr#init for (self: Object) */
981 void VIRTUAL_file__Stderr__init(val* self) {
982 file__Stderr__init(self); /* Direct call file#Stderr#init on <self:Object(Stderr)>*/
983 RET_LABEL:;
984 }
985 /* method file#String#file_exists for (self: String): Bool */
986 short int file__String__file_exists(val* self) {
987 short int var /* : Bool */;
988 char* var1 /* : NativeString */;
989 short int var2 /* : Bool */;
990 short int var4 /* : Bool */;
991 {
992 var1 = string__FlatString__to_cstring(self);
993 }
994 {
995 { /* Inline file#NativeString#file_exists (var1) on <var1:NativeString> */
996 var4 = string_NativeString_NativeString_file_exists_0(var1);
997 var2 = var4;
998 goto RET_LABEL3;
999 RET_LABEL3:(void)0;
1000 }
1001 }
1002 var = var2;
1003 goto RET_LABEL;
1004 RET_LABEL:;
1005 return var;
1006 }
1007 /* method file#String#file_exists for (self: Object): Bool */
1008 short int VIRTUAL_file__String__file_exists(val* self) {
1009 short int var /* : Bool */;
1010 short int var1 /* : Bool */;
1011 var1 = file__String__file_exists(self);
1012 var = var1;
1013 RET_LABEL:;
1014 return var;
1015 }
1016 /* method file#String#file_copy_to for (self: String, String) */
1017 void file__String__file_copy_to(val* self, val* p0) {
1018 val* var_dest /* var dest: String */;
1019 val* var /* : IFStream */;
1020 val* var_input /* var input: IFStream */;
1021 val* var1 /* : OFStream */;
1022 val* var_output /* var output: OFStream */;
1023 short int var2 /* : Bool */;
1024 short int var3 /* : Bool */;
1025 long var4 /* : Int */;
1026 val* var5 /* : String */;
1027 val* var_buffer /* var buffer: String */;
1028 var_dest = p0;
1029 var = NEW_file__IFStream(&type_file__IFStream);
1030 {
1031 file__IFStream__open(var, self); /* Direct call file#IFStream#open on <var:IFStream>*/
1032 }
1033 var_input = var;
1034 var1 = NEW_file__OFStream(&type_file__OFStream);
1035 {
1036 file__OFStream__open(var1, var_dest); /* Direct call file#OFStream#open on <var1:OFStream>*/
1037 }
1038 var_output = var1;
1039 for(;;) {
1040 {
1041 var2 = stream__BufferedIStream__eof(var_input);
1042 }
1043 var3 = !var2;
1044 if (!var3) break;
1045 var4 = 1024;
1046 {
1047 var5 = stream__BufferedIStream__read(var_input, var4);
1048 }
1049 var_buffer = var5;
1050 {
1051 file__OFStream__write(var_output, var_buffer); /* Direct call file#OFStream#write on <var_output:OFStream>*/
1052 }
1053 CONTINUE_label: (void)0;
1054 }
1055 BREAK_label: (void)0;
1056 {
1057 file__IFStream__close(var_input); /* Direct call file#IFStream#close on <var_input:IFStream>*/
1058 }
1059 {
1060 file__OFStream__close(var_output); /* Direct call file#OFStream#close on <var_output:OFStream>*/
1061 }
1062 RET_LABEL:;
1063 }
1064 /* method file#String#file_copy_to for (self: Object, String) */
1065 void VIRTUAL_file__String__file_copy_to(val* self, val* p0) {
1066 file__String__file_copy_to(self, p0); /* Direct call file#String#file_copy_to on <self:Object(String)>*/
1067 RET_LABEL:;
1068 }
1069 /* method file#String#strip_extension for (self: String, String): String */
1070 val* file__String__strip_extension(val* self, val* p0) {
1071 val* var /* : String */;
1072 val* var_ext /* var ext: String */;
1073 short int var1 /* : Bool */;
1074 long var2 /* : Int */;
1075 long var3 /* : Int */;
1076 long var5 /* : Int */;
1077 long var6 /* : Int */;
1078 long var8 /* : Int */;
1079 long var9 /* : Int */;
1080 short int var11 /* : Bool */;
1081 int cltype;
1082 int idtype;
1083 const char* var_class_name;
1084 long var12 /* : Int */;
1085 val* var13 /* : String */;
1086 var_ext = p0;
1087 {
1088 var1 = string__Text__has_suffix(self, var_ext);
1089 }
1090 if (var1){
1091 var2 = 0;
1092 {
1093 { /* Inline string#FlatText#length (self) on <self:String> */
1094 var5 = self->attrs[COLOR_string__FlatText___length].l; /* _length on <self:String> */
1095 var3 = var5;
1096 RET_LABEL4:(void)0;
1097 }
1098 }
1099 {
1100 { /* Inline string#FlatText#length (var_ext) on <var_ext:String> */
1101 var8 = var_ext->attrs[COLOR_string__FlatText___length].l; /* _length on <var_ext:String> */
1102 var6 = var8;
1103 RET_LABEL7:(void)0;
1104 }
1105 }
1106 {
1107 { /* Inline kernel#Int#- (var3,var6) on <var3:Int> */
1108 /* Covariant cast for argument 0 (i) <var6:Int> isa OTHER */
1109 /* <var6:Int> isa OTHER */
1110 var11 = 1; /* easy <var6:Int> isa OTHER*/
1111 if (unlikely(!var11)) {
1112 var_class_name = type_kernel__Int.name;
1113 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1114 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 331);
1115 show_backtrace(1);
1116 }
1117 var12 = var3 - var6;
1118 var9 = var12;
1119 goto RET_LABEL10;
1120 RET_LABEL10:(void)0;
1121 }
1122 }
1123 {
1124 var13 = string__FlatString__substring(self, var2, var9);
1125 }
1126 var = var13;
1127 goto RET_LABEL;
1128 } else {
1129 }
1130 var = self;
1131 goto RET_LABEL;
1132 RET_LABEL:;
1133 return var;
1134 }
1135 /* method file#String#strip_extension for (self: Object, String): String */
1136 val* VIRTUAL_file__String__strip_extension(val* self, val* p0) {
1137 val* var /* : String */;
1138 val* var1 /* : String */;
1139 var1 = file__String__strip_extension(self, p0);
1140 var = var1;
1141 RET_LABEL:;
1142 return var;
1143 }
1144 /* method file#String#basename for (self: String, String): String */
1145 val* file__String__basename(val* self, val* p0) {
1146 val* var /* : String */;
1147 val* var_ext /* var ext: String */;
1148 long var1 /* : Int */;
1149 long var3 /* : Int */;
1150 long var4 /* : Int */;
1151 long var5 /* : Int */;
1152 short int var7 /* : Bool */;
1153 int cltype;
1154 int idtype;
1155 const char* var_class_name;
1156 long var8 /* : Int */;
1157 long var_l /* var l: Int */;
1158 short int var9 /* : Bool */;
1159 long var10 /* : Int */;
1160 short int var11 /* : Bool */;
1161 short int var13 /* : Bool */;
1162 int cltype14;
1163 int idtype15;
1164 const char* var_class_name16;
1165 short int var17 /* : Bool */;
1166 short int var_ /* var : Bool */;
1167 val* var18 /* : SequenceRead[Char] */;
1168 val* var20 /* : SequenceRead[Char] */;
1169 val* var21 /* : nullable Object */;
1170 char var22 /* : Char */;
1171 short int var23 /* : Bool */;
1172 short int var24 /* : Bool */;
1173 short int var26 /* : Bool */;
1174 char var27 /* : Char */;
1175 long var28 /* : Int */;
1176 long var29 /* : Int */;
1177 short int var31 /* : Bool */;
1178 int cltype32;
1179 int idtype33;
1180 const char* var_class_name34;
1181 long var35 /* : Int */;
1182 long var36 /* : Int */;
1183 short int var37 /* : Bool */;
1184 short int var38 /* : Bool */;
1185 short int var40 /* : Bool */;
1186 static val* varonce;
1187 val* var41 /* : String */;
1188 char* var42 /* : NativeString */;
1189 long var43 /* : Int */;
1190 val* var44 /* : FlatString */;
1191 val* var45 /* : SequenceRead[Char] */;
1192 val* var47 /* : SequenceRead[Char] */;
1193 char var48 /* : Char */;
1194 long var49 /* : Int */;
1195 val* var50 /* : nullable Object */;
1196 long var_pos /* var pos: Int */;
1197 val* var_n /* var n: String */;
1198 long var51 /* : Int */;
1199 short int var52 /* : Bool */;
1200 short int var54 /* : Bool */;
1201 int cltype55;
1202 int idtype56;
1203 const char* var_class_name57;
1204 short int var58 /* : Bool */;
1205 long var59 /* : Int */;
1206 long var60 /* : Int */;
1207 short int var62 /* : Bool */;
1208 int cltype63;
1209 int idtype64;
1210 const char* var_class_name65;
1211 long var66 /* : Int */;
1212 long var67 /* : Int */;
1213 short int var69 /* : Bool */;
1214 int cltype70;
1215 int idtype71;
1216 const char* var_class_name72;
1217 long var73 /* : Int */;
1218 val* var74 /* : String */;
1219 val* var75 /* : String */;
1220 var_ext = p0;
1221 {
1222 { /* Inline string#FlatText#length (self) on <self:String> */
1223 var3 = self->attrs[COLOR_string__FlatText___length].l; /* _length on <self:String> */
1224 var1 = var3;
1225 RET_LABEL2:(void)0;
1226 }
1227 }
1228 var4 = 1;
1229 {
1230 { /* Inline kernel#Int#- (var1,var4) on <var1:Int> */
1231 /* Covariant cast for argument 0 (i) <var4:Int> isa OTHER */
1232 /* <var4:Int> isa OTHER */
1233 var7 = 1; /* easy <var4:Int> isa OTHER*/
1234 if (unlikely(!var7)) {
1235 var_class_name = type_kernel__Int.name;
1236 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1237 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 331);
1238 show_backtrace(1);
1239 }
1240 var8 = var1 - var4;
1241 var5 = var8;
1242 goto RET_LABEL6;
1243 RET_LABEL6:(void)0;
1244 }
1245 }
1246 var_l = var5;
1247 for(;;) {
1248 var10 = 0;
1249 {
1250 { /* Inline kernel#Int#> (var_l,var10) on <var_l:Int> */
1251 /* Covariant cast for argument 0 (i) <var10:Int> isa OTHER */
1252 /* <var10:Int> isa OTHER */
1253 var13 = 1; /* easy <var10:Int> isa OTHER*/
1254 if (unlikely(!var13)) {
1255 var_class_name16 = type_kernel__Int.name;
1256 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name16);
1257 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 327);
1258 show_backtrace(1);
1259 }
1260 var17 = var_l > var10;
1261 var11 = var17;
1262 goto RET_LABEL12;
1263 RET_LABEL12:(void)0;
1264 }
1265 }
1266 var_ = var11;
1267 if (var11){
1268 {
1269 { /* Inline string#FlatString#chars (self) on <self:String> */
1270 var20 = self->attrs[COLOR_string__FlatString___chars].val; /* _chars on <self:String> */
1271 if (unlikely(var20 == NULL)) {
1272 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _chars");
1273 PRINT_ERROR(" (%s:%d)\n", "lib/standard/string.nit", 746);
1274 show_backtrace(1);
1275 }
1276 var18 = var20;
1277 RET_LABEL19:(void)0;
1278 }
1279 }
1280 {
1281 var21 = ((val* (*)(val*, long))(var18->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var18, var_l) /* [] on <var18:SequenceRead[Char]>*/;
1282 }
1283 var22 = '/';
1284 {
1285 { /* Inline kernel#Char#== (var21,var22) on <var21:nullable Object(Char)> */
1286 var26 = (var21 != NULL) && (var21->class == &class_kernel__Char);
1287 if (var26) {
1288 var27 = ((struct instance_kernel__Char*)var21)->value; /* autounbox from nullable Object to Char */;
1289 var26 = (var27 == var22);
1290 }
1291 var24 = var26;
1292 goto RET_LABEL25;
1293 RET_LABEL25:(void)0;
1294 }
1295 var23 = var24;
1296 }
1297 var9 = var23;
1298 } else {
1299 var9 = var_;
1300 }
1301 if (!var9) break;
1302 var28 = 1;
1303 {
1304 { /* Inline kernel#Int#- (var_l,var28) on <var_l:Int> */
1305 /* Covariant cast for argument 0 (i) <var28:Int> isa OTHER */
1306 /* <var28:Int> isa OTHER */
1307 var31 = 1; /* easy <var28:Int> isa OTHER*/
1308 if (unlikely(!var31)) {
1309 var_class_name34 = type_kernel__Int.name;
1310 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name34);
1311 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 331);
1312 show_backtrace(1);
1313 }
1314 var35 = var_l - var28;
1315 var29 = var35;
1316 goto RET_LABEL30;
1317 RET_LABEL30:(void)0;
1318 }
1319 }
1320 var_l = var29;
1321 CONTINUE_label: (void)0;
1322 }
1323 BREAK_label: (void)0;
1324 var36 = 0;
1325 {
1326 { /* Inline kernel#Int#== (var_l,var36) on <var_l:Int> */
1327 var40 = var_l == var36;
1328 var38 = var40;
1329 goto RET_LABEL39;
1330 RET_LABEL39:(void)0;
1331 }
1332 var37 = var38;
1333 }
1334 if (var37){
1335 if (varonce) {
1336 var41 = varonce;
1337 } else {
1338 var42 = "/";
1339 var43 = 1;
1340 var44 = string__NativeString__to_s_with_length(var42, var43);
1341 var41 = var44;
1342 varonce = var41;
1343 }
1344 var = var41;
1345 goto RET_LABEL;
1346 } else {
1347 }
1348 {
1349 { /* Inline string#FlatString#chars (self) on <self:String> */
1350 var47 = self->attrs[COLOR_string__FlatString___chars].val; /* _chars on <self:String> */
1351 if (unlikely(var47 == NULL)) {
1352 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _chars");
1353 PRINT_ERROR(" (%s:%d)\n", "lib/standard/string.nit", 746);
1354 show_backtrace(1);
1355 }
1356 var45 = var47;
1357 RET_LABEL46:(void)0;
1358 }
1359 }
1360 var48 = '/';
1361 {
1362 var50 = BOX_kernel__Char(var48); /* autobox from Char to nullable Object */
1363 var49 = ((long (*)(val*, val*, long))(var45->class->vft[COLOR_abstract_collection__SequenceRead__last_index_of_from]))(var45, var50, var_l) /* last_index_of_from on <var45:SequenceRead[Char]>*/;
1364 }
1365 var_pos = var49;
1366 var_n = self;
1367 var51 = 0;
1368 {
1369 { /* Inline kernel#Int#>= (var_pos,var51) on <var_pos:Int> */
1370 /* Covariant cast for argument 0 (i) <var51:Int> isa OTHER */
1371 /* <var51:Int> isa OTHER */
1372 var54 = 1; /* easy <var51:Int> isa OTHER*/
1373 if (unlikely(!var54)) {
1374 var_class_name57 = type_kernel__Int.name;
1375 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name57);
1376 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 326);
1377 show_backtrace(1);
1378 }
1379 var58 = var_pos >= var51;
1380 var52 = var58;
1381 goto RET_LABEL53;
1382 RET_LABEL53:(void)0;
1383 }
1384 }
1385 if (var52){
1386 var59 = 1;
1387 {
1388 { /* Inline kernel#Int#+ (var_pos,var59) on <var_pos:Int> */
1389 /* Covariant cast for argument 0 (i) <var59:Int> isa OTHER */
1390 /* <var59:Int> isa OTHER */
1391 var62 = 1; /* easy <var59:Int> isa OTHER*/
1392 if (unlikely(!var62)) {
1393 var_class_name65 = type_kernel__Int.name;
1394 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name65);
1395 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
1396 show_backtrace(1);
1397 }
1398 var66 = var_pos + var59;
1399 var60 = var66;
1400 goto RET_LABEL61;
1401 RET_LABEL61:(void)0;
1402 }
1403 }
1404 {
1405 { /* Inline kernel#Int#- (var_l,var_pos) on <var_l:Int> */
1406 /* Covariant cast for argument 0 (i) <var_pos:Int> isa OTHER */
1407 /* <var_pos:Int> isa OTHER */
1408 var69 = 1; /* easy <var_pos:Int> isa OTHER*/
1409 if (unlikely(!var69)) {
1410 var_class_name72 = type_kernel__Int.name;
1411 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name72);
1412 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 331);
1413 show_backtrace(1);
1414 }
1415 var73 = var_l - var_pos;
1416 var67 = var73;
1417 goto RET_LABEL68;
1418 RET_LABEL68:(void)0;
1419 }
1420 }
1421 {
1422 var74 = string__FlatString__substring(self, var60, var67);
1423 }
1424 var_n = var74;
1425 } else {
1426 }
1427 {
1428 var75 = file__String__strip_extension(var_n, var_ext);
1429 }
1430 var = var75;
1431 goto RET_LABEL;
1432 RET_LABEL:;
1433 return var;
1434 }
1435 /* method file#String#basename for (self: Object, String): String */
1436 val* VIRTUAL_file__String__basename(val* self, val* p0) {
1437 val* var /* : String */;
1438 val* var1 /* : String */;
1439 var1 = file__String__basename(self, p0);
1440 var = var1;
1441 RET_LABEL:;
1442 return var;
1443 }
1444 /* method file#String#dirname for (self: String): String */
1445 val* file__String__dirname(val* self) {
1446 val* var /* : String */;
1447 long var1 /* : Int */;
1448 long var3 /* : Int */;
1449 long var4 /* : Int */;
1450 long var5 /* : Int */;
1451 short int var7 /* : Bool */;
1452 int cltype;
1453 int idtype;
1454 const char* var_class_name;
1455 long var8 /* : Int */;
1456 long var_l /* var l: Int */;
1457 short int var9 /* : Bool */;
1458 long var10 /* : Int */;
1459 short int var11 /* : Bool */;
1460 short int var13 /* : Bool */;
1461 int cltype14;
1462 int idtype15;
1463 const char* var_class_name16;
1464 short int var17 /* : Bool */;
1465 short int var_ /* var : Bool */;
1466 val* var18 /* : SequenceRead[Char] */;
1467 val* var20 /* : SequenceRead[Char] */;
1468 val* var21 /* : nullable Object */;
1469 char var22 /* : Char */;
1470 short int var23 /* : Bool */;
1471 short int var24 /* : Bool */;
1472 short int var26 /* : Bool */;
1473 char var27 /* : Char */;
1474 long var28 /* : Int */;
1475 long var29 /* : Int */;
1476 short int var31 /* : Bool */;
1477 int cltype32;
1478 int idtype33;
1479 const char* var_class_name34;
1480 long var35 /* : Int */;
1481 val* var36 /* : SequenceRead[Char] */;
1482 val* var38 /* : SequenceRead[Char] */;
1483 char var39 /* : Char */;
1484 long var40 /* : Int */;
1485 val* var41 /* : nullable Object */;
1486 long var_pos /* var pos: Int */;
1487 long var42 /* : Int */;
1488 short int var43 /* : Bool */;
1489 short int var45 /* : Bool */;
1490 int cltype46;
1491 int idtype47;
1492 const char* var_class_name48;
1493 short int var49 /* : Bool */;
1494 long var50 /* : Int */;
1495 val* var51 /* : String */;
1496 long var52 /* : Int */;
1497 short int var53 /* : Bool */;
1498 short int var54 /* : Bool */;
1499 short int var56 /* : Bool */;
1500 static val* varonce;
1501 val* var57 /* : String */;
1502 char* var58 /* : NativeString */;
1503 long var59 /* : Int */;
1504 val* var60 /* : FlatString */;
1505 static val* varonce61;
1506 val* var62 /* : String */;
1507 char* var63 /* : NativeString */;
1508 long var64 /* : Int */;
1509 val* var65 /* : FlatString */;
1510 {
1511 { /* Inline string#FlatText#length (self) on <self:String> */
1512 var3 = self->attrs[COLOR_string__FlatText___length].l; /* _length on <self:String> */
1513 var1 = var3;
1514 RET_LABEL2:(void)0;
1515 }
1516 }
1517 var4 = 1;
1518 {
1519 { /* Inline kernel#Int#- (var1,var4) on <var1:Int> */
1520 /* Covariant cast for argument 0 (i) <var4:Int> isa OTHER */
1521 /* <var4:Int> isa OTHER */
1522 var7 = 1; /* easy <var4:Int> isa OTHER*/
1523 if (unlikely(!var7)) {
1524 var_class_name = type_kernel__Int.name;
1525 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1526 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 331);
1527 show_backtrace(1);
1528 }
1529 var8 = var1 - var4;
1530 var5 = var8;
1531 goto RET_LABEL6;
1532 RET_LABEL6:(void)0;
1533 }
1534 }
1535 var_l = var5;
1536 for(;;) {
1537 var10 = 0;
1538 {
1539 { /* Inline kernel#Int#> (var_l,var10) on <var_l:Int> */
1540 /* Covariant cast for argument 0 (i) <var10:Int> isa OTHER */
1541 /* <var10:Int> isa OTHER */
1542 var13 = 1; /* easy <var10:Int> isa OTHER*/
1543 if (unlikely(!var13)) {
1544 var_class_name16 = type_kernel__Int.name;
1545 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name16);
1546 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 327);
1547 show_backtrace(1);
1548 }
1549 var17 = var_l > var10;
1550 var11 = var17;
1551 goto RET_LABEL12;
1552 RET_LABEL12:(void)0;
1553 }
1554 }
1555 var_ = var11;
1556 if (var11){
1557 {
1558 { /* Inline string#FlatString#chars (self) on <self:String> */
1559 var20 = self->attrs[COLOR_string__FlatString___chars].val; /* _chars on <self:String> */
1560 if (unlikely(var20 == NULL)) {
1561 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _chars");
1562 PRINT_ERROR(" (%s:%d)\n", "lib/standard/string.nit", 746);
1563 show_backtrace(1);
1564 }
1565 var18 = var20;
1566 RET_LABEL19:(void)0;
1567 }
1568 }
1569 {
1570 var21 = ((val* (*)(val*, long))(var18->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var18, var_l) /* [] on <var18:SequenceRead[Char]>*/;
1571 }
1572 var22 = '/';
1573 {
1574 { /* Inline kernel#Char#== (var21,var22) on <var21:nullable Object(Char)> */
1575 var26 = (var21 != NULL) && (var21->class == &class_kernel__Char);
1576 if (var26) {
1577 var27 = ((struct instance_kernel__Char*)var21)->value; /* autounbox from nullable Object to Char */;
1578 var26 = (var27 == var22);
1579 }
1580 var24 = var26;
1581 goto RET_LABEL25;
1582 RET_LABEL25:(void)0;
1583 }
1584 var23 = var24;
1585 }
1586 var9 = var23;
1587 } else {
1588 var9 = var_;
1589 }
1590 if (!var9) break;
1591 var28 = 1;
1592 {
1593 { /* Inline kernel#Int#- (var_l,var28) on <var_l:Int> */
1594 /* Covariant cast for argument 0 (i) <var28:Int> isa OTHER */
1595 /* <var28:Int> isa OTHER */
1596 var31 = 1; /* easy <var28:Int> isa OTHER*/
1597 if (unlikely(!var31)) {
1598 var_class_name34 = type_kernel__Int.name;
1599 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name34);
1600 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 331);
1601 show_backtrace(1);
1602 }
1603 var35 = var_l - var28;
1604 var29 = var35;
1605 goto RET_LABEL30;
1606 RET_LABEL30:(void)0;
1607 }
1608 }
1609 var_l = var29;
1610 CONTINUE_label: (void)0;
1611 }
1612 BREAK_label: (void)0;
1613 {
1614 { /* Inline string#FlatString#chars (self) on <self:String> */
1615 var38 = self->attrs[COLOR_string__FlatString___chars].val; /* _chars on <self:String> */
1616 if (unlikely(var38 == NULL)) {
1617 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _chars");
1618 PRINT_ERROR(" (%s:%d)\n", "lib/standard/string.nit", 746);
1619 show_backtrace(1);
1620 }
1621 var36 = var38;
1622 RET_LABEL37:(void)0;
1623 }
1624 }
1625 var39 = '/';
1626 {
1627 var41 = BOX_kernel__Char(var39); /* autobox from Char to nullable Object */
1628 var40 = ((long (*)(val*, val*, long))(var36->class->vft[COLOR_abstract_collection__SequenceRead__last_index_of_from]))(var36, var41, var_l) /* last_index_of_from on <var36:SequenceRead[Char]>*/;
1629 }
1630 var_pos = var40;
1631 var42 = 0;
1632 {
1633 { /* Inline kernel#Int#> (var_pos,var42) on <var_pos:Int> */
1634 /* Covariant cast for argument 0 (i) <var42:Int> isa OTHER */
1635 /* <var42:Int> isa OTHER */
1636 var45 = 1; /* easy <var42:Int> isa OTHER*/
1637 if (unlikely(!var45)) {
1638 var_class_name48 = type_kernel__Int.name;
1639 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name48);
1640 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 327);
1641 show_backtrace(1);
1642 }
1643 var49 = var_pos > var42;
1644 var43 = var49;
1645 goto RET_LABEL44;
1646 RET_LABEL44:(void)0;
1647 }
1648 }
1649 if (var43){
1650 var50 = 0;
1651 {
1652 var51 = string__FlatString__substring(self, var50, var_pos);
1653 }
1654 var = var51;
1655 goto RET_LABEL;
1656 } else {
1657 var52 = 0;
1658 {
1659 { /* Inline kernel#Int#== (var_pos,var52) on <var_pos:Int> */
1660 var56 = var_pos == var52;
1661 var54 = var56;
1662 goto RET_LABEL55;
1663 RET_LABEL55:(void)0;
1664 }
1665 var53 = var54;
1666 }
1667 if (var53){
1668 if (varonce) {
1669 var57 = varonce;
1670 } else {
1671 var58 = "/";
1672 var59 = 1;
1673 var60 = string__NativeString__to_s_with_length(var58, var59);
1674 var57 = var60;
1675 varonce = var57;
1676 }
1677 var = var57;
1678 goto RET_LABEL;
1679 } else {
1680 if (varonce61) {
1681 var62 = varonce61;
1682 } else {
1683 var63 = ".";
1684 var64 = 1;
1685 var65 = string__NativeString__to_s_with_length(var63, var64);
1686 var62 = var65;
1687 varonce61 = var62;
1688 }
1689 var = var62;
1690 goto RET_LABEL;
1691 }
1692 }
1693 RET_LABEL:;
1694 return var;
1695 }
1696 /* method file#String#dirname for (self: Object): String */
1697 val* VIRTUAL_file__String__dirname(val* self) {
1698 val* var /* : String */;
1699 val* var1 /* : String */;
1700 var1 = file__String__dirname(self);
1701 var = var1;
1702 RET_LABEL:;
1703 return var;
1704 }
1705 /* method file#String#realpath for (self: String): String */
1706 val* file__String__realpath(val* self) {
1707 val* var /* : String */;
1708 char* var1 /* : NativeString */;
1709 char* var2 /* : NativeString */;
1710 char* var4 /* : NativeString */;
1711 char* var_cs /* var cs: NativeString */;
1712 val* var5 /* : FlatString */;
1713 val* var_res /* var res: FlatString */;
1714 {
1715 var1 = string__FlatString__to_cstring(self);
1716 }
1717 {
1718 { /* Inline file#NativeString#file_realpath (var1) on <var1:NativeString> */
1719 var4 = file_NativeString_realpath(var1);
1720 var2 = var4;
1721 goto RET_LABEL3;
1722 RET_LABEL3:(void)0;
1723 }
1724 }
1725 var_cs = var2;
1726 {
1727 var5 = string__NativeString__to_s_with_copy(var_cs);
1728 }
1729 var_res = var5;
1730 var = var_res;
1731 goto RET_LABEL;
1732 RET_LABEL:;
1733 return var;
1734 }
1735 /* method file#String#realpath for (self: Object): String */
1736 val* VIRTUAL_file__String__realpath(val* self) {
1737 val* var /* : String */;
1738 val* var1 /* : String */;
1739 var1 = file__String__realpath(self);
1740 var = var1;
1741 RET_LABEL:;
1742 return var;
1743 }
1744 /* method file#String#simplify_path for (self: String): String */
1745 val* file__String__simplify_path(val* self) {
1746 val* var /* : String */;
1747 static val* varonce;
1748 val* var1 /* : String */;
1749 char* var2 /* : NativeString */;
1750 long var3 /* : Int */;
1751 val* var4 /* : FlatString */;
1752 val* var5 /* : Array[Text] */;
1753 val* var_a /* var a: Array[String] */;
1754 val* var6 /* : Array[String] */;
1755 val* var_a2 /* var a2: Array[String] */;
1756 val* var7 /* : ArrayIterator[nullable Object] */;
1757 short int var8 /* : Bool */;
1758 val* var9 /* : nullable Object */;
1759 val* var_x /* var x: String */;
1760 static val* varonce10;
1761 val* var11 /* : String */;
1762 char* var12 /* : NativeString */;
1763 long var13 /* : Int */;
1764 val* var14 /* : FlatString */;
1765 short int var15 /* : Bool */;
1766 short int var16 /* : Bool */;
1767 short int var17 /* : Bool */;
1768 static val* varonce18;
1769 val* var19 /* : String */;
1770 char* var20 /* : NativeString */;
1771 long var21 /* : Int */;
1772 val* var22 /* : FlatString */;
1773 short int var23 /* : Bool */;
1774 short int var24 /* : Bool */;
1775 short int var_ /* var : Bool */;
1776 short int var25 /* : Bool */;
1777 short int var26 /* : Bool */;
1778 short int var27 /* : Bool */;
1779 short int var28 /* : Bool */;
1780 static val* varonce29;
1781 val* var30 /* : String */;
1782 char* var31 /* : NativeString */;
1783 long var32 /* : Int */;
1784 val* var33 /* : FlatString */;
1785 short int var34 /* : Bool */;
1786 short int var35 /* : Bool */;
1787 short int var_36 /* var : Bool */;
1788 short int var37 /* : Bool */;
1789 short int var38 /* : Bool */;
1790 short int var_39 /* var : Bool */;
1791 val* var40 /* : nullable Object */;
1792 static val* varonce41;
1793 val* var42 /* : String */;
1794 char* var43 /* : NativeString */;
1795 long var44 /* : Int */;
1796 val* var45 /* : FlatString */;
1797 short int var46 /* : Bool */;
1798 short int var47 /* : Bool */;
1799 val* var_other /* var other: nullable Object */;
1800 short int var49 /* : Bool */;
1801 short int var50 /* : Bool */;
1802 short int var51 /* : Bool */;
1803 val* var52 /* : nullable Object */;
1804 short int var53 /* : Bool */;
1805 static val* varonce54;
1806 val* var55 /* : String */;
1807 char* var56 /* : NativeString */;
1808 long var57 /* : Int */;
1809 val* var58 /* : FlatString */;
1810 short int var59 /* : Bool */;
1811 long var60 /* : Int */;
1812 long var61 /* : Int */;
1813 short int var62 /* : Bool */;
1814 short int var63 /* : Bool */;
1815 short int var65 /* : Bool */;
1816 short int var_66 /* var : Bool */;
1817 val* var67 /* : nullable Object */;
1818 static val* varonce68;
1819 val* var69 /* : String */;
1820 char* var70 /* : NativeString */;
1821 long var71 /* : Int */;
1822 val* var72 /* : FlatString */;
1823 short int var73 /* : Bool */;
1824 short int var74 /* : Bool */;
1825 static val* varonce75;
1826 val* var76 /* : String */;
1827 char* var77 /* : NativeString */;
1828 long var78 /* : Int */;
1829 val* var79 /* : FlatString */;
1830 static val* varonce80;
1831 val* var81 /* : String */;
1832 char* var82 /* : NativeString */;
1833 long var83 /* : Int */;
1834 val* var84 /* : FlatString */;
1835 val* var85 /* : String */;
1836 if (varonce) {
1837 var1 = varonce;
1838 } else {
1839 var2 = "/";
1840 var3 = 1;
1841 var4 = string__NativeString__to_s_with_length(var2, var3);
1842 var1 = var4;
1843 varonce = var1;
1844 }
1845 {
1846 var5 = string_search__Text__split_with(self, var1);
1847 }
1848 var_a = var5;
1849 var6 = NEW_array__Array(&type_array__Arraystring__String);
1850 {
1851 array__Array__init(var6); /* Direct call array#Array#init on <var6:Array[String]>*/
1852 }
1853 var_a2 = var6;
1854 {
1855 var7 = array__AbstractArrayRead__iterator(var_a);
1856 }
1857 for(;;) {
1858 {
1859 var8 = array__ArrayIterator__is_ok(var7);
1860 }
1861 if(!var8) break;
1862 {
1863 var9 = array__ArrayIterator__item(var7);
1864 }
1865 var_x = var9;
1866 if (varonce10) {
1867 var11 = varonce10;
1868 } else {
1869 var12 = ".";
1870 var13 = 1;
1871 var14 = string__NativeString__to_s_with_length(var12, var13);
1872 var11 = var14;
1873 varonce10 = var11;
1874 }
1875 {
1876 var16 = string__FlatString___61d_61d(var_x, var11);
1877 var15 = var16;
1878 }
1879 if (var15){
1880 goto CONTINUE_label;
1881 } else {
1882 }
1883 if (varonce18) {
1884 var19 = varonce18;
1885 } else {
1886 var20 = "";
1887 var21 = 0;
1888 var22 = string__NativeString__to_s_with_length(var20, var21);
1889 var19 = var22;
1890 varonce18 = var19;
1891 }
1892 {
1893 var24 = string__FlatString___61d_61d(var_x, var19);
1894 var23 = var24;
1895 }
1896 var_ = var23;
1897 if (var23){
1898 {
1899 var25 = array__AbstractArrayRead__is_empty(var_a2);
1900 }
1901 var26 = !var25;
1902 var17 = var26;
1903 } else {
1904 var17 = var_;
1905 }
1906 if (var17){
1907 goto CONTINUE_label;
1908 } else {
1909 }
1910 if (varonce29) {
1911 var30 = varonce29;
1912 } else {
1913 var31 = "..";
1914 var32 = 2;
1915 var33 = string__NativeString__to_s_with_length(var31, var32);
1916 var30 = var33;
1917 varonce29 = var30;
1918 }
1919 {
1920 var35 = string__FlatString___61d_61d(var_x, var30);
1921 var34 = var35;
1922 }
1923 var_36 = var34;
1924 if (var34){
1925 {
1926 var37 = array__AbstractArrayRead__is_empty(var_a2);
1927 }
1928 var38 = !var37;
1929 var28 = var38;
1930 } else {
1931 var28 = var_36;
1932 }
1933 var_39 = var28;
1934 if (var28){
1935 {
1936 var40 = abstract_collection__SequenceRead__last(var_a2);
1937 }
1938 if (varonce41) {
1939 var42 = varonce41;
1940 } else {
1941 var43 = "..";
1942 var44 = 2;
1943 var45 = string__NativeString__to_s_with_length(var43, var44);
1944 var42 = var45;
1945 varonce41 = var42;
1946 }
1947 {
1948 { /* Inline kernel#Object#!= (var40,var42) on <var40:nullable Object(String)> */
1949 var_other = var42;
1950 {
1951 var50 = ((short int (*)(val*, val*))(var40->class->vft[COLOR_kernel__Object___61d_61d]))(var40, var_other) /* == on <var40:nullable Object(String)>*/;
1952 var49 = var50;
1953 }
1954 var51 = !var49;
1955 var47 = var51;
1956 goto RET_LABEL48;
1957 RET_LABEL48:(void)0;
1958 }
1959 var46 = var47;
1960 }
1961 var27 = var46;
1962 } else {
1963 var27 = var_39;
1964 }
1965 if (var27){
1966 {
1967 var52 = array__AbstractArray__pop(var_a2);
1968 }
1969 var52;
1970 goto CONTINUE_label;
1971 } else {
1972 }
1973 {
1974 array__AbstractArray__push(var_a2, var_x); /* Direct call array#AbstractArray#push on <var_a2:Array[String]>*/
1975 }
1976 CONTINUE_label: (void)0;
1977 {
1978 array__ArrayIterator__next(var7); /* Direct call array#ArrayIterator#next on <var7:ArrayIterator[nullable Object]>*/
1979 }
1980 }
1981 BREAK_label: (void)0;
1982 {
1983 var53 = array__AbstractArrayRead__is_empty(var_a2);
1984 }
1985 if (var53){
1986 if (varonce54) {
1987 var55 = varonce54;
1988 } else {
1989 var56 = ".";
1990 var57 = 1;
1991 var58 = string__NativeString__to_s_with_length(var56, var57);
1992 var55 = var58;
1993 varonce54 = var55;
1994 }
1995 var = var55;
1996 goto RET_LABEL;
1997 } else {
1998 }
1999 {
2000 var60 = array__AbstractArrayRead__length(var_a2);
2001 }
2002 var61 = 1;
2003 {
2004 { /* Inline kernel#Int#== (var60,var61) on <var60:Int> */
2005 var65 = var60 == var61;
2006 var63 = var65;
2007 goto RET_LABEL64;
2008 RET_LABEL64:(void)0;
2009 }
2010 var62 = var63;
2011 }
2012 var_66 = var62;
2013 if (var62){
2014 {
2015 var67 = abstract_collection__SequenceRead__first(var_a2);
2016 }
2017 if (varonce68) {
2018 var69 = varonce68;
2019 } else {
2020 var70 = "";
2021 var71 = 0;
2022 var72 = string__NativeString__to_s_with_length(var70, var71);
2023 var69 = var72;
2024 varonce68 = var69;
2025 }
2026 {
2027 var74 = string__FlatString___61d_61d(var67, var69);
2028 var73 = var74;
2029 }
2030 var59 = var73;
2031 } else {
2032 var59 = var_66;
2033 }
2034 if (var59){
2035 if (varonce75) {
2036 var76 = varonce75;
2037 } else {
2038 var77 = "/";
2039 var78 = 1;
2040 var79 = string__NativeString__to_s_with_length(var77, var78);
2041 var76 = var79;
2042 varonce75 = var76;
2043 }
2044 var = var76;
2045 goto RET_LABEL;
2046 } else {
2047 }
2048 if (varonce80) {
2049 var81 = varonce80;
2050 } else {
2051 var82 = "/";
2052 var83 = 1;
2053 var84 = string__NativeString__to_s_with_length(var82, var83);
2054 var81 = var84;
2055 varonce80 = var81;
2056 }
2057 {
2058 var85 = string__Collection__join(var_a2, var81);
2059 }
2060 var = var85;
2061 goto RET_LABEL;
2062 RET_LABEL:;
2063 return var;
2064 }
2065 /* method file#String#simplify_path for (self: Object): String */
2066 val* VIRTUAL_file__String__simplify_path(val* self) {
2067 val* var /* : String */;
2068 val* var1 /* : String */;
2069 var1 = file__String__simplify_path(self);
2070 var = var1;
2071 RET_LABEL:;
2072 return var;
2073 }
2074 /* method file#String#join_path for (self: String, String): String */
2075 val* file__String__join_path(val* self, val* p0) {
2076 val* var /* : String */;
2077 val* var_path /* var path: String */;
2078 short int var1 /* : Bool */;
2079 short int var2 /* : Bool */;
2080 val* var3 /* : SequenceRead[Char] */;
2081 val* var5 /* : SequenceRead[Char] */;
2082 long var6 /* : Int */;
2083 val* var7 /* : nullable Object */;
2084 char var8 /* : Char */;
2085 short int var9 /* : Bool */;
2086 short int var10 /* : Bool */;
2087 short int var12 /* : Bool */;
2088 char var13 /* : Char */;
2089 static val* varonce;
2090 val* var14 /* : String */;
2091 char* var15 /* : NativeString */;
2092 long var16 /* : Int */;
2093 val* var17 /* : FlatString */;
2094 val* var18 /* : Array[Object] */;
2095 long var19 /* : Int */;
2096 val* var20 /* : NativeArray[Object] */;
2097 val* var21 /* : String */;
2098 var_path = p0;
2099 {
2100 var1 = string__Text__is_empty(var_path);
2101 }
2102 if (var1){
2103 var = self;
2104 goto RET_LABEL;
2105 } else {
2106 }
2107 {
2108 var2 = string__Text__is_empty(self);
2109 }
2110 if (var2){
2111 var = var_path;
2112 goto RET_LABEL;
2113 } else {
2114 }
2115 {
2116 { /* Inline string#FlatString#chars (var_path) on <var_path:String> */
2117 var5 = var_path->attrs[COLOR_string__FlatString___chars].val; /* _chars on <var_path:String> */
2118 if (unlikely(var5 == NULL)) {
2119 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _chars");
2120 PRINT_ERROR(" (%s:%d)\n", "lib/standard/string.nit", 746);
2121 show_backtrace(1);
2122 }
2123 var3 = var5;
2124 RET_LABEL4:(void)0;
2125 }
2126 }
2127 var6 = 0;
2128 {
2129 var7 = ((val* (*)(val*, long))(var3->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var3, var6) /* [] on <var3:SequenceRead[Char]>*/;
2130 }
2131 var8 = '/';
2132 {
2133 { /* Inline kernel#Char#== (var7,var8) on <var7:nullable Object(Char)> */
2134 var12 = (var7 != NULL) && (var7->class == &class_kernel__Char);
2135 if (var12) {
2136 var13 = ((struct instance_kernel__Char*)var7)->value; /* autounbox from nullable Object to Char */;
2137 var12 = (var13 == var8);
2138 }
2139 var10 = var12;
2140 goto RET_LABEL11;
2141 RET_LABEL11:(void)0;
2142 }
2143 var9 = var10;
2144 }
2145 if (var9){
2146 var = var_path;
2147 goto RET_LABEL;
2148 } else {
2149 }
2150 if (varonce) {
2151 var14 = varonce;
2152 } else {
2153 var15 = "/";
2154 var16 = 1;
2155 var17 = string__NativeString__to_s_with_length(var15, var16);
2156 var14 = var17;
2157 varonce = var14;
2158 }
2159 var18 = NEW_array__Array(&type_array__Arraykernel__Object);
2160 { /* var18 = array_instance Array[Object] */
2161 var19 = 3;
2162 var20 = NEW_array__NativeArray(var19, &type_array__NativeArraykernel__Object);
2163 ((struct instance_array__NativeArray*)var20)->values[0] = (val*) self;
2164 ((struct instance_array__NativeArray*)var20)->values[1] = (val*) var14;
2165 ((struct instance_array__NativeArray*)var20)->values[2] = (val*) var_path;
2166 {
2167 ((void (*)(val*, val*, long))(var18->class->vft[COLOR_array__Array__with_native]))(var18, var20, var19) /* with_native on <var18:Array[Object]>*/;
2168 }
2169 }
2170 {
2171 var21 = ((val* (*)(val*))(var18->class->vft[COLOR_string__Object__to_s]))(var18) /* to_s on <var18:Array[Object]>*/;
2172 }
2173 var = var21;
2174 goto RET_LABEL;
2175 RET_LABEL:;
2176 return var;
2177 }
2178 /* method file#String#join_path for (self: Object, String): String */
2179 val* VIRTUAL_file__String__join_path(val* self, val* p0) {
2180 val* var /* : String */;
2181 val* var1 /* : String */;
2182 var1 = file__String__join_path(self, p0);
2183 var = var1;
2184 RET_LABEL:;
2185 return var;
2186 }
2187 /* method file#String#mkdir for (self: String) */
2188 void file__String__mkdir(val* self) {
2189 static val* varonce;
2190 val* var /* : String */;
2191 char* var1 /* : NativeString */;
2192 long var2 /* : Int */;
2193 val* var3 /* : FlatString */;
2194 val* var4 /* : Array[Text] */;
2195 val* var_dirs /* var dirs: Array[String] */;
2196 val* var5 /* : FlatBuffer */;
2197 val* var_path /* var path: FlatBuffer */;
2198 short int var6 /* : Bool */;
2199 long var7 /* : Int */;
2200 val* var8 /* : nullable Object */;
2201 short int var9 /* : Bool */;
2202 char var10 /* : Char */;
2203 val* var11 /* : ArrayIterator[nullable Object] */;
2204 short int var12 /* : Bool */;
2205 val* var13 /* : nullable Object */;
2206 val* var_d /* var d: String */;
2207 short int var14 /* : Bool */;
2208 char var15 /* : Char */;
2209 val* var16 /* : String */;
2210 char* var17 /* : NativeString */;
2211 short int var18 /* : Bool */;
2212 short int var20 /* : Bool */;
2213 if (varonce) {
2214 var = varonce;
2215 } else {
2216 var1 = "/";
2217 var2 = 1;
2218 var3 = string__NativeString__to_s_with_length(var1, var2);
2219 var = var3;
2220 varonce = var;
2221 }
2222 {
2223 var4 = string_search__Text__split_with(self, var);
2224 }
2225 var_dirs = var4;
2226 var5 = NEW_string__FlatBuffer(&type_string__FlatBuffer);
2227 {
2228 string__FlatBuffer__init(var5); /* Direct call string#FlatBuffer#init on <var5:FlatBuffer>*/
2229 }
2230 var_path = var5;
2231 {
2232 var6 = array__AbstractArrayRead__is_empty(var_dirs);
2233 }
2234 if (var6){
2235 goto RET_LABEL;
2236 } else {
2237 }
2238 var7 = 0;
2239 {
2240 var8 = array__Array___91d_93d(var_dirs, var7);
2241 }
2242 {
2243 var9 = string__Text__is_empty(var8);
2244 }
2245 if (var9){
2246 var10 = '/';
2247 {
2248 string__FlatBuffer__add(var_path, var10); /* Direct call string#FlatBuffer#add on <var_path:FlatBuffer>*/
2249 }
2250 } else {
2251 }
2252 {
2253 var11 = array__AbstractArrayRead__iterator(var_dirs);
2254 }
2255 for(;;) {
2256 {
2257 var12 = array__ArrayIterator__is_ok(var11);
2258 }
2259 if(!var12) break;
2260 {
2261 var13 = array__ArrayIterator__item(var11);
2262 }
2263 var_d = var13;
2264 {
2265 var14 = string__Text__is_empty(var_d);
2266 }
2267 if (var14){
2268 goto CONTINUE_label;
2269 } else {
2270 }
2271 {
2272 string__FlatBuffer__append(var_path, var_d); /* Direct call string#FlatBuffer#append on <var_path:FlatBuffer>*/
2273 }
2274 var15 = '/';
2275 {
2276 string__FlatBuffer__add(var_path, var15); /* Direct call string#FlatBuffer#add on <var_path:FlatBuffer>*/
2277 }
2278 {
2279 var16 = string__FlatBuffer__to_s(var_path);
2280 }
2281 {
2282 var17 = string__FlatString__to_cstring(var16);
2283 }
2284 {
2285 { /* Inline file#NativeString#file_mkdir (var17) on <var17:NativeString> */
2286 var20 = string_NativeString_NativeString_file_mkdir_0(var17);
2287 var18 = var20;
2288 goto RET_LABEL19;
2289 RET_LABEL19:(void)0;
2290 }
2291 }
2292 var18;
2293 CONTINUE_label: (void)0;
2294 {
2295 array__ArrayIterator__next(var11); /* Direct call array#ArrayIterator#next on <var11:ArrayIterator[nullable Object]>*/
2296 }
2297 }
2298 BREAK_label: (void)0;
2299 RET_LABEL:;
2300 }
2301 /* method file#String#mkdir for (self: Object) */
2302 void VIRTUAL_file__String__mkdir(val* self) {
2303 file__String__mkdir(self); /* Direct call file#String#mkdir on <self:Object(String)>*/
2304 RET_LABEL:;
2305 }
2306 /* method file#String#file_extension for (self: String): nullable String */
2307 val* file__String__file_extension(val* self) {
2308 val* var /* : nullable String */;
2309 val* var1 /* : SequenceRead[Char] */;
2310 val* var3 /* : SequenceRead[Char] */;
2311 char var4 /* : Char */;
2312 long var5 /* : Int */;
2313 val* var6 /* : nullable Object */;
2314 long var_last_slash /* var last_slash: Int */;
2315 long var7 /* : Int */;
2316 short int var8 /* : Bool */;
2317 short int var10 /* : Bool */;
2318 int cltype;
2319 int idtype;
2320 const char* var_class_name;
2321 short int var11 /* : Bool */;
2322 long var12 /* : Int */;
2323 long var13 /* : Int */;
2324 short int var15 /* : Bool */;
2325 int cltype16;
2326 int idtype17;
2327 const char* var_class_name18;
2328 long var19 /* : Int */;
2329 long var20 /* : Int */;
2330 long var22 /* : Int */;
2331 val* var23 /* : String */;
2332 val* var24 /* : null */;
2333 {
2334 { /* Inline string#FlatString#chars (self) on <self:String> */
2335 var3 = self->attrs[COLOR_string__FlatString___chars].val; /* _chars on <self:String> */
2336 if (unlikely(var3 == NULL)) {
2337 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _chars");
2338 PRINT_ERROR(" (%s:%d)\n", "lib/standard/string.nit", 746);
2339 show_backtrace(1);
2340 }
2341 var1 = var3;
2342 RET_LABEL2:(void)0;
2343 }
2344 }
2345 var4 = '.';
2346 {
2347 var6 = BOX_kernel__Char(var4); /* autobox from Char to nullable Object */
2348 var5 = ((long (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__SequenceRead__last_index_of]))(var1, var6) /* last_index_of on <var1:SequenceRead[Char]>*/;
2349 }
2350 var_last_slash = var5;
2351 var7 = 0;
2352 {
2353 { /* Inline kernel#Int#> (var_last_slash,var7) on <var_last_slash:Int> */
2354 /* Covariant cast for argument 0 (i) <var7:Int> isa OTHER */
2355 /* <var7:Int> isa OTHER */
2356 var10 = 1; /* easy <var7:Int> isa OTHER*/
2357 if (unlikely(!var10)) {
2358 var_class_name = type_kernel__Int.name;
2359 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2360 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 327);
2361 show_backtrace(1);
2362 }
2363 var11 = var_last_slash > var7;
2364 var8 = var11;
2365 goto RET_LABEL9;
2366 RET_LABEL9:(void)0;
2367 }
2368 }
2369 if (var8){
2370 var12 = 1;
2371 {
2372 { /* Inline kernel#Int#+ (var_last_slash,var12) on <var_last_slash:Int> */
2373 /* Covariant cast for argument 0 (i) <var12:Int> isa OTHER */
2374 /* <var12:Int> isa OTHER */
2375 var15 = 1; /* easy <var12:Int> isa OTHER*/
2376 if (unlikely(!var15)) {
2377 var_class_name18 = type_kernel__Int.name;
2378 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name18);
2379 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
2380 show_backtrace(1);
2381 }
2382 var19 = var_last_slash + var12;
2383 var13 = var19;
2384 goto RET_LABEL14;
2385 RET_LABEL14:(void)0;
2386 }
2387 }
2388 {
2389 { /* Inline string#FlatText#length (self) on <self:String> */
2390 var22 = self->attrs[COLOR_string__FlatText___length].l; /* _length on <self:String> */
2391 var20 = var22;
2392 RET_LABEL21:(void)0;
2393 }
2394 }
2395 {
2396 var23 = string__FlatString__substring(self, var13, var20);
2397 }
2398 var = var23;
2399 goto RET_LABEL;
2400 } else {
2401 var24 = NULL;
2402 var = var24;
2403 goto RET_LABEL;
2404 }
2405 RET_LABEL:;
2406 return var;
2407 }
2408 /* method file#String#file_extension for (self: Object): nullable String */
2409 val* VIRTUAL_file__String__file_extension(val* self) {
2410 val* var /* : nullable String */;
2411 val* var1 /* : nullable String */;
2412 var1 = file__String__file_extension(self);
2413 var = var1;
2414 RET_LABEL:;
2415 return var;
2416 }
2417 /* method file#NativeString#file_exists for (self: NativeString): Bool */
2418 short int file__NativeString__file_exists(char* self) {
2419 short int var /* : Bool */;
2420 short int var1 /* : Bool */;
2421 var1 = string_NativeString_NativeString_file_exists_0(self);
2422 var = var1;
2423 goto RET_LABEL;
2424 RET_LABEL:;
2425 return var;
2426 }
2427 /* method file#NativeString#file_exists for (self: Object): Bool */
2428 short int VIRTUAL_file__NativeString__file_exists(val* self) {
2429 short int var /* : Bool */;
2430 short int var1 /* : Bool */;
2431 short int var3 /* : Bool */;
2432 char* var4 /* : NativeString */;
2433 { /* Inline file#NativeString#file_exists (self) on <self:Object(NativeString)> */
2434 var4 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeString */;
2435 var3 = string_NativeString_NativeString_file_exists_0(var4);
2436 var1 = var3;
2437 goto RET_LABEL2;
2438 RET_LABEL2:(void)0;
2439 }
2440 var = var1;
2441 RET_LABEL:;
2442 return var;
2443 }
2444 /* method file#NativeString#file_mkdir for (self: NativeString): Bool */
2445 short int file__NativeString__file_mkdir(char* self) {
2446 short int var /* : Bool */;
2447 short int var1 /* : Bool */;
2448 var1 = string_NativeString_NativeString_file_mkdir_0(self);
2449 var = var1;
2450 goto RET_LABEL;
2451 RET_LABEL:;
2452 return var;
2453 }
2454 /* method file#NativeString#file_mkdir for (self: Object): Bool */
2455 short int VIRTUAL_file__NativeString__file_mkdir(val* self) {
2456 short int var /* : Bool */;
2457 short int var1 /* : Bool */;
2458 short int var3 /* : Bool */;
2459 char* var4 /* : NativeString */;
2460 { /* Inline file#NativeString#file_mkdir (self) on <self:Object(NativeString)> */
2461 var4 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeString */;
2462 var3 = string_NativeString_NativeString_file_mkdir_0(var4);
2463 var1 = var3;
2464 goto RET_LABEL2;
2465 RET_LABEL2:(void)0;
2466 }
2467 var = var1;
2468 RET_LABEL:;
2469 return var;
2470 }
2471 /* method file#NativeString#file_realpath for (self: NativeString): NativeString */
2472 char* file__NativeString__file_realpath(char* self) {
2473 char* var /* : NativeString */;
2474 char* var1 /* : NativeString */;
2475 var1 = file_NativeString_realpath(self);
2476 var = var1;
2477 goto RET_LABEL;
2478 RET_LABEL:;
2479 return var;
2480 }
2481 /* method file#NativeString#file_realpath for (self: Object): NativeString */
2482 char* VIRTUAL_file__NativeString__file_realpath(val* self) {
2483 char* var /* : NativeString */;
2484 char* var1 /* : NativeString */;
2485 char* var3 /* : NativeString */;
2486 char* var4 /* : NativeString */;
2487 { /* Inline file#NativeString#file_realpath (self) on <self:Object(NativeString)> */
2488 var4 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeString */;
2489 var3 = file_NativeString_realpath(var4);
2490 var1 = var3;
2491 goto RET_LABEL2;
2492 RET_LABEL2:(void)0;
2493 }
2494 var = var1;
2495 RET_LABEL:;
2496 return var;
2497 }
2498 /* method file#NativeFile#io_read for (self: NativeFile, NativeString, Int): Int */
2499 long file__NativeFile__io_read(void* self, char* p0, long p1) {
2500 long var /* : Int */;
2501 long var1 /* : Int */;
2502 var1 = file_NativeFile_NativeFile_io_read_2(self, p0, p1);
2503 var = var1;
2504 goto RET_LABEL;
2505 RET_LABEL:;
2506 return var;
2507 }
2508 /* method file#NativeFile#io_read for (self: Object, NativeString, Int): Int */
2509 long VIRTUAL_file__NativeFile__io_read(val* self, char* p0, long p1) {
2510 long var /* : Int */;
2511 long var1 /* : Int */;
2512 long var3 /* : Int */;
2513 void* var4 /* : NativeFile */;
2514 { /* Inline file#NativeFile#io_read (self,p0,p1) on <self:Object(NativeFile)> */
2515 var4 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeFile */;
2516 var3 = file_NativeFile_NativeFile_io_read_2(var4, p0, p1);
2517 var1 = var3;
2518 goto RET_LABEL2;
2519 RET_LABEL2:(void)0;
2520 }
2521 var = var1;
2522 RET_LABEL:;
2523 return var;
2524 }
2525 /* method file#NativeFile#io_write for (self: NativeFile, NativeString, Int): Int */
2526 long file__NativeFile__io_write(void* self, char* p0, long p1) {
2527 long var /* : Int */;
2528 long var1 /* : Int */;
2529 var1 = file_NativeFile_NativeFile_io_write_2(self, p0, p1);
2530 var = var1;
2531 goto RET_LABEL;
2532 RET_LABEL:;
2533 return var;
2534 }
2535 /* method file#NativeFile#io_write for (self: Object, NativeString, Int): Int */
2536 long VIRTUAL_file__NativeFile__io_write(val* self, char* p0, long p1) {
2537 long var /* : Int */;
2538 long var1 /* : Int */;
2539 long var3 /* : Int */;
2540 void* var4 /* : NativeFile */;
2541 { /* Inline file#NativeFile#io_write (self,p0,p1) on <self:Object(NativeFile)> */
2542 var4 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeFile */;
2543 var3 = file_NativeFile_NativeFile_io_write_2(var4, p0, p1);
2544 var1 = var3;
2545 goto RET_LABEL2;
2546 RET_LABEL2:(void)0;
2547 }
2548 var = var1;
2549 RET_LABEL:;
2550 return var;
2551 }
2552 /* method file#NativeFile#io_close for (self: NativeFile): Int */
2553 long file__NativeFile__io_close(void* self) {
2554 long var /* : Int */;
2555 long var1 /* : Int */;
2556 var1 = file_NativeFile_NativeFile_io_close_0(self);
2557 var = var1;
2558 goto RET_LABEL;
2559 RET_LABEL:;
2560 return var;
2561 }
2562 /* method file#NativeFile#io_close for (self: Object): Int */
2563 long VIRTUAL_file__NativeFile__io_close(val* self) {
2564 long var /* : Int */;
2565 long var1 /* : Int */;
2566 long var3 /* : Int */;
2567 void* var4 /* : NativeFile */;
2568 { /* Inline file#NativeFile#io_close (self) on <self:Object(NativeFile)> */
2569 var4 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeFile */;
2570 var3 = file_NativeFile_NativeFile_io_close_0(var4);
2571 var1 = var3;
2572 goto RET_LABEL2;
2573 RET_LABEL2:(void)0;
2574 }
2575 var = var1;
2576 RET_LABEL:;
2577 return var;
2578 }
2579 /* method file#NativeFile#io_open_read for (self: NativeFile, NativeString): NativeFile */
2580 void* file__NativeFile__io_open_read(void* self, char* p0) {
2581 void* var /* : NativeFile */;
2582 void* var1 /* : NativeFile */;
2583 var1 = file_NativeFileCapable_NativeFileCapable_io_open_read_1(p0);
2584 var = var1;
2585 goto RET_LABEL;
2586 RET_LABEL:;
2587 return var;
2588 }
2589 /* method file#NativeFile#io_open_read for (self: Object, NativeString): NativeFile */
2590 void* VIRTUAL_file__NativeFile__io_open_read(val* self, char* p0) {
2591 void* var /* : NativeFile */;
2592 val* var1 /* : Object */;
2593 void* var3 /* : NativeFile */;
2594 void* var4 /* : NativeFile */;
2595 val* var5 /* : Object */;
2596 void* var6 /* : NativeFile */;
2597 { /* Inline file#NativeFile#io_open_read (self,p0) on <self:Object(NativeFile)> */
2598 var3 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeFile */;
2599 var4 = file_NativeFileCapable_NativeFileCapable_io_open_read_1(p0);
2600 var5 = BOX_file__NativeFile(var4); /* autobox from NativeFile to Object */
2601 var1 = var5;
2602 goto RET_LABEL2;
2603 RET_LABEL2:(void)0;
2604 }
2605 var6 = ((struct instance_kernel__Pointer*)var1)->value; /* autounbox from Object to NativeFile */;
2606 var = var6;
2607 RET_LABEL:;
2608 return var;
2609 }
2610 /* method file#NativeFile#io_open_write for (self: NativeFile, NativeString): NativeFile */
2611 void* file__NativeFile__io_open_write(void* self, char* p0) {
2612 void* var /* : NativeFile */;
2613 void* var1 /* : NativeFile */;
2614 var1 = file_NativeFileCapable_NativeFileCapable_io_open_write_1(p0);
2615 var = var1;
2616 goto RET_LABEL;
2617 RET_LABEL:;
2618 return var;
2619 }
2620 /* method file#NativeFile#io_open_write for (self: Object, NativeString): NativeFile */
2621 void* VIRTUAL_file__NativeFile__io_open_write(val* self, char* p0) {
2622 void* var /* : NativeFile */;
2623 val* var1 /* : Object */;
2624 void* var3 /* : NativeFile */;
2625 void* var4 /* : NativeFile */;
2626 val* var5 /* : Object */;
2627 void* var6 /* : NativeFile */;
2628 { /* Inline file#NativeFile#io_open_write (self,p0) on <self:Object(NativeFile)> */
2629 var3 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeFile */;
2630 var4 = file_NativeFileCapable_NativeFileCapable_io_open_write_1(p0);
2631 var5 = BOX_file__NativeFile(var4); /* autobox from NativeFile to Object */
2632 var1 = var5;
2633 goto RET_LABEL2;
2634 RET_LABEL2:(void)0;
2635 }
2636 var6 = ((struct instance_kernel__Pointer*)var1)->value; /* autounbox from Object to NativeFile */;
2637 var = var6;
2638 RET_LABEL:;
2639 return var;
2640 }
2641 /* method file#NativeFile#native_stdin for (self: NativeFile): NativeFile */
2642 void* file__NativeFile__native_stdin(void* self) {
2643 void* var /* : NativeFile */;
2644 void* var1 /* : NativeFile */;
2645 var1 = file_NativeFileCapable_NativeFileCapable_native_stdin_0();
2646 var = var1;
2647 goto RET_LABEL;
2648 RET_LABEL:;
2649 return var;
2650 }
2651 /* method file#NativeFile#native_stdin for (self: Object): NativeFile */
2652 void* VIRTUAL_file__NativeFile__native_stdin(val* self) {
2653 void* var /* : NativeFile */;
2654 val* var1 /* : Object */;
2655 void* var3 /* : NativeFile */;
2656 void* var4 /* : NativeFile */;
2657 val* var5 /* : Object */;
2658 void* var6 /* : NativeFile */;
2659 { /* Inline file#NativeFile#native_stdin (self) on <self:Object(NativeFile)> */
2660 var3 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeFile */;
2661 var4 = file_NativeFileCapable_NativeFileCapable_native_stdin_0();
2662 var5 = BOX_file__NativeFile(var4); /* autobox from NativeFile to Object */
2663 var1 = var5;
2664 goto RET_LABEL2;
2665 RET_LABEL2:(void)0;
2666 }
2667 var6 = ((struct instance_kernel__Pointer*)var1)->value; /* autounbox from Object to NativeFile */;
2668 var = var6;
2669 RET_LABEL:;
2670 return var;
2671 }
2672 /* method file#NativeFile#native_stdout for (self: NativeFile): NativeFile */
2673 void* file__NativeFile__native_stdout(void* self) {
2674 void* var /* : NativeFile */;
2675 void* var1 /* : NativeFile */;
2676 var1 = file_NativeFileCapable_NativeFileCapable_native_stdout_0();
2677 var = var1;
2678 goto RET_LABEL;
2679 RET_LABEL:;
2680 return var;
2681 }
2682 /* method file#NativeFile#native_stdout for (self: Object): NativeFile */
2683 void* VIRTUAL_file__NativeFile__native_stdout(val* self) {
2684 void* var /* : NativeFile */;
2685 val* var1 /* : Object */;
2686 void* var3 /* : NativeFile */;
2687 void* var4 /* : NativeFile */;
2688 val* var5 /* : Object */;
2689 void* var6 /* : NativeFile */;
2690 { /* Inline file#NativeFile#native_stdout (self) on <self:Object(NativeFile)> */
2691 var3 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeFile */;
2692 var4 = file_NativeFileCapable_NativeFileCapable_native_stdout_0();
2693 var5 = BOX_file__NativeFile(var4); /* autobox from NativeFile to Object */
2694 var1 = var5;
2695 goto RET_LABEL2;
2696 RET_LABEL2:(void)0;
2697 }
2698 var6 = ((struct instance_kernel__Pointer*)var1)->value; /* autounbox from Object to NativeFile */;
2699 var = var6;
2700 RET_LABEL:;
2701 return var;
2702 }
2703 /* method file#NativeFile#native_stderr for (self: NativeFile): NativeFile */
2704 void* file__NativeFile__native_stderr(void* self) {
2705 void* var /* : NativeFile */;
2706 void* var1 /* : NativeFile */;
2707 var1 = file_NativeFileCapable_NativeFileCapable_native_stderr_0();
2708 var = var1;
2709 goto RET_LABEL;
2710 RET_LABEL:;
2711 return var;
2712 }
2713 /* method file#NativeFile#native_stderr for (self: Object): NativeFile */
2714 void* VIRTUAL_file__NativeFile__native_stderr(val* self) {
2715 void* var /* : NativeFile */;
2716 val* var1 /* : Object */;
2717 void* var3 /* : NativeFile */;
2718 void* var4 /* : NativeFile */;
2719 val* var5 /* : Object */;
2720 void* var6 /* : NativeFile */;
2721 { /* Inline file#NativeFile#native_stderr (self) on <self:Object(NativeFile)> */
2722 var3 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeFile */;
2723 var4 = file_NativeFileCapable_NativeFileCapable_native_stderr_0();
2724 var5 = BOX_file__NativeFile(var4); /* autobox from NativeFile to Object */
2725 var1 = var5;
2726 goto RET_LABEL2;
2727 RET_LABEL2:(void)0;
2728 }
2729 var6 = ((struct instance_kernel__Pointer*)var1)->value; /* autounbox from Object to NativeFile */;
2730 var = var6;
2731 RET_LABEL:;
2732 return var;
2733 }
2734 /* method file#Sys#stdout for (self: Sys): OStream */
2735 val* file__Sys__stdout(val* self) {
2736 val* var /* : OStream */;
2737 val* var1 /* : OStream */;
2738 var1 = self->attrs[COLOR_file__Sys___stdout].val; /* _stdout on <self:Sys> */
2739 if (unlikely(var1 == NULL)) {
2740 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stdout");
2741 PRINT_ERROR(" (%s:%d)\n", "lib/standard/file.nit", 530);
2742 show_backtrace(1);
2743 }
2744 var = var1;
2745 RET_LABEL:;
2746 return var;
2747 }
2748 /* method file#Sys#stdout for (self: Object): OStream */
2749 val* VIRTUAL_file__Sys__stdout(val* self) {
2750 val* var /* : OStream */;
2751 val* var1 /* : OStream */;
2752 val* var3 /* : OStream */;
2753 { /* Inline file#Sys#stdout (self) on <self:Object(Sys)> */
2754 var3 = self->attrs[COLOR_file__Sys___stdout].val; /* _stdout on <self:Object(Sys)> */
2755 if (unlikely(var3 == NULL)) {
2756 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stdout");
2757 PRINT_ERROR(" (%s:%d)\n", "lib/standard/file.nit", 530);
2758 show_backtrace(1);
2759 }
2760 var1 = var3;
2761 RET_LABEL2:(void)0;
2762 }
2763 var = var1;
2764 RET_LABEL:;
2765 return var;
2766 }
2767 /* method file#Sys#stderr for (self: Sys): OStream */
2768 val* file__Sys__stderr(val* self) {
2769 val* var /* : OStream */;
2770 val* var1 /* : OStream */;
2771 var1 = self->attrs[COLOR_file__Sys___stderr].val; /* _stderr on <self:Sys> */
2772 if (unlikely(var1 == NULL)) {
2773 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stderr");
2774 PRINT_ERROR(" (%s:%d)\n", "lib/standard/file.nit", 533);
2775 show_backtrace(1);
2776 }
2777 var = var1;
2778 RET_LABEL:;
2779 return var;
2780 }
2781 /* method file#Sys#stderr for (self: Object): OStream */
2782 val* VIRTUAL_file__Sys__stderr(val* self) {
2783 val* var /* : OStream */;
2784 val* var1 /* : OStream */;
2785 val* var3 /* : OStream */;
2786 { /* Inline file#Sys#stderr (self) on <self:Object(Sys)> */
2787 var3 = self->attrs[COLOR_file__Sys___stderr].val; /* _stderr on <self:Object(Sys)> */
2788 if (unlikely(var3 == NULL)) {
2789 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stderr");
2790 PRINT_ERROR(" (%s:%d)\n", "lib/standard/file.nit", 533);
2791 show_backtrace(1);
2792 }
2793 var1 = var3;
2794 RET_LABEL2:(void)0;
2795 }
2796 var = var1;
2797 RET_LABEL:;
2798 return var;
2799 }
2800 /* method file#Object#printn for (self: Object, Array[Object]) */
2801 void file__Object__printn(val* self, val* p0) {
2802 val* var_objects /* var objects: Array[Object] */;
2803 val* var /* : Sys */;
2804 val* var2 /* : Sys */;
2805 val* var3 /* : OStream */;
2806 val* var5 /* : OStream */;
2807 val* var6 /* : String */;
2808 var_objects = p0;
2809 {
2810 { /* Inline kernel#Object#sys (self) on <self:Object> */
2811 var2 = glob_sys;
2812 var = var2;
2813 goto RET_LABEL1;
2814 RET_LABEL1:(void)0;
2815 }
2816 }
2817 {
2818 { /* Inline file#Sys#stdout (var) on <var:Sys> */
2819 var5 = var->attrs[COLOR_file__Sys___stdout].val; /* _stdout on <var:Sys> */
2820 if (unlikely(var5 == NULL)) {
2821 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stdout");
2822 PRINT_ERROR(" (%s:%d)\n", "lib/standard/file.nit", 530);
2823 show_backtrace(1);
2824 }
2825 var3 = var5;
2826 RET_LABEL4:(void)0;
2827 }
2828 }
2829 {
2830 var6 = string__Array__to_s(var_objects);
2831 }
2832 {
2833 file__OFStream__write(var3, var6); /* Direct call file#OFStream#write on <var3:OStream>*/
2834 }
2835 RET_LABEL:;
2836 }
2837 /* method file#Object#printn for (self: Object, Array[Object]) */
2838 void VIRTUAL_file__Object__printn(val* self, val* p0) {
2839 file__Object__printn(self, p0); /* Direct call file#Object#printn on <self:Object>*/
2840 RET_LABEL:;
2841 }
2842 /* method file#Object#print for (self: Object, Object) */
2843 void file__Object__print(val* self, val* p0) {
2844 val* var_object /* var object: Object */;
2845 val* var /* : Sys */;
2846 val* var2 /* : Sys */;
2847 val* var3 /* : OStream */;
2848 val* var5 /* : OStream */;
2849 val* var6 /* : String */;
2850 val* var7 /* : Sys */;
2851 val* var9 /* : Sys */;
2852 val* var10 /* : OStream */;
2853 val* var12 /* : OStream */;
2854 static val* varonce;
2855 val* var13 /* : String */;
2856 char* var14 /* : NativeString */;
2857 long var15 /* : Int */;
2858 val* var16 /* : FlatString */;
2859 var_object = p0;
2860 {
2861 { /* Inline kernel#Object#sys (self) on <self:Object> */
2862 var2 = glob_sys;
2863 var = var2;
2864 goto RET_LABEL1;
2865 RET_LABEL1:(void)0;
2866 }
2867 }
2868 {
2869 { /* Inline file#Sys#stdout (var) on <var:Sys> */
2870 var5 = var->attrs[COLOR_file__Sys___stdout].val; /* _stdout on <var:Sys> */
2871 if (unlikely(var5 == NULL)) {
2872 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stdout");
2873 PRINT_ERROR(" (%s:%d)\n", "lib/standard/file.nit", 530);
2874 show_backtrace(1);
2875 }
2876 var3 = var5;
2877 RET_LABEL4:(void)0;
2878 }
2879 }
2880 {
2881 var6 = ((val* (*)(val*))(var_object->class->vft[COLOR_string__Object__to_s]))(var_object) /* to_s on <var_object:Object>*/;
2882 }
2883 {
2884 file__OFStream__write(var3, var6); /* Direct call file#OFStream#write on <var3:OStream>*/
2885 }
2886 {
2887 { /* Inline kernel#Object#sys (self) on <self:Object> */
2888 var9 = glob_sys;
2889 var7 = var9;
2890 goto RET_LABEL8;
2891 RET_LABEL8:(void)0;
2892 }
2893 }
2894 {
2895 { /* Inline file#Sys#stdout (var7) on <var7:Sys> */
2896 var12 = var7->attrs[COLOR_file__Sys___stdout].val; /* _stdout on <var7:Sys> */
2897 if (unlikely(var12 == NULL)) {
2898 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stdout");
2899 PRINT_ERROR(" (%s:%d)\n", "lib/standard/file.nit", 530);
2900 show_backtrace(1);
2901 }
2902 var10 = var12;
2903 RET_LABEL11:(void)0;
2904 }
2905 }
2906 if (varonce) {
2907 var13 = varonce;
2908 } else {
2909 var14 = "\n";
2910 var15 = 1;
2911 var16 = string__NativeString__to_s_with_length(var14, var15);
2912 var13 = var16;
2913 varonce = var13;
2914 }
2915 {
2916 file__OFStream__write(var10, var13); /* Direct call file#OFStream#write on <var10:OStream>*/
2917 }
2918 RET_LABEL:;
2919 }
2920 /* method file#Object#print for (self: Object, Object) */
2921 void VIRTUAL_file__Object__print(val* self, val* p0) {
2922 file__Object__print(self, p0); /* Direct call file#Object#print on <self:Object>*/
2923 RET_LABEL:;
2924 }
2925 /* method file#Object#getcwd for (self: Object): String */
2926 val* file__Object__getcwd(val* self) {
2927 val* var /* : String */;
2928 char* var1 /* : NativeString */;
2929 char* var3 /* : NativeString */;
2930 val* var4 /* : String */;
2931 {
2932 { /* Inline file#Object#file_getcwd (self) on <self:Object> */
2933 var3 = string_NativeString_NativeString_file_getcwd_0(self);
2934 var1 = var3;
2935 goto RET_LABEL2;
2936 RET_LABEL2:(void)0;
2937 }
2938 }
2939 {
2940 var4 = string__NativeString__to_s(var1);
2941 }
2942 var = var4;
2943 goto RET_LABEL;
2944 RET_LABEL:;
2945 return var;
2946 }
2947 /* method file#Object#getcwd for (self: Object): String */
2948 val* VIRTUAL_file__Object__getcwd(val* self) {
2949 val* var /* : String */;
2950 val* var1 /* : String */;
2951 var1 = file__Object__getcwd(self);
2952 var = var1;
2953 RET_LABEL:;
2954 return var;
2955 }
2956 /* method file#Object#file_getcwd for (self: Object): NativeString */
2957 char* file__Object__file_getcwd(val* self) {
2958 char* var /* : NativeString */;
2959 char* var1 /* : NativeString */;
2960 var1 = string_NativeString_NativeString_file_getcwd_0(self);
2961 var = var1;
2962 goto RET_LABEL;
2963 RET_LABEL:;
2964 return var;
2965 }
2966 /* method file#Object#file_getcwd for (self: Object): NativeString */
2967 char* VIRTUAL_file__Object__file_getcwd(val* self) {
2968 char* var /* : NativeString */;
2969 char* var1 /* : NativeString */;
2970 char* var3 /* : NativeString */;
2971 { /* Inline file#Object#file_getcwd (self) on <self:Object> */
2972 var3 = string_NativeString_NativeString_file_getcwd_0(self);
2973 var1 = var3;
2974 goto RET_LABEL2;
2975 RET_LABEL2:(void)0;
2976 }
2977 var = var1;
2978 RET_LABEL:;
2979 return var;
2980 }