X-Git-Url: http://nitlanguage.org diff --git a/c_src/file.sep.1.c b/c_src/file.sep.1.c index bf71c78..efa98ea 100644 --- a/c_src/file.sep.1.c +++ b/c_src/file.sep.1.c @@ -1,350 +1,189 @@ #include "file.sep.0.h" -/* method file#Object#printn for (self: Object, Array[Object]) */ -void file__Object__printn(val* self, val* p0) { -val* var_objects /* var objects: Array[Object] */; -val* var /* : OFStream */; -val* var1 /* : String */; -var_objects = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_file__Object__stdout]))(self) /* stdout on */; -var1 = ((val* (*)(val*))(var_objects->class->vft[COLOR_string__Object__to_s]))(var_objects) /* to_s on */; -((void (*)(val*, val*))(var->class->vft[COLOR_stream__OStream__write]))(var, var1) /* write on */; -RET_LABEL:; -} -/* method file#Object#printn for (self: Object, Array[Object]) */ -void VIRTUAL_file__Object__printn(val* self, val* p0) { -file__Object__printn(self, p0); -RET_LABEL:; -} -/* method file#Object#print for (self: Object, Object) */ -void file__Object__print(val* self, val* p0) { -val* var_object /* var object: Object */; -val* var /* : OFStream */; -val* var1 /* : String */; -val* var2 /* : OFStream */; -static val* varonce; -val* var3 /* : String */; -char* var4 /* : NativeString */; -long var5 /* : Int */; -val* var6 /* : String */; -var_object = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_file__Object__stdout]))(self) /* stdout on */; -var1 = ((val* (*)(val*))(var_object->class->vft[COLOR_string__Object__to_s]))(var_object) /* to_s on */; -((void (*)(val*, val*))(var->class->vft[COLOR_stream__OStream__write]))(var, var1) /* write on */; -var2 = ((val* (*)(val*))(self->class->vft[COLOR_file__Object__stdout]))(self) /* stdout on */; -if (varonce) { -var3 = varonce; -} else { -var4 = "\n"; -var5 = 1; -var6 = string__NativeString__to_s_with_length(var4, var5); -var3 = var6; -varonce = var3; -} -((void (*)(val*, val*))(var2->class->vft[COLOR_stream__OStream__write]))(var2, var3) /* write on */; -RET_LABEL:; -} -/* method file#Object#print for (self: Object, Object) */ -void VIRTUAL_file__Object__print(val* self, val* p0) { -file__Object__print(self, p0); -RET_LABEL:; -} -/* method file#Object#getc for (self: Object): Char */ -char file__Object__getc(val* self) { -char var /* : Char */; -val* var1 /* : Stdin */; -long var2 /* : Int */; -char var3 /* : Char */; -char var5 /* : Char */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_file__Object__stdin]))(self) /* stdin on */; -var2 = ((long (*)(val*))(var1->class->vft[COLOR_stream__IStream__read_char]))(var1) /* read_char on */; -{ /* Inline kernel#Int#ascii (var2) */ -var5 = var2; -var3 = var5; -goto RET_LABEL4; -RET_LABEL4:(void)0; -} -var = var3; -goto RET_LABEL; -RET_LABEL:; -return var; -} -/* method file#Object#getc for (self: Object): Char */ -char VIRTUAL_file__Object__getc(val* self) { -char var /* : Char */; -char var1 /* : Char */; -var1 = file__Object__getc(self); -var = var1; -RET_LABEL:; -return var; -} -/* method file#Object#gets for (self: Object): String */ -val* file__Object__gets(val* self) { -val* var /* : String */; -val* var1 /* : Stdin */; -val* var2 /* : String */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_file__Object__stdin]))(self) /* stdin on */; -var2 = ((val* (*)(val*))(var1->class->vft[COLOR_stream__IStream__read_line]))(var1) /* read_line on */; -var = var2; -goto RET_LABEL; -RET_LABEL:; -return var; -} -/* method file#Object#gets for (self: Object): String */ -val* VIRTUAL_file__Object__gets(val* self) { -val* var /* : String */; -val* var1 /* : String */; -var1 = file__Object__gets(self); -var = var1; -RET_LABEL:; -return var; -} -/* method file#Object#getcwd for (self: Object): String */ -val* file__Object__getcwd(val* self) { -val* var /* : String */; -char* var1 /* : NativeString */; -val* var2 /* : String */; -var1 = ((char* (*)(val*))(self->class->vft[COLOR_file__Object__file_getcwd]))(self) /* file_getcwd on */; -var2 = string__NativeString__to_s(var1); -var = var2; -goto RET_LABEL; -RET_LABEL:; -return var; -} -/* method file#Object#getcwd for (self: Object): String */ -val* VIRTUAL_file__Object__getcwd(val* self) { -val* var /* : String */; -val* var1 /* : String */; -var1 = file__Object__getcwd(self); -var = var1; -RET_LABEL:; -return var; -} -/* method file#Object#file_getcwd for (self: Object): NativeString */ -char* file__Object__file_getcwd(val* self) { -char* var /* : NativeString */; -char* var1 /* : NativeString */; -var1 = string_NativeString_NativeString_file_getcwd_0(self); -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; -} -/* method file#Object#file_getcwd for (self: Object): NativeString */ -char* VIRTUAL_file__Object__file_getcwd(val* self) { -char* var /* : NativeString */; -char* var1 /* : NativeString */; -var1 = file__Object__file_getcwd(self); -var = var1; -RET_LABEL:; -return var; -} -/* method file#FStream#path for (self: FStream): nullable String */ -val* file__FStream__path(val* self) { -val* var /* : nullable String */; -val* var1 /* : nullable String */; -var1 = self->attrs[COLOR_file__FStream___path].val; /* _path on */ -var = var1; +/* method file#FStream#path= for (self: FStream, nullable String) */ +void file__FStream__path_61d(val* self, val* p0) { +self->attrs[COLOR_file__FStream___path].val = p0; /* _path on */ RET_LABEL:; -return var; -} -/* method file#FStream#path for (self: Object): nullable String */ -val* VIRTUAL_file__FStream__path(val* self) { -val* var /* : nullable String */; -val* var1 /* : nullable String */; -var1 = file__FStream__path(self); -var = var1; -RET_LABEL:; -return var; -} -/* method file#FStream#file_stat for (self: FStream): FileStat */ -void* file__FStream__file_stat(val* self) { -void* var /* : FileStat */; -val* var1 /* : nullable NativeFile */; -void* var2 /* : FileStat */; -var1 = self->attrs[COLOR_file__FStream___file].val; /* _file on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Reciever is null"); -fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 66); -show_backtrace(1); -} else { -var2 = ((void* (*)(val*))(var1->class->vft[COLOR_file__NativeFile__file_stat]))(var1) /* file_stat on */; -} -var = var2; -goto RET_LABEL; -RET_LABEL:; -return var; -} -/* method file#FStream#file_stat for (self: Object): FileStat */ -void* VIRTUAL_file__FStream__file_stat(val* self) { -void* var /* : FileStat */; -void* var1 /* : FileStat */; -var1 = file__FStream__file_stat(self); -var = var1; -RET_LABEL:; -return var; -} -/* method file#FStream#init for (self: FStream) */ -void file__FStream__init(val* self) { -RET_LABEL:; -} -/* method file#FStream#init for (self: Object) */ -void VIRTUAL_file__FStream__init(val* self) { -file__FStream__init(self); -RET_LABEL:; -} -/* method file#IFStream#reopen for (self: IFStream) */ -void file__IFStream__reopen(val* self) { -short int var /* : Bool */; -short int var1 /* : Bool */; -void* var2 /* : NativeFile */; -val* var3 /* : nullable String */; -char* var4 /* : NativeString */; -void* var5 /* : NativeFile */; -val* var6 /* : nullable NativeFile */; -short int var7 /* : Bool */; -long var8 /* : Int */; -val* var9 /* : nullable Buffer */; -var = ((short int (*)(val*))(self->class->vft[COLOR_stream__IStream__eof]))(self) /* eof on */; -var1 = !var; -if (var1){ -((void (*)(val*))(self->class->vft[COLOR_stream__IOS__close]))(self) /* close on */; -} else { -} -var2 = NULL/*special!*/; -var3 = self->attrs[COLOR_file__FStream___path].val; /* _path on */ -if (var3 == NULL) { -fprintf(stderr, "Runtime error: %s", "Reciever is null"); -fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 80); -show_backtrace(1); -} else { -var4 = ((char* (*)(val*))(var3->class->vft[COLOR_string__String__to_cstring]))(var3) /* to_cstring on */; -} -var5 = file__NativeFile__io_open_read(var2, var4); -var6 = BOX_file__NativeFile(var5); /* autobox from NativeFile to nullable NativeFile */ -self->attrs[COLOR_file__FStream___file].val = var6; /* _file on */ -var7 = 0; -self->attrs[COLOR_file__IFStream___end_reached].s = var7; /* _end_reached on */ -var8 = 0; -self->attrs[COLOR_stream__BufferedIStream___buffer_pos].l = var8; /* _buffer_pos on */ -var9 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on */ -if (var9 == NULL) { -fprintf(stderr, "Runtime error: %s", "Reciever is null"); -fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 83); -show_backtrace(1); -} else { -((void (*)(val*))(var9->class->vft[COLOR_abstract_collection__RemovableCollection__clear]))(var9) /* clear on */; } -RET_LABEL:; +/* method file#FStream#path= for (self: Object, nullable String) */ +void VIRTUAL_file__FStream__path_61d(val* self, val* p0) { +{ /* Inline file#FStream#path= (self,p0) on */ +self->attrs[COLOR_file__FStream___path].val = p0; /* _path on */ +RET_LABEL1:(void)0; } -/* method file#IFStream#reopen for (self: Object) */ -void VIRTUAL_file__IFStream__reopen(val* self) { -file__IFStream__reopen(self); RET_LABEL:; } /* method file#IFStream#close for (self: IFStream) */ void file__IFStream__close(val* self) { val* var /* : nullable NativeFile */; long var1 /* : Int */; +long var3 /* : Int for extern */; +void* var4 /* : NativeFile for extern */; long var_i /* var i: Int */; -short int var2 /* : Bool */; +val* var5 /* : nullable FlatBuffer */; +short int var6 /* : Bool */; var = self->attrs[COLOR_file__FStream___file].val; /* _file on */ if (var == NULL) { -fprintf(stderr, "Runtime error: %s", "Reciever is null"); -fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 88); +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/file.nit", 67); show_backtrace(1); } else { -var1 = ((long (*)(val*))(var->class->vft[COLOR_file__NativeFile__io_close]))(var) /* io_close on */; +{ /* Inline file#NativeFile#io_close (var) on */ +var4 = ((struct instance_kernel__Pointer*)var)->value; /* unboxing nullable NativeFile */ +var3 = file_NativeFile_NativeFile_io_close_0(var4); +var1 = var3; +goto RET_LABEL2; +RET_LABEL2:(void)0; +} } var_i = var1; -var2 = 1; -self->attrs[COLOR_file__IFStream___end_reached].s = var2; /* _end_reached on */ +var5 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on */ +if (var5 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/file.nit", 68); +show_backtrace(1); +} else { +string__FlatBuffer__clear(var5); /* Direct call string#FlatBuffer#clear on */ +} +var6 = 1; +{ +{ /* Inline file#IFStream#end_reached= (self,var6) on */ +self->attrs[COLOR_file__IFStream___end_reached].s = var6; /* _end_reached on */ +RET_LABEL7:(void)0; +} +} RET_LABEL:; } /* method file#IFStream#close for (self: Object) */ void VIRTUAL_file__IFStream__close(val* self) { -file__IFStream__close(self); +file__IFStream__close(self); /* Direct call file#IFStream#close on */ RET_LABEL:; } /* method file#IFStream#fill_buffer for (self: IFStream) */ void file__IFStream__fill_buffer(val* self) { val* var /* : nullable NativeFile */; -val* var1 /* : nullable Buffer */; +val* var1 /* : nullable FlatBuffer */; char* var2 /* : NativeString */; -val* var3 /* : nullable Buffer */; -long var4 /* : Int */; -long var5 /* : Int */; -long var_nb /* var nb: Int */; +char* var4 /* : NativeString */; +val* var5 /* : nullable FlatBuffer */; long var6 /* : Int */; -short int var7 /* : Bool */; -short int var9 /* : Bool */; +long var8 /* : Int */; +long var9 /* : Int */; +long var11 /* : Int for extern */; +void* var12 /* : NativeFile for extern */; +long var_nb /* var nb: Int */; +long var13 /* : Int */; +short int var14 /* : Bool */; +short int var16 /* : Bool */; int cltype; int idtype; const char* var_class_name; -short int var10 /* : Bool */; -short int var11 /* : Bool */; -long var12 /* : Int */; -val* var13 /* : nullable Buffer */; -long var14 /* : Int */; +short int var17 /* : Bool */; +short int var18 /* : Bool */; +long var20 /* : Int */; +val* var21 /* : nullable FlatBuffer */; +long var23 /* : Int */; var = self->attrs[COLOR_file__FStream___file].val; /* _file on */ var1 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on */ if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Reciever is null"); -fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 94); +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/file.nit", 74); +show_backtrace(1); +} else { +{ /* Inline string#FlatText#items (var1) on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/string.nit", 706); show_backtrace(1); } -var2 = var1->attrs[COLOR_string__AbstractString___items].str; /* _items on */ -var3 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on */ -if (var3 == NULL) { -fprintf(stderr, "Runtime error: %s", "Reciever is null"); -fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 94); +var4 = var1->attrs[COLOR_string__FlatText___items].str; /* _items on */ +var2 = var4; +RET_LABEL3:(void)0; +} +} +var5 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on */ +if (var5 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/file.nit", 74); +show_backtrace(1); +} else { +{ /* Inline string#FlatBuffer#capacity (var5) on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/string.nit", 1408); show_backtrace(1); } -var4 = var3->attrs[COLOR_string__Buffer___capacity].l; /* _capacity on */ +var8 = var5->attrs[COLOR_string__FlatBuffer___capacity].l; /* _capacity on */ +var6 = var8; +RET_LABEL7:(void)0; +} +} if (var == NULL) { -fprintf(stderr, "Runtime error: %s", "Reciever is null"); -fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 94); +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/file.nit", 74); show_backtrace(1); } else { -var5 = ((long (*)(val*, char*, long))(var->class->vft[COLOR_file__NativeFile__io_read]))(var, var2, var4) /* io_read on */; -} -var_nb = var5; -var6 = 0; -{ /* Inline kernel#Int#<= (var_nb,var6) */ -/* Covariant cast for argument 0 (i) isa OTHER */ -/* isa OTHER */ -var9 = 1; /* easy isa OTHER*/ -if (!var9) { +{ /* Inline file#NativeFile#io_read (var,var2,var6) on */ +var12 = ((struct instance_kernel__Pointer*)var)->value; /* unboxing nullable NativeFile */ +var11 = file_NativeFile_NativeFile_io_read_2(var12, var2, var6); +var9 = var11; +goto RET_LABEL10; +RET_LABEL10:(void)0; +} +} +var_nb = var9; +var13 = 0; +{ +{ /* Inline kernel#Int#<= (var_nb,var13) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var16 = 1; /* easy isa OTHER*/ +if (unlikely(!var16)) { var_class_name = type_kernel__Int.name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name); -fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 370); show_backtrace(1); } -var10 = var_nb <= var6; -var7 = var10; -goto RET_LABEL8; -RET_LABEL8:(void)0; +var17 = var_nb <= var13; +var14 = var17; +goto RET_LABEL15; +RET_LABEL15:(void)0; +} +} +if (var14){ +var18 = 1; +{ +{ /* Inline file#IFStream#end_reached= (self,var18) on */ +self->attrs[COLOR_file__IFStream___end_reached].s = var18; /* _end_reached on */ +RET_LABEL19:(void)0; +} } -if (var7){ -var11 = 1; -self->attrs[COLOR_file__IFStream___end_reached].s = var11; /* _end_reached on */ -var12 = 0; -var_nb = var12; +var20 = 0; +var_nb = var20; } else { } -var13 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on */ -if (var13 == NULL) { -fprintf(stderr, "Runtime error: %s", "Reciever is null"); -fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 99); +var21 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on */ +if (var21 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/file.nit", 79); +show_backtrace(1); +} else { +{ /* Inline string#FlatText#length= (var21,var_nb) on */ +if (unlikely(var21 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/string.nit", 715); show_backtrace(1); } -var13->attrs[COLOR_array__AbstractArrayRead___length].l = var_nb; /* _length on */ -var14 = 0; -self->attrs[COLOR_stream__BufferedIStream___buffer_pos].l = var14; /* _buffer_pos on */ +var21->attrs[COLOR_string__FlatText___length].l = var_nb; /* _length on */ +RET_LABEL22:(void)0; +} +} +var23 = 0; +self->attrs[COLOR_stream__BufferedIStream___buffer_pos].l = var23; /* _buffer_pos on */ RET_LABEL:; } /* method file#IFStream#fill_buffer for (self: Object) */ void VIRTUAL_file__IFStream__fill_buffer(val* self) { -file__IFStream__fill_buffer(self); +file__IFStream__fill_buffer(self); /* Direct call file#IFStream#fill_buffer on */ RET_LABEL:; } /* method file#IFStream#end_reached for (self: IFStream): Bool */ @@ -360,146 +199,325 @@ return var; short int VIRTUAL_file__IFStream__end_reached(val* self) { short int var /* : Bool */; short int var1 /* : Bool */; -var1 = file__IFStream__end_reached(self); +short int var3 /* : Bool */; +{ /* Inline file#IFStream#end_reached (self) on */ +var3 = self->attrs[COLOR_file__IFStream___end_reached].s; /* _end_reached on */ +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } +/* method file#IFStream#end_reached= for (self: IFStream, Bool) */ +void file__IFStream__end_reached_61d(val* self, short int p0) { +self->attrs[COLOR_file__IFStream___end_reached].s = p0; /* _end_reached on */ +RET_LABEL:; +} +/* method file#IFStream#end_reached= for (self: Object, Bool) */ +void VIRTUAL_file__IFStream__end_reached_61d(val* self, short int p0) { +{ /* Inline file#IFStream#end_reached= (self,p0) on */ +self->attrs[COLOR_file__IFStream___end_reached].s = p0; /* _end_reached on */ +RET_LABEL1:(void)0; +} +RET_LABEL:; +} /* method file#IFStream#open for (self: IFStream, String) */ void file__IFStream__open(val* self, val* p0) { val* var_path /* var path: String */; long var /* : Int */; -void* var1 /* : NativeFile */; -val* var2 /* : nullable String */; +val* var2 /* : NativeFile */; char* var3 /* : NativeString */; -void* var4 /* : NativeFile */; +val* var4 /* : NativeFile */; val* var5 /* : nullable NativeFile */; -val* var6 /* : nullable NativeFile */; -val* var7 /* : null */; -short int var8 /* : Bool */; +short int var6 /* : Bool */; +short int var8 /* : Bool for extern */; +void* var9 /* : Pointer for extern */; +short int var10 /* : Bool */; +static val* varonce; +val* var11 /* : String */; +char* var12 /* : NativeString */; +long var13 /* : Int */; +val* var14 /* : FlatString */; +static val* varonce15; +val* var16 /* : String */; +char* var17 /* : NativeString */; +long var18 /* : Int */; +val* var19 /* : FlatString */; +val* var20 /* : Sys */; +val* var22 /* : Sys */; +long var23 /* : Int */; +long var25 /* : Int */; +val* var26 /* : String */; +static val* varonce27; +val* var28 /* : String */; +char* var29 /* : NativeString */; +long var30 /* : Int */; +val* var31 /* : FlatString */; +val* var32 /* : Array[Object] */; +long var33 /* : Int */; +val* var34 /* : NativeArray[Object] */; +val* var35 /* : String */; +{ +((void (*)(val*))(self->class->vft[COLOR_kernel__Object__init]))(self) /* init on */; +} var_path = p0; -((void (*)(val*))(self->class->vft[COLOR_file__FStream__init]))(self) /* init on */; -((void (*)(val*))(self->class->vft[COLOR_stream__BufferedIStream__init]))(self) /* init on */; +{ +{ /* Inline file#FStream#path= (self,var_path) on */ self->attrs[COLOR_file__FStream___path].val = var_path; /* _path on */ +RET_LABEL1:(void)0; +} +} var = 10; -((void (*)(val*, long))(self->class->vft[COLOR_stream__BufferedIStream__prepare_buffer]))(self, var) /* prepare_buffer on */; -var1 = NULL/*special!*/; -var2 = self->attrs[COLOR_file__FStream___path].val; /* _path on */ -if (var2 == NULL) { -fprintf(stderr, "Runtime error: %s", "Reciever is null"); -fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 111); +{ +stream__BufferedIStream__prepare_buffer(self, var); /* Direct call stream#BufferedIStream#prepare_buffer on */ +} +var2 = NEW_file__NativeFile(&type_file__NativeFile); +{ +var3 = string__FlatString__to_cstring(var_path); +} +{ +var4 = file__NativeFile__io_open_read(var2, var3); +} +self->attrs[COLOR_file__FStream___file].val = var4; /* _file on */ +var5 = self->attrs[COLOR_file__FStream___file].val; /* _file on */ +if (var5 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/file.nit", 92); show_backtrace(1); } else { -var3 = ((char* (*)(val*))(var2->class->vft[COLOR_string__String__to_cstring]))(var2) /* to_cstring on */; +{ /* Inline kernel#Pointer#address_is_null (var5) on */ +var9 = ((struct instance_kernel__Pointer*)var5)->value; /* unboxing nullable NativeFile */ +var8 = address_is_null(var9); +var6 = var8; +goto RET_LABEL7; +RET_LABEL7:(void)0; +} +} +var10 = !var6; +if (unlikely(!var10)) { +if (varonce) { +var11 = varonce; +} else { +var12 = "Error: Opening file at \'"; +var13 = 24; +var14 = string__NativeString__to_s_with_length(var12, var13); +var11 = var14; +varonce = var11; +} +if (varonce15) { +var16 = varonce15; +} else { +var17 = "\' failed with \'"; +var18 = 15; +var19 = string__NativeString__to_s_with_length(var17, var18); +var16 = var19; +varonce15 = var16; +} +{ +{ /* Inline kernel#Object#sys (self) on */ +var22 = glob_sys; +var20 = var22; +goto RET_LABEL21; +RET_LABEL21:(void)0; +} +} +{ +{ /* Inline kernel#Sys#errno (var20) on */ +struct nitni_instance* var_for_c_0; +var_for_c_0 = nit_alloc(sizeof(struct nitni_instance)); +var_for_c_0->value = var20; +var25 = kernel___Sys_errno___impl(var_for_c_0); +var23 = var25; +goto RET_LABEL24; +RET_LABEL24:(void)0; +} +} +{ +var26 = string__Int__strerror(var23); } -var4 = file__NativeFile__io_open_read(var1, var3); -var5 = BOX_file__NativeFile(var4); /* autobox from NativeFile to nullable NativeFile */ -self->attrs[COLOR_file__FStream___file].val = var5; /* _file on */ -var6 = self->attrs[COLOR_file__FStream___file].val; /* _file on */ -var7 = NULL; -if (var6 == NULL) { -var8 = 0; /* is null */ +if (varonce27) { +var28 = varonce27; } else { -var8 = 1; /* arg is null and recv is not */ +var29 = "\'"; +var30 = 1; +var31 = string__NativeString__to_s_with_length(var29, var30); +var28 = var31; +varonce27 = var28; } -if (!var8) { -fprintf(stderr, "Runtime error: %s", "Assert \'cant_open_file\' failed"); -fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 112); +var32 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var32 = array_instance Array[Object] */ +var33 = 5; +var34 = NEW_array__NativeArray(var33, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var34)->values[0] = (val*) var11; +((struct instance_array__NativeArray*)var34)->values[1] = (val*) var_path; +((struct instance_array__NativeArray*)var34)->values[2] = (val*) var16; +((struct instance_array__NativeArray*)var34)->values[3] = (val*) var26; +((struct instance_array__NativeArray*)var34)->values[4] = (val*) var28; +{ +((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on */; +} +} +{ +var35 = ((val* (*)(val*))(var32->class->vft[COLOR_string__Object__to_s]))(var32) /* to_s on */; +} +{ +file__Object__print(self, var35); /* Direct call file#Object#print on */ +} +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/file.nit", 92); show_backtrace(1); } RET_LABEL:; } /* method file#IFStream#open for (self: Object, String) */ void VIRTUAL_file__IFStream__open(val* self, val* p0) { -file__IFStream__open(self, p0); +file__IFStream__open(self, p0); /* Direct call file#IFStream#open on */ RET_LABEL:; } /* method file#IFStream#init for (self: IFStream) */ void file__IFStream__init(val* self) { -((void (*)(val*))(self->class->vft[COLOR_file__FStream__init]))(self) /* init on */; -((void (*)(val*))(self->class->vft[COLOR_stream__BufferedIStream__init]))(self) /* init on */; +{ +((void (*)(val*))(self->class->vft[COLOR_kernel__Object__init]))(self) /* init on */; +} RET_LABEL:; } /* method file#IFStream#init for (self: Object) */ void VIRTUAL_file__IFStream__init(val* self) { -file__IFStream__init(self); -RET_LABEL:; -} -/* method file#IFStream#without_file for (self: IFStream) */ -void file__IFStream__without_file(val* self) { -((void (*)(val*))(self->class->vft[COLOR_file__FStream__init]))(self) /* init on */; -((void (*)(val*))(self->class->vft[COLOR_stream__BufferedIStream__init]))(self) /* init on */; -RET_LABEL:; -} -/* method file#IFStream#without_file for (self: Object) */ -void VIRTUAL_file__IFStream__without_file(val* self) { -file__IFStream__without_file(self); +file__IFStream__init(self); /* Direct call file#IFStream#init on */ RET_LABEL:; } -/* method file#OFStream#write for (self: OFStream, String) */ +/* method file#OFStream#write for (self: OFStream, Text) */ void file__OFStream__write(val* self, val* p0) { -val* var_s /* var s: String */; -short int var /* : Bool */; -char* var1 /* : NativeString */; -long var2 /* : Int */; -var_s = p0; -var = self->attrs[COLOR_file__OFStream___writable].s; /* _writable on */ -if (!var) { -fprintf(stderr, "Runtime error: %s", "Assert failed"); -fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 126); -show_backtrace(1); -} -var1 = ((char* (*)(val*))(var_s->class->vft[COLOR_string__String__to_cstring]))(var_s) /* to_cstring on */; -var2 = ((long (*)(val*))(var_s->class->vft[COLOR_abstract_collection__Collection__length]))(var_s) /* length on */; -((void (*)(val*, char*, long))(self->class->vft[COLOR_file__OFStream__write_native]))(self, var1, var2) /* write_native on */; -RET_LABEL:; -} -/* method file#OFStream#write for (self: Object, String) */ -void VIRTUAL_file__OFStream__write(val* self, val* p0) { -file__OFStream__write(self, p0); -RET_LABEL:; -} -/* method file#OFStream#is_writable for (self: OFStream): Bool */ -short int file__OFStream__is_writable(val* self) { +val* var_s /* var s: Text */; short int var /* : Bool */; short int var1 /* : Bool */; -var1 = self->attrs[COLOR_file__OFStream___writable].s; /* _writable on */ -var = var1; -goto RET_LABEL; +int cltype; +int idtype; +char* var2 /* : NativeString */; +long var3 /* : Int */; +long var5 /* : Int */; +val* var6 /* : Iterator[Text] */; +val* var_ /* var : Iterator[Text] */; +val* var7 /* : Iterator[nullable Object] */; +val* var_8 /* var : Iterator[Text] */; +short int var9 /* : Bool */; +val* var10 /* : nullable Object */; +val* var_i /* var i: Text */; +char* var11 /* : NativeString */; +long var12 /* : Int */; +long var14 /* : Int */; +var_s = p0; +var = self->attrs[COLOR_file__OFStream___is_writable].s; /* _is_writable on */ +if (unlikely(!var)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/file.nit", 108); +show_backtrace(1); +} +/* isa FlatText */ +cltype = type_string__FlatText.color; +idtype = type_string__FlatText.id; +if(cltype >= var_s->type->table_size) { +var1 = 0; +} else { +var1 = var_s->type->type_table[cltype] == idtype; +} +if (var1){ +{ +var2 = ((char* (*)(val*))(var_s->class->vft[COLOR_string__Text__to_cstring]))(var_s) /* to_cstring on */; +} +{ +{ /* Inline string#FlatText#length (var_s) on */ +var5 = var_s->attrs[COLOR_string__FlatText___length].l; /* _length on */ +var3 = var5; +RET_LABEL4:(void)0; +} +} +{ +file__OFStream__write_native(self, var2, var3); /* Direct call file#OFStream#write_native on */ +} +} else { +{ +var6 = ((val* (*)(val*))(var_s->class->vft[COLOR_string__Text__substrings]))(var_s) /* substrings on */; +} +var_ = var6; +{ +var7 = abstract_collection__Iterator__iterator(var_); +} +var_8 = var7; +for(;;) { +{ +var9 = ((short int (*)(val*))(var_8->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_8) /* is_ok on */; +} +if (var9){ +{ +var10 = ((val* (*)(val*))(var_8->class->vft[COLOR_abstract_collection__Iterator__item]))(var_8) /* item on */; +} +var_i = var10; +{ +var11 = ((char* (*)(val*))(var_i->class->vft[COLOR_string__Text__to_cstring]))(var_i) /* to_cstring on */; +} +{ +{ /* Inline string#FlatText#length (var_i) on */ +var14 = var_i->attrs[COLOR_string__FlatText___length].l; /* _length on */ +var12 = var14; +RET_LABEL13:(void)0; +} +} +{ +file__OFStream__write_native(self, var11, var12); /* Direct call file#OFStream#write_native on */ +} +{ +((void (*)(val*))(var_8->class->vft[COLOR_abstract_collection__Iterator__next]))(var_8) /* next on */; +} +} else { +goto BREAK_label; +} +} +BREAK_label: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_8) on */ +RET_LABEL15:(void)0; +} +} +} RET_LABEL:; -return var; } -/* method file#OFStream#is_writable for (self: Object): Bool */ -short int VIRTUAL_file__OFStream__is_writable(val* self) { -short int var /* : Bool */; -short int var1 /* : Bool */; -var1 = file__OFStream__is_writable(self); -var = var1; +/* method file#OFStream#write for (self: Object, Text) */ +void VIRTUAL_file__OFStream__write(val* self, val* p0) { +file__OFStream__write(self, p0); /* Direct call file#OFStream#write on */ RET_LABEL:; -return var; } /* method file#OFStream#close for (self: OFStream) */ void file__OFStream__close(val* self) { val* var /* : nullable NativeFile */; long var1 /* : Int */; +long var3 /* : Int for extern */; +void* var4 /* : NativeFile for extern */; long var_i /* var i: Int */; -short int var2 /* : Bool */; +short int var5 /* : Bool */; var = self->attrs[COLOR_file__FStream___file].val; /* _file on */ if (var == NULL) { -fprintf(stderr, "Runtime error: %s", "Reciever is null"); -fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 134); +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/file.nit", 118); show_backtrace(1); } else { -var1 = ((long (*)(val*))(var->class->vft[COLOR_file__NativeFile__io_close]))(var) /* io_close on */; +{ /* Inline file#NativeFile#io_close (var) on */ +var4 = ((struct instance_kernel__Pointer*)var)->value; /* unboxing nullable NativeFile */ +var3 = file_NativeFile_NativeFile_io_close_0(var4); +var1 = var3; +goto RET_LABEL2; +RET_LABEL2:(void)0; +} } var_i = var1; -var2 = 0; -self->attrs[COLOR_file__OFStream___writable].s = var2; /* _writable on */ +var5 = 0; +self->attrs[COLOR_file__OFStream___is_writable].s = var5; /* _is_writable on */ RET_LABEL:; } /* method file#OFStream#close for (self: Object) */ void VIRTUAL_file__OFStream__close(val* self) { -file__OFStream__close(self); +file__OFStream__close(self); /* Direct call file#OFStream#close on */ RET_LABEL:; } /* method file#OFStream#write_native for (self: OFStream, NativeString, Int) */ @@ -509,287 +527,410 @@ long var_len /* var len: Int */; short int var /* : Bool */; val* var1 /* : nullable NativeFile */; long var2 /* : Int */; +long var4 /* : Int for extern */; +void* var5 /* : NativeFile for extern */; long var_err /* var err: Int */; -short int var3 /* : Bool */; -short int var5 /* : Bool */; short int var6 /* : Bool */; +short int var7 /* : Bool */; +short int var9 /* : Bool */; +short int var10 /* : Bool */; static val* varonce; -val* var7 /* : String */; -char* var8 /* : NativeString */; -long var9 /* : Int */; -val* var10 /* : String */; -static val* varonce11; -val* var12 /* : String */; -char* var13 /* : NativeString */; -long var14 /* : Int */; -val* var15 /* : String */; -static val* varonce16; -val* var17 /* : String */; -char* var18 /* : NativeString */; -long var19 /* : Int */; -val* var20 /* : String */; -val* var21 /* : Array[Object] */; -long var22 /* : Int */; -val* var23 /* : NativeArray[Object] */; -val* var24 /* : Object */; -val* var25 /* : Object */; +val* var11 /* : String */; +char* var12 /* : NativeString */; +long var13 /* : Int */; +val* var14 /* : FlatString */; +static val* varonce15; +val* var16 /* : String */; +char* var17 /* : NativeString */; +long var18 /* : Int */; +val* var19 /* : FlatString */; +static val* varonce20; +val* var21 /* : String */; +char* var22 /* : NativeString */; +long var23 /* : Int */; +val* var24 /* : FlatString */; +val* var25 /* : Array[Object] */; +long var26 /* : Int */; +val* var27 /* : NativeArray[Object] */; +val* var28 /* : Object */; +val* var29 /* : Object */; var_native = p0; var_len = p1; -var = self->attrs[COLOR_file__OFStream___writable].s; /* _writable on */ -if (!var) { -fprintf(stderr, "Runtime error: %s", "Assert failed"); -fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 144); +var = self->attrs[COLOR_file__OFStream___is_writable].s; /* _is_writable on */ +if (unlikely(!var)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/file.nit", 127); show_backtrace(1); } var1 = self->attrs[COLOR_file__FStream___file].val; /* _file on */ if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Reciever is null"); -fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 145); +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/file.nit", 128); show_backtrace(1); } else { -var2 = ((long (*)(val*, char*, long))(var1->class->vft[COLOR_file__NativeFile__io_write]))(var1, var_native, var_len) /* io_write on */; +{ /* Inline file#NativeFile#io_write (var1,var_native,var_len) on */ +var5 = ((struct instance_kernel__Pointer*)var1)->value; /* unboxing nullable NativeFile */ +var4 = file_NativeFile_NativeFile_io_write_2(var5, var_native, var_len); +var2 = var4; +goto RET_LABEL3; +RET_LABEL3:(void)0; +} } var_err = var2; -{ /* Inline kernel#Int#!= (var_err,var_len) */ -var5 = var_err == var_len; -var6 = !var5; -var3 = var6; -goto RET_LABEL4; -RET_LABEL4:(void)0; +{ +{ /* Inline kernel#Int#!= (var_err,var_len) on */ +var9 = var_err == var_len; +var10 = !var9; +var7 = var10; +goto RET_LABEL8; +RET_LABEL8:(void)0; } -if (var3){ +var6 = var7; +} +if (var6){ if (varonce) { -var7 = varonce; +var11 = varonce; } else { -var8 = "Problem in writing : "; -var9 = 21; -var10 = string__NativeString__to_s_with_length(var8, var9); -var7 = var10; -varonce = var7; +var12 = "Problem in writing : "; +var13 = 21; +var14 = string__NativeString__to_s_with_length(var12, var13); +var11 = var14; +varonce = var11; } -if (varonce11) { -var12 = varonce11; +if (varonce15) { +var16 = varonce15; } else { -var13 = " "; -var14 = 1; -var15 = string__NativeString__to_s_with_length(var13, var14); -var12 = var15; -varonce11 = var12; +var17 = " "; +var18 = 1; +var19 = string__NativeString__to_s_with_length(var17, var18); +var16 = var19; +varonce15 = var16; } -if (varonce16) { -var17 = varonce16; +if (varonce20) { +var21 = varonce20; } else { -var18 = "\n"; -var19 = 1; -var20 = string__NativeString__to_s_with_length(var18, var19); -var17 = var20; -varonce16 = var17; -} -var21 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var21 = array_instance Array[Object] */ -var22 = 5; -var23 = NEW_array__NativeArray(var22, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var23)->values[0] = (val*) var7; -var24 = BOX_kernel__Int(var_err); /* autobox from Int to Object */ -((struct instance_array__NativeArray*)var23)->values[1] = (val*) var24; -((struct instance_array__NativeArray*)var23)->values[2] = (val*) var12; -var25 = BOX_kernel__Int(var_len); /* autobox from Int to Object */ -((struct instance_array__NativeArray*)var23)->values[3] = (val*) var25; -((struct instance_array__NativeArray*)var23)->values[4] = (val*) var17; -((void (*)(val*, val*, long))(var21->class->vft[COLOR_array__Array__with_native]))(var21, var23, var22) /* with_native on */; +var22 = "\n"; +var23 = 1; +var24 = string__NativeString__to_s_with_length(var22, var23); +var21 = var24; +varonce20 = var21; +} +var25 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var25 = array_instance Array[Object] */ +var26 = 5; +var27 = NEW_array__NativeArray(var26, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var27)->values[0] = (val*) var11; +var28 = BOX_kernel__Int(var_err); /* autobox from Int to Object */ +((struct instance_array__NativeArray*)var27)->values[1] = (val*) var28; +((struct instance_array__NativeArray*)var27)->values[2] = (val*) var16; +var29 = BOX_kernel__Int(var_len); /* autobox from Int to Object */ +((struct instance_array__NativeArray*)var27)->values[3] = (val*) var29; +((struct instance_array__NativeArray*)var27)->values[4] = (val*) var21; +{ +((void (*)(val*, val*, long))(var25->class->vft[COLOR_array__Array__with_native]))(var25, var27, var26) /* with_native on */; +} +} +{ +file__Object__printn(self, var25); /* Direct call file#Object#printn on */ } -((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__printn]))(self, var21) /* printn on */; } else { } RET_LABEL:; } /* method file#OFStream#write_native for (self: Object, NativeString, Int) */ void VIRTUAL_file__OFStream__write_native(val* self, char* p0, long p1) { -file__OFStream__write_native(self, p0, p1); +file__OFStream__write_native(self, p0, p1); /* Direct call file#OFStream#write_native on */ RET_LABEL:; } /* method file#OFStream#open for (self: OFStream, String) */ void file__OFStream__open(val* self, val* p0) { val* var_path /* var path: String */; -void* var /* : NativeFile */; +val* var /* : NativeFile */; char* var1 /* : NativeString */; -void* var2 /* : NativeFile */; +val* var2 /* : NativeFile */; val* var3 /* : nullable NativeFile */; -val* var4 /* : nullable NativeFile */; -val* var5 /* : null */; -short int var6 /* : Bool */; -short int var7 /* : Bool */; +short int var4 /* : Bool */; +short int var6 /* : Bool for extern */; +void* var7 /* : Pointer for extern */; +short int var8 /* : Bool */; +static val* varonce; +val* var9 /* : String */; +char* var10 /* : NativeString */; +long var11 /* : Int */; +val* var12 /* : FlatString */; +static val* varonce13; +val* var14 /* : String */; +char* var15 /* : NativeString */; +long var16 /* : Int */; +val* var17 /* : FlatString */; +val* var18 /* : Sys */; +val* var20 /* : Sys */; +long var21 /* : Int */; +long var23 /* : Int */; +val* var24 /* : String */; +static val* varonce25; +val* var26 /* : String */; +char* var27 /* : NativeString */; +long var28 /* : Int */; +val* var29 /* : FlatString */; +val* var30 /* : Array[Object] */; +long var31 /* : Int */; +val* var32 /* : NativeArray[Object] */; +val* var33 /* : String */; +short int var35 /* : Bool */; +{ +((void (*)(val*))(self->class->vft[COLOR_kernel__Object__init]))(self) /* init on */; +} var_path = p0; -((void (*)(val*))(self->class->vft[COLOR_file__FStream__init]))(self) /* init on */; -var = NULL/*special!*/; -var1 = ((char* (*)(val*))(var_path->class->vft[COLOR_string__String__to_cstring]))(var_path) /* to_cstring on */; +var = NEW_file__NativeFile(&type_file__NativeFile); +{ +var1 = string__FlatString__to_cstring(var_path); +} +{ var2 = file__NativeFile__io_open_write(var, var1); -var3 = BOX_file__NativeFile(var2); /* autobox from NativeFile to nullable NativeFile */ -self->attrs[COLOR_file__FStream___file].val = var3; /* _file on */ -var4 = self->attrs[COLOR_file__FStream___file].val; /* _file on */ -var5 = NULL; -if (var4 == NULL) { -var6 = 0; /* is null */ -} else { -var6 = 1; /* arg is null and recv is not */ -} -if (!var6) { -fprintf(stderr, "Runtime error: %s", "Assert \'cant_open_file\' failed"); -fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 156); +} +self->attrs[COLOR_file__FStream___file].val = var2; /* _file on */ +var3 = self->attrs[COLOR_file__FStream___file].val; /* _file on */ +if (var3 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/file.nit", 139); +show_backtrace(1); +} else { +{ /* Inline kernel#Pointer#address_is_null (var3) on */ +var7 = ((struct instance_kernel__Pointer*)var3)->value; /* unboxing nullable NativeFile */ +var6 = address_is_null(var7); +var4 = var6; +goto RET_LABEL5; +RET_LABEL5:(void)0; +} +} +var8 = !var4; +if (unlikely(!var8)) { +if (varonce) { +var9 = varonce; +} else { +var10 = "Error: Opening file at \'"; +var11 = 24; +var12 = string__NativeString__to_s_with_length(var10, var11); +var9 = var12; +varonce = var9; +} +if (varonce13) { +var14 = varonce13; +} else { +var15 = "\' failed with \'"; +var16 = 15; +var17 = string__NativeString__to_s_with_length(var15, var16); +var14 = var17; +varonce13 = var14; +} +{ +{ /* Inline kernel#Object#sys (self) on */ +var20 = glob_sys; +var18 = var20; +goto RET_LABEL19; +RET_LABEL19:(void)0; +} +} +{ +{ /* Inline kernel#Sys#errno (var18) on */ +struct nitni_instance* var_for_c_0; +var_for_c_0 = nit_alloc(sizeof(struct nitni_instance)); +var_for_c_0->value = var18; +var23 = kernel___Sys_errno___impl(var_for_c_0); +var21 = var23; +goto RET_LABEL22; +RET_LABEL22:(void)0; +} +} +{ +var24 = string__Int__strerror(var21); +} +if (varonce25) { +var26 = varonce25; +} else { +var27 = "\'"; +var28 = 1; +var29 = string__NativeString__to_s_with_length(var27, var28); +var26 = var29; +varonce25 = var26; +} +var30 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var30 = array_instance Array[Object] */ +var31 = 5; +var32 = NEW_array__NativeArray(var31, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var32)->values[0] = (val*) var9; +((struct instance_array__NativeArray*)var32)->values[1] = (val*) var_path; +((struct instance_array__NativeArray*)var32)->values[2] = (val*) var14; +((struct instance_array__NativeArray*)var32)->values[3] = (val*) var24; +((struct instance_array__NativeArray*)var32)->values[4] = (val*) var26; +{ +((void (*)(val*, val*, long))(var30->class->vft[COLOR_array__Array__with_native]))(var30, var32, var31) /* with_native on */; +} +} +{ +var33 = ((val* (*)(val*))(var30->class->vft[COLOR_string__Object__to_s]))(var30) /* to_s on */; +} +{ +file__Object__print(self, var33); /* Direct call file#Object#print on */ +} +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/file.nit", 139); show_backtrace(1); } +{ +{ /* Inline file#FStream#path= (self,var_path) on */ self->attrs[COLOR_file__FStream___path].val = var_path; /* _path on */ -var7 = 1; -self->attrs[COLOR_file__OFStream___writable].s = var7; /* _writable on */ +RET_LABEL34:(void)0; +} +} +var35 = 1; +self->attrs[COLOR_file__OFStream___is_writable].s = var35; /* _is_writable on */ RET_LABEL:; } /* method file#OFStream#open for (self: Object, String) */ void VIRTUAL_file__OFStream__open(val* self, val* p0) { -file__OFStream__open(self, p0); +file__OFStream__open(self, p0); /* Direct call file#OFStream#open on */ RET_LABEL:; } /* method file#OFStream#init for (self: OFStream) */ void file__OFStream__init(val* self) { -((void (*)(val*))(self->class->vft[COLOR_file__FStream__init]))(self) /* init on */; +{ +((void (*)(val*))(self->class->vft[COLOR_kernel__Object__init]))(self) /* init on */; +} RET_LABEL:; } /* method file#OFStream#init for (self: Object) */ void VIRTUAL_file__OFStream__init(val* self) { -file__OFStream__init(self); -RET_LABEL:; -} -/* method file#OFStream#without_file for (self: OFStream) */ -void file__OFStream__without_file(val* self) { -((void (*)(val*))(self->class->vft[COLOR_file__FStream__init]))(self) /* init on */; -RET_LABEL:; -} -/* method file#OFStream#without_file for (self: Object) */ -void VIRTUAL_file__OFStream__without_file(val* self) { -file__OFStream__without_file(self); +file__OFStream__init(self); /* Direct call file#OFStream#init on */ RET_LABEL:; } /* method file#Stdin#init for (self: Stdin) */ void file__Stdin__init(val* self) { -void* var /* : NativeFile */; -void* var1 /* : NativeFile */; -val* var2 /* : nullable NativeFile */; +val* var /* : NativeFile */; +val* var1 /* : NativeFile */; static val* varonce; -val* var3 /* : String */; -char* var4 /* : NativeString */; -long var5 /* : Int */; -val* var6 /* : String */; +val* var2 /* : String */; +char* var3 /* : NativeString */; +long var4 /* : Int */; +val* var5 /* : FlatString */; long var7 /* : Int */; -((void (*)(val*))(self->class->vft[COLOR_file__IFStream__init]))(self) /* init on */; -var = NULL/*special!*/; +{ +file__IFStream__init(self); /* Direct call file#IFStream#init on */ +} +var = NEW_file__NativeFile(&type_file__NativeFile); +{ var1 = file__NativeFile__native_stdin(var); -var2 = BOX_file__NativeFile(var1); /* autobox from NativeFile to nullable NativeFile */ -self->attrs[COLOR_file__FStream___file].val = var2; /* _file on */ +} +self->attrs[COLOR_file__FStream___file].val = var1; /* _file on */ if (varonce) { -var3 = varonce; +var2 = varonce; } else { -var4 = "/dev/stdin"; -var5 = 10; -var6 = string__NativeString__to_s_with_length(var4, var5); -var3 = var6; -varonce = var3; +var3 = "/dev/stdin"; +var4 = 10; +var5 = string__NativeString__to_s_with_length(var3, var4); +var2 = var5; +varonce = var2; +} +{ +{ /* Inline file#FStream#path= (self,var2) on */ +self->attrs[COLOR_file__FStream___path].val = var2; /* _path on */ +RET_LABEL6:(void)0; +} } -self->attrs[COLOR_file__FStream___path].val = var3; /* _path on */ var7 = 1; -((void (*)(val*, long))(self->class->vft[COLOR_stream__BufferedIStream__prepare_buffer]))(self, var7) /* prepare_buffer on */; +{ +stream__BufferedIStream__prepare_buffer(self, var7); /* Direct call stream#BufferedIStream#prepare_buffer on */ +} RET_LABEL:; } /* method file#Stdin#init for (self: Object) */ void VIRTUAL_file__Stdin__init(val* self) { -file__Stdin__init(self); -RET_LABEL:; -} -/* method file#Stdin#poll_in for (self: Stdin): Bool */ -short int file__Stdin__poll_in(val* self) { -short int var /* : Bool */; -short int var1 /* : Bool */; -var1 = file_stdin_poll_in(self); -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; -} -/* method file#Stdin#poll_in for (self: Object): Bool */ -short int VIRTUAL_file__Stdin__poll_in(val* self) { -short int var /* : Bool */; -short int var1 /* : Bool */; -var1 = file__Stdin__poll_in(self); -var = var1; +file__Stdin__init(self); /* Direct call file#Stdin#init on */ RET_LABEL:; -return var; } /* method file#Stdout#init for (self: Stdout) */ void file__Stdout__init(val* self) { -void* var /* : NativeFile */; -void* var1 /* : NativeFile */; -val* var2 /* : nullable NativeFile */; +val* var /* : NativeFile */; +val* var1 /* : NativeFile */; static val* varonce; -val* var3 /* : String */; -char* var4 /* : NativeString */; -long var5 /* : Int */; -val* var6 /* : String */; +val* var2 /* : String */; +char* var3 /* : NativeString */; +long var4 /* : Int */; +val* var5 /* : FlatString */; short int var7 /* : Bool */; -((void (*)(val*))(self->class->vft[COLOR_file__OFStream__init]))(self) /* init on */; -var = NULL/*special!*/; +{ +file__OFStream__init(self); /* Direct call file#OFStream#init on */ +} +var = NEW_file__NativeFile(&type_file__NativeFile); +{ var1 = file__NativeFile__native_stdout(var); -var2 = BOX_file__NativeFile(var1); /* autobox from NativeFile to nullable NativeFile */ -self->attrs[COLOR_file__FStream___file].val = var2; /* _file on */ +} +self->attrs[COLOR_file__FStream___file].val = var1; /* _file on */ if (varonce) { -var3 = varonce; +var2 = varonce; } else { -var4 = "/dev/stdout"; -var5 = 11; -var6 = string__NativeString__to_s_with_length(var4, var5); -var3 = var6; -varonce = var3; +var3 = "/dev/stdout"; +var4 = 11; +var5 = string__NativeString__to_s_with_length(var3, var4); +var2 = var5; +varonce = var2; +} +{ +{ /* Inline file#FStream#path= (self,var2) on */ +self->attrs[COLOR_file__FStream___path].val = var2; /* _path on */ +RET_LABEL6:(void)0; +} } -self->attrs[COLOR_file__FStream___path].val = var3; /* _path on */ var7 = 1; -self->attrs[COLOR_file__OFStream___writable].s = var7; /* _writable on */ +self->attrs[COLOR_file__OFStream___is_writable].s = var7; /* _is_writable on */ RET_LABEL:; } /* method file#Stdout#init for (self: Object) */ void VIRTUAL_file__Stdout__init(val* self) { -file__Stdout__init(self); +file__Stdout__init(self); /* Direct call file#Stdout#init on */ RET_LABEL:; } /* method file#Stderr#init for (self: Stderr) */ void file__Stderr__init(val* self) { -void* var /* : NativeFile */; -void* var1 /* : NativeFile */; -val* var2 /* : nullable NativeFile */; +val* var /* : NativeFile */; +val* var1 /* : NativeFile */; static val* varonce; -val* var3 /* : String */; -char* var4 /* : NativeString */; -long var5 /* : Int */; -val* var6 /* : String */; +val* var2 /* : String */; +char* var3 /* : NativeString */; +long var4 /* : Int */; +val* var5 /* : FlatString */; short int var7 /* : Bool */; -((void (*)(val*))(self->class->vft[COLOR_file__OFStream__init]))(self) /* init on */; -var = NULL/*special!*/; +{ +file__OFStream__init(self); /* Direct call file#OFStream#init on */ +} +var = NEW_file__NativeFile(&type_file__NativeFile); +{ var1 = file__NativeFile__native_stderr(var); -var2 = BOX_file__NativeFile(var1); /* autobox from NativeFile to nullable NativeFile */ -self->attrs[COLOR_file__FStream___file].val = var2; /* _file on */ +} +self->attrs[COLOR_file__FStream___file].val = var1; /* _file on */ if (varonce) { -var3 = varonce; +var2 = varonce; } else { -var4 = "/dev/stderr"; -var5 = 11; -var6 = string__NativeString__to_s_with_length(var4, var5); -var3 = var6; -varonce = var3; +var3 = "/dev/stderr"; +var4 = 11; +var5 = string__NativeString__to_s_with_length(var3, var4); +var2 = var5; +varonce = var2; +} +{ +{ /* Inline file#FStream#path= (self,var2) on */ +self->attrs[COLOR_file__FStream___path].val = var2; /* _path on */ +RET_LABEL6:(void)0; +} } -self->attrs[COLOR_file__FStream___path].val = var3; /* _path on */ var7 = 1; -self->attrs[COLOR_file__OFStream___writable].s = var7; /* _writable on */ +self->attrs[COLOR_file__OFStream___is_writable].s = var7; /* _is_writable on */ RET_LABEL:; } /* method file#Stderr#init for (self: Object) */ void VIRTUAL_file__Stderr__init(val* self) { -file__Stderr__init(self); +file__Stderr__init(self); /* Direct call file#Stderr#init on */ RET_LABEL:; } /* method file#String#file_exists for (self: String): Bool */ @@ -797,8 +938,18 @@ short int file__String__file_exists(val* self) { short int var /* : Bool */; char* var1 /* : NativeString */; short int var2 /* : Bool */; -var1 = ((char* (*)(val*))(self->class->vft[COLOR_string__String__to_cstring]))(self) /* to_cstring on */; -var2 = file__NativeString__file_exists(var1); +short int var4 /* : Bool for extern */; +{ +var1 = string__FlatString__to_cstring(self); +} +{ +{ /* Inline file#NativeString#file_exists (var1) on */ +var4 = string_NativeString_NativeString_file_exists_0(var1); +var2 = var4; +goto RET_LABEL3; +RET_LABEL3:(void)0; +} +} var = var2; goto RET_LABEL; RET_LABEL:; @@ -813,68 +964,60 @@ var = var1; RET_LABEL:; return var; } -/* method file#String#file_stat for (self: String): FileStat */ -void* file__String__file_stat(val* self) { -void* var /* : FileStat */; -char* var1 /* : NativeString */; -void* var2 /* : FileStat */; -var1 = ((char* (*)(val*))(self->class->vft[COLOR_string__String__to_cstring]))(self) /* to_cstring on */; -var2 = file__NativeString__file_stat(var1); -var = var2; -goto RET_LABEL; -RET_LABEL:; -return var; +/* method file#String#file_copy_to for (self: String, String) */ +void file__String__file_copy_to(val* self, val* p0) { +val* var_dest /* var dest: String */; +val* var /* : IFStream */; +val* var_input /* var input: IFStream */; +val* var1 /* : OFStream */; +val* var_output /* var output: OFStream */; +short int var2 /* : Bool */; +short int var3 /* : Bool */; +long var4 /* : Int */; +val* var5 /* : String */; +val* var_buffer /* var buffer: String */; +var_dest = p0; +var = NEW_file__IFStream(&type_file__IFStream); +{ +file__IFStream__open(var, self); /* Direct call file#IFStream#open on */ +} +var_input = var; +var1 = NEW_file__OFStream(&type_file__OFStream); +{ +file__OFStream__open(var1, var_dest); /* Direct call file#OFStream#open on */ +} +var_output = var1; +for(;;) { +{ +var2 = stream__BufferedIStream__eof(var_input); } -/* method file#String#file_stat for (self: Object): FileStat */ -void* VIRTUAL_file__String__file_stat(val* self) { -void* var /* : FileStat */; -void* var1 /* : FileStat */; -var1 = file__String__file_stat(self); -var = var1; -RET_LABEL:; -return var; +var3 = !var2; +if (var3){ +var4 = 1024; +{ +var5 = stream__BufferedIStream__read(var_input, var4); } -/* method file#String#file_lstat for (self: String): FileStat */ -void* file__String__file_lstat(val* self) { -void* var /* : FileStat */; -char* var1 /* : NativeString */; -void* var2 /* : FileStat */; -var1 = ((char* (*)(val*))(self->class->vft[COLOR_string__String__to_cstring]))(self) /* to_cstring on */; -var2 = file__NativeString__file_lstat(var1); -var = var2; -goto RET_LABEL; -RET_LABEL:; -return var; +var_buffer = var5; +{ +file__OFStream__write(var_output, var_buffer); /* Direct call file#OFStream#write on */ } -/* method file#String#file_lstat for (self: Object): FileStat */ -void* VIRTUAL_file__String__file_lstat(val* self) { -void* var /* : FileStat */; -void* var1 /* : FileStat */; -var1 = file__String__file_lstat(self); -var = var1; -RET_LABEL:; -return var; +} else { +goto BREAK_label; +} +} +BREAK_label: (void)0; +{ +file__IFStream__close(var_input); /* Direct call file#IFStream#close on */ +} +{ +file__OFStream__close(var_output); /* Direct call file#OFStream#close on */ } -/* method file#String#file_delete for (self: String): Bool */ -short int file__String__file_delete(val* self) { -short int var /* : Bool */; -char* var1 /* : NativeString */; -short int var2 /* : Bool */; -var1 = ((char* (*)(val*))(self->class->vft[COLOR_string__String__to_cstring]))(self) /* to_cstring on */; -var2 = file__NativeString__file_delete(var1); -var = var2; -goto RET_LABEL; RET_LABEL:; -return var; } -/* method file#String#file_delete for (self: Object): Bool */ -short int VIRTUAL_file__String__file_delete(val* self) { -short int var /* : Bool */; -short int var1 /* : Bool */; -var1 = file__String__file_delete(self); -var = var1; +/* method file#String#file_copy_to for (self: Object, String) */ +void VIRTUAL_file__String__file_copy_to(val* self, val* p0) { +file__String__file_copy_to(self, p0); /* Direct call file#String#file_copy_to on */ RET_LABEL:; -return var; } /* method file#String#strip_extension for (self: String, String): String */ val* file__String__strip_extension(val* self, val* p0) { @@ -883,24 +1026,57 @@ val* var_ext /* var ext: String */; short int var1 /* : Bool */; long var2 /* : Int */; long var3 /* : Int */; -long var4 /* : Int */; long var5 /* : Int */; -long var7 /* : Int */; -val* var8 /* : String */; +long var6 /* : Int */; +long var8 /* : Int */; +long var9 /* : Int */; +short int var11 /* : Bool */; +int cltype; +int idtype; +const char* var_class_name; +long var12 /* : Int */; +val* var13 /* : String */; var_ext = p0; -var1 = ((short int (*)(val*, val*))(self->class->vft[COLOR_string__AbstractString__has_suffix]))(self, var_ext) /* has_suffix on */; +{ +var1 = string__Text__has_suffix(self, var_ext); +} if (var1){ var2 = 0; -var3 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on */; -var4 = ((long (*)(val*))(var_ext->class->vft[COLOR_abstract_collection__Collection__length]))(var_ext) /* length on */; -{ /* Inline kernel#Int#- (var3,var4) */ -var7 = var3 - var4; -var5 = var7; -goto RET_LABEL6; -RET_LABEL6:(void)0; +{ +{ /* Inline string#FlatText#length (self) on */ +var5 = self->attrs[COLOR_string__FlatText___length].l; /* _length on */ +var3 = var5; +RET_LABEL4:(void)0; +} +} +{ +{ /* Inline string#FlatText#length (var_ext) on */ +var8 = var_ext->attrs[COLOR_string__FlatText___length].l; /* _length on */ +var6 = var8; +RET_LABEL7:(void)0; +} +} +{ +{ /* Inline kernel#Int#- (var3,var6) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var11 = 1; /* easy isa OTHER*/ +if (unlikely(!var11)) { +var_class_name = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377); +show_backtrace(1); +} +var12 = var3 - var6; +var9 = var12; +goto RET_LABEL10; +RET_LABEL10:(void)0; } -var8 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_string__AbstractString__substring]))(self, var2, var5) /* substring on */; -var = var8; +} +{ +var13 = string__FlatString__substring(self, var2, var9); +} +var = var13; goto RET_LABEL; } else { } @@ -922,71 +1098,291 @@ return var; val* file__String__basename(val* self, val* p0) { val* var /* : String */; val* var_ext /* var ext: String */; -char var1 /* : Char */; -long var2 /* : Int */; +long var1 /* : Int */; long var3 /* : Int */; long var4 /* : Int */; -long var6 /* : Int */; -long var7 /* : Int */; -val* var8 /* : nullable Object */; -long var_pos /* var pos: Int */; -val* var_n /* var n: String */; -long var9 /* : Int */; -short int var10 /* : Bool */; -short int var12 /* : Bool */; +long var5 /* : Int */; +short int var7 /* : Bool */; int cltype; int idtype; const char* var_class_name; +long var8 /* : Int */; +long var_l /* var l: Int */; +short int var9 /* : Bool */; +long var10 /* : Int */; +short int var11 /* : Bool */; short int var13 /* : Bool */; -long var14 /* : Int */; -long var15 /* : Int */; -long var17 /* : Int */; -val* var18 /* : String */; -val* var19 /* : String */; +int cltype14; +int idtype15; +const char* var_class_name16; +short int var17 /* : Bool */; +short int var_ /* var : Bool */; +val* var18 /* : SequenceRead[Char] */; +val* var20 /* : SequenceRead[Char] */; +val* var21 /* : nullable Object */; +char var22 /* : Char */; +short int var23 /* : Bool */; +short int var24 /* : Bool */; +short int var26 /* : Bool */; +char var27 /* : Char */; +long var28 /* : Int */; +long var29 /* : Int */; +short int var31 /* : Bool */; +int cltype32; +int idtype33; +const char* var_class_name34; +long var35 /* : Int */; +long var36 /* : Int */; +short int var37 /* : Bool */; +short int var38 /* : Bool */; +short int var40 /* : Bool */; +static val* varonce; +val* var41 /* : String */; +char* var42 /* : NativeString */; +long var43 /* : Int */; +val* var44 /* : FlatString */; +val* var45 /* : SequenceRead[Char] */; +val* var47 /* : SequenceRead[Char] */; +char var48 /* : Char */; +long var49 /* : Int */; +val* var50 /* : nullable Object */; +long var_pos /* var pos: Int */; +val* var_n /* var n: String */; +long var51 /* : Int */; +short int var52 /* : Bool */; +short int var54 /* : Bool */; +int cltype55; +int idtype56; +const char* var_class_name57; +short int var58 /* : Bool */; +long var59 /* : Int */; +long var60 /* : Int */; +short int var62 /* : Bool */; +int cltype63; +int idtype64; +const char* var_class_name65; +long var66 /* : Int */; +long var67 /* : Int */; +short int var69 /* : Bool */; +int cltype70; +int idtype71; +const char* var_class_name72; +long var73 /* : Int */; +val* var74 /* : String */; +val* var75 /* : String */; var_ext = p0; -var1 = '/'; -var2 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on */ -var3 = 1; -{ /* Inline kernel#Int#- (var2,var3) */ -var6 = var2 - var3; -var4 = var6; -goto RET_LABEL5; -RET_LABEL5:(void)0; +{ +{ /* Inline string#FlatText#length (self) on */ +var3 = self->attrs[COLOR_string__FlatText___length].l; /* _length on */ +var1 = var3; +RET_LABEL2:(void)0; } -var8 = BOX_kernel__Char(var1); /* autobox from Char to nullable Object */ -var7 = ((long (*)(val*, val*, long))(self->class->vft[COLOR_array__AbstractArrayRead__last_index_of_from]))(self, var8, var4) /* last_index_of_from on */; -var_pos = var7; -var_n = self; -var9 = 0; -{ /* Inline kernel#Int#>= (var_pos,var9) */ -/* Covariant cast for argument 0 (i) isa OTHER */ -/* isa OTHER */ -var12 = 1; /* easy isa OTHER*/ -if (!var12) { +} +var4 = 1; +{ +{ /* Inline kernel#Int#- (var1,var4) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var7 = 1; /* easy isa OTHER*/ +if (unlikely(!var7)) { var_class_name = type_kernel__Int.name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name); -fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377); show_backtrace(1); } -var13 = var_pos >= var9; -var10 = var13; -goto RET_LABEL11; -RET_LABEL11:(void)0; +var8 = var1 - var4; +var5 = var8; +goto RET_LABEL6; +RET_LABEL6:(void)0; } -if (var10){ -var14 = 1; -{ /* Inline kernel#Int#+ (var_pos,var14) */ -var17 = var_pos + var14; -var15 = var17; -goto RET_LABEL16; -RET_LABEL16:(void)0; } -var18 = ((val* (*)(val*, long))(self->class->vft[COLOR_string__AbstractString__substring_from]))(self, var15) /* substring_from on */; -var_n = var18; +var_l = var5; +for(;;) { +var10 = 0; +{ +{ /* Inline kernel#Int#> (var_l,var10) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var13 = 1; /* easy isa OTHER*/ +if (unlikely(!var13)) { +var_class_name16 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name16); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373); +show_backtrace(1); +} +var17 = var_l > var10; +var11 = var17; +goto RET_LABEL12; +RET_LABEL12:(void)0; +} +} +var_ = var11; +if (var11){ +{ +{ /* Inline string#FlatString#chars (self) on */ +var20 = self->attrs[COLOR_string__FlatString___chars].val; /* _chars on */ +if (unlikely(var20 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _chars"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/string.nit", 939); +show_backtrace(1); +} +var18 = var20; +RET_LABEL19:(void)0; +} +} +{ +var21 = ((val* (*)(val*, long))(var18->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var18, var_l) /* [] on */; +} +var22 = '/'; +{ +{ /* Inline kernel#Char#== (var21,var22) on */ +var26 = (var21 != NULL) && (var21->class == &class_kernel__Char); +if (var26) { +var27 = ((struct instance_kernel__Char*)var21)->value; /* autounbox from nullable Object to Char */; +var26 = (var27 == var22); +} +var24 = var26; +goto RET_LABEL25; +RET_LABEL25:(void)0; +} +var23 = var24; +} +var9 = var23; +} else { +var9 = var_; +} +if (var9){ +var28 = 1; +{ +{ /* Inline kernel#Int#- (var_l,var28) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var31 = 1; /* easy isa OTHER*/ +if (unlikely(!var31)) { +var_class_name34 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name34); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377); +show_backtrace(1); +} +var35 = var_l - var28; +var29 = var35; +goto RET_LABEL30; +RET_LABEL30:(void)0; +} +} +var_l = var29; +} else { +goto BREAK_label; +} +} +BREAK_label: (void)0; +var36 = 0; +{ +{ /* Inline kernel#Int#== (var_l,var36) on */ +var40 = var_l == var36; +var38 = var40; +goto RET_LABEL39; +RET_LABEL39:(void)0; +} +var37 = var38; +} +if (var37){ +if (varonce) { +var41 = varonce; +} else { +var42 = "/"; +var43 = 1; +var44 = string__NativeString__to_s_with_length(var42, var43); +var41 = var44; +varonce = var41; +} +var = var41; +goto RET_LABEL; +} else { +} +{ +{ /* Inline string#FlatString#chars (self) on */ +var47 = self->attrs[COLOR_string__FlatString___chars].val; /* _chars on */ +if (unlikely(var47 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _chars"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/string.nit", 939); +show_backtrace(1); +} +var45 = var47; +RET_LABEL46:(void)0; +} +} +var48 = '/'; +{ +var50 = BOX_kernel__Char(var48); /* autobox from Char to nullable Object */ +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 */; +} +var_pos = var49; +var_n = self; +var51 = 0; +{ +{ /* Inline kernel#Int#>= (var_pos,var51) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var54 = 1; /* easy isa OTHER*/ +if (unlikely(!var54)) { +var_class_name57 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name57); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 372); +show_backtrace(1); +} +var58 = var_pos >= var51; +var52 = var58; +goto RET_LABEL53; +RET_LABEL53:(void)0; +} +} +if (var52){ +var59 = 1; +{ +{ /* Inline kernel#Int#+ (var_pos,var59) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var62 = 1; /* easy isa OTHER*/ +if (unlikely(!var62)) { +var_class_name65 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name65); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374); +show_backtrace(1); +} +var66 = var_pos + var59; +var60 = var66; +goto RET_LABEL61; +RET_LABEL61:(void)0; +} +} +{ +{ /* Inline kernel#Int#- (var_l,var_pos) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var69 = 1; /* easy isa OTHER*/ +if (unlikely(!var69)) { +var_class_name72 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name72); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377); +show_backtrace(1); +} +var73 = var_l - var_pos; +var67 = var73; +goto RET_LABEL68; +RET_LABEL68:(void)0; +} +} +{ +var74 = string__FlatString__substring(self, var60, var67); +} +var_n = var74; } else { } -var19 = ((val* (*)(val*, val*))(var_n->class->vft[COLOR_file__String__strip_extension]))(var_n, var_ext) /* strip_extension on */; -var = var19; +{ +var75 = file__String__strip_extension(var_n, var_ext); +} +var = var75; goto RET_LABEL; RET_LABEL:; return var; @@ -1004,163 +1400,250 @@ return var; val* file__String__dirname(val* self) { val* var /* : String */; long var1 /* : Int */; -long var2 /* : Int */; long var3 /* : Int */; +long var4 /* : Int */; long var5 /* : Int */; -long var_l /* var l: Int */; -short int var6 /* : Bool */; -long var7 /* : Int */; -short int var8 /* : Bool */; -short int var10 /* : Bool */; +short int var7 /* : Bool */; int cltype; int idtype; const char* var_class_name; +long var8 /* : Int */; +long var_l /* var l: Int */; +short int var9 /* : Bool */; +long var10 /* : Int */; short int var11 /* : Bool */; +short int var13 /* : Bool */; +int cltype14; +int idtype15; +const char* var_class_name16; +short int var17 /* : Bool */; short int var_ /* var : Bool */; -val* var12 /* : nullable Object */; -char var13 /* : Char */; -short int var14 /* : Bool */; -short int var16 /* : Bool */; -char var17 /* : Char */; -long var18 /* : Int */; -long var19 /* : Int */; -long var21 /* : Int */; +val* var18 /* : SequenceRead[Char] */; +val* var20 /* : SequenceRead[Char] */; +val* var21 /* : nullable Object */; char var22 /* : Char */; -long var23 /* : Int */; -val* var24 /* : nullable Object */; -long var_pos /* var pos: Int */; -long var25 /* : Int */; +short int var23 /* : Bool */; +short int var24 /* : Bool */; short int var26 /* : Bool */; -short int var28 /* : Bool */; -int cltype29; -int idtype30; -const char* var_class_name31; -short int var32 /* : Bool */; -long var33 /* : Int */; -val* var34 /* : String */; +char var27 /* : Char */; +long var28 /* : Int */; +long var29 /* : Int */; +short int var31 /* : Bool */; +int cltype32; +int idtype33; +const char* var_class_name34; long var35 /* : Int */; -short int var36 /* : Bool */; -short int var38 /* : Bool */; +val* var36 /* : SequenceRead[Char] */; +val* var38 /* : SequenceRead[Char] */; +char var39 /* : Char */; +long var40 /* : Int */; +val* var41 /* : nullable Object */; +long var_pos /* var pos: Int */; +long var42 /* : Int */; +short int var43 /* : Bool */; +short int var45 /* : Bool */; +int cltype46; +int idtype47; +const char* var_class_name48; +short int var49 /* : Bool */; +long var50 /* : Int */; +val* var51 /* : String */; +long var52 /* : Int */; +short int var53 /* : Bool */; +short int var54 /* : Bool */; +short int var56 /* : Bool */; static val* varonce; -val* var39 /* : String */; -char* var40 /* : NativeString */; -long var41 /* : Int */; -val* var42 /* : String */; -static val* varonce43; -val* var44 /* : String */; -char* var45 /* : NativeString */; -long var46 /* : Int */; -val* var47 /* : String */; -var1 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on */ -var2 = 1; -{ /* Inline kernel#Int#- (var1,var2) */ -var5 = var1 - var2; -var3 = var5; -goto RET_LABEL4; -RET_LABEL4:(void)0; -} -var_l = var3; -var7 = 0; -{ /* Inline kernel#Int#> (var_l,var7) */ -/* Covariant cast for argument 0 (i) isa OTHER */ -/* isa OTHER */ -var10 = 1; /* easy isa OTHER*/ -if (!var10) { +val* var57 /* : String */; +char* var58 /* : NativeString */; +long var59 /* : Int */; +val* var60 /* : FlatString */; +static val* varonce61; +val* var62 /* : String */; +char* var63 /* : NativeString */; +long var64 /* : Int */; +val* var65 /* : FlatString */; +{ +{ /* Inline string#FlatText#length (self) on */ +var3 = self->attrs[COLOR_string__FlatText___length].l; /* _length on */ +var1 = var3; +RET_LABEL2:(void)0; +} +} +var4 = 1; +{ +{ /* Inline kernel#Int#- (var1,var4) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var7 = 1; /* easy isa OTHER*/ +if (unlikely(!var7)) { var_class_name = type_kernel__Int.name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name); -fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377); show_backtrace(1); } -var11 = var_l > var7; -var8 = var11; -goto RET_LABEL9; -RET_LABEL9:(void)0; +var8 = var1 - var4; +var5 = var8; +goto RET_LABEL6; +RET_LABEL6:(void)0; } -var_ = var8; -if (var8){ -var12 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_l) /* [] on */; -var13 = '/'; -{ /* Inline kernel#Char#== (var12,var13) */ -var16 = (var12 != NULL) && (var12->class == &class_kernel__Char); -if (var16) { -var17 = ((struct instance_kernel__Char*)var12)->value; /* autounbox from nullable Object to Char */; -var16 = (var17 == var13); -} -var14 = var16; -goto RET_LABEL15; -RET_LABEL15:(void)0; } -var6 = var14; -} else { -var6 = var_; +var_l = var5; +for(;;) { +var10 = 0; +{ +{ /* Inline kernel#Int#> (var_l,var10) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var13 = 1; /* easy isa OTHER*/ +if (unlikely(!var13)) { +var_class_name16 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name16); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373); +show_backtrace(1); } -if (var6){ -var18 = 1; -{ /* Inline kernel#Int#- (var_l,var18) */ -var21 = var_l - var18; -var19 = var21; -goto RET_LABEL20; -RET_LABEL20:(void)0; +var17 = var_l > var10; +var11 = var17; +goto RET_LABEL12; +RET_LABEL12:(void)0; } -var_l = var19; -} else { +} +var_ = var11; +if (var11){ +{ +{ /* Inline string#FlatString#chars (self) on */ +var20 = self->attrs[COLOR_string__FlatString___chars].val; /* _chars on */ +if (unlikely(var20 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _chars"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/string.nit", 939); +show_backtrace(1); +} +var18 = var20; +RET_LABEL19:(void)0; +} +} +{ +var21 = ((val* (*)(val*, long))(var18->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var18, var_l) /* [] on */; } var22 = '/'; -var24 = BOX_kernel__Char(var22); /* autobox from Char to nullable Object */ -var23 = ((long (*)(val*, val*, long))(self->class->vft[COLOR_array__AbstractArrayRead__last_index_of_from]))(self, var24, var_l) /* last_index_of_from on */; -var_pos = var23; -var25 = 0; -{ /* Inline kernel#Int#> (var_pos,var25) */ -/* Covariant cast for argument 0 (i) isa OTHER */ -/* isa OTHER */ -var28 = 1; /* easy isa OTHER*/ -if (!var28) { -var_class_name31 = type_kernel__Int.name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name31); -fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263); +{ +{ /* Inline kernel#Char#== (var21,var22) on */ +var26 = (var21 != NULL) && (var21->class == &class_kernel__Char); +if (var26) { +var27 = ((struct instance_kernel__Char*)var21)->value; /* autounbox from nullable Object to Char */; +var26 = (var27 == var22); +} +var24 = var26; +goto RET_LABEL25; +RET_LABEL25:(void)0; +} +var23 = var24; +} +var9 = var23; +} else { +var9 = var_; +} +if (var9){ +var28 = 1; +{ +{ /* Inline kernel#Int#- (var_l,var28) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var31 = 1; /* easy isa OTHER*/ +if (unlikely(!var31)) { +var_class_name34 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name34); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377); show_backtrace(1); } -var32 = var_pos > var25; -var26 = var32; -goto RET_LABEL27; -RET_LABEL27:(void)0; +var35 = var_l - var28; +var29 = var35; +goto RET_LABEL30; +RET_LABEL30:(void)0; } -if (var26){ -var33 = 0; -var34 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_string__AbstractString__substring]))(self, var33, var_pos) /* substring on */; -var = var34; -goto RET_LABEL; +} +var_l = var29; } else { -var35 = 0; -{ /* Inline kernel#Int#== (var_pos,var35) */ -var38 = var_pos == var35; +goto BREAK_label; +} +} +BREAK_label: (void)0; +{ +{ /* Inline string#FlatString#chars (self) on */ +var38 = self->attrs[COLOR_string__FlatString___chars].val; /* _chars on */ +if (unlikely(var38 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _chars"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/string.nit", 939); +show_backtrace(1); +} var36 = var38; -goto RET_LABEL37; RET_LABEL37:(void)0; } -if (var36){ +} +var39 = '/'; +{ +var41 = BOX_kernel__Char(var39); /* autobox from Char to nullable Object */ +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 */; +} +var_pos = var40; +var42 = 0; +{ +{ /* Inline kernel#Int#> (var_pos,var42) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var45 = 1; /* easy isa OTHER*/ +if (unlikely(!var45)) { +var_class_name48 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name48); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373); +show_backtrace(1); +} +var49 = var_pos > var42; +var43 = var49; +goto RET_LABEL44; +RET_LABEL44:(void)0; +} +} +if (var43){ +var50 = 0; +{ +var51 = string__FlatString__substring(self, var50, var_pos); +} +var = var51; +goto RET_LABEL; +} else { +var52 = 0; +{ +{ /* Inline kernel#Int#== (var_pos,var52) on */ +var56 = var_pos == var52; +var54 = var56; +goto RET_LABEL55; +RET_LABEL55:(void)0; +} +var53 = var54; +} +if (var53){ if (varonce) { -var39 = varonce; +var57 = varonce; } else { -var40 = "/"; -var41 = 1; -var42 = string__NativeString__to_s_with_length(var40, var41); -var39 = var42; -varonce = var39; +var58 = "/"; +var59 = 1; +var60 = string__NativeString__to_s_with_length(var58, var59); +var57 = var60; +varonce = var57; } -var = var39; +var = var57; goto RET_LABEL; } else { -if (varonce43) { -var44 = varonce43; +if (varonce61) { +var62 = varonce61; } else { -var45 = "."; -var46 = 1; -var47 = string__NativeString__to_s_with_length(var45, var46); -var44 = var47; -varonce43 = var44; +var63 = "."; +var64 = 1; +var65 = string__NativeString__to_s_with_length(var63, var64); +var62 = var65; +varonce61 = var62; } -var = var44; +var = var62; goto RET_LABEL; } } @@ -1181,14 +1664,26 @@ val* file__String__realpath(val* self) { val* var /* : String */; char* var1 /* : NativeString */; char* var2 /* : NativeString */; +void* var4 /* : NativeString for extern */; char* var_cs /* var cs: NativeString */; -val* var3 /* : String */; -val* var_res /* var res: String */; -var1 = ((char* (*)(val*))(self->class->vft[COLOR_string__String__to_cstring]))(self) /* to_cstring on */; -var2 = file__NativeString__file_realpath(var1); +val* var5 /* : FlatString */; +val* var_res /* var res: FlatString */; +{ +var1 = string__FlatString__to_cstring(self); +} +{ +{ /* Inline file#NativeString#file_realpath (var1) on */ +var4 = file_NativeString_realpath(var1); +var2 = var4; +goto RET_LABEL3; +RET_LABEL3:(void)0; +} +} var_cs = var2; -var3 = string__NativeString__to_s_with_copy(var_cs); -var_res = var3; +{ +var5 = string__NativeString__to_s_with_copy(var_cs); +} +var_res = var5; var = var_res; goto RET_LABEL; RET_LABEL:; @@ -1210,63 +1705,94 @@ static val* varonce; val* var1 /* : String */; char* var2 /* : NativeString */; long var3 /* : Int */; -val* var4 /* : String */; -val* var5 /* : Array[String] */; +val* var4 /* : FlatString */; +val* var5 /* : Array[Text] */; val* var_a /* var a: Array[String] */; val* var6 /* : Array[String] */; val* var_a2 /* var a2: Array[String] */; -val* var7 /* : Iterator[nullable Object] */; -short int var8 /* : Bool */; -val* var9 /* : nullable Object */; +val* var_ /* var : Array[String] */; +val* var7 /* : ArrayIterator[nullable Object] */; +val* var_8 /* var : ArrayIterator[String] */; +short int var9 /* : Bool */; +val* var10 /* : nullable Object */; val* var_x /* var x: String */; -static val* varonce10; -val* var11 /* : String */; -char* var12 /* : NativeString */; -long var13 /* : Int */; -val* var14 /* : String */; -short int var15 /* : Bool */; +static val* varonce11; +val* var12 /* : String */; +char* var13 /* : NativeString */; +long var14 /* : Int */; +val* var15 /* : FlatString */; short int var16 /* : Bool */; -static val* varonce17; -val* var18 /* : String */; -char* var19 /* : NativeString */; -long var20 /* : Int */; -val* var21 /* : String */; -short int var22 /* : Bool */; -short int var_ /* var : Bool */; -short int var23 /* : Bool */; +short int var17 /* : Bool */; +short int var18 /* : Bool */; +static val* varonce19; +val* var20 /* : String */; +char* var21 /* : NativeString */; +long var22 /* : Int */; +val* var23 /* : FlatString */; short int var24 /* : Bool */; short int var25 /* : Bool */; -short int var26 /* : Bool */; -static val* varonce27; -val* var28 /* : String */; -char* var29 /* : NativeString */; -long var30 /* : Int */; -val* var31 /* : String */; -short int var32 /* : Bool */; -short int var_33 /* var : Bool */; -short int var34 /* : Bool */; -short int var35 /* : Bool */; -short int var_36 /* var : Bool */; -val* var37 /* : nullable Object */; -static val* varonce38; -val* var39 /* : String */; -char* var40 /* : NativeString */; -long var41 /* : Int */; -val* var42 /* : String */; -short int var43 /* : Bool */; -val* var44 /* : nullable Object */; -short int var45 /* : Bool */; -static val* varonce46; -val* var47 /* : String */; -char* var48 /* : NativeString */; -long var49 /* : Int */; -val* var50 /* : String */; -static val* varonce51; -val* var52 /* : String */; -char* var53 /* : NativeString */; -long var54 /* : Int */; -val* var55 /* : String */; -val* var56 /* : String */; +short int var_26 /* var : Bool */; +short int var27 /* : Bool */; +short int var28 /* : Bool */; +short int var29 /* : Bool */; +short int var30 /* : Bool */; +static val* varonce31; +val* var32 /* : String */; +char* var33 /* : NativeString */; +long var34 /* : Int */; +val* var35 /* : FlatString */; +short int var36 /* : Bool */; +short int var37 /* : Bool */; +short int var_38 /* var : Bool */; +short int var39 /* : Bool */; +short int var40 /* : Bool */; +short int var_41 /* var : Bool */; +val* var42 /* : nullable Object */; +static val* varonce43; +val* var44 /* : String */; +char* var45 /* : NativeString */; +long var46 /* : Int */; +val* var47 /* : FlatString */; +short int var48 /* : Bool */; +short int var49 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var51 /* : Bool */; +short int var52 /* : Bool */; +short int var53 /* : Bool */; +val* var54 /* : nullable Object */; +short int var57 /* : Bool */; +static val* varonce58; +val* var59 /* : String */; +char* var60 /* : NativeString */; +long var61 /* : Int */; +val* var62 /* : FlatString */; +short int var63 /* : Bool */; +long var64 /* : Int */; +long var66 /* : Int */; +long var67 /* : Int */; +short int var68 /* : Bool */; +short int var69 /* : Bool */; +short int var71 /* : Bool */; +short int var_72 /* var : Bool */; +val* var73 /* : nullable Object */; +static val* varonce74; +val* var75 /* : String */; +char* var76 /* : NativeString */; +long var77 /* : Int */; +val* var78 /* : FlatString */; +short int var79 /* : Bool */; +short int var80 /* : Bool */; +static val* varonce81; +val* var82 /* : String */; +char* var83 /* : NativeString */; +long var84 /* : Int */; +val* var85 /* : FlatString */; +static val* varonce86; +val* var87 /* : String */; +char* var88 /* : NativeString */; +long var89 /* : Int */; +val* var90 /* : FlatString */; +val* var91 /* : String */; if (varonce) { var1 = varonce; } else { @@ -1276,125 +1802,235 @@ var4 = string__NativeString__to_s_with_length(var2, var3); var1 = var4; varonce = var1; } -var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_string_search__String__split_with]))(self, var1) /* split_with on */; +{ +var5 = string_search__Text__split_with(self, var1); +} var_a = var5; var6 = NEW_array__Array(&type_array__Arraystring__String); -((void (*)(val*))(var6->class->vft[COLOR_array__Array__init]))(var6) /* init on */; +{ +((void (*)(val*))(var6->class->vft[COLOR_kernel__Object__init]))(var6) /* init on */; +} var_a2 = var6; -var7 = ((val* (*)(val*))(var_a->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_a) /* iterator on */; +var_ = var_a; +{ +var7 = array__AbstractArrayRead__iterator(var_); +} +var_8 = var7; for(;;) { -var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on */; -if(!var8) break; -var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on */; -var_x = var9; -if (varonce10) { -var11 = varonce10; -} else { -var12 = "."; -var13 = 1; -var14 = string__NativeString__to_s_with_length(var12, var13); -var11 = var14; -varonce10 = var11; +{ +var9 = array__ArrayIterator__is_ok(var_8); } -var15 = ((short int (*)(val*, val*))(var_x->class->vft[COLOR_kernel__Object___61d_61d]))(var_x, var11) /* == on */; -if (var15){ -goto CONTINUE_label; -} else { +if (var9){ +{ +var10 = array__ArrayIterator__item(var_8); } -if (varonce17) { -var18 = varonce17; +var_x = var10; +if (varonce11) { +var12 = varonce11; } else { -var19 = ""; -var20 = 0; -var21 = string__NativeString__to_s_with_length(var19, var20); -var18 = var21; -varonce17 = var18; +var13 = "."; +var14 = 1; +var15 = string__NativeString__to_s_with_length(var13, var14); +var12 = var15; +varonce11 = var12; } -var22 = ((short int (*)(val*, val*))(var_x->class->vft[COLOR_kernel__Object___61d_61d]))(var_x, var18) /* == on */; -var_ = var22; -if (var22){ -var23 = ((short int (*)(val*))(var_a2->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_a2) /* is_empty on */; -var24 = !var23; -var16 = var24; -} else { -var16 = var_; +{ +var17 = string__FlatString___61d_61d(var_x, var12); +var16 = var17; } if (var16){ -goto CONTINUE_label; +goto BREAK_label; } else { } -if (varonce27) { -var28 = varonce27; +if (varonce19) { +var20 = varonce19; } else { -var29 = ".."; -var30 = 2; -var31 = string__NativeString__to_s_with_length(var29, var30); -var28 = var31; -varonce27 = var28; -} -var32 = ((short int (*)(val*, val*))(var_x->class->vft[COLOR_kernel__Object___61d_61d]))(var_x, var28) /* == on */; -var_33 = var32; -if (var32){ -var34 = ((short int (*)(val*))(var_a2->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_a2) /* is_empty on */; -var35 = !var34; -var26 = var35; +var21 = ""; +var22 = 0; +var23 = string__NativeString__to_s_with_length(var21, var22); +var20 = var23; +varonce19 = var20; +} +{ +var25 = string__FlatString___61d_61d(var_x, var20); +var24 = var25; +} +var_26 = var24; +if (var24){ +{ +var27 = array__AbstractArrayRead__is_empty(var_a2); +} +var28 = !var27; +var18 = var28; } else { -var26 = var_33; +var18 = var_26; } -var_36 = var26; -if (var26){ -var37 = ((val* (*)(val*))(var_a2->class->vft[COLOR_abstract_collection__SequenceRead__last]))(var_a2) /* last on */; -if (varonce38) { -var39 = varonce38; +if (var18){ +goto BREAK_label; } else { -var40 = ".."; -var41 = 2; -var42 = string__NativeString__to_s_with_length(var40, var41); -var39 = var42; -varonce38 = var39; } -var43 = ((short int (*)(val*, val*))(var37->class->vft[COLOR_kernel__Object___33d_61d]))(var37, var39) /* != on */; -var25 = var43; +if (varonce31) { +var32 = varonce31; } else { -var25 = var_36; +var33 = ".."; +var34 = 2; +var35 = string__NativeString__to_s_with_length(var33, var34); +var32 = var35; +varonce31 = var32; } -if (var25){ -var44 = ((val* (*)(val*))(var_a2->class->vft[COLOR_abstract_collection__Sequence__pop]))(var_a2) /* pop on */; -var44; -goto CONTINUE_label; -} else { +{ +var37 = string__FlatString___61d_61d(var_x, var32); +var36 = var37; } -((void (*)(val*, val*))(var_a2->class->vft[COLOR_abstract_collection__Sequence__push]))(var_a2, var_x) /* push on */; -CONTINUE_label: (void)0; -((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on */; +var_38 = var36; +if (var36){ +{ +var39 = array__AbstractArrayRead__is_empty(var_a2); } -BREAK_label: (void)0; -var45 = ((short int (*)(val*))(var_a2->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_a2) /* is_empty on */; -if (var45){ -if (varonce46) { -var47 = varonce46; -} else { -var48 = "."; -var49 = 1; -var50 = string__NativeString__to_s_with_length(var48, var49); -var47 = var50; -varonce46 = var47; -} -var = var47; -goto RET_LABEL; +var40 = !var39; +var30 = var40; } else { +var30 = var_38; } -if (varonce51) { -var52 = varonce51; +var_41 = var30; +if (var30){ +{ +var42 = abstract_collection__SequenceRead__last(var_a2); +} +if (varonce43) { +var44 = varonce43; +} else { +var45 = ".."; +var46 = 2; +var47 = string__NativeString__to_s_with_length(var45, var46); +var44 = var47; +varonce43 = var44; +} +{ +{ /* Inline kernel#Object#!= (var42,var44) on */ +var_other = var44; +{ +var52 = ((short int (*)(val*, val*))(var42->class->vft[COLOR_kernel__Object___61d_61d]))(var42, var_other) /* == on */; +var51 = var52; +} +var53 = !var51; +var49 = var53; +goto RET_LABEL50; +RET_LABEL50:(void)0; +} +var48 = var49; +} +var29 = var48; +} else { +var29 = var_41; +} +if (var29){ +{ +var54 = array__AbstractArray__pop(var_a2); +} +goto BREAK_label; } else { -var53 = "/"; -var54 = 1; -var55 = string__NativeString__to_s_with_length(var53, var54); -var52 = var55; -varonce51 = var52; } -var56 = ((val* (*)(val*, val*))(var_a2->class->vft[COLOR_string__Collection__join]))(var_a2, var52) /* join on */; -var = var56; +{ +array__AbstractArray__push(var_a2, var_x); /* Direct call array#AbstractArray#push on */ +} +BREAK_label: (void)0; +{ +array__ArrayIterator__next(var_8); /* Direct call array#ArrayIterator#next on */ +} +} else { +goto BREAK_label55; +} +} +BREAK_label55: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_8) on */ +RET_LABEL56:(void)0; +} +} +{ +var57 = array__AbstractArrayRead__is_empty(var_a2); +} +if (var57){ +if (varonce58) { +var59 = varonce58; +} else { +var60 = "."; +var61 = 1; +var62 = string__NativeString__to_s_with_length(var60, var61); +var59 = var62; +varonce58 = var59; +} +var = var59; +goto RET_LABEL; +} else { +} +{ +{ /* Inline array#AbstractArrayRead#length (var_a2) on */ +var66 = var_a2->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on */ +var64 = var66; +RET_LABEL65:(void)0; +} +} +var67 = 1; +{ +{ /* Inline kernel#Int#== (var64,var67) on */ +var71 = var64 == var67; +var69 = var71; +goto RET_LABEL70; +RET_LABEL70:(void)0; +} +var68 = var69; +} +var_72 = var68; +if (var68){ +{ +var73 = abstract_collection__SequenceRead__first(var_a2); +} +if (varonce74) { +var75 = varonce74; +} else { +var76 = ""; +var77 = 0; +var78 = string__NativeString__to_s_with_length(var76, var77); +var75 = var78; +varonce74 = var75; +} +{ +var80 = string__FlatString___61d_61d(var73, var75); +var79 = var80; +} +var63 = var79; +} else { +var63 = var_72; +} +if (var63){ +if (varonce81) { +var82 = varonce81; +} else { +var83 = "/"; +var84 = 1; +var85 = string__NativeString__to_s_with_length(var83, var84); +var82 = var85; +varonce81 = var82; +} +var = var82; +goto RET_LABEL; +} else { +} +if (varonce86) { +var87 = varonce86; +} else { +var88 = "/"; +var89 = 1; +var90 = string__NativeString__to_s_with_length(var88, var89); +var87 = var90; +varonce86 = var87; +} +{ +var91 = string__Collection__join(var_a2, var87); +} +var = var91; goto RET_LABEL; RET_LABEL:; return var; @@ -1414,100 +2050,140 @@ val* var /* : String */; val* var_path /* var path: String */; short int var1 /* : Bool */; short int var2 /* : Bool */; -long var3 /* : Int */; -val* var4 /* : nullable Object */; -char var5 /* : Char */; -short int var6 /* : Bool */; -short int var8 /* : Bool */; -char var9 /* : Char */; -val* var10 /* : Array[Object] */; -long var11 /* : Int */; -val* var_ /* var : Array[Object] */; +val* var3 /* : SequenceRead[Char] */; +val* var5 /* : SequenceRead[Char] */; +long var6 /* : Int */; +val* var7 /* : nullable Object */; +char var8 /* : Char */; +short int var9 /* : Bool */; +short int var10 /* : Bool */; +short int var12 /* : Bool */; +char var13 /* : Char */; +char var14 /* : Char */; +char var15 /* : Char */; +short int var16 /* : Bool */; +short int var17 /* : Bool */; +short int var19 /* : Bool */; +val* var20 /* : Array[Object] */; +long var21 /* : Int */; +val* var22 /* : NativeArray[Object] */; +val* var23 /* : String */; static val* varonce; -val* var12 /* : String */; -char* var13 /* : NativeString */; -long var14 /* : Int */; -val* var15 /* : String */; -static val* varonce16; -val* var17 /* : String */; -char* var18 /* : NativeString */; -long var19 /* : Int */; -val* var20 /* : String */; -static val* varonce21; -val* var22 /* : String */; -char* var23 /* : NativeString */; -long var24 /* : Int */; -val* var25 /* : String */; -val* var26 /* : String */; +val* var24 /* : String */; +char* var25 /* : NativeString */; +long var26 /* : Int */; +val* var27 /* : FlatString */; +val* var28 /* : Array[Object] */; +long var29 /* : Int */; +val* var30 /* : NativeArray[Object] */; +val* var31 /* : String */; var_path = p0; -var1 = ((short int (*)(val*))(var_path->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_path) /* is_empty on */; +{ +var1 = string__Text__is_empty(var_path); +} if (var1){ var = self; goto RET_LABEL; } else { } -var2 = ((short int (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__is_empty]))(self) /* is_empty on */; +{ +var2 = string__Text__is_empty(self); +} if (var2){ var = var_path; goto RET_LABEL; } else { } -var3 = 0; -var4 = ((val* (*)(val*, long))(var_path->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_path, var3) /* [] on */; -var5 = '/'; -{ /* Inline kernel#Char#== (var4,var5) */ -var8 = (var4 != NULL) && (var4->class == &class_kernel__Char); -if (var8) { -var9 = ((struct instance_kernel__Char*)var4)->value; /* autounbox from nullable Object to Char */; -var8 = (var9 == var5); +{ +{ /* Inline string#FlatString#chars (var_path) on */ +var5 = var_path->attrs[COLOR_string__FlatString___chars].val; /* _chars on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _chars"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/string.nit", 939); +show_backtrace(1); } -var6 = var8; -goto RET_LABEL7; -RET_LABEL7:(void)0; +var3 = var5; +RET_LABEL4:(void)0; } -if (var6){ +} +var6 = 0; +{ +var7 = ((val* (*)(val*, long))(var3->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var3, var6) /* [] on */; +} +var8 = '/'; +{ +{ /* Inline kernel#Char#== (var7,var8) on */ +var12 = (var7 != NULL) && (var7->class == &class_kernel__Char); +if (var12) { +var13 = ((struct instance_kernel__Char*)var7)->value; /* autounbox from nullable Object to Char */; +var12 = (var13 == var8); +} +var10 = var12; +goto RET_LABEL11; +RET_LABEL11:(void)0; +} +var9 = var10; +} +if (var9){ var = var_path; goto RET_LABEL; } else { } -var10 = NEW_array__Array(&type_array__Arraykernel__Object); -var11 = 5; -((void (*)(val*, long))(var10->class->vft[COLOR_array__Array__with_capacity]))(var10, var11) /* with_capacity on */; -var_ = var10; +{ +var14 = string__Text__last(self); +} +var15 = '/'; +{ +{ /* Inline kernel#Char#== (var14,var15) on */ +var19 = var14 == var15; +var17 = var19; +goto RET_LABEL18; +RET_LABEL18:(void)0; +} +var16 = var17; +} +if (var16){ +var20 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var20 = array_instance Array[Object] */ +var21 = 2; +var22 = NEW_array__NativeArray(var21, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var22)->values[0] = (val*) self; +((struct instance_array__NativeArray*)var22)->values[1] = (val*) var_path; +{ +((void (*)(val*, val*, long))(var20->class->vft[COLOR_array__Array__with_native]))(var20, var22, var21) /* with_native on */; +} +} +{ +var23 = ((val* (*)(val*))(var20->class->vft[COLOR_string__Object__to_s]))(var20) /* to_s on */; +} +var = var23; +goto RET_LABEL; +} else { +} if (varonce) { -var12 = varonce; +var24 = varonce; } else { -var13 = ""; -var14 = 0; -var15 = string__NativeString__to_s_with_length(var13, var14); -var12 = var15; -varonce = var12; -} -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var12) /* add on */; -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, self) /* add on */; -if (varonce16) { -var17 = varonce16; -} else { -var18 = "/"; -var19 = 1; -var20 = string__NativeString__to_s_with_length(var18, var19); -var17 = var20; -varonce16 = var17; -} -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var17) /* add on */; -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var_path) /* add on */; -if (varonce21) { -var22 = varonce21; -} else { -var23 = ""; -var24 = 0; -var25 = string__NativeString__to_s_with_length(var23, var24); -var22 = var25; -varonce21 = var22; -} -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var22) /* add on */; -var26 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on */; -var = var26; +var25 = "/"; +var26 = 1; +var27 = string__NativeString__to_s_with_length(var25, var26); +var24 = var27; +varonce = var24; +} +var28 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var28 = array_instance Array[Object] */ +var29 = 3; +var30 = NEW_array__NativeArray(var29, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var30)->values[0] = (val*) self; +((struct instance_array__NativeArray*)var30)->values[1] = (val*) var24; +((struct instance_array__NativeArray*)var30)->values[2] = (val*) var_path; +{ +((void (*)(val*, val*, long))(var28->class->vft[COLOR_array__Array__with_native]))(var28, var30, var29) /* with_native on */; +} +} +{ +var31 = ((val* (*)(val*))(var28->class->vft[COLOR_string__Object__to_s]))(var28) /* to_s on */; +} +var = var31; goto RET_LABEL; RET_LABEL:; return var; @@ -1521,568 +2197,688 @@ var = var1; RET_LABEL:; return var; } -/* method file#String#mkdir for (self: String) */ -void file__String__mkdir(val* self) { -static val* varonce; +/* method file#String#/ for (self: String, String): String */ +val* file__String___47d(val* self, val* p0) { val* var /* : String */; -char* var1 /* : NativeString */; -long var2 /* : Int */; +val* var_path /* var path: String */; +val* var1 /* : String */; +var_path = p0; +{ +var1 = file__String__join_path(self, var_path); +} +var = var1; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method file#String#/ for (self: Object, String): String */ +val* VIRTUAL_file__String___47d(val* self, val* p0) { +val* var /* : String */; +val* var1 /* : String */; +var1 = file__String___47d(self, p0); +var = var1; +RET_LABEL:; +return var; +} +/* method file#String#relpath for (self: String, String): String */ +val* file__String__relpath(val* self, val* p0) { +val* var /* : String */; +val* var_dest /* var dest: String */; +val* var1 /* : String */; +val* var_cwd /* var cwd: String */; +val* var2 /* : String */; val* var3 /* : String */; -val* var4 /* : Array[String] */; -val* var_dirs /* var dirs: Array[String] */; -val* var5 /* : Buffer */; -val* var_path /* var path: Buffer */; -short int var6 /* : Bool */; -long var7 /* : Int */; -val* var8 /* : nullable Object */; -short int var9 /* : Bool */; -char var10 /* : Char */; +static val* varonce; +val* var4 /* : String */; +char* var5 /* : NativeString */; +long var6 /* : Int */; +val* var7 /* : FlatString */; +val* var8 /* : Array[Text] */; +val* var_from /* var from: Array[String] */; +val* var9 /* : nullable Object */; +short int var10 /* : Bool */; val* var11 /* : nullable Object */; -val* var12 /* : Iterator[nullable Object] */; -short int var13 /* : Bool */; -val* var14 /* : nullable Object */; -val* var_d /* var d: String */; -short int var15 /* : Bool */; -char var16 /* : Char */; -val* var17 /* : nullable Object */; -val* var18 /* : String */; -char* var19 /* : NativeString */; -short int var20 /* : Bool */; +val* var12 /* : String */; +val* var13 /* : String */; +static val* varonce14; +val* var15 /* : String */; +char* var16 /* : NativeString */; +long var17 /* : Int */; +val* var18 /* : FlatString */; +val* var19 /* : Array[Text] */; +val* var_to /* var to: Array[String] */; +val* var20 /* : nullable Object */; +short int var21 /* : Bool */; +val* var22 /* : nullable Object */; +short int var23 /* : Bool */; +short int var24 /* : Bool */; +short int var25 /* : Bool */; +short int var26 /* : Bool */; +short int var_ /* var : Bool */; +short int var27 /* : Bool */; +short int var28 /* : Bool */; +short int var_29 /* var : Bool */; +val* var30 /* : nullable Object */; +val* var31 /* : nullable Object */; +short int var32 /* : Bool */; +short int var33 /* : Bool */; +val* var34 /* : nullable Object */; +val* var35 /* : nullable Object */; +long var36 /* : Int */; +long var38 /* : Int */; +long var_from_len /* var from_len: Int */; +long var39 /* : Int */; +short int var40 /* : Bool */; +short int var41 /* : Bool */; +short int var43 /* : Bool */; +static val* varonce44; +val* var45 /* : String */; +char* var46 /* : NativeString */; +long var47 /* : Int */; +val* var48 /* : FlatString */; +val* var49 /* : String */; +static val* varonce50; +val* var51 /* : String */; +char* var52 /* : NativeString */; +long var53 /* : Int */; +val* var54 /* : FlatString */; +long var55 /* : Int */; +long var56 /* : Int */; +short int var58 /* : Bool */; +int cltype; +int idtype; +const char* var_class_name; +long var59 /* : Int */; +val* var60 /* : String */; +static val* varonce61; +val* var62 /* : String */; +char* var63 /* : NativeString */; +long var64 /* : Int */; +val* var65 /* : FlatString */; +val* var66 /* : String */; +val* var_up /* var up: String */; +short int var67 /* : Bool */; +static val* varonce68; +val* var69 /* : String */; +char* var70 /* : NativeString */; +long var71 /* : Int */; +val* var72 /* : FlatString */; +val* var73 /* : String */; +static val* varonce74; +val* var75 /* : String */; +char* var76 /* : NativeString */; +long var77 /* : Int */; +val* var78 /* : FlatString */; +val* var79 /* : String */; +val* var80 /* : String */; +val* var_res /* var res: String */; +var_dest = p0; +{ +var1 = file__Object__getcwd(self); +} +var_cwd = var1; +{ +var2 = file__String___47d(var_cwd, self); +} +{ +var3 = file__String__simplify_path(var2); +} if (varonce) { -var = varonce; +var4 = varonce; } else { -var1 = "/"; -var2 = 1; -var3 = string__NativeString__to_s_with_length(var1, var2); -var = var3; -varonce = var; +var5 = "/"; +var6 = 1; +var7 = string__NativeString__to_s_with_length(var5, var6); +var4 = var7; +varonce = var4; +} +{ +var8 = string_search__Text__split(var3, var4); +} +var_from = var8; +{ +var9 = abstract_collection__SequenceRead__last(var_from); +} +{ +var10 = string__Text__is_empty(var9); +} +if (var10){ +{ +var11 = array__AbstractArray__pop(var_from); } -var4 = ((val* (*)(val*, val*))(self->class->vft[COLOR_string_search__String__split_with]))(self, var) /* split_with on */; -var_dirs = var4; -var5 = NEW_string__Buffer(&type_string__Buffer); -((void (*)(val*))(var5->class->vft[COLOR_string__Buffer__init]))(var5) /* init on */; -var_path = var5; -var6 = ((short int (*)(val*))(var_dirs->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_dirs) /* is_empty on */; -if (var6){ -goto RET_LABEL; } else { } -var7 = 0; -var8 = ((val* (*)(val*, long))(var_dirs->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_dirs, var7) /* [] on */; -var9 = ((short int (*)(val*))(var8->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var8) /* is_empty on */; -if (var9){ -var10 = '/'; -var11 = BOX_kernel__Char(var10); /* autobox from Char to nullable Object */ -((void (*)(val*, val*))(var_path->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_path, var11) /* add on */; +{ +var12 = file__String___47d(var_cwd, var_dest); +} +{ +var13 = file__String__simplify_path(var12); +} +if (varonce14) { +var15 = varonce14; +} else { +var16 = "/"; +var17 = 1; +var18 = string__NativeString__to_s_with_length(var16, var17); +var15 = var18; +varonce14 = var15; +} +{ +var19 = string_search__Text__split(var13, var15); +} +var_to = var19; +{ +var20 = abstract_collection__SequenceRead__last(var_to); +} +{ +var21 = string__Text__is_empty(var20); +} +if (var21){ +{ +var22 = array__AbstractArray__pop(var_to); +} } else { } -var12 = ((val* (*)(val*))(var_dirs->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_dirs) /* iterator on */; for(;;) { -var13 = ((short int (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var12) /* is_ok on */; -if(!var13) break; -var14 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__item]))(var12) /* item on */; -var_d = var14; -var15 = ((short int (*)(val*))(var_d->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_d) /* is_empty on */; -if (var15){ -goto CONTINUE_label; +{ +var25 = array__AbstractArrayRead__is_empty(var_from); +} +var26 = !var25; +var_ = var26; +if (var26){ +{ +var27 = array__AbstractArrayRead__is_empty(var_to); +} +var28 = !var27; +var24 = var28; } else { +var24 = var_; +} +var_29 = var24; +if (var24){ +{ +var30 = abstract_collection__SequenceRead__first(var_from); +} +{ +var31 = abstract_collection__SequenceRead__first(var_to); +} +{ +var33 = string__FlatString___61d_61d(var30, var31); +var32 = var33; +} +var23 = var32; +} else { +var23 = var_29; +} +if (var23){ +{ +var34 = array__AbstractArray__shift(var_from); +} +{ +var35 = array__AbstractArray__shift(var_to); +} +} else { +goto BREAK_label; } -((void (*)(val*, val*))(var_path->class->vft[COLOR_abstract_collection__Sequence__append]))(var_path, var_d) /* append on */; -var16 = '/'; -var17 = BOX_kernel__Char(var16); /* autobox from Char to nullable Object */ -((void (*)(val*, val*))(var_path->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_path, var17) /* add on */; -var18 = ((val* (*)(val*))(var_path->class->vft[COLOR_string__Object__to_s]))(var_path) /* to_s on */; -var19 = ((char* (*)(val*))(var18->class->vft[COLOR_string__String__to_cstring]))(var18) /* to_cstring on */; -var20 = file__NativeString__file_mkdir(var19); -var20; -CONTINUE_label: (void)0; -((void (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__next]))(var12) /* next on */; } BREAK_label: (void)0; -RET_LABEL:; +{ +{ /* Inline array#AbstractArrayRead#length (var_from) on */ +var38 = var_from->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on */ +var36 = var38; +RET_LABEL37:(void)0; } -/* method file#String#mkdir for (self: Object) */ -void VIRTUAL_file__String__mkdir(val* self) { -file__String__mkdir(self); -RET_LABEL:; } -/* method file#String#chdir for (self: String) */ -void file__String__chdir(val* self) { -char* var /* : NativeString */; -var = ((char* (*)(val*))(self->class->vft[COLOR_string__String__to_cstring]))(self) /* to_cstring on */; -file__NativeString__file_chdir(var); -RET_LABEL:; +var_from_len = var36; +var39 = 0; +{ +{ /* Inline kernel#Int#== (var_from_len,var39) on */ +var43 = var_from_len == var39; +var41 = var43; +goto RET_LABEL42; +RET_LABEL42:(void)0; } -/* method file#String#chdir for (self: Object) */ -void VIRTUAL_file__String__chdir(val* self) { -file__String__chdir(self); -RET_LABEL:; +var40 = var41; } -/* method file#String#file_extension for (self: String): nullable String */ -val* file__String__file_extension(val* self) { -val* var /* : nullable String */; -char var1 /* : Char */; -long var2 /* : Int */; -val* var3 /* : nullable Object */; -long var_last_slash /* var last_slash: Int */; -long var4 /* : Int */; -short int var5 /* : Bool */; -short int var7 /* : Bool */; -int cltype; -int idtype; -const char* var_class_name; -short int var8 /* : Bool */; -long var9 /* : Int */; -long var10 /* : Int */; -long var12 /* : Int */; -long var13 /* : Int */; -val* var14 /* : String */; -val* var15 /* : null */; -var1 = '.'; -var3 = BOX_kernel__Char(var1); /* autobox from Char to nullable Object */ -var2 = ((long (*)(val*, val*))(self->class->vft[COLOR_array__AbstractArrayRead__last_index_of]))(self, var3) /* last_index_of on */; -var_last_slash = var2; -var4 = 0; -{ /* Inline kernel#Int#>= (var_last_slash,var4) */ -/* Covariant cast for argument 0 (i) isa OTHER */ -/* isa OTHER */ -var7 = 1; /* easy isa OTHER*/ -if (!var7) { +if (var40){ +if (varonce44) { +var45 = varonce44; +} else { +var46 = "/"; +var47 = 1; +var48 = string__NativeString__to_s_with_length(var46, var47); +var45 = var48; +varonce44 = var45; +} +{ +var49 = string__Collection__join(var_to, var45); +} +var = var49; +goto RET_LABEL; +} else { +} +if (varonce50) { +var51 = varonce50; +} else { +var52 = "../"; +var53 = 3; +var54 = string__NativeString__to_s_with_length(var52, var53); +var51 = var54; +varonce50 = var51; +} +var55 = 1; +{ +{ /* Inline kernel#Int#- (var_from_len,var55) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var58 = 1; /* easy isa OTHER*/ +if (unlikely(!var58)) { var_class_name = type_kernel__Int.name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name); -fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377); show_backtrace(1); } -var8 = var_last_slash >= var4; -var5 = var8; -goto RET_LABEL6; -RET_LABEL6:(void)0; +var59 = var_from_len - var55; +var56 = var59; +goto RET_LABEL57; +RET_LABEL57:(void)0; } -if (var5){ -var9 = 1; -{ /* Inline kernel#Int#+ (var_last_slash,var9) */ -var12 = var_last_slash + var9; -var10 = var12; -goto RET_LABEL11; -RET_LABEL11:(void)0; } -var13 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on */; -var14 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_string__AbstractString__substring]))(self, var10, var13) /* substring on */; -var = var14; -goto RET_LABEL; +{ +var60 = string__FlatString___42d(var51, var56); +} +if (varonce61) { +var62 = varonce61; } else { -var15 = NULL; -var = var15; +var63 = ".."; +var64 = 2; +var65 = string__NativeString__to_s_with_length(var63, var64); +var62 = var65; +varonce61 = var62; +} +{ +var66 = string__FlatString___43d(var60, var62); +} +var_up = var66; +{ +var67 = array__AbstractArrayRead__is_empty(var_to); +} +if (var67){ +var = var_up; goto RET_LABEL; +} else { } -RET_LABEL:; -return var; +if (varonce68) { +var69 = varonce68; +} else { +var70 = "/"; +var71 = 1; +var72 = string__NativeString__to_s_with_length(var70, var71); +var69 = var72; +varonce68 = var69; } -/* method file#String#file_extension for (self: Object): nullable String */ -val* VIRTUAL_file__String__file_extension(val* self) { -val* var /* : nullable String */; -val* var1 /* : nullable String */; -var1 = file__String__file_extension(self); -var = var1; -RET_LABEL:; -return var; +{ +var73 = string__FlatString___43d(var_up, var69); } -/* method file#String#files for (self: String): Set[String] */ -val* file__String__files(val* self) { -val* var /* : Set[String] */; -fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#String#files at lib/standard/file.nit:355,2--356,159\n"); -show_backtrace(1); -RET_LABEL:; -return var; +if (varonce74) { +var75 = varonce74; +} else { +var76 = "/"; +var77 = 1; +var78 = string__NativeString__to_s_with_length(var76, var77); +var75 = var78; +varonce74 = var75; } -/* method file#String#files for (self: Object): Set[String] */ -val* VIRTUAL_file__String__files(val* self) { -val* var /* : Set[String] */; -val* var1 /* : Set[String] */; -var1 = file__String__files(self); -var = var1; -RET_LABEL:; -return var; +{ +var79 = string__Collection__join(var_to, var75); } -/* method file#NativeString#file_exists for (self: NativeString): Bool */ -short int file__NativeString__file_exists(char* self) { -short int var /* : Bool */; -short int var1 /* : Bool */; -var1 = string_NativeString_NativeString_file_exists_0(self); -var = var1; +{ +var80 = string__FlatString___43d(var73, var79); +} +var_res = var80; +var = var_res; goto RET_LABEL; RET_LABEL:; return var; } -/* method file#NativeString#file_exists for (self: Object): Bool */ -short int VIRTUAL_file__NativeString__file_exists(val* self) { -short int var /* : Bool */; -short int var1 /* : Bool */; -char* var2 /* : NativeString */; -var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */; -var1 = file__NativeString__file_exists(var2); +/* method file#String#relpath for (self: Object, String): String */ +val* VIRTUAL_file__String__relpath(val* self, val* p0) { +val* var /* : String */; +val* var1 /* : String */; +var1 = file__String__relpath(self, p0); var = var1; RET_LABEL:; return var; } -/* method file#NativeString#file_stat for (self: NativeString): FileStat */ -void* file__NativeString__file_stat(char* self) { -void* var /* : FileStat */; -void* var1 /* : FileStat */; -var1 = string_NativeString_NativeString_file_stat_0(self); -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; +/* method file#String#mkdir for (self: String) */ +void file__String__mkdir(val* self) { +static val* varonce; +val* var /* : String */; +char* var1 /* : NativeString */; +long var2 /* : Int */; +val* var3 /* : FlatString */; +val* var4 /* : Array[Text] */; +val* var_dirs /* var dirs: Array[String] */; +val* var5 /* : FlatBuffer */; +val* var_path /* var path: FlatBuffer */; +short int var6 /* : Bool */; +long var7 /* : Int */; +val* var8 /* : nullable Object */; +short int var9 /* : Bool */; +char var10 /* : Char */; +val* var_ /* var : Array[String] */; +val* var11 /* : ArrayIterator[nullable Object] */; +val* var_12 /* var : ArrayIterator[String] */; +short int var13 /* : Bool */; +val* var14 /* : nullable Object */; +val* var_d /* var d: String */; +short int var15 /* : Bool */; +char var16 /* : Char */; +val* var17 /* : String */; +char* var18 /* : NativeString */; +short int var19 /* : Bool */; +short int var21 /* : Bool for extern */; +if (varonce) { +var = varonce; +} else { +var1 = "/"; +var2 = 1; +var3 = string__NativeString__to_s_with_length(var1, var2); +var = var3; +varonce = var; } -/* method file#NativeString#file_stat for (self: Object): FileStat */ -void* VIRTUAL_file__NativeString__file_stat(val* self) { -void* var /* : FileStat */; -void* var1 /* : FileStat */; -char* var2 /* : NativeString */; -var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */; -var1 = file__NativeString__file_stat(var2); -var = var1; -RET_LABEL:; -return var; +{ +var4 = string_search__Text__split_with(self, var); } -/* method file#NativeString#file_lstat for (self: NativeString): FileStat */ -void* file__NativeString__file_lstat(char* self) { -void* var /* : FileStat */; -fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#NativeString#file_lstat at lib/standard/file.nit:362,2--369,3\n"); -show_backtrace(1); -RET_LABEL:; -return var; +var_dirs = var4; +var5 = NEW_string__FlatBuffer(&type_string__FlatBuffer); +{ +((void (*)(val*))(var5->class->vft[COLOR_kernel__Object__init]))(var5) /* init on */; } -/* method file#NativeString#file_lstat for (self: Object): FileStat */ -void* VIRTUAL_file__NativeString__file_lstat(val* self) { -void* var /* : FileStat */; -void* var1 /* : FileStat */; -char* var2 /* : NativeString */; -var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */; -var1 = file__NativeString__file_lstat(var2); -var = var1; -RET_LABEL:; -return var; +var_path = var5; +{ +var6 = array__AbstractArrayRead__is_empty(var_dirs); } -/* method file#NativeString#file_mkdir for (self: NativeString): Bool */ -short int file__NativeString__file_mkdir(char* self) { -short int var /* : Bool */; -short int var1 /* : Bool */; -var1 = string_NativeString_NativeString_file_mkdir_0(self); -var = var1; +if (var6){ goto RET_LABEL; -RET_LABEL:; -return var; +} else { } -/* method file#NativeString#file_mkdir for (self: Object): Bool */ -short int VIRTUAL_file__NativeString__file_mkdir(val* self) { -short int var /* : Bool */; -short int var1 /* : Bool */; -char* var2 /* : NativeString */; -var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */; -var1 = file__NativeString__file_mkdir(var2); -var = var1; -RET_LABEL:; -return var; +var7 = 0; +{ +var8 = array__Array___91d_93d(var_dirs, var7); } -/* method file#NativeString#file_delete for (self: NativeString): Bool */ -short int file__NativeString__file_delete(char* self) { -short int var /* : Bool */; -short int var1 /* : Bool */; -var1 = string_NativeString_NativeString_file_delete_0(self); -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; +{ +var9 = string__Text__is_empty(var8); } -/* method file#NativeString#file_delete for (self: Object): Bool */ -short int VIRTUAL_file__NativeString__file_delete(val* self) { -short int var /* : Bool */; -short int var1 /* : Bool */; -char* var2 /* : NativeString */; -var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */; -var1 = file__NativeString__file_delete(var2); -var = var1; -RET_LABEL:; -return var; +if (var9){ +var10 = '/'; +{ +string__FlatBuffer__add(var_path, var10); /* Direct call string#FlatBuffer#add on */ } -/* method file#NativeString#file_chdir for (self: NativeString) */ -void file__NativeString__file_chdir(char* self) { -string_NativeString_NativeString_file_chdir_0(self); -RET_LABEL:; +} else { } -/* method file#NativeString#file_chdir for (self: Object) */ -void VIRTUAL_file__NativeString__file_chdir(val* self) { -char* var /* : NativeString */; -var = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */; -file__NativeString__file_chdir(var); -RET_LABEL:; +var_ = var_dirs; +{ +var11 = array__AbstractArrayRead__iterator(var_); } -/* method file#NativeString#file_realpath for (self: NativeString): NativeString */ -char* file__NativeString__file_realpath(char* self) { -char* var /* : NativeString */; -char* var1 /* : NativeString */; -var1 = file_NativeString_realpath(self); -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; +var_12 = var11; +for(;;) { +{ +var13 = array__ArrayIterator__is_ok(var_12); } -/* method file#NativeString#file_realpath for (self: Object): NativeString */ -char* VIRTUAL_file__NativeString__file_realpath(val* self) { -char* var /* : NativeString */; -char* var1 /* : NativeString */; -char* var2 /* : NativeString */; -var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */; -var1 = file__NativeString__file_realpath(var2); -var = var1; -RET_LABEL:; -return var; +if (var13){ +{ +var14 = array__ArrayIterator__item(var_12); } -/* method file#FileStat#mode for (self: FileStat): Int */ -long file__FileStat__mode(void* self) { -long var /* : Int */; -long var1 /* : Int */; -var1 = file_FileStat_FileStat_mode_0(self); -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; +var_d = var14; +{ +var15 = string__Text__is_empty(var_d); } -/* method file#FileStat#mode for (self: Object): Int */ -long VIRTUAL_file__FileStat__mode(val* self) { -long var /* : Int */; -long var1 /* : Int */; -void* var2 /* : FileStat */; -var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */; -var1 = file__FileStat__mode(var2); -var = var1; -RET_LABEL:; -return var; +if (var15){ +goto BREAK_label; +} else { } -/* method file#FileStat#atime for (self: FileStat): Int */ -long file__FileStat__atime(void* self) { -long var /* : Int */; -long var1 /* : Int */; -var1 = file_FileStat_FileStat_atime_0(self); -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; +{ +string__FlatBuffer__append(var_path, var_d); /* Direct call string#FlatBuffer#append on */ } -/* method file#FileStat#atime for (self: Object): Int */ -long VIRTUAL_file__FileStat__atime(val* self) { -long var /* : Int */; -long var1 /* : Int */; -void* var2 /* : FileStat */; -var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */; -var1 = file__FileStat__atime(var2); -var = var1; -RET_LABEL:; -return var; +var16 = '/'; +{ +string__FlatBuffer__add(var_path, var16); /* Direct call string#FlatBuffer#add on */ } -/* method file#FileStat#ctime for (self: FileStat): Int */ -long file__FileStat__ctime(void* self) { -long var /* : Int */; -long var1 /* : Int */; -var1 = file_FileStat_FileStat_ctime_0(self); -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; +{ +var17 = string__FlatBuffer__to_s(var_path); } -/* method file#FileStat#ctime for (self: Object): Int */ -long VIRTUAL_file__FileStat__ctime(val* self) { -long var /* : Int */; -long var1 /* : Int */; -void* var2 /* : FileStat */; -var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */; -var1 = file__FileStat__ctime(var2); -var = var1; -RET_LABEL:; -return var; +{ +var18 = string__FlatString__to_cstring(var17); } -/* method file#FileStat#mtime for (self: FileStat): Int */ -long file__FileStat__mtime(void* self) { -long var /* : Int */; -long var1 /* : Int */; -var1 = file_FileStat_FileStat_mtime_0(self); -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; +{ +{ /* Inline file#NativeString#file_mkdir (var18) on */ +var21 = string_NativeString_NativeString_file_mkdir_0(var18); +var19 = var21; +goto RET_LABEL20; +RET_LABEL20:(void)0; } -/* method file#FileStat#mtime for (self: Object): Int */ -long VIRTUAL_file__FileStat__mtime(val* self) { -long var /* : Int */; -long var1 /* : Int */; -void* var2 /* : FileStat */; -var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */; -var1 = file__FileStat__mtime(var2); -var = var1; -RET_LABEL:; -return var; } -/* method file#FileStat#size for (self: FileStat): Int */ -long file__FileStat__size(void* self) { -long var /* : Int */; -long var1 /* : Int */; -var1 = file_FileStat_FileStat_size_0(self); -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; +BREAK_label: (void)0; +{ +array__ArrayIterator__next(var_12); /* Direct call array#ArrayIterator#next on */ +} +} else { +goto BREAK_label22; +} +} +BREAK_label22: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_12) on */ +RET_LABEL23:(void)0; } -/* method file#FileStat#size for (self: Object): Int */ -long VIRTUAL_file__FileStat__size(val* self) { -long var /* : Int */; -long var1 /* : Int */; -void* var2 /* : FileStat */; -var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */; -var1 = file__FileStat__size(var2); -var = var1; -RET_LABEL:; -return var; } -/* method file#FileStat#is_reg for (self: FileStat): Bool */ -short int file__FileStat__is_reg(void* self) { -short int var /* : Bool */; -fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_reg at lib/standard/file.nit:384,2--54\n"); -show_backtrace(1); RET_LABEL:; -return var; } -/* method file#FileStat#is_reg for (self: Object): Bool */ -short int VIRTUAL_file__FileStat__is_reg(val* self) { -short int var /* : Bool */; -short int var1 /* : Bool */; -void* var2 /* : FileStat */; -var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */; -var1 = file__FileStat__is_reg(var2); -var = var1; +/* method file#String#mkdir for (self: Object) */ +void VIRTUAL_file__String__mkdir(val* self) { +file__String__mkdir(self); /* Direct call file#String#mkdir on */ RET_LABEL:; -return var; } -/* method file#FileStat#is_dir for (self: FileStat): Bool */ -short int file__FileStat__is_dir(void* self) { -short int var /* : Bool */; -fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_dir at lib/standard/file.nit:385,2--54\n"); +/* method file#String#file_extension for (self: String): nullable String */ +val* file__String__file_extension(val* self) { +val* var /* : nullable String */; +val* var1 /* : SequenceRead[Char] */; +val* var3 /* : SequenceRead[Char] */; +char var4 /* : Char */; +long var5 /* : Int */; +val* var6 /* : nullable Object */; +long var_last_slash /* var last_slash: Int */; +long var7 /* : Int */; +short int var8 /* : Bool */; +short int var10 /* : Bool */; +int cltype; +int idtype; +const char* var_class_name; +short int var11 /* : Bool */; +long var12 /* : Int */; +long var13 /* : Int */; +short int var15 /* : Bool */; +int cltype16; +int idtype17; +const char* var_class_name18; +long var19 /* : Int */; +long var20 /* : Int */; +long var22 /* : Int */; +val* var23 /* : String */; +val* var24 /* : null */; +{ +{ /* Inline string#FlatString#chars (self) on */ +var3 = self->attrs[COLOR_string__FlatString___chars].val; /* _chars on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _chars"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/string.nit", 939); show_backtrace(1); -RET_LABEL:; -return var; } -/* method file#FileStat#is_dir for (self: Object): Bool */ -short int VIRTUAL_file__FileStat__is_dir(val* self) { -short int var /* : Bool */; -short int var1 /* : Bool */; -void* var2 /* : FileStat */; -var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */; -var1 = file__FileStat__is_dir(var2); -var = var1; -RET_LABEL:; -return var; +var1 = var3; +RET_LABEL2:(void)0; } -/* method file#FileStat#is_chr for (self: FileStat): Bool */ -short int file__FileStat__is_chr(void* self) { -short int var /* : Bool */; -fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_chr at lib/standard/file.nit:386,2--54\n"); +} +var4 = '.'; +{ +var6 = BOX_kernel__Char(var4); /* autobox from Char to nullable Object */ +var5 = ((long (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__SequenceRead__last_index_of]))(var1, var6) /* last_index_of on */; +} +var_last_slash = var5; +var7 = 0; +{ +{ /* Inline kernel#Int#> (var_last_slash,var7) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var10 = 1; /* easy isa OTHER*/ +if (unlikely(!var10)) { +var_class_name = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373); show_backtrace(1); -RET_LABEL:; -return var; } -/* method file#FileStat#is_chr for (self: Object): Bool */ -short int VIRTUAL_file__FileStat__is_chr(val* self) { -short int var /* : Bool */; -short int var1 /* : Bool */; -void* var2 /* : FileStat */; -var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */; -var1 = file__FileStat__is_chr(var2); -var = var1; -RET_LABEL:; -return var; +var11 = var_last_slash > var7; +var8 = var11; +goto RET_LABEL9; +RET_LABEL9:(void)0; } -/* method file#FileStat#is_blk for (self: FileStat): Bool */ -short int file__FileStat__is_blk(void* self) { -short int var /* : Bool */; -fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_blk at lib/standard/file.nit:387,2--54\n"); +} +if (var8){ +var12 = 1; +{ +{ /* Inline kernel#Int#+ (var_last_slash,var12) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var15 = 1; /* easy isa OTHER*/ +if (unlikely(!var15)) { +var_class_name18 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name18); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374); show_backtrace(1); +} +var19 = var_last_slash + var12; +var13 = var19; +goto RET_LABEL14; +RET_LABEL14:(void)0; +} +} +{ +{ /* Inline string#FlatText#length (self) on */ +var22 = self->attrs[COLOR_string__FlatText___length].l; /* _length on */ +var20 = var22; +RET_LABEL21:(void)0; +} +} +{ +var23 = string__FlatString__substring(self, var13, var20); +} +var = var23; +goto RET_LABEL; +} else { +var24 = NULL; +var = var24; +goto RET_LABEL; +} RET_LABEL:; return var; } -/* method file#FileStat#is_blk for (self: Object): Bool */ -short int VIRTUAL_file__FileStat__is_blk(val* self) { -short int var /* : Bool */; -short int var1 /* : Bool */; -void* var2 /* : FileStat */; -var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */; -var1 = file__FileStat__is_blk(var2); +/* method file#String#file_extension for (self: Object): nullable String */ +val* VIRTUAL_file__String__file_extension(val* self) { +val* var /* : nullable String */; +val* var1 /* : nullable String */; +var1 = file__String__file_extension(self); var = var1; RET_LABEL:; return var; } -/* method file#FileStat#is_fifo for (self: FileStat): Bool */ -short int file__FileStat__is_fifo(void* self) { +/* method file#NativeString#file_exists for (self: NativeString): Bool */ +short int file__NativeString__file_exists(char* self) { short int var /* : Bool */; -fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_fifo at lib/standard/file.nit:388,2--56\n"); -show_backtrace(1); +short int var1 /* : Bool for extern */; +var1 = string_NativeString_NativeString_file_exists_0(self); +var = var1; +goto RET_LABEL; RET_LABEL:; return var; } -/* method file#FileStat#is_fifo for (self: Object): Bool */ -short int VIRTUAL_file__FileStat__is_fifo(val* self) { +/* method file#NativeString#file_exists for (self: Object): Bool */ +short int VIRTUAL_file__NativeString__file_exists(val* self) { short int var /* : Bool */; short int var1 /* : Bool */; -void* var2 /* : FileStat */; -var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */; -var1 = file__FileStat__is_fifo(var2); +short int var3 /* : Bool for extern */; +char* var4 /* : NativeString */; +{ /* Inline file#NativeString#file_exists (self) on */ +var4 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */; +var3 = string_NativeString_NativeString_file_exists_0(var4); +var1 = var3; +goto RET_LABEL2; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } -/* method file#FileStat#is_lnk for (self: FileStat): Bool */ -short int file__FileStat__is_lnk(void* self) { +/* method file#NativeString#file_mkdir for (self: NativeString): Bool */ +short int file__NativeString__file_mkdir(char* self) { short int var /* : Bool */; -fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_lnk at lib/standard/file.nit:389,2--54\n"); -show_backtrace(1); +short int var1 /* : Bool for extern */; +var1 = string_NativeString_NativeString_file_mkdir_0(self); +var = var1; +goto RET_LABEL; RET_LABEL:; return var; } -/* method file#FileStat#is_lnk for (self: Object): Bool */ -short int VIRTUAL_file__FileStat__is_lnk(val* self) { +/* method file#NativeString#file_mkdir for (self: Object): Bool */ +short int VIRTUAL_file__NativeString__file_mkdir(val* self) { short int var /* : Bool */; short int var1 /* : Bool */; -void* var2 /* : FileStat */; -var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */; -var1 = file__FileStat__is_lnk(var2); +short int var3 /* : Bool for extern */; +char* var4 /* : NativeString */; +{ /* Inline file#NativeString#file_mkdir (self) on */ +var4 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */; +var3 = string_NativeString_NativeString_file_mkdir_0(var4); +var1 = var3; +goto RET_LABEL2; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } -/* method file#FileStat#is_sock for (self: FileStat): Bool */ -short int file__FileStat__is_sock(void* self) { -short int var /* : Bool */; -fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_sock at lib/standard/file.nit:390,2--56\n"); -show_backtrace(1); +/* method file#NativeString#file_realpath for (self: NativeString): NativeString */ +char* file__NativeString__file_realpath(char* self) { +char* var /* : NativeString */; +void* var1 /* : NativeString for extern */; +var1 = file_NativeString_realpath(self); +var = var1; +goto RET_LABEL; RET_LABEL:; return var; } -/* method file#FileStat#is_sock for (self: Object): Bool */ -short int VIRTUAL_file__FileStat__is_sock(val* self) { -short int var /* : Bool */; -short int var1 /* : Bool */; -void* var2 /* : FileStat */; -var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */; -var1 = file__FileStat__is_sock(var2); +/* method file#NativeString#file_realpath for (self: Object): NativeString */ +char* VIRTUAL_file__NativeString__file_realpath(val* self) { +char* var /* : NativeString */; +char* var1 /* : NativeString */; +void* var3 /* : NativeString for extern */; +char* var4 /* : NativeString */; +{ /* Inline file#NativeString#file_realpath (self) on */ +var4 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */; +var3 = file_NativeString_realpath(var4); +var1 = var3; +goto RET_LABEL2; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method file#NativeFile#io_read for (self: NativeFile, NativeString, Int): Int */ -long file__NativeFile__io_read(void* self, char* p0, long p1) { +long file__NativeFile__io_read(val* self, char* p0, long p1) { long var /* : Int */; -long var1 /* : Int */; -var1 = file_NativeFile_NativeFile_io_read_2(self, p0, p1); +long var1 /* : Int for extern */; +void* var2 /* : NativeFile for extern */; +var2 = ((struct instance_kernel__Pointer*)self)->value; /* unboxing NativeFile */ +var1 = file_NativeFile_NativeFile_io_read_2(var2, p0, p1); var = var1; goto RET_LABEL; RET_LABEL:; @@ -2092,18 +2888,26 @@ return var; long VIRTUAL_file__NativeFile__io_read(val* self, char* p0, long p1) { long var /* : Int */; long var1 /* : Int */; -void* var2 /* : NativeFile */; -var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */; -var1 = file__NativeFile__io_read(var2, p0, p1); +long var3 /* : Int for extern */; +void* var4 /* : NativeFile for extern */; +{ /* Inline file#NativeFile#io_read (self,p0,p1) on */ +var4 = ((struct instance_kernel__Pointer*)self)->value; /* unboxing Object */ +var3 = file_NativeFile_NativeFile_io_read_2(var4, p0, p1); +var1 = var3; +goto RET_LABEL2; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method file#NativeFile#io_write for (self: NativeFile, NativeString, Int): Int */ -long file__NativeFile__io_write(void* self, char* p0, long p1) { +long file__NativeFile__io_write(val* self, char* p0, long p1) { long var /* : Int */; -long var1 /* : Int */; -var1 = file_NativeFile_NativeFile_io_write_2(self, p0, p1); +long var1 /* : Int for extern */; +void* var2 /* : NativeFile for extern */; +var2 = ((struct instance_kernel__Pointer*)self)->value; /* unboxing NativeFile */ +var1 = file_NativeFile_NativeFile_io_write_2(var2, p0, p1); var = var1; goto RET_LABEL; RET_LABEL:; @@ -2113,18 +2917,26 @@ return var; long VIRTUAL_file__NativeFile__io_write(val* self, char* p0, long p1) { long var /* : Int */; long var1 /* : Int */; -void* var2 /* : NativeFile */; -var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */; -var1 = file__NativeFile__io_write(var2, p0, p1); +long var3 /* : Int for extern */; +void* var4 /* : NativeFile for extern */; +{ /* Inline file#NativeFile#io_write (self,p0,p1) on */ +var4 = ((struct instance_kernel__Pointer*)self)->value; /* unboxing Object */ +var3 = file_NativeFile_NativeFile_io_write_2(var4, p0, p1); +var1 = var3; +goto RET_LABEL2; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method file#NativeFile#io_close for (self: NativeFile): Int */ -long file__NativeFile__io_close(void* self) { +long file__NativeFile__io_close(val* self) { long var /* : Int */; -long var1 /* : Int */; -var1 = file_NativeFile_NativeFile_io_close_0(self); +long var1 /* : Int for extern */; +void* var2 /* : NativeFile for extern */; +var2 = ((struct instance_kernel__Pointer*)self)->value; /* unboxing NativeFile */ +var1 = file_NativeFile_NativeFile_io_close_0(var2); var = var1; goto RET_LABEL; RET_LABEL:; @@ -2134,235 +2946,377 @@ return var; long VIRTUAL_file__NativeFile__io_close(val* self) { long var /* : Int */; long var1 /* : Int */; -void* var2 /* : NativeFile */; -var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */; -var1 = file__NativeFile__io_close(var2); -var = var1; -RET_LABEL:; -return var; -} -/* method file#NativeFile#file_stat for (self: NativeFile): FileStat */ -void* file__NativeFile__file_stat(void* self) { -void* var /* : FileStat */; -void* var1 /* : FileStat */; -var1 = file_NativeFile_NativeFile_file_stat_0(self); -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; +long var3 /* : Int for extern */; +void* var4 /* : NativeFile for extern */; +{ /* Inline file#NativeFile#io_close (self) on */ +var4 = ((struct instance_kernel__Pointer*)self)->value; /* unboxing Object */ +var3 = file_NativeFile_NativeFile_io_close_0(var4); +var1 = var3; +goto RET_LABEL2; +RET_LABEL2:(void)0; } -/* method file#NativeFile#file_stat for (self: Object): FileStat */ -void* VIRTUAL_file__NativeFile__file_stat(val* self) { -void* var /* : FileStat */; -void* var1 /* : FileStat */; -void* var2 /* : NativeFile */; -var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */; -var1 = file__NativeFile__file_stat(var2); var = var1; RET_LABEL:; return var; } /* method file#NativeFile#io_open_read for (self: NativeFile, NativeString): NativeFile */ -void* file__NativeFile__io_open_read(void* self, char* p0) { -void* var /* : NativeFile */; -void* var1 /* : NativeFile */; +val* file__NativeFile__io_open_read(val* self, char* p0) { +val* var /* : NativeFile */; +void* var1 /* : NativeFile for extern */; +val* var2 /* : NativeFile */; var1 = file_NativeFileCapable_NativeFileCapable_io_open_read_1(p0); -var = var1; +var2 = BOX_kernel__Pointer(var1); /* boxing NativeFile */ +var2->type = &type_file__NativeFile; +var2->class = &class_file__NativeFile; +var = var2; goto RET_LABEL; RET_LABEL:; return var; } /* method file#NativeFile#io_open_read for (self: Object, NativeString): NativeFile */ -void* VIRTUAL_file__NativeFile__io_open_read(val* self, char* p0) { -void* var /* : NativeFile */; -val* var1 /* : Object */; -void* var2 /* : NativeFile */; -void* var3 /* : NativeFile */; -var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */; -var1 = file__NativeFile__io_open_read(var2, p0); -var3 = ((struct instance_file__NativeFile*)var1)->value; /* autounbox from Object to NativeFile */; -var = var3; +val* VIRTUAL_file__NativeFile__io_open_read(val* self, char* p0) { +val* var /* : NativeFile */; +val* var1 /* : NativeFile */; +var1 = file__NativeFile__io_open_read(self, p0); +var = var1; RET_LABEL:; return var; } /* method file#NativeFile#io_open_write for (self: NativeFile, NativeString): NativeFile */ -void* file__NativeFile__io_open_write(void* self, char* p0) { -void* var /* : NativeFile */; -void* var1 /* : NativeFile */; +val* file__NativeFile__io_open_write(val* self, char* p0) { +val* var /* : NativeFile */; +void* var1 /* : NativeFile for extern */; +val* var2 /* : NativeFile */; var1 = file_NativeFileCapable_NativeFileCapable_io_open_write_1(p0); -var = var1; +var2 = BOX_kernel__Pointer(var1); /* boxing NativeFile */ +var2->type = &type_file__NativeFile; +var2->class = &class_file__NativeFile; +var = var2; goto RET_LABEL; RET_LABEL:; return var; } /* method file#NativeFile#io_open_write for (self: Object, NativeString): NativeFile */ -void* VIRTUAL_file__NativeFile__io_open_write(val* self, char* p0) { -void* var /* : NativeFile */; -val* var1 /* : Object */; -void* var2 /* : NativeFile */; -void* var3 /* : NativeFile */; -var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */; -var1 = file__NativeFile__io_open_write(var2, p0); -var3 = ((struct instance_file__NativeFile*)var1)->value; /* autounbox from Object to NativeFile */; -var = var3; +val* VIRTUAL_file__NativeFile__io_open_write(val* self, char* p0) { +val* var /* : NativeFile */; +val* var1 /* : NativeFile */; +var1 = file__NativeFile__io_open_write(self, p0); +var = var1; RET_LABEL:; return var; } /* method file#NativeFile#native_stdin for (self: NativeFile): NativeFile */ -void* file__NativeFile__native_stdin(void* self) { -void* var /* : NativeFile */; -void* var1 /* : NativeFile */; +val* file__NativeFile__native_stdin(val* self) { +val* var /* : NativeFile */; +void* var1 /* : NativeFile for extern */; +val* var2 /* : NativeFile */; var1 = file_NativeFileCapable_NativeFileCapable_native_stdin_0(); -var = var1; +var2 = BOX_kernel__Pointer(var1); /* boxing NativeFile */ +var2->type = &type_file__NativeFile; +var2->class = &class_file__NativeFile; +var = var2; goto RET_LABEL; RET_LABEL:; return var; } /* method file#NativeFile#native_stdin for (self: Object): NativeFile */ -void* VIRTUAL_file__NativeFile__native_stdin(val* self) { -void* var /* : NativeFile */; -val* var1 /* : Object */; -void* var2 /* : NativeFile */; -void* var3 /* : NativeFile */; -var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */; -var1 = file__NativeFile__native_stdin(var2); -var3 = ((struct instance_file__NativeFile*)var1)->value; /* autounbox from Object to NativeFile */; -var = var3; +val* VIRTUAL_file__NativeFile__native_stdin(val* self) { +val* var /* : NativeFile */; +val* var1 /* : NativeFile */; +var1 = file__NativeFile__native_stdin(self); +var = var1; RET_LABEL:; return var; } /* method file#NativeFile#native_stdout for (self: NativeFile): NativeFile */ -void* file__NativeFile__native_stdout(void* self) { -void* var /* : NativeFile */; -void* var1 /* : NativeFile */; +val* file__NativeFile__native_stdout(val* self) { +val* var /* : NativeFile */; +void* var1 /* : NativeFile for extern */; +val* var2 /* : NativeFile */; var1 = file_NativeFileCapable_NativeFileCapable_native_stdout_0(); -var = var1; +var2 = BOX_kernel__Pointer(var1); /* boxing NativeFile */ +var2->type = &type_file__NativeFile; +var2->class = &class_file__NativeFile; +var = var2; goto RET_LABEL; RET_LABEL:; return var; } /* method file#NativeFile#native_stdout for (self: Object): NativeFile */ -void* VIRTUAL_file__NativeFile__native_stdout(val* self) { -void* var /* : NativeFile */; -val* var1 /* : Object */; -void* var2 /* : NativeFile */; -void* var3 /* : NativeFile */; -var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */; -var1 = file__NativeFile__native_stdout(var2); -var3 = ((struct instance_file__NativeFile*)var1)->value; /* autounbox from Object to NativeFile */; -var = var3; +val* VIRTUAL_file__NativeFile__native_stdout(val* self) { +val* var /* : NativeFile */; +val* var1 /* : NativeFile */; +var1 = file__NativeFile__native_stdout(self); +var = var1; RET_LABEL:; return var; } /* method file#NativeFile#native_stderr for (self: NativeFile): NativeFile */ -void* file__NativeFile__native_stderr(void* self) { -void* var /* : NativeFile */; -void* var1 /* : NativeFile */; +val* file__NativeFile__native_stderr(val* self) { +val* var /* : NativeFile */; +void* var1 /* : NativeFile for extern */; +val* var2 /* : NativeFile */; var1 = file_NativeFileCapable_NativeFileCapable_native_stderr_0(); -var = var1; +var2 = BOX_kernel__Pointer(var1); /* boxing NativeFile */ +var2->type = &type_file__NativeFile; +var2->class = &class_file__NativeFile; +var = var2; goto RET_LABEL; RET_LABEL:; return var; } /* method file#NativeFile#native_stderr for (self: Object): NativeFile */ -void* VIRTUAL_file__NativeFile__native_stderr(val* self) { -void* var /* : NativeFile */; -val* var1 /* : Object */; -void* var2 /* : NativeFile */; -void* var3 /* : NativeFile */; -var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */; -var1 = file__NativeFile__native_stderr(var2); -var3 = ((struct instance_file__NativeFile*)var1)->value; /* autounbox from Object to NativeFile */; -var = var3; +val* VIRTUAL_file__NativeFile__native_stderr(val* self) { +val* var /* : NativeFile */; +val* var1 /* : NativeFile */; +var1 = file__NativeFile__native_stderr(self); +var = var1; RET_LABEL:; return var; } -/* method file#Object#stdin for (self: Object): Stdin */ -val* file__Object__stdin(val* self) { -val* var /* : Stdin */; -static val* varonce; -static int varonce_guard; -val* var1 /* : Stdin */; -val* var2 /* : Stdin */; -if (varonce_guard) { -var1 = varonce; -} else { -var2 = NEW_file__Stdin(&type_file__Stdin); -((void (*)(val*))(var2->class->vft[COLOR_file__Stdin__init]))(var2) /* init on */; -var1 = var2; -varonce = var1; -varonce_guard = 1; +/* method file#Sys#stdout for (self: Sys): OStream */ +val* file__Sys__stdout(val* self) { +val* var /* : OStream */; +val* var1 /* : OStream */; +var1 = self->attrs[COLOR_file__Sys___stdout].val; /* _stdout on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stdout"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/file.nit", 634); +show_backtrace(1); } var = var1; -goto RET_LABEL; RET_LABEL:; return var; } -/* method file#Object#stdin for (self: Object): Stdin */ -val* VIRTUAL_file__Object__stdin(val* self) { -val* var /* : Stdin */; -val* var1 /* : Stdin */; -var1 = file__Object__stdin(self); +/* method file#Sys#stdout for (self: Object): OStream */ +val* VIRTUAL_file__Sys__stdout(val* self) { +val* var /* : OStream */; +val* var1 /* : OStream */; +val* var3 /* : OStream */; +{ /* Inline file#Sys#stdout (self) on */ +var3 = self->attrs[COLOR_file__Sys___stdout].val; /* _stdout on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stdout"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/file.nit", 634); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } -/* method file#Object#stdout for (self: Object): OFStream */ -val* file__Object__stdout(val* self) { -val* var /* : OFStream */; -static val* varonce; -static int varonce_guard; -val* var1 /* : Stdout */; -val* var2 /* : Stdout */; -if (varonce_guard) { -var1 = varonce; -} else { -var2 = NEW_file__Stdout(&type_file__Stdout); -((void (*)(val*))(var2->class->vft[COLOR_file__Stdout__init]))(var2) /* init on */; -var1 = var2; -varonce = var1; -varonce_guard = 1; +/* method file#Sys#stderr for (self: Sys): OStream */ +val* file__Sys__stderr(val* self) { +val* var /* : OStream */; +val* var1 /* : OStream */; +var1 = self->attrs[COLOR_file__Sys___stderr].val; /* _stderr on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stderr"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/file.nit", 637); +show_backtrace(1); } var = var1; -goto RET_LABEL; RET_LABEL:; return var; } -/* method file#Object#stdout for (self: Object): OFStream */ -val* VIRTUAL_file__Object__stdout(val* self) { -val* var /* : OFStream */; -val* var1 /* : OFStream */; -var1 = file__Object__stdout(self); +/* method file#Sys#stderr for (self: Object): OStream */ +val* VIRTUAL_file__Sys__stderr(val* self) { +val* var /* : OStream */; +val* var1 /* : OStream */; +val* var3 /* : OStream */; +{ /* Inline file#Sys#stderr (self) on */ +var3 = self->attrs[COLOR_file__Sys___stderr].val; /* _stderr on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stderr"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/file.nit", 637); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } -/* method file#Object#stderr for (self: Object): OFStream */ -val* file__Object__stderr(val* self) { -val* var /* : OFStream */; +/* method file#Object#printn for (self: Object, Array[Object]) */ +void file__Object__printn(val* self, val* p0) { +val* var_objects /* var objects: Array[Object] */; +val* var /* : Sys */; +val* var2 /* : Sys */; +val* var3 /* : OStream */; +val* var5 /* : OStream */; +val* var6 /* : String */; +var_objects = p0; +{ +{ /* Inline kernel#Object#sys (self) on */ +var2 = glob_sys; +var = var2; +goto RET_LABEL1; +RET_LABEL1:(void)0; +} +} +{ +{ /* Inline file#Sys#stdout (var) on */ +var5 = var->attrs[COLOR_file__Sys___stdout].val; /* _stdout on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stdout"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/file.nit", 634); +show_backtrace(1); +} +var3 = var5; +RET_LABEL4:(void)0; +} +} +{ +var6 = string__Array__to_s(var_objects); +} +{ +file__OFStream__write(var3, var6); /* Direct call file#OFStream#write on */ +} +RET_LABEL:; +} +/* method file#Object#printn for (self: Object, Array[Object]) */ +void VIRTUAL_file__Object__printn(val* self, val* p0) { +file__Object__printn(self, p0); /* Direct call file#Object#printn on */ +RET_LABEL:; +} +/* method file#Object#print for (self: Object, Object) */ +void file__Object__print(val* self, val* p0) { +val* var_object /* var object: Object */; +val* var /* : Sys */; +val* var2 /* : Sys */; +val* var3 /* : OStream */; +val* var5 /* : OStream */; +val* var6 /* : String */; +val* var7 /* : Sys */; +val* var9 /* : Sys */; +val* var10 /* : OStream */; +val* var12 /* : OStream */; static val* varonce; -static int varonce_guard; -val* var1 /* : Stderr */; -val* var2 /* : Stderr */; -if (varonce_guard) { -var1 = varonce; +val* var13 /* : String */; +char* var14 /* : NativeString */; +long var15 /* : Int */; +val* var16 /* : FlatString */; +var_object = p0; +{ +{ /* Inline kernel#Object#sys (self) on */ +var2 = glob_sys; +var = var2; +goto RET_LABEL1; +RET_LABEL1:(void)0; +} +} +{ +{ /* Inline file#Sys#stdout (var) on */ +var5 = var->attrs[COLOR_file__Sys___stdout].val; /* _stdout on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stdout"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/file.nit", 634); +show_backtrace(1); +} +var3 = var5; +RET_LABEL4:(void)0; +} +} +{ +var6 = ((val* (*)(val*))(var_object->class->vft[COLOR_string__Object__to_s]))(var_object) /* to_s on */; +} +{ +file__OFStream__write(var3, var6); /* Direct call file#OFStream#write on */ +} +{ +{ /* Inline kernel#Object#sys (self) on */ +var9 = glob_sys; +var7 = var9; +goto RET_LABEL8; +RET_LABEL8:(void)0; +} +} +{ +{ /* Inline file#Sys#stdout (var7) on */ +var12 = var7->attrs[COLOR_file__Sys___stdout].val; /* _stdout on */ +if (unlikely(var12 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stdout"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/file.nit", 634); +show_backtrace(1); +} +var10 = var12; +RET_LABEL11:(void)0; +} +} +if (varonce) { +var13 = varonce; } else { -var2 = NEW_file__Stderr(&type_file__Stderr); -((void (*)(val*))(var2->class->vft[COLOR_file__Stderr__init]))(var2) /* init on */; -var1 = var2; -varonce = var1; -varonce_guard = 1; +var14 = "\n"; +var15 = 1; +var16 = string__NativeString__to_s_with_length(var14, var15); +var13 = var16; +varonce = var13; +} +{ +file__OFStream__write(var10, var13); /* Direct call file#OFStream#write on */ +} +RET_LABEL:; +} +/* method file#Object#print for (self: Object, Object) */ +void VIRTUAL_file__Object__print(val* self, val* p0) { +file__Object__print(self, p0); /* Direct call file#Object#print on */ +RET_LABEL:; +} +/* method file#Object#getcwd for (self: Object): String */ +val* file__Object__getcwd(val* self) { +val* var /* : String */; +char* var1 /* : NativeString */; +void* var3 /* : NativeString for extern */; +val* var4 /* : String */; +{ +{ /* Inline file#Object#file_getcwd (self) on */ +var3 = string_NativeString_NativeString_file_getcwd_0(self); +var1 = var3; +goto RET_LABEL2; +RET_LABEL2:(void)0; +} +} +{ +var4 = string__NativeString__to_s(var1); +} +var = var4; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method file#Object#getcwd for (self: Object): String */ +val* VIRTUAL_file__Object__getcwd(val* self) { +val* var /* : String */; +val* var1 /* : String */; +var1 = file__Object__getcwd(self); +var = var1; +RET_LABEL:; +return var; } +/* method file#Object#file_getcwd for (self: Object): NativeString */ +char* file__Object__file_getcwd(val* self) { +char* var /* : NativeString */; +void* var1 /* : NativeString for extern */; +var1 = string_NativeString_NativeString_file_getcwd_0(self); var = var1; goto RET_LABEL; RET_LABEL:; return var; } -/* method file#Object#stderr for (self: Object): OFStream */ -val* VIRTUAL_file__Object__stderr(val* self) { -val* var /* : OFStream */; -val* var1 /* : OFStream */; -var1 = file__Object__stderr(self); +/* method file#Object#file_getcwd for (self: Object): NativeString */ +char* VIRTUAL_file__Object__file_getcwd(val* self) { +char* var /* : NativeString */; +char* var1 /* : NativeString */; +void* var3 /* : NativeString for extern */; +{ /* Inline file#Object#file_getcwd (self) on */ +var3 = string_NativeString_NativeString_file_getcwd_0(self); +var1 = var3; +goto RET_LABEL2; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var;