val* var1 /* : Array[MClass] */;
var1 = self->attrs[COLOR_model__Model___64dmclasses].val; /* @mclasses on <self:Model> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mclasses", "src/model/model.nit", 38);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclasses");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 38);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var1 /* : Array[MProperty] */;
var1 = self->attrs[COLOR_model__Model___64dmproperties].val; /* @mproperties on <self:Model> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mproperties", "src/model/model.nit", 41);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mproperties");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 41);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var1 /* : POSet[MClassDef] */;
var1 = self->attrs[COLOR_model__Model___64dmclassdef_hierarchy].val; /* @mclassdef_hierarchy on <self:Model> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mclassdef_hierarchy", "src/model/model.nit", 44);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclassdef_hierarchy");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 44);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var1 /* : POSet[MClassType] */;
var1 = self->attrs[COLOR_model__Model___64dintro_mtype_specialization_hierarchy].val; /* @intro_mtype_specialization_hierarchy on <self:Model> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @intro_mtype_specialization_hierarchy", "src/model/model.nit", 50);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @intro_mtype_specialization_hierarchy");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 50);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var1 /* : POSet[MClassType] */;
var1 = self->attrs[COLOR_model__Model___64dfull_mtype_specialization_hierarchy].val; /* @full_mtype_specialization_hierarchy on <self:Model> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @full_mtype_specialization_hierarchy", "src/model/model.nit", 61);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @full_mtype_specialization_hierarchy");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 61);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var1 /* : MultiHashMap[String, MClass] */;
var1 = self->attrs[COLOR_model__Model___64dmclasses_by_name].val; /* @mclasses_by_name on <self:Model> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mclasses_by_name", "src/model/model.nit", 70);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclasses_by_name");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 70);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var1 /* : MultiHashMap[String, MProperty] */;
var1 = self->attrs[COLOR_model__Model___64dmproperties_by_name].val; /* @mproperties_by_name on <self:Model> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mproperties_by_name", "src/model/model.nit", 88);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mproperties_by_name");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 88);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var1 /* : MNullType */;
var1 = self->attrs[COLOR_model__Model___64dnull_type].val; /* @null_type on <self:Model> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @null_type", "src/model/model.nit", 106);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @null_type");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 106);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var1 /* : Array[MClass] */;
var1 = self->attrs[COLOR_model__MModule___64dintro_mclasses].val; /* @intro_mclasses on <self:MModule> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @intro_mclasses", "src/model/model.nit", 111);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @intro_mclasses");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 111);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var1 /* : Array[MClassDef] */;
var1 = self->attrs[COLOR_model__MModule___64dmclassdefs].val; /* @mclassdefs on <self:MModule> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mclassdefs", "src/model/model.nit", 114);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclassdefs");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 114);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var2 /* : MModule */;
short int var3 /* : Bool */;
var_mclass = p0;
-var1 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__MModule__in_importation]))(self) /* in_importation on <self:MModule>*/;
+var1 = ((val* (*)(val*))(self->class->vft[COLOR_mmodule__MModule__in_importation]))(self) /* in_importation on <self:MModule>*/;
var2 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__intro_mmodule]))(var_mclass) /* intro_mmodule on <var_mclass:MClass>*/;
var3 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_poset__POSetElement___60d_61d]))(var1, var2) /* <= on <var1:POSetElement[MModule]>*/;
var = var3;
}
var4 = NEW_poset__POSet(&type_poset__POSetmodel__MClass);
((void (*)(val*))(var4->class->vft[COLOR_poset__POSet__init]))(var4) /* init on <var4:POSet[MClass]>*/;
-CHECK_NEW_poset__POSet(var4);
var_res = var4;
-var5 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__MModule__in_importation]))(self) /* in_importation on <self:MModule>*/;
+var5 = ((val* (*)(val*))(self->class->vft[COLOR_mmodule__MModule__in_importation]))(self) /* in_importation on <self:MModule>*/;
var6 = ((val* (*)(val*))(var5->class->vft[COLOR_poset__POSetElement__greaters]))(var5) /* greaters on <var5:POSetElement[MModule]>*/;
var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Collection__iterator]))(var6) /* iterator on <var6:Collection[Object](Collection[MModule])>*/;
for(;;) {
var_mclassdefs = p0;
var = NEW_model__MClassDefSorter(&type_model__MClassDefSorter);
((void (*)(val*, val*))(var->class->vft[COLOR_model__MClassDefSorter__init]))(var, self) /* init on <var:MClassDefSorter>*/;
-CHECK_NEW_model__MClassDefSorter(var);
var_sorter = var;
((void (*)(val*, val*))(var_sorter->class->vft[COLOR_sorter__AbstractSorter__sort]))(var_sorter, var_mclassdefs) /* sort on <var_sorter:MClassDefSorter>*/;
RET_LABEL:;
var_mpropdefs = p0;
var = NEW_model__MPropDefSorter(&type_model__MPropDefSorter);
((void (*)(val*, val*))(var->class->vft[COLOR_model__MPropDefSorter__init]))(var, self) /* init on <var:MPropDefSorter>*/;
-CHECK_NEW_model__MPropDefSorter(var);
var_sorter = var;
((void (*)(val*, val*))(var_sorter->class->vft[COLOR_sorter__AbstractSorter__sort]))(var_sorter, var_mpropdefs) /* sort on <var_sorter:MPropDefSorter>*/;
RET_LABEL:;
val* var14 /* : String */;
val* var15 /* : MClass */;
val* var16 /* : MClassType */;
-var1 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__MModule__model]))(self) /* model on <self:MModule>*/;
+var1 = ((val* (*)(val*))(self->class->vft[COLOR_mmodule__MModule__model]))(self) /* model on <self:MModule>*/;
if (varonce) {
var2 = varonce;
} else {
val* var43 /* : String */;
val* var44 /* : nullable Object */;
var_name = p0;
-var1 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__MModule__model]))(self) /* model on <self:MModule>*/;
+var1 = ((val* (*)(val*))(self->class->vft[COLOR_mmodule__MModule__model]))(self) /* model on <self:MModule>*/;
var2 = ((val* (*)(val*, val*))(var1->class->vft[COLOR_model__Model__get_mclasses_by_name]))(var1, var_name) /* get_mclasses_by_name on <var1:Model>*/;
var_cla = var2;
var3 = NULL;
var12 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__enum_kind]))(self) /* enum_kind on <self:MModule>*/;
var13 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__public_visibility]))(self) /* public_visibility on <self:MModule>*/;
((void (*)(val*, val*, val*, long, val*, val*))(var10->class->vft[COLOR_model__MClass__init]))(var10, self, var_name, var11, var12, var13) /* init on <var10:MClass>*/;
-CHECK_NEW_model__MClass(var10);
var_c = var10;
var14 = NEW_model__MClassDef(&type_model__MClassDef);
var15 = ((val* (*)(val*))(var_c->class->vft[COLOR_model__MClass__mclass_type]))(var_c) /* mclass_type on <var_c:MClass>*/;
var20 = 0;
var21 = 0;
((void (*)(val*, val*, long, long, long, long))(var16->class->vft[COLOR_location__Location__init]))(var16, var17, var18, var19, var20, var21) /* init on <var16:Location>*/;
-CHECK_NEW_location__Location(var16);
var22 = NEW_array__Array(&type_array__Arraystring__String);
((void (*)(val*))(var22->class->vft[COLOR_array__Array__init]))(var22) /* init on <var22:Array[String]>*/;
-CHECK_NEW_array__Array(var22);
((void (*)(val*, val*, val*, val*, val*))(var14->class->vft[COLOR_model__MClassDef__init]))(var14, self, var15, var16, var22) /* init on <var14:MClassDef>*/;
-CHECK_NEW_model__MClassDef(var14);
var_cladef = var14;
var = var_c;
goto RET_LABEL;
((struct instance_array__NativeArray*)var30)->values[0] = (val*) var24;
((struct instance_array__NativeArray*)var30)->values[1] = (val*) var_name;
((void (*)(val*, val*, long))(var28->class->vft[COLOR_array__Array__with_native]))(var28, var30, var29) /* with_native on <var28:Array[Object]>*/;
-CHECK_NEW_array__Array(var28);
}
var31 = ((val* (*)(val*))(var28->class->vft[COLOR_string__Object__to_s]))(var28) /* to_s on <var28:Array[Object]>*/;
((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var31) /* print on <self:MModule>*/;
} else {
}
if (var_cla == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/model/model.nit", 225);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 225);
+show_backtrace(1);
} else {
var33 = ((long (*)(val*))(var_cla->class->vft[COLOR_abstract_collection__Collection__length]))(var_cla) /* length on <var_cla:nullable Array[MClass]>*/;
}
varonce38 = var39;
}
if (var_cla == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/model/model.nit", 225);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 225);
+show_backtrace(1);
} else {
var43 = ((val* (*)(val*, val*))(var_cla->class->vft[COLOR_string__Collection__join]))(var_cla, var39) /* join on <var_cla:nullable Array[MClass]>*/;
}
((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var43) /* print on <self:MModule>*/;
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 225);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 225);
+show_backtrace(1);
}
if (var_cla == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/model/model.nit", 226);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 226);
+show_backtrace(1);
} else {
var44 = ((val* (*)(val*))(var_cla->class->vft[COLOR_abstract_collection__Collection__first]))(var_cla) /* first on <var_cla:nullable Array[MClass]>*/;
}
val* var47 /* : String */;
var_name = p0;
var_recv = p1;
-var1 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__MModule__model]))(self) /* model on <self:MModule>*/;
+var1 = ((val* (*)(val*))(self->class->vft[COLOR_mmodule__MModule__model]))(self) /* model on <self:MModule>*/;
var2 = ((val* (*)(val*, val*))(var1->class->vft[COLOR_model__Model__get_mproperties_by_name]))(var1, var_name) /* get_mproperties_by_name on <var1:Model>*/;
var_props = var2;
var3 = NULL;
var10 = var_mprop->type->type_table[cltype] == idtype;
}
if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 236);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 236);
+show_backtrace(1);
}
var11 = ((val* (*)(val*))(var_mprop->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_mprop) /* intro_mclassdef on <var_mprop:MProperty(MMethod)>*/;
var_intro = var11;
if(!var14) break;
var15 = ((val* (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__item]))(var13) /* item on <var13:Iterator[nullable Object]>*/;
var_mclassdef = var15;
-var16 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__MModule__in_importation]))(self) /* in_importation on <self:MModule>*/;
+var16 = ((val* (*)(val*))(self->class->vft[COLOR_mmodule__MModule__in_importation]))(self) /* in_importation on <self:MModule>*/;
var17 = ((val* (*)(val*))(var16->class->vft[COLOR_poset__POSetElement__greaters]))(var16) /* greaters on <var16:POSetElement[MModule]>*/;
var18 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mmodule]))(var_mclassdef) /* mmodule on <var_mclassdef:MClassDef>*/;
var19 = ((short int (*)(val*, val*))(var17->class->vft[COLOR_abstract_collection__Collection__has]))(var17, var18) /* has on <var17:Collection[Object](Collection[MModule])>*/;
}
var21 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__in_hierarchy]))(var_mclassdef) /* in_hierarchy on <var_mclassdef:MClassDef>*/;
if (var21 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/model/model.nit", 240);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 240);
+show_backtrace(1);
} else {
var22 = ((val* (*)(val*))(var21->class->vft[COLOR_poset__POSetElement__greaters]))(var21) /* greaters on <var21:nullable POSetElement[MClassDef]>*/;
}
((struct instance_array__NativeArray*)var46)->values[4] = (val*) var39;
((struct instance_array__NativeArray*)var46)->values[5] = (val*) var43;
((void (*)(val*, val*, long))(var44->class->vft[COLOR_array__Array__with_native]))(var44, var46, var45) /* with_native on <var44:Array[Object]>*/;
-CHECK_NEW_array__Array(var44);
}
var47 = ((val* (*)(val*))(var44->class->vft[COLOR_string__Object__to_s]))(var44) /* to_s on <var44:Array[Object]>*/;
((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var47) /* print on <self:MModule>*/;
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/model/model.nit", 245);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 245);
+show_backtrace(1);
} else {
}
}
val* var1 /* : MModule */;
var1 = self->attrs[COLOR_model__MClassDefSorter___64dmmodule].val; /* @mmodule on <self:MClassDefSorter> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mmodule", "src/model/model.nit", 255);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mmodule");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 255);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
short int var1 /* : Bool */;
int cltype;
int idtype;
+const char* var_class_name;
short int var2 /* : Bool */;
int cltype3;
int idtype4;
+const char* var_class_name5;
val* var_a /* var a: MClassDef */;
val* var_b /* var b: MClassDef */;
-val* var5 /* : MClass */;
-val* var_ca /* var ca: MClass */;
val* var6 /* : MClass */;
+val* var_ca /* var ca: MClass */;
+val* var7 /* : MClass */;
val* var_cb /* var cb: MClass */;
-short int var7 /* : Bool */;
-val* var8 /* : MModule */;
-val* var9 /* : POSet[MClass] */;
-long var10 /* : Int */;
-val* var11 /* : MModule */;
-val* var12 /* : Model */;
-val* var13 /* : POSet[MClassDef] */;
-long var14 /* : Int */;
+short int var8 /* : Bool */;
+val* var9 /* : MModule */;
+val* var10 /* : POSet[MClass] */;
+long var11 /* : Int */;
+val* var12 /* : MModule */;
+val* var13 /* : Model */;
+val* var14 /* : POSet[MClassDef] */;
+long var15 /* : Int */;
/* Covariant cast for argument 0 (a) <p0:MClassDef> isa AbstractSorter#0 */
/* <p0:MClassDef> isa AbstractSorter#0 */
var1 = 1; /* easy <p0:MClassDef> isa AbstractSorter#0*/
if (!var1) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/model/model.nit", 256);
-exit(1);
+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", "src/model/model.nit", 256);
+show_backtrace(1);
}
/* Covariant cast for argument 1 (b) <p1:MClassDef> isa AbstractSorter#0 */
/* <p1:MClassDef> isa AbstractSorter#0 */
var2 = 1; /* easy <p1:MClassDef> isa AbstractSorter#0*/
if (!var2) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/model/model.nit", 256);
-exit(1);
+var_class_name5 = p1 == NULL ? "null" : p1->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractSorter#0", var_class_name5);
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 256);
+show_backtrace(1);
}
var_a = p0;
var_b = p1;
-var5 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MClassDef__mclass]))(var_a) /* mclass on <var_a:MClassDef>*/;
-var_ca = var5;
-var6 = ((val* (*)(val*))(var_b->class->vft[COLOR_model__MClassDef__mclass]))(var_b) /* mclass on <var_b:MClassDef>*/;
-var_cb = var6;
-var7 = ((short int (*)(val*, val*))(var_ca->class->vft[COLOR_kernel__Object___33d_61d]))(var_ca, var_cb) /* != on <var_ca:MClass>*/;
-if (var7){
-var8 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDefSorter__mmodule]))(self) /* mmodule on <self:MClassDefSorter>*/;
-var9 = ((val* (*)(val*))(var8->class->vft[COLOR_model__MModule__flatten_mclass_hierarchy]))(var8) /* flatten_mclass_hierarchy on <var8:MModule>*/;
-var10 = ((long (*)(val*, val*, val*))(var9->class->vft[COLOR_sorter__AbstractSorter__compare]))(var9, var_ca, var_cb) /* compare on <var9:POSet[MClass]>*/;
-var = var10;
+var6 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MClassDef__mclass]))(var_a) /* mclass on <var_a:MClassDef>*/;
+var_ca = var6;
+var7 = ((val* (*)(val*))(var_b->class->vft[COLOR_model__MClassDef__mclass]))(var_b) /* mclass on <var_b:MClassDef>*/;
+var_cb = var7;
+var8 = ((short int (*)(val*, val*))(var_ca->class->vft[COLOR_kernel__Object___33d_61d]))(var_ca, var_cb) /* != on <var_ca:MClass>*/;
+if (var8){
+var9 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDefSorter__mmodule]))(self) /* mmodule on <self:MClassDefSorter>*/;
+var10 = ((val* (*)(val*))(var9->class->vft[COLOR_model__MModule__flatten_mclass_hierarchy]))(var9) /* flatten_mclass_hierarchy on <var9:MModule>*/;
+var11 = ((long (*)(val*, val*, val*))(var10->class->vft[COLOR_sorter__AbstractSorter__compare]))(var10, var_ca, var_cb) /* compare on <var10:POSet[MClass]>*/;
+var = var11;
goto RET_LABEL;
} else {
}
-var11 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDefSorter__mmodule]))(self) /* mmodule on <self:MClassDefSorter>*/;
-var12 = ((val* (*)(val*))(var11->class->vft[COLOR_model_base__MModule__model]))(var11) /* model on <var11:MModule>*/;
-var13 = ((val* (*)(val*))(var12->class->vft[COLOR_model__Model__mclassdef_hierarchy]))(var12) /* mclassdef_hierarchy on <var12:Model>*/;
-var14 = ((long (*)(val*, val*, val*))(var13->class->vft[COLOR_sorter__AbstractSorter__compare]))(var13, var_a, var_b) /* compare on <var13:POSet[MClassDef]>*/;
-var = var14;
+var12 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDefSorter__mmodule]))(self) /* mmodule on <self:MClassDefSorter>*/;
+var13 = ((val* (*)(val*))(var12->class->vft[COLOR_mmodule__MModule__model]))(var12) /* model on <var12:MModule>*/;
+var14 = ((val* (*)(val*))(var13->class->vft[COLOR_model__Model__mclassdef_hierarchy]))(var13) /* mclassdef_hierarchy on <var13:Model>*/;
+var15 = ((long (*)(val*, val*, val*))(var14->class->vft[COLOR_sorter__AbstractSorter__compare]))(var14, var_a, var_b) /* compare on <var14:POSet[MClassDef]>*/;
+var = var15;
goto RET_LABEL;
RET_LABEL:;
return var;
val* var1 /* : MModule */;
var1 = self->attrs[COLOR_model__MPropDefSorter___64dmmodule].val; /* @mmodule on <self:MPropDefSorter> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mmodule", "src/model/model.nit", 267);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mmodule");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 267);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
short int var1 /* : Bool */;
int cltype;
int idtype;
+const char* var_class_name;
short int var2 /* : Bool */;
int cltype3;
int idtype4;
+const char* var_class_name5;
val* var_pa /* var pa: MPropDef */;
val* var_pb /* var pb: MPropDef */;
-val* var5 /* : MClassDef */;
-val* var_a /* var a: MClassDef */;
val* var6 /* : MClassDef */;
+val* var_a /* var a: MClassDef */;
+val* var7 /* : MClassDef */;
val* var_b /* var b: MClassDef */;
-val* var7 /* : MClass */;
-val* var_ca /* var ca: MClass */;
val* var8 /* : MClass */;
+val* var_ca /* var ca: MClass */;
+val* var9 /* : MClass */;
val* var_cb /* var cb: MClass */;
-short int var9 /* : Bool */;
-val* var10 /* : MModule */;
-val* var11 /* : POSet[MClass] */;
-long var12 /* : Int */;
-val* var13 /* : MModule */;
-val* var14 /* : Model */;
-val* var15 /* : POSet[MClassDef] */;
-long var16 /* : Int */;
+short int var10 /* : Bool */;
+val* var11 /* : MModule */;
+val* var12 /* : POSet[MClass] */;
+long var13 /* : Int */;
+val* var14 /* : MModule */;
+val* var15 /* : Model */;
+val* var16 /* : POSet[MClassDef] */;
+long var17 /* : Int */;
/* Covariant cast for argument 0 (pa) <p0:MPropDef> isa AbstractSorter#0 */
/* <p0:MPropDef> isa AbstractSorter#0 */
var1 = 1; /* easy <p0:MPropDef> isa AbstractSorter#0*/
if (!var1) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/model/model.nit", 268);
-exit(1);
+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", "src/model/model.nit", 268);
+show_backtrace(1);
}
/* Covariant cast for argument 1 (pb) <p1:MPropDef> isa AbstractSorter#0 */
/* <p1:MPropDef> isa AbstractSorter#0 */
var2 = 1; /* easy <p1:MPropDef> isa AbstractSorter#0*/
if (!var2) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/model/model.nit", 268);
-exit(1);
+var_class_name5 = p1 == NULL ? "null" : p1->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractSorter#0", var_class_name5);
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 268);
+show_backtrace(1);
}
var_pa = p0;
var_pb = p1;
-var5 = ((val* (*)(val*))(var_pa->class->vft[COLOR_model__MPropDef__mclassdef]))(var_pa) /* mclassdef on <var_pa:MPropDef>*/;
-var_a = var5;
-var6 = ((val* (*)(val*))(var_pb->class->vft[COLOR_model__MPropDef__mclassdef]))(var_pb) /* mclassdef on <var_pb:MPropDef>*/;
-var_b = var6;
-var7 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MClassDef__mclass]))(var_a) /* mclass on <var_a:MClassDef>*/;
-var_ca = var7;
-var8 = ((val* (*)(val*))(var_b->class->vft[COLOR_model__MClassDef__mclass]))(var_b) /* mclass on <var_b:MClassDef>*/;
-var_cb = var8;
-var9 = ((short int (*)(val*, val*))(var_ca->class->vft[COLOR_kernel__Object___33d_61d]))(var_ca, var_cb) /* != on <var_ca:MClass>*/;
-if (var9){
-var10 = ((val* (*)(val*))(self->class->vft[COLOR_model__MPropDefSorter__mmodule]))(self) /* mmodule on <self:MPropDefSorter>*/;
-var11 = ((val* (*)(val*))(var10->class->vft[COLOR_model__MModule__flatten_mclass_hierarchy]))(var10) /* flatten_mclass_hierarchy on <var10:MModule>*/;
-var12 = ((long (*)(val*, val*, val*))(var11->class->vft[COLOR_sorter__AbstractSorter__compare]))(var11, var_ca, var_cb) /* compare on <var11:POSet[MClass]>*/;
-var = var12;
+var6 = ((val* (*)(val*))(var_pa->class->vft[COLOR_model__MPropDef__mclassdef]))(var_pa) /* mclassdef on <var_pa:MPropDef>*/;
+var_a = var6;
+var7 = ((val* (*)(val*))(var_pb->class->vft[COLOR_model__MPropDef__mclassdef]))(var_pb) /* mclassdef on <var_pb:MPropDef>*/;
+var_b = var7;
+var8 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MClassDef__mclass]))(var_a) /* mclass on <var_a:MClassDef>*/;
+var_ca = var8;
+var9 = ((val* (*)(val*))(var_b->class->vft[COLOR_model__MClassDef__mclass]))(var_b) /* mclass on <var_b:MClassDef>*/;
+var_cb = var9;
+var10 = ((short int (*)(val*, val*))(var_ca->class->vft[COLOR_kernel__Object___33d_61d]))(var_ca, var_cb) /* != on <var_ca:MClass>*/;
+if (var10){
+var11 = ((val* (*)(val*))(self->class->vft[COLOR_model__MPropDefSorter__mmodule]))(self) /* mmodule on <self:MPropDefSorter>*/;
+var12 = ((val* (*)(val*))(var11->class->vft[COLOR_model__MModule__flatten_mclass_hierarchy]))(var11) /* flatten_mclass_hierarchy on <var11:MModule>*/;
+var13 = ((long (*)(val*, val*, val*))(var12->class->vft[COLOR_sorter__AbstractSorter__compare]))(var12, var_ca, var_cb) /* compare on <var12:POSet[MClass]>*/;
+var = var13;
goto RET_LABEL;
} else {
}
-var13 = ((val* (*)(val*))(self->class->vft[COLOR_model__MPropDefSorter__mmodule]))(self) /* mmodule on <self:MPropDefSorter>*/;
-var14 = ((val* (*)(val*))(var13->class->vft[COLOR_model_base__MModule__model]))(var13) /* model on <var13:MModule>*/;
-var15 = ((val* (*)(val*))(var14->class->vft[COLOR_model__Model__mclassdef_hierarchy]))(var14) /* mclassdef_hierarchy on <var14:Model>*/;
-var16 = ((long (*)(val*, val*, val*))(var15->class->vft[COLOR_sorter__AbstractSorter__compare]))(var15, var_a, var_b) /* compare on <var15:POSet[MClassDef]>*/;
-var = var16;
+var14 = ((val* (*)(val*))(self->class->vft[COLOR_model__MPropDefSorter__mmodule]))(self) /* mmodule on <self:MPropDefSorter>*/;
+var15 = ((val* (*)(val*))(var14->class->vft[COLOR_mmodule__MModule__model]))(var14) /* model on <var14:MModule>*/;
+var16 = ((val* (*)(val*))(var15->class->vft[COLOR_model__Model__mclassdef_hierarchy]))(var15) /* mclassdef_hierarchy on <var15:Model>*/;
+var17 = ((long (*)(val*, val*, val*))(var16->class->vft[COLOR_sorter__AbstractSorter__compare]))(var16, var_a, var_b) /* compare on <var16:POSet[MClassDef]>*/;
+var = var17;
goto RET_LABEL;
RET_LABEL:;
return var;
val* var1 /* : MModule */;
var1 = self->attrs[COLOR_model__MClass___64dintro_mmodule].val; /* @intro_mmodule on <self:MClass> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @intro_mmodule", "src/model/model.nit", 290);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @intro_mmodule");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 290);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var1 /* : String */;
var1 = self->attrs[COLOR_model__MClass___64dname].val; /* @name on <self:MClass> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @name", "src/model/model.nit", 295);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @name");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 295);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
var1 = NEW_array__Array(&type_array__Arraykernel__Object);
var2 = 5;
((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
-CHECK_NEW_array__Array(var1);
var_ = var1;
if (varonce) {
var3 = varonce;
}
((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
var7 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__intro_mmodule]))(self) /* intro_mmodule on <self:MClass>*/;
-var8 = ((val* (*)(val*))(var7->class->vft[COLOR_model_base__MModule__full_name]))(var7) /* full_name on <var7:MModule>*/;
+var8 = ((val* (*)(val*))(var7->class->vft[COLOR_mmodule__MModule__full_name]))(var7) /* full_name on <var7:MModule>*/;
((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var8) /* add on <var_:Array[Object]>*/;
if (varonce9) {
var10 = varonce9;
val* var1 /* : MClassKind */;
var1 = self->attrs[COLOR_model__MClass___64dkind].val; /* @kind on <self:MClass> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @kind", "src/model/model.nit", 310);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @kind");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 310);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var1 /* : MVisibility */;
var1 = self->attrs[COLOR_model__MClass___64dvisibility].val; /* @visibility on <self:MClass> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @visibility", "src/model/model.nit", 314);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @visibility");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 314);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
short int var7 /* : Bool */;
int cltype;
int idtype;
+const char* var_class_name;
short int var8 /* : Bool */;
val* var9 /* : Array[MParameterType] */;
val* var_mparametertypes /* var mparametertypes: Array[MParameterType] */;
((void (*)(val*, val*))(self->class->vft[COLOR_model__MClass__visibility_61d]))(self, var_visibility) /* visibility= on <self:MClass>*/;
var = ((val* (*)(val*))(var_intro_mmodule->class->vft[COLOR_model__MModule__intro_mclasses]))(var_intro_mmodule) /* intro_mclasses on <var_intro_mmodule:MModule>*/;
((void (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var, self) /* add on <var:Array[MClass]>*/;
-var1 = ((val* (*)(val*))(var_intro_mmodule->class->vft[COLOR_model_base__MModule__model]))(var_intro_mmodule) /* model on <var_intro_mmodule:MModule>*/;
+var1 = ((val* (*)(val*))(var_intro_mmodule->class->vft[COLOR_mmodule__MModule__model]))(var_intro_mmodule) /* model on <var_intro_mmodule:MModule>*/;
var_model = var1;
var2 = ((val* (*)(val*))(var_model->class->vft[COLOR_model__Model__mclasses_by_name]))(var_model) /* mclasses_by_name on <var_model:Model>*/;
((void (*)(val*, val*, val*))(var2->class->vft[COLOR_more_collections__MultiHashMap__add_one]))(var2, var_name, self) /* add_one on <var2:MultiHashMap[String, MClass]>*/;
/* <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", 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", 267);
+show_backtrace(1);
}
var8 = var_arity > var4;
var5 = var8;
if (var5){
var9 = NEW_array__Array(&type_array__Arraymodel__MParameterType);
((void (*)(val*))(var9->class->vft[COLOR_array__Array__init]))(var9) /* init on <var9:Array[MParameterType]>*/;
-CHECK_NEW_array__Array(var9);
var_mparametertypes = var9;
var10 = NEW_range__Range(&type_range__Rangekernel__Int);
var11 = 0;
var12 = BOX_kernel__Int(var11); /* autobox from Int to Discrete */
var13 = BOX_kernel__Int(var_arity); /* autobox from Int to Discrete */
((void (*)(val*, val*, val*))(var10->class->vft[COLOR_range__Range__without_last]))(var10, var12, var13) /* without_last on <var10:Range[Int]>*/;
-CHECK_NEW_range__Range(var10);
var14 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Collection__iterator]))(var10) /* iterator on <var10:Range[Int]>*/;
for(;;) {
var15 = ((short int (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var14) /* is_ok on <var14:Iterator[nullable Object]>*/;
var_i = var17;
var18 = NEW_model__MParameterType(&type_model__MParameterType);
((void (*)(val*, val*, long))(var18->class->vft[COLOR_model__MParameterType__init]))(var18, self, var_i) /* init on <var18:MParameterType>*/;
-CHECK_NEW_model__MParameterType(var18);
var_mparametertype = var18;
((void (*)(val*, val*))(var_mparametertypes->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_mparametertypes, var_mparametertype) /* add on <var_mparametertypes:Array[MParameterType]>*/;
CONTINUE_label: (void)0;
BREAK_label: (void)0;
var19 = NEW_model__MGenericType(&type_model__MGenericType);
((void (*)(val*, val*, val*))(var19->class->vft[COLOR_model__MGenericType__init]))(var19, self, var_mparametertypes) /* init on <var19:MGenericType>*/;
-CHECK_NEW_model__MGenericType(var19);
var_mclass_type = var19;
((void (*)(val*, val*))(self->class->vft[COLOR_model__MClass__mclass_type_61d]))(self, var_mclass_type) /* mclass_type= on <self:MClass>*/;
var20 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__get_mtype_cache]))(self) /* get_mtype_cache on <self:MClass>*/;
} else {
var21 = NEW_model__MClassType(&type_model__MClassType);
((void (*)(val*, val*))(var21->class->vft[COLOR_model__MClassType__init]))(var21, self) /* init on <var21:MClassType>*/;
-CHECK_NEW_model__MClassType(var21);
((void (*)(val*, val*))(self->class->vft[COLOR_model__MClass__mclass_type_61d]))(self, var21) /* mclass_type= on <self:MClass>*/;
}
RET_LABEL:;
val* var1 /* : Array[MClassDef] */;
var1 = self->attrs[COLOR_model__MClass___64dmclassdefs].val; /* @mclassdefs on <self:MClass> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mclassdefs", "src/model/model.nit", 345);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclassdefs");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 345);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var1) /* is_empty on <var1:Array[MClassDef]>*/;
var3 = !var2;
if (!var3) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert \'has_a_first_definition\' failed", "src/model/model.nit", 357);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert \'has_a_first_definition\' failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 357);
+show_backtrace(1);
}
var4 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__mclassdefs]))(self) /* mclassdefs on <self:MClass>*/;
var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Collection__first]))(var4) /* first on <var4:Array[MClassDef]>*/;
val* var1 /* : MClassType */;
var1 = self->attrs[COLOR_model__MClass___64dmclass_type].val; /* @mclass_type on <self:MClass> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mclass_type", "src/model/model.nit", 370);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclass_type");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 370);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
RET_LABEL4:(void)0;
}
if (!var3) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 393);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 393);
+show_backtrace(1);
}
var6 = ((long (*)(val*))(self->class->vft[COLOR_model__MClass__arity]))(self) /* arity on <self:MClass>*/;
var7 = 0;
BREAK_label: (void)0;
var18 = NEW_model__MGenericType(&type_model__MGenericType);
((void (*)(val*, val*, val*))(var18->class->vft[COLOR_model__MGenericType__init]))(var18, self, var_mtype_arguments) /* init on <var18:MGenericType>*/;
-CHECK_NEW_model__MGenericType(var18);
var_res = var18;
var19 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__get_mtype_cache]))(self) /* get_mtype_cache on <self:MClass>*/;
((void (*)(val*, val*))(var19->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var19, var_res) /* add on <var19:Array[MGenericType]>*/;
val* var1 /* : Array[MGenericType] */;
var1 = self->attrs[COLOR_model__MClass___64dget_mtype_cache].val; /* @get_mtype_cache on <self:MClass> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @get_mtype_cache", "src/model/model.nit", 405);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @get_mtype_cache");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 405);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var1 /* : MModule */;
var1 = self->attrs[COLOR_model__MClassDef___64dmmodule].val; /* @mmodule on <self:MClassDef> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mmodule", "src/model/model.nit", 415);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mmodule");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 415);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var1 /* : MClass */;
var1 = self->attrs[COLOR_model__MClassDef___64dmclass].val; /* @mclass on <self:MClassDef> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mclass", "src/model/model.nit", 418);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclass");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 418);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var1 /* : MClassType */;
var1 = self->attrs[COLOR_model__MClassDef___64dbound_mtype].val; /* @bound_mtype on <self:MClassDef> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @bound_mtype", "src/model/model.nit", 421);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @bound_mtype");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 421);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var1 /* : Array[String] */;
var1 = self->attrs[COLOR_model__MClassDef___64dparameter_names].val; /* @parameter_names on <self:MClassDef> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @parameter_names", "src/model/model.nit", 433);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @parameter_names");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 433);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var1 /* : Location */;
var1 = self->attrs[COLOR_model__MClassDef___64dlocation].val; /* @location on <self:MClassDef> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @location", "src/model/model.nit", 436);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @location");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 436);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var1 /* : String */;
var1 = self->attrs[COLOR_model__MClassDef___64dto_s].val; /* @to_s on <self:MClassDef> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @to_s", "src/model/model.nit", 439);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @to_s");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 439);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
RET_LABEL4:(void)0;
}
if (!var3) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 445);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 445);
+show_backtrace(1);
}
((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassDef__bound_mtype_61d]))(self, var_bound_mtype) /* bound_mtype= on <self:MClassDef>*/;
((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassDef__mmodule_61d]))(self, var_mmodule) /* mmodule= on <self:MClassDef>*/;
((struct instance_array__NativeArray*)var17)->values[1] = (val*) var10;
((struct instance_array__NativeArray*)var17)->values[2] = (val*) var14;
((void (*)(val*, val*, long))(var15->class->vft[COLOR_array__Array__with_native]))(var15, var17, var16) /* with_native on <var15:Array[Object]>*/;
-CHECK_NEW_array__Array(var15);
}
var18 = ((val* (*)(val*))(var15->class->vft[COLOR_string__Object__to_s]))(var15) /* to_s on <var15:Array[Object]>*/;
((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassDef__to_s_61d]))(self, var18) /* to_s= on <self:MClassDef>*/;
val* var1 /* : Array[MClassType] */;
var1 = self->attrs[COLOR_model__MClassDef___64dsupertypes].val; /* @supertypes on <self:MClassDef> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @supertypes", "src/model/model.nit", 456);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @supertypes");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 456);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
var2 = 0; /* arg is null but recv is not */
}
if (!var2) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert \'unique_invocation\' failed", "src/model/model.nit", 466);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert \'unique_invocation\' failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 466);
+show_backtrace(1);
}
var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDef__mmodule]))(self) /* mmodule on <self:MClassDef>*/;
var_mmodule = var3;
-var4 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model_base__MModule__model]))(var_mmodule) /* model on <var_mmodule:MModule>*/;
+var4 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__model]))(var_mmodule) /* model on <var_mmodule:MModule>*/;
var_model = var4;
var5 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDef__bound_mtype]))(self) /* bound_mtype on <self:MClassDef>*/;
var_mtype = var5;
var2 = 0; /* arg is null but recv is not */
}
if (!var2) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert \'unique_invocation\' failed", "src/model/model.nit", 491);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert \'unique_invocation\' failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 491);
+show_backtrace(1);
}
var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDef__mmodule]))(self) /* mmodule on <self:MClassDef>*/;
-var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model_base__MModule__model]))(var3) /* model on <var3:MModule>*/;
+var4 = ((val* (*)(val*))(var3->class->vft[COLOR_mmodule__MModule__model]))(var3) /* model on <var3:MModule>*/;
var_model = var4;
var5 = ((val* (*)(val*))(var_model->class->vft[COLOR_model__Model__mclassdef_hierarchy]))(var_model) /* mclassdef_hierarchy on <var_model:Model>*/;
var6 = ((val* (*)(val*, val*))(var5->class->vft[COLOR_poset__POSet__add_node]))(var5, self) /* add_node on <var5:POSet[MClassDef]>*/;
val* var1 /* : Array[MProperty] */;
var1 = self->attrs[COLOR_model__MClassDef___64dintro_mproperties].val; /* @intro_mproperties on <self:MClassDef> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @intro_mproperties", "src/model/model.nit", 510);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @intro_mproperties");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 510);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var1 /* : Array[MPropDef] */;
var1 = self->attrs[COLOR_model__MClassDef___64dmpropdefs].val; /* @mpropdefs on <self:MClassDef> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mpropdefs", "src/model/model.nit", 513);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mpropdefs");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 513);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
/* method model#MType#model for (self: MType): Model */
val* model__MType__model(val* self) {
val* var /* : Model */;
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/model/model.nit", 546);
-exit(1);
+const char* var_class_name;
+var_class_name = self == NULL ? "null" : self->type->name;
+fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "model", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 546);
+show_backtrace(1);
RET_LABEL:;
return var;
}
var5 = ((short int (*)(val*))(var_sub->class->vft[COLOR_model__MType__need_anchor]))(var_sub) /* need_anchor on <var_sub:MType>*/;
var6 = !var5;
if (!var6) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 559);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 559);
+show_backtrace(1);
}
var7 = ((short int (*)(val*))(var_sup->class->vft[COLOR_model__MType__need_anchor]))(var_sup) /* need_anchor on <var_sup:MType>*/;
var8 = !var7;
if (!var8) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 560);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 560);
+show_backtrace(1);
}
} else {
var9 = NULL;
var10 = ((short int (*)(val*, val*, val*, val*))(var_sub->class->vft[COLOR_model__MType__can_resolve_for]))(var_sub, var_anchor, var9, var_mmodule) /* can_resolve_for on <var_sub:MType>*/;
if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 562);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 562);
+show_backtrace(1);
}
var11 = NULL;
var12 = ((short int (*)(val*, val*, val*, val*))(var_sup->class->vft[COLOR_model__MType__can_resolve_for]))(var_sup, var_anchor, var11, var_mmodule) /* can_resolve_for on <var_sup:MType>*/;
if (!var12) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 563);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 563);
+show_backtrace(1);
}
}
/* <var_sub:MType> isa MParameterType */
var19 = 1; /* arg is null and recv is not */
}
if (!var19) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 570);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 570);
+show_backtrace(1);
}
var20 = ((val* (*)(val*))(var_anchor->class->vft[COLOR_model__MClassType__mclass]))(var_anchor) /* mclass on <var_anchor:nullable MClassType(MClassType)>*/;
var21 = ((val* (*)(val*))(var20->class->vft[COLOR_model__MClass__mclass_type]))(var20) /* mclass_type on <var20:MClass>*/;
var33 = 1; /* arg is null and recv is not */
}
if (!var33) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 574);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 574);
+show_backtrace(1);
}
var34 = ((val* (*)(val*))(var_anchor->class->vft[COLOR_model__MClassType__mclass]))(var_anchor) /* mclass on <var_anchor:nullable MClassType(MClassType)>*/;
var35 = ((val* (*)(val*))(var34->class->vft[COLOR_model__MClass__mclass_type]))(var34) /* mclass_type on <var34:MClass>*/;
var75 = 1; /* arg is null and recv is not */
}
if (!var75) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 606);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 606);
+show_backtrace(1);
}
var76 = ((val* (*)(val*, val*, val*))(var_sub->class->vft[COLOR_model__MType__anchor_to]))(var_sub, var_mmodule, var_anchor) /* anchor_to on <var_sub:MType>*/;
var_sub = var76;
var86 = var_sub->type->type_table[cltype87] == idtype88;
}
if (!var86) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 618);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 618);
+show_backtrace(1);
}
/* <var_sup:MType> isa MNullType */
cltype90 = type_model__MNullType.color;
var93 = var_sup->type->type_table[cltype94] == idtype95;
}
if (!var93) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 625);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 625);
+show_backtrace(1);
}
var96 = ((short int (*)(val*, val*))(var_sub->class->vft[COLOR_kernel__Object___61d_61d]))(var_sub, var_sup) /* == on <var_sub:MType(MClassType)>*/;
if (var96){
var117 = ((val* (*)(val*))(var_sup->class->vft[COLOR_model__MClassType__mclass]))(var_sup) /* mclass on <var_sup:MType(MGenericType)>*/;
var118 = ((short int (*)(val*, val*))(var116->class->vft[COLOR_kernel__Object___61d_61d]))(var116, var117) /* == on <var116:MClass>*/;
if (!var118) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 637);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 637);
+show_backtrace(1);
}
var119 = NEW_range__Range(&type_range__Rangekernel__Int);
var120 = 0;
var123 = BOX_kernel__Int(var120); /* autobox from Int to Discrete */
var124 = BOX_kernel__Int(var122); /* autobox from Int to Discrete */
((void (*)(val*, val*, val*))(var119->class->vft[COLOR_range__Range__without_last]))(var119, var123, var124) /* without_last on <var119:Range[Int]>*/;
-CHECK_NEW_range__Range(var119);
var125 = ((val* (*)(val*))(var119->class->vft[COLOR_abstract_collection__Collection__iterator]))(var119) /* iterator on <var119:Range[Int]>*/;
for(;;) {
var126 = ((short int (*)(val*))(var125->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var125) /* is_ok on <var125:Iterator[nullable Object]>*/;
var3 = ((short int (*)(val*))(var_anchor->class->vft[COLOR_model__MType__need_anchor]))(var_anchor) /* need_anchor on <var_anchor:MClassType>*/;
var4 = !var3;
if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 682);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 682);
+show_backtrace(1);
}
var5 = NULL;
var6 = 1;
var8 = ((short int (*)(val*))(var_res->class->vft[COLOR_model__MType__need_anchor]))(var_res) /* need_anchor on <var_res:MType>*/;
var9 = !var8;
if (!var9) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 685);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 685);
+show_backtrace(1);
}
var = var_res;
goto RET_LABEL;
var13 = 1; /* arg is null and recv is not */
}
if (!var13) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 711);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 711);
+show_backtrace(1);
}
var14 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_model__MType__anchor_to]))(self, var_mmodule, var_anchor) /* anchor_to on <self:MType>*/;
var_resolved_self = var14;
((void (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__next]))(var16) /* next on <var16:Iterator[nullable Object]>*/;
}
BREAK_label: (void)0;
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/model/model.nit", 723);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 723);
+show_backtrace(1);
RET_LABEL:;
return var;
}
/* method model#MType#resolve_for for (self: MType, MType, nullable MClassType, MModule, Bool): MType */
val* model__MType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
val* var /* : MType */;
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/model/model.nit", 726);
-exit(1);
+const char* var_class_name;
+var_class_name = self == NULL ? "null" : self->type->name;
+fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "resolve_for", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 726);
+show_backtrace(1);
RET_LABEL:;
return var;
}
/* method model#MType#can_resolve_for for (self: MType, MType, nullable MClassType, MModule): Bool */
short int model__MType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
short int var /* : Bool */;
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/model/model.nit", 798);
-exit(1);
+const char* var_class_name;
+var_class_name = self == NULL ? "null" : self->type->name;
+fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "can_resolve_for", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 798);
+show_backtrace(1);
RET_LABEL:;
return var;
}
}
var4 = NEW_model__MNullableType(&type_model__MNullableType);
((void (*)(val*, val*))(var4->class->vft[COLOR_model__MNullableType__init]))(var4, self) /* init on <var4:MNullableType>*/;
-CHECK_NEW_model__MNullableType(var4);
var_res = var4;
((void (*)(val*, val*))(self->class->vft[COLOR_model__MType__as_nullable_cache_61d]))(self, var_res) /* as_nullable_cache= on <self:MType>*/;
var = var_res;
/* method model#MType#collect_mclassdefs for (self: MType, MModule): Set[MClassDef] */
val* model__MType__collect_mclassdefs(val* self, val* p0) {
val* var /* : Set[MClassDef] */;
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/model/model.nit", 860);
-exit(1);
+const char* var_class_name;
+var_class_name = self == NULL ? "null" : self->type->name;
+fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "collect_mclassdefs", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 860);
+show_backtrace(1);
RET_LABEL:;
return var;
}
/* method model#MType#collect_mclasses for (self: MType, MModule): Set[MClass] */
val* model__MType__collect_mclasses(val* self, val* p0) {
val* var /* : Set[MClass] */;
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/model/model.nit", 870);
-exit(1);
+const char* var_class_name;
+var_class_name = self == NULL ? "null" : self->type->name;
+fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "collect_mclasses", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 870);
+show_backtrace(1);
RET_LABEL:;
return var;
}
/* method model#MType#collect_mtypes for (self: MType, MModule): Set[MClassType] */
val* model__MType__collect_mtypes(val* self, val* p0) {
val* var /* : Set[MClassType] */;
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/model/model.nit", 876);
-exit(1);
+const char* var_class_name;
+var_class_name = self == NULL ? "null" : self->type->name;
+fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "collect_mtypes", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 876);
+show_backtrace(1);
RET_LABEL:;
return var;
}
var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MType>*/;
var2 = !var1;
if (!var2) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 889);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 889);
+show_backtrace(1);
}
var3 = ((val* (*)(val*, val*))(self->class->vft[COLOR_model__MType__collect_mclassdefs]))(self, var_mmodule) /* collect_mclassdefs on <self:MType>*/;
var4 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_mproperty) /* intro_mclassdef on <var_mproperty:MProperty>*/;
val* var1 /* : MClass */;
var1 = self->attrs[COLOR_model__MClassType___64dmclass].val; /* @mclass on <self:MClassType> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mclass", "src/model/model.nit", 900);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclass");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 900);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var3 /* : Model */;
var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MClass__intro_mmodule]))(var1) /* intro_mmodule on <var1:MClass>*/;
-var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model_base__MModule__model]))(var2) /* model on <var2:MModule>*/;
+var3 = ((val* (*)(val*))(var2->class->vft[COLOR_mmodule__MModule__model]))(var2) /* model on <var2:MModule>*/;
var = var3;
goto RET_LABEL;
RET_LABEL:;
val* var1 /* : Array[MType] */;
var1 = self->attrs[COLOR_model__MClassType___64darguments].val; /* @arguments on <self:MClassType> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @arguments", "src/model/model.nit", 910);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @arguments");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 910);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
short int var2 /* : Bool */;
int cltype;
int idtype;
+const char* var_class_name;
var_mmodule = p0;
var_anchor = p1;
var1 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_model__MClassType__anchor_to]))(self, p0, p1) /* anchor_to on <self:MClassType>*/;
var2 = var1->type->type_table[cltype] == idtype;
}
if (!var2) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/model/model.nit", 920);
-exit(1);
+var_class_name = var1 == NULL ? "null" : var1->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 920);
+show_backtrace(1);
}
var = var1;
goto RET_LABEL;
var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MClassType>*/;
var2 = !var1;
if (!var2) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 929);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 929);
+show_backtrace(1);
}
var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__collect_mclassdefs_cache]))(self) /* collect_mclassdefs_cache on <self:MClassType>*/;
var_cache = var3;
var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MClassType>*/;
var2 = !var1;
if (!var2) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 939);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 939);
+show_backtrace(1);
}
var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__collect_mclasses_cache]))(self) /* collect_mclasses_cache on <self:MClassType>*/;
var_cache = var3;
var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MClassType>*/;
var2 = !var1;
if (!var2) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 949);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 949);
+show_backtrace(1);
}
var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__collect_mtypes_cache]))(self) /* collect_mtypes_cache on <self:MClassType>*/;
var_cache = var3;
var_mmodule = p0;
var = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClassDef);
((void (*)(val*))(var->class->vft[COLOR_hash_collection__HashSet__init]))(var) /* init on <var:HashSet[MClassDef]>*/;
-CHECK_NEW_hash_collection__HashSet(var);
var_res = var;
var1 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClass);
((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashSet__init]))(var1) /* init on <var1:HashSet[MClass]>*/;
-CHECK_NEW_hash_collection__HashSet(var1);
var_seen = var1;
var2 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClassType);
((void (*)(val*))(var2->class->vft[COLOR_hash_collection__HashSet__init]))(var2) /* init on <var2:HashSet[MClassType]>*/;
-CHECK_NEW_hash_collection__HashSet(var2);
var_types = var2;
var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
((void (*)(val*, val*))(var_seen->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_seen, var3) /* add on <var_seen:HashSet[MClass]>*/;
var4 = NEW_array__Array(&type_array__Arraymodel__MClass);
var5 = 1;
((void (*)(val*, long))(var4->class->vft[COLOR_array__Array__with_capacity]))(var4, var5) /* with_capacity on <var4:Array[MClass]>*/;
-CHECK_NEW_array__Array(var4);
var_ = var4;
var6 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var6) /* push on <var_:Array[MClass]>*/;
if(!var12) break;
var13 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__item]))(var11) /* item on <var11:Iterator[nullable Object]>*/;
var_mclassdef = var13;
-var14 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model_base__MModule__in_importation]))(var_mmodule) /* in_importation on <var_mmodule:MModule>*/;
+var14 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__in_importation]))(var_mmodule) /* in_importation on <var_mmodule:MModule>*/;
var15 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mmodule]))(var_mclassdef) /* mmodule on <var_mclassdef:MClassDef>*/;
var16 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_poset__POSetElement___60d_61d]))(var14, var15) /* <= on <var14:POSetElement[MModule]>*/;
var17 = !var16;
val* var1 /* : HashMap[MModule, Set[MClassDef]] */;
var1 = self->attrs[COLOR_model__MClassType___64dcollect_mclassdefs_cache].val; /* @collect_mclassdefs_cache on <self:MClassType> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @collect_mclassdefs_cache", "src/model/model.nit", 987);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @collect_mclassdefs_cache");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 987);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var1 /* : HashMap[MModule, Set[MClass]] */;
var1 = self->attrs[COLOR_model__MClassType___64dcollect_mclasses_cache].val; /* @collect_mclasses_cache on <self:MClassType> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @collect_mclasses_cache", "src/model/model.nit", 988);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @collect_mclasses_cache");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 988);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var1 /* : HashMap[MModule, Set[MClassType]] */;
var1 = self->attrs[COLOR_model__MClassType___64dcollect_mtypes_cache].val; /* @collect_mtypes_cache on <self:MClassType> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @collect_mtypes_cache", "src/model/model.nit", 989);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @collect_mtypes_cache");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 989);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
RET_LABEL4:(void)0;
}
if (!var3) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 1001);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1001);
+show_backtrace(1);
}
((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassType__arguments_61d]))(self, var_arguments) /* arguments= on <self:MGenericType>*/;
var6 = 0;
((struct instance_array__NativeArray*)var29)->values[2] = (val*) var21;
((struct instance_array__NativeArray*)var29)->values[3] = (val*) var23;
((void (*)(val*, val*, long))(var27->class->vft[COLOR_array__Array__with_native]))(var27, var29, var28) /* with_native on <var27:Array[Object]>*/;
-CHECK_NEW_array__Array(var27);
}
var30 = ((val* (*)(val*))(var27->class->vft[COLOR_string__Object__to_s]))(var27) /* to_s on <var27:Array[Object]>*/;
((void (*)(val*, val*))(self->class->vft[COLOR_model__MGenericType__to_s_61d]))(self, var30) /* to_s= on <self:MGenericType>*/;
val* var1 /* : String */;
var1 = self->attrs[COLOR_model__MGenericType___64dto_s].val; /* @to_s on <self:MGenericType> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @to_s", "src/model/model.nit", 1015);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @to_s");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1015);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
}
var3 = ((short int (*)(val*, val*, val*, val*))(self->class->vft[COLOR_model__MType__can_resolve_for]))(self, var_mtype, var_anchor, var_mmodule) /* can_resolve_for on <self:MGenericType>*/;
if (!var3) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 1024);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1024);
+show_backtrace(1);
}
var4 = NEW_array__Array(&type_array__Arraymodel__MType);
((void (*)(val*))(var4->class->vft[COLOR_array__Array__init]))(var4) /* init on <var4:Array[MType]>*/;
-CHECK_NEW_array__Array(var4);
var_types = var4;
var5 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__arguments]))(self) /* arguments on <self:MGenericType>*/;
var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Collection__iterator]))(var5) /* iterator on <var5:Array[MType]>*/;
short int var9 /* : Bool */;
int cltype;
int idtype;
+const char* var_class_name;
short int var10 /* : Bool */;
long var11 /* : Int */;
long var12 /* : Int */;
/* <var_dmax:Int> isa OTHER */
var9 = 1; /* easy <var_dmax:Int> isa OTHER*/
if (!var9) {
-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", 267);
+show_backtrace(1);
}
var10 = var_d > var_dmax;
var7 = var10;
val* var1 /* : MProperty */;
var1 = self->attrs[COLOR_model__MVirtualType___64dmproperty].val; /* @mproperty on <self:MVirtualType> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mproperty", "src/model/model.nit", 1066);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mproperty");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1066);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MVirtualType__mproperty]))(self) /* mproperty on <self:MVirtualType>*/;
var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var1) /* intro_mclassdef on <var1:MProperty>*/;
var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__mmodule]))(var2) /* mmodule on <var2:MClassDef>*/;
-var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model_base__MModule__model]))(var3) /* model on <var3:MModule>*/;
+var4 = ((val* (*)(val*))(var3->class->vft[COLOR_mmodule__MModule__model]))(var3) /* model on <var3:MModule>*/;
var = var4;
goto RET_LABEL;
RET_LABEL:;
short int var12 /* : Bool */;
int cltype;
int idtype;
+const char* var_class_name;
val* var13 /* : nullable MType */;
val* var14 /* : ArraySet[MType] */;
val* var_types /* var types: ArraySet[MType] */;
short int var18 /* : Bool */;
int cltype19;
int idtype20;
-val* var21 /* : nullable MType */;
-long var22 /* : Int */;
+const char* var_class_name21;
+val* var22 /* : nullable MType */;
long var23 /* : Int */;
-short int var24 /* : Bool */;
-short int var26 /* : Bool */;
-val* var27 /* : nullable Object */;
+long var24 /* : Int */;
+short int var25 /* : Bool */;
+short int var27 /* : Bool */;
+val* var28 /* : nullable Object */;
var_mmodule = p0;
var_resolved_receiver = p1;
var1 = ((short int (*)(val*))(var_resolved_receiver->class->vft[COLOR_model__MType__need_anchor]))(var_resolved_receiver) /* need_anchor on <var_resolved_receiver:MType>*/;
var2 = !var1;
if (!var2) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 1080);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1080);
+show_backtrace(1);
}
var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MVirtualType__mproperty]))(self) /* mproperty on <self:MVirtualType>*/;
var4 = ((val* (*)(val*, val*, val*))(var3->class->vft[COLOR_model__MProperty__lookup_definitions]))(var3, var_mmodule, var_resolved_receiver) /* lookup_definitions on <var3:MProperty>*/;
var_props = var4;
var5 = ((short int (*)(val*))(var_props->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_props) /* is_empty on <var_props:Array[MPropDef]>*/;
if (var5){
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/model/model.nit", 1083);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1083);
+show_backtrace(1);
} else {
var6 = ((long (*)(val*))(var_props->class->vft[COLOR_abstract_collection__Collection__length]))(var_props) /* length on <var_props:Array[MPropDef]>*/;
var7 = 1;
var12 = var11->type->type_table[cltype] == idtype;
}
if (!var12) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/model/model.nit", 1085);
-exit(1);
+var_class_name = var11 == NULL ? "null" : var11->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MVirtualTypeDef", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1085);
+show_backtrace(1);
}
var13 = ((val* (*)(val*))(var11->class->vft[COLOR_model__MVirtualTypeDef__bound]))(var11) /* bound on <var11:MPropDef(MVirtualTypeDef)>*/;
if (var13 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/model/model.nit", 1085);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1085);
+show_backtrace(1);
}
var = var13;
goto RET_LABEL;
}
var14 = NEW_array__ArraySet(&type_array__ArraySetmodel__MType);
((void (*)(val*))(var14->class->vft[COLOR_array__ArraySet__init]))(var14) /* init on <var14:ArraySet[MType]>*/;
-CHECK_NEW_array__ArraySet(var14);
var_types = var14;
var15 = ((val* (*)(val*))(var_props->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_props) /* iterator on <var_props:Array[MPropDef]>*/;
for(;;) {
var18 = var_p->type->type_table[cltype19] == idtype20;
}
if (!var18) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/model/model.nit", 1089);
-exit(1);
-}
-var21 = ((val* (*)(val*))(var_p->class->vft[COLOR_model__MVirtualTypeDef__bound]))(var_p) /* bound on <var_p:MPropDef(MVirtualTypeDef)>*/;
-if (var21 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/model/model.nit", 1089);
-exit(1);
-}
-((void (*)(val*, val*))(var_types->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_types, var21) /* add on <var_types:ArraySet[MType]>*/;
+var_class_name21 = var_p == NULL ? "null" : var_p->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MVirtualTypeDef", var_class_name21);
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1089);
+show_backtrace(1);
+}
+var22 = ((val* (*)(val*))(var_p->class->vft[COLOR_model__MVirtualTypeDef__bound]))(var_p) /* bound on <var_p:MPropDef(MVirtualTypeDef)>*/;
+if (var22 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1089);
+show_backtrace(1);
+}
+((void (*)(val*, val*))(var_types->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_types, var22) /* add on <var_types:ArraySet[MType]>*/;
CONTINUE_label: (void)0;
((void (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__next]))(var15) /* next on <var15:Iterator[nullable Object]>*/;
}
BREAK_label: (void)0;
-var22 = ((long (*)(val*))(var_types->class->vft[COLOR_abstract_collection__Collection__length]))(var_types) /* length on <var_types:ArraySet[MType]>*/;
-var23 = 1;
-{ /* Inline kernel#Int#== (var22,var23) */
-var26 = var22 == var23;
-var24 = var26;
-goto RET_LABEL25;
-RET_LABEL25:(void)0;
+var23 = ((long (*)(val*))(var_types->class->vft[COLOR_abstract_collection__Collection__length]))(var_types) /* length on <var_types:ArraySet[MType]>*/;
+var24 = 1;
+{ /* Inline kernel#Int#== (var23,var24) */
+var27 = var23 == var24;
+var25 = var27;
+goto RET_LABEL26;
+RET_LABEL26:(void)0;
}
-if (var24){
-var27 = ((val* (*)(val*))(var_types->class->vft[COLOR_abstract_collection__Collection__first]))(var_types) /* first on <var_types:ArraySet[MType]>*/;
-var = var27;
+if (var25){
+var28 = ((val* (*)(val*))(var_types->class->vft[COLOR_abstract_collection__Collection__first]))(var_types) /* first on <var_types:ArraySet[MType]>*/;
+var = var28;
goto RET_LABEL;
} else {
}
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/model/model.nit", 1094);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1094);
+show_backtrace(1);
RET_LABEL:;
return var;
}
short int var12 /* : Bool */;
int cltype13;
int idtype14;
+const char* var_class_name;
val* var15 /* : MClass */;
val* var16 /* : MClassKind */;
val* var17 /* : MClassKind */;
var_cleanup_virtual = p3;
var1 = ((short int (*)(val*, val*, val*, val*))(self->class->vft[COLOR_model__MType__can_resolve_for]))(self, var_mtype, var_anchor, var_mmodule) /* can_resolve_for on <self:MVirtualType>*/;
if (!var1) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 1099);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1099);
+show_backtrace(1);
}
var2 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
if (var2){
var4 = 1; /* arg is null and recv is not */
}
if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 1106);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1106);
+show_backtrace(1);
}
var5 = NULL;
var6 = 1;
var12 = var_resolved_reciever->type->type_table[cltype13] == idtype14;
}
if (!var12) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/model/model.nit", 1122);
-exit(1);
+var_class_name = var_resolved_reciever == NULL ? "null" : var_resolved_reciever->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1122);
+show_backtrace(1);
}
var15 = ((val* (*)(val*))(var_resolved_reciever->class->vft[COLOR_model__MClassType__mclass]))(var_resolved_reciever) /* mclass on <var_resolved_reciever:MType(MClassType)>*/;
var16 = ((val* (*)(val*))(var15->class->vft[COLOR_model__MClass__kind]))(var15) /* kind on <var15:MClass>*/;
var3 = 1; /* arg is null and recv is not */
}
if (!var3) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 1138);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1138);
+show_backtrace(1);
}
var4 = ((val* (*)(val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__anchor_to]))(var_mtype, var_mmodule, var_anchor) /* anchor_to on <var_mtype:MType>*/;
var_mtype = var4;
val* var1 /* : MClass */;
var1 = self->attrs[COLOR_model__MParameterType___64dmclass].val; /* @mclass on <self:MParameterType> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mclass", "src/model/model.nit", 1180);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclass");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1180);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var3 /* : Model */;
var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MParameterType__mclass]))(self) /* mclass on <self:MParameterType>*/;
var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MClass__intro_mmodule]))(var1) /* intro_mmodule on <var1:MClass>*/;
-var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model_base__MModule__model]))(var2) /* model on <var2:MModule>*/;
+var3 = ((val* (*)(val*))(var2->class->vft[COLOR_mmodule__MModule__model]))(var2) /* model on <var2:MModule>*/;
var = var3;
goto RET_LABEL;
RET_LABEL:;
var1 = NEW_array__Array(&type_array__Arraykernel__Object);
var2 = 5;
((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
-CHECK_NEW_array__Array(var1);
var_ = var1;
if (varonce) {
var3 = varonce;
var1 = ((short int (*)(val*))(var_resolved_receiver->class->vft[COLOR_model__MType__need_anchor]))(var_resolved_receiver) /* need_anchor on <var_resolved_receiver:MType>*/;
var2 = !var1;
if (!var2) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 1200);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1200);
+show_backtrace(1);
}
var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MParameterType__mclass]))(self) /* mclass on <self:MParameterType>*/;
var_goalclass = var3;
((void (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__next]))(var5) /* next on <var5:Iterator[nullable Object]>*/;
}
BREAK_label: (void)0;
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/model/model.nit", 1211);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1211);
+show_backtrace(1);
RET_LABEL:;
return var;
}
var_cleanup_virtual = p3;
var1 = ((short int (*)(val*, val*, val*, val*))(self->class->vft[COLOR_model__MType__can_resolve_for]))(self, var_mtype, var_anchor, var_mmodule) /* can_resolve_for on <self:MParameterType>*/;
if (!var1) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 1216);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1216);
+show_backtrace(1);
}
/* <var_mtype:MType> isa MGenericType */
cltype = type_model__MGenericType.color;
var12 = 1; /* arg is null and recv is not */
}
if (!var12) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 1229);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1229);
+show_backtrace(1);
}
var13 = ((val* (*)(val*))(var_anchor->class->vft[COLOR_model__MClassType__mclass]))(var_anchor) /* mclass on <var_anchor:nullable MClassType(MClassType)>*/;
var14 = ((val* (*)(val*))(var13->class->vft[COLOR_model__MClass__mclass_type]))(var13) /* mclass_type on <var13:MClass>*/;
if (var21){
var24 = ((val* (*)(val*))(var_resolved_receiver->class->vft[COLOR_model__MParameterType__mclass]))(var_resolved_receiver) /* mclass on <var_resolved_receiver:nullable Object(MParameterType)>*/;
if (var_anchor == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/model/model.nit", 1236);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1236);
+show_backtrace(1);
} else {
var25 = ((val* (*)(val*))(var_anchor->class->vft[COLOR_model__MClassType__mclass]))(var_anchor) /* mclass on <var_anchor:nullable MClassType>*/;
}
var26 = ((short int (*)(val*, val*))(var24->class->vft[COLOR_kernel__Object___61d_61d]))(var24, var25) /* == on <var24:MClass>*/;
if (!var26) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 1236);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1236);
+show_backtrace(1);
}
if (var_anchor == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/model/model.nit", 1237);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1237);
+show_backtrace(1);
} else {
var27 = ((val* (*)(val*))(var_anchor->class->vft[COLOR_model__MClassType__arguments]))(var_anchor) /* arguments on <var_anchor:nullable MClassType>*/;
}
var34 = var_resolved_receiver->type->type_table[cltype35] == idtype36;
}
if (!var34) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 1240);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1240);
+show_backtrace(1);
}
var37 = ((val* (*)(val*))(var_resolved_receiver->class->vft[COLOR_model__MClassType__mclass]))(var_resolved_receiver) /* mclass on <var_resolved_receiver:nullable Object(MClassType)>*/;
var38 = ((val* (*)(val*))(self->class->vft[COLOR_model__MParameterType__mclass]))(self) /* mclass on <self:MParameterType>*/;
var45 = 1; /* arg is null and recv is not */
}
if (!var45) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 1251);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1251);
+show_backtrace(1);
}
var46 = NULL;
var47 = 0;
var3 = 1; /* arg is null and recv is not */
}
if (!var3) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 1267);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1267);
+show_backtrace(1);
}
var4 = ((val* (*)(val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__anchor_to]))(var_mtype, var_mmodule, var_anchor) /* anchor_to on <var_mtype:MType>*/;
var_mtype = var4;
val* var1 /* : MType */;
var1 = self->attrs[COLOR_model__MNullableType___64dmtype].val; /* @mtype on <self:MNullableType> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mtype", "src/model/model.nit", 1284);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mtype");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1284);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
((struct instance_array__NativeArray*)var6)->values[0] = (val*) var;
((struct instance_array__NativeArray*)var6)->values[1] = (val*) var_mtype;
((void (*)(val*, val*, long))(var4->class->vft[COLOR_array__Array__with_native]))(var4, var6, var5) /* with_native on <var4:Array[Object]>*/;
-CHECK_NEW_array__Array(var4);
}
var7 = ((val* (*)(val*))(var4->class->vft[COLOR_string__Object__to_s]))(var4) /* to_s on <var4:Array[Object]>*/;
((void (*)(val*, val*))(self->class->vft[COLOR_model__MNullableType__to_s_61d]))(self, var7) /* to_s= on <self:MNullableType>*/;
val* var1 /* : String */;
var1 = self->attrs[COLOR_model__MNullableType___64dto_s].val; /* @to_s on <self:MNullableType> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @to_s", "src/model/model.nit", 1295);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @to_s");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1295);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MNullableType>*/;
var2 = !var1;
if (!var2) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 1316);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1316);
+show_backtrace(1);
}
var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MNullableType__mtype]))(self) /* mtype on <self:MNullableType>*/;
var4 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_model__MType__collect_mclassdefs]))(var3, var_mmodule) /* collect_mclassdefs on <var3:MType>*/;
var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MNullableType>*/;
var2 = !var1;
if (!var2) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 1322);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1322);
+show_backtrace(1);
}
var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MNullableType__mtype]))(self) /* mtype on <self:MNullableType>*/;
var4 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_model__MType__collect_mclasses]))(var3, var_mmodule) /* collect_mclasses on <var3:MType>*/;
var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MNullableType>*/;
var2 = !var1;
if (!var2) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 1328);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1328);
+show_backtrace(1);
}
var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MNullableType__mtype]))(self) /* mtype on <self:MNullableType>*/;
var4 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_model__MType__collect_mtypes]))(var3, var_mmodule) /* collect_mtypes on <var3:MType>*/;
val* var1 /* : Model */;
var1 = self->attrs[COLOR_model__MNullType___64dmodel].val; /* @model on <self:MNullType> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @model", "src/model/model.nit", 1338);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @model");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1338);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
var_mmodule = p0;
var1 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClassDef);
((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashSet__init]))(var1) /* init on <var1:HashSet[MClassDef]>*/;
-CHECK_NEW_hash_collection__HashSet(var1);
var = var1;
goto RET_LABEL;
RET_LABEL:;
var_mmodule = p0;
var1 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClass);
((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashSet__init]))(var1) /* init on <var1:HashSet[MClass]>*/;
-CHECK_NEW_hash_collection__HashSet(var1);
var = var1;
goto RET_LABEL;
RET_LABEL:;
var_mmodule = p0;
var1 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClassType);
((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashSet__init]))(var1) /* init on <var1:HashSet[MClassType]>*/;
-CHECK_NEW_hash_collection__HashSet(var1);
var = var1;
goto RET_LABEL;
RET_LABEL:;
val* var1 /* : Array[MParameter] */;
var1 = self->attrs[COLOR_model__MSignature___64dmparameters].val; /* @mparameters on <self:MSignature> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mparameters", "src/model/model.nit", 1360);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mparameters");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1360);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
model__MSignature__mparameters_61d(self, p0);
RET_LABEL:;
}
-/* method model#MSignature#mclosures for (self: MSignature): Array[MParameter] */
-val* model__MSignature__mclosures(val* self) {
-val* var /* : Array[MParameter] */;
-val* var1 /* : Array[MParameter] */;
-var1 = self->attrs[COLOR_model__MSignature___64dmclosures].val; /* @mclosures on <self:MSignature> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mclosures", "src/model/model.nit", 1363);
-exit(1);
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MSignature#mclosures for (self: Object): Array[MParameter] */
-val* VIRTUAL_model__MSignature__mclosures(val* self) {
-val* var /* : Array[MParameter] */;
-val* var1 /* : Array[MParameter] */;
-var1 = model__MSignature__mclosures(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MSignature#mclosures= for (self: MSignature, Array[MParameter]) */
-void model__MSignature__mclosures_61d(val* self, val* p0) {
-self->attrs[COLOR_model__MSignature___64dmclosures].val = p0; /* @mclosures on <self:MSignature> */
-RET_LABEL:;
-}
-/* method model#MSignature#mclosures= for (self: Object, Array[MParameter]) */
-void VIRTUAL_model__MSignature__mclosures_61d(val* self, val* p0) {
-model__MSignature__mclosures_61d(self, p0);
-RET_LABEL:;
-}
/* method model#MSignature#return_mtype for (self: MSignature): nullable MType */
val* model__MSignature__return_mtype(val* self) {
val* var /* : nullable MType */;
short int var14 /* : Bool */;
int cltype;
int idtype;
+const char* var_class_name;
short int var15 /* : Bool */;
-val* var16 /* : Array[MParameter] */;
-val* var17 /* : Iterator[nullable Object] */;
-short int var18 /* : Bool */;
-val* var19 /* : nullable Object */;
-val* var_p20 /* var p: MParameter */;
-val* var21 /* : MType */;
-long var22 /* : Int */;
-long var_d23 /* var d: Int */;
-short int var24 /* : Bool */;
-short int var26 /* : Bool */;
-int cltype27;
-int idtype28;
-short int var29 /* : Bool */;
-long var31 /* : Int */;
-long var32 /* : Int */;
-long var34 /* : Int */;
+long var16 /* : Int */;
+long var17 /* : Int */;
+long var19 /* : Int */;
var1 = 0;
var_dmax = var1;
var2 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__return_mtype]))(self) /* return_mtype on <self:MSignature>*/;
/* <var_dmax:Int> isa OTHER */
var14 = 1; /* easy <var_dmax:Int> isa OTHER*/
if (!var14) {
-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", 267);
+show_backtrace(1);
}
var15 = var_d > var_dmax;
var12 = var15;
((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
}
BREAK_label: (void)0;
-var16 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__mclosures]))(self) /* mclosures on <self:MSignature>*/;
-var17 = ((val* (*)(val*))(var16->class->vft[COLOR_abstract_collection__Collection__iterator]))(var16) /* iterator on <var16:Array[MParameter]>*/;
-for(;;) {
-var18 = ((short int (*)(val*))(var17->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var17) /* is_ok on <var17:Iterator[nullable Object]>*/;
-if(!var18) break;
-var19 = ((val* (*)(val*))(var17->class->vft[COLOR_abstract_collection__Iterator__item]))(var17) /* item on <var17:Iterator[nullable Object]>*/;
-var_p20 = var19;
-var21 = ((val* (*)(val*))(var_p20->class->vft[COLOR_model__MParameter__mtype]))(var_p20) /* mtype on <var_p20:MParameter>*/;
-var22 = ((long (*)(val*))(var21->class->vft[COLOR_model__MType__depth]))(var21) /* depth on <var21:MType>*/;
-var_d23 = var22;
-{ /* Inline kernel#Int#> (var_d23,var_dmax) */
-/* Covariant cast for argument 0 (i) <var_dmax:Int> isa OTHER */
-/* <var_dmax:Int> isa OTHER */
-var26 = 1; /* easy <var_dmax:Int> isa OTHER*/
-if (!var26) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
-exit(1);
-}
-var29 = var_d23 > var_dmax;
-var24 = var29;
-goto RET_LABEL25;
-RET_LABEL25:(void)0;
-}
-if (var24){
-var_dmax = var_d23;
-} else {
-}
-CONTINUE_label30: (void)0;
-((void (*)(val*))(var17->class->vft[COLOR_abstract_collection__Iterator__next]))(var17) /* next on <var17:Iterator[nullable Object]>*/;
-}
-BREAK_label30: (void)0;
-var31 = 1;
-{ /* Inline kernel#Int#+ (var_dmax,var31) */
-var34 = var_dmax + var31;
-var32 = var34;
-goto RET_LABEL33;
-RET_LABEL33:(void)0;
+var16 = 1;
+{ /* Inline kernel#Int#+ (var_dmax,var16) */
+var19 = var_dmax + var16;
+var17 = var19;
+goto RET_LABEL18;
+RET_LABEL18:(void)0;
}
-var = var32;
+var = var17;
goto RET_LABEL;
RET_LABEL:;
return var;
long var14 /* : Int */;
long var15 /* : Int */;
long var17 /* : Int */;
-val* var18 /* : Array[MParameter] */;
-val* var19 /* : Iterator[nullable Object] */;
-short int var20 /* : Bool */;
-val* var21 /* : nullable Object */;
-val* var_p22 /* var p: MParameter */;
-val* var23 /* : MType */;
-long var24 /* : Int */;
-long var25 /* : Int */;
-long var27 /* : Int */;
var1 = 1;
var_res = var1;
var2 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__return_mtype]))(self) /* return_mtype on <self:MSignature>*/;
((void (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__next]))(var10) /* next on <var10:Iterator[nullable Object]>*/;
}
BREAK_label: (void)0;
-var18 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__mclosures]))(self) /* mclosures on <self:MSignature>*/;
-var19 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_collection__Collection__iterator]))(var18) /* iterator on <var18:Array[MParameter]>*/;
-for(;;) {
-var20 = ((short int (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var19) /* is_ok on <var19:Iterator[nullable Object]>*/;
-if(!var20) break;
-var21 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__item]))(var19) /* item on <var19:Iterator[nullable Object]>*/;
-var_p22 = var21;
-var23 = ((val* (*)(val*))(var_p22->class->vft[COLOR_model__MParameter__mtype]))(var_p22) /* mtype on <var_p22:MParameter>*/;
-var24 = ((long (*)(val*))(var23->class->vft[COLOR_model__MType__length]))(var23) /* length on <var23:MType>*/;
-{ /* Inline kernel#Int#+ (var_res,var24) */
-var27 = var_res + var24;
-var25 = var27;
-goto RET_LABEL26;
-RET_LABEL26:(void)0;
-}
-var_res = var25;
-CONTINUE_label28: (void)0;
-((void (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__next]))(var19) /* next on <var19:Iterator[nullable Object]>*/;
-}
-BREAK_label28: (void)0;
var = var_res;
goto RET_LABEL;
RET_LABEL:;
var7 = BOX_kernel__Int(var5); /* autobox from Int to Discrete */
var8 = BOX_kernel__Int(var6); /* autobox from Int to Discrete */
((void (*)(val*, val*, val*))(var4->class->vft[COLOR_range__Range__without_last]))(var4, var7, var8) /* without_last on <var4:Range[Int]>*/;
-CHECK_NEW_range__Range(var4);
var9 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Collection__iterator]))(var4) /* iterator on <var4:Range[Int]>*/;
for(;;) {
var10 = ((short int (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var9) /* is_ok on <var9:Iterator[nullable Object]>*/;
RET_LABEL20:(void)0;
}
if (!var19) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 1405);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1396);
+show_backtrace(1);
}
var_vararg_rank = var_i;
} else {
short int var24 /* : Bool */;
int cltype;
int idtype;
+const char* var_class_name;
short int var25 /* : Bool */;
static val* varonce26;
val* var27 /* : String */;
val* var59 /* : String */;
var1 = NEW_string__Buffer(&type_string__Buffer);
((void (*)(val*))(var1->class->vft[COLOR_string__Buffer__init]))(var1) /* init on <var1:Buffer>*/;
-CHECK_NEW_string__Buffer(var1);
var_b = var1;
var2 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__mparameters]))(self) /* mparameters on <self:MSignature>*/;
var3 = ((short int (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var2) /* is_empty on <var2:Array[MParameter]>*/;
var13 = BOX_kernel__Int(var10); /* autobox from Int to Discrete */
var14 = BOX_kernel__Int(var12); /* autobox from Int to Discrete */
((void (*)(val*, val*, val*))(var9->class->vft[COLOR_range__Range__without_last]))(var9, var13, var14) /* without_last on <var9:Range[Int]>*/;
-CHECK_NEW_range__Range(var9);
var15 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Collection__iterator]))(var9) /* iterator on <var9:Range[Int]>*/;
for(;;) {
var16 = ((short int (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var15) /* is_ok on <var15:Iterator[nullable Object]>*/;
/* <var21:Int> isa OTHER */
var24 = 1; /* easy <var21:Int> isa OTHER*/
if (!var24) {
-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", 267);
+show_backtrace(1);
}
var25 = var_i > var21;
var22 = var25;
val* var10 /* : MType */;
val* var11 /* : MSignature */;
val* var_res /* var res: MSignature */;
-val* var12 /* : Array[MParameter] */;
-val* var13 /* : Iterator[nullable Object] */;
-short int var14 /* : Bool */;
-val* var15 /* : nullable Object */;
-val* var_p16 /* var p: MParameter */;
-val* var17 /* : Array[MParameter] */;
-val* var18 /* : MParameter */;
var_mtype = p0;
var_anchor = p1;
var_mmodule = p2;
var_cleanup_virtual = p3;
var1 = NEW_array__Array(&type_array__Arraymodel__MParameter);
((void (*)(val*))(var1->class->vft[COLOR_array__Array__init]))(var1) /* init on <var1:Array[MParameter]>*/;
-CHECK_NEW_array__Array(var1);
var_params = var1;
var2 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__mparameters]))(self) /* mparameters on <self:MSignature>*/;
var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:Array[MParameter]>*/;
}
var11 = NEW_model__MSignature(&type_model__MSignature);
((void (*)(val*, val*, val*))(var11->class->vft[COLOR_model__MSignature__init]))(var11, var_params, var_ret) /* init on <var11:MSignature>*/;
-CHECK_NEW_model__MSignature(var11);
var_res = var11;
-var12 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__mclosures]))(self) /* mclosures on <self:MSignature>*/;
-var13 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__Collection__iterator]))(var12) /* iterator on <var12:Array[MParameter]>*/;
-for(;;) {
-var14 = ((short int (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var13) /* is_ok on <var13:Iterator[nullable Object]>*/;
-if(!var14) break;
-var15 = ((val* (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__item]))(var13) /* item on <var13:Iterator[nullable Object]>*/;
-var_p16 = var15;
-var17 = ((val* (*)(val*))(var_res->class->vft[COLOR_model__MSignature__mclosures]))(var_res) /* mclosures on <var_res:MSignature>*/;
-var18 = ((val* (*)(val*, val*, val*, val*, short int))(var_p16->class->vft[COLOR_model__MParameter__resolve_for]))(var_p16, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual) /* resolve_for on <var_p16:MParameter>*/;
-((void (*)(val*, val*))(var17->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var17, var18) /* add on <var17:Array[MParameter]>*/;
-CONTINUE_label19: (void)0;
-((void (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__next]))(var13) /* next on <var13:Iterator[nullable Object]>*/;
-}
-BREAK_label19: (void)0;
var = var_res;
goto RET_LABEL;
RET_LABEL:;
val* var1 /* : String */;
var1 = self->attrs[COLOR_model__MParameter___64dname].val; /* @name on <self:MParameter> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @name", "src/model/model.nit", 1467);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @name");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1455);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var1 /* : MType */;
var1 = self->attrs[COLOR_model__MParameter___64dmtype].val; /* @mtype on <self:MParameter> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mtype", "src/model/model.nit", 1470);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mtype");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1458);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
var7 = ((val* (*)(val*))(self->class->vft[COLOR_model__MParameter__name]))(self) /* name on <self:MParameter>*/;
var8 = ((short int (*)(val*))(self->class->vft[COLOR_model__MParameter__is_vararg]))(self) /* is_vararg on <self:MParameter>*/;
((void (*)(val*, val*, val*, short int))(var6->class->vft[COLOR_model__MParameter__init]))(var6, var7, var_newtype, var8) /* init on <var6:MParameter>*/;
-CHECK_NEW_model__MParameter(var6);
var_res = var6;
var = var_res;
goto RET_LABEL;
val* var1 /* : MClassDef */;
var1 = self->attrs[COLOR_model__MProperty___64dintro_mclassdef].val; /* @intro_mclassdef on <self:MProperty> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @intro_mclassdef", "src/model/model.nit", 1501);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @intro_mclassdef");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1489);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var1 /* : String */;
var1 = self->attrs[COLOR_model__MProperty___64dname].val; /* @name on <self:MProperty> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @name", "src/model/model.nit", 1506);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @name");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1494);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
var1 = NEW_array__Array(&type_array__Arraykernel__Object);
var2 = 7;
((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
-CHECK_NEW_array__Array(var1);
var_ = var1;
if (varonce) {
var3 = varonce;
((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
var7 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__intro_mclassdef]))(self) /* intro_mclassdef on <self:MProperty>*/;
var8 = ((val* (*)(val*))(var7->class->vft[COLOR_model__MClassDef__mmodule]))(var7) /* mmodule on <var7:MClassDef>*/;
-var9 = ((val* (*)(val*))(var8->class->vft[COLOR_model_base__MModule__full_name]))(var8) /* full_name on <var8:MModule>*/;
+var9 = ((val* (*)(val*))(var8->class->vft[COLOR_mmodule__MModule__full_name]))(var8) /* full_name on <var8:MModule>*/;
((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var9) /* add on <var_:Array[Object]>*/;
if (varonce10) {
var11 = varonce10;
val* var1 /* : MVisibility */;
var1 = self->attrs[COLOR_model__MProperty___64dvisibility].val; /* @visibility on <self:MProperty> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @visibility", "src/model/model.nit", 1516);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @visibility");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1504);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
var = ((val* (*)(val*))(var_intro_mclassdef->class->vft[COLOR_model__MClassDef__intro_mproperties]))(var_intro_mclassdef) /* intro_mproperties on <var_intro_mclassdef:MClassDef>*/;
((void (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var, self) /* add on <var:Array[MProperty]>*/;
var1 = ((val* (*)(val*))(var_intro_mclassdef->class->vft[COLOR_model__MClassDef__mmodule]))(var_intro_mclassdef) /* mmodule on <var_intro_mclassdef:MClassDef>*/;
-var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model_base__MModule__model]))(var1) /* model on <var1:MModule>*/;
+var2 = ((val* (*)(val*))(var1->class->vft[COLOR_mmodule__MModule__model]))(var1) /* model on <var1:MModule>*/;
var_model = var2;
var3 = ((val* (*)(val*))(var_model->class->vft[COLOR_model__Model__mproperties_by_name]))(var_model) /* mproperties_by_name on <var_model:Model>*/;
((void (*)(val*, val*, val*))(var3->class->vft[COLOR_more_collections__MultiHashMap__add_one]))(var3, var_name, self) /* add_one on <var3:MultiHashMap[String, MProperty]>*/;
val* var1 /* : Array[MPropDef] */;
var1 = self->attrs[COLOR_model__MProperty___64dmpropdefs].val; /* @mpropdefs on <self:MProperty> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mpropdefs", "src/model/model.nit", 1530);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mpropdefs");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1518);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
int cltype;
int idtype;
const struct type* type_struct;
+const char* var_class_name;
/* Covariant cast for argument 0 (mpropdefs) <p0:Array[MPropDef]> isa Array[MPROPDEF] */
/* <p0:Array[MPropDef]> isa Array[MPROPDEF] */
type_struct = self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF];
var = p0->type->type_table[cltype] == idtype;
}
if (!var) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/model/model.nit", 1530);
-exit(1);
+var_class_name = p0 == NULL ? "null" : p0->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[MPROPDEF]", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1518);
+show_backtrace(1);
}
self->attrs[COLOR_model__MProperty___64dmpropdefs].val = p0; /* @mpropdefs on <self:MProperty> */
RET_LABEL:;
short int var28 /* : Bool */;
int cltype29;
int idtype30;
+const char* var_class_name;
short int var31 /* : Bool */;
val* var32 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
val* var33 /* : Array[MPropDef] */;
-val* var_res /* var res: Array[MPropDef] */;
-val* var34 /* : Iterator[nullable Object] */;
-short int var35 /* : Bool */;
-val* var36 /* : nullable Object */;
-val* var_pd1 /* var pd1: MPropDef */;
-val* var37 /* : MClassDef */;
-val* var_cd1 /* var cd1: MClassDef */;
-val* var38 /* : MClass */;
-val* var_c1 /* var c1: MClass */;
-short int var39 /* : Bool */;
-short int var_keep /* var keep: Bool */;
-val* var40 /* : Iterator[nullable Object] */;
-short int var41 /* : Bool */;
-val* var42 /* : nullable Object */;
-val* var_pd2 /* var pd2: MPropDef */;
-short int var43 /* : Bool */;
-val* var45 /* : MClassDef */;
-val* var_cd2 /* var cd2: MClassDef */;
-val* var46 /* : MClass */;
-val* var_c2 /* var c2: MClass */;
-val* var47 /* : MClassType */;
-val* var48 /* : MClassType */;
-short int var49 /* : Bool */;
-val* var50 /* : MModule */;
-val* var51 /* : POSetElement[MModule] */;
-val* var52 /* : MModule */;
-short int var53 /* : Bool */;
-short int var54 /* : Bool */;
-val* var55 /* : MClassType */;
-val* var56 /* : null */;
-val* var57 /* : MClassType */;
-short int var58 /* : Bool */;
-short int var59 /* : Bool */;
-short int var61 /* : Bool */;
-static val* varonce;
-val* var62 /* : String */;
-char* var63 /* : NativeString */;
-long var64 /* : Int */;
-val* var65 /* : String */;
-static val* varonce66;
-val* var67 /* : String */;
-char* var68 /* : NativeString */;
-long var69 /* : Int */;
-val* var70 /* : String */;
-val* var71 /* : String */;
-val* var72 /* : Array[Object] */;
-long var73 /* : Int */;
-val* var74 /* : NativeArray[Object] */;
-val* var75 /* : String */;
-val* var76 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
var_mmodule = p0;
var_mtype = p1;
var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
var2 = !var1;
if (!var2) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 1552);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1540);
+show_backtrace(1);
}
/* <var_mtype:MType> isa MNullableType */
cltype = type_model__MNullableType.color;
}
var9 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF]);
((void (*)(val*))(var9->class->vft[COLOR_array__Array__init]))(var9) /* init on <var9:Array[MPropDef]>*/;
-CHECK_NEW_array__Array(var9);
var_candidates = var9;
var10 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__mpropdefs]))(self) /* mpropdefs on <self:MProperty>*/;
var11 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Collection__iterator]))(var10) /* iterator on <var10:Array[MPropDef]>*/;
if(!var12) break;
var13 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__item]))(var11) /* item on <var11:Iterator[nullable Object]>*/;
var_mpropdef = var13;
-var14 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model_base__MModule__in_importation]))(var_mmodule) /* in_importation on <var_mmodule:MModule>*/;
+var14 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__in_importation]))(var_mmodule) /* in_importation on <var_mmodule:MModule>*/;
var15 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
var16 = ((val* (*)(val*))(var15->class->vft[COLOR_model__MClassDef__mmodule]))(var15) /* mmodule on <var15:MClassDef>*/;
var17 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_poset__POSetElement___60d_61d]))(var14, var16) /* <= on <var14:POSetElement[MModule]>*/;
/* <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", 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", 264);
+show_backtrace(1);
}
var31 = var24 <= var25;
var26 = var31;
goto RET_LABEL;
} else {
}
-var33 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF]);
-((void (*)(val*))(var33->class->vft[COLOR_array__Array__init]))(var33) /* init on <var33:Array[MPropDef]>*/;
-CHECK_NEW_array__Array(var33);
-var_res = var33;
-var34 = ((val* (*)(val*))(var_candidates->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_candidates) /* iterator on <var_candidates:Array[MPropDef]>*/;
-for(;;) {
-var35 = ((short int (*)(val*))(var34->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var34) /* is_ok on <var34:Iterator[nullable Object]>*/;
-if(!var35) break;
-var36 = ((val* (*)(val*))(var34->class->vft[COLOR_abstract_collection__Iterator__item]))(var34) /* item on <var34:Iterator[nullable Object]>*/;
-var_pd1 = var36;
-var37 = ((val* (*)(val*))(var_pd1->class->vft[COLOR_model__MPropDef__mclassdef]))(var_pd1) /* mclassdef on <var_pd1:MPropDef>*/;
-var_cd1 = var37;
-var38 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__mclass]))(var_cd1) /* mclass on <var_cd1:MClassDef>*/;
-var_c1 = var38;
-var39 = 1;
-var_keep = var39;
-var40 = ((val* (*)(val*))(var_candidates->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_candidates) /* iterator on <var_candidates:Array[MPropDef]>*/;
-for(;;) {
-var41 = ((short int (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var40) /* is_ok on <var40:Iterator[nullable Object]>*/;
-if(!var41) break;
-var42 = ((val* (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__item]))(var40) /* item on <var40:Iterator[nullable Object]>*/;
-var_pd2 = var42;
-var43 = ((short int (*)(val*, val*))(var_pd2->class->vft[COLOR_kernel__Object___61d_61d]))(var_pd2, var_pd1) /* == on <var_pd2:MPropDef>*/;
-if (var43){
-goto CONTINUE_label44;
-} else {
-}
-var45 = ((val* (*)(val*))(var_pd2->class->vft[COLOR_model__MPropDef__mclassdef]))(var_pd2) /* mclassdef on <var_pd2:MPropDef>*/;
-var_cd2 = var45;
-var46 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__mclass]))(var_cd2) /* mclass on <var_cd2:MClassDef>*/;
-var_c2 = var46;
-var47 = ((val* (*)(val*))(var_c2->class->vft[COLOR_model__MClass__mclass_type]))(var_c2) /* mclass_type on <var_c2:MClass>*/;
-var48 = ((val* (*)(val*))(var_c1->class->vft[COLOR_model__MClass__mclass_type]))(var_c1) /* mclass_type on <var_c1:MClass>*/;
-var49 = ((short int (*)(val*, val*))(var47->class->vft[COLOR_kernel__Object___61d_61d]))(var47, var48) /* == on <var47:MClassType>*/;
-if (var49){
-var50 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__mmodule]))(var_cd2) /* mmodule on <var_cd2:MClassDef>*/;
-var51 = ((val* (*)(val*))(var50->class->vft[COLOR_model_base__MModule__in_importation]))(var50) /* in_importation on <var50:MModule>*/;
-var52 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__mmodule]))(var_cd1) /* mmodule on <var_cd1:MClassDef>*/;
-var53 = ((short int (*)(val*, val*))(var51->class->vft[COLOR_poset__POSetElement___60d_61d]))(var51, var52) /* <= on <var51:POSetElement[MModule]>*/;
-if (var53){
-var54 = 0;
-var_keep = var54;
-goto BREAK_label44;
-} else {
-}
-} else {
-var55 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_cd2) /* bound_mtype on <var_cd2:MClassDef>*/;
-var56 = NULL;
-var57 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_cd1) /* bound_mtype on <var_cd1:MClassDef>*/;
-var58 = ((short int (*)(val*, val*, val*, val*))(var55->class->vft[COLOR_model__MType__is_subtype]))(var55, var_mmodule, var56, var57) /* is_subtype on <var55:MClassType>*/;
-if (var58){
-var59 = 0;
-var_keep = var59;
-goto BREAK_label44;
-} else {
-}
-}
-CONTINUE_label44: (void)0;
-((void (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__next]))(var40) /* next on <var40:Iterator[nullable Object]>*/;
-}
-BREAK_label44: (void)0;
-if (var_keep){
-((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var_pd1) /* add on <var_res:Array[MPropDef]>*/;
-} else {
-}
-CONTINUE_label60: (void)0;
-((void (*)(val*))(var34->class->vft[COLOR_abstract_collection__Iterator__next]))(var34) /* next on <var34:Iterator[nullable Object]>*/;
-}
-BREAK_label60: (void)0;
-var61 = ((short int (*)(val*))(var_res->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_res) /* is_empty on <var_res:Array[MPropDef]>*/;
-if (var61){
-if (varonce) {
-var62 = varonce;
-} else {
-var63 = "All lost! ";
-var64 = 10;
-var65 = string__NativeString__to_s_with_length(var63, var64);
-var62 = var65;
-varonce = var62;
-}
-if (varonce66) {
-var67 = varonce66;
-} else {
-var68 = ", ";
-var69 = 2;
-var70 = string__NativeString__to_s_with_length(var68, var69);
-var67 = var70;
-varonce66 = var67;
-}
-var71 = ((val* (*)(val*, val*))(var_candidates->class->vft[COLOR_string__Collection__join]))(var_candidates, var67) /* join on <var_candidates:Array[MPropDef]>*/;
-var72 = NEW_array__Array(&type_array__Arraykernel__Object);
-{ /* var72 = array_instance Array[Object] */
-var73 = 2;
-var74 = NEW_array__NativeArray(var73, &type_array__NativeArraykernel__Object);
-((struct instance_array__NativeArray*)var74)->values[0] = (val*) var62;
-((struct instance_array__NativeArray*)var74)->values[1] = (val*) var71;
-((void (*)(val*, val*, long))(var72->class->vft[COLOR_array__Array__with_native]))(var72, var74, var73) /* with_native on <var72:Array[Object]>*/;
-CHECK_NEW_array__Array(var72);
-}
-var75 = ((val* (*)(val*))(var72->class->vft[COLOR_string__Object__to_s]))(var72) /* to_s on <var72:Array[Object]>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var75) /* print on <self:MProperty>*/;
-} else {
-}
-var76 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__lookup_definitions_cache]))(self) /* lookup_definitions_cache on <self:MProperty>*/;
-((void (*)(val*, val*, val*, val*))(var76->class->vft[COLOR_more_collections__HashMap2___91d_93d_61d]))(var76, var_mmodule, var_mtype, var_res) /* []= on <var76:HashMap2[MModule, MType, Array[MPropDef]]>*/;
-var = var_res;
+var33 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_model__MProperty__select_most_specific]))(self, var_mmodule, var_candidates) /* select_most_specific on <self:MProperty>*/;
+var = var33;
goto RET_LABEL;
RET_LABEL:;
return var;
val* var1 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
var1 = self->attrs[COLOR_model__MProperty___64dlookup_definitions_cache].val; /* @lookup_definitions_cache on <self:MProperty> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @lookup_definitions_cache", "src/model/model.nit", 1609);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @lookup_definitions_cache");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1567);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
int cltype;
int idtype;
const struct type* type_struct;
+const char* var_class_name;
/* Covariant cast for argument 0 (lookup_definitions_cache) <p0:HashMap2[MModule, MType, Array[MPropDef]]> isa HashMap2[MModule, MType, Array[MPROPDEF]] */
/* <p0:HashMap2[MModule, MType, Array[MPropDef]]> isa HashMap2[MModule, MType, Array[MPROPDEF]] */
-type_struct = self->type->resolution_table->types[COLOR_more_collections__HashMap2model_base__MModulemodel__MTypearray__Arraymodel__MProperty_VTMPROPDEF];
+type_struct = self->type->resolution_table->types[COLOR_more_collections__HashMap2mmodule__MModulemodel__MTypearray__Arraymodel__MProperty_VTMPROPDEF];
cltype = type_struct->color;
idtype = type_struct->id;
if(cltype >= p0->type->table_size) {
var = p0->type->type_table[cltype] == idtype;
}
if (!var) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/model/model.nit", 1609);
-exit(1);
+var_class_name = p0 == NULL ? "null" : p0->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "HashMap2[MModule, MType, Array[MPROPDEF]]", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1567);
+show_backtrace(1);
}
self->attrs[COLOR_model__MProperty___64dlookup_definitions_cache].val = p0; /* @lookup_definitions_cache on <self:MProperty> */
RET_LABEL:;
short int var31 /* : Bool */;
int cltype32;
int idtype33;
+const char* var_class_name;
short int var34 /* : Bool */;
val* var35 /* : Array[MPropDef] */;
-val* var_res /* var res: Array[MPropDef] */;
-val* var36 /* : Iterator[nullable Object] */;
-short int var37 /* : Bool */;
-val* var38 /* : nullable Object */;
-val* var_pd1 /* var pd1: MPropDef */;
-val* var39 /* : MClassDef */;
-val* var_cd1 /* var cd1: MClassDef */;
-val* var40 /* : MClass */;
-val* var_c1 /* var c1: MClass */;
-short int var41 /* : Bool */;
-short int var_keep /* var keep: Bool */;
-val* var42 /* : Iterator[nullable Object] */;
-short int var43 /* : Bool */;
-val* var44 /* : nullable Object */;
-val* var_pd2 /* var pd2: MPropDef */;
-short int var45 /* : Bool */;
-val* var47 /* : MClassDef */;
-val* var_cd2 /* var cd2: MClassDef */;
-val* var48 /* : MClass */;
-val* var_c2 /* var c2: MClass */;
-val* var49 /* : MClassType */;
-val* var50 /* : MClassType */;
-short int var51 /* : Bool */;
-val* var52 /* : MModule */;
-val* var53 /* : POSetElement[MModule] */;
-val* var54 /* : MModule */;
-short int var55 /* : Bool */;
-short int var56 /* : Bool */;
-val* var57 /* : MClassType */;
-val* var58 /* : null */;
-val* var59 /* : MClassType */;
-short int var60 /* : Bool */;
-short int var61 /* : Bool */;
-short int var63 /* : Bool */;
-static val* varonce;
-val* var64 /* : String */;
-char* var65 /* : NativeString */;
-long var66 /* : Int */;
-val* var67 /* : String */;
-static val* varonce68;
-val* var69 /* : String */;
-char* var70 /* : NativeString */;
-long var71 /* : Int */;
-val* var72 /* : String */;
-val* var73 /* : String */;
-val* var74 /* : Array[Object] */;
-long var75 /* : Int */;
-val* var76 /* : NativeArray[Object] */;
-val* var77 /* : String */;
var_mmodule = p0;
var_mtype = p1;
var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
var2 = !var1;
if (!var2) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 1621);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1579);
+show_backtrace(1);
}
/* <var_mtype:MType> isa MNullableType */
cltype = type_model__MNullableType.color;
var_mtype = var4;
} else {
}
-var5 = NEW_array__Array(&type_array__Arraymodel__MPropDef);
+var5 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF]);
((void (*)(val*))(var5->class->vft[COLOR_array__Array__init]))(var5) /* init on <var5:Array[MPropDef]>*/;
-CHECK_NEW_array__Array(var5);
var_candidates = var5;
var6 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__mpropdefs]))(self) /* mpropdefs on <self:MProperty>*/;
var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Collection__iterator]))(var6) /* iterator on <var6:Array[MPropDef]>*/;
if(!var8) break;
var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
var_mpropdef = var9;
-var10 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model_base__MModule__in_importation]))(var_mmodule) /* in_importation on <var_mmodule:MModule>*/;
+var10 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__in_importation]))(var_mmodule) /* in_importation on <var_mmodule:MModule>*/;
var11 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
var12 = ((val* (*)(val*))(var11->class->vft[COLOR_model__MClassDef__mmodule]))(var11) /* mmodule on <var11:MClassDef>*/;
var13 = ((short int (*)(val*, val*))(var10->class->vft[COLOR_poset__POSetElement___60d_61d]))(var10, var12) /* <= on <var10:POSetElement[MModule]>*/;
/* <var28:Int> isa OTHER */
var31 = 1; /* easy <var28:Int> isa OTHER*/
if (!var31) {
-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", 264);
+show_backtrace(1);
}
var34 = var27 <= var28;
var29 = var34;
goto RET_LABEL;
} else {
}
-var35 = NEW_array__Array(&type_array__Arraymodel__MPropDef);
-((void (*)(val*))(var35->class->vft[COLOR_array__Array__init]))(var35) /* init on <var35:Array[MPropDef]>*/;
-CHECK_NEW_array__Array(var35);
-var_res = var35;
-var36 = ((val* (*)(val*))(var_candidates->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_candidates) /* iterator on <var_candidates:Array[MPropDef]>*/;
+var35 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_model__MProperty__select_most_specific]))(self, var_mmodule, var_candidates) /* select_most_specific on <self:MProperty>*/;
+var = var35;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method model#MProperty#lookup_super_definitions for (self: Object, MModule, MType): Array[MPropDef] */
+val* VIRTUAL_model__MProperty__lookup_super_definitions(val* self, val* p0, val* p1) {
+val* var /* : Array[MPropDef] */;
+val* var1 /* : Array[MPropDef] */;
+var1 = model__MProperty__lookup_super_definitions(self, p0, p1);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method model#MProperty#select_most_specific for (self: MProperty, MModule, Array[MPropDef]): Array[MPropDef] */
+val* model__MProperty__select_most_specific(val* self, val* p0, val* p1) {
+val* var /* : Array[MPropDef] */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+const char* var_class_name;
+val* var_mmodule /* var mmodule: MModule */;
+val* var_candidates /* var candidates: Array[MPropDef] */;
+val* var2 /* : Array[MPropDef] */;
+val* var_res /* var res: Array[MPropDef] */;
+val* var3 /* : Iterator[nullable Object] */;
+short int var4 /* : Bool */;
+val* var5 /* : nullable Object */;
+val* var_pd1 /* var pd1: MPropDef */;
+val* var6 /* : MClassDef */;
+val* var_cd1 /* var cd1: MClassDef */;
+val* var7 /* : MClass */;
+val* var_c1 /* var c1: MClass */;
+short int var8 /* : Bool */;
+short int var_keep /* var keep: Bool */;
+val* var9 /* : Iterator[nullable Object] */;
+short int var10 /* : Bool */;
+val* var11 /* : nullable Object */;
+val* var_pd2 /* var pd2: MPropDef */;
+short int var12 /* : Bool */;
+val* var13 /* : MClassDef */;
+val* var_cd2 /* var cd2: MClassDef */;
+val* var14 /* : MClass */;
+val* var_c2 /* var c2: MClass */;
+val* var15 /* : MClassType */;
+val* var16 /* : MClassType */;
+short int var17 /* : Bool */;
+val* var18 /* : MModule */;
+val* var19 /* : POSetElement[MModule] */;
+val* var20 /* : MModule */;
+short int var21 /* : Bool */;
+short int var22 /* : Bool */;
+short int var23 /* : Bool */;
+val* var24 /* : MClassType */;
+val* var25 /* : null */;
+val* var26 /* : MClassType */;
+short int var27 /* : Bool */;
+short int var_ /* var : Bool */;
+val* var28 /* : MClassType */;
+val* var29 /* : MClassType */;
+short int var30 /* : Bool */;
+short int var31 /* : Bool */;
+short int var33 /* : Bool */;
+static val* varonce;
+val* var34 /* : String */;
+char* var35 /* : NativeString */;
+long var36 /* : Int */;
+val* var37 /* : String */;
+static val* varonce38;
+val* var39 /* : String */;
+char* var40 /* : NativeString */;
+long var41 /* : Int */;
+val* var42 /* : String */;
+val* var43 /* : String */;
+val* var44 /* : Array[Object] */;
+long var45 /* : Int */;
+val* var46 /* : NativeArray[Object] */;
+val* var47 /* : String */;
+/* Covariant cast for argument 1 (candidates) <p1:Array[MPropDef]> isa Array[MPROPDEF] */
+/* <p1:Array[MPropDef]> isa Array[MPROPDEF] */
+type_struct = self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p1->type->table_size) {
+var1 = 0;
+} else {
+var1 = p1->type->type_table[cltype] == idtype;
+}
+if (!var1) {
+var_class_name = p1 == NULL ? "null" : p1->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[MPROPDEF]", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1601);
+show_backtrace(1);
+}
+var_mmodule = p0;
+var_candidates = p1;
+var2 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF]);
+((void (*)(val*))(var2->class->vft[COLOR_array__Array__init]))(var2) /* init on <var2:Array[MPropDef]>*/;
+var_res = var2;
+var3 = ((val* (*)(val*))(var_candidates->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_candidates) /* iterator on <var_candidates:Array[MPropDef]>*/;
for(;;) {
-var37 = ((short int (*)(val*))(var36->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var36) /* is_ok on <var36:Iterator[nullable Object]>*/;
-if(!var37) break;
-var38 = ((val* (*)(val*))(var36->class->vft[COLOR_abstract_collection__Iterator__item]))(var36) /* item on <var36:Iterator[nullable Object]>*/;
-var_pd1 = var38;
-var39 = ((val* (*)(val*))(var_pd1->class->vft[COLOR_model__MPropDef__mclassdef]))(var_pd1) /* mclassdef on <var_pd1:MPropDef>*/;
-var_cd1 = var39;
-var40 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__mclass]))(var_cd1) /* mclass on <var_cd1:MClassDef>*/;
-var_c1 = var40;
-var41 = 1;
-var_keep = var41;
-var42 = ((val* (*)(val*))(var_candidates->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_candidates) /* iterator on <var_candidates:Array[MPropDef]>*/;
+var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
+if(!var4) break;
+var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
+var_pd1 = var5;
+var6 = ((val* (*)(val*))(var_pd1->class->vft[COLOR_model__MPropDef__mclassdef]))(var_pd1) /* mclassdef on <var_pd1:MPropDef>*/;
+var_cd1 = var6;
+var7 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__mclass]))(var_cd1) /* mclass on <var_cd1:MClassDef>*/;
+var_c1 = var7;
+var8 = 1;
+var_keep = var8;
+var9 = ((val* (*)(val*))(var_candidates->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_candidates) /* iterator on <var_candidates:Array[MPropDef]>*/;
for(;;) {
-var43 = ((short int (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var42) /* is_ok on <var42:Iterator[nullable Object]>*/;
-if(!var43) break;
-var44 = ((val* (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__item]))(var42) /* item on <var42:Iterator[nullable Object]>*/;
-var_pd2 = var44;
-var45 = ((short int (*)(val*, val*))(var_pd2->class->vft[COLOR_kernel__Object___61d_61d]))(var_pd2, var_pd1) /* == on <var_pd2:MPropDef>*/;
-if (var45){
-goto CONTINUE_label46;
-} else {
-}
-var47 = ((val* (*)(val*))(var_pd2->class->vft[COLOR_model__MPropDef__mclassdef]))(var_pd2) /* mclassdef on <var_pd2:MPropDef>*/;
-var_cd2 = var47;
-var48 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__mclass]))(var_cd2) /* mclass on <var_cd2:MClassDef>*/;
-var_c2 = var48;
-var49 = ((val* (*)(val*))(var_c2->class->vft[COLOR_model__MClass__mclass_type]))(var_c2) /* mclass_type on <var_c2:MClass>*/;
-var50 = ((val* (*)(val*))(var_c1->class->vft[COLOR_model__MClass__mclass_type]))(var_c1) /* mclass_type on <var_c1:MClass>*/;
-var51 = ((short int (*)(val*, val*))(var49->class->vft[COLOR_kernel__Object___61d_61d]))(var49, var50) /* == on <var49:MClassType>*/;
-if (var51){
-var52 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__mmodule]))(var_cd2) /* mmodule on <var_cd2:MClassDef>*/;
-var53 = ((val* (*)(val*))(var52->class->vft[COLOR_model_base__MModule__in_importation]))(var52) /* in_importation on <var52:MModule>*/;
-var54 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__mmodule]))(var_cd1) /* mmodule on <var_cd1:MClassDef>*/;
-var55 = ((short int (*)(val*, val*))(var53->class->vft[COLOR_poset__POSetElement___60d_61d]))(var53, var54) /* <= on <var53:POSetElement[MModule]>*/;
-if (var55){
-var56 = 0;
-var_keep = var56;
-goto BREAK_label46;
+var10 = ((short int (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var9) /* is_ok on <var9:Iterator[nullable Object]>*/;
+if(!var10) break;
+var11 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__item]))(var9) /* item on <var9:Iterator[nullable Object]>*/;
+var_pd2 = var11;
+var12 = ((short int (*)(val*, val*))(var_pd2->class->vft[COLOR_kernel__Object___61d_61d]))(var_pd2, var_pd1) /* == on <var_pd2:MPropDef>*/;
+if (var12){
+goto CONTINUE_label;
+} else {
+}
+var13 = ((val* (*)(val*))(var_pd2->class->vft[COLOR_model__MPropDef__mclassdef]))(var_pd2) /* mclassdef on <var_pd2:MPropDef>*/;
+var_cd2 = var13;
+var14 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__mclass]))(var_cd2) /* mclass on <var_cd2:MClassDef>*/;
+var_c2 = var14;
+var15 = ((val* (*)(val*))(var_c2->class->vft[COLOR_model__MClass__mclass_type]))(var_c2) /* mclass_type on <var_c2:MClass>*/;
+var16 = ((val* (*)(val*))(var_c1->class->vft[COLOR_model__MClass__mclass_type]))(var_c1) /* mclass_type on <var_c1:MClass>*/;
+var17 = ((short int (*)(val*, val*))(var15->class->vft[COLOR_kernel__Object___61d_61d]))(var15, var16) /* == on <var15:MClassType>*/;
+if (var17){
+var18 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__mmodule]))(var_cd2) /* mmodule on <var_cd2:MClassDef>*/;
+var19 = ((val* (*)(val*))(var18->class->vft[COLOR_mmodule__MModule__in_importation]))(var18) /* in_importation on <var18:MModule>*/;
+var20 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__mmodule]))(var_cd1) /* mmodule on <var_cd1:MClassDef>*/;
+var21 = ((short int (*)(val*, val*))(var19->class->vft[COLOR_poset__POSetElement___60d]))(var19, var20) /* < on <var19:POSetElement[MModule]>*/;
+if (var21){
+var22 = 0;
+var_keep = var22;
+goto BREAK_label;
} else {
}
} else {
-var57 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_cd2) /* bound_mtype on <var_cd2:MClassDef>*/;
-var58 = NULL;
-var59 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_cd1) /* bound_mtype on <var_cd1:MClassDef>*/;
-var60 = ((short int (*)(val*, val*, val*, val*))(var57->class->vft[COLOR_model__MType__is_subtype]))(var57, var_mmodule, var58, var59) /* is_subtype on <var57:MClassType>*/;
-if (var60){
-var61 = 0;
-var_keep = var61;
-goto BREAK_label46;
+var24 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_cd2) /* bound_mtype on <var_cd2:MClassDef>*/;
+var25 = NULL;
+var26 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_cd1) /* bound_mtype on <var_cd1:MClassDef>*/;
+var27 = ((short int (*)(val*, val*, val*, val*))(var24->class->vft[COLOR_model__MType__is_subtype]))(var24, var_mmodule, var25, var26) /* is_subtype on <var24:MClassType>*/;
+var_ = var27;
+if (var27){
+var28 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_cd2) /* bound_mtype on <var_cd2:MClassDef>*/;
+var29 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_cd1) /* bound_mtype on <var_cd1:MClassDef>*/;
+var30 = ((short int (*)(val*, val*))(var28->class->vft[COLOR_kernel__Object___33d_61d]))(var28, var29) /* != on <var28:MClassType>*/;
+var23 = var30;
+} else {
+var23 = var_;
+}
+if (var23){
+var31 = 0;
+var_keep = var31;
+goto BREAK_label;
} else {
}
}
-CONTINUE_label46: (void)0;
-((void (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__next]))(var42) /* next on <var42:Iterator[nullable Object]>*/;
+CONTINUE_label: (void)0;
+((void (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__next]))(var9) /* next on <var9:Iterator[nullable Object]>*/;
}
-BREAK_label46: (void)0;
+BREAK_label: (void)0;
if (var_keep){
((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var_pd1) /* add on <var_res:Array[MPropDef]>*/;
} else {
}
-CONTINUE_label62: (void)0;
-((void (*)(val*))(var36->class->vft[COLOR_abstract_collection__Iterator__next]))(var36) /* next on <var36:Iterator[nullable Object]>*/;
+CONTINUE_label32: (void)0;
+((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
}
-BREAK_label62: (void)0;
-var63 = ((short int (*)(val*))(var_res->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_res) /* is_empty on <var_res:Array[MPropDef]>*/;
-if (var63){
+BREAK_label32: (void)0;
+var33 = ((short int (*)(val*))(var_res->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_res) /* is_empty on <var_res:Array[MPropDef]>*/;
+if (var33){
if (varonce) {
-var64 = varonce;
+var34 = varonce;
} else {
-var65 = "All lost! ";
-var66 = 10;
-var67 = string__NativeString__to_s_with_length(var65, var66);
-var64 = var67;
-varonce = var64;
+var35 = "All lost! ";
+var36 = 10;
+var37 = string__NativeString__to_s_with_length(var35, var36);
+var34 = var37;
+varonce = var34;
}
-if (varonce68) {
-var69 = varonce68;
+if (varonce38) {
+var39 = varonce38;
} else {
-var70 = ", ";
-var71 = 2;
-var72 = string__NativeString__to_s_with_length(var70, var71);
-var69 = var72;
-varonce68 = var69;
+var40 = ", ";
+var41 = 2;
+var42 = string__NativeString__to_s_with_length(var40, var41);
+var39 = var42;
+varonce38 = var39;
}
-var73 = ((val* (*)(val*, val*))(var_candidates->class->vft[COLOR_string__Collection__join]))(var_candidates, var69) /* join on <var_candidates:Array[MPropDef]>*/;
-var74 = NEW_array__Array(&type_array__Arraykernel__Object);
-{ /* var74 = array_instance Array[Object] */
-var75 = 2;
-var76 = NEW_array__NativeArray(var75, &type_array__NativeArraykernel__Object);
-((struct instance_array__NativeArray*)var76)->values[0] = (val*) var64;
-((struct instance_array__NativeArray*)var76)->values[1] = (val*) var73;
-((void (*)(val*, val*, long))(var74->class->vft[COLOR_array__Array__with_native]))(var74, var76, var75) /* with_native on <var74:Array[Object]>*/;
-CHECK_NEW_array__Array(var74);
+var43 = ((val* (*)(val*, val*))(var_candidates->class->vft[COLOR_string__Collection__join]))(var_candidates, var39) /* join on <var_candidates:Array[MPropDef]>*/;
+var44 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var44 = array_instance Array[Object] */
+var45 = 2;
+var46 = NEW_array__NativeArray(var45, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var46)->values[0] = (val*) var34;
+((struct instance_array__NativeArray*)var46)->values[1] = (val*) var43;
+((void (*)(val*, val*, long))(var44->class->vft[COLOR_array__Array__with_native]))(var44, var46, var45) /* with_native on <var44:Array[Object]>*/;
}
-var77 = ((val* (*)(val*))(var74->class->vft[COLOR_string__Object__to_s]))(var74) /* to_s on <var74:Array[Object]>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var77) /* print on <self:MProperty>*/;
+var47 = ((val* (*)(val*))(var44->class->vft[COLOR_string__Object__to_s]))(var44) /* to_s on <var44:Array[Object]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var47) /* print on <self:MProperty>*/;
} else {
}
var = var_res;
RET_LABEL:;
return var;
}
-/* method model#MProperty#lookup_super_definitions for (self: Object, MModule, MType): Array[MPropDef] */
-val* VIRTUAL_model__MProperty__lookup_super_definitions(val* self, val* p0, val* p1) {
+/* method model#MProperty#select_most_specific for (self: Object, MModule, Array[MPropDef]): Array[MPropDef] */
+val* VIRTUAL_model__MProperty__select_most_specific(val* self, val* p0, val* p1) {
val* var /* : Array[MPropDef] */;
val* var1 /* : Array[MPropDef] */;
-var1 = model__MProperty__lookup_super_definitions(self, p0, p1);
+var1 = model__MProperty__select_most_specific(self, p0, p1);
var = var1;
RET_LABEL:;
return var;
var_mtype = p1;
var1 = ((short int (*)(val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__has_mproperty]))(var_mtype, var_mmodule, self) /* has_mproperty on <var_mtype:MType>*/;
if (!var1) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 1683);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1648);
+show_backtrace(1);
}
var2 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_model__MProperty__lookup_all_definitions]))(self, var_mmodule, var_mtype) /* lookup_all_definitions on <self:MProperty>*/;
var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__first]))(var2) /* first on <var2:Array[MPropDef]>*/;
short int var28 /* : Bool */;
int cltype29;
int idtype30;
+const char* var_class_name;
short int var31 /* : Bool */;
val* var32 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
val* var33 /* : Array[nullable Object] */;
var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
var2 = !var1;
if (!var2) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 1691);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1656);
+show_backtrace(1);
}
/* <var_mtype:MType> isa MNullableType */
cltype = type_model__MNullableType.color;
}
var9 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF]);
((void (*)(val*))(var9->class->vft[COLOR_array__Array__init]))(var9) /* init on <var9:Array[MPropDef]>*/;
-CHECK_NEW_array__Array(var9);
var_candidates = var9;
var10 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__mpropdefs]))(self) /* mpropdefs on <self:MProperty>*/;
var11 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Collection__iterator]))(var10) /* iterator on <var10:Array[MPropDef]>*/;
if(!var12) break;
var13 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__item]))(var11) /* item on <var11:Iterator[nullable Object]>*/;
var_mpropdef = var13;
-var14 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model_base__MModule__in_importation]))(var_mmodule) /* in_importation on <var_mmodule:MModule>*/;
+var14 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__in_importation]))(var_mmodule) /* in_importation on <var_mmodule:MModule>*/;
var15 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
var16 = ((val* (*)(val*))(var15->class->vft[COLOR_model__MClassDef__mmodule]))(var15) /* mmodule on <var15:MClassDef>*/;
var17 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_poset__POSetElement___60d_61d]))(var14, var16) /* <= on <var14:POSetElement[MModule]>*/;
/* <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", 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", 264);
+show_backtrace(1);
}
var31 = var24 <= var25;
var26 = var31;
val* var1 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
var1 = self->attrs[COLOR_model__MProperty___64dlookup_all_definitions_cache].val; /* @lookup_all_definitions_cache on <self:MProperty> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @lookup_all_definitions_cache", "src/model/model.nit", 1720);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @lookup_all_definitions_cache");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1685);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
int cltype;
int idtype;
const struct type* type_struct;
+const char* var_class_name;
/* Covariant cast for argument 0 (lookup_all_definitions_cache) <p0:HashMap2[MModule, MType, Array[MPropDef]]> isa HashMap2[MModule, MType, Array[MPROPDEF]] */
/* <p0:HashMap2[MModule, MType, Array[MPropDef]]> isa HashMap2[MModule, MType, Array[MPROPDEF]] */
-type_struct = self->type->resolution_table->types[COLOR_more_collections__HashMap2model_base__MModulemodel__MTypearray__Arraymodel__MProperty_VTMPROPDEF];
+type_struct = self->type->resolution_table->types[COLOR_more_collections__HashMap2mmodule__MModulemodel__MTypearray__Arraymodel__MProperty_VTMPROPDEF];
cltype = type_struct->color;
idtype = type_struct->id;
if(cltype >= p0->type->table_size) {
var = p0->type->type_table[cltype] == idtype;
}
if (!var) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/model/model.nit", 1720);
-exit(1);
+var_class_name = p0 == NULL ? "null" : p0->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "HashMap2[MModule, MType, Array[MPROPDEF]]", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1685);
+show_backtrace(1);
}
self->attrs[COLOR_model__MProperty___64dlookup_all_definitions_cache].val = p0; /* @lookup_all_definitions_cache on <self:MProperty> */
RET_LABEL:;
val* var1 /* : MVirtualType */;
var1 = self->attrs[COLOR_model__MVirtualTypeProp___64dmvirtualtype].val; /* @mvirtualtype on <self:MVirtualTypeProp> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mvirtualtype", "src/model/model.nit", 1774);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mvirtualtype");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1739);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var1 /* : Location */;
var1 = self->attrs[COLOR_model__MPropDef___64dlocation].val; /* @location on <self:MPropDef> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @location", "src/model/model.nit", 1791);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @location");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1756);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var1 /* : MClassDef */;
var1 = self->attrs[COLOR_model__MPropDef___64dmclassdef].val; /* @mclassdef on <self:MPropDef> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mclassdef", "src/model/model.nit", 1794);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclassdef");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1759);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
val* var1 /* : MProperty */;
var1 = self->attrs[COLOR_model__MPropDef___64dmproperty].val; /* @mproperty on <self:MPropDef> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mproperty", "src/model/model.nit", 1797);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mproperty");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1762);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
int cltype;
int idtype;
const struct type* type_struct;
+const char* var_class_name;
/* Covariant cast for argument 0 (mproperty) <p0:MProperty> isa MPROPERTY */
/* <p0:MProperty> isa MPROPERTY */
type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
var = p0->type->type_table[cltype] == idtype;
}
if (!var) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/model/model.nit", 1797);
-exit(1);
+var_class_name = p0 == NULL ? "null" : p0->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1762);
+show_backtrace(1);
}
self->attrs[COLOR_model__MPropDef___64dmproperty].val = p0; /* @mproperty on <self:MPropDef> */
RET_LABEL:;
int cltype;
int idtype;
const struct type* type_struct;
+const char* var_class_name;
val* var_mclassdef /* var mclassdef: MClassDef */;
val* var_mproperty /* var mproperty: MProperty */;
val* var_location /* var location: Location */;
var = p1->type->type_table[cltype] == idtype;
}
if (!var) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/model/model.nit", 1800);
-exit(1);
+var_class_name = p1 == NULL ? "null" : p1->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1765);
+show_backtrace(1);
}
var_mclassdef = p0;
var_mproperty = p1;
((struct instance_array__NativeArray*)var9)->values[1] = (val*) var3;
((struct instance_array__NativeArray*)var9)->values[2] = (val*) var_mproperty;
((void (*)(val*, val*, long))(var7->class->vft[COLOR_array__Array__with_native]))(var7, var9, var8) /* with_native on <var7:Array[Object]>*/;
-CHECK_NEW_array__Array(var7);
}
var10 = ((val* (*)(val*))(var7->class->vft[COLOR_string__Object__to_s]))(var7) /* to_s on <var7:Array[Object]>*/;
((void (*)(val*, val*))(self->class->vft[COLOR_model__MPropDef__to_s_61d]))(self, var10) /* to_s= on <self:MPropDef>*/;
val* var1 /* : String */;
var1 = self->attrs[COLOR_model__MPropDef___64dto_s].val; /* @to_s on <self:MPropDef> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @to_s", "src/model/model.nit", 1810);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @to_s");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1775);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
int cltype;
int idtype;
const struct type* type_struct;
+const char* var_class_name;
var_mmodule = p0;
var_mtype = p1;
var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
var2 = !var1;
if (!var2) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/model/model.nit", 1824);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1789);
+show_backtrace(1);
}
var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MPropDef__mproperty]))(self) /* mproperty on <self:MPropDef>*/;
var4 = ((val* (*)(val*, val*, val*))(var3->class->vft[COLOR_model__MProperty__lookup_all_definitions]))(var3, var_mmodule, var_mtype) /* lookup_all_definitions on <var3:MProperty>*/;
BREAK_label: (void)0;
var10 = ((short int (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_i) /* is_ok on <var_i:ArrayIterator[MPropDef]>*/;
if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert \'has_property\' failed", "src/model/model.nit", 1829);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert \'has_property\' failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1794);
+show_backtrace(1);
}
((void (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__next]))(var_i) /* next on <var_i:ArrayIterator[MPropDef]>*/;
var11 = ((short int (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_i) /* is_ok on <var_i:ArrayIterator[MPropDef]>*/;
if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert \'has_next_property\' failed", "src/model/model.nit", 1831);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert \'has_next_property\' failed");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1796);
+show_backtrace(1);
}
var12 = ((val* (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__item]))(var_i) /* item on <var_i:ArrayIterator[MPropDef]>*/;
/* <var12:nullable Object(MPropDef)> isa MPROPDEF */
var13 = var12->type->type_table[cltype] == idtype;
}
if (!var13) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/model/model.nit", 1832);
-exit(1);
+var_class_name = var12 == NULL ? "null" : var12->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPDEF", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1797);
+show_backtrace(1);
}
var = var12;
goto RET_LABEL;
int cltype;
int idtype;
const struct type* type_struct;
+const char* var_class_name;
val* var_mclassdef /* var mclassdef: MClassDef */;
val* var_mproperty /* var mproperty: MMethod */;
val* var_location /* var location: Location */;
var = p1->type->type_table[cltype] == idtype;
}
if (!var) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/model/model.nit", 1843);
-exit(1);
+var_class_name = p1 == NULL ? "null" : p1->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1808);
+show_backtrace(1);
}
var_mclassdef = p0;
var_mproperty = p1;
int cltype;
int idtype;
const struct type* type_struct;
+const char* var_class_name;
val* var_mclassdef /* var mclassdef: MClassDef */;
val* var_mproperty /* var mproperty: MAttribute */;
val* var_location /* var location: Location */;
var = p1->type->type_table[cltype] == idtype;
}
if (!var) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/model/model.nit", 1862);
-exit(1);
+var_class_name = p1 == NULL ? "null" : p1->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1827);
+show_backtrace(1);
}
var_mclassdef = p0;
var_mproperty = p1;
int cltype;
int idtype;
const struct type* type_struct;
+const char* var_class_name;
val* var_mclassdef /* var mclassdef: MClassDef */;
val* var_mproperty /* var mproperty: MVirtualTypeProp */;
val* var_location /* var location: Location */;
var = p1->type->type_table[cltype] == idtype;
}
if (!var) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/model/model.nit", 1878);
-exit(1);
+var_class_name = p1 == NULL ? "null" : p1->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1843);
+show_backtrace(1);
}
var_mclassdef = p0;
var_mproperty = p1;
val* var1 /* : String */;
var1 = self->attrs[COLOR_model__MClassKind___64dto_s].val; /* @to_s on <self:MClassKind> */
if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @to_s", "src/model/model.nit", 1898);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @to_s");
+fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1863);
+show_backtrace(1);
}
var = var1;
RET_LABEL:;
}
var8 = 1;
((void (*)(val*, val*, short int))(var2->class->vft[COLOR_model__MClassKind__init]))(var2, var4, var8) /* init on <var2:MClassKind>*/;
-CHECK_NEW_model__MClassKind(var2);
var1 = var2;
varonce = var1;
varonce_guard = 1;
}
var8 = 1;
((void (*)(val*, val*, short int))(var2->class->vft[COLOR_model__MClassKind__init]))(var2, var4, var8) /* init on <var2:MClassKind>*/;
-CHECK_NEW_model__MClassKind(var2);
var1 = var2;
varonce = var1;
varonce_guard = 1;
}
var8 = 0;
((void (*)(val*, val*, short int))(var2->class->vft[COLOR_model__MClassKind__init]))(var2, var4, var8) /* init on <var2:MClassKind>*/;
-CHECK_NEW_model__MClassKind(var2);
var1 = var2;
varonce = var1;
varonce_guard = 1;
}
var8 = 0;
((void (*)(val*, val*, short int))(var2->class->vft[COLOR_model__MClassKind__init]))(var2, var4, var8) /* init on <var2:MClassKind>*/;
-CHECK_NEW_model__MClassKind(var2);
var1 = var2;
varonce = var1;
varonce_guard = 1;
}
var8 = 0;
((void (*)(val*, val*, short int))(var2->class->vft[COLOR_model__MClassKind__init]))(var2, var4, var8) /* init on <var2:MClassKind>*/;
-CHECK_NEW_model__MClassKind(var2);
var1 = var2;
varonce = var1;
varonce_guard = 1;