lib/websockets: Added basic support for Websockets
[nit.git] / c_src / file.sep.1.c
index 9a7e529..bf71c78 100644 (file)
@@ -163,8 +163,9 @@ val* var1 /* : nullable NativeFile */;
 void* var2 /* : FileStat */;
 var1 = self->attrs[COLOR_file__FStream___file].val; /* _file on <self:FStream> */
 if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/file.nit", 66);
-exit(1);
+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 <var1:nullable NativeFile>*/;
 }
@@ -212,8 +213,9 @@ if (var1){
 var2 = NULL/*special!*/;
 var3 = self->attrs[COLOR_file__FStream___path].val; /* _path on <self:IFStream> */
 if (var3 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/file.nit", 80);
-exit(1);
+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 <var3:nullable String>*/;
 }
@@ -226,8 +228,9 @@ var8 = 0;
 self->attrs[COLOR_stream__BufferedIStream___buffer_pos].l = var8; /* _buffer_pos on <self:IFStream> */
 var9 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:IFStream> */
 if (var9 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/file.nit", 83);
-exit(1);
+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 <var9:nullable Buffer>*/;
 }
@@ -246,8 +249,9 @@ long var_i /* var i: Int */;
 short int var2 /* : Bool */;
 var = self->attrs[COLOR_file__FStream___file].val; /* _file on <self:IFStream> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/file.nit", 88);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 88);
+show_backtrace(1);
 } else {
 var1 = ((long (*)(val*))(var->class->vft[COLOR_file__NativeFile__io_close]))(var) /* io_close on <var:nullable NativeFile>*/;
 }
@@ -275,6 +279,7 @@ short int var7 /* : Bool */;
 short int var9 /* : Bool */;
 int cltype;
 int idtype;
+const char* var_class_name;
 short int var10 /* : Bool */;
 short int var11 /* : Bool */;
 long var12 /* : Int */;
@@ -283,19 +288,22 @@ long var14 /* : Int */;
 var = self->attrs[COLOR_file__FStream___file].val; /* _file on <self:IFStream> */
 var1 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:IFStream> */
 if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/file.nit", 94);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 94);
+show_backtrace(1);
 }
 var2 = var1->attrs[COLOR_string__AbstractString___items].str; /* _items on <var1:nullable Buffer> */
 var3 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:IFStream> */
 if (var3 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/file.nit", 94);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 94);
+show_backtrace(1);
 }
 var4 = var3->attrs[COLOR_string__Buffer___capacity].l; /* _capacity on <var3:nullable Buffer> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/file.nit", 94);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 94);
+show_backtrace(1);
 } else {
 var5 = ((long (*)(val*, char*, long))(var->class->vft[COLOR_file__NativeFile__io_read]))(var, var2, var4) /* io_read on <var:nullable NativeFile>*/;
 }
@@ -306,8 +314,10 @@ var6 = 0;
 /* <var6:Int> isa OTHER */
 var9 = 1; /* easy <var6:Int> isa OTHER*/
 if (!var9) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 256);
-exit(1);
+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);
+show_backtrace(1);
 }
 var10 = var_nb <= var6;
 var7 = var10;
@@ -323,8 +333,9 @@ var_nb = var12;
 }
 var13 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:IFStream> */
 if (var13 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/file.nit", 99);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 99);
+show_backtrace(1);
 }
 var13->attrs[COLOR_array__AbstractArrayRead___length].l = var_nb; /* _length on <var13:nullable Buffer> */
 var14 = 0;
@@ -375,8 +386,9 @@ var = 10;
 var1 = NULL/*special!*/;
 var2 = self->attrs[COLOR_file__FStream___path].val; /* _path on <self:IFStream> */
 if (var2 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/file.nit", 111);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 111);
+show_backtrace(1);
 } else {
 var3 = ((char* (*)(val*))(var2->class->vft[COLOR_string__String__to_cstring]))(var2) /* to_cstring on <var2:nullable String>*/;
 }
@@ -391,8 +403,9 @@ var8 = 0; /* is null */
 var8 = 1; /* arg is null and recv is not */
 }
 if (!var8) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert \'cant_open_file\' failed", "lib/standard/file.nit", 112);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert \'cant_open_file\' failed");
+fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 112);
+show_backtrace(1);
 }
 RET_LABEL:;
 }
@@ -432,8 +445,9 @@ long var2 /* : Int */;
 var_s = p0;
 var = self->attrs[COLOR_file__OFStream___writable].s; /* _writable on <self:OFStream> */
 if (!var) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "lib/standard/file.nit", 126);
-exit(1);
+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 <var_s:String>*/;
 var2 = ((long (*)(val*))(var_s->class->vft[COLOR_abstract_collection__Collection__length]))(var_s) /* length on <var_s:String>*/;
@@ -472,8 +486,9 @@ long var_i /* var i: Int */;
 short int var2 /* : Bool */;
 var = self->attrs[COLOR_file__FStream___file].val; /* _file on <self:OFStream> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/file.nit", 134);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 134);
+show_backtrace(1);
 } else {
 var1 = ((long (*)(val*))(var->class->vft[COLOR_file__NativeFile__io_close]))(var) /* io_close on <var:nullable NativeFile>*/;
 }
@@ -522,13 +537,15 @@ var_native = p0;
 var_len = p1;
 var = self->attrs[COLOR_file__OFStream___writable].s; /* _writable on <self:OFStream> */
 if (!var) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "lib/standard/file.nit", 144);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 144);
+show_backtrace(1);
 }
 var1 = self->attrs[COLOR_file__FStream___file].val; /* _file on <self:OFStream> */
 if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/file.nit", 145);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 145);
+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 <var1:nullable NativeFile>*/;
 }
@@ -580,7 +597,6 @@ 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 <var21:Array[Object]>*/;
-CHECK_NEW_array__Array(var21);
 }
 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__printn]))(self, var21) /* printn on <self:OFStream>*/;
 } else {
@@ -618,8 +634,9 @@ var6 = 0; /* is null */
 var6 = 1; /* arg is null and recv is not */
 }
 if (!var6) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert \'cant_open_file\' failed", "lib/standard/file.nit", 156);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert \'cant_open_file\' failed");
+fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 156);
+show_backtrace(1);
 }
 self->attrs[COLOR_file__FStream___path].val = var_path; /* _path on <self:OFStream> */
 var7 = 1;
@@ -919,6 +936,7 @@ short int var10 /* : Bool */;
 short int var12 /* : Bool */;
 int cltype;
 int idtype;
+const char* var_class_name;
 short int var13 /* : Bool */;
 long var14 /* : Int */;
 long var15 /* : Int */;
@@ -945,8 +963,10 @@ var9 = 0;
 /* <var9:Int> isa OTHER */
 var12 = 1; /* easy <var9:Int> isa OTHER*/
 if (!var12) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 258);
-exit(1);
+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);
+show_backtrace(1);
 }
 var13 = var_pos >= var9;
 var10 = var13;
@@ -994,6 +1014,7 @@ short int var8 /* : Bool */;
 short int var10 /* : Bool */;
 int cltype;
 int idtype;
+const char* var_class_name;
 short int var11 /* : Bool */;
 short int var_ /* var : Bool */;
 val* var12 /* : nullable Object */;
@@ -1013,22 +1034,23 @@ short int var26 /* : Bool */;
 short int var28 /* : Bool */;
 int cltype29;
 int idtype30;
-short int var31 /* : Bool */;
-long var32 /* : Int */;
-val* var33 /* : String */;
-long var34 /* : Int */;
-short int var35 /* : Bool */;
-short int var37 /* : Bool */;
+const char* var_class_name31;
+short int var32 /* : Bool */;
+long var33 /* : Int */;
+val* var34 /* : String */;
+long var35 /* : Int */;
+short int var36 /* : Bool */;
+short int var38 /* : Bool */;
 static val* varonce;
-val* var38 /* : String */;
-char* var39 /* : NativeString */;
-long var40 /* : Int */;
-val* var41 /* : String */;
-static val* varonce42;
-val* var43 /* : String */;
-char* var44 /* : NativeString */;
-long var45 /* : Int */;
-val* var46 /* : String */;
+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 <self:String> */
 var2 = 1;
 { /* Inline kernel#Int#- (var1,var2) */
@@ -1044,8 +1066,10 @@ var7 = 0;
 /* <var7:Int> isa OTHER */
 var10 = 1; /* easy <var7:Int> isa OTHER*/
 if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
-exit(1);
+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);
+show_backtrace(1);
 }
 var11 = var_l > var7;
 var8 = var11;
@@ -1091,50 +1115,52 @@ var25 = 0;
 /* <var25:Int> isa OTHER */
 var28 = 1; /* easy <var25:Int> isa OTHER*/
 if (!var28) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
-exit(1);
+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);
+show_backtrace(1);
 }
-var31 = var_pos > var25;
-var26 = var31;
+var32 = var_pos > var25;
+var26 = var32;
 goto RET_LABEL27;
 RET_LABEL27:(void)0;
 }
 if (var26){
-var32 = 0;
-var33 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_string__AbstractString__substring]))(self, var32, var_pos) /* substring on <self:String>*/;
-var = var33;
+var33 = 0;
+var34 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_string__AbstractString__substring]))(self, var33, var_pos) /* substring on <self:String>*/;
+var = var34;
 goto RET_LABEL;
 } else {
-var34 = 0;
-{ /* Inline kernel#Int#== (var_pos,var34) */
-var37 = var_pos == var34;
-var35 = var37;
-goto RET_LABEL36;
-RET_LABEL36:(void)0;
-}
-if (var35){
+var35 = 0;
+{ /* Inline kernel#Int#== (var_pos,var35) */
+var38 = var_pos == var35;
+var36 = var38;
+goto RET_LABEL37;
+RET_LABEL37:(void)0;
+}
+if (var36){
 if (varonce) {
-var38 = varonce;
+var39 = varonce;
 } else {
-var39 = "/";
-var40 = 1;
-var41 = string__NativeString__to_s_with_length(var39, var40);
-var38 = var41;
-varonce = var38;
+var40 = "/";
+var41 = 1;
+var42 = string__NativeString__to_s_with_length(var40, var41);
+var39 = var42;
+varonce = var39;
 }
-var = var38;
+var = var39;
 goto RET_LABEL;
 } else {
-if (varonce42) {
-var43 = varonce42;
+if (varonce43) {
+var44 = varonce43;
 } else {
-var44 = ".";
-var45 = 1;
-var46 = string__NativeString__to_s_with_length(var44, var45);
-var43 = var46;
-varonce42 = var43;
+var45 = ".";
+var46 = 1;
+var47 = string__NativeString__to_s_with_length(var45, var46);
+var44 = var47;
+varonce43 = var44;
 }
-var = var43;
+var = var44;
 goto RET_LABEL;
 }
 }
@@ -1150,6 +1176,33 @@ var = var1;
 RET_LABEL:;
 return var;
 }
+/* method file#String#realpath for (self: String): String */
+val* file__String__realpath(val* self) {
+val* var /* : String */;
+char* var1 /* : NativeString */;
+char* var2 /* : NativeString */;
+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 <self:String>*/;
+var2 = file__NativeString__file_realpath(var1);
+var_cs = var2;
+var3 = string__NativeString__to_s_with_copy(var_cs);
+var_res = var3;
+var = var_res;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method file#String#realpath for (self: Object): String */
+val* VIRTUAL_file__String__realpath(val* self) {
+val* var /* : String */;
+val* var1 /* : String */;
+var1 = file__String__realpath(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
 /* method file#String#simplify_path for (self: String): String */
 val* file__String__simplify_path(val* self) {
 val* var /* : String */;
@@ -1202,12 +1255,18 @@ long var41 /* : Int */;
 val* var42 /* : String */;
 short int var43 /* : Bool */;
 val* var44 /* : nullable Object */;
-static val* varonce45;
-val* var46 /* : String */;
-char* var47 /* : NativeString */;
-long var48 /* : Int */;
-val* var49 /* : String */;
+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 */;
 if (varonce) {
 var1 = varonce;
 } else {
@@ -1221,7 +1280,6 @@ var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_string_search__String__spl
 var_a = var5;
 var6 = NEW_array__Array(&type_array__Arraystring__String);
 ((void (*)(val*))(var6->class->vft[COLOR_array__Array__init]))(var6) /* init on <var6:Array[String]>*/;
-CHECK_NEW_array__Array(var6);
 var_a2 = var6;
 var7 = ((val* (*)(val*))(var_a->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_a) /* iterator on <var_a:Array[String]>*/;
 for(;;) {
@@ -1311,17 +1369,32 @@ CONTINUE_label: (void)0;
 ((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
 }
 BREAK_label: (void)0;
-if (varonce45) {
-var46 = varonce45;
+var45 = ((short int (*)(val*))(var_a2->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_a2) /* is_empty on <var_a2:Array[String]>*/;
+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;
+} else {
+}
+if (varonce51) {
+var52 = varonce51;
 } else {
-var47 = "/";
-var48 = 1;
-var49 = string__NativeString__to_s_with_length(var47, var48);
-var46 = var49;
-varonce45 = var46;
-}
-var50 = ((val* (*)(val*, val*))(var_a2->class->vft[COLOR_string__Collection__join]))(var_a2, var46) /* join on <var_a2:Array[String]>*/;
-var = var50;
+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_a2:Array[String]>*/;
+var = var56;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
@@ -1400,7 +1473,6 @@ goto RET_LABEL;
 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 <var10:Array[Object]>*/;
-CHECK_NEW_array__Array(var10);
 var_ = var10;
 if (varonce) {
 var12 = varonce;
@@ -1489,7 +1561,6 @@ var4 = ((val* (*)(val*, val*))(self->class->vft[COLOR_string_search__String__spl
 var_dirs = var4;
 var5 = NEW_string__Buffer(&type_string__Buffer);
 ((void (*)(val*))(var5->class->vft[COLOR_string__Buffer__init]))(var5) /* init on <var5:Buffer>*/;
-CHECK_NEW_string__Buffer(var5);
 var_path = var5;
 var6 = ((short int (*)(val*))(var_dirs->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_dirs) /* is_empty on <var_dirs:Array[String]>*/;
 if (var6){
@@ -1559,6 +1630,7 @@ 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 */;
@@ -1576,8 +1648,10 @@ var4 = 0;
 /* <var4:Int> isa OTHER */
 var7 = 1; /* easy <var4:Int> isa OTHER*/
 if (!var7) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 258);
-exit(1);
+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);
+show_backtrace(1);
 }
 var8 = var_last_slash >= var4;
 var5 = var8;
@@ -1616,8 +1690,8 @@ return var;
 /* 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:345,2--346,159\n");
-exit(1);
+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;
 }
@@ -1675,8 +1749,8 @@ return 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:352,2--359,3\n");
-exit(1);
+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;
 }
@@ -1745,6 +1819,27 @@ var = ((struct instance_string__NativeString*)self)->value; /* autounbox from Ob
 file__NativeString__file_chdir(var);
 RET_LABEL:;
 }
+/* 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;
+}
+/* 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;
+}
 /* method file#FileStat#mode for (self: FileStat): Int */
 long file__FileStat__mode(void* self) {
 long var /* : Int */;
@@ -1853,8 +1948,8 @@ 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:373,2--54\n");
-exit(1);
+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;
 }
@@ -1872,8 +1967,8 @@ 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:374,2--54\n");
-exit(1);
+fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_dir at lib/standard/file.nit:385,2--54\n");
+show_backtrace(1);
 RET_LABEL:;
 return var;
 }
@@ -1891,8 +1986,8 @@ return var;
 /* 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:375,2--54\n");
-exit(1);
+fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_chr at lib/standard/file.nit:386,2--54\n");
+show_backtrace(1);
 RET_LABEL:;
 return var;
 }
@@ -1910,8 +2005,8 @@ return var;
 /* 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:376,2--54\n");
-exit(1);
+fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_blk at lib/standard/file.nit:387,2--54\n");
+show_backtrace(1);
 RET_LABEL:;
 return var;
 }
@@ -1929,8 +2024,8 @@ return var;
 /* method file#FileStat#is_fifo for (self: FileStat): Bool */
 short int file__FileStat__is_fifo(void* self) {
 short int var /* : Bool */;
-fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_fifo at lib/standard/file.nit:377,2--56\n");
-exit(1);
+fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_fifo at lib/standard/file.nit:388,2--56\n");
+show_backtrace(1);
 RET_LABEL:;
 return var;
 }
@@ -1948,8 +2043,8 @@ return var;
 /* method file#FileStat#is_lnk for (self: FileStat): Bool */
 short int file__FileStat__is_lnk(void* self) {
 short int var /* : Bool */;
-fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_lnk at lib/standard/file.nit:378,2--54\n");
-exit(1);
+fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_lnk at lib/standard/file.nit:389,2--54\n");
+show_backtrace(1);
 RET_LABEL:;
 return var;
 }
@@ -1967,8 +2062,8 @@ 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:379,2--56\n");
-exit(1);
+fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_sock at lib/standard/file.nit:390,2--56\n");
+show_backtrace(1);
 RET_LABEL:;
 return var;
 }
@@ -2194,7 +2289,6 @@ var1 = varonce;
 } else {
 var2 = NEW_file__Stdin(&type_file__Stdin);
 ((void (*)(val*))(var2->class->vft[COLOR_file__Stdin__init]))(var2) /* init on <var2:Stdin>*/;
-CHECK_NEW_file__Stdin(var2);
 var1 = var2;
 varonce = var1;
 varonce_guard = 1;
@@ -2225,7 +2319,6 @@ var1 = varonce;
 } else {
 var2 = NEW_file__Stdout(&type_file__Stdout);
 ((void (*)(val*))(var2->class->vft[COLOR_file__Stdout__init]))(var2) /* init on <var2:Stdout>*/;
-CHECK_NEW_file__Stdout(var2);
 var1 = var2;
 varonce = var1;
 varonce_guard = 1;
@@ -2256,7 +2349,6 @@ var1 = varonce;
 } else {
 var2 = NEW_file__Stderr(&type_file__Stderr);
 ((void (*)(val*))(var2->class->vft[COLOR_file__Stderr__init]))(var2) /* init on <var2:Stderr>*/;
-CHECK_NEW_file__Stderr(var2);
 var1 = var2;
 varonce = var1;
 varonce_guard = 1;