X-Git-Url: http://nitlanguage.org diff --git a/c_src/poset.sep.1.c b/c_src/poset.sep.1.c index c04fc9f..9e04dd7 100644 --- a/c_src/poset.sep.1.c +++ b/c_src/poset.sep.1.c @@ -1,18 +1,18 @@ #include "poset.sep.0.h" -/* method poset#POSet#iterator for (self: POSet[Object]): Iterator[Object] */ -val* poset__POSet__iterator(val* self) { -val* var /* : Iterator[Object] */; -val* var1 /* : HashMap[Object, POSetElement[Object]] */; -val* var3 /* : HashMap[Object, POSetElement[Object]] */; -val* var4 /* : RemovableCollection[Object] */; -val* var6 /* : RemovableCollection[Object] */; +/* method poset#POSet#iterator for (self: POSet[nullable Object]): Iterator[nullable Object] */ +val* poset___poset__POSet___standard__abstract_collection__Collection__iterator(val* self) { +val* var /* : Iterator[nullable Object] */; +val* var1 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +val* var3 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +val* var4 /* : RemovableCollection[nullable Object] */; +val* var6 /* : RemovableCollection[nullable Object] */; val* var7 /* : Iterator[nullable Object] */; { -{ /* Inline poset#POSet#elements (self) on */ -var3 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +{ /* 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); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82); show_backtrace(1); } var1 = var3; @@ -20,11 +20,11 @@ RET_LABEL2:(void)0; } } { -{ /* Inline hash_collection#HashMap#keys (var1) on */ -var6 = var1->attrs[COLOR_hash_collection__HashMap___keys].val; /* _keys on */ +{ /* Inline hash_collection#HashMap#keys (var1) on */ +var6 = var1->attrs[COLOR_standard__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); +PRINT_ERROR(" (%s:%d)\n", FILE_standard__hash_collection, 275); show_backtrace(1); } var4 = var6; @@ -32,92 +32,70 @@ RET_LABEL5:(void)0; } } { -var7 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Collection__iterator]))(var4) /* iterator on */; +var7 = ((val* (*)(val* self))(var4->class->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var4) /* iterator on */; } var = var7; goto RET_LABEL; RET_LABEL:; return var; } -/* method poset#POSet#iterator for (self: Object): Iterator[nullable Object] */ -val* VIRTUAL_poset__POSet__iterator(val* self) { -val* var /* : Iterator[nullable Object] */; -val* var1 /* : Iterator[Object] */; -var1 = poset__POSet__iterator(self); -var = var1; -RET_LABEL:; -return var; -} -/* method poset#POSet#elements for (self: POSet[Object]): HashMap[Object, POSetElement[Object]] */ -val* poset__POSet__elements(val* self) { -val* var /* : HashMap[Object, POSetElement[Object]] */; -val* var1 /* : HashMap[Object, POSetElement[Object]] */; -var1 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +/* method poset#POSet#elements for (self: POSet[nullable Object]): HashMap[nullable Object, POSetElement[nullable Object]] */ +val* poset___poset__POSet___elements(val* self) { +val* var /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +val* var1 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +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:; -return var; -} -/* method poset#POSet#elements for (self: Object): HashMap[Object, POSetElement[Object]] */ -val* VIRTUAL_poset__POSet__elements(val* self) { -val* var /* : HashMap[Object, POSetElement[Object]] */; -val* var1 /* : HashMap[Object, POSetElement[Object]] */; -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); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82); show_backtrace(1); } -var1 = var3; -RET_LABEL2:(void)0; -} 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) { +/* method poset#POSet#has for (self: POSet[nullable Object], nullable Object): Bool */ +short int poset___poset__POSet___standard__abstract_collection__Collection__has(val* self, val* p0) { short int var /* : Bool */; short int var1 /* : Bool */; int cltype; int idtype; const struct type* type_struct; +short int is_nullable; const char* var_class_name; -val* var_e /* var e: Object */; -val* var2 /* : HashMap[Object, POSetElement[Object]] */; -val* var4 /* : HashMap[Object, POSetElement[Object]] */; -val* var5 /* : RemovableCollection[Object] */; -val* var7 /* : RemovableCollection[Object] */; +val* var_e /* var e: nullable Object */; +val* var2 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +val* var4 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +val* var5 /* : RemovableCollection[nullable Object] */; +val* var7 /* : RemovableCollection[nullable 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]; +/* Covariant cast for argument 0 (e) isa E */ +/* isa E */ +type_struct = self->type->resolution_table->types[COLOR_poset__POSet___35dE]; cltype = type_struct->color; idtype = type_struct->id; +is_nullable = type_struct->is_nullable; +if(p0 == NULL) { +var1 = is_nullable; +} else { 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#0", var_class_name); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 34); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 85); show_backtrace(1); } var_e = p0; { -{ /* Inline poset#POSet#elements (self) on */ -var4 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +{ /* 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); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82); show_backtrace(1); } var2 = var4; @@ -125,11 +103,11 @@ RET_LABEL3:(void)0; } } { -{ /* Inline hash_collection#HashMap#keys (var2) on */ -var7 = var2->attrs[COLOR_hash_collection__HashMap___keys].val; /* _keys on */ +{ /* Inline hash_collection#HashMap#keys (var2) on */ +var7 = var2->attrs[COLOR_standard__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); +PRINT_ERROR(" (%s:%d)\n", FILE_standard__hash_collection, 275); show_backtrace(1); } var5 = var7; @@ -137,83 +115,70 @@ RET_LABEL6:(void)0; } } { -var8 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__Collection__has]))(var5, var_e) /* has on */; +var8 = ((short int (*)(val* self, val* p0))(var5->class->vft[COLOR_standard__abstract_collection__Collection__has]))(var5, var_e) /* has on */; } var = var8; goto RET_LABEL; RET_LABEL:; return var; } -/* method poset#POSet#has for (self: Object, nullable Object): Bool */ -short int VIRTUAL_poset__POSet__has(val* self, val* p0) { -short int var /* : Bool */; -short int var1 /* : Bool */; -var1 = poset__POSet__has(self, p0); -var = var1; -RET_LABEL:; -return var; -} -/* method poset#POSet#add_node for (self: POSet[Object], Object): POSetElement[Object] */ -val* poset__POSet__add_node(val* self, val* p0) { -val* var /* : POSetElement[Object] */; +/* method poset#POSet#add_node for (self: POSet[nullable Object], nullable Object): POSetElement[nullable Object] */ +val* poset___poset__POSet___add_node(val* self, val* p0) { +val* var /* : POSetElement[nullable Object] */; short int var1 /* : Bool */; int cltype; int idtype; const struct type* type_struct; +short int is_nullable; const char* var_class_name; -val* var_e /* var e: Object */; -val* var2 /* : HashMap[Object, POSetElement[Object]] */; -val* var4 /* : HashMap[Object, POSetElement[Object]] */; -val* var5 /* : RemovableCollection[Object] */; -val* var7 /* : RemovableCollection[Object] */; +val* var_e /* var e: nullable Object */; +val* var2 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +val* var4 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +val* var5 /* : RemovableCollection[nullable Object] */; +val* var7 /* : RemovableCollection[nullable Object] */; short int var8 /* : Bool */; -val* var9 /* : HashMap[Object, POSetElement[Object]] */; -val* var11 /* : HashMap[Object, POSetElement[Object]] */; +val* var9 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +val* var11 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; val* var12 /* : nullable Object */; -val* var13 /* : POSetElement[Object] */; -val* var14 /* : HashMap[Object, POSetElement[Object]] */; -val* var16 /* : HashMap[Object, POSetElement[Object]] */; +val* var13 /* : POSetElement[nullable Object] */; +val* var14 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +val* var16 /* : HashMap[nullable Object, POSetElement[nullable 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* 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]; +val* var_poe /* var poe: POSetElement[nullable Object] */; +val* var18 /* : HashSet[nullable Object] */; +val* var20 /* : HashSet[nullable Object] */; +val* var21 /* : HashSet[nullable Object] */; +val* var23 /* : HashSet[nullable Object] */; +val* var24 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +val* var26 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +/* Covariant cast for argument 0 (e) isa E */ +/* isa E */ +type_struct = self->type->resolution_table->types[COLOR_poset__POSet___35dE]; cltype = type_struct->color; idtype = type_struct->id; +is_nullable = type_struct->is_nullable; +if(p0 == NULL) { +var1 = is_nullable; +} else { 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`", "POSet#0", var_class_name); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 36); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 87); show_backtrace(1); } var_e = p0; { -{ /* Inline poset#POSet#elements (self) on */ -var4 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +{ /* 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); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82); show_backtrace(1); } var2 = var4; @@ -221,11 +186,11 @@ RET_LABEL3:(void)0; } } { -{ /* Inline hash_collection#HashMap#keys (var2) on */ -var7 = var2->attrs[COLOR_hash_collection__HashMap___keys].val; /* _keys on */ +{ /* Inline hash_collection#HashMap#keys (var2) on */ +var7 = var2->attrs[COLOR_standard__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); +PRINT_ERROR(" (%s:%d)\n", FILE_standard__hash_collection, 275); show_backtrace(1); } var5 = var7; @@ -233,15 +198,15 @@ RET_LABEL6:(void)0; } } { -var8 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__Collection__has]))(var5, var_e) /* has on */; +var8 = ((short int (*)(val* self, val* p0))(var5->class->vft[COLOR_standard__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 */ +{ /* 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); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82); show_backtrace(1); } var9 = var11; @@ -249,19 +214,19 @@ RET_LABEL10:(void)0; } } { -var12 = hash_collection__HashMap___91d_93d(var9, var_e); +var12 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var9, var_e); } var = var12; goto RET_LABEL; } else { } -var13 = NEW_poset__POSetElement(self->type->resolution_table->types[COLOR_poset__POSetElementposet__POSet_FT0]); +var13 = NEW_poset__POSetElement(self->type->resolution_table->types[COLOR_poset__POSetElement__poset__POSet___35dE]); { -{ /* Inline poset#POSet#elements (self) on */ -var16 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +{ /* 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); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82); show_backtrace(1); } var14 = var16; @@ -269,148 +234,117 @@ RET_LABEL15:(void)0; } } { -var17 = hash_collection__HashMap__length(var14); +var17 = standard___standard__HashMap___standard__abstract_collection__MapRead__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; +((void (*)(val* self, val* p0))(var13->class->vft[COLOR_poset__POSetElement__poset_61d]))(var13, self) /* poset= on */; } -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); +{ +((void (*)(val* self, val* p0))(var13->class->vft[COLOR_poset__POSetElement__element_61d]))(var13, var_e) /* element= on */; } -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; +{ +((void (*)(val* self, long p0))(var13->class->vft[COLOR_poset__POSetElement__count_61d]))(var13, var17) /* count= on */; } +{ +((void (*)(val* self))(var13->class->vft[COLOR_standard__kernel__Object__init]))(var13) /* init on */; } 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)) { +{ /* Inline poset#POSetElement#tos (var_poe) on */ +var20 = var_poe->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ +if (unlikely(var20 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos"); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 194); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 389); show_backtrace(1); } -var29 = var31; -RET_LABEL30:(void)0; +var18 = var20; +RET_LABEL19:(void)0; } } { -hash_collection__HashSet__add(var29, var_e); /* Direct call hash_collection#HashSet#add on */ +standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var18, 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)) { +{ /* Inline poset#POSetElement#froms (var_poe) on */ +var23 = var_poe->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on */ +if (unlikely(var23 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _froms"); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 195); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 390); show_backtrace(1); } -var32 = var34; -RET_LABEL33:(void)0; +var21 = var23; +RET_LABEL22:(void)0; } } { -hash_collection__HashSet__add(var32, var_e); /* Direct call hash_collection#HashSet#add on */ +standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var21, 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)) { +{ /* Inline poset#POSet#elements (self) on */ +var26 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +if (unlikely(var26 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements"); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 31); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82); show_backtrace(1); } -var35 = var37; -RET_LABEL36:(void)0; +var24 = var26; +RET_LABEL25:(void)0; } } { -hash_collection__HashMap___91d_93d_61d(var35, var_e, var_poe); /* Direct call hash_collection#HashMap#[]= on */ +standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var24, var_e, var_poe); /* Direct call hash_collection#HashMap#[]= on */ } var = var_poe; goto RET_LABEL; RET_LABEL:; return var; } -/* method poset#POSet#add_node for (self: Object, Object): POSetElement[Object] */ -val* VIRTUAL_poset__POSet__add_node(val* self, val* p0) { -val* var /* : POSetElement[Object] */; -val* var1 /* : POSetElement[Object] */; -var1 = poset__POSet__add_node(self, p0); -var = var1; -RET_LABEL:; -return var; -} -/* method poset#POSet#[] for (self: POSet[Object], Object): POSetElement[Object] */ -val* poset__POSet___91d_93d(val* self, val* p0) { -val* var /* : POSetElement[Object] */; +/* method poset#POSet#[] for (self: POSet[nullable Object], nullable Object): POSetElement[nullable Object] */ +val* poset___poset__POSet____91d_93d(val* self, val* p0) { +val* var /* : POSetElement[nullable Object] */; short int var1 /* : Bool */; int cltype; int idtype; const struct type* type_struct; +short int is_nullable; const char* var_class_name; -val* var_e /* var e: Object */; -val* var2 /* : HashMap[Object, POSetElement[Object]] */; -val* var4 /* : HashMap[Object, POSetElement[Object]] */; -val* var5 /* : RemovableCollection[Object] */; -val* var7 /* : RemovableCollection[Object] */; +val* var_e /* var e: nullable Object */; +val* var2 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +val* var4 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +val* var5 /* : RemovableCollection[nullable Object] */; +val* var7 /* : RemovableCollection[nullable Object] */; short int var8 /* : Bool */; -val* var9 /* : HashMap[Object, POSetElement[Object]] */; -val* var11 /* : HashMap[Object, POSetElement[Object]] */; +val* var9 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +val* var11 /* : HashMap[nullable Object, POSetElement[nullable 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]; +/* Covariant cast for argument 0 (e) isa E */ +/* isa E */ +type_struct = self->type->resolution_table->types[COLOR_poset__POSet___35dE]; cltype = type_struct->color; idtype = type_struct->id; +is_nullable = type_struct->is_nullable; +if(p0 == NULL) { +var1 = is_nullable; +} else { 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`", "POSet#0", var_class_name); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 50); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 101); show_backtrace(1); } var_e = p0; { -{ /* Inline poset#POSet#elements (self) on */ -var4 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +{ /* 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); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82); show_backtrace(1); } var2 = var4; @@ -418,11 +352,11 @@ RET_LABEL3:(void)0; } } { -{ /* Inline hash_collection#HashMap#keys (var2) on */ -var7 = var2->attrs[COLOR_hash_collection__HashMap___keys].val; /* _keys on */ +{ /* Inline hash_collection#HashMap#keys (var2) on */ +var7 = var2->attrs[COLOR_standard__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); +PRINT_ERROR(" (%s:%d)\n", FILE_standard__hash_collection, 275); show_backtrace(1); } var5 = var7; @@ -430,19 +364,19 @@ RET_LABEL6:(void)0; } } { -var8 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__Collection__has]))(var5, var_e) /* has on */; +var8 = ((short int (*)(val* self, val* p0))(var5->class->vft[COLOR_standard__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); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 115); show_backtrace(1); } { -{ /* Inline poset#POSet#elements (self) on */ -var11 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +{ /* 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); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82); show_backtrace(1); } var9 = var11; @@ -450,712 +384,764 @@ RET_LABEL10:(void)0; } } { -var12 = hash_collection__HashMap___91d_93d(var9, var_e); +var12 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var9, var_e); } var = var12; goto RET_LABEL; RET_LABEL:; return var; } -/* method poset#POSet#[] for (self: Object, Object): POSetElement[Object] */ -val* VIRTUAL_poset__POSet___91d_93d(val* self, val* p0) { -val* var /* : POSetElement[Object] */; -val* var1 /* : POSetElement[Object] */; -var1 = poset__POSet___91d_93d(self, p0); -var = var1; -RET_LABEL:; -return var; -} -/* method poset#POSet#add_edge for (self: POSet[Object], Object, Object) */ -void poset__POSet__add_edge(val* self, val* p0, val* p1) { +/* method poset#POSet#add_edge for (self: POSet[nullable Object], nullable Object, nullable Object) */ +void poset___poset__POSet___add_edge(val* self, val* p0, val* p1) { short int var /* : Bool */; int cltype; int idtype; const struct type* type_struct; +short int is_nullable; 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* var6 /* : POSetElement[Object] */; -val* var_fe /* var fe: POSetElement[Object] */; -val* var7 /* : POSetElement[Object] */; -val* var_te /* var te: POSetElement[Object] */; -val* var8 /* : HashSet[Object] */; -val* var10 /* : HashSet[Object] */; -short int var11 /* : Bool */; -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* var18 /* : HashMap[Object, POSetElement[Object]] */; -val* var20 /* : HashMap[Object, POSetElement[Object]] */; -val* var21 /* : nullable Object */; -val* var_ffe /* var ffe: POSetElement[Object] */; -val* var22 /* : HashSet[Object] */; -val* var24 /* : HashSet[Object] */; -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]] */; +short int is_nullable5; +const char* var_class_name6; +val* var_f /* var f: nullable Object */; +val* var_t /* var t: nullable Object */; +val* var7 /* : POSetElement[nullable Object] */; +val* var_fe /* var fe: POSetElement[nullable Object] */; +val* var8 /* : POSetElement[nullable Object] */; +val* var_te /* var te: POSetElement[nullable Object] */; +val* var9 /* : HashSet[nullable Object] */; +val* var11 /* : HashSet[nullable Object] */; +short int var12 /* : Bool */; +val* var13 /* : HashSet[nullable Object] */; +val* var15 /* : HashSet[nullable Object] */; +val* var_ /* var : HashSet[nullable Object] */; +val* var16 /* : Iterator[nullable Object] */; +val* var_17 /* var : Iterator[nullable Object] */; +short int var18 /* : Bool */; +val* var19 /* : nullable Object */; +val* var_ff /* var ff: nullable Object */; +val* var20 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +val* var22 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +val* var23 /* : nullable Object */; +val* var_ffe /* var ffe: POSetElement[nullable Object] */; +val* var24 /* : HashSet[nullable Object] */; +val* var26 /* : HashSet[nullable Object] */; +val* var_27 /* var : HashSet[nullable Object] */; +val* var28 /* : Iterator[nullable Object] */; +val* var_29 /* var : Iterator[nullable Object] */; +short int var30 /* : Bool */; val* var31 /* : nullable Object */; -val* var_tte /* var tte: POSetElement[Object] */; -val* var32 /* : HashSet[Object] */; -val* var34 /* : HashSet[Object] */; -val* var35 /* : 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] */; +val* var_tt /* var tt: nullable Object */; +val* var32 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +val* var34 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +val* var35 /* : nullable Object */; +val* var_tte /* var tte: POSetElement[nullable Object] */; +val* var36 /* : HashSet[nullable Object] */; +val* var38 /* : HashSet[nullable Object] */; +val* var39 /* : HashSet[nullable Object] */; +val* var41 /* : HashSet[nullable Object] */; +val* var45 /* : HashSet[nullable Object] */; +val* var47 /* : HashSet[nullable Object] */; short int var48 /* : Bool */; -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] */; +val* var49 /* : HashSet[nullable Object] */; +val* var51 /* : HashSet[nullable Object] */; +val* var52 /* : Array[nullable Object] */; +val* var_53 /* var : Array[nullable Object] */; +val* var54 /* : ArrayIterator[nullable Object] */; +val* var_55 /* var : ArrayIterator[nullable Object] */; +short int var56 /* : Bool */; +val* var57 /* : nullable Object */; +val* var_x /* var x: nullable Object */; +val* var58 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +val* var60 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +val* var61 /* : nullable Object */; +val* var_xe /* var xe: POSetElement[nullable Object] */; +val* var62 /* : HashSet[nullable Object] */; +val* var64 /* : HashSet[nullable Object] */; +short int var65 /* : Bool */; +val* var66 /* : HashSet[nullable Object] */; +val* var68 /* : HashSet[nullable Object] */; +val* var69 /* : HashSet[nullable Object] */; +val* var71 /* : HashSet[nullable Object] */; +val* var74 /* : HashSet[nullable Object] */; +val* var76 /* : HashSet[nullable Object] */; +val* var77 /* : Array[nullable Object] */; +val* var_78 /* var : Array[nullable Object] */; +val* var79 /* : ArrayIterator[nullable Object] */; +val* var_80 /* var : ArrayIterator[nullable 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]; +val* var82 /* : nullable Object */; +val* var_x83 /* var x: nullable Object */; +val* var84 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +val* var86 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +val* var87 /* : nullable Object */; +val* var_xe88 /* var xe: POSetElement[nullable Object] */; +val* var89 /* : HashSet[nullable Object] */; +val* var91 /* : HashSet[nullable Object] */; +short int var92 /* : Bool */; +val* var93 /* : HashSet[nullable Object] */; +val* var95 /* : HashSet[nullable Object] */; +val* var96 /* : HashSet[nullable Object] */; +val* var98 /* : HashSet[nullable Object] */; +val* var101 /* : HashSet[nullable Object] */; +val* var103 /* : HashSet[nullable Object] */; +val* var104 /* : HashSet[nullable Object] */; +val* var106 /* : HashSet[nullable Object] */; +/* Covariant cast for argument 0 (f) isa E */ +/* isa E */ +type_struct = self->type->resolution_table->types[COLOR_poset__POSet___35dE]; cltype = type_struct->color; idtype = type_struct->id; +is_nullable = type_struct->is_nullable; +if(p0 == NULL) { +var = is_nullable; +} else { 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#0", var_class_name); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 67); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 119); show_backtrace(1); } -/* Covariant cast for argument 1 (t) isa POSet#0 */ -/* isa POSet#0 */ -type_struct4 = self->type->resolution_table->types[COLOR_poset__POSet_FT0]; +/* Covariant cast for argument 1 (t) isa E */ +/* isa E */ +type_struct4 = self->type->resolution_table->types[COLOR_poset__POSet___35dE]; cltype2 = type_struct4->color; idtype3 = type_struct4->id; +is_nullable5 = type_struct4->is_nullable; +if(p1 == NULL) { +var1 = is_nullable5; +} else { if(cltype2 >= p1->type->table_size) { var1 = 0; } else { var1 = p1->type->type_table[cltype2] == idtype3; } +} 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); +var_class_name6 = p1 == NULL ? "null" : p1->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name6); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 119); show_backtrace(1); } var_f = p0; var_t = p1; { -var6 = poset__POSet__add_node(self, var_f); +var7 = poset___poset__POSet___add_node(self, var_f); } -var_fe = var6; +var_fe = var7; { -var7 = poset__POSet__add_node(self, var_t); +var8 = poset___poset__POSet___add_node(self, var_t); } -var_te = var7; +var_te = var8; { -{ /* Inline poset#POSetElement#tos (var_fe) on */ -var10 = var_fe->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ -if (unlikely(var10 == NULL)) { +{ /* Inline poset#POSetElement#tos (var_fe) on */ +var11 = var_fe->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ +if (unlikely(var11 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos"); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 194); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 389); show_backtrace(1); } -var8 = var10; -RET_LABEL9:(void)0; +var9 = var11; +RET_LABEL10:(void)0; } } { -var11 = hash_collection__HashSet__has(var8, var_t); +var12 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var9, var_t); } -if (var11){ +if (var12){ goto RET_LABEL; } else { } { -{ /* Inline poset#POSetElement#froms (var_fe) on */ -var14 = var_fe->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on */ -if (unlikely(var14 == NULL)) { +{ /* Inline poset#POSetElement#froms (var_fe) on */ +var15 = var_fe->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on */ +if (unlikely(var15 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _froms"); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 195); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 390); show_backtrace(1); } -var12 = var14; -RET_LABEL13:(void)0; +var13 = var15; +RET_LABEL14:(void)0; } } +var_ = var13; { -var15 = hash_collection__HashSet__iterator(var12); +var16 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_); } +var_17 = var16; for(;;) { { -var16 = ((short int (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var15) /* is_ok on */; +var18 = ((short int (*)(val* self))(var_17->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_17) /* is_ok on */; } -if(!var16) break; +if (var18){ { -var17 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__item]))(var15) /* item on */; +var19 = ((val* (*)(val* self))(var_17->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_17) /* item on */; } -var_ff = var17; +var_ff = var19; { -{ /* Inline poset#POSet#elements (self) on */ -var20 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ -if (unlikely(var20 == NULL)) { +{ /* Inline poset#POSet#elements (self) on */ +var22 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +if (unlikely(var22 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements"); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 31); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82); show_backtrace(1); } -var18 = var20; -RET_LABEL19:(void)0; +var20 = var22; +RET_LABEL21:(void)0; } } { -var21 = hash_collection__HashMap___91d_93d(var18, var_ff); +var23 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var20, var_ff); } -var_ffe = var21; +var_ffe = var23; { -{ /* Inline poset#POSetElement#tos (var_te) on */ -var24 = var_te->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ -if (unlikely(var24 == NULL)) { +{ /* Inline poset#POSetElement#tos (var_te) on */ +var26 = var_te->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ +if (unlikely(var26 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos"); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 194); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 389); show_backtrace(1); } -var22 = var24; -RET_LABEL23:(void)0; +var24 = var26; +RET_LABEL25:(void)0; } } +var_27 = var24; { -var25 = hash_collection__HashSet__iterator(var22); +var28 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_27); } +var_29 = var28; for(;;) { { -var26 = ((short int (*)(val*))(var25->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var25) /* is_ok on */; +var30 = ((short int (*)(val* self))(var_29->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_29) /* is_ok on */; } -if(!var26) break; +if (var30){ { -var27 = ((val* (*)(val*))(var25->class->vft[COLOR_abstract_collection__Iterator__item]))(var25) /* item on */; +var31 = ((val* (*)(val* self))(var_29->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_29) /* item on */; } -var_tt = var27; +var_tt = var31; { -{ /* Inline poset#POSet#elements (self) on */ -var30 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ -if (unlikely(var30 == NULL)) { +{ /* Inline poset#POSet#elements (self) on */ +var34 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +if (unlikely(var34 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements"); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 31); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82); show_backtrace(1); } -var28 = var30; -RET_LABEL29:(void)0; +var32 = var34; +RET_LABEL33:(void)0; } } { -var31 = hash_collection__HashMap___91d_93d(var28, var_tt); +var35 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var32, var_tt); } -var_tte = var31; +var_tte = var35; { -{ /* Inline poset#POSetElement#froms (var_tte) on */ -var34 = var_tte->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on */ -if (unlikely(var34 == NULL)) { +{ /* Inline poset#POSetElement#froms (var_tte) on */ +var38 = var_tte->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on */ +if (unlikely(var38 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _froms"); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 195); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 390); show_backtrace(1); } -var32 = var34; -RET_LABEL33:(void)0; +var36 = var38; +RET_LABEL37:(void)0; } } { -hash_collection__HashSet__add(var32, var_ff); /* Direct call hash_collection#HashSet#add on */ +standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var36, 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)) { +{ /* Inline poset#POSetElement#tos (var_ffe) on */ +var41 = var_ffe->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); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 389); show_backtrace(1); } -var35 = var37; -RET_LABEL36:(void)0; +var39 = var41; +RET_LABEL40:(void)0; } } { -hash_collection__HashSet__add(var35, var_tt); /* Direct call hash_collection#HashSet#add on */ +standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var39, var_tt); /* Direct call hash_collection#HashSet#add on */ } -CONTINUE_label: (void)0; { -((void (*)(val*))(var25->class->vft[COLOR_abstract_collection__Iterator__next]))(var25) /* next on */; +((void (*)(val* self))(var_29->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_29) /* next on */; +} +} else { +goto BREAK_label; } } BREAK_label: (void)0; -CONTINUE_label38: (void)0; { -((void (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__next]))(var15) /* next on */; +{ /* Inline abstract_collection#Iterator#finish (var_29) on */ +RET_LABEL42:(void)0; } } -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)) { +((void (*)(val* self))(var_17->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_17) /* next on */; +} +} else { +goto BREAK_label43; +} +} +BREAK_label43: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_17) on */ +RET_LABEL44:(void)0; +} +} +{ +{ /* Inline poset#POSetElement#tos (var_te) on */ +var47 = var_te->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ +if (unlikely(var47 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos"); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 194); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 389); show_backtrace(1); } -var39 = var41; -RET_LABEL40:(void)0; +var45 = var47; +RET_LABEL46:(void)0; } } { -var42 = hash_collection__HashSet__has(var39, var_f); +var48 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var45, var_f); } -if (var42){ +if (var48){ goto RET_LABEL; } else { } { -{ /* Inline poset#POSetElement#dfroms (var_te) on */ -var45 = var_te->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on */ -if (unlikely(var45 == NULL)) { +{ /* Inline poset#POSetElement#dfroms (var_te) on */ +var51 = var_te->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on */ +if (unlikely(var51 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dfroms"); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 197); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 392); show_backtrace(1); } -var43 = var45; -RET_LABEL44:(void)0; +var49 = var51; +RET_LABEL50:(void)0; } } { -var46 = array__Collection__to_a(var43); +var52 = standard__array___Collection___to_a(var49); } +var_53 = var52; { -var47 = array__AbstractArrayRead__iterator(var46); +var54 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_53); } +var_55 = var54; for(;;) { { -var48 = array__ArrayIterator__is_ok(var47); +var56 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_55); } -if(!var48) break; +if (var56){ { -var49 = array__ArrayIterator__item(var47); +var57 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_55); } -var_x = var49; +var_x = var57; { -{ /* Inline poset#POSet#elements (self) on */ -var52 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ -if (unlikely(var52 == NULL)) { +{ /* Inline poset#POSet#elements (self) on */ +var60 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +if (unlikely(var60 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements"); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 31); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82); show_backtrace(1); } -var50 = var52; -RET_LABEL51:(void)0; +var58 = var60; +RET_LABEL59:(void)0; } } { -var53 = hash_collection__HashMap___91d_93d(var50, var_x); +var61 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var58, var_x); } -var_xe = var53; +var_xe = var61; { -{ /* Inline poset#POSetElement#tos (var_xe) on */ -var56 = var_xe->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ -if (unlikely(var56 == NULL)) { +{ /* Inline poset#POSetElement#tos (var_xe) on */ +var64 = var_xe->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ +if (unlikely(var64 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos"); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 194); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 389); show_backtrace(1); } -var54 = var56; -RET_LABEL55:(void)0; +var62 = var64; +RET_LABEL63:(void)0; } } { -var57 = hash_collection__HashSet__has(var54, var_f); +var65 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var62, var_f); } -if (var57){ +if (var65){ { -{ /* Inline poset#POSetElement#dfroms (var_te) on */ -var60 = var_te->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on */ -if (unlikely(var60 == NULL)) { +{ /* Inline poset#POSetElement#dfroms (var_te) on */ +var68 = var_te->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on */ +if (unlikely(var68 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dfroms"); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 197); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 392); show_backtrace(1); } -var58 = var60; -RET_LABEL59:(void)0; +var66 = var68; +RET_LABEL67:(void)0; } } { -hash_collection__HashSet__remove(var58, var_x); /* Direct call hash_collection#HashSet#remove on */ +standard___standard__HashSet___standard__abstract_collection__RemovableCollection__remove(var66, var_x); /* Direct call hash_collection#HashSet#remove on */ } { -{ /* Inline poset#POSetElement#dtos (var_xe) on */ -var63 = var_xe->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on */ -if (unlikely(var63 == NULL)) { +{ /* Inline poset#POSetElement#dtos (var_xe) on */ +var71 = var_xe->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on */ +if (unlikely(var71 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dtos"); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 196); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 391); show_backtrace(1); } -var61 = var63; -RET_LABEL62:(void)0; +var69 = var71; +RET_LABEL70:(void)0; } } { -hash_collection__HashSet__remove(var61, var_t); /* Direct call hash_collection#HashSet#remove on */ +standard___standard__HashSet___standard__abstract_collection__RemovableCollection__remove(var69, var_t); /* Direct call hash_collection#HashSet#remove on */ } } else { } -CONTINUE_label64: (void)0; { -array__ArrayIterator__next(var47); /* Direct call array#ArrayIterator#next on */ +standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_55); /* Direct call array#ArrayIterator#next on */ } +} else { +goto BREAK_label72; } -BREAK_label64: (void)0; +} +BREAK_label72: (void)0; { -{ /* Inline poset#POSetElement#dtos (var_fe) on */ -var67 = var_fe->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on */ -if (unlikely(var67 == NULL)) { +{ /* Inline abstract_collection#Iterator#finish (var_55) on */ +RET_LABEL73:(void)0; +} +} +{ +{ /* Inline poset#POSetElement#dtos (var_fe) on */ +var76 = var_fe->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on */ +if (unlikely(var76 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dtos"); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 196); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 391); show_backtrace(1); } -var65 = var67; -RET_LABEL66:(void)0; +var74 = var76; +RET_LABEL75:(void)0; } } { -var68 = array__Collection__to_a(var65); +var77 = standard__array___Collection___to_a(var74); } +var_78 = var77; { -var69 = array__AbstractArrayRead__iterator(var68); +var79 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_78); } +var_80 = var79; for(;;) { { -var70 = array__ArrayIterator__is_ok(var69); +var81 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_80); } -if(!var70) break; +if (var81){ { -var71 = array__ArrayIterator__item(var69); +var82 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_80); } -var_x72 = var71; +var_x83 = var82; { -{ /* Inline poset#POSet#elements (self) on */ -var75 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ -if (unlikely(var75 == NULL)) { +{ /* Inline poset#POSet#elements (self) on */ +var86 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +if (unlikely(var86 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements"); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 31); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82); show_backtrace(1); } -var73 = var75; -RET_LABEL74:(void)0; +var84 = var86; +RET_LABEL85:(void)0; } } { -var76 = hash_collection__HashMap___91d_93d(var73, var_x72); +var87 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var84, var_x83); } -var_xe77 = var76; +var_xe88 = var87; { -{ /* Inline poset#POSetElement#froms (var_xe77) on */ -var80 = var_xe77->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on */ -if (unlikely(var80 == NULL)) { +{ /* Inline poset#POSetElement#froms (var_xe88) on */ +var91 = var_xe88->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on */ +if (unlikely(var91 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _froms"); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 195); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 390); show_backtrace(1); } -var78 = var80; -RET_LABEL79:(void)0; +var89 = var91; +RET_LABEL90:(void)0; } } { -var81 = hash_collection__HashSet__has(var78, var_t); +var92 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var89, var_t); } -if (var81){ +if (var92){ { -{ /* Inline poset#POSetElement#dfroms (var_xe77) on */ -var84 = var_xe77->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on */ -if (unlikely(var84 == NULL)) { +{ /* Inline poset#POSetElement#dfroms (var_xe88) on */ +var95 = var_xe88->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on */ +if (unlikely(var95 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dfroms"); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 197); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 392); show_backtrace(1); } -var82 = var84; -RET_LABEL83:(void)0; +var93 = var95; +RET_LABEL94:(void)0; } } { -hash_collection__HashSet__remove(var82, var_f); /* Direct call hash_collection#HashSet#remove on */ +standard___standard__HashSet___standard__abstract_collection__RemovableCollection__remove(var93, 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)) { +{ /* Inline poset#POSetElement#dtos (var_fe) on */ +var98 = var_fe->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on */ +if (unlikely(var98 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dtos"); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 196); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 391); show_backtrace(1); } -var85 = var87; -RET_LABEL86:(void)0; +var96 = var98; +RET_LABEL97:(void)0; } } { -hash_collection__HashSet__remove(var85, var_x72); /* Direct call hash_collection#HashSet#remove on */ +standard___standard__HashSet___standard__abstract_collection__RemovableCollection__remove(var96, var_x83); /* Direct call hash_collection#HashSet#remove on */ } } else { } -CONTINUE_label88: (void)0; { -array__ArrayIterator__next(var69); /* Direct call array#ArrayIterator#next on */ +standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_80); /* Direct call array#ArrayIterator#next on */ +} +} else { +goto BREAK_label99; } } -BREAK_label88: (void)0; +BREAK_label99: (void)0; { -{ /* Inline poset#POSetElement#dtos (var_fe) on */ -var91 = var_fe->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on */ -if (unlikely(var91 == NULL)) { +{ /* Inline abstract_collection#Iterator#finish (var_80) on */ +RET_LABEL100:(void)0; +} +} +{ +{ /* Inline poset#POSetElement#dtos (var_fe) on */ +var103 = var_fe->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on */ +if (unlikely(var103 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dtos"); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 196); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 391); show_backtrace(1); } -var89 = var91; -RET_LABEL90:(void)0; +var101 = var103; +RET_LABEL102:(void)0; } } { -hash_collection__HashSet__add(var89, var_t); /* Direct call hash_collection#HashSet#add on */ +standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var101, 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)) { +{ /* Inline poset#POSetElement#dfroms (var_te) on */ +var106 = var_te->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on */ +if (unlikely(var106 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dfroms"); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 197); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 392); show_backtrace(1); } -var92 = var94; -RET_LABEL93:(void)0; +var104 = var106; +RET_LABEL105:(void)0; } } { -hash_collection__HashSet__add(var92, var_f); /* Direct call hash_collection#HashSet#add on */ -} -RET_LABEL:; +standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var104, var_f); /* Direct call hash_collection#HashSet#add on */ } -/* 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 */ -long poset__POSet__compare(val* self, val* p0, val* p1) { +/* method poset#POSet#compare for (self: POSet[nullable Object], nullable Object, nullable Object): Int */ +long poset___poset__POSet___standard__sorter__Comparator__compare(val* self, val* p0, val* p1) { long var /* : Int */; short int var1 /* : Bool */; int cltype; int idtype; const struct type* type_struct; +short int is_nullable; const char* var_class_name; short int var2 /* : Bool */; int cltype3; int idtype4; const struct type* type_struct5; -const char* var_class_name6; -val* var_a /* var a: Object */; -val* var_b /* var b: 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* var11 /* : HashMap[Object, POSetElement[Object]] */; -val* var13 /* : HashMap[Object, POSetElement[Object]] */; -val* var14 /* : nullable Object */; -val* var_be /* var be: POSetElement[Object] */; -val* var15 /* : HashSet[Object] */; -val* var17 /* : HashSet[Object] */; -long var18 /* : Int */; -val* var19 /* : HashSet[Object] */; -val* var21 /* : HashSet[Object] */; -long var22 /* : Int */; +short int is_nullable6; +const char* var_class_name7; +val* var_a /* var a: nullable Object */; +val* var_b /* var b: nullable Object */; +val* var8 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +val* var10 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +val* var11 /* : nullable Object */; +val* var_ae /* var ae: POSetElement[nullable Object] */; +val* var12 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +val* var14 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +val* var15 /* : nullable Object */; +val* var_be /* var be: POSetElement[nullable Object] */; +val* var16 /* : HashSet[nullable Object] */; +val* var18 /* : HashSet[nullable Object] */; +long var19 /* : Int */; +val* var20 /* : HashSet[nullable Object] */; +val* var22 /* : HashSet[nullable Object] */; long var23 /* : Int */; -long var_res /* var res: Int */; long var24 /* : Int */; -short int var25 /* : Bool */; +long var_res /* var res: Int */; +long var25 /* : Int */; 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* var30 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +val* var32 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; val* var33 /* : nullable Object */; long var34 /* : Int */; long var36 /* : Int */; -val* var37 /* : HashMap[Object, POSetElement[Object]] */; -val* var39 /* : HashMap[Object, POSetElement[Object]] */; +val* var37 /* : HashMap[nullable Object, POSetElement[nullable Object]] */; +val* var39 /* : HashMap[nullable Object, POSetElement[nullable 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]; +/* Covariant cast for argument 0 (a) isa E */ +/* isa E */ +type_struct = self->type->resolution_table->types[COLOR_poset__POSet___35dE]; cltype = type_struct->color; idtype = type_struct->id; +is_nullable = type_struct->is_nullable; +if(p0 == NULL) { +var1 = is_nullable; +} else { 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`", "POSet#0", var_class_name); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 151); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 267); show_backtrace(1); } -/* Covariant cast for argument 1 (b) isa POSet#0 */ -/* isa POSet#0 */ -type_struct5 = self->type->resolution_table->types[COLOR_poset__POSet_FT0]; +/* Covariant cast for argument 1 (b) isa E */ +/* isa E */ +type_struct5 = self->type->resolution_table->types[COLOR_poset__POSet___35dE]; cltype3 = type_struct5->color; idtype4 = type_struct5->id; +is_nullable6 = type_struct5->is_nullable; +if(p1 == NULL) { +var2 = is_nullable6; +} else { 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`", "POSet#0", var_class_name6); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 151); +var_class_name7 = p1 == NULL ? "null" : p1->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name7); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 267); show_backtrace(1); } var_a = p0; var_b = p1; { -{ /* Inline poset#POSet#elements (self) on */ -var9 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ -if (unlikely(var9 == NULL)) { +{ /* Inline poset#POSet#elements (self) on */ +var10 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +if (unlikely(var10 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements"); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 31); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82); show_backtrace(1); } -var7 = var9; -RET_LABEL8:(void)0; +var8 = var10; +RET_LABEL9:(void)0; } } { -var10 = hash_collection__HashMap___91d_93d(var7, var_a); +var11 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var8, var_a); } -var_ae = var10; +var_ae = var11; { -{ /* Inline poset#POSet#elements (self) on */ -var13 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ -if (unlikely(var13 == NULL)) { +{ /* Inline poset#POSet#elements (self) on */ +var14 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +if (unlikely(var14 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements"); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 31); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82); show_backtrace(1); } -var11 = var13; -RET_LABEL12:(void)0; +var12 = var14; +RET_LABEL13:(void)0; } } { -var14 = hash_collection__HashMap___91d_93d(var11, var_b); +var15 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var12, var_b); } -var_be = var14; +var_be = var15; { -{ /* Inline poset#POSetElement#tos (var_ae) on */ -var17 = var_ae->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ -if (unlikely(var17 == NULL)) { +{ /* Inline poset#POSetElement#tos (var_ae) on */ +var18 = var_ae->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ +if (unlikely(var18 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos"); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 194); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 389); show_backtrace(1); } -var15 = var17; -RET_LABEL16:(void)0; +var16 = var18; +RET_LABEL17:(void)0; } } { -var18 = hash_collection__HashSet__length(var15); +var19 = standard___standard__HashSet___standard__abstract_collection__Collection__length(var16); } { -{ /* Inline poset#POSetElement#tos (var_be) on */ -var21 = var_be->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ -if (unlikely(var21 == NULL)) { +{ /* Inline poset#POSetElement#tos (var_be) on */ +var22 = var_be->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ +if (unlikely(var22 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos"); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 194); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 389); show_backtrace(1); } -var19 = var21; -RET_LABEL20:(void)0; +var20 = var22; +RET_LABEL21:(void)0; } } { -var22 = hash_collection__HashSet__length(var19); +var23 = standard___standard__HashSet___standard__abstract_collection__Collection__length(var20); } { -var23 = kernel__Int___60d_61d_62d(var18, var22); +var24 = standard___standard__Int___Comparable___60d_61d_62d(var19, var23); } -var_res = var23; -var24 = 0; +var_res = var24; +var25 = 0; { -{ /* Inline kernel#Int#!= (var_res,var24) on */ -var28 = var_res == var24; +{ /* Inline kernel#Int#!= (var_res,var25) on */ +var28 = var_res == var25; var29 = !var28; var26 = var29; goto RET_LABEL27; RET_LABEL27:(void)0; } -var25 = var26; } -if (var25){ +if (var26){ var = var_res; goto RET_LABEL; } else { } { -{ /* Inline poset#POSet#elements (self) on */ -var32 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on */ +{ /* 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); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82); show_backtrace(1); } var30 = var32; @@ -1163,21 +1149,21 @@ RET_LABEL31:(void)0; } } { -var33 = hash_collection__HashMap___91d_93d(var30, var_a); +var33 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var30, var_a); } { -{ /* Inline poset#POSetElement#count (var33) on */ -var36 = var33->attrs[COLOR_poset__POSetElement___count].l; /* _count on */ +{ /* 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 */ +{ /* 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); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82); show_backtrace(1); } var37 = var39; @@ -1185,46 +1171,37 @@ RET_LABEL38:(void)0; } } { -var40 = hash_collection__HashMap___91d_93d(var37, var_b); +var40 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var37, var_b); } { -{ /* Inline poset#POSetElement#count (var40) on */ -var43 = var40->attrs[COLOR_poset__POSetElement___count].l; /* _count on */ +{ /* 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); +var44 = standard___standard__Int___Comparable___60d_61d_62d(var34, var41); } var = var44; goto RET_LABEL; RET_LABEL:; return var; } -/* method poset#POSet#compare for (self: Object, nullable Object, nullable Object): Int */ -long VIRTUAL_poset__POSet__compare(val* self, val* p0, val* p1) { -long var /* : Int */; -long var1 /* : Int */; -var1 = poset__POSet__compare(self, p0, p1); -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] */; +/* method poset#POSet#linearize for (self: POSet[nullable Object], Collection[nullable Object]): Array[nullable Object] */ +val* poset___poset__POSet___linearize(val* self, val* p0) { +val* var /* : Array[nullable 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* var_elements /* var elements: Collection[nullable 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]; +val* var_lin /* var lin: Array[nullable Object] */; +/* Covariant cast for argument 0 (elements) isa Collection[E] */ +/* isa Collection[E] */ +type_struct = self->type->resolution_table->types[COLOR_standard__Collection__poset__POSet___35dE]; cltype = type_struct->color; idtype = type_struct->id; if(cltype >= p0->type->table_size) { @@ -1234,275 +1211,185 @@ 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); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[E]", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 353); show_backtrace(1); } var_elements = p0; { -var2 = array__Collection__to_a(var_elements); +var2 = standard__array___Collection___to_a(var_elements); } var_lin = var2; { -sorter__Comparator__sort(self, var_lin); /* Direct call sorter#Comparator#sort on */ +standard___standard__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) { -{ /* 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___poset].val; /* _poset on */ +/* method poset#POSetElement#poset for (self: POSetElement[nullable Object]): POSet[nullable Object] */ +val* poset___poset__POSetElement___poset(val* self) { +val* var /* : POSet[nullable Object] */; +val* var1 /* : POSet[nullable Object] */; +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); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 383); show_backtrace(1); } var = var1; RET_LABEL:; return var; } -/* method poset#POSetElement#poset for (self: Object): POSet[Object] */ -val* VIRTUAL_poset__POSetElement__poset(val* self) { -val* var /* : POSet[Object] */; -val* var1 /* : POSet[Object] */; -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); -} -var1 = var3; -RET_LABEL2:(void)0; -} -var = var1; -RET_LABEL:; -return var; +/* method poset#POSetElement#poset= for (self: POSetElement[nullable Object], POSet[nullable Object]) */ +void poset___poset__POSetElement___poset_61d(val* self, val* p0) { +short int var /* : Bool */; +int cltype; +int idtype; +const struct type* type_struct; +const char* var_class_name; +/* Covariant cast for argument 0 (poset) isa POSet[E] */ +/* isa POSet[E] */ +type_struct = self->type->resolution_table->types[COLOR_poset__POSet__poset__POSetElement___35dE]; +cltype = type_struct->color; +idtype = type_struct->id; +if(cltype >= p0->type->table_size) { +var = 0; +} else { +var = p0->type->type_table[cltype] == idtype; } -/* 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___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); +if (unlikely(!var)) { +var_class_name = p0 == NULL ? "null" : p0->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[E]", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 383); show_backtrace(1); } -var = var1; +self->attrs[COLOR_poset__POSetElement___poset].val = p0; /* _poset on */ RET_LABEL:; -return var; -} -/* method poset#POSetElement#element for (self: Object): Object */ -val* VIRTUAL_poset__POSetElement__element(val* self) { -val* var /* : Object */; -val* var1 /* : Object */; -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); -} -var1 = var3; -RET_LABEL2:(void)0; } +/* method poset#POSetElement#element for (self: POSetElement[nullable Object]): nullable Object */ +val* poset___poset__POSetElement___element(val* self) { +val* var /* : nullable Object */; +val* var1 /* : nullable Object */; +var1 = self->attrs[COLOR_poset__POSetElement___element].val; /* _element on */ 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___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); +/* method poset#POSetElement#element= for (self: POSetElement[nullable Object], nullable Object) */ +void poset___poset__POSetElement___element_61d(val* self, val* p0) { +short int var /* : Bool */; +int cltype; +int idtype; +const struct type* type_struct; +short int is_nullable; +const char* var_class_name; +/* Covariant cast for argument 0 (element) isa E */ +/* isa E */ +type_struct = self->type->resolution_table->types[COLOR_poset__POSetElement___35dE]; +cltype = type_struct->color; +idtype = type_struct->id; +is_nullable = type_struct->is_nullable; +if(p0 == NULL) { +var = is_nullable; +} else { +if(cltype >= p0->type->table_size) { +var = 0; +} else { +var = p0->type->type_table[cltype] == idtype; } -var = var1; -RET_LABEL:; -return var; } -/* method poset#POSetElement#tos for (self: Object): HashSet[Object] */ -val* VIRTUAL_poset__POSetElement__tos(val* self) { -val* var /* : HashSet[Object] */; -val* var1 /* : HashSet[Object] */; -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); +if (unlikely(!var)) { +var_class_name = p0 == NULL ? "null" : p0->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 386); show_backtrace(1); } -var1 = var3; -RET_LABEL2:(void)0; -} -var = var1; +self->attrs[COLOR_poset__POSetElement___element].val = p0; /* _element on */ 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___froms].val; /* _froms on */ +/* method poset#POSetElement#tos for (self: POSetElement[nullable Object]): HashSet[nullable Object] */ +val* poset___poset__POSetElement___tos(val* self) { +val* var /* : HashSet[nullable Object] */; +val* var1 /* : HashSet[nullable Object] */; +var1 = self->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ if (unlikely(var1 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _froms"); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 195); +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos"); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 389); show_backtrace(1); } var = var1; RET_LABEL:; return var; } -/* method poset#POSetElement#froms for (self: Object): HashSet[Object] */ -val* VIRTUAL_poset__POSetElement__froms(val* self) { -val* var /* : HashSet[Object] */; -val* var1 /* : HashSet[Object] */; -val* var3 /* : HashSet[Object] */; -{ /* Inline poset#POSetElement#froms (self) on */ -var3 = self->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on */ -if (unlikely(var3 == NULL)) { +/* method poset#POSetElement#froms for (self: POSetElement[nullable Object]): HashSet[nullable Object] */ +val* poset___poset__POSetElement___froms(val* self) { +val* var /* : HashSet[nullable Object] */; +val* var1 /* : HashSet[nullable Object] */; +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); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 390); show_backtrace(1); } -var1 = var3; -RET_LABEL2:(void)0; -} 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___dtos].val; /* _dtos on */ +/* method poset#POSetElement#dtos for (self: POSetElement[nullable Object]): HashSet[nullable Object] */ +val* poset___poset__POSetElement___dtos(val* self) { +val* var /* : HashSet[nullable Object] */; +val* var1 /* : HashSet[nullable Object] */; +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); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 391); show_backtrace(1); } var = var1; RET_LABEL:; return var; } -/* method poset#POSetElement#dtos for (self: Object): HashSet[Object] */ -val* VIRTUAL_poset__POSetElement__dtos(val* self) { -val* var /* : HashSet[Object] */; -val* var1 /* : HashSet[Object] */; -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; -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___dfroms].val; /* _dfroms on */ +/* method poset#POSetElement#dfroms for (self: POSetElement[nullable Object]): HashSet[nullable Object] */ +val* poset___poset__POSetElement___dfroms(val* self) { +val* var /* : HashSet[nullable Object] */; +val* var1 /* : HashSet[nullable Object] */; +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); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 392); show_backtrace(1); } var = var1; RET_LABEL:; return var; } -/* method poset#POSetElement#dfroms for (self: Object): HashSet[Object] */ -val* VIRTUAL_poset__POSetElement__dfroms(val* self) { -val* var /* : HashSet[Object] */; -val* var1 /* : HashSet[Object] */; -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; -RET_LABEL:; -return var; -} -/* method poset#POSetElement#count for (self: POSetElement[Object]): Int */ -long poset__POSetElement__count(val* self) { +/* method poset#POSetElement#count for (self: POSetElement[nullable Object]): Int */ +long poset___poset__POSetElement___count(val* self) { long var /* : Int */; long var1 /* : Int */; -var1 = self->attrs[COLOR_poset__POSetElement___count].l; /* _count on */ +var1 = self->attrs[COLOR_poset__POSetElement___count].l; /* _count on */ var = var1; RET_LABEL:; return var; } -/* method poset#POSetElement#count for (self: Object): Int */ -long VIRTUAL_poset__POSetElement__count(val* self) { -long var /* : Int */; -long var1 /* : Int */; -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; +/* method poset#POSetElement#count= for (self: POSetElement[nullable Object], Int) */ +void poset___poset__POSetElement___count_61d(val* self, long p0) { +self->attrs[COLOR_poset__POSetElement___count].l = p0; /* _count on */ RET_LABEL:; -return var; } -/* method poset#POSetElement#greaters for (self: POSetElement[Object]): Collection[Object] */ -val* poset__POSetElement__greaters(val* self) { -val* var /* : Collection[Object] */; -val* var1 /* : HashSet[Object] */; -val* var3 /* : HashSet[Object] */; +/* method poset#POSetElement#greaters for (self: POSetElement[nullable Object]): Collection[nullable Object] */ +val* poset___poset__POSetElement___greaters(val* self) { +val* var /* : Collection[nullable Object] */; +val* var1 /* : HashSet[nullable Object] */; +val* var3 /* : HashSet[nullable Object] */; { -{ /* Inline poset#POSetElement#tos (self) on */ -var3 = self->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ +{ /* 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); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 389); show_backtrace(1); } var1 = var3; @@ -1514,26 +1401,17 @@ goto RET_LABEL; RET_LABEL:; return var; } -/* method poset#POSetElement#greaters for (self: Object): Collection[Object] */ -val* VIRTUAL_poset__POSetElement__greaters(val* self) { -val* var /* : Collection[Object] */; -val* var1 /* : Collection[Object] */; -var1 = poset__POSetElement__greaters(self); -var = var1; -RET_LABEL:; -return var; -} -/* method poset#POSetElement#direct_greaters for (self: POSetElement[Object]): Collection[Object] */ -val* poset__POSetElement__direct_greaters(val* self) { -val* var /* : Collection[Object] */; -val* var1 /* : HashSet[Object] */; -val* var3 /* : HashSet[Object] */; +/* method poset#POSetElement#direct_greaters for (self: POSetElement[nullable Object]): Collection[nullable Object] */ +val* poset___poset__POSetElement___direct_greaters(val* self) { +val* var /* : Collection[nullable Object] */; +val* var1 /* : HashSet[nullable Object] */; +val* var3 /* : HashSet[nullable Object] */; { -{ /* Inline poset#POSetElement#dtos (self) on */ -var3 = self->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on */ +{ /* 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); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 391); show_backtrace(1); } var1 = var3; @@ -1545,26 +1423,17 @@ goto RET_LABEL; RET_LABEL:; return var; } -/* method poset#POSetElement#direct_greaters for (self: Object): Collection[Object] */ -val* VIRTUAL_poset__POSetElement__direct_greaters(val* self) { -val* var /* : Collection[Object] */; -val* var1 /* : Collection[Object] */; -var1 = poset__POSetElement__direct_greaters(self); -var = var1; -RET_LABEL:; -return var; -} -/* method poset#POSetElement#smallers for (self: POSetElement[Object]): Collection[Object] */ -val* poset__POSetElement__smallers(val* self) { -val* var /* : Collection[Object] */; -val* var1 /* : HashSet[Object] */; -val* var3 /* : HashSet[Object] */; +/* method poset#POSetElement#smallers for (self: POSetElement[nullable Object]): Collection[nullable Object] */ +val* poset___poset__POSetElement___smallers(val* self) { +val* var /* : Collection[nullable Object] */; +val* var1 /* : HashSet[nullable Object] */; +val* var3 /* : HashSet[nullable Object] */; { -{ /* Inline poset#POSetElement#froms (self) on */ -var3 = self->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on */ +{ /* 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); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 390); show_backtrace(1); } var1 = var3; @@ -1576,26 +1445,17 @@ goto RET_LABEL; RET_LABEL:; return var; } -/* method poset#POSetElement#smallers for (self: Object): Collection[Object] */ -val* VIRTUAL_poset__POSetElement__smallers(val* self) { -val* var /* : Collection[Object] */; -val* var1 /* : Collection[Object] */; -var1 = poset__POSetElement__smallers(self); -var = var1; -RET_LABEL:; -return var; -} -/* method poset#POSetElement#direct_smallers for (self: POSetElement[Object]): Collection[Object] */ -val* poset__POSetElement__direct_smallers(val* self) { -val* var /* : Collection[Object] */; -val* var1 /* : HashSet[Object] */; -val* var3 /* : HashSet[Object] */; +/* method poset#POSetElement#direct_smallers for (self: POSetElement[nullable Object]): Collection[nullable Object] */ +val* poset___poset__POSetElement___direct_smallers(val* self) { +val* var /* : Collection[nullable Object] */; +val* var1 /* : HashSet[nullable Object] */; +val* var3 /* : HashSet[nullable Object] */; { -{ /* Inline poset#POSetElement#dfroms (self) on */ -var3 = self->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on */ +{ /* 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); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 392); show_backtrace(1); } var1 = var3; @@ -1607,50 +1467,47 @@ goto RET_LABEL; RET_LABEL:; return var; } -/* method poset#POSetElement#direct_smallers for (self: Object): Collection[Object] */ -val* VIRTUAL_poset__POSetElement__direct_smallers(val* self) { -val* var /* : Collection[Object] */; -val* var1 /* : Collection[Object] */; -var1 = poset__POSetElement__direct_smallers(self); -var = var1; -RET_LABEL:; -return var; -} -/* method poset#POSetElement#<= for (self: POSetElement[Object], Object): Bool */ -short int poset__POSetElement___60d_61d(val* self, val* p0) { +/* method poset#POSetElement#<= for (self: POSetElement[nullable Object], nullable Object): Bool */ +short int poset___poset__POSetElement____60d_61d(val* self, val* p0) { short int var /* : Bool */; short int var1 /* : Bool */; int cltype; int idtype; const struct type* type_struct; +short int is_nullable; const char* var_class_name; -val* var_t /* var t: Object */; -val* var2 /* : HashSet[Object] */; -val* var4 /* : HashSet[Object] */; +val* var_t /* var t: nullable Object */; +val* var2 /* : HashSet[nullable Object] */; +val* var4 /* : HashSet[nullable 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]; +/* Covariant cast for argument 0 (t) isa E */ +/* isa E */ +type_struct = self->type->resolution_table->types[COLOR_poset__POSetElement___35dE]; cltype = type_struct->color; idtype = type_struct->id; +is_nullable = type_struct->is_nullable; +if(p0 == NULL) { +var1 = is_nullable; +} else { 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`", "POSetElement#0", var_class_name); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 229); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 448); show_backtrace(1); } var_t = p0; { -{ /* Inline poset#POSetElement#tos (self) on */ -var4 = self->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on */ +{ /* 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); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 389); show_backtrace(1); } var2 = var4; @@ -1658,81 +1515,75 @@ RET_LABEL3:(void)0; } } { -var5 = hash_collection__HashSet__has(var2, var_t); +var5 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var2, var_t); } var = var5; goto RET_LABEL; RET_LABEL:; return var; } -/* method poset#POSetElement#<= for (self: Object, Object): Bool */ -short int VIRTUAL_poset__POSetElement___60d_61d(val* self, val* p0) { -short int var /* : Bool */; -short int var1 /* : Bool */; -var1 = poset__POSetElement___60d_61d(self, p0); -var = var1; -RET_LABEL:; -return var; -} -/* method poset#POSetElement#< for (self: POSetElement[Object], Object): Bool */ -short int poset__POSetElement___60d(val* self, val* p0) { +/* method poset#POSetElement#< for (self: POSetElement[nullable Object], nullable Object): Bool */ +short int poset___poset__POSetElement____60d(val* self, val* p0) { short int var /* : Bool */; short int var1 /* : Bool */; int cltype; int idtype; const struct type* type_struct; +short int is_nullable; const char* var_class_name; -val* var_t /* var t: Object */; +val* var_t /* var t: nullable Object */; short int var2 /* : Bool */; -val* var3 /* : Object */; -val* var5 /* : Object */; +val* var3 /* : nullable Object */; +val* var5 /* : nullable Object */; short int var6 /* : Bool */; short int var7 /* : Bool */; short int var_ /* var : Bool */; -val* var8 /* : HashSet[Object] */; -val* var10 /* : HashSet[Object] */; +val* var8 /* : HashSet[nullable Object] */; +val* var10 /* : HashSet[nullable 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]; +/* Covariant cast for argument 0 (t) isa E */ +/* isa E */ +type_struct = self->type->resolution_table->types[COLOR_poset__POSetElement___35dE]; cltype = type_struct->color; idtype = type_struct->id; +is_nullable = type_struct->is_nullable; +if(p0 == NULL) { +var1 = is_nullable; +} else { 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`", "POSetElement#0", var_class_name); -PRINT_ERROR(" (%s:%d)\n", "lib/poset.nit", 235); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 463); show_backtrace(1); } var_t = p0; { -{ /* 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); -} +{ /* Inline poset#POSetElement#element (self) on */ +var5 = self->attrs[COLOR_poset__POSetElement___element].val; /* _element on */ var3 = var5; RET_LABEL4:(void)0; } } -{ -var7 = ((short int (*)(val*, val*))(var_t->class->vft[COLOR_kernel__Object___33d_61d]))(var_t, var3) /* != on */; +if (var_t == NULL) { +var6 = (var3 != NULL); +} else { +var7 = ((short int (*)(val* self, val* p0))(var_t->class->vft[COLOR_standard__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 */ +{ /* 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); +PRINT_ERROR(" (%s:%d)\n", FILE_poset, 389); show_backtrace(1); } var8 = var10; @@ -1740,7 +1591,7 @@ RET_LABEL9:(void)0; } } { -var11 = hash_collection__HashSet__has(var8, var_t); +var11 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var8, var_t); } var2 = var11; } else { @@ -1751,113 +1602,10 @@ goto RET_LABEL; RET_LABEL:; return var; } -/* method poset#POSetElement#< for (self: Object, Object): Bool */ -short int VIRTUAL_poset__POSetElement___60d(val* self, val* p0) { -short int var /* : Bool */; -short int var1 /* : Bool */; -var1 = poset__POSetElement___60d(self, p0); -var = var1; -RET_LABEL:; -return var; -} -/* method poset#POSetElement#init for (self: POSetElement[Object], POSet[Object], Object, Int) */ -void poset__POSetElement__init(val* self, val* p0, val* p1, long p2) { -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]; -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_struct4 = self->type->resolution_table->types[COLOR_poset__POSetElement_FT0]; -cltype2 = type_struct4->color; -idtype3 = type_struct4->id; -if(cltype2 >= p1->type->table_size) { -var1 = 0; -} else { -var1 = p1->type->type_table[cltype2] == idtype3; -} -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___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) { -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; +/* method poset#POSetElement#init for (self: POSetElement[nullable Object]) */ +void poset___poset__POSetElement___standard__kernel__Object__init(val* self) { +{ +((void (*)(val* self))(self->class->vft[COLOR_poset___poset__POSetElement___standard__kernel__Object__init]))(self) /* init on */; } RET_LABEL:; }