c_src: update for kill is
[nit.git] / c_src / sorter.sep.1.c
index 1e1e33c..3aab30b 100644 (file)
@@ -7,11 +7,14 @@ int cltype;
 int idtype;
 const struct type* type_struct;
 short int is_nullable;
+const char* var_class_name;
 short int var2 /* : Bool */;
 int cltype3;
 int idtype4;
 const struct type* type_struct5;
 short int is_nullable6;
+const char* var_class_name7;
+const char* var_class_name8;
 /* Covariant cast for argument 0 (a) <p0:nullable Object> isa AbstractSorter#0 */
 /* <p0:nullable Object> isa AbstractSorter#0 */
 type_struct = self->type->resolution_table->types[COLOR_sorter__AbstractSorter_FT0];
@@ -28,7 +31,9 @@ var1 = p0->type->type_table[cltype] == idtype;
 }
 }
 if (!var1) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/sorter.nit", 23);
+var_class_name = p0 == NULL ? "null" : p0->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractSorter#0", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/sorter.nit", 23);
 exit(1);
 }
 /* Covariant cast for argument 1 (b) <p1:nullable Object> isa AbstractSorter#0 */
@@ -47,10 +52,14 @@ var2 = p1->type->type_table[cltype3] == idtype4;
 }
 }
 if (!var2) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/sorter.nit", 23);
+var_class_name7 = p1 == NULL ? "null" : p1->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractSorter#0", var_class_name7);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/sorter.nit", 23);
 exit(1);
 }
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "lib/standard/collection/sorter.nit", 23);
+var_class_name8 = self == NULL ? "null" : self->type->name;
+fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "compare", var_class_name8);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/sorter.nit", 23);
 exit(1);
 RET_LABEL:;
 return var;
@@ -70,6 +79,7 @@ short int var /* : Bool */;
 int cltype;
 int idtype;
 const struct type* type_struct;
+const char* var_class_name;
 val* var_array /* var array: Array[nullable Object] */;
 long var1 /* : Int */;
 long var2 /* : Int */;
@@ -87,7 +97,9 @@ var = 0;
 var = p0->type->type_table[cltype] == idtype;
 }
 if (!var) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/sorter.nit", 30);
+var_class_name = p0 == NULL ? "null" : p0->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[AbstractSorter#0]", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/sorter.nit", 30);
 exit(1);
 }
 var_array = p0;
@@ -114,6 +126,7 @@ short int var /* : Bool */;
 int cltype;
 int idtype;
 const struct type* type_struct;
+const char* var_class_name;
 val* var_array /* var array: Array[nullable Object] */;
 long var_from /* var from: Int */;
 long var_to /* var to: Int */;
@@ -121,15 +134,17 @@ short int var1 /* : Bool */;
 short int var3 /* : Bool */;
 int cltype4;
 int idtype5;
-short int var6 /* : Bool */;
-long var7 /* : Int */;
+const char* var_class_name6;
+short int var7 /* : Bool */;
 long var8 /* : Int */;
-long var10 /* : Int */;
-short int var11 /* : Bool */;
-short int var13 /* : Bool */;
-int cltype14;
-int idtype15;
-short int var16 /* : Bool */;
+long var9 /* : Int */;
+long var11 /* : Int */;
+short int var12 /* : Bool */;
+short int var14 /* : Bool */;
+int cltype15;
+int idtype16;
+const char* var_class_name17;
+short int var18 /* : Bool */;
 /* Covariant cast for argument 0 (array) <p0:Array[nullable Object]> isa Array[AbstractSorter#0] */
 /* <p0:Array[nullable Object]> isa Array[AbstractSorter#0] */
 type_struct = self->type->resolution_table->types[COLOR_array__Arraysorter__AbstractSorter_FT0];
@@ -141,7 +156,9 @@ var = 0;
 var = p0->type->type_table[cltype] == idtype;
 }
 if (!var) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/sorter.nit", 33);
+var_class_name = p0 == NULL ? "null" : p0->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[AbstractSorter#0]", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/sorter.nit", 33);
 exit(1);
 }
 var_array = p0;
@@ -152,38 +169,42 @@ var_to = p2;
 /* <var_to:Int> isa OTHER */
 var3 = 1; /* easy <var_to:Int> isa OTHER*/
 if (!var3) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 258);
+var_class_name6 = type_kernel__Int.name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name6);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
 exit(1);
 }
-var6 = var_from >= var_to;
-var1 = var6;
+var7 = var_from >= var_to;
+var1 = var7;
 goto RET_LABEL2;
 RET_LABEL2:(void)0;
 }
 if (var1){
 goto RET_LABEL;
 } else {
-var7 = 7;
-{ /* Inline kernel#Int#+ (var_from,var7) */
-var10 = var_from + var7;
-var8 = var10;
-goto RET_LABEL9;
-RET_LABEL9:(void)0;
-}
-{ /* Inline kernel#Int#< (var8,var_to) */
+var8 = 7;
+{ /* Inline kernel#Int#+ (var_from,var8) */
+var11 = var_from + var8;
+var9 = var11;
+goto RET_LABEL10;
+RET_LABEL10:(void)0;
+}
+{ /* Inline kernel#Int#< (var9,var_to) */
 /* Covariant cast for argument 0 (i) <var_to:Int> isa OTHER */
 /* <var_to:Int> isa OTHER */
-var13 = 1; /* easy <var_to:Int> isa OTHER*/
-if (!var13) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 257);
+var14 = 1; /* easy <var_to:Int> isa OTHER*/
+if (!var14) {
+var_class_name17 = type_kernel__Int.name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name17);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
 exit(1);
 }
-var16 = var8 < var_to;
-var11 = var16;
-goto RET_LABEL12;
-RET_LABEL12:(void)0;
+var18 = var9 < var_to;
+var12 = var18;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
 }
-if (var11){
+if (var12){
 ((void (*)(val*, val*, long, long))(self->class->vft[COLOR_sorter__AbstractSorter__quick_sort]))(self, var_array, var_from, var_to) /* quick_sort on <self:AbstractSorter[nullable Object]>*/;
 } else {
 ((void (*)(val*, val*, long, long))(self->class->vft[COLOR_sorter__AbstractSorter__bubble_sort]))(self, var_array, var_from, var_to) /* bubble_sort on <self:AbstractSorter[nullable Object]>*/;
@@ -202,6 +223,7 @@ short int var /* : Bool */;
 int cltype;
 int idtype;
 const struct type* type_struct;
+const char* var_class_name;
 val* var_array /* var array: Array[nullable Object] */;
 long var_from /* var from: Int */;
 long var_to /* var to: Int */;
@@ -213,61 +235,67 @@ short int var2 /* : Bool */;
 short int var4 /* : Bool */;
 int cltype5;
 int idtype6;
-short int var7 /* : Bool */;
+const char* var_class_name7;
 short int var8 /* : Bool */;
 short int var9 /* : Bool */;
-short int var11 /* : Bool */;
-int cltype12;
-int idtype13;
-short int var14 /* : Bool */;
+short int var10 /* : Bool */;
+short int var12 /* : Bool */;
+int cltype13;
+int idtype14;
+const char* var_class_name15;
+short int var16 /* : Bool */;
 short int var_ /* var : Bool */;
-val* var15 /* : nullable Object */;
-long var16 /* : Int */;
-long var17 /* : Int */;
-short int var18 /* : Bool */;
+val* var17 /* : nullable Object */;
+long var18 /* : Int */;
+long var19 /* : Int */;
 short int var20 /* : Bool */;
-int cltype21;
-int idtype22;
-short int var23 /* : Bool */;
-long var24 /* : Int */;
-long var25 /* : Int */;
+short int var22 /* : Bool */;
+int cltype23;
+int idtype24;
+const char* var_class_name25;
+short int var26 /* : Bool */;
 long var27 /* : Int */;
-short int var28 /* : Bool */;
-short int var29 /* : Bool */;
+long var28 /* : Int */;
+long var30 /* : Int */;
 short int var31 /* : Bool */;
-int cltype32;
-int idtype33;
+short int var32 /* : Bool */;
 short int var34 /* : Bool */;
-short int var_35 /* var : Bool */;
-val* var36 /* : nullable Object */;
-long var37 /* : Int */;
-long var38 /* : Int */;
-short int var39 /* : Bool */;
-short int var41 /* : Bool */;
-int cltype42;
-int idtype43;
-short int var44 /* : Bool */;
-long var45 /* : Int */;
-long var46 /* : Int */;
-long var48 /* : Int */;
-short int var50 /* : Bool */;
-short int var52 /* : Bool */;
-int cltype53;
-int idtype54;
+int cltype35;
+int idtype36;
+const char* var_class_name37;
+short int var38 /* : Bool */;
+short int var_39 /* var : Bool */;
+val* var40 /* : nullable Object */;
+long var41 /* : 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 */;
+long var51 /* : Int */;
+long var53 /* : Int */;
 short int var55 /* : Bool */;
-val* var56 /* : nullable Object */;
+short int var57 /* : Bool */;
+int cltype58;
+int idtype59;
+const char* var_class_name60;
+short int var61 /* : Bool */;
+val* var62 /* : nullable Object */;
 val* var_t /* var t: nullable Object */;
-val* var57 /* : nullable Object */;
-long var59 /* : Int */;
-long var60 /* : Int */;
-long var62 /* : Int */;
 val* var63 /* : nullable Object */;
-long var64 /* : Int */;
 long var65 /* : Int */;
-long var67 /* : Int */;
+long var66 /* : Int */;
 long var68 /* : Int */;
-long var69 /* : Int */;
+val* var69 /* : nullable Object */;
+long var70 /* : Int */;
 long var71 /* : Int */;
+long var73 /* : Int */;
+long var74 /* : Int */;
+long var75 /* : Int */;
+long var77 /* : Int */;
 /* Covariant cast for argument 0 (array) <p0:Array[nullable Object]> isa Array[AbstractSorter#0] */
 /* <p0:Array[nullable Object]> isa Array[AbstractSorter#0] */
 type_struct = self->type->resolution_table->types[COLOR_array__Arraysorter__AbstractSorter_FT0];
@@ -279,7 +307,9 @@ var = 0;
 var = p0->type->type_table[cltype] == idtype;
 }
 if (!var) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/sorter.nit", 45);
+var_class_name = p0 == NULL ? "null" : p0->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[AbstractSorter#0]", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/sorter.nit", 45);
 exit(1);
 }
 var_array = p0;
@@ -295,11 +325,13 @@ for(;;) {
 /* <var_i:Int> isa OTHER */
 var4 = 1; /* easy <var_i:Int> isa OTHER*/
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
+var_class_name7 = type_kernel__Int.name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name7);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
 exit(1);
 }
-var7 = var_j > var_i;
-var2 = var7;
+var8 = var_j > var_i;
+var2 = var8;
 goto RET_LABEL3;
 RET_LABEL3:(void)0;
 }
@@ -308,47 +340,51 @@ for(;;) {
 { /* Inline kernel#Int#<= (var_i,var_to) */
 /* Covariant cast for argument 0 (i) <var_to:Int> isa OTHER */
 /* <var_to:Int> isa OTHER */
-var11 = 1; /* easy <var_to:Int> isa OTHER*/
-if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 256);
+var12 = 1; /* easy <var_to:Int> isa OTHER*/
+if (!var12) {
+var_class_name15 = type_kernel__Int.name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name15);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
 exit(1);
 }
-var14 = var_i <= var_to;
-var9 = var14;
-goto RET_LABEL10;
-RET_LABEL10:(void)0;
-}
-var_ = var9;
-if (var9){
-var15 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_i) /* [] on <var_array:Array[nullable Object]>*/;
-var16 = ((long (*)(val*, val*, val*))(self->class->vft[COLOR_sorter__AbstractSorter__compare]))(self, var15, var_pivot) /* compare on <self:AbstractSorter[nullable Object]>*/;
-var17 = 0;
-{ /* Inline kernel#Int#<= (var16,var17) */
-/* Covariant cast for argument 0 (i) <var17:Int> isa OTHER */
-/* <var17:Int> isa OTHER */
-var20 = 1; /* easy <var17:Int> isa OTHER*/
-if (!var20) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 256);
+var16 = var_i <= var_to;
+var10 = var16;
+goto RET_LABEL11;
+RET_LABEL11:(void)0;
+}
+var_ = var10;
+if (var10){
+var17 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_i) /* [] on <var_array:Array[nullable Object]>*/;
+var18 = ((long (*)(val*, val*, val*))(self->class->vft[COLOR_sorter__AbstractSorter__compare]))(self, var17, var_pivot) /* compare on <self:AbstractSorter[nullable Object]>*/;
+var19 = 0;
+{ /* Inline kernel#Int#<= (var18,var19) */
+/* Covariant cast for argument 0 (i) <var19:Int> isa OTHER */
+/* <var19:Int> isa OTHER */
+var22 = 1; /* easy <var19:Int> isa OTHER*/
+if (!var22) {
+var_class_name25 = type_kernel__Int.name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name25);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
 exit(1);
 }
-var23 = var16 <= var17;
-var18 = var23;
-goto RET_LABEL19;
-RET_LABEL19:(void)0;
+var26 = var18 <= var19;
+var20 = var26;
+goto RET_LABEL21;
+RET_LABEL21:(void)0;
 }
-var8 = var18;
+var9 = var20;
 } else {
-var8 = var_;
+var9 = var_;
 }
-if (!var8) break;
-var24 = 1;
-{ /* Inline kernel#Int#+ (var_i,var24) */
-var27 = var_i + var24;
-var25 = var27;
-goto RET_LABEL26;
-RET_LABEL26:(void)0;
+if (!var9) break;
+var27 = 1;
+{ /* Inline kernel#Int#+ (var_i,var27) */
+var30 = var_i + var27;
+var28 = var30;
+goto RET_LABEL29;
+RET_LABEL29:(void)0;
 }
-var_i = var25;
+var_i = var28;
 CONTINUE_label: (void)0;
 }
 BREAK_label: (void)0;
@@ -356,99 +392,105 @@ for(;;) {
 { /* Inline kernel#Int#> (var_j,var_i) */
 /* Covariant cast for argument 0 (i) <var_i:Int> isa OTHER */
 /* <var_i:Int> isa OTHER */
-var31 = 1; /* easy <var_i:Int> isa OTHER*/
-if (!var31) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
+var34 = 1; /* easy <var_i:Int> isa OTHER*/
+if (!var34) {
+var_class_name37 = type_kernel__Int.name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name37);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
 exit(1);
 }
-var34 = var_j > var_i;
-var29 = var34;
-goto RET_LABEL30;
-RET_LABEL30:(void)0;
-}
-var_35 = var29;
-if (var29){
-var36 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_j) /* [] on <var_array:Array[nullable Object]>*/;
-var37 = ((long (*)(val*, val*, val*))(self->class->vft[COLOR_sorter__AbstractSorter__compare]))(self, var36, var_pivot) /* compare on <self:AbstractSorter[nullable Object]>*/;
-var38 = 0;
-{ /* Inline kernel#Int#>= (var37,var38) */
-/* Covariant cast for argument 0 (i) <var38:Int> isa OTHER */
-/* <var38:Int> isa OTHER */
-var41 = 1; /* easy <var38:Int> isa OTHER*/
-if (!var41) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 258);
+var38 = var_j > var_i;
+var32 = var38;
+goto RET_LABEL33;
+RET_LABEL33:(void)0;
+}
+var_39 = var32;
+if (var32){
+var40 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_j) /* [] on <var_array:Array[nullable Object]>*/;
+var41 = ((long (*)(val*, val*, val*))(self->class->vft[COLOR_sorter__AbstractSorter__compare]))(self, var40, var_pivot) /* compare on <self:AbstractSorter[nullable Object]>*/;
+var42 = 0;
+{ /* Inline kernel#Int#>= (var41,var42) */
+/* Covariant cast for argument 0 (i) <var42:Int> isa OTHER */
+/* <var42:Int> isa OTHER */
+var45 = 1; /* easy <var42:Int> isa OTHER*/
+if (!var45) {
+var_class_name48 = type_kernel__Int.name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name48);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
 exit(1);
 }
-var44 = var37 >= var38;
-var39 = var44;
-goto RET_LABEL40;
-RET_LABEL40:(void)0;
+var49 = var41 >= var42;
+var43 = var49;
+goto RET_LABEL44;
+RET_LABEL44:(void)0;
 }
-var28 = var39;
+var31 = var43;
 } else {
-var28 = var_35;
+var31 = var_39;
 }
-if (!var28) break;
-var45 = 1;
-{ /* Inline kernel#Int#- (var_j,var45) */
-var48 = var_j - var45;
-var46 = var48;
-goto RET_LABEL47;
-RET_LABEL47:(void)0;
+if (!var31) break;
+var50 = 1;
+{ /* Inline kernel#Int#- (var_j,var50) */
+var53 = var_j - var50;
+var51 = var53;
+goto RET_LABEL52;
+RET_LABEL52:(void)0;
 }
-var_j = var46;
-CONTINUE_label49: (void)0;
+var_j = var51;
+CONTINUE_label54: (void)0;
 }
-BREAK_label49: (void)0;
+BREAK_label54: (void)0;
 { /* Inline kernel#Int#> (var_j,var_i) */
 /* Covariant cast for argument 0 (i) <var_i:Int> isa OTHER */
 /* <var_i:Int> isa OTHER */
-var52 = 1; /* easy <var_i:Int> isa OTHER*/
-if (!var52) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
+var57 = 1; /* easy <var_i:Int> isa OTHER*/
+if (!var57) {
+var_class_name60 = type_kernel__Int.name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name60);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
 exit(1);
 }
-var55 = var_j > var_i;
-var50 = var55;
-goto RET_LABEL51;
-RET_LABEL51:(void)0;
+var61 = var_j > var_i;
+var55 = var61;
+goto RET_LABEL56;
+RET_LABEL56:(void)0;
 }
-if (var50){
-var56 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_i) /* [] on <var_array:Array[nullable Object]>*/;
-var_t = var56;
-var57 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_j) /* [] on <var_array:Array[nullable Object]>*/;
-((void (*)(val*, long, val*))(var_array->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_array, var_i, var57) /* []= on <var_array:Array[nullable Object]>*/;
+if (var55){
+var62 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_i) /* [] on <var_array:Array[nullable Object]>*/;
+var_t = var62;
+var63 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_j) /* [] on <var_array:Array[nullable Object]>*/;
+((void (*)(val*, long, val*))(var_array->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_array, var_i, var63) /* []= on <var_array:Array[nullable Object]>*/;
 ((void (*)(val*, long, val*))(var_array->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_array, var_j, var_t) /* []= on <var_array:Array[nullable Object]>*/;
 } else {
 }
-CONTINUE_label58: (void)0;
-}
-BREAK_label58: (void)0;
-var59 = 1;
-{ /* Inline kernel#Int#- (var_i,var59) */
-var62 = var_i - var59;
-var60 = var62;
-goto RET_LABEL61;
-RET_LABEL61:(void)0;
-}
-var63 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var60) /* [] on <var_array:Array[nullable Object]>*/;
-((void (*)(val*, long, val*))(var_array->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_array, var_from, var63) /* []= on <var_array:Array[nullable Object]>*/;
-var64 = 1;
-{ /* Inline kernel#Int#- (var_i,var64) */
-var67 = var_i - var64;
-var65 = var67;
-goto RET_LABEL66;
-RET_LABEL66:(void)0;
-}
-((void (*)(val*, long, val*))(var_array->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_array, var65, var_pivot) /* []= on <var_array:Array[nullable Object]>*/;
-var68 = 2;
-{ /* Inline kernel#Int#- (var_i,var68) */
-var71 = var_i - var68;
-var69 = var71;
-goto RET_LABEL70;
-RET_LABEL70:(void)0;
-}
-((void (*)(val*, val*, long, long))(self->class->vft[COLOR_sorter__AbstractSorter__sub_sort]))(self, var_array, var_from, var69) /* sub_sort on <self:AbstractSorter[nullable Object]>*/;
+CONTINUE_label64: (void)0;
+}
+BREAK_label64: (void)0;
+var65 = 1;
+{ /* Inline kernel#Int#- (var_i,var65) */
+var68 = var_i - var65;
+var66 = var68;
+goto RET_LABEL67;
+RET_LABEL67:(void)0;
+}
+var69 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var66) /* [] on <var_array:Array[nullable Object]>*/;
+((void (*)(val*, long, val*))(var_array->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_array, var_from, var69) /* []= on <var_array:Array[nullable Object]>*/;
+var70 = 1;
+{ /* Inline kernel#Int#- (var_i,var70) */
+var73 = var_i - var70;
+var71 = var73;
+goto RET_LABEL72;
+RET_LABEL72:(void)0;
+}
+((void (*)(val*, long, val*))(var_array->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_array, var71, var_pivot) /* []= on <var_array:Array[nullable Object]>*/;
+var74 = 2;
+{ /* Inline kernel#Int#- (var_i,var74) */
+var77 = var_i - var74;
+var75 = var77;
+goto RET_LABEL76;
+RET_LABEL76:(void)0;
+}
+((void (*)(val*, val*, long, long))(self->class->vft[COLOR_sorter__AbstractSorter__sub_sort]))(self, var_array, var_from, var75) /* sub_sort on <self:AbstractSorter[nullable Object]>*/;
 ((void (*)(val*, val*, long, long))(self->class->vft[COLOR_sorter__AbstractSorter__sub_sort]))(self, var_array, var_i, var_to) /* sub_sort on <self:AbstractSorter[nullable Object]>*/;
 RET_LABEL:;
 }
@@ -463,6 +505,7 @@ short int var /* : Bool */;
 int cltype;
 int idtype;
 const struct type* type_struct;
+const char* var_class_name;
 val* var_array /* var array: Array[nullable Object] */;
 long var_from /* var from: Int */;
 long var_to /* var to: Int */;
@@ -471,35 +514,38 @@ short int var1 /* : Bool */;
 short int var3 /* : Bool */;
 int cltype4;
 int idtype5;
-short int var6 /* : Bool */;
+const char* var_class_name6;
+short int var7 /* : Bool */;
 long var_min /* var min: Int */;
-val* var7 /* : nullable Object */;
+val* var8 /* : nullable Object */;
 val* var_min_v /* var min_v: nullable Object */;
 long var_j /* var j: Int */;
-short int var8 /* : Bool */;
-short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
-short int var13 /* : Bool */;
-val* var14 /* : nullable Object */;
-long var15 /* : Int */;
-long var16 /* : Int */;
-short int var17 /* : Bool */;
+short int var9 /* : Bool */;
+short int var11 /* : Bool */;
+int cltype12;
+int idtype13;
+const char* var_class_name14;
+short int var15 /* : Bool */;
+val* var16 /* : nullable Object */;
+long var17 /* : Int */;
+long var18 /* : Int */;
 short int var19 /* : Bool */;
-int cltype20;
-int idtype21;
-short int var22 /* : Bool */;
-val* var23 /* : nullable Object */;
-long var24 /* : Int */;
-long var25 /* : Int */;
+short int var21 /* : Bool */;
+int cltype22;
+int idtype23;
+const char* var_class_name24;
+short int var25 /* : Bool */;
+val* var26 /* : nullable Object */;
 long var27 /* : Int */;
-short int var28 /* : Bool */;
-short int var30 /* : Bool */;
+long var28 /* : Int */;
+long var30 /* : Int */;
 short int var31 /* : Bool */;
-val* var32 /* : nullable Object */;
-long var33 /* : Int */;
-long var34 /* : Int */;
+short int var33 /* : Bool */;
+short int var34 /* : Bool */;
+val* var35 /* : nullable Object */;
 long var36 /* : Int */;
+long var37 /* : Int */;
+long var39 /* : Int */;
 /* Covariant cast for argument 0 (array) <p0:Array[nullable Object]> isa Array[AbstractSorter#0] */
 /* <p0:Array[nullable Object]> isa Array[AbstractSorter#0] */
 type_struct = self->type->resolution_table->types[COLOR_array__Arraysorter__AbstractSorter_FT0];
@@ -511,7 +557,9 @@ var = 0;
 var = p0->type->type_table[cltype] == idtype;
 }
 if (!var) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/sorter.nit", 66);
+var_class_name = p0 == NULL ? "null" : p0->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[AbstractSorter#0]", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/sorter.nit", 66);
 exit(1);
 }
 var_array = p0;
@@ -524,91 +572,97 @@ for(;;) {
 /* <var_to:Int> isa OTHER */
 var3 = 1; /* easy <var_to:Int> isa OTHER*/
 if (!var3) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 257);
+var_class_name6 = type_kernel__Int.name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name6);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
 exit(1);
 }
-var6 = var_i < var_to;
-var1 = var6;
+var7 = var_i < var_to;
+var1 = var7;
 goto RET_LABEL2;
 RET_LABEL2:(void)0;
 }
 if (!var1) break;
 var_min = var_i;
-var7 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_i) /* [] on <var_array:Array[nullable Object]>*/;
-var_min_v = var7;
+var8 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_i) /* [] on <var_array:Array[nullable Object]>*/;
+var_min_v = var8;
 var_j = var_i;
 for(;;) {
 { /* Inline kernel#Int#<= (var_j,var_to) */
 /* Covariant cast for argument 0 (i) <var_to:Int> isa OTHER */
 /* <var_to:Int> isa OTHER */
-var10 = 1; /* easy <var_to:Int> isa OTHER*/
-if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 256);
+var11 = 1; /* easy <var_to:Int> isa OTHER*/
+if (!var11) {
+var_class_name14 = type_kernel__Int.name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name14);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
 exit(1);
 }
-var13 = var_j <= var_to;
-var8 = var13;
-goto RET_LABEL9;
-RET_LABEL9:(void)0;
-}
-if (!var8) break;
-var14 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_j) /* [] on <var_array:Array[nullable Object]>*/;
-var15 = ((long (*)(val*, val*, val*))(self->class->vft[COLOR_sorter__AbstractSorter__compare]))(self, var_min_v, var14) /* compare on <self:AbstractSorter[nullable Object]>*/;
-var16 = 0;
-{ /* Inline kernel#Int#> (var15,var16) */
-/* Covariant cast for argument 0 (i) <var16:Int> isa OTHER */
-/* <var16:Int> isa OTHER */
-var19 = 1; /* easy <var16:Int> isa OTHER*/
-if (!var19) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
+var15 = var_j <= var_to;
+var9 = var15;
+goto RET_LABEL10;
+RET_LABEL10:(void)0;
+}
+if (!var9) break;
+var16 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_j) /* [] on <var_array:Array[nullable Object]>*/;
+var17 = ((long (*)(val*, val*, val*))(self->class->vft[COLOR_sorter__AbstractSorter__compare]))(self, var_min_v, var16) /* compare on <self:AbstractSorter[nullable Object]>*/;
+var18 = 0;
+{ /* Inline kernel#Int#> (var17,var18) */
+/* Covariant cast for argument 0 (i) <var18:Int> isa OTHER */
+/* <var18:Int> isa OTHER */
+var21 = 1; /* easy <var18:Int> isa OTHER*/
+if (!var21) {
+var_class_name24 = type_kernel__Int.name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name24);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
 exit(1);
 }
-var22 = var15 > var16;
-var17 = var22;
-goto RET_LABEL18;
-RET_LABEL18:(void)0;
+var25 = var17 > var18;
+var19 = var25;
+goto RET_LABEL20;
+RET_LABEL20:(void)0;
 }
-if (var17){
+if (var19){
 var_min = var_j;
-var23 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_j) /* [] on <var_array:Array[nullable Object]>*/;
-var_min_v = var23;
+var26 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_j) /* [] on <var_array:Array[nullable Object]>*/;
+var_min_v = var26;
 } else {
 }
-var24 = 1;
-{ /* Inline kernel#Int#+ (var_j,var24) */
-var27 = var_j + var24;
-var25 = var27;
-goto RET_LABEL26;
-RET_LABEL26:(void)0;
+var27 = 1;
+{ /* Inline kernel#Int#+ (var_j,var27) */
+var30 = var_j + var27;
+var28 = var30;
+goto RET_LABEL29;
+RET_LABEL29:(void)0;
 }
-var_j = var25;
+var_j = var28;
 CONTINUE_label: (void)0;
 }
 BREAK_label: (void)0;
 { /* Inline kernel#Int#!= (var_min,var_i) */
-var30 = var_min == var_i;
-var31 = !var30;
-var28 = var31;
-goto RET_LABEL29;
-RET_LABEL29:(void)0;
-}
-if (var28){
-var32 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_i) /* [] on <var_array:Array[nullable Object]>*/;
-((void (*)(val*, long, val*))(var_array->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_array, var_min, var32) /* []= on <var_array:Array[nullable Object]>*/;
+var33 = var_min == var_i;
+var34 = !var33;
+var31 = var34;
+goto RET_LABEL32;
+RET_LABEL32:(void)0;
+}
+if (var31){
+var35 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_i) /* [] on <var_array:Array[nullable Object]>*/;
+((void (*)(val*, long, val*))(var_array->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_array, var_min, var35) /* []= on <var_array:Array[nullable Object]>*/;
 ((void (*)(val*, long, val*))(var_array->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_array, var_i, var_min_v) /* []= on <var_array:Array[nullable Object]>*/;
 } else {
 }
-var33 = 1;
-{ /* Inline kernel#Int#+ (var_i,var33) */
-var36 = var_i + var33;
-var34 = var36;
-goto RET_LABEL35;
-RET_LABEL35:(void)0;
+var36 = 1;
+{ /* Inline kernel#Int#+ (var_i,var36) */
+var39 = var_i + var36;
+var37 = var39;
+goto RET_LABEL38;
+RET_LABEL38:(void)0;
 }
-var_i = var34;
-CONTINUE_label37: (void)0;
+var_i = var37;
+CONTINUE_label40: (void)0;
 }
-BREAK_label37: (void)0;
+BREAK_label40: (void)0;
 RET_LABEL:;
 }
 /* method sorter#AbstractSorter#bubble_sort for (self: Object, Array[nullable Object], Int, Int) */
@@ -623,13 +677,15 @@ short int var1 /* : Bool */;
 int cltype;
 int idtype;
 const struct type* type_struct;
+const char* var_class_name;
 short int var2 /* : Bool */;
 int cltype3;
 int idtype4;
 const struct type* type_struct5;
+const char* var_class_name6;
 val* var_a /* var a: Comparable */;
 val* var_b /* var b: Comparable */;
-long var6 /* : Int */;
+long var7 /* : Int */;
 /* Covariant cast for argument 0 (a) <p0:Comparable> isa AbstractSorter#0 */
 /* <p0:Comparable> isa AbstractSorter#0 */
 type_struct = self->type->resolution_table->types[COLOR_sorter__AbstractSorter_FT0];
@@ -641,7 +697,9 @@ var1 = 0;
 var1 = p0->type->type_table[cltype] == idtype;
 }
 if (!var1) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/sorter.nit", 94);
+var_class_name = p0 == NULL ? "null" : p0->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractSorter#0", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/sorter.nit", 94);
 exit(1);
 }
 /* Covariant cast for argument 1 (b) <p1:Comparable> isa AbstractSorter#0 */
@@ -655,13 +713,15 @@ var2 = 0;
 var2 = p1->type->type_table[cltype3] == idtype4;
 }
 if (!var2) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/sorter.nit", 94);
+var_class_name6 = p1 == NULL ? "null" : p1->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractSorter#0", var_class_name6);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/sorter.nit", 94);
 exit(1);
 }
 var_a = p0;
 var_b = p1;
-var6 = ((long (*)(val*, val*))(var_a->class->vft[COLOR_kernel__Comparable___60d_61d_62d]))(var_a, var_b) /* <=> on <var_a:Comparable>*/;
-var = var6;
+var7 = ((long (*)(val*, val*))(var_a->class->vft[COLOR_kernel__Comparable___60d_61d_62d]))(var_a, var_b) /* <=> on <var_a:Comparable>*/;
+var = var7;
 goto RET_LABEL;
 RET_LABEL:;
 return var;