X-Git-Url: http://nitlanguage.org diff --git a/c_src/poset.sep.1.c b/c_src/poset.sep.1.c index f3feeb5..c04fc9f 100644 --- a/c_src/poset.sep.1.c +++ b/c_src/poset.sep.1.c @@ -3,12 +3,38 @@ val* poset__POSet__iterator(val* self) { val* var /* : Iterator[Object] */; val* var1 /* : HashMap[Object, POSetElement[Object]] */; -val* var2 /* : Collection[Object] */; -val* var3 /* : Iterator[nullable Object] */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on */; -var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__MapRead__keys]))(var1) /* keys on */; -var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on */; -var = var3; +val* var3 /* : HashMap[Object, POSetElement[Object]] */; +val* var4 /* : RemovableCollection[Object] */; +val* var6 /* : RemovableCollection[Object] */; +val* var7 /* : Iterator[nullable Object] */; +{ +{ /* Inline poset#POSet#elements (self) on */ +var3 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 31); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} +{ +{ /* Inline hash_collection#HashMap#keys (var1) on */ +var6 = var1->attrs[COLOR_hash_collection__HashMap___keys].val; /* _keys on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _keys"); +PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/hash_collection.nit", 245); +show_backtrace(1); +} +var4 = var6; +RET_LABEL5:(void)0; +} +} +{ +var7 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Collection__iterator]))(var4) /* iterator on */; +} +var = var7; goto RET_LABEL; RET_LABEL:; return var; @@ -26,10 +52,11 @@ return var; val* poset__POSet__elements(val* self) { val* var /* : HashMap[Object, POSetElement[Object]] */; val* var1 /* : HashMap[Object, POSetElement[Object]] */; -var1 = self->attrs[COLOR_poset__POSet___64delements].val; /* @elements on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @elements", "lib/poset.nit", 31); -exit(1); +var1 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 31); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -39,38 +66,20 @@ return var; val* VIRTUAL_poset__POSet__elements(val* self) { val* var /* : HashMap[Object, POSetElement[Object]] */; val* var1 /* : HashMap[Object, POSetElement[Object]] */; -var1 = poset__POSet__elements(self); -var = var1; -RET_LABEL:; -return var; +val* var3 /* : HashMap[Object, POSetElement[Object]] */; +{ /* Inline poset#POSet#elements (self) on */ +var3 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 31); +show_backtrace(1); } -/* method poset#POSet#elements= for (self: POSet[Object], HashMap[Object, POSetElement[Object]]) */ -void poset__POSet__elements_61d(val* self, val* p0) { -short int var /* : Bool */; -int cltype; -int idtype; -const struct type* type_struct; -/* Covariant cast for argument 0 (elements) isa HashMap[POSet#0, POSetElement[POSet#0]] */ -/* isa HashMap[POSet#0, POSetElement[POSet#0]] */ -type_struct = self->type->resolution_table->types[COLOR_hash_collection__HashMapposet__POSet_FT0poset__POSetElementposet__POSet_FT0]; -cltype = type_struct->color; -idtype = type_struct->id; -if(cltype >= p0->type->table_size) { -var = 0; -} else { -var = p0->type->type_table[cltype] == idtype; +var1 = var3; +RET_LABEL2:(void)0; } -if (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 31); -exit(1); -} -self->attrs[COLOR_poset__POSet___64delements].val = p0; /* @elements on */ -RET_LABEL:; -} -/* method poset#POSet#elements= for (self: Object, HashMap[Object, POSetElement[Object]]) */ -void VIRTUAL_poset__POSet__elements_61d(val* self, val* p0) { -poset__POSet__elements_61d(self, p0); +var = var1; RET_LABEL:; +return var; } /* method poset#POSet#has for (self: POSet[Object], Object): Bool */ short int poset__POSet__has(val* self, val* p0) { @@ -79,10 +88,13 @@ short int var1 /* : Bool */; int cltype; int idtype; const struct type* type_struct; +const char* var_class_name; val* var_e /* var e: Object */; val* var2 /* : HashMap[Object, POSetElement[Object]] */; -val* var3 /* : Collection[Object] */; -short int var4 /* : Bool */; +val* var4 /* : HashMap[Object, POSetElement[Object]] */; +val* var5 /* : RemovableCollection[Object] */; +val* var7 /* : RemovableCollection[Object] */; +short int var8 /* : Bool */; /* Covariant cast for argument 0 (e) isa Collection#0 */ /* isa Collection#0 */ type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collection_FT0]; @@ -93,15 +105,41 @@ var1 = 0; } else { var1 = p0->type->type_table[cltype] == idtype; } -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 34); -exit(1); +if (unlikely(!var1)) { +var_class_name = p0 == NULL ? "null" : p0->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection#0", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 34); +show_backtrace(1); } var_e = p0; -var2 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on */; -var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__MapRead__keys]))(var2) /* keys on */; -var4 = ((short int (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__Collection__has]))(var3, var_e) /* has on */; -var = var4; +{ +{ /* Inline poset#POSet#elements (self) on */ +var4 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +if (unlikely(var4 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 31); +show_backtrace(1); +} +var2 = var4; +RET_LABEL3:(void)0; +} +} +{ +{ /* Inline hash_collection#HashMap#keys (var2) on */ +var7 = var2->attrs[COLOR_hash_collection__HashMap___keys].val; /* _keys on */ +if (unlikely(var7 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _keys"); +PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/hash_collection.nit", 245); +show_backtrace(1); +} +var5 = var7; +RET_LABEL6:(void)0; +} +} +{ +var8 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__Collection__has]))(var5, var_e) /* has on */; +} +var = var8; goto RET_LABEL; RET_LABEL:; return var; @@ -122,19 +160,37 @@ short int var1 /* : Bool */; int cltype; int idtype; const struct type* type_struct; +const char* var_class_name; val* var_e /* var e: Object */; val* var2 /* : HashMap[Object, POSetElement[Object]] */; -val* var3 /* : Collection[Object] */; -short int var4 /* : Bool */; -val* var5 /* : HashMap[Object, POSetElement[Object]] */; -val* var6 /* : nullable Object */; -val* var7 /* : POSetElement[Object] */; -val* var8 /* : HashMap[Object, POSetElement[Object]] */; -long var9 /* : Int */; +val* var4 /* : HashMap[Object, POSetElement[Object]] */; +val* var5 /* : RemovableCollection[Object] */; +val* var7 /* : RemovableCollection[Object] */; +short int var8 /* : Bool */; +val* var9 /* : HashMap[Object, POSetElement[Object]] */; +val* var11 /* : HashMap[Object, POSetElement[Object]] */; +val* var12 /* : nullable Object */; +val* var13 /* : POSetElement[Object] */; +val* var14 /* : HashMap[Object, POSetElement[Object]] */; +val* var16 /* : HashMap[Object, POSetElement[Object]] */; +long var17 /* : Int */; +short int var19 /* : Bool */; +int cltype20; +int idtype21; +const struct type* type_struct22; +const char* var_class_name23; +short int var24 /* : Bool */; +int cltype25; +int idtype26; +const struct type* type_struct27; +const char* var_class_name28; val* var_poe /* var poe: POSetElement[Object] */; -val* var10 /* : HashSet[Object] */; -val* var11 /* : HashSet[Object] */; -val* var12 /* : HashMap[Object, POSetElement[Object]] */; +val* var29 /* : HashSet[Object] */; +val* var31 /* : HashSet[Object] */; +val* var32 /* : HashSet[Object] */; +val* var34 /* : HashSet[Object] */; +val* var35 /* : HashMap[Object, POSetElement[Object]] */; +val* var37 /* : HashMap[Object, POSetElement[Object]] */; /* Covariant cast for argument 0 (e) isa POSet#0 */ /* isa POSet#0 */ type_struct = self->type->resolution_table->types[COLOR_poset__POSet_FT0]; @@ -145,33 +201,162 @@ var1 = 0; } else { var1 = p0->type->type_table[cltype] == idtype; } -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 36); -exit(1); +if (unlikely(!var1)) { +var_class_name = p0 == NULL ? "null" : p0->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet#0", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 36); +show_backtrace(1); } var_e = p0; -var2 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on */; -var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__MapRead__keys]))(var2) /* keys on */; -var4 = ((short int (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__Collection__has]))(var3, var_e) /* has on */; -if (var4){ -var5 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on */; -var6 = ((val* (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var5, var_e) /* [] on */; -var = var6; +{ +{ /* Inline poset#POSet#elements (self) on */ +var4 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +if (unlikely(var4 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 31); +show_backtrace(1); +} +var2 = var4; +RET_LABEL3:(void)0; +} +} +{ +{ /* Inline hash_collection#HashMap#keys (var2) on */ +var7 = var2->attrs[COLOR_hash_collection__HashMap___keys].val; /* _keys on */ +if (unlikely(var7 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _keys"); +PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/hash_collection.nit", 245); +show_backtrace(1); +} +var5 = var7; +RET_LABEL6:(void)0; +} +} +{ +var8 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__Collection__has]))(var5, var_e) /* has on */; +} +if (var8){ +{ +{ /* Inline poset#POSet#elements (self) on */ +var11 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +if (unlikely(var11 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 31); +show_backtrace(1); +} +var9 = var11; +RET_LABEL10:(void)0; +} +} +{ +var12 = hash_collection__HashMap___91d_93d(var9, var_e); +} +var = var12; goto RET_LABEL; } else { } -var7 = NEW_poset__POSetElement(self->type->resolution_table->types[COLOR_poset__POSetElementposet__POSet_FT0]); -var8 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on */; -var9 = ((long (*)(val*))(var8->class->vft[COLOR_abstract_collection__MapRead__length]))(var8) /* length on */; -((void (*)(val*, val*, val*, long))(var7->class->vft[COLOR_poset__POSetElement__init]))(var7, self, var_e, var9) /* init on */; -CHECK_NEW_poset__POSetElement(var7); -var_poe = var7; -var10 = ((val* (*)(val*))(var_poe->class->vft[COLOR_poset__POSetElement__tos]))(var_poe) /* tos on */; -((void (*)(val*, val*))(var10->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var10, var_e) /* add on */; -var11 = ((val* (*)(val*))(var_poe->class->vft[COLOR_poset__POSetElement__froms]))(var_poe) /* froms on */; -((void (*)(val*, val*))(var11->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var11, var_e) /* add on */; -var12 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on */; -((void (*)(val*, val*, val*))(var12->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var12, var_e, var_poe) /* []= on */; +var13 = NEW_poset__POSetElement(self->type->resolution_table->types[COLOR_poset__POSetElementposet__POSet_FT0]); +{ +{ /* Inline poset#POSet#elements (self) on */ +var16 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +if (unlikely(var16 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 31); +show_backtrace(1); +} +var14 = var16; +RET_LABEL15:(void)0; +} +} +{ +var17 = hash_collection__HashMap__length(var14); +} +{ +{ /* Inline poset#POSetElement#init (var13,self,var_e,var17) on */ +/* Covariant cast for argument 0 (poset) isa POSet[POSetElement#0] */ +/* isa POSet[POSetElement#0] */ +type_struct22 = var13->type->resolution_table->types[COLOR_poset__POSetposet__POSetElement_FT0]; +cltype20 = type_struct22->color; +idtype21 = type_struct22->id; +if(cltype20 >= self->type->table_size) { +var19 = 0; +} else { +var19 = self->type->type_table[cltype20] == idtype21; +} +if (unlikely(!var19)) { +var_class_name23 = self == NULL ? "null" : self->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[POSetElement#0]", var_class_name23); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 175); +show_backtrace(1); +} +/* Covariant cast for argument 1 (element) isa POSetElement#0 */ +/* isa POSetElement#0 */ +type_struct27 = var13->type->resolution_table->types[COLOR_poset__POSetElement_FT0]; +cltype25 = type_struct27->color; +idtype26 = type_struct27->id; +if(cltype25 >= var_e->type->table_size) { +var24 = 0; +} else { +var24 = var_e->type->type_table[cltype25] == idtype26; +} +if (unlikely(!var24)) { +var_class_name28 = var_e == NULL ? "null" : var_e->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSetElement#0", var_class_name28); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 175); +show_backtrace(1); +} +var13->attrs[COLOR_poset__POSetElement___poset].val = self; /* _poset on */ +var13->attrs[COLOR_poset__POSetElement___element].val = var_e; /* _element on */ +var13->attrs[COLOR_poset__POSetElement___count].l = var17; /* _count on */ +RET_LABEL18:(void)0; +} +} +var_poe = var13; +{ +{ /* Inline poset#POSetElement#tos (var_poe) on */ +var31 = var_poe->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ +if (unlikely(var31 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 194); +show_backtrace(1); +} +var29 = var31; +RET_LABEL30:(void)0; +} +} +{ +hash_collection__HashSet__add(var29, var_e); /* Direct call hash_collection#HashSet#add on */ +} +{ +{ /* Inline poset#POSetElement#froms (var_poe) on */ +var34 = var_poe->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on */ +if (unlikely(var34 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _froms"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 195); +show_backtrace(1); +} +var32 = var34; +RET_LABEL33:(void)0; +} +} +{ +hash_collection__HashSet__add(var32, var_e); /* Direct call hash_collection#HashSet#add on */ +} +{ +{ /* Inline poset#POSet#elements (self) on */ +var37 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +if (unlikely(var37 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 31); +show_backtrace(1); +} +var35 = var37; +RET_LABEL36:(void)0; +} +} +{ +hash_collection__HashMap___91d_93d_61d(var35, var_e, var_poe); /* Direct call hash_collection#HashMap#[]= on */ +} var = var_poe; goto RET_LABEL; RET_LABEL:; @@ -193,12 +378,16 @@ short int var1 /* : Bool */; int cltype; int idtype; const struct type* type_struct; +const char* var_class_name; val* var_e /* var e: Object */; val* var2 /* : HashMap[Object, POSetElement[Object]] */; -val* var3 /* : Collection[Object] */; -short int var4 /* : Bool */; -val* var5 /* : HashMap[Object, POSetElement[Object]] */; -val* var6 /* : nullable Object */; +val* var4 /* : HashMap[Object, POSetElement[Object]] */; +val* var5 /* : RemovableCollection[Object] */; +val* var7 /* : RemovableCollection[Object] */; +short int var8 /* : Bool */; +val* var9 /* : HashMap[Object, POSetElement[Object]] */; +val* var11 /* : HashMap[Object, POSetElement[Object]] */; +val* var12 /* : nullable Object */; /* Covariant cast for argument 0 (e) isa POSet#0 */ /* isa POSet#0 */ type_struct = self->type->resolution_table->types[COLOR_poset__POSet_FT0]; @@ -209,21 +398,61 @@ var1 = 0; } else { var1 = p0->type->type_table[cltype] == idtype; } -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 50); -exit(1); +if (unlikely(!var1)) { +var_class_name = p0 == NULL ? "null" : p0->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet#0", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 50); +show_backtrace(1); } var_e = p0; -var2 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on */; -var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__MapRead__keys]))(var2) /* keys on */; -var4 = ((short int (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__Collection__has]))(var3, var_e) /* has on */; -if (!var4) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "lib/poset.nit", 63); -exit(1); -} -var5 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on */; -var6 = ((val* (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var5, var_e) /* [] on */; -var = var6; +{ +{ /* Inline poset#POSet#elements (self) on */ +var4 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +if (unlikely(var4 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 31); +show_backtrace(1); +} +var2 = var4; +RET_LABEL3:(void)0; +} +} +{ +{ /* Inline hash_collection#HashMap#keys (var2) on */ +var7 = var2->attrs[COLOR_hash_collection__HashMap___keys].val; /* _keys on */ +if (unlikely(var7 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _keys"); +PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/hash_collection.nit", 245); +show_backtrace(1); +} +var5 = var7; +RET_LABEL6:(void)0; +} +} +{ +var8 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__Collection__has]))(var5, var_e) /* has on */; +} +if (unlikely(!var8)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 63); +show_backtrace(1); +} +{ +{ /* Inline poset#POSet#elements (self) on */ +var11 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +if (unlikely(var11 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 31); +show_backtrace(1); +} +var9 = var11; +RET_LABEL10:(void)0; +} +} +{ +var12 = hash_collection__HashMap___91d_93d(var9, var_e); +} +var = var12; goto RET_LABEL; RET_LABEL:; return var; @@ -243,66 +472,88 @@ short int var /* : Bool */; int cltype; int idtype; const struct type* type_struct; +const char* var_class_name; short int var1 /* : Bool */; int cltype2; int idtype3; const struct type* type_struct4; +const char* var_class_name5; val* var_f /* var f: Object */; val* var_t /* var t: Object */; -val* var5 /* : POSetElement[Object] */; -val* var_fe /* var fe: POSetElement[Object] */; val* var6 /* : POSetElement[Object] */; +val* var_fe /* var fe: POSetElement[Object] */; +val* var7 /* : POSetElement[Object] */; val* var_te /* var te: POSetElement[Object] */; -val* var7 /* : HashSet[Object] */; -short int var8 /* : Bool */; -val* var9 /* : HashSet[Object] */; -val* var10 /* : Iterator[nullable Object] */; +val* var8 /* : HashSet[Object] */; +val* var10 /* : HashSet[Object] */; short int var11 /* : Bool */; -val* var12 /* : nullable Object */; +val* var12 /* : HashSet[Object] */; +val* var14 /* : HashSet[Object] */; +val* var15 /* : Iterator[Object] */; +short int var16 /* : Bool */; +val* var17 /* : nullable Object */; val* var_ff /* var ff: Object */; -val* var13 /* : HashMap[Object, POSetElement[Object]] */; -val* var14 /* : nullable Object */; +val* var18 /* : HashMap[Object, POSetElement[Object]] */; +val* var20 /* : HashMap[Object, POSetElement[Object]] */; +val* var21 /* : nullable Object */; val* var_ffe /* var ffe: POSetElement[Object] */; -val* var15 /* : HashSet[Object] */; -val* var16 /* : Iterator[nullable Object] */; -short int var17 /* : Bool */; -val* var18 /* : nullable Object */; -val* var_tt /* var tt: Object */; -val* var19 /* : HashMap[Object, POSetElement[Object]] */; -val* var20 /* : nullable Object */; -val* var_tte /* var tte: POSetElement[Object] */; -val* var21 /* : HashSet[Object] */; val* var22 /* : HashSet[Object] */; val* var24 /* : HashSet[Object] */; -short int var25 /* : Bool */; -val* var26 /* : HashSet[Object] */; -val* var27 /* : Array[nullable Object] */; -val* var28 /* : Iterator[nullable Object] */; -short int var29 /* : Bool */; -val* var30 /* : nullable Object */; -val* var_x /* var x: Object */; -val* var31 /* : HashMap[Object, POSetElement[Object]] */; -val* var32 /* : nullable Object */; -val* var_xe /* var xe: POSetElement[Object] */; -val* var33 /* : HashSet[Object] */; -short int var34 /* : Bool */; +val* var25 /* : Iterator[Object] */; +short int var26 /* : Bool */; +val* var27 /* : nullable Object */; +val* var_tt /* var tt: Object */; +val* var28 /* : HashMap[Object, POSetElement[Object]] */; +val* var30 /* : HashMap[Object, POSetElement[Object]] */; +val* var31 /* : nullable Object */; +val* var_tte /* var tte: POSetElement[Object] */; +val* var32 /* : HashSet[Object] */; +val* var34 /* : HashSet[Object] */; val* var35 /* : HashSet[Object] */; -val* var36 /* : HashSet[Object] */; -val* var38 /* : HashSet[Object] */; -val* var39 /* : Array[nullable Object] */; -val* var40 /* : Iterator[nullable Object] */; -short int var41 /* : Bool */; -val* var42 /* : nullable Object */; -val* var_x43 /* var x: Object */; -val* var44 /* : HashMap[Object, POSetElement[Object]] */; -val* var45 /* : nullable Object */; -val* var_xe46 /* var xe: POSetElement[Object] */; -val* var47 /* : HashSet[Object] */; +val* var37 /* : HashSet[Object] */; +val* var39 /* : HashSet[Object] */; +val* var41 /* : HashSet[Object] */; +short int var42 /* : Bool */; +val* var43 /* : HashSet[Object] */; +val* var45 /* : HashSet[Object] */; +val* var46 /* : Array[nullable Object] */; +val* var47 /* : ArrayIterator[nullable Object] */; short int var48 /* : Bool */; -val* var49 /* : HashSet[Object] */; -val* var50 /* : HashSet[Object] */; -val* var52 /* : HashSet[Object] */; -val* var53 /* : HashSet[Object] */; +val* var49 /* : nullable Object */; +val* var_x /* var x: Object */; +val* var50 /* : HashMap[Object, POSetElement[Object]] */; +val* var52 /* : HashMap[Object, POSetElement[Object]] */; +val* var53 /* : nullable Object */; +val* var_xe /* var xe: POSetElement[Object] */; +val* var54 /* : HashSet[Object] */; +val* var56 /* : HashSet[Object] */; +short int var57 /* : Bool */; +val* var58 /* : HashSet[Object] */; +val* var60 /* : HashSet[Object] */; +val* var61 /* : HashSet[Object] */; +val* var63 /* : HashSet[Object] */; +val* var65 /* : HashSet[Object] */; +val* var67 /* : HashSet[Object] */; +val* var68 /* : Array[nullable Object] */; +val* var69 /* : ArrayIterator[nullable Object] */; +short int var70 /* : Bool */; +val* var71 /* : nullable Object */; +val* var_x72 /* var x: Object */; +val* var73 /* : HashMap[Object, POSetElement[Object]] */; +val* var75 /* : HashMap[Object, POSetElement[Object]] */; +val* var76 /* : nullable Object */; +val* var_xe77 /* var xe: POSetElement[Object] */; +val* var78 /* : HashSet[Object] */; +val* var80 /* : HashSet[Object] */; +short int var81 /* : Bool */; +val* var82 /* : HashSet[Object] */; +val* var84 /* : HashSet[Object] */; +val* var85 /* : HashSet[Object] */; +val* var87 /* : HashSet[Object] */; +val* var89 /* : HashSet[Object] */; +val* var91 /* : HashSet[Object] */; +val* var92 /* : HashSet[Object] */; +val* var94 /* : HashSet[Object] */; /* Covariant cast for argument 0 (f) isa POSet#0 */ /* isa POSet#0 */ type_struct = self->type->resolution_table->types[COLOR_poset__POSet_FT0]; @@ -313,9 +564,11 @@ var = 0; } else { var = p0->type->type_table[cltype] == idtype; } -if (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 67); -exit(1); +if (unlikely(!var)) { +var_class_name = p0 == NULL ? "null" : p0->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet#0", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 67); +show_backtrace(1); } /* Covariant cast for argument 1 (t) isa POSet#0 */ /* isa POSet#0 */ @@ -327,574 +580,411 @@ var1 = 0; } else { var1 = p1->type->type_table[cltype2] == idtype3; } -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 67); -exit(1); +if (unlikely(!var1)) { +var_class_name5 = p1 == NULL ? "null" : p1->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet#0", var_class_name5); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 67); +show_backtrace(1); } var_f = p0; var_t = p1; -var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_poset__POSet__add_node]))(self, var_f) /* add_node on */; -var_fe = var5; -var6 = ((val* (*)(val*, val*))(self->class->vft[COLOR_poset__POSet__add_node]))(self, var_t) /* add_node on */; -var_te = var6; -var7 = ((val* (*)(val*))(var_fe->class->vft[COLOR_poset__POSetElement__tos]))(var_fe) /* tos on */; -var8 = ((short int (*)(val*, val*))(var7->class->vft[COLOR_abstract_collection__Collection__has]))(var7, var_t) /* has on */; -if (var8){ +{ +var6 = poset__POSet__add_node(self, var_f); +} +var_fe = var6; +{ +var7 = poset__POSet__add_node(self, var_t); +} +var_te = var7; +{ +{ /* Inline poset#POSetElement#tos (var_fe) on */ +var10 = var_fe->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ +if (unlikely(var10 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 194); +show_backtrace(1); +} +var8 = var10; +RET_LABEL9:(void)0; +} +} +{ +var11 = hash_collection__HashSet__has(var8, var_t); +} +if (var11){ goto RET_LABEL; } else { } -var9 = ((val* (*)(val*))(var_fe->class->vft[COLOR_poset__POSetElement__froms]))(var_fe) /* froms on */; -var10 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Collection__iterator]))(var9) /* iterator on */; +{ +{ /* Inline poset#POSetElement#froms (var_fe) on */ +var14 = var_fe->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on */ +if (unlikely(var14 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _froms"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 195); +show_backtrace(1); +} +var12 = var14; +RET_LABEL13:(void)0; +} +} +{ +var15 = hash_collection__HashSet__iterator(var12); +} for(;;) { -var11 = ((short int (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var10) /* is_ok on */; -if(!var11) break; -var12 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__item]))(var10) /* item on */; -var_ff = var12; -var13 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on */; -var14 = ((val* (*)(val*, val*))(var13->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var13, var_ff) /* [] on */; -var_ffe = var14; -var15 = ((val* (*)(val*))(var_te->class->vft[COLOR_poset__POSetElement__tos]))(var_te) /* tos on */; -var16 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_collection__Collection__iterator]))(var15) /* iterator on */; +{ +var16 = ((short int (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var15) /* is_ok on */; +} +if(!var16) break; +{ +var17 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__item]))(var15) /* item on */; +} +var_ff = var17; +{ +{ /* Inline poset#POSet#elements (self) on */ +var20 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +if (unlikely(var20 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 31); +show_backtrace(1); +} +var18 = var20; +RET_LABEL19:(void)0; +} +} +{ +var21 = hash_collection__HashMap___91d_93d(var18, var_ff); +} +var_ffe = var21; +{ +{ /* Inline poset#POSetElement#tos (var_te) on */ +var24 = var_te->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ +if (unlikely(var24 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 194); +show_backtrace(1); +} +var22 = var24; +RET_LABEL23:(void)0; +} +} +{ +var25 = hash_collection__HashSet__iterator(var22); +} for(;;) { -var17 = ((short int (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var16) /* is_ok on */; -if(!var17) break; -var18 = ((val* (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__item]))(var16) /* item on */; -var_tt = var18; -var19 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on */; -var20 = ((val* (*)(val*, val*))(var19->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var19, var_tt) /* [] on */; -var_tte = var20; -var21 = ((val* (*)(val*))(var_tte->class->vft[COLOR_poset__POSetElement__froms]))(var_tte) /* froms on */; -((void (*)(val*, val*))(var21->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var21, var_ff) /* add on */; -var22 = ((val* (*)(val*))(var_ffe->class->vft[COLOR_poset__POSetElement__tos]))(var_ffe) /* tos on */; -((void (*)(val*, val*))(var22->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var22, var_tt) /* add on */; +{ +var26 = ((short int (*)(val*))(var25->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var25) /* is_ok on */; +} +if(!var26) break; +{ +var27 = ((val* (*)(val*))(var25->class->vft[COLOR_abstract_collection__Iterator__item]))(var25) /* item on */; +} +var_tt = var27; +{ +{ /* Inline poset#POSet#elements (self) on */ +var30 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +if (unlikely(var30 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 31); +show_backtrace(1); +} +var28 = var30; +RET_LABEL29:(void)0; +} +} +{ +var31 = hash_collection__HashMap___91d_93d(var28, var_tt); +} +var_tte = var31; +{ +{ /* Inline poset#POSetElement#froms (var_tte) on */ +var34 = var_tte->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on */ +if (unlikely(var34 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _froms"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 195); +show_backtrace(1); +} +var32 = var34; +RET_LABEL33:(void)0; +} +} +{ +hash_collection__HashSet__add(var32, var_ff); /* Direct call hash_collection#HashSet#add on */ +} +{ +{ /* Inline poset#POSetElement#tos (var_ffe) on */ +var37 = var_ffe->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ +if (unlikely(var37 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 194); +show_backtrace(1); +} +var35 = var37; +RET_LABEL36:(void)0; +} +} +{ +hash_collection__HashSet__add(var35, var_tt); /* Direct call hash_collection#HashSet#add on */ +} CONTINUE_label: (void)0; -((void (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__next]))(var16) /* next on */; +{ +((void (*)(val*))(var25->class->vft[COLOR_abstract_collection__Iterator__next]))(var25) /* next on */; +} } BREAK_label: (void)0; -CONTINUE_label23: (void)0; -((void (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__next]))(var10) /* next on */; +CONTINUE_label38: (void)0; +{ +((void (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__next]))(var15) /* next on */; } -BREAK_label23: (void)0; -var24 = ((val* (*)(val*))(var_te->class->vft[COLOR_poset__POSetElement__tos]))(var_te) /* tos on */; -var25 = ((short int (*)(val*, val*))(var24->class->vft[COLOR_abstract_collection__Collection__has]))(var24, var_f) /* has on */; -if (var25){ +} +BREAK_label38: (void)0; +{ +{ /* Inline poset#POSetElement#tos (var_te) on */ +var41 = var_te->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ +if (unlikely(var41 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 194); +show_backtrace(1); +} +var39 = var41; +RET_LABEL40:(void)0; +} +} +{ +var42 = hash_collection__HashSet__has(var39, var_f); +} +if (var42){ goto RET_LABEL; } else { } -var26 = ((val* (*)(val*))(var_te->class->vft[COLOR_poset__POSetElement__dfroms]))(var_te) /* dfroms on */; -var27 = ((val* (*)(val*))(var26->class->vft[COLOR_array__Collection__to_a]))(var26) /* to_a on */; -var28 = ((val* (*)(val*))(var27->class->vft[COLOR_abstract_collection__Collection__iterator]))(var27) /* iterator on */; -for(;;) { -var29 = ((short int (*)(val*))(var28->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var28) /* is_ok on */; -if(!var29) break; -var30 = ((val* (*)(val*))(var28->class->vft[COLOR_abstract_collection__Iterator__item]))(var28) /* item on */; -var_x = var30; -var31 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on */; -var32 = ((val* (*)(val*, val*))(var31->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var31, var_x) /* [] on */; -var_xe = var32; -var33 = ((val* (*)(val*))(var_xe->class->vft[COLOR_poset__POSetElement__tos]))(var_xe) /* tos on */; -var34 = ((short int (*)(val*, val*))(var33->class->vft[COLOR_abstract_collection__Collection__has]))(var33, var_f) /* has on */; -if (var34){ -var35 = ((val* (*)(val*))(var_te->class->vft[COLOR_poset__POSetElement__dfroms]))(var_te) /* dfroms on */; -((void (*)(val*, val*))(var35->class->vft[COLOR_abstract_collection__RemovableCollection__remove]))(var35, var_x) /* remove on */; -var36 = ((val* (*)(val*))(var_xe->class->vft[COLOR_poset__POSetElement__dtos]))(var_xe) /* dtos on */; -((void (*)(val*, val*))(var36->class->vft[COLOR_abstract_collection__RemovableCollection__remove]))(var36, var_t) /* remove on */; -} else { +{ +{ /* Inline poset#POSetElement#dfroms (var_te) on */ +var45 = var_te->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on */ +if (unlikely(var45 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dfroms"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 197); +show_backtrace(1); +} +var43 = var45; +RET_LABEL44:(void)0; } -CONTINUE_label37: (void)0; -((void (*)(val*))(var28->class->vft[COLOR_abstract_collection__Iterator__next]))(var28) /* next on */; } -BREAK_label37: (void)0; -var38 = ((val* (*)(val*))(var_fe->class->vft[COLOR_poset__POSetElement__dtos]))(var_fe) /* dtos on */; -var39 = ((val* (*)(val*))(var38->class->vft[COLOR_array__Collection__to_a]))(var38) /* to_a on */; -var40 = ((val* (*)(val*))(var39->class->vft[COLOR_abstract_collection__Collection__iterator]))(var39) /* iterator on */; +{ +var46 = array__Collection__to_a(var43); +} +{ +var47 = array__AbstractArrayRead__iterator(var46); +} for(;;) { -var41 = ((short int (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var40) /* is_ok on */; -if(!var41) break; -var42 = ((val* (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__item]))(var40) /* item on */; -var_x43 = var42; -var44 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on */; -var45 = ((val* (*)(val*, val*))(var44->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var44, var_x43) /* [] on */; -var_xe46 = var45; -var47 = ((val* (*)(val*))(var_xe46->class->vft[COLOR_poset__POSetElement__froms]))(var_xe46) /* froms on */; -var48 = ((short int (*)(val*, val*))(var47->class->vft[COLOR_abstract_collection__Collection__has]))(var47, var_t) /* has on */; -if (var48){ -var49 = ((val* (*)(val*))(var_xe46->class->vft[COLOR_poset__POSetElement__dfroms]))(var_xe46) /* dfroms on */; -((void (*)(val*, val*))(var49->class->vft[COLOR_abstract_collection__RemovableCollection__remove]))(var49, var_f) /* remove on */; -var50 = ((val* (*)(val*))(var_fe->class->vft[COLOR_poset__POSetElement__dtos]))(var_fe) /* dtos on */; -((void (*)(val*, val*))(var50->class->vft[COLOR_abstract_collection__RemovableCollection__remove]))(var50, var_x43) /* remove on */; -} else { +{ +var48 = array__ArrayIterator__is_ok(var47); } -CONTINUE_label51: (void)0; -((void (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__next]))(var40) /* next on */; +if(!var48) break; +{ +var49 = array__ArrayIterator__item(var47); } -BREAK_label51: (void)0; -var52 = ((val* (*)(val*))(var_fe->class->vft[COLOR_poset__POSetElement__dtos]))(var_fe) /* dtos on */; -((void (*)(val*, val*))(var52->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var52, var_t) /* add on */; -var53 = ((val* (*)(val*))(var_te->class->vft[COLOR_poset__POSetElement__dfroms]))(var_te) /* dfroms on */; -((void (*)(val*, val*))(var53->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var53, var_f) /* add on */; -RET_LABEL:; +var_x = var49; +{ +{ /* Inline poset#POSet#elements (self) on */ +var52 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +if (unlikely(var52 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 31); +show_backtrace(1); } -/* method poset#POSet#add_edge for (self: Object, Object, Object) */ -void VIRTUAL_poset__POSet__add_edge(val* self, val* p0, val* p1) { -poset__POSet__add_edge(self, p0, p1); -RET_LABEL:; +var50 = var52; +RET_LABEL51:(void)0; } -/* method poset#POSet#has_edge for (self: POSet[Object], Object, Object): Bool */ -short int poset__POSet__has_edge(val* self, val* p0, val* p1) { -short int var /* : Bool */; -short int var1 /* : Bool */; -int cltype; -int idtype; -const struct type* type_struct; -short int var2 /* : Bool */; -int cltype3; -int idtype4; -const struct type* type_struct5; -val* var_f /* var f: Object */; -val* var_t /* var t: Object */; -val* var6 /* : HashMap[Object, POSetElement[Object]] */; -val* var7 /* : Collection[Object] */; -short int var8 /* : Bool */; -short int var9 /* : Bool */; -short int var10 /* : Bool */; -val* var11 /* : HashMap[Object, POSetElement[Object]] */; -val* var12 /* : nullable Object */; -val* var_fe /* var fe: POSetElement[Object] */; -val* var13 /* : HashSet[Object] */; -short int var14 /* : Bool */; -/* Covariant cast for argument 0 (f) isa POSet#0 */ -/* isa POSet#0 */ -type_struct = self->type->resolution_table->types[COLOR_poset__POSet_FT0]; -cltype = type_struct->color; -idtype = type_struct->id; -if(cltype >= p0->type->table_size) { -var1 = 0; -} else { -var1 = p0->type->type_table[cltype] == idtype; } -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 109); -exit(1); +{ +var53 = hash_collection__HashMap___91d_93d(var50, var_x); } -/* Covariant cast for argument 1 (t) isa POSet#0 */ -/* isa POSet#0 */ -type_struct5 = self->type->resolution_table->types[COLOR_poset__POSet_FT0]; -cltype3 = type_struct5->color; -idtype4 = type_struct5->id; -if(cltype3 >= p1->type->table_size) { -var2 = 0; -} else { -var2 = p1->type->type_table[cltype3] == idtype4; +var_xe = var53; +{ +{ /* Inline poset#POSetElement#tos (var_xe) on */ +var56 = var_xe->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ +if (unlikely(var56 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 194); +show_backtrace(1); } -if (!var2) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 109); -exit(1); +var54 = var56; +RET_LABEL55:(void)0; } -var_f = p0; -var_t = p1; -var6 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on */; -var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__MapRead__keys]))(var6) /* keys on */; -var8 = ((short int (*)(val*, val*))(var7->class->vft[COLOR_abstract_collection__Collection__has]))(var7, var_f) /* has on */; -var9 = !var8; -if (var9){ -var10 = 0; -var = var10; -goto RET_LABEL; -} else { } -var11 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on */; -var12 = ((val* (*)(val*, val*))(var11->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var11, var_f) /* [] on */; -var_fe = var12; -var13 = ((val* (*)(val*))(var_fe->class->vft[COLOR_poset__POSetElement__tos]))(var_fe) /* tos on */; -var14 = ((short int (*)(val*, val*))(var13->class->vft[COLOR_abstract_collection__Collection__has]))(var13, var_t) /* has on */; -var = var14; -goto RET_LABEL; -RET_LABEL:; -return var; +{ +var57 = hash_collection__HashSet__has(var54, var_f); } -/* method poset#POSet#has_edge for (self: Object, Object, Object): Bool */ -short int VIRTUAL_poset__POSet__has_edge(val* self, val* p0, val* p1) { -short int var /* : Bool */; -short int var1 /* : Bool */; -var1 = poset__POSet__has_edge(self, p0, p1); -var = var1; -RET_LABEL:; -return var; +if (var57){ +{ +{ /* Inline poset#POSetElement#dfroms (var_te) on */ +var60 = var_te->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on */ +if (unlikely(var60 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dfroms"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 197); +show_backtrace(1); } -/* method poset#POSet#has_direct_edge for (self: POSet[Object], Object, Object): Bool */ -short int poset__POSet__has_direct_edge(val* self, val* p0, val* p1) { -short int var /* : Bool */; -short int var1 /* : Bool */; -int cltype; -int idtype; -const struct type* type_struct; -short int var2 /* : Bool */; -int cltype3; -int idtype4; -const struct type* type_struct5; -val* var_f /* var f: Object */; -val* var_t /* var t: Object */; -val* var6 /* : HashMap[Object, POSetElement[Object]] */; -val* var7 /* : Collection[Object] */; -short int var8 /* : Bool */; -short int var9 /* : Bool */; -short int var10 /* : Bool */; -val* var11 /* : HashMap[Object, POSetElement[Object]] */; -val* var12 /* : nullable Object */; -val* var_fe /* var fe: POSetElement[Object] */; -val* var13 /* : HashSet[Object] */; -short int var14 /* : Bool */; -/* Covariant cast for argument 0 (f) isa POSet#0 */ -/* isa POSet#0 */ -type_struct = self->type->resolution_table->types[COLOR_poset__POSet_FT0]; -cltype = type_struct->color; -idtype = type_struct->id; -if(cltype >= p0->type->table_size) { -var1 = 0; -} else { -var1 = p0->type->type_table[cltype] == idtype; +var58 = var60; +RET_LABEL59:(void)0; } -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 118); -exit(1); } -/* Covariant cast for argument 1 (t) isa POSet#0 */ -/* isa POSet#0 */ -type_struct5 = self->type->resolution_table->types[COLOR_poset__POSet_FT0]; -cltype3 = type_struct5->color; -idtype4 = type_struct5->id; -if(cltype3 >= p1->type->table_size) { -var2 = 0; -} else { -var2 = p1->type->type_table[cltype3] == idtype4; +{ +hash_collection__HashSet__remove(var58, var_x); /* Direct call hash_collection#HashSet#remove on */ } -if (!var2) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 118); -exit(1); +{ +{ /* Inline poset#POSetElement#dtos (var_xe) on */ +var63 = var_xe->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on */ +if (unlikely(var63 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dtos"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 196); +show_backtrace(1); } -var_f = p0; -var_t = p1; -var6 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on */; -var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__MapRead__keys]))(var6) /* keys on */; -var8 = ((short int (*)(val*, val*))(var7->class->vft[COLOR_abstract_collection__Collection__has]))(var7, var_f) /* has on */; -var9 = !var8; -if (var9){ -var10 = 0; -var = var10; -goto RET_LABEL; -} else { +var61 = var63; +RET_LABEL62:(void)0; } -var11 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on */; -var12 = ((val* (*)(val*, val*))(var11->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var11, var_f) /* [] on */; -var_fe = var12; -var13 = ((val* (*)(val*))(var_fe->class->vft[COLOR_poset__POSetElement__dtos]))(var_fe) /* dtos on */; -var14 = ((short int (*)(val*, val*))(var13->class->vft[COLOR_abstract_collection__Collection__has]))(var13, var_t) /* has on */; -var = var14; -goto RET_LABEL; -RET_LABEL:; -return var; } -/* method poset#POSet#has_direct_edge for (self: Object, Object, Object): Bool */ -short int VIRTUAL_poset__POSet__has_direct_edge(val* self, val* p0, val* p1) { -short int var /* : Bool */; -short int var1 /* : Bool */; -var1 = poset__POSet__has_direct_edge(self, p0, p1); -var = var1; -RET_LABEL:; -return var; +{ +hash_collection__HashSet__remove(var61, var_t); /* Direct call hash_collection#HashSet#remove on */ } -/* method poset#POSet#show_dot for (self: POSet[Object]) */ -void poset__POSet__show_dot(val* self) { -val* var /* : OProcess */; -static val* varonce; -val* var1 /* : String */; -char* var2 /* : NativeString */; -long var3 /* : Int */; -val* var4 /* : String */; -static val* varonce5; -val* var6 /* : String */; -char* var7 /* : NativeString */; -long var8 /* : Int */; -val* var9 /* : String */; -val* var10 /* : Array[String] */; -long var11 /* : Int */; -val* var12 /* : NativeArray[String] */; -val* var_f /* var f: OProcess */; -static val* varonce13; -val* var14 /* : String */; -char* var15 /* : NativeString */; -long var16 /* : Int */; -val* var17 /* : String */; -val* var18 /* : HashMap[Object, POSetElement[Object]] */; -val* var19 /* : Collection[Object] */; -val* var20 /* : Iterator[nullable Object] */; -short int var21 /* : Bool */; -val* var22 /* : nullable Object */; -val* var_x /* var x: Object */; -static val* varonce23; -val* var24 /* : String */; -char* var25 /* : NativeString */; -long var26 /* : Int */; -val* var27 /* : String */; -static val* varonce28; -val* var29 /* : String */; -char* var30 /* : NativeString */; -long var31 /* : Int */; -val* var32 /* : String */; -val* var33 /* : Array[Object] */; -long var34 /* : Int */; -val* var35 /* : NativeArray[Object] */; -val* var36 /* : String */; -val* var37 /* : HashMap[Object, POSetElement[Object]] */; -val* var38 /* : nullable Object */; -val* var_xe /* var xe: POSetElement[Object] */; -val* var39 /* : HashSet[Object] */; -val* var40 /* : Iterator[nullable Object] */; -short int var41 /* : Bool */; -val* var42 /* : nullable Object */; -val* var_y /* var y: Object */; -short int var43 /* : Bool */; -static val* varonce44; -val* var45 /* : String */; -char* var46 /* : NativeString */; -long var47 /* : Int */; -val* var48 /* : String */; -static val* varonce49; -val* var50 /* : String */; -char* var51 /* : NativeString */; -long var52 /* : Int */; -val* var53 /* : String */; -static val* varonce54; -val* var55 /* : String */; -char* var56 /* : NativeString */; -long var57 /* : Int */; -val* var58 /* : String */; -val* var59 /* : Array[Object] */; -long var60 /* : Int */; -val* var61 /* : NativeArray[Object] */; -val* var62 /* : String */; -static val* varonce63; -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 */; -static val* varonce73; -val* var74 /* : String */; -char* var75 /* : NativeString */; -long var76 /* : Int */; -val* var77 /* : String */; -val* var78 /* : Array[Object] */; -long var79 /* : Int */; -val* var80 /* : NativeArray[Object] */; -val* var81 /* : String */; -static val* varonce83; -val* var84 /* : String */; -char* var85 /* : NativeString */; -long var86 /* : Int */; -val* var87 /* : String */; -var = NEW_exec__OProcess(&type_exec__OProcess); -if (varonce) { -var1 = varonce; -} else { -var2 = "dot"; -var3 = 3; -var4 = string__NativeString__to_s_with_length(var2, var3); -var1 = var4; -varonce = var1; -} -if (varonce5) { -var6 = varonce5; } else { -var7 = "-Txlib"; -var8 = 6; -var9 = string__NativeString__to_s_with_length(var7, var8); -var6 = var9; -varonce5 = var6; -} -var10 = NEW_array__Array(&type_array__Arraystring__String); -{ /* var10 = array_instance Array[String] */ -var11 = 1; -var12 = NEW_array__NativeArray(var11, &type_array__NativeArraystring__String); -((struct instance_array__NativeArray*)var12)->values[0] = (val*) var6; -((void (*)(val*, val*, long))(var10->class->vft[COLOR_array__Array__with_native]))(var10, var12, var11) /* with_native on */; -CHECK_NEW_array__Array(var10); -} -((void (*)(val*, val*, val*))(var->class->vft[COLOR_exec__OProcess__init]))(var, var1, var10) /* init on */; -CHECK_NEW_exec__OProcess(var); -var_f = var; -if (varonce13) { -var14 = varonce13; -} else { -var15 = "digraph {\n"; -var16 = 10; -var17 = string__NativeString__to_s_with_length(var15, var16); -var14 = var17; -varonce13 = var14; -} -((void (*)(val*, val*))(var_f->class->vft[COLOR_stream__OStream__write]))(var_f, var14) /* write on */; -var18 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on */; -var19 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_collection__MapRead__keys]))(var18) /* keys on */; -var20 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_collection__Collection__iterator]))(var19) /* iterator on */; -for(;;) { -var21 = ((short int (*)(val*))(var20->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var20) /* is_ok on */; -if(!var21) break; -var22 = ((val* (*)(val*))(var20->class->vft[COLOR_abstract_collection__Iterator__item]))(var20) /* item on */; -var_x = var22; -if (varonce23) { -var24 = varonce23; -} else { -var25 = "\""; -var26 = 1; -var27 = string__NativeString__to_s_with_length(var25, var26); -var24 = var27; -varonce23 = var24; -} -if (varonce28) { -var29 = varonce28; -} else { -var30 = "\";\n"; -var31 = 3; -var32 = string__NativeString__to_s_with_length(var30, var31); -var29 = var32; -varonce28 = var29; -} -var33 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var33 = array_instance Array[Object] */ -var34 = 3; -var35 = NEW_array__NativeArray(var34, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var35)->values[0] = (val*) var24; -((struct instance_array__NativeArray*)var35)->values[1] = (val*) var_x; -((struct instance_array__NativeArray*)var35)->values[2] = (val*) var29; -((void (*)(val*, val*, long))(var33->class->vft[COLOR_array__Array__with_native]))(var33, var35, var34) /* with_native on */; -CHECK_NEW_array__Array(var33); -} -var36 = ((val* (*)(val*))(var33->class->vft[COLOR_string__Object__to_s]))(var33) /* to_s on */; -((void (*)(val*, val*))(var_f->class->vft[COLOR_stream__OStream__write]))(var_f, var36) /* write on */; -var37 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on */; -var38 = ((val* (*)(val*, val*))(var37->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var37, var_x) /* [] on */; -var_xe = var38; -var39 = ((val* (*)(val*))(var_xe->class->vft[COLOR_poset__POSetElement__dtos]))(var_xe) /* dtos on */; -var40 = ((val* (*)(val*))(var39->class->vft[COLOR_abstract_collection__Collection__iterator]))(var39) /* iterator on */; +} +CONTINUE_label64: (void)0; +{ +array__ArrayIterator__next(var47); /* Direct call array#ArrayIterator#next on */ +} +} +BREAK_label64: (void)0; +{ +{ /* Inline poset#POSetElement#dtos (var_fe) on */ +var67 = var_fe->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on */ +if (unlikely(var67 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dtos"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 196); +show_backtrace(1); +} +var65 = var67; +RET_LABEL66:(void)0; +} +} +{ +var68 = array__Collection__to_a(var65); +} +{ +var69 = array__AbstractArrayRead__iterator(var68); +} for(;;) { -var41 = ((short int (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var40) /* is_ok on */; -if(!var41) break; -var42 = ((val* (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__item]))(var40) /* item on */; -var_y = var42; -var43 = ((short int (*)(val*, val*, val*))(self->class->vft[COLOR_poset__POSet__has_edge]))(self, var_y, var_x) /* has_edge on */; -if (var43){ -if (varonce44) { -var45 = varonce44; -} else { -var46 = "\""; -var47 = 1; -var48 = string__NativeString__to_s_with_length(var46, var47); -var45 = var48; -varonce44 = var45; -} -if (varonce49) { -var50 = varonce49; -} else { -var51 = "\" -> \""; -var52 = 6; -var53 = string__NativeString__to_s_with_length(var51, var52); -var50 = var53; -varonce49 = var50; -} -if (varonce54) { -var55 = varonce54; -} else { -var56 = "\"[dir=both];\n"; -var57 = 13; -var58 = string__NativeString__to_s_with_length(var56, var57); -var55 = var58; -varonce54 = var55; -} -var59 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var59 = array_instance Array[Object] */ -var60 = 5; -var61 = NEW_array__NativeArray(var60, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var61)->values[0] = (val*) var45; -((struct instance_array__NativeArray*)var61)->values[1] = (val*) var_x; -((struct instance_array__NativeArray*)var61)->values[2] = (val*) var50; -((struct instance_array__NativeArray*)var61)->values[3] = (val*) var_y; -((struct instance_array__NativeArray*)var61)->values[4] = (val*) var55; -((void (*)(val*, val*, long))(var59->class->vft[COLOR_array__Array__with_native]))(var59, var61, var60) /* with_native on */; -CHECK_NEW_array__Array(var59); -} -var62 = ((val* (*)(val*))(var59->class->vft[COLOR_string__Object__to_s]))(var59) /* to_s on */; -((void (*)(val*, val*))(var_f->class->vft[COLOR_stream__OStream__write]))(var_f, var62) /* write on */; -} else { -if (varonce63) { -var64 = varonce63; -} else { -var65 = "\""; -var66 = 1; -var67 = string__NativeString__to_s_with_length(var65, var66); -var64 = var67; -varonce63 = var64; -} -if (varonce68) { -var69 = varonce68; -} else { -var70 = "\" -> \""; -var71 = 6; -var72 = string__NativeString__to_s_with_length(var70, var71); -var69 = var72; -varonce68 = var69; -} -if (varonce73) { -var74 = varonce73; +{ +var70 = array__ArrayIterator__is_ok(var69); +} +if(!var70) break; +{ +var71 = array__ArrayIterator__item(var69); +} +var_x72 = var71; +{ +{ /* Inline poset#POSet#elements (self) on */ +var75 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +if (unlikely(var75 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 31); +show_backtrace(1); +} +var73 = var75; +RET_LABEL74:(void)0; +} +} +{ +var76 = hash_collection__HashMap___91d_93d(var73, var_x72); +} +var_xe77 = var76; +{ +{ /* Inline poset#POSetElement#froms (var_xe77) on */ +var80 = var_xe77->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on */ +if (unlikely(var80 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _froms"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 195); +show_backtrace(1); +} +var78 = var80; +RET_LABEL79:(void)0; +} +} +{ +var81 = hash_collection__HashSet__has(var78, var_t); +} +if (var81){ +{ +{ /* Inline poset#POSetElement#dfroms (var_xe77) on */ +var84 = var_xe77->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on */ +if (unlikely(var84 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dfroms"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 197); +show_backtrace(1); +} +var82 = var84; +RET_LABEL83:(void)0; +} +} +{ +hash_collection__HashSet__remove(var82, var_f); /* Direct call hash_collection#HashSet#remove on */ +} +{ +{ /* Inline poset#POSetElement#dtos (var_fe) on */ +var87 = var_fe->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on */ +if (unlikely(var87 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dtos"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 196); +show_backtrace(1); +} +var85 = var87; +RET_LABEL86:(void)0; +} +} +{ +hash_collection__HashSet__remove(var85, var_x72); /* Direct call hash_collection#HashSet#remove on */ +} } else { -var75 = "\";\n"; -var76 = 3; -var77 = string__NativeString__to_s_with_length(var75, var76); -var74 = var77; -varonce73 = var74; -} -var78 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var78 = array_instance Array[Object] */ -var79 = 5; -var80 = NEW_array__NativeArray(var79, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var80)->values[0] = (val*) var64; -((struct instance_array__NativeArray*)var80)->values[1] = (val*) var_x; -((struct instance_array__NativeArray*)var80)->values[2] = (val*) var69; -((struct instance_array__NativeArray*)var80)->values[3] = (val*) var_y; -((struct instance_array__NativeArray*)var80)->values[4] = (val*) var74; -((void (*)(val*, val*, long))(var78->class->vft[COLOR_array__Array__with_native]))(var78, var80, var79) /* with_native on */; -CHECK_NEW_array__Array(var78); -} -var81 = ((val* (*)(val*))(var78->class->vft[COLOR_string__Object__to_s]))(var78) /* to_s on */; -((void (*)(val*, val*))(var_f->class->vft[COLOR_stream__OStream__write]))(var_f, var81) /* write on */; } -CONTINUE_label: (void)0; -((void (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__next]))(var40) /* next on */; +CONTINUE_label88: (void)0; +{ +array__ArrayIterator__next(var69); /* Direct call array#ArrayIterator#next on */ +} +} +BREAK_label88: (void)0; +{ +{ /* Inline poset#POSetElement#dtos (var_fe) on */ +var91 = var_fe->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on */ +if (unlikely(var91 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dtos"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 196); +show_backtrace(1); +} +var89 = var91; +RET_LABEL90:(void)0; +} +} +{ +hash_collection__HashSet__add(var89, var_t); /* Direct call hash_collection#HashSet#add on */ +} +{ +{ /* Inline poset#POSetElement#dfroms (var_te) on */ +var94 = var_te->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on */ +if (unlikely(var94 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dfroms"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 197); +show_backtrace(1); +} +var92 = var94; +RET_LABEL93:(void)0; } -BREAK_label: (void)0; -CONTINUE_label82: (void)0; -((void (*)(val*))(var20->class->vft[COLOR_abstract_collection__Iterator__next]))(var20) /* next on */; } -BREAK_label82: (void)0; -if (varonce83) { -var84 = varonce83; -} else { -var85 = "}\n"; -var86 = 2; -var87 = string__NativeString__to_s_with_length(var85, var86); -var84 = var87; -varonce83 = var84; +{ +hash_collection__HashSet__add(var92, var_f); /* Direct call hash_collection#HashSet#add on */ } -((void (*)(val*, val*))(var_f->class->vft[COLOR_stream__OStream__write]))(var_f, var84) /* write on */; RET_LABEL:; } -/* method poset#POSet#show_dot for (self: Object) */ -void VIRTUAL_poset__POSet__show_dot(val* self) { -poset__POSet__show_dot(self); +/* method poset#POSet#add_edge for (self: Object, Object, Object) */ +void VIRTUAL_poset__POSet__add_edge(val* self, val* p0, val* p1) { +poset__POSet__add_edge(self, p0, p1); /* Direct call poset#POSet#add_edge on */ RET_LABEL:; } /* method poset#POSet#compare for (self: POSet[Object], Object, Object): Int */ @@ -904,35 +994,46 @@ short int var1 /* : Bool */; int cltype; int idtype; const struct type* type_struct; +const char* var_class_name; short int var2 /* : Bool */; int cltype3; int idtype4; const struct type* type_struct5; +const char* var_class_name6; val* var_a /* var a: Object */; val* var_b /* var b: Object */; -val* var6 /* : HashMap[Object, POSetElement[Object]] */; -val* var7 /* : nullable Object */; +val* var7 /* : HashMap[Object, POSetElement[Object]] */; +val* var9 /* : HashMap[Object, POSetElement[Object]] */; +val* var10 /* : nullable Object */; val* var_ae /* var ae: POSetElement[Object] */; -val* var8 /* : HashMap[Object, POSetElement[Object]] */; -val* var9 /* : nullable Object */; +val* var11 /* : HashMap[Object, POSetElement[Object]] */; +val* var13 /* : HashMap[Object, POSetElement[Object]] */; +val* var14 /* : nullable Object */; val* var_be /* var be: POSetElement[Object] */; -val* var10 /* : HashSet[Object] */; -long var11 /* : Int */; -val* var12 /* : HashSet[Object] */; -long var13 /* : Int */; -long var14 /* : Int */; -long var_res /* var res: Int */; -long var15 /* : Int */; -short int var16 /* : Bool */; -short int var18 /* : Bool */; -short int var19 /* : Bool */; -val* var20 /* : HashMap[Object, POSetElement[Object]] */; -val* var21 /* : nullable Object */; +val* var15 /* : HashSet[Object] */; +val* var17 /* : HashSet[Object] */; +long var18 /* : Int */; +val* var19 /* : HashSet[Object] */; +val* var21 /* : HashSet[Object] */; long var22 /* : Int */; -val* var23 /* : HashMap[Object, POSetElement[Object]] */; -val* var24 /* : nullable Object */; -long var25 /* : Int */; -long var26 /* : Int */; +long var23 /* : Int */; +long var_res /* var res: Int */; +long var24 /* : Int */; +short int var25 /* : Bool */; +short int var26 /* : Bool */; +short int var28 /* : Bool */; +short int var29 /* : Bool */; +val* var30 /* : HashMap[Object, POSetElement[Object]] */; +val* var32 /* : HashMap[Object, POSetElement[Object]] */; +val* var33 /* : nullable Object */; +long var34 /* : Int */; +long var36 /* : Int */; +val* var37 /* : HashMap[Object, POSetElement[Object]] */; +val* var39 /* : HashMap[Object, POSetElement[Object]] */; +val* var40 /* : nullable Object */; +long var41 /* : Int */; +long var43 /* : Int */; +long var44 /* : Int */; /* Covariant cast for argument 0 (a) isa POSet#0 */ /* isa POSet#0 */ type_struct = self->type->resolution_table->types[COLOR_poset__POSet_FT0]; @@ -943,9 +1044,11 @@ var1 = 0; } else { var1 = p0->type->type_table[cltype] == idtype; } -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 151); -exit(1); +if (unlikely(!var1)) { +var_class_name = p0 == NULL ? "null" : p0->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet#0", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 151); +show_backtrace(1); } /* Covariant cast for argument 1 (b) isa POSet#0 */ /* isa POSet#0 */ @@ -957,45 +1060,144 @@ var2 = 0; } else { var2 = p1->type->type_table[cltype3] == idtype4; } -if (!var2) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 151); -exit(1); +if (unlikely(!var2)) { +var_class_name6 = p1 == NULL ? "null" : p1->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet#0", var_class_name6); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 151); +show_backtrace(1); } var_a = p0; var_b = p1; -var6 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on */; -var7 = ((val* (*)(val*, val*))(var6->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var6, var_a) /* [] on */; -var_ae = var7; -var8 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on */; -var9 = ((val* (*)(val*, val*))(var8->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var8, var_b) /* [] on */; -var_be = var9; -var10 = ((val* (*)(val*))(var_ae->class->vft[COLOR_poset__POSetElement__tos]))(var_ae) /* tos on */; -var11 = ((long (*)(val*))(var10->class->vft[COLOR_abstract_collection__Collection__length]))(var10) /* length on */; -var12 = ((val* (*)(val*))(var_be->class->vft[COLOR_poset__POSetElement__tos]))(var_be) /* tos on */; -var13 = ((long (*)(val*))(var12->class->vft[COLOR_abstract_collection__Collection__length]))(var12) /* length on */; -var14 = kernel__Int___60d_61d_62d(var11, var13); -var_res = var14; -var15 = 0; -{ /* Inline kernel#Int#!= (var_res,var15) */ -var18 = var_res == var15; -var19 = !var18; -var16 = var19; -goto RET_LABEL17; -RET_LABEL17:(void)0; -} -if (var16){ +{ +{ /* Inline poset#POSet#elements (self) on */ +var9 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +if (unlikely(var9 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 31); +show_backtrace(1); +} +var7 = var9; +RET_LABEL8:(void)0; +} +} +{ +var10 = hash_collection__HashMap___91d_93d(var7, var_a); +} +var_ae = var10; +{ +{ /* Inline poset#POSet#elements (self) on */ +var13 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +if (unlikely(var13 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 31); +show_backtrace(1); +} +var11 = var13; +RET_LABEL12:(void)0; +} +} +{ +var14 = hash_collection__HashMap___91d_93d(var11, var_b); +} +var_be = var14; +{ +{ /* Inline poset#POSetElement#tos (var_ae) on */ +var17 = var_ae->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ +if (unlikely(var17 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 194); +show_backtrace(1); +} +var15 = var17; +RET_LABEL16:(void)0; +} +} +{ +var18 = hash_collection__HashSet__length(var15); +} +{ +{ /* Inline poset#POSetElement#tos (var_be) on */ +var21 = var_be->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ +if (unlikely(var21 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 194); +show_backtrace(1); +} +var19 = var21; +RET_LABEL20:(void)0; +} +} +{ +var22 = hash_collection__HashSet__length(var19); +} +{ +var23 = kernel__Int___60d_61d_62d(var18, var22); +} +var_res = var23; +var24 = 0; +{ +{ /* Inline kernel#Int#!= (var_res,var24) on */ +var28 = var_res == var24; +var29 = !var28; +var26 = var29; +goto RET_LABEL27; +RET_LABEL27:(void)0; +} +var25 = var26; +} +if (var25){ var = var_res; goto RET_LABEL; } else { } -var20 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on */; -var21 = ((val* (*)(val*, val*))(var20->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var20, var_a) /* [] on */; -var22 = ((long (*)(val*))(var21->class->vft[COLOR_poset__POSetElement__count]))(var21) /* count on */; -var23 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSet__elements]))(self) /* elements on */; -var24 = ((val* (*)(val*, val*))(var23->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var23, var_b) /* [] on */; -var25 = ((long (*)(val*))(var24->class->vft[COLOR_poset__POSetElement__count]))(var24) /* count on */; -var26 = kernel__Int___60d_61d_62d(var22, var25); -var = var26; +{ +{ /* Inline poset#POSet#elements (self) on */ +var32 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +if (unlikely(var32 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 31); +show_backtrace(1); +} +var30 = var32; +RET_LABEL31:(void)0; +} +} +{ +var33 = hash_collection__HashMap___91d_93d(var30, var_a); +} +{ +{ /* Inline poset#POSetElement#count (var33) on */ +var36 = var33->attrs[COLOR_poset__POSetElement___count].l; /* _count on */ +var34 = var36; +RET_LABEL35:(void)0; +} +} +{ +{ /* Inline poset#POSet#elements (self) on */ +var39 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +if (unlikely(var39 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 31); +show_backtrace(1); +} +var37 = var39; +RET_LABEL38:(void)0; +} +} +{ +var40 = hash_collection__HashMap___91d_93d(var37, var_b); +} +{ +{ /* Inline poset#POSetElement#count (var40) on */ +var43 = var40->attrs[COLOR_poset__POSetElement___count].l; /* _count on */ +var41 = var43; +RET_LABEL42:(void)0; +} +} +{ +var44 = kernel__Int___60d_61d_62d(var34, var41); +} +var = var44; goto RET_LABEL; RET_LABEL:; return var; @@ -1009,23 +1211,75 @@ var = var1; RET_LABEL:; return var; } +/* method poset#POSet#linearize for (self: POSet[Object], Collection[Object]): Array[Object] */ +val* poset__POSet__linearize(val* self, val* p0) { +val* var /* : Array[Object] */; +short int var1 /* : Bool */; +int cltype; +int idtype; +const struct type* type_struct; +const char* var_class_name; +val* var_elements /* var elements: Collection[Object] */; +val* var2 /* : Array[nullable Object] */; +val* var_lin /* var lin: Array[Object] */; +/* Covariant cast for argument 0 (elements) isa Collection[POSet#0] */ +/* isa Collection[POSet#0] */ +type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collectionposet__POSet_FT0]; +cltype = type_struct->color; +idtype = type_struct->id; +if(cltype >= p0->type->table_size) { +var1 = 0; +} else { +var1 = p0->type->type_table[cltype] == idtype; +} +if (unlikely(!var1)) { +var_class_name = p0 == NULL ? "null" : p0->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[POSet#0]", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 167); +show_backtrace(1); +} +var_elements = p0; +{ +var2 = array__Collection__to_a(var_elements); +} +var_lin = var2; +{ +sorter__Comparator__sort(self, var_lin); /* Direct call sorter#Comparator#sort on */ +} +var = var_lin; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method poset#POSet#linearize for (self: Object, Collection[Object]): Array[Object] */ +val* VIRTUAL_poset__POSet__linearize(val* self, val* p0) { +val* var /* : Array[Object] */; +val* var1 /* : Array[Object] */; +var1 = poset__POSet__linearize(self, p0); +var = var1; +RET_LABEL:; +return var; +} /* method poset#POSet#init for (self: POSet[Object]) */ void poset__POSet__init(val* self) { RET_LABEL:; } /* method poset#POSet#init for (self: Object) */ void VIRTUAL_poset__POSet__init(val* self) { -poset__POSet__init(self); +{ /* Inline poset#POSet#init (self) on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method poset#POSetElement#poset for (self: POSetElement[Object]): POSet[Object] */ val* poset__POSetElement__poset(val* self) { val* var /* : POSet[Object] */; val* var1 /* : POSet[Object] */; -var1 = self->attrs[COLOR_poset__POSetElement___64dposet].val; /* @poset on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @poset", "lib/poset.nit", 181); -exit(1); +var1 = self->attrs[COLOR_poset__POSetElement___poset].val; /* _poset on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 188); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -1035,47 +1289,30 @@ return var; val* VIRTUAL_poset__POSetElement__poset(val* self) { val* var /* : POSet[Object] */; val* var1 /* : POSet[Object] */; -var1 = poset__POSetElement__poset(self); -var = var1; -RET_LABEL:; -return var; -} -/* method poset#POSetElement#poset= for (self: POSetElement[Object], POSet[Object]) */ -void poset__POSetElement__poset_61d(val* self, val* p0) { -short int var /* : Bool */; -int cltype; -int idtype; -const struct type* type_struct; -/* Covariant cast for argument 0 (poset) isa POSet[POSetElement#0] */ -/* isa POSet[POSetElement#0] */ -type_struct = self->type->resolution_table->types[COLOR_poset__POSetposet__POSetElement_FT0]; -cltype = type_struct->color; -idtype = type_struct->id; -if(cltype >= p0->type->table_size) { -var = 0; -} else { -var = p0->type->type_table[cltype] == idtype; -} -if (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 181); -exit(1); +val* var3 /* : POSet[Object] */; +{ /* Inline poset#POSetElement#poset (self) on */ +var3 = self->attrs[COLOR_poset__POSetElement___poset].val; /* _poset on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 188); +show_backtrace(1); } -self->attrs[COLOR_poset__POSetElement___64dposet].val = p0; /* @poset on */ -RET_LABEL:; +var1 = var3; +RET_LABEL2:(void)0; } -/* method poset#POSetElement#poset= for (self: Object, POSet[Object]) */ -void VIRTUAL_poset__POSetElement__poset_61d(val* self, val* p0) { -poset__POSetElement__poset_61d(self, p0); +var = var1; RET_LABEL:; +return var; } /* method poset#POSetElement#element for (self: POSetElement[Object]): Object */ val* poset__POSetElement__element(val* self) { val* var /* : Object */; val* var1 /* : Object */; -var1 = self->attrs[COLOR_poset__POSetElement___64delement].val; /* @element on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @element", "lib/poset.nit", 184); -exit(1); +var1 = self->attrs[COLOR_poset__POSetElement___element].val; /* _element on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _element"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 191); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -1085,47 +1322,30 @@ return var; val* VIRTUAL_poset__POSetElement__element(val* self) { val* var /* : Object */; val* var1 /* : Object */; -var1 = poset__POSetElement__element(self); -var = var1; -RET_LABEL:; -return var; -} -/* method poset#POSetElement#element= for (self: POSetElement[Object], Object) */ -void poset__POSetElement__element_61d(val* self, val* p0) { -short int var /* : Bool */; -int cltype; -int idtype; -const struct type* type_struct; -/* Covariant cast for argument 0 (element) isa POSetElement#0 */ -/* isa POSetElement#0 */ -type_struct = self->type->resolution_table->types[COLOR_poset__POSetElement_FT0]; -cltype = type_struct->color; -idtype = type_struct->id; -if(cltype >= p0->type->table_size) { -var = 0; -} else { -var = p0->type->type_table[cltype] == idtype; -} -if (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 184); -exit(1); +val* var3 /* : Object */; +{ /* Inline poset#POSetElement#element (self) on */ +var3 = self->attrs[COLOR_poset__POSetElement___element].val; /* _element on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _element"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 191); +show_backtrace(1); } -self->attrs[COLOR_poset__POSetElement___64delement].val = p0; /* @element on */ -RET_LABEL:; +var1 = var3; +RET_LABEL2:(void)0; } -/* method poset#POSetElement#element= for (self: Object, Object) */ -void VIRTUAL_poset__POSetElement__element_61d(val* self, val* p0) { -poset__POSetElement__element_61d(self, p0); +var = var1; RET_LABEL:; +return var; } /* method poset#POSetElement#tos for (self: POSetElement[Object]): HashSet[Object] */ val* poset__POSetElement__tos(val* self) { val* var /* : HashSet[Object] */; val* var1 /* : HashSet[Object] */; -var1 = self->attrs[COLOR_poset__POSetElement___64dtos].val; /* @tos on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @tos", "lib/poset.nit", 187); -exit(1); +var1 = self->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 194); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -1135,47 +1355,30 @@ return var; val* VIRTUAL_poset__POSetElement__tos(val* self) { val* var /* : HashSet[Object] */; val* var1 /* : HashSet[Object] */; -var1 = poset__POSetElement__tos(self); -var = var1; -RET_LABEL:; -return var; -} -/* method poset#POSetElement#tos= for (self: POSetElement[Object], HashSet[Object]) */ -void poset__POSetElement__tos_61d(val* self, val* p0) { -short int var /* : Bool */; -int cltype; -int idtype; -const struct type* type_struct; -/* Covariant cast for argument 0 (tos) isa HashSet[POSetElement#0] */ -/* isa HashSet[POSetElement#0] */ -type_struct = self->type->resolution_table->types[COLOR_hash_collection__HashSetposet__POSetElement_FT0]; -cltype = type_struct->color; -idtype = type_struct->id; -if(cltype >= p0->type->table_size) { -var = 0; -} else { -var = p0->type->type_table[cltype] == idtype; +val* var3 /* : HashSet[Object] */; +{ /* Inline poset#POSetElement#tos (self) on */ +var3 = self->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 194); +show_backtrace(1); } -if (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 187); -exit(1); -} -self->attrs[COLOR_poset__POSetElement___64dtos].val = p0; /* @tos on */ -RET_LABEL:; +var1 = var3; +RET_LABEL2:(void)0; } -/* method poset#POSetElement#tos= for (self: Object, HashSet[Object]) */ -void VIRTUAL_poset__POSetElement__tos_61d(val* self, val* p0) { -poset__POSetElement__tos_61d(self, p0); +var = var1; RET_LABEL:; +return var; } /* method poset#POSetElement#froms for (self: POSetElement[Object]): HashSet[Object] */ val* poset__POSetElement__froms(val* self) { val* var /* : HashSet[Object] */; val* var1 /* : HashSet[Object] */; -var1 = self->attrs[COLOR_poset__POSetElement___64dfroms].val; /* @froms on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @froms", "lib/poset.nit", 188); -exit(1); +var1 = self->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _froms"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 195); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -1185,47 +1388,30 @@ return var; val* VIRTUAL_poset__POSetElement__froms(val* self) { val* var /* : HashSet[Object] */; val* var1 /* : HashSet[Object] */; -var1 = poset__POSetElement__froms(self); -var = var1; -RET_LABEL:; -return var; -} -/* method poset#POSetElement#froms= for (self: POSetElement[Object], HashSet[Object]) */ -void poset__POSetElement__froms_61d(val* self, val* p0) { -short int var /* : Bool */; -int cltype; -int idtype; -const struct type* type_struct; -/* Covariant cast for argument 0 (froms) isa HashSet[POSetElement#0] */ -/* isa HashSet[POSetElement#0] */ -type_struct = self->type->resolution_table->types[COLOR_hash_collection__HashSetposet__POSetElement_FT0]; -cltype = type_struct->color; -idtype = type_struct->id; -if(cltype >= p0->type->table_size) { -var = 0; -} else { -var = p0->type->type_table[cltype] == idtype; +val* var3 /* : HashSet[Object] */; +{ /* Inline poset#POSetElement#froms (self) on */ +var3 = self->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _froms"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 195); +show_backtrace(1); } -if (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 188); -exit(1); +var1 = var3; +RET_LABEL2:(void)0; } -self->attrs[COLOR_poset__POSetElement___64dfroms].val = p0; /* @froms on */ -RET_LABEL:; -} -/* method poset#POSetElement#froms= for (self: Object, HashSet[Object]) */ -void VIRTUAL_poset__POSetElement__froms_61d(val* self, val* p0) { -poset__POSetElement__froms_61d(self, p0); +var = var1; RET_LABEL:; +return var; } /* method poset#POSetElement#dtos for (self: POSetElement[Object]): HashSet[Object] */ val* poset__POSetElement__dtos(val* self) { val* var /* : HashSet[Object] */; val* var1 /* : HashSet[Object] */; -var1 = self->attrs[COLOR_poset__POSetElement___64ddtos].val; /* @dtos on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @dtos", "lib/poset.nit", 189); -exit(1); +var1 = self->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dtos"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 196); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -1235,47 +1421,30 @@ return var; val* VIRTUAL_poset__POSetElement__dtos(val* self) { val* var /* : HashSet[Object] */; val* var1 /* : HashSet[Object] */; -var1 = poset__POSetElement__dtos(self); -var = var1; -RET_LABEL:; -return var; -} -/* method poset#POSetElement#dtos= for (self: POSetElement[Object], HashSet[Object]) */ -void poset__POSetElement__dtos_61d(val* self, val* p0) { -short int var /* : Bool */; -int cltype; -int idtype; -const struct type* type_struct; -/* Covariant cast for argument 0 (dtos) isa HashSet[POSetElement#0] */ -/* isa HashSet[POSetElement#0] */ -type_struct = self->type->resolution_table->types[COLOR_hash_collection__HashSetposet__POSetElement_FT0]; -cltype = type_struct->color; -idtype = type_struct->id; -if(cltype >= p0->type->table_size) { -var = 0; -} else { -var = p0->type->type_table[cltype] == idtype; +val* var3 /* : HashSet[Object] */; +{ /* Inline poset#POSetElement#dtos (self) on */ +var3 = self->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dtos"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 196); +show_backtrace(1); } -if (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 189); -exit(1); -} -self->attrs[COLOR_poset__POSetElement___64ddtos].val = p0; /* @dtos on */ -RET_LABEL:; +var1 = var3; +RET_LABEL2:(void)0; } -/* method poset#POSetElement#dtos= for (self: Object, HashSet[Object]) */ -void VIRTUAL_poset__POSetElement__dtos_61d(val* self, val* p0) { -poset__POSetElement__dtos_61d(self, p0); +var = var1; RET_LABEL:; +return var; } /* method poset#POSetElement#dfroms for (self: POSetElement[Object]): HashSet[Object] */ val* poset__POSetElement__dfroms(val* self) { val* var /* : HashSet[Object] */; val* var1 /* : HashSet[Object] */; -var1 = self->attrs[COLOR_poset__POSetElement___64ddfroms].val; /* @dfroms on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @dfroms", "lib/poset.nit", 190); -exit(1); +var1 = self->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dfroms"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 197); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -1285,44 +1454,26 @@ return var; val* VIRTUAL_poset__POSetElement__dfroms(val* self) { val* var /* : HashSet[Object] */; val* var1 /* : HashSet[Object] */; -var1 = poset__POSetElement__dfroms(self); -var = var1; -RET_LABEL:; -return var; -} -/* method poset#POSetElement#dfroms= for (self: POSetElement[Object], HashSet[Object]) */ -void poset__POSetElement__dfroms_61d(val* self, val* p0) { -short int var /* : Bool */; -int cltype; -int idtype; -const struct type* type_struct; -/* Covariant cast for argument 0 (dfroms) isa HashSet[POSetElement#0] */ -/* isa HashSet[POSetElement#0] */ -type_struct = self->type->resolution_table->types[COLOR_hash_collection__HashSetposet__POSetElement_FT0]; -cltype = type_struct->color; -idtype = type_struct->id; -if(cltype >= p0->type->table_size) { -var = 0; -} else { -var = p0->type->type_table[cltype] == idtype; +val* var3 /* : HashSet[Object] */; +{ /* Inline poset#POSetElement#dfroms (self) on */ +var3 = self->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dfroms"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 197); +show_backtrace(1); } -if (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 190); -exit(1); +var1 = var3; +RET_LABEL2:(void)0; } -self->attrs[COLOR_poset__POSetElement___64ddfroms].val = p0; /* @dfroms on */ -RET_LABEL:; -} -/* method poset#POSetElement#dfroms= for (self: Object, HashSet[Object]) */ -void VIRTUAL_poset__POSetElement__dfroms_61d(val* self, val* p0) { -poset__POSetElement__dfroms_61d(self, p0); +var = var1; RET_LABEL:; +return var; } /* method poset#POSetElement#count for (self: POSetElement[Object]): Int */ long poset__POSetElement__count(val* self) { long var /* : Int */; long var1 /* : Int */; -var1 = self->attrs[COLOR_poset__POSetElement___64dcount].l; /* @count on */ +var1 = self->attrs[COLOR_poset__POSetElement___count].l; /* _count on */ var = var1; RET_LABEL:; return var; @@ -1331,26 +1482,33 @@ return var; long VIRTUAL_poset__POSetElement__count(val* self) { long var /* : Int */; long var1 /* : Int */; -var1 = poset__POSetElement__count(self); +long var3 /* : Int */; +{ /* Inline poset#POSetElement#count (self) on */ +var3 = self->attrs[COLOR_poset__POSetElement___count].l; /* _count on */ +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } -/* method poset#POSetElement#count= for (self: POSetElement[Object], Int) */ -void poset__POSetElement__count_61d(val* self, long p0) { -self->attrs[COLOR_poset__POSetElement___64dcount].l = p0; /* @count on */ -RET_LABEL:; -} -/* method poset#POSetElement#count= for (self: Object, Int) */ -void VIRTUAL_poset__POSetElement__count_61d(val* self, long p0) { -poset__POSetElement__count_61d(self, p0); -RET_LABEL:; -} /* method poset#POSetElement#greaters for (self: POSetElement[Object]): Collection[Object] */ val* poset__POSetElement__greaters(val* self) { val* var /* : Collection[Object] */; val* var1 /* : HashSet[Object] */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSetElement__tos]))(self) /* tos on */; +val* var3 /* : HashSet[Object] */; +{ +{ /* Inline poset#POSetElement#tos (self) on */ +var3 = self->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 194); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} var = var1; goto RET_LABEL; RET_LABEL:; @@ -1369,7 +1527,19 @@ return var; val* poset__POSetElement__direct_greaters(val* self) { val* var /* : Collection[Object] */; val* var1 /* : HashSet[Object] */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSetElement__dtos]))(self) /* dtos on */; +val* var3 /* : HashSet[Object] */; +{ +{ /* Inline poset#POSetElement#dtos (self) on */ +var3 = self->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dtos"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 196); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} var = var1; goto RET_LABEL; RET_LABEL:; @@ -1388,7 +1558,19 @@ return var; val* poset__POSetElement__smallers(val* self) { val* var /* : Collection[Object] */; val* var1 /* : HashSet[Object] */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSetElement__froms]))(self) /* froms on */; +val* var3 /* : HashSet[Object] */; +{ +{ /* Inline poset#POSetElement#froms (self) on */ +var3 = self->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _froms"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 195); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} var = var1; goto RET_LABEL; RET_LABEL:; @@ -1407,7 +1589,19 @@ return var; val* poset__POSetElement__direct_smallers(val* self) { val* var /* : Collection[Object] */; val* var1 /* : HashSet[Object] */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSetElement__dfroms]))(self) /* dfroms on */; +val* var3 /* : HashSet[Object] */; +{ +{ /* Inline poset#POSetElement#dfroms (self) on */ +var3 = self->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dfroms"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 197); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} var = var1; goto RET_LABEL; RET_LABEL:; @@ -1429,9 +1623,11 @@ short int var1 /* : Bool */; int cltype; int idtype; const struct type* type_struct; +const char* var_class_name; val* var_t /* var t: Object */; val* var2 /* : HashSet[Object] */; -short int var3 /* : Bool */; +val* var4 /* : HashSet[Object] */; +short int var5 /* : Bool */; /* Covariant cast for argument 0 (t) isa POSetElement#0 */ /* isa POSetElement#0 */ type_struct = self->type->resolution_table->types[COLOR_poset__POSetElement_FT0]; @@ -1442,14 +1638,29 @@ var1 = 0; } else { var1 = p0->type->type_table[cltype] == idtype; } -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 222); -exit(1); +if (unlikely(!var1)) { +var_class_name = p0 == NULL ? "null" : p0->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSetElement#0", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 229); +show_backtrace(1); } var_t = p0; -var2 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSetElement__tos]))(self) /* tos on */; -var3 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__Collection__has]))(var2, var_t) /* has on */; -var = var3; +{ +{ /* Inline poset#POSetElement#tos (self) on */ +var4 = self->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ +if (unlikely(var4 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 194); +show_backtrace(1); +} +var2 = var4; +RET_LABEL3:(void)0; +} +} +{ +var5 = hash_collection__HashSet__has(var2, var_t); +} +var = var5; goto RET_LABEL; RET_LABEL:; return var; @@ -1470,13 +1681,17 @@ short int var1 /* : Bool */; int cltype; int idtype; const struct type* type_struct; +const char* var_class_name; val* var_t /* var t: Object */; short int var2 /* : Bool */; val* var3 /* : Object */; -short int var4 /* : Bool */; -short int var_ /* var : Bool */; -val* var5 /* : HashSet[Object] */; +val* var5 /* : Object */; short int var6 /* : Bool */; +short int var7 /* : Bool */; +short int var_ /* var : Bool */; +val* var8 /* : HashSet[Object] */; +val* var10 /* : HashSet[Object] */; +short int var11 /* : Bool */; /* Covariant cast for argument 0 (t) isa POSetElement#0 */ /* isa POSetElement#0 */ type_struct = self->type->resolution_table->types[COLOR_poset__POSetElement_FT0]; @@ -1487,18 +1702,47 @@ var1 = 0; } else { var1 = p0->type->type_table[cltype] == idtype; } -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 228); -exit(1); +if (unlikely(!var1)) { +var_class_name = p0 == NULL ? "null" : p0->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSetElement#0", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 235); +show_backtrace(1); } var_t = p0; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSetElement__element]))(self) /* element on */; -var4 = ((short int (*)(val*, val*))(var_t->class->vft[COLOR_kernel__Object___33d_61d]))(var_t, var3) /* != on */; -var_ = var4; -if (var4){ -var5 = ((val* (*)(val*))(self->class->vft[COLOR_poset__POSetElement__tos]))(self) /* tos on */; -var6 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__Collection__has]))(var5, var_t) /* has on */; -var2 = var6; +{ +{ /* Inline poset#POSetElement#element (self) on */ +var5 = self->attrs[COLOR_poset__POSetElement___element].val; /* _element on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _element"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 191); +show_backtrace(1); +} +var3 = var5; +RET_LABEL4:(void)0; +} +} +{ +var7 = ((short int (*)(val*, val*))(var_t->class->vft[COLOR_kernel__Object___33d_61d]))(var_t, var3) /* != on */; +var6 = var7; +} +var_ = var6; +if (var6){ +{ +{ /* Inline poset#POSetElement#tos (self) on */ +var10 = self->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ +if (unlikely(var10 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos"); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 194); +show_backtrace(1); +} +var8 = var10; +RET_LABEL9:(void)0; +} +} +{ +var11 = hash_collection__HashSet__has(var8, var_t); +} +var2 = var11; } else { var2 = var_; } @@ -1522,10 +1766,12 @@ short int var /* : Bool */; int cltype; int idtype; const struct type* type_struct; +const char* var_class_name; short int var1 /* : Bool */; int cltype2; int idtype3; const struct type* type_struct4; +const char* var_class_name5; /* Covariant cast for argument 0 (poset) isa POSet[POSetElement#0] */ /* isa POSet[POSetElement#0] */ type_struct = self->type->resolution_table->types[COLOR_poset__POSetposet__POSetElement_FT0]; @@ -1536,9 +1782,11 @@ var = 0; } else { var = p0->type->type_table[cltype] == idtype; } -if (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 168); -exit(1); +if (unlikely(!var)) { +var_class_name = p0 == NULL ? "null" : p0->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[POSetElement#0]", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 175); +show_backtrace(1); } /* Covariant cast for argument 1 (element) isa POSetElement#0 */ /* isa POSetElement#0 */ @@ -1550,17 +1798,66 @@ var1 = 0; } else { var1 = p1->type->type_table[cltype2] == idtype3; } -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/poset.nit", 168); -exit(1); +if (unlikely(!var1)) { +var_class_name5 = p1 == NULL ? "null" : p1->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSetElement#0", var_class_name5); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 175); +show_backtrace(1); } -self->attrs[COLOR_poset__POSetElement___64dposet].val = p0; /* @poset on */ -self->attrs[COLOR_poset__POSetElement___64delement].val = p1; /* @element on */ -self->attrs[COLOR_poset__POSetElement___64dcount].l = p2; /* @count on */ +self->attrs[COLOR_poset__POSetElement___poset].val = p0; /* _poset on */ +self->attrs[COLOR_poset__POSetElement___element].val = p1; /* _element on */ +self->attrs[COLOR_poset__POSetElement___count].l = p2; /* _count on */ RET_LABEL:; } /* method poset#POSetElement#init for (self: Object, POSet[Object], Object, Int) */ void VIRTUAL_poset__POSetElement__init(val* self, val* p0, val* p1, long p2) { -poset__POSetElement__init(self, p0, p1, p2); +short int var /* : Bool */; +int cltype; +int idtype; +const struct type* type_struct; +const char* var_class_name; +short int var2 /* : Bool */; +int cltype3; +int idtype4; +const struct type* type_struct5; +const char* var_class_name6; +{ /* Inline poset#POSetElement#init (self,p0,p1,p2) on */ +/* Covariant cast for argument 0 (poset) isa POSet[POSetElement#0] */ +/* isa POSet[POSetElement#0] */ +type_struct = self->type->resolution_table->types[COLOR_poset__POSetposet__POSetElement_FT0]; +cltype = type_struct->color; +idtype = type_struct->id; +if(cltype >= p0->type->table_size) { +var = 0; +} else { +var = p0->type->type_table[cltype] == idtype; +} +if (unlikely(!var)) { +var_class_name = p0 == NULL ? "null" : p0->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[POSetElement#0]", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 175); +show_backtrace(1); +} +/* Covariant cast for argument 1 (element) isa POSetElement#0 */ +/* isa POSetElement#0 */ +type_struct5 = self->type->resolution_table->types[COLOR_poset__POSetElement_FT0]; +cltype3 = type_struct5->color; +idtype4 = type_struct5->id; +if(cltype3 >= p1->type->table_size) { +var2 = 0; +} else { +var2 = p1->type->type_table[cltype3] == idtype4; +} +if (unlikely(!var2)) { +var_class_name6 = p1 == NULL ? "null" : p1->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSetElement#0", var_class_name6); +PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 175); +show_backtrace(1); +} +self->attrs[COLOR_poset__POSetElement___poset].val = p0; /* _poset on */ +self->attrs[COLOR_poset__POSetElement___element].val = p1; /* _element on */ +self->attrs[COLOR_poset__POSetElement___count].l = p2; /* _count on */ +RET_LABEL1:(void)0; +} RET_LABEL:; }