X-Git-Url: http://nitlanguage.org diff --git a/c_src/list.sep.1.c b/c_src/list.sep.1.c index cee3f3d..6afd41c 100644 --- a/c_src/list.sep.1.c +++ b/c_src/list.sep.1.c @@ -5,13 +5,26 @@ val* var /* : nullable Object */; long var_index /* var index: Int */; val* var1 /* : nullable ListNode[nullable Object] */; val* var2 /* : nullable Object */; +val* var4 /* : nullable Object */; var_index = p0; -var1 = ((val* (*)(val*, long))(self->class->vft[COLOR_list__List__get_node]))(self, var_index) /* get_node on */; +{ +var1 = list__List__get_node(self, var_index); +} if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/collection/list.nit", 22); -exit(1); +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 24); +show_backtrace(1); } else { -var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Container__item]))(var1) /* item on */; +{ /* Inline abstract_collection#Container#item (var1) on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/abstract_collection.nit", 200); +show_backtrace(1); +} +var4 = var1->attrs[COLOR_abstract_collection__Container___item].val; /* _item on */ +var2 = var4; +RET_LABEL3:(void)0; +} } var = var2; goto RET_LABEL; @@ -34,11 +47,18 @@ int cltype; int idtype; const struct type* type_struct; short int is_nullable; +const char* var_class_name; long var_index /* var index: Int */; val* var_item /* var item: nullable Object */; val* var1 /* : nullable ListNode[nullable Object] */; -/* Covariant cast for argument 1 (item) isa Sequence#0 */ -/* isa Sequence#0 */ +short int var3 /* : Bool */; +int cltype4; +int idtype5; +const struct type* type_struct6; +short int is_nullable7; +const char* var_class_name8; +/* Covariant cast for argument 1 (item) isa E */ +/* isa E */ type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Sequence_FT0]; cltype = type_struct->color; idtype = type_struct->id; @@ -52,24 +72,58 @@ var = 0; var = p1->type->type_table[cltype] == idtype; } } -if (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/list.nit", 24); -exit(1); +if (unlikely(!var)) { +var_class_name = p1 == NULL ? "null" : p1->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 26); +show_backtrace(1); } var_index = p0; var_item = p1; -var1 = ((val* (*)(val*, long))(self->class->vft[COLOR_list__List__get_node]))(self, var_index) /* get_node on */; +{ +var1 = list__List__get_node(self, var_index); +} if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/collection/list.nit", 24); -exit(1); +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 26); +show_backtrace(1); +} else { +{ /* Inline abstract_collection#Container#item= (var1,var_item) on */ +/* Covariant cast for argument 0 (item) isa E */ +/* isa E */ +type_struct6 = var1->type->resolution_table->types[COLOR_abstract_collection__Container_FT0]; +cltype4 = type_struct6->color; +idtype5 = type_struct6->id; +is_nullable7 = type_struct6->is_nullable; +if(var_item == NULL) { +var3 = is_nullable7; } else { -((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__Container__item_61d]))(var1, var_item) /* item= on */; +if(cltype4 >= var_item->type->table_size) { +var3 = 0; +} else { +var3 = var_item->type->type_table[cltype4] == idtype5; +} +} +if (unlikely(!var3)) { +var_class_name8 = var_item == NULL ? "null" : var_item->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name8); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/abstract_collection.nit", 200); +show_backtrace(1); +} +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/abstract_collection.nit", 200); +show_backtrace(1); +} +var1->attrs[COLOR_abstract_collection__Container___item].val = var_item; /* _item on */ +RET_LABEL2:(void)0; +} } RET_LABEL:; } /* method list#List#[]= for (self: Object, Int, nullable Object) */ void VIRTUAL_list__List___91d_93d_61d(val* self, long p0, val* p1) { -list__List___91d_93d_61d(self, p0, p1); +list__List___91d_93d_61d(self, p0, p1); /* Direct call list#List#[]= on */ RET_LABEL:; } /* method list#List#first for (self: List[nullable Object]): nullable Object */ @@ -77,12 +131,23 @@ val* list__List__first(val* self) { val* var /* : nullable Object */; val* var1 /* : nullable ListNode[nullable Object] */; val* var2 /* : nullable Object */; +val* var4 /* : nullable Object */; var1 = self->attrs[COLOR_list__List___head].val; /* _head on */ if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/collection/list.nit", 27); -exit(1); +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 29); +show_backtrace(1); } else { -var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Container__item]))(var1) /* item on */; +{ /* Inline abstract_collection#Container#item (var1) on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/abstract_collection.nit", 200); +show_backtrace(1); +} +var4 = var1->attrs[COLOR_abstract_collection__Container___item].val; /* _item on */ +var2 = var4; +RET_LABEL3:(void)0; +} } var = var2; goto RET_LABEL; @@ -105,10 +170,17 @@ int cltype; int idtype; const struct type* type_struct; short int is_nullable; +const char* var_class_name; val* var_e /* var e: nullable Object */; val* var1 /* : nullable ListNode[nullable Object] */; -/* Covariant cast for argument 0 (e) isa Sequence#0 */ -/* isa Sequence#0 */ +short int var3 /* : Bool */; +int cltype4; +int idtype5; +const struct type* type_struct6; +short int is_nullable7; +const char* var_class_name8; +/* Covariant cast for argument 0 (e) isa E */ +/* isa E */ type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Sequence_FT0]; cltype = type_struct->color; idtype = type_struct->id; @@ -122,23 +194,55 @@ var = 0; var = p0->type->type_table[cltype] == idtype; } } -if (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/list.nit", 29); -exit(1); +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", "../lib/standard/collection/list.nit", 31); +show_backtrace(1); } var_e = p0; var1 = self->attrs[COLOR_list__List___head].val; /* _head on */ if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/collection/list.nit", 30); -exit(1); +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 32); +show_backtrace(1); +} else { +{ /* Inline abstract_collection#Container#item= (var1,var_e) on */ +/* Covariant cast for argument 0 (item) isa E */ +/* isa E */ +type_struct6 = var1->type->resolution_table->types[COLOR_abstract_collection__Container_FT0]; +cltype4 = type_struct6->color; +idtype5 = type_struct6->id; +is_nullable7 = type_struct6->is_nullable; +if(var_e == NULL) { +var3 = is_nullable7; } else { -((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__Container__item_61d]))(var1, var_e) /* item= on */; +if(cltype4 >= var_e->type->table_size) { +var3 = 0; +} else { +var3 = var_e->type->type_table[cltype4] == idtype5; +} +} +if (unlikely(!var3)) { +var_class_name8 = var_e == NULL ? "null" : var_e->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name8); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/abstract_collection.nit", 200); +show_backtrace(1); +} +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/abstract_collection.nit", 200); +show_backtrace(1); +} +var1->attrs[COLOR_abstract_collection__Container___item].val = var_e; /* _item on */ +RET_LABEL2:(void)0; +} } RET_LABEL:; } /* method list#List#first= for (self: Object, nullable Object) */ void VIRTUAL_list__List__first_61d(val* self, val* p0) { -list__List__first_61d(self, p0); +list__List__first_61d(self, p0); /* Direct call list#List#first= on */ RET_LABEL:; } /* method list#List#last for (self: List[nullable Object]): nullable Object */ @@ -146,12 +250,23 @@ val* list__List__last(val* self) { val* var /* : nullable Object */; val* var1 /* : nullable ListNode[nullable Object] */; val* var2 /* : nullable Object */; +val* var4 /* : nullable Object */; var1 = self->attrs[COLOR_list__List___tail].val; /* _tail on */ if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/collection/list.nit", 33); -exit(1); +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 35); +show_backtrace(1); } else { -var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Container__item]))(var1) /* item on */; +{ /* Inline abstract_collection#Container#item (var1) on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/abstract_collection.nit", 200); +show_backtrace(1); +} +var4 = var1->attrs[COLOR_abstract_collection__Container___item].val; /* _item on */ +var2 = var4; +RET_LABEL3:(void)0; +} } var = var2; goto RET_LABEL; @@ -167,55 +282,16 @@ var = var1; RET_LABEL:; return var; } -/* method list#List#last= for (self: List[nullable Object], nullable Object) */ -void list__List__last_61d(val* self, val* p0) { -short int var /* : Bool */; -int cltype; -int idtype; -const struct type* type_struct; -short int is_nullable; -val* var_e /* var e: nullable Object */; -val* var1 /* : nullable ListNode[nullable Object] */; -/* Covariant cast for argument 0 (e) isa Sequence#0 */ -/* isa Sequence#0 */ -type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Sequence_FT0]; -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 (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/list.nit", 35); -exit(1); -} -var_e = p0; -var1 = self->attrs[COLOR_list__List___tail].val; /* _tail on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/collection/list.nit", 36); -exit(1); -} else { -((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__Container__item_61d]))(var1, var_e) /* item= on */; -} -RET_LABEL:; -} -/* method list#List#last= for (self: Object, nullable Object) */ -void VIRTUAL_list__List__last_61d(val* self, val* p0) { -list__List__last_61d(self, p0); -RET_LABEL:; -} /* method list#List#is_empty for (self: List[nullable Object]): Bool */ short int list__List__is_empty(val* self) { short int var /* : Bool */; val* var1 /* : nullable ListNode[nullable Object] */; val* var2 /* : null */; short int var3 /* : Bool */; +short int var4 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var6 /* : Bool */; +short int var8 /* : Bool */; var1 = self->attrs[COLOR_list__List___head].val; /* _head on */ var2 = NULL; if (var1 == NULL) { @@ -223,6 +299,23 @@ var3 = 1; /* is null */ } else { var3 = 0; /* arg is null but recv is not */ } +if (0) { +{ /* Inline kernel#Object#== (var1,var2) on */ +var_other = var2; +{ +{ /* Inline kernel#Object#is_same_instance (var1,var_other) on */ +var8 = var1 == var_other; +var6 = var8; +goto RET_LABEL7; +RET_LABEL7:(void)0; +} +} +var4 = var6; +goto RET_LABEL5; +RET_LABEL5:(void)0; +} +var3 = var4; +} var = var3; goto RET_LABEL; RET_LABEL:; @@ -246,10 +339,20 @@ val* var2 /* : nullable ListNode[nullable Object] */; val* var_t /* var t: nullable ListNode[nullable Object] */; val* var3 /* : null */; short int var4 /* : Bool */; -long var5 /* : Int */; -long var6 /* : Int */; -long var8 /* : Int */; -val* var9 /* : nullable ListNode[nullable Object] */; +short int var5 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var7 /* : Bool */; +short int var8 /* : Bool */; +short int var9 /* : Bool */; +long var10 /* : Int */; +long var11 /* : Int */; +short int var13 /* : Bool */; +int cltype; +int idtype; +const char* var_class_name; +long var14 /* : Int */; +val* var15 /* : nullable ListNode[nullable Object] */; +val* var17 /* : nullable ListNode[nullable Object] */; var1 = 0; var_l = var1; var2 = self->attrs[COLOR_list__List___head].val; /* _head on */ @@ -261,18 +364,51 @@ var4 = 0; /* is null */ } else { var4 = 1; /* arg is null and recv is not */ } -if (!var4) break; -var5 = 1; -{ /* Inline kernel#Int#+ (var_l,var5) */ -var8 = var_l + var5; -var6 = var8; -goto RET_LABEL7; -RET_LABEL7:(void)0; +if (0) { +{ /* Inline kernel#Object#!= (var_t,var3) on */ +var_other = var3; +{ +var8 = ((short int (*)(val*, val*))(var_t->class->vft[COLOR_kernel__Object___61d_61d]))(var_t, var_other) /* == on */; +var7 = var8; +} +var9 = !var7; +var5 = var9; +goto RET_LABEL6; +RET_LABEL6:(void)0; +} +var4 = var5; +} +if (var4){ +var10 = 1; +{ +{ /* Inline kernel#Int#+ (var_l,var10) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var13 = 1; /* easy isa OTHER*/ +if (unlikely(!var13)) { +var_class_name = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374); +show_backtrace(1); +} +var14 = var_l + var10; +var11 = var14; +goto RET_LABEL12; +RET_LABEL12:(void)0; +} +} +var_l = var11; +{ +{ /* Inline list#ListNode#next (var_t) on */ +var17 = var_t->attrs[COLOR_list__ListNode___next].val; /* _next on */ +var15 = var17; +RET_LABEL16:(void)0; +} +} +var_t = var15; +} else { +goto BREAK_label; } -var_l = var6; -var9 = ((val* (*)(val*))(var_t->class->vft[COLOR_list__ListNode__next]))(var_t) /* next on */; -var_t = var9; -CONTINUE_label: (void)0; } BREAK_label: (void)0; var = var_l; @@ -297,13 +433,19 @@ int cltype; int idtype; const struct type* type_struct; short int is_nullable; +const char* var_class_name; val* var_e /* var e: nullable Object */; val* var2 /* : nullable ListNode[nullable Object] */; val* var3 /* : nullable ListNode[nullable Object] */; val* var4 /* : null */; short int var5 /* : Bool */; -/* Covariant cast for argument 0 (e) isa Collection#0 */ -/* isa Collection#0 */ +short int var6 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var8 /* : Bool */; +short int var9 /* : Bool */; +short int var10 /* : Bool */; +/* Covariant cast for argument 0 (e) isa E */ +/* isa E */ type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collection_FT0]; cltype = type_struct->color; idtype = type_struct->id; @@ -317,19 +459,37 @@ var1 = 0; var1 = p0->type->type_table[cltype] == idtype; } } -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/list.nit", 55); -exit(1); +if (unlikely(!var1)) { +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", "../lib/standard/collection/list.nit", 57); +show_backtrace(1); } var_e = p0; var2 = self->attrs[COLOR_list__List___head].val; /* _head on */ -var3 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_list__List__search_node_after]))(self, var_e, var2) /* search_node_after on */; +{ +var3 = list__List__search_node_after(self, var_e, var2); +} var4 = NULL; if (var3 == NULL) { var5 = 0; /* is null */ } else { var5 = 1; /* arg is null and recv is not */ } +if (0) { +{ /* Inline kernel#Object#!= (var3,var4) on */ +var_other = var4; +{ +var9 = ((short int (*)(val*, val*))(var3->class->vft[COLOR_kernel__Object___61d_61d]))(var3, var_other) /* == on */; +var8 = var9; +} +var10 = !var8; +var6 = var10; +goto RET_LABEL7; +RET_LABEL7:(void)0; +} +var5 = var6; +} var = var5; goto RET_LABEL; RET_LABEL:; @@ -344,386 +504,360 @@ var = var1; RET_LABEL:; return var; } -/* method list#List#has_only for (self: List[nullable Object], nullable Object): Bool */ -short int list__List__has_only(val* self, val* p0) { +/* method list#List#push for (self: List[nullable Object], nullable Object) */ +void list__List__push(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: nullable Object */; +val* var1 /* : ListNode[nullable Object] */; +val* var_node /* var node: ListNode[nullable Object] */; val* var2 /* : nullable ListNode[nullable Object] */; -val* var_node /* var node: nullable ListNode[nullable Object] */; val* var3 /* : null */; short int var4 /* : Bool */; -val* var5 /* : nullable Object */; -short int var6 /* : Bool */; +short int var5 /* : Bool */; +val* var_other /* var other: nullable Object */; short int var7 /* : Bool */; -val* var8 /* : nullable ListNode[nullable Object] */; short int var9 /* : 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]; +val* var10 /* : nullable ListNode[nullable Object] */; +short int var12 /* : Bool */; +int cltype13; +int idtype14; +const struct type* type_struct15; +const char* var_class_name16; +val* var17 /* : nullable ListNode[nullable Object] */; +short int var19 /* : Bool */; +int cltype20; +int idtype21; +const struct type* type_struct22; +const char* var_class_name23; +/* Covariant cast for argument 0 (e) isa E */ +/* isa E */ +type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Sequence_FT0]; cltype = type_struct->color; idtype = type_struct->id; is_nullable = type_struct->is_nullable; if(p0 == NULL) { -var1 = is_nullable; +var = is_nullable; } else { if(cltype >= p0->type->table_size) { -var1 = 0; +var = 0; } else { -var1 = p0->type->type_table[cltype] == idtype; +var = p0->type->type_table[cltype] == idtype; } } -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/list.nit", 58); -exit(1); +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", "../lib/standard/collection/list.nit", 95); +show_backtrace(1); } var_e = p0; -var2 = self->attrs[COLOR_list__List___head].val; /* _head on */ -var_node = var2; -for(;;) { +var1 = NEW_list__ListNode(self->type->resolution_table->types[COLOR_list__ListNodelist__List_FT0]); +{ +list__ListNode__init(var1, var_e); /* Direct call list#ListNode#init on */ +} +var_node = var1; +var2 = self->attrs[COLOR_list__List___tail].val; /* _tail on */ var3 = NULL; -if (var_node == NULL) { -var4 = 0; /* is null */ +if (var2 == NULL) { +var4 = 1; /* is null */ } else { -var4 = 1; /* arg is null and recv is not */ +var4 = 0; /* arg is null but recv is not */ } -if (!var4) break; -var5 = ((val* (*)(val*))(var_node->class->vft[COLOR_abstract_collection__Container__item]))(var_node) /* item on */; -if (var5 == NULL) { -var6 = (var_e != NULL); -} else { -var6 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___33d_61d]))(var5, var_e) /* != on */; +if (0) { +{ /* Inline kernel#Object#== (var2,var3) on */ +var_other = var3; +{ +{ /* Inline kernel#Object#is_same_instance (var2,var_other) on */ +var9 = var2 == var_other; +var7 = var9; +goto RET_LABEL8; +RET_LABEL8:(void)0; } -if (var6){ -var7 = 0; -var = var7; -goto RET_LABEL; +} +var5 = var7; +goto RET_LABEL6; +RET_LABEL6:(void)0; +} +var4 = var5; +} +if (var4){ +self->attrs[COLOR_list__List___head].val = var_node; /* _head on */ +} else { +var10 = self->attrs[COLOR_list__List___tail].val; /* _tail on */ +if (var10 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 102); +show_backtrace(1); +} else { +{ /* Inline list#ListNode#next= (var10,var_node) on */ +/* Covariant cast for argument 0 (next) isa nullable ListNode[E] */ +/* isa nullable ListNode[E] */ +type_struct15 = var10->type->resolution_table->types[COLOR_nullable_list__ListNodelist__ListNode_FT0]; +cltype13 = type_struct15->color; +idtype14 = type_struct15->id; +if(cltype13 >= var_node->type->table_size) { +var12 = 0; +} else { +var12 = var_node->type->type_table[cltype13] == idtype14; +} +if (unlikely(!var12)) { +var_class_name16 = var_node == NULL ? "null" : var_node->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name16); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 346); +show_backtrace(1); +} +if (unlikely(var10 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 346); +show_backtrace(1); +} +var10->attrs[COLOR_list__ListNode___next].val = var_node; /* _next on */ +RET_LABEL11:(void)0; +} +} +var17 = self->attrs[COLOR_list__List___tail].val; /* _tail on */ +{ +{ /* Inline list#ListNode#prev= (var_node,var17) on */ +/* Covariant cast for argument 0 (prev) isa nullable ListNode[E] */ +/* isa nullable ListNode[E] */ +type_struct22 = var_node->type->resolution_table->types[COLOR_nullable_list__ListNodelist__ListNode_FT0]; +cltype20 = type_struct22->color; +idtype21 = type_struct22->id; +if(var17 == NULL) { +var19 = 1; } else { +if(cltype20 >= var17->type->table_size) { +var19 = 0; +} else { +var19 = var17->type->type_table[cltype20] == idtype21; } -var8 = ((val* (*)(val*))(var_node->class->vft[COLOR_list__ListNode__next]))(var_node) /* next on */; -var_node = var8; -CONTINUE_label: (void)0; } -BREAK_label: (void)0; -var9 = 1; -var = var9; -goto RET_LABEL; +if (unlikely(!var19)) { +var_class_name23 = var17 == NULL ? "null" : var17->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name23); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 349); +show_backtrace(1); +} +var_node->attrs[COLOR_list__ListNode___prev].val = var17; /* _prev on */ +RET_LABEL18:(void)0; +} +} +} +self->attrs[COLOR_list__List___tail].val = var_node; /* _tail on */ RET_LABEL:; -return var; } -/* method list#List#has_only for (self: Object, nullable Object): Bool */ -short int VIRTUAL_list__List__has_only(val* self, val* p0) { -short int var /* : Bool */; -short int var1 /* : Bool */; -var1 = list__List__has_only(self, p0); -var = var1; +/* method list#List#push for (self: Object, nullable Object) */ +void VIRTUAL_list__List__push(val* self, val* p0) { +list__List__push(self, p0); /* Direct call list#List#push on */ RET_LABEL:; -return var; } -/* method list#List#count for (self: List[nullable Object], nullable Object): Int */ -long list__List__count(val* self, val* p0) { -long var /* : Int */; -short int var1 /* : Bool */; +/* method list#List#unshift for (self: List[nullable Object], nullable Object) */ +void list__List__unshift(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; val* var_e /* var e: nullable Object */; -long var2 /* : Int */; -long var_nb /* var nb: Int */; -val* var3 /* : nullable ListNode[nullable Object] */; -val* var_node /* var node: nullable ListNode[nullable Object] */; -val* var4 /* : null */; +val* var1 /* : ListNode[nullable Object] */; +val* var_node /* var node: ListNode[nullable Object] */; +val* var2 /* : nullable ListNode[nullable Object] */; +val* var3 /* : null */; +short int var4 /* : Bool */; short int var5 /* : Bool */; -val* var6 /* : nullable Object */; +val* var_other /* var other: nullable Object */; short int var7 /* : Bool */; -long var8 /* : Int */; -long var9 /* : Int */; -long var11 /* : Int */; -val* var12 /* : nullable ListNode[nullable Object] */; -/* Covariant cast for argument 0 (e) isa Collection#0 */ -/* isa Collection#0 */ -type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collection_FT0]; +short int var9 /* : Bool */; +val* var10 /* : nullable ListNode[nullable Object] */; +short int var12 /* : Bool */; +int cltype13; +int idtype14; +const struct type* type_struct15; +const char* var_class_name16; +val* var17 /* : nullable ListNode[nullable Object] */; +short int var19 /* : Bool */; +int cltype20; +int idtype21; +const struct type* type_struct22; +const char* var_class_name23; +/* Covariant cast for argument 0 (e) isa E */ +/* isa E */ +type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Sequence_FT0]; cltype = type_struct->color; idtype = type_struct->id; is_nullable = type_struct->is_nullable; if(p0 == NULL) { -var1 = is_nullable; +var = is_nullable; } else { if(cltype >= p0->type->table_size) { -var1 = 0; +var = 0; } else { -var1 = p0->type->type_table[cltype] == idtype; +var = p0->type->type_table[cltype] == idtype; } } -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/list.nit", 68); -exit(1); +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", "../lib/standard/collection/list.nit", 108); +show_backtrace(1); } var_e = p0; -var2 = 0; -var_nb = var2; -var3 = self->attrs[COLOR_list__List___head].val; /* _head on */ -var_node = var3; -for(;;) { -var4 = NULL; -if (var_node == NULL) { -var5 = 0; /* is null */ -} else { -var5 = 1; /* arg is null and recv is not */ +var1 = NEW_list__ListNode(self->type->resolution_table->types[COLOR_list__ListNodelist__List_FT0]); +{ +list__ListNode__init(var1, var_e); /* Direct call list#ListNode#init on */ } -if (!var5) break; -var6 = ((val* (*)(val*))(var_node->class->vft[COLOR_abstract_collection__Container__item]))(var_node) /* item on */; -if (var6 == NULL) { -var7 = (var_e != NULL); +var_node = var1; +var2 = self->attrs[COLOR_list__List___head].val; /* _head on */ +var3 = NULL; +if (var2 == NULL) { +var4 = 1; /* is null */ } else { -var7 = ((short int (*)(val*, val*))(var6->class->vft[COLOR_kernel__Object___33d_61d]))(var6, var_e) /* != on */; +var4 = 0; /* arg is null but recv is not */ } -if (var7){ -var8 = 1; -{ /* Inline kernel#Int#+ (var_nb,var8) */ -var11 = var_nb + var8; -var9 = var11; -goto RET_LABEL10; -RET_LABEL10:(void)0; +if (0) { +{ /* Inline kernel#Object#== (var2,var3) on */ +var_other = var3; +{ +{ /* Inline kernel#Object#is_same_instance (var2,var_other) on */ +var9 = var2 == var_other; +var7 = var9; +goto RET_LABEL8; +RET_LABEL8:(void)0; } -var_nb = var9; +} +var5 = var7; +goto RET_LABEL6; +RET_LABEL6:(void)0; +} +var4 = var5; +} +if (var4){ +self->attrs[COLOR_list__List___tail].val = var_node; /* _tail on */ +} else { +var10 = self->attrs[COLOR_list__List___head].val; /* _head on */ +{ +{ /* Inline list#ListNode#next= (var_node,var10) on */ +/* Covariant cast for argument 0 (next) isa nullable ListNode[E] */ +/* isa nullable ListNode[E] */ +type_struct15 = var_node->type->resolution_table->types[COLOR_nullable_list__ListNodelist__ListNode_FT0]; +cltype13 = type_struct15->color; +idtype14 = type_struct15->id; +if(var10 == NULL) { +var12 = 1; } else { +if(cltype13 >= var10->type->table_size) { +var12 = 0; +} else { +var12 = var10->type->type_table[cltype13] == idtype14; } -var12 = ((val* (*)(val*))(var_node->class->vft[COLOR_list__ListNode__next]))(var_node) /* next on */; -var_node = var12; -CONTINUE_label: (void)0; } -BREAK_label: (void)0; -var = var_nb; -goto RET_LABEL; +if (unlikely(!var12)) { +var_class_name16 = var10 == NULL ? "null" : var10->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name16); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 346); +show_backtrace(1); +} +var_node->attrs[COLOR_list__ListNode___next].val = var10; /* _next on */ +RET_LABEL11:(void)0; +} +} +var17 = self->attrs[COLOR_list__List___head].val; /* _head on */ +if (var17 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 116); +show_backtrace(1); +} else { +{ /* Inline list#ListNode#prev= (var17,var_node) on */ +/* Covariant cast for argument 0 (prev) isa nullable ListNode[E] */ +/* isa nullable ListNode[E] */ +type_struct22 = var17->type->resolution_table->types[COLOR_nullable_list__ListNodelist__ListNode_FT0]; +cltype20 = type_struct22->color; +idtype21 = type_struct22->id; +if(cltype20 >= var_node->type->table_size) { +var19 = 0; +} else { +var19 = var_node->type->type_table[cltype20] == idtype21; +} +if (unlikely(!var19)) { +var_class_name23 = var_node == NULL ? "null" : var_node->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name23); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 349); +show_backtrace(1); +} +if (unlikely(var17 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 349); +show_backtrace(1); +} +var17->attrs[COLOR_list__ListNode___prev].val = var_node; /* _prev on */ +RET_LABEL18:(void)0; +} +} +} +self->attrs[COLOR_list__List___head].val = var_node; /* _head on */ RET_LABEL:; -return var; } -/* method list#List#count for (self: Object, nullable Object): Int */ -long VIRTUAL_list__List__count(val* self, val* p0) { -long var /* : Int */; -long var1 /* : Int */; -var1 = list__List__count(self, p0); -var = var1; +/* method list#List#unshift for (self: Object, nullable Object) */ +void VIRTUAL_list__List__unshift(val* self, val* p0) { +list__List__unshift(self, p0); /* Direct call list#List#unshift on */ RET_LABEL:; -return var; } -/* method list#List#slice for (self: List[nullable Object], Int, Int): List[nullable Object] */ -val* list__List__slice(val* self, long p0, long p1) { -val* var /* : List[nullable Object] */; -long var_from /* var from: Int */; -long var_to /* var to: Int */; -short int var1 /* : Bool */; -long var2 /* : Int */; -short int var3 /* : Bool */; -short int var5 /* : Bool */; +/* method list#List#insert for (self: List[nullable Object], nullable Object, Int) */ +void list__List__insert(val* self, val* p0, long p1) { +short int var /* : Bool */; int cltype; int idtype; +const struct type* type_struct; +short int is_nullable; +const char* var_class_name; +val* var_e /* var e: nullable Object */; +long var_i /* var i: Int */; +val* var1 /* : nullable ListNode[nullable Object] */; +val* var_node /* var node: nullable ListNode[nullable Object] */; +val* var2 /* : null */; +short int var3 /* : Bool */; +short int var4 /* : Bool */; +val* var_other /* var other: nullable Object */; short int var6 /* : Bool */; -short int var_ /* var : Bool */; -long var7 /* : Int */; short int var8 /* : Bool */; -short int var10 /* : Bool */; -int cltype11; -int idtype12; -short int var13 /* : Bool */; +val* var9 /* : ListNode[nullable Object] */; +val* var_nnode /* var nnode: ListNode[nullable Object] */; +val* var10 /* : nullable ListNode[nullable Object] */; +val* var12 /* : nullable ListNode[nullable Object] */; +val* var_next /* var next: nullable ListNode[nullable Object] */; +val* var13 /* : null */; short int var14 /* : Bool */; short int var15 /* : Bool */; -long var16 /* : Int */; short int var17 /* : Bool */; short int var19 /* : Bool */; -int cltype20; -int idtype21; -short int var22 /* : Bool */; -short int var_23 /* var : Bool */; -long var24 /* : Int */; -short int var25 /* : Bool */; +short int var21 /* : Bool */; +int cltype22; +int idtype23; +const struct type* type_struct24; +const char* var_class_name25; short int var27 /* : Bool */; int cltype28; int idtype29; -short int var30 /* : Bool */; -short int var_31 /* var : Bool */; -short int var32 /* : Bool */; -short int var34 /* : Bool */; -int cltype35; -int idtype36; -short int var37 /* : Bool */; -val* var38 /* : List[nullable Object] */; -val* var_list /* var list: List[nullable Object] */; +const struct type* type_struct30; +const char* var_class_name31; +short int var33 /* : Bool */; +int cltype34; +int idtype35; +const struct type* type_struct36; +const char* var_class_name37; short int var39 /* : Bool */; -short int var41 /* : Bool */; -int cltype42; -int idtype43; -short int var44 /* : Bool */; -val* var45 /* : nullable Object */; -long var46 /* : Int */; -long var47 /* : Int */; -long var49 /* : Int */; -var_from = p0; -var_to = p1; -var2 = 0; -{ /* Inline kernel#Int#>= (var_from,var2) */ -/* Covariant cast for argument 0 (i) isa OTHER */ -/* isa OTHER */ -var5 = 1; /* easy isa OTHER*/ -if (!var5) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 258); -exit(1); -} -var6 = var_from >= var2; -var3 = var6; -goto RET_LABEL4; -RET_LABEL4:(void)0; -} -var_ = var3; -if (var3){ -var7 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on */; -{ /* Inline kernel#Int#< (var_from,var7) */ -/* Covariant cast for argument 0 (i) isa OTHER */ -/* isa OTHER */ -var10 = 1; /* easy isa OTHER*/ -if (!var10) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 257); -exit(1); -} -var13 = var_from < var7; -var8 = var13; -goto RET_LABEL9; -RET_LABEL9:(void)0; -} -var1 = var8; -} else { -var1 = var_; -} -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "lib/standard/collection/list.nit", 81); -exit(1); -} -var16 = 0; -{ /* Inline kernel#Int#>= (var_to,var16) */ -/* Covariant cast for argument 0 (i) isa OTHER */ -/* isa OTHER */ -var19 = 1; /* easy isa OTHER*/ -if (!var19) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 258); -exit(1); -} -var22 = var_to >= var16; -var17 = var22; -goto RET_LABEL18; -RET_LABEL18:(void)0; -} -var_23 = var17; -if (var17){ -var24 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on */; -{ /* Inline kernel#Int#< (var_to,var24) */ -/* Covariant cast for argument 0 (i) isa OTHER */ -/* isa OTHER */ -var27 = 1; /* easy isa OTHER*/ -if (!var27) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 257); -exit(1); -} -var30 = var_to < var24; -var25 = var30; -goto RET_LABEL26; -RET_LABEL26:(void)0; -} -var15 = var25; -} else { -var15 = var_23; -} -var_31 = var15; -if (var15){ -{ /* Inline kernel#Int#<= (var_from,var_to) */ -/* Covariant cast for argument 0 (i) isa OTHER */ -/* isa OTHER */ -var34 = 1; /* easy isa OTHER*/ -if (!var34) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 256); -exit(1); -} -var37 = var_from <= var_to; -var32 = var37; -goto RET_LABEL33; -RET_LABEL33:(void)0; -} -var14 = var32; -} else { -var14 = var_31; -} -if (!var14) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "lib/standard/collection/list.nit", 82); -exit(1); -} -var38 = NEW_list__List(self->type->resolution_table->types[COLOR_list__Listlist__List_FT0]); -((void (*)(val*))(var38->class->vft[COLOR_list__List__init]))(var38) /* init on */; -CHECK_NEW_list__List(var38); -var_list = var38; -for(;;) { -{ /* Inline kernel#Int#<= (var_from,var_to) */ -/* Covariant cast for argument 0 (i) isa OTHER */ -/* isa OTHER */ -var41 = 1; /* easy isa OTHER*/ -if (!var41) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 256); -exit(1); -} -var44 = var_from <= var_to; -var39 = var44; -goto RET_LABEL40; -RET_LABEL40:(void)0; -} -if (!var39) break; -var45 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_from) /* [] on */; -((void (*)(val*, val*))(var_list->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_list, var45) /* add on */; -var46 = 1; -{ /* Inline kernel#Int#+ (var_from,var46) */ -var49 = var_from + var46; -var47 = var49; -goto RET_LABEL48; -RET_LABEL48:(void)0; -} -var_from = var47; -CONTINUE_label: (void)0; -} -BREAK_label: (void)0; -var = var_list; -goto RET_LABEL; -RET_LABEL:; -return var; -} -/* method list#List#slice for (self: Object, Int, Int): List[nullable Object] */ -val* VIRTUAL_list__List__slice(val* self, long p0, long p1) { -val* var /* : List[nullable Object] */; -val* var1 /* : List[nullable Object] */; -var1 = list__List__slice(self, p0, p1); -var = var1; -RET_LABEL:; -return var; -} -/* method list#List#push for (self: List[nullable Object], nullable Object) */ -void list__List__push(val* self, val* p0) { -short int var /* : Bool */; -int cltype; -int idtype; -const struct type* type_struct; -short int is_nullable; -val* var_e /* var e: nullable Object */; -val* var1 /* : ListNode[nullable Object] */; -val* var_node /* var node: ListNode[nullable Object] */; -val* var2 /* : nullable ListNode[nullable Object] */; -val* var3 /* : null */; -short int var4 /* : Bool */; -val* var5 /* : nullable ListNode[nullable Object] */; -val* var6 /* : nullable ListNode[nullable Object] */; -/* Covariant cast for argument 0 (e) isa Sequence#0 */ -/* isa Sequence#0 */ +int cltype40; +int idtype41; +const struct type* type_struct42; +const char* var_class_name43; +/* Covariant cast for argument 0 (e) isa E */ +/* isa E */ type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Sequence_FT0]; cltype = type_struct->color; idtype = type_struct->id; @@ -737,197 +871,185 @@ var = 0; var = p0->type->type_table[cltype] == idtype; } } -if (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/list.nit", 93); -exit(1); +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", "../lib/standard/collection/list.nit", 121); +show_backtrace(1); } var_e = p0; -var1 = NEW_list__ListNode(self->type->resolution_table->types[COLOR_list__ListNodelist__List_FT0]); -((void (*)(val*, val*))(var1->class->vft[COLOR_list__ListNode__init]))(var1, var_e) /* init on */; -CHECK_NEW_list__ListNode(var1); +var_i = p1; +{ +var1 = list__List__get_node(self, var_i); +} var_node = var1; -var2 = self->attrs[COLOR_list__List___tail].val; /* _tail on */ -var3 = NULL; -if (var2 == NULL) { -var4 = 1; /* is null */ +var2 = NULL; +if (var_node == NULL) { +var3 = 1; /* is null */ } else { -var4 = 0; /* arg is null but recv is not */ +var3 = 0; /* arg is null but recv is not */ } -if (var4){ -self->attrs[COLOR_list__List___head].val = var_node; /* _head on */ -} else { -var5 = self->attrs[COLOR_list__List___tail].val; /* _tail on */ -if (var5 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/collection/list.nit", 100); -exit(1); -} else { -((void (*)(val*, val*))(var5->class->vft[COLOR_list__ListNode__next_61d]))(var5, var_node) /* next= on */; +if (0) { +{ /* Inline kernel#Object#== (var_node,var2) on */ +var_other = var2; +{ +{ /* Inline kernel#Object#is_same_instance (var_node,var_other) on */ +var8 = var_node == var_other; +var6 = var8; +goto RET_LABEL7; +RET_LABEL7:(void)0; } -var6 = self->attrs[COLOR_list__List___tail].val; /* _tail on */ -((void (*)(val*, val*))(var_node->class->vft[COLOR_list__ListNode__prev_61d]))(var_node, var6) /* prev= on */; } -self->attrs[COLOR_list__List___tail].val = var_node; /* _tail on */ -RET_LABEL:; +var4 = var6; +goto RET_LABEL5; +RET_LABEL5:(void)0; } -/* method list#List#push for (self: Object, nullable Object) */ -void VIRTUAL_list__List__push(val* self, val* p0) { -list__List__push(self, p0); -RET_LABEL:; +var3 = var4; } -/* method list#List#unshift for (self: List[nullable Object], nullable Object) */ -void list__List__unshift(val* self, val* p0) { -short int var /* : Bool */; -int cltype; -int idtype; -const struct type* type_struct; -short int is_nullable; -val* var_e /* var e: nullable Object */; -val* var1 /* : ListNode[nullable Object] */; -val* var_node /* var node: ListNode[nullable Object] */; -val* var2 /* : nullable ListNode[nullable Object] */; -val* var3 /* : null */; -short int var4 /* : Bool */; -val* var5 /* : nullable ListNode[nullable Object] */; -val* var6 /* : nullable ListNode[nullable Object] */; -/* Covariant cast for argument 0 (e) isa Sequence#0 */ -/* isa Sequence#0 */ -type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Sequence_FT0]; -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; +if (var3){ +{ +list__List__push(self, var_e); /* Direct call list#List#push on */ +} +goto RET_LABEL; } else { -var = p0->type->type_table[cltype] == idtype; } +var9 = NEW_list__ListNode(self->type->resolution_table->types[COLOR_list__ListNodelist__List_FT0]); +{ +list__ListNode__init(var9, var_e); /* Direct call list#ListNode#init on */ } -if (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/list.nit", 106); -exit(1); +var_nnode = var9; +{ +{ /* Inline list#ListNode#next (var_node) on */ +var12 = var_node->attrs[COLOR_list__ListNode___next].val; /* _next on */ +var10 = var12; +RET_LABEL11:(void)0; } -var_e = p0; -var1 = NEW_list__ListNode(self->type->resolution_table->types[COLOR_list__ListNodelist__List_FT0]); -((void (*)(val*, val*))(var1->class->vft[COLOR_list__ListNode__init]))(var1, var_e) /* init on */; -CHECK_NEW_list__ListNode(var1); -var_node = var1; -var2 = self->attrs[COLOR_list__List___head].val; /* _head on */ -var3 = NULL; -if (var2 == NULL) { -var4 = 1; /* is null */ +} +var_next = var10; +var13 = NULL; +if (var_next == NULL) { +var14 = 1; /* is null */ } else { -var4 = 0; /* arg is null but recv is not */ +var14 = 0; /* arg is null but recv is not */ } -if (var4){ -self->attrs[COLOR_list__List___tail].val = var_node; /* _tail on */ +if (0) { +{ /* Inline kernel#Object#== (var_next,var13) on */ +var_other = var13; +{ +{ /* Inline kernel#Object#is_same_instance (var_next,var_other) on */ +var19 = var_next == var_other; +var17 = var19; +goto RET_LABEL18; +RET_LABEL18:(void)0; +} +} +var15 = var17; +goto RET_LABEL16; +RET_LABEL16:(void)0; +} +var14 = var15; +} +if (var14){ +self->attrs[COLOR_list__List___tail].val = var_nnode; /* _tail on */ } else { -var5 = self->attrs[COLOR_list__List___head].val; /* _head on */ -((void (*)(val*, val*))(var_node->class->vft[COLOR_list__ListNode__next_61d]))(var_node, var5) /* next= on */; -var6 = self->attrs[COLOR_list__List___head].val; /* _head on */ -if (var6 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/collection/list.nit", 114); -exit(1); +{ +{ /* Inline list#ListNode#prev= (var_next,var_nnode) on */ +/* Covariant cast for argument 0 (prev) isa nullable ListNode[E] */ +/* isa nullable ListNode[E] */ +type_struct24 = var_next->type->resolution_table->types[COLOR_nullable_list__ListNodelist__ListNode_FT0]; +cltype22 = type_struct24->color; +idtype23 = type_struct24->id; +if(cltype22 >= var_nnode->type->table_size) { +var21 = 0; } else { -((void (*)(val*, val*))(var6->class->vft[COLOR_list__ListNode__prev_61d]))(var6, var_node) /* prev= on */; +var21 = var_nnode->type->type_table[cltype22] == idtype23; } +if (unlikely(!var21)) { +var_class_name25 = var_nnode == NULL ? "null" : var_nnode->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name25); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 349); +show_backtrace(1); } -self->attrs[COLOR_list__List___head].val = var_node; /* _head on */ -RET_LABEL:; +var_next->attrs[COLOR_list__ListNode___prev].val = var_nnode; /* _prev on */ +RET_LABEL20:(void)0; } -/* method list#List#unshift for (self: Object, nullable Object) */ -void VIRTUAL_list__List__unshift(val* self, val* p0) { -list__List__unshift(self, p0); -RET_LABEL:; } -/* method list#List#link for (self: List[nullable Object], List[nullable Object]) */ -void list__List__link(val* self, val* p0) { -short int var /* : Bool */; -int cltype; -int idtype; -const struct type* type_struct; -val* var_l /* var l: List[nullable Object] */; -val* var1 /* : nullable ListNode[nullable Object] */; -val* var2 /* : null */; -short int var3 /* : Bool */; -val* var4 /* : nullable ListNode[nullable Object] */; -val* var5 /* : nullable ListNode[nullable Object] */; -val* var6 /* : null */; -short int var7 /* : Bool */; -val* var8 /* : nullable ListNode[nullable Object] */; -val* var9 /* : nullable ListNode[nullable Object] */; -val* var10 /* : nullable ListNode[nullable Object] */; -val* var11 /* : nullable ListNode[nullable Object] */; -val* var12 /* : nullable ListNode[nullable Object] */; -val* var13 /* : nullable ListNode[nullable Object] */; -/* Covariant cast for argument 0 (l) isa List[List#0] */ -/* isa List[List#0] */ -type_struct = self->type->resolution_table->types[COLOR_list__Listlist__List_FT0]; -cltype = type_struct->color; -idtype = type_struct->id; -if(cltype >= p0->type->table_size) { -var = 0; +} +{ +{ /* Inline list#ListNode#prev= (var_nnode,var_node) on */ +/* Covariant cast for argument 0 (prev) isa nullable ListNode[E] */ +/* isa nullable ListNode[E] */ +type_struct30 = var_nnode->type->resolution_table->types[COLOR_nullable_list__ListNodelist__ListNode_FT0]; +cltype28 = type_struct30->color; +idtype29 = type_struct30->id; +if(cltype28 >= var_node->type->table_size) { +var27 = 0; } else { -var = p0->type->type_table[cltype] == idtype; +var27 = var_node->type->type_table[cltype28] == idtype29; } -if (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/list.nit", 119); -exit(1); +if (unlikely(!var27)) { +var_class_name31 = var_node == NULL ? "null" : var_node->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name31); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 349); +show_backtrace(1); } -var_l = p0; -var1 = self->attrs[COLOR_list__List___tail].val; /* _tail on */ -var2 = NULL; -if (var1 == NULL) { -var3 = 1; /* is null */ -} else { -var3 = 0; /* arg is null but recv is not */ +var_nnode->attrs[COLOR_list__ListNode___prev].val = var_node; /* _prev on */ +RET_LABEL26:(void)0; } -if (var3){ -var4 = var_l->attrs[COLOR_list__List___head].val; /* _head on */ -self->attrs[COLOR_list__List___head].val = var4; /* _head on */ +} +{ +{ /* Inline list#ListNode#next= (var_nnode,var_next) on */ +/* Covariant cast for argument 0 (next) isa nullable ListNode[E] */ +/* isa nullable ListNode[E] */ +type_struct36 = var_nnode->type->resolution_table->types[COLOR_nullable_list__ListNodelist__ListNode_FT0]; +cltype34 = type_struct36->color; +idtype35 = type_struct36->id; +if(var_next == NULL) { +var33 = 1; } else { -var5 = var_l->attrs[COLOR_list__List___head].val; /* _head on */ -var6 = NULL; -if (var5 == NULL) { -var7 = 0; /* is null */ +if(cltype34 >= var_next->type->table_size) { +var33 = 0; } else { -var7 = 1; /* arg is null and recv is not */ +var33 = var_next->type->type_table[cltype34] == idtype35; } -if (var7){ -var8 = self->attrs[COLOR_list__List___tail].val; /* _tail on */ -var9 = var_l->attrs[COLOR_list__List___head].val; /* _head on */ -if (var8 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/collection/list.nit", 127); -exit(1); -} else { -((void (*)(val*, val*))(var8->class->vft[COLOR_list__ListNode__next_61d]))(var8, var9) /* next= on */; } -var10 = self->attrs[COLOR_list__List___tail].val; /* _tail on */ -if (var10 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/collection/list.nit", 128); -exit(1); -} else { -var11 = ((val* (*)(val*))(var10->class->vft[COLOR_list__ListNode__next]))(var10) /* next on */; +if (unlikely(!var33)) { +var_class_name37 = var_next == NULL ? "null" : var_next->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name37); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 346); +show_backtrace(1); } -var12 = self->attrs[COLOR_list__List___tail].val; /* _tail on */ -if (var11 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/collection/list.nit", 128); -exit(1); -} else { -((void (*)(val*, val*))(var11->class->vft[COLOR_list__ListNode__prev_61d]))(var11, var12) /* prev= on */; +var_nnode->attrs[COLOR_list__ListNode___next].val = var_next; /* _next on */ +RET_LABEL32:(void)0; } +} +{ +{ /* Inline list#ListNode#next= (var_node,var_nnode) on */ +/* Covariant cast for argument 0 (next) isa nullable ListNode[E] */ +/* isa nullable ListNode[E] */ +type_struct42 = var_node->type->resolution_table->types[COLOR_nullable_list__ListNodelist__ListNode_FT0]; +cltype40 = type_struct42->color; +idtype41 = type_struct42->id; +if(cltype40 >= var_nnode->type->table_size) { +var39 = 0; } else { +var39 = var_nnode->type->type_table[cltype40] == idtype41; +} +if (unlikely(!var39)) { +var_class_name43 = var_nnode == NULL ? "null" : var_nnode->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name43); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 346); +show_backtrace(1); +} +var_node->attrs[COLOR_list__ListNode___next].val = var_nnode; /* _next on */ +RET_LABEL38:(void)0; } } -var13 = var_l->attrs[COLOR_list__List___tail].val; /* _tail on */ -self->attrs[COLOR_list__List___tail].val = var13; /* _tail on */ -((void (*)(val*))(var_l->class->vft[COLOR_abstract_collection__RemovableCollection__clear]))(var_l) /* clear on */; RET_LABEL:; } -/* method list#List#link for (self: Object, List[nullable Object]) */ -void VIRTUAL_list__List__link(val* self, val* p0) { -list__List__link(self, p0); +/* method list#List#insert for (self: Object, nullable Object, Int) */ +void VIRTUAL_list__List__insert(val* self, val* p0, long p1) { +list__List__insert(self, p0, p1); /* Direct call list#List#insert on */ RET_LABEL:; } /* method list#List#pop for (self: List[nullable Object]): nullable Object */ @@ -936,57 +1058,144 @@ val* var /* : nullable Object */; val* var1 /* : nullable ListNode[nullable Object] */; val* var_node /* var node: nullable ListNode[nullable Object] */; val* var2 /* : nullable ListNode[nullable Object] */; -val* var3 /* : null */; val* var4 /* : nullable ListNode[nullable Object] */; val* var5 /* : null */; -short int var6 /* : Bool */; -val* var7 /* : null */; +short int var7 /* : Bool */; +int cltype; +int idtype; +const char* var_class_name; val* var8 /* : nullable ListNode[nullable Object] */; val* var9 /* : null */; -val* var10 /* : nullable Object */; +short int var10 /* : Bool */; +short int var11 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var13 /* : Bool */; +short int var15 /* : Bool */; +val* var16 /* : null */; +val* var17 /* : nullable ListNode[nullable Object] */; +val* var18 /* : null */; +short int var20 /* : Bool */; +int cltype21; +int idtype22; +const char* var_class_name23; +val* var24 /* : nullable Object */; +val* var26 /* : nullable Object */; var1 = self->attrs[COLOR_list__List___tail].val; /* _tail on */ var_node = var1; if (var_node == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/collection/list.nit", 140); -exit(1); +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 162); +show_backtrace(1); } else { -var2 = ((val* (*)(val*))(var_node->class->vft[COLOR_list__ListNode__prev]))(var_node) /* prev on */; +{ /* Inline list#ListNode#prev (var_node) on */ +if (unlikely(var_node == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 349); +show_backtrace(1); +} +var4 = var_node->attrs[COLOR_list__ListNode___prev].val; /* _prev on */ +var2 = var4; +RET_LABEL3:(void)0; +} } self->attrs[COLOR_list__List___tail].val = var2; /* _tail on */ -var3 = NULL; +var5 = NULL; if (var_node == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/collection/list.nit", 141); -exit(1); +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 163); +show_backtrace(1); } else { -((void (*)(val*, val*))(var_node->class->vft[COLOR_list__ListNode__prev_61d]))(var_node, var3) /* prev= on */; +{ /* Inline list#ListNode#prev= (var_node,var5) on */ +/* Covariant cast for argument 0 (prev) isa nullable ListNode[E] */ +/* isa nullable ListNode[E] */ +var7 = 1; /* easy isa nullable ListNode[E]*/ +if (unlikely(!var7)) { +var_class_name = var5 == NULL ? "null" : var5->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 349); +show_backtrace(1); +} +if (unlikely(var_node == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 349); +show_backtrace(1); +} +var_node->attrs[COLOR_list__ListNode___prev].val = var5; /* _prev on */ +RET_LABEL6:(void)0; } -var4 = self->attrs[COLOR_list__List___tail].val; /* _tail on */ -var5 = NULL; -if (var4 == NULL) { -var6 = 1; /* is null */ -} else { -var6 = 0; /* arg is null but recv is not */ } -if (var6){ -var7 = NULL; -self->attrs[COLOR_list__List___head].val = var7; /* _head on */ -} else { var8 = self->attrs[COLOR_list__List___tail].val; /* _tail on */ var9 = NULL; if (var8 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/collection/list.nit", 145); -exit(1); +var10 = 1; /* is null */ } else { -((void (*)(val*, val*))(var8->class->vft[COLOR_list__ListNode__next_61d]))(var8, var9) /* next= on */; +var10 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var8,var9) on */ +var_other = var9; +{ +{ /* Inline kernel#Object#is_same_instance (var8,var_other) on */ +var15 = var8 == var_other; +var13 = var15; +goto RET_LABEL14; +RET_LABEL14:(void)0; +} +} +var11 = var13; +goto RET_LABEL12; +RET_LABEL12:(void)0; +} +var10 = var11; +} +if (var10){ +var16 = NULL; +self->attrs[COLOR_list__List___head].val = var16; /* _head on */ +} else { +var17 = self->attrs[COLOR_list__List___tail].val; /* _tail on */ +var18 = NULL; +if (var17 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 167); +show_backtrace(1); +} else { +{ /* Inline list#ListNode#next= (var17,var18) on */ +/* Covariant cast for argument 0 (next) isa nullable ListNode[E] */ +/* isa nullable ListNode[E] */ +var20 = 1; /* easy isa nullable ListNode[E]*/ +if (unlikely(!var20)) { +var_class_name23 = var18 == NULL ? "null" : var18->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name23); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 346); +show_backtrace(1); +} +if (unlikely(var17 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 346); +show_backtrace(1); +} +var17->attrs[COLOR_list__ListNode___next].val = var18; /* _next on */ +RET_LABEL19:(void)0; +} } } if (var_node == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/collection/list.nit", 147); -exit(1); +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 169); +show_backtrace(1); } else { -var10 = ((val* (*)(val*))(var_node->class->vft[COLOR_abstract_collection__Container__item]))(var_node) /* item on */; +{ /* Inline abstract_collection#Container#item (var_node) on */ +if (unlikely(var_node == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/abstract_collection.nit", 200); +show_backtrace(1); +} +var26 = var_node->attrs[COLOR_abstract_collection__Container___item].val; /* _item on */ +var24 = var26; +RET_LABEL25:(void)0; } -var = var10; +} +var = var24; goto RET_LABEL; RET_LABEL:; return var; @@ -1006,57 +1215,144 @@ val* var /* : nullable Object */; val* var1 /* : nullable ListNode[nullable Object] */; val* var_node /* var node: nullable ListNode[nullable Object] */; val* var2 /* : nullable ListNode[nullable Object] */; -val* var3 /* : null */; val* var4 /* : nullable ListNode[nullable Object] */; val* var5 /* : null */; -short int var6 /* : Bool */; -val* var7 /* : null */; +short int var7 /* : Bool */; +int cltype; +int idtype; +const char* var_class_name; val* var8 /* : nullable ListNode[nullable Object] */; val* var9 /* : null */; -val* var10 /* : nullable Object */; +short int var10 /* : Bool */; +short int var11 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var13 /* : Bool */; +short int var15 /* : Bool */; +val* var16 /* : null */; +val* var17 /* : nullable ListNode[nullable Object] */; +val* var18 /* : null */; +short int var20 /* : Bool */; +int cltype21; +int idtype22; +const char* var_class_name23; +val* var24 /* : nullable Object */; +val* var26 /* : nullable Object */; var1 = self->attrs[COLOR_list__List___head].val; /* _head on */ var_node = var1; if (var_node == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/collection/list.nit", 154); -exit(1); +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 176); +show_backtrace(1); } else { -var2 = ((val* (*)(val*))(var_node->class->vft[COLOR_list__ListNode__next]))(var_node) /* next on */; +{ /* Inline list#ListNode#next (var_node) on */ +if (unlikely(var_node == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 346); +show_backtrace(1); +} +var4 = var_node->attrs[COLOR_list__ListNode___next].val; /* _next on */ +var2 = var4; +RET_LABEL3:(void)0; +} } self->attrs[COLOR_list__List___head].val = var2; /* _head on */ -var3 = NULL; +var5 = NULL; if (var_node == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/collection/list.nit", 155); -exit(1); +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 177); +show_backtrace(1); } else { -((void (*)(val*, val*))(var_node->class->vft[COLOR_list__ListNode__next_61d]))(var_node, var3) /* next= on */; +{ /* Inline list#ListNode#next= (var_node,var5) on */ +/* Covariant cast for argument 0 (next) isa nullable ListNode[E] */ +/* isa nullable ListNode[E] */ +var7 = 1; /* easy isa nullable ListNode[E]*/ +if (unlikely(!var7)) { +var_class_name = var5 == NULL ? "null" : var5->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 346); +show_backtrace(1); +} +if (unlikely(var_node == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 346); +show_backtrace(1); +} +var_node->attrs[COLOR_list__ListNode___next].val = var5; /* _next on */ +RET_LABEL6:(void)0; } -var4 = self->attrs[COLOR_list__List___head].val; /* _head on */ -var5 = NULL; -if (var4 == NULL) { -var6 = 1; /* is null */ -} else { -var6 = 0; /* arg is null but recv is not */ } -if (var6){ -var7 = NULL; -self->attrs[COLOR_list__List___tail].val = var7; /* _tail on */ -} else { var8 = self->attrs[COLOR_list__List___head].val; /* _head on */ var9 = NULL; if (var8 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/collection/list.nit", 159); -exit(1); +var10 = 1; /* is null */ } else { -((void (*)(val*, val*))(var8->class->vft[COLOR_list__ListNode__prev_61d]))(var8, var9) /* prev= on */; +var10 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var8,var9) on */ +var_other = var9; +{ +{ /* Inline kernel#Object#is_same_instance (var8,var_other) on */ +var15 = var8 == var_other; +var13 = var15; +goto RET_LABEL14; +RET_LABEL14:(void)0; +} +} +var11 = var13; +goto RET_LABEL12; +RET_LABEL12:(void)0; +} +var10 = var11; +} +if (var10){ +var16 = NULL; +self->attrs[COLOR_list__List___tail].val = var16; /* _tail on */ +} else { +var17 = self->attrs[COLOR_list__List___head].val; /* _head on */ +var18 = NULL; +if (var17 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 181); +show_backtrace(1); +} else { +{ /* Inline list#ListNode#prev= (var17,var18) on */ +/* Covariant cast for argument 0 (prev) isa nullable ListNode[E] */ +/* isa nullable ListNode[E] */ +var20 = 1; /* easy isa nullable ListNode[E]*/ +if (unlikely(!var20)) { +var_class_name23 = var18 == NULL ? "null" : var18->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name23); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 349); +show_backtrace(1); +} +if (unlikely(var17 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 349); +show_backtrace(1); +} +var17->attrs[COLOR_list__ListNode___prev].val = var18; /* _prev on */ +RET_LABEL19:(void)0; +} } } if (var_node == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/collection/list.nit", 161); -exit(1); +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 183); +show_backtrace(1); } else { -var10 = ((val* (*)(val*))(var_node->class->vft[COLOR_abstract_collection__Container__item]))(var_node) /* item on */; +{ /* Inline abstract_collection#Container#item (var_node) on */ +if (unlikely(var_node == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/abstract_collection.nit", 200); +show_backtrace(1); +} +var26 = var_node->attrs[COLOR_abstract_collection__Container___item].val; /* _item on */ +var24 = var26; +RET_LABEL25:(void)0; +} } -var = var10; +var = var24; goto RET_LABEL; RET_LABEL:; return var; @@ -1077,14 +1373,20 @@ int cltype; int idtype; const struct type* type_struct; short int is_nullable; +const char* var_class_name; val* var_e /* var e: nullable Object */; val* var1 /* : nullable ListNode[nullable Object] */; val* var2 /* : nullable ListNode[nullable Object] */; val* var_node /* var node: nullable ListNode[nullable Object] */; val* var3 /* : null */; short int var4 /* : Bool */; -/* Covariant cast for argument 0 (e) isa RemovableCollection#0 */ -/* isa RemovableCollection#0 */ +short int var5 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var7 /* : Bool */; +short int var8 /* : Bool */; +short int var9 /* : Bool */; +/* Covariant cast for argument 0 (e) isa E */ +/* isa E */ type_struct = self->type->resolution_table->types[COLOR_abstract_collection__RemovableCollection_FT0]; cltype = type_struct->color; idtype = type_struct->id; @@ -1098,13 +1400,17 @@ var = 0; var = p0->type->type_table[cltype] == idtype; } } -if (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/list.nit", 164); -exit(1); +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", "../lib/standard/collection/list.nit", 186); +show_backtrace(1); } var_e = p0; var1 = self->attrs[COLOR_list__List___head].val; /* _head on */ -var2 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_list__List__search_node_after]))(self, var_e, var1) /* search_node_after on */; +{ +var2 = list__List__search_node_after(self, var_e, var1); +} var_node = var2; var3 = NULL; if (var_node == NULL) { @@ -1112,15 +1418,31 @@ var4 = 0; /* is null */ } else { var4 = 1; /* arg is null and recv is not */ } +if (0) { +{ /* Inline kernel#Object#!= (var_node,var3) on */ +var_other = var3; +{ +var8 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on */; +var7 = var8; +} +var9 = !var7; +var5 = var9; +goto RET_LABEL6; +RET_LABEL6:(void)0; +} +var4 = var5; +} if (var4){ -((void (*)(val*, val*))(self->class->vft[COLOR_list__List__remove_node]))(self, var_node) /* remove_node on */; +{ +list__List__remove_node(self, var_node); /* Direct call list#List#remove_node on */ +} } else { } RET_LABEL:; } /* method list#List#remove for (self: Object, nullable Object) */ void VIRTUAL_list__List__remove(val* self, val* p0) { -list__List__remove(self, p0); +list__List__remove(self, p0); /* Direct call list#List#remove on */ RET_LABEL:; } /* method list#List#remove_at for (self: List[nullable Object], Int) */ @@ -1130,8 +1452,15 @@ val* var /* : nullable ListNode[nullable Object] */; val* var_node /* var node: nullable ListNode[nullable Object] */; val* var1 /* : null */; short int var2 /* : Bool */; +short int var3 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var5 /* : Bool */; +short int var6 /* : Bool */; +short int var7 /* : Bool */; var_i = p0; -var = ((val* (*)(val*, long))(self->class->vft[COLOR_list__List__get_node]))(self, var_i) /* get_node on */; +{ +var = list__List__get_node(self, var_i); +} var_node = var; var1 = NULL; if (var_node == NULL) { @@ -1139,15 +1468,31 @@ var2 = 0; /* is null */ } else { var2 = 1; /* arg is null and recv is not */ } +if (0) { +{ /* Inline kernel#Object#!= (var_node,var1) on */ +var_other = var1; +{ +var6 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on */; +var5 = var6; +} +var7 = !var5; +var3 = var7; +goto RET_LABEL4; +RET_LABEL4:(void)0; +} +var2 = var3; +} if (var2){ -((void (*)(val*, val*))(self->class->vft[COLOR_list__List__remove_node]))(self, var_node) /* remove_node on */; +{ +list__List__remove_node(self, var_node); /* Direct call list#List#remove_node on */ +} } else { } RET_LABEL:; } /* method list#List#remove_at for (self: Object, Int) */ void VIRTUAL_list__List__remove_at(val* self, long p0) { -list__List__remove_at(self, p0); +list__List__remove_at(self, p0); /* Direct call list#List#remove_at on */ RET_LABEL:; } /* method list#List#clear for (self: List[nullable Object]) */ @@ -1162,7 +1507,7 @@ RET_LABEL:; } /* method list#List#clear for (self: Object) */ void VIRTUAL_list__List__clear(val* self) { -list__List__clear(self); +list__List__clear(self); /* Direct call list#List#clear on */ RET_LABEL:; } /* method list#List#iterator for (self: List[nullable Object]): ListIterator[nullable Object] */ @@ -1170,8 +1515,9 @@ val* list__List__iterator(val* self) { val* var /* : ListIterator[nullable Object] */; val* var1 /* : ListIterator[nullable Object] */; var1 = NEW_list__ListIterator(self->type->resolution_table->types[COLOR_list__ListIteratorlist__List_FT0]); -((void (*)(val*, val*))(var1->class->vft[COLOR_list__ListIterator__init]))(var1, self) /* init on */; -CHECK_NEW_list__ListIterator(var1); +{ +list__ListIterator__init(var1, self); /* Direct call list#ListIterator#init on */ +} var = var1; goto RET_LABEL; RET_LABEL:; @@ -1192,37 +1538,9 @@ RET_LABEL:; } /* method list#List#init for (self: Object) */ void VIRTUAL_list__List__init(val* self) { -list__List__init(self); -RET_LABEL:; -} -/* method list#List#from for (self: List[nullable Object], Collection[nullable Object]) */ -void list__List__from(val* self, val* p0) { -short int var /* : Bool */; -int cltype; -int idtype; -const struct type* type_struct; -val* var_coll /* var coll: Collection[nullable Object] */; -/* Covariant cast for argument 0 (coll) isa Collection[List#0] */ -/* isa Collection[List#0] */ -type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collectionlist__List_FT0]; -cltype = type_struct->color; -idtype = type_struct->id; -if(cltype >= p0->type->table_size) { -var = 0; -} else { -var = p0->type->type_table[cltype] == idtype; -} -if (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/list.nit", 188); -exit(1); -} -var_coll = p0; -((void (*)(val*, val*))(self->class->vft[COLOR_abstract_collection__Sequence__append]))(self, var_coll) /* append on */; -RET_LABEL:; +{ /* Inline list#List#init (self) on */ +RET_LABEL1:(void)0; } -/* method list#List#from for (self: Object, Collection[nullable Object]) */ -void VIRTUAL_list__List__from(val* self, val* p0) { -list__List__from(self, p0); RET_LABEL:; } /* method list#List#get_node for (self: List[nullable Object], Int): nullable ListNode[nullable Object] */ @@ -1236,39 +1554,55 @@ short int var3 /* : Bool */; short int var5 /* : Bool */; int cltype; int idtype; +const char* var_class_name; short int var6 /* : Bool */; val* var7 /* : null */; short int var8 /* : Bool */; val* var9 /* : null */; short int var10 /* : Bool */; -short int var_ /* var : Bool */; -long var11 /* : Int */; -short int var12 /* : Bool */; +short int var11 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var13 /* : Bool */; short int var14 /* : Bool */; -int cltype15; -int idtype16; +short int var15 /* : Bool */; +short int var_ /* var : Bool */; +long var16 /* : Int */; short int var17 /* : Bool */; -val* var18 /* : nullable ListNode[nullable Object] */; -long var19 /* : Int */; -long var20 /* : Int */; -long var22 /* : Int */; +short int var19 /* : Bool */; +int cltype20; +int idtype21; +const char* var_class_name22; +short int var23 /* : Bool */; +val* var24 /* : nullable ListNode[nullable Object] */; +val* var26 /* : nullable ListNode[nullable Object] */; +long var27 /* : Int */; +long var28 /* : Int */; +short int var30 /* : Bool */; +int cltype31; +int idtype32; +const char* var_class_name33; +long var34 /* : Int */; var_i = p0; var1 = self->attrs[COLOR_list__List___head].val; /* _head on */ var_n = var1; var2 = 0; -{ /* Inline kernel#Int#< (var_i,var2) */ +{ +{ /* Inline kernel#Int#< (var_i,var2) on */ /* Covariant cast for argument 0 (i) isa OTHER */ /* isa OTHER */ var5 = 1; /* easy isa OTHER*/ -if (!var5) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 257); -exit(1); +if (unlikely(!var5)) { +var_class_name = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371); +show_backtrace(1); } var6 = var_i < var2; var3 = var6; goto RET_LABEL4; RET_LABEL4:(void)0; } +} if (var3){ var7 = NULL; var = var7; @@ -1282,38 +1616,75 @@ var10 = 0; /* is null */ } else { var10 = 1; /* arg is null and recv is not */ } +if (0) { +{ /* Inline kernel#Object#!= (var_n,var9) on */ +var_other = var9; +{ +var14 = ((short int (*)(val*, val*))(var_n->class->vft[COLOR_kernel__Object___61d_61d]))(var_n, var_other) /* == on */; +var13 = var14; +} +var15 = !var13; +var11 = var15; +goto RET_LABEL12; +RET_LABEL12:(void)0; +} +var10 = var11; +} var_ = var10; if (var10){ -var11 = 0; -{ /* Inline kernel#Int#> (var_i,var11) */ -/* Covariant cast for argument 0 (i) isa OTHER */ -/* isa OTHER */ -var14 = 1; /* easy isa OTHER*/ -if (!var14) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259); -exit(1); -} -var17 = var_i > var11; -var12 = var17; -goto RET_LABEL13; -RET_LABEL13:(void)0; -} -var8 = var12; +var16 = 0; +{ +{ /* Inline kernel#Int#> (var_i,var16) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var19 = 1; /* easy isa OTHER*/ +if (unlikely(!var19)) { +var_class_name22 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name22); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373); +show_backtrace(1); +} +var23 = var_i > var16; +var17 = var23; +goto RET_LABEL18; +RET_LABEL18:(void)0; +} +} +var8 = var17; } else { var8 = var_; } -if (!var8) break; -var18 = ((val* (*)(val*))(var_n->class->vft[COLOR_list__ListNode__next]))(var_n) /* next on */; -var_n = var18; -var19 = 1; -{ /* Inline kernel#Int#- (var_i,var19) */ -var22 = var_i - var19; -var20 = var22; -goto RET_LABEL21; -RET_LABEL21:(void)0; +if (var8){ +{ +{ /* Inline list#ListNode#next (var_n) on */ +var26 = var_n->attrs[COLOR_list__ListNode___next].val; /* _next on */ +var24 = var26; +RET_LABEL25:(void)0; +} +} +var_n = var24; +var27 = 1; +{ +{ /* Inline kernel#Int#- (var_i,var27) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var30 = 1; /* easy isa OTHER*/ +if (unlikely(!var30)) { +var_class_name33 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name33); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377); +show_backtrace(1); +} +var34 = var_i - var27; +var28 = var34; +goto RET_LABEL29; +RET_LABEL29:(void)0; +} +} +var_i = var28; +} else { +goto BREAK_label; } -var_i = var20; -CONTINUE_label: (void)0; } BREAK_label: (void)0; var = var_n; @@ -1338,22 +1709,32 @@ 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_e /* var e: nullable Object */; val* var_after /* var after: nullable ListNode[nullable Object] */; val* var_n /* var n: nullable ListNode[nullable Object] */; -short int var6 /* : Bool */; -val* var7 /* : null */; -short int var8 /* : Bool */; -short int var_ /* var : Bool */; -val* var9 /* : nullable Object */; +short int var7 /* : Bool */; +val* var8 /* : null */; +short int var9 /* : Bool */; short int var10 /* : Bool */; -val* var11 /* : nullable ListNode[nullable Object] */; -/* Covariant cast for argument 0 (e) isa List#0 */ -/* isa List#0 */ +val* var_other /* var other: nullable Object */; +short int var12 /* : Bool */; +short int var13 /* : Bool */; +short int var14 /* : Bool */; +short int var_ /* var : Bool */; +val* var15 /* : nullable Object */; +val* var17 /* : nullable Object */; +short int var18 /* : Bool */; +short int var19 /* : Bool */; +val* var20 /* : nullable ListNode[nullable Object] */; +val* var22 /* : nullable ListNode[nullable Object] */; +/* Covariant cast for argument 0 (e) isa E */ +/* isa E */ type_struct = self->type->resolution_table->types[COLOR_list__List_FT0]; cltype = type_struct->color; idtype = type_struct->id; @@ -1367,13 +1748,15 @@ var1 = 0; var1 = p0->type->type_table[cltype] == idtype; } } -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/list.nit", 211); -exit(1); +if (unlikely(!var1)) { +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", "../lib/standard/collection/list.nit", 234); +show_backtrace(1); } -/* Covariant cast for argument 1 (after) isa nullable ListNode[List#0] */ -/* isa nullable ListNode[List#0] */ -type_struct5 = self->type->resolution_table->types[COLOR_list__ListNodelist__List_FT0]; +/* Covariant cast for argument 1 (after) isa nullable ListNode[E] */ +/* isa nullable ListNode[E] */ +type_struct5 = self->type->resolution_table->types[COLOR_nullable_list__ListNodelist__List_FT0]; cltype3 = type_struct5->color; idtype4 = type_struct5->id; if(p1 == NULL) { @@ -1385,36 +1768,67 @@ var2 = 0; var2 = p1->type->type_table[cltype3] == idtype4; } } -if (!var2) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/list.nit", 211); -exit(1); +if (unlikely(!var2)) { +var_class_name6 = p1 == NULL ? "null" : p1->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name6); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 234); +show_backtrace(1); } var_e = p0; var_after = p1; var_n = var_after; for(;;) { -var7 = NULL; +var8 = NULL; if (var_n == NULL) { -var8 = 0; /* is null */ +var9 = 0; /* is null */ } else { -var8 = 1; /* arg is null and recv is not */ +var9 = 1; /* arg is null and recv is not */ } -var_ = var8; -if (var8){ -var9 = ((val* (*)(val*))(var_n->class->vft[COLOR_abstract_collection__Container__item]))(var_n) /* item on */; -if (var9 == NULL) { -var10 = (var_e != NULL); +if (0) { +{ /* Inline kernel#Object#!= (var_n,var8) on */ +var_other = var8; +{ +var13 = ((short int (*)(val*, val*))(var_n->class->vft[COLOR_kernel__Object___61d_61d]))(var_n, var_other) /* == on */; +var12 = var13; +} +var14 = !var12; +var10 = var14; +goto RET_LABEL11; +RET_LABEL11:(void)0; +} +var9 = var10; +} +var_ = var9; +if (var9){ +{ +{ /* Inline abstract_collection#Container#item (var_n) on */ +var17 = var_n->attrs[COLOR_abstract_collection__Container___item].val; /* _item on */ +var15 = var17; +RET_LABEL16:(void)0; +} +} +if (var15 == NULL) { +var18 = (var_e != NULL); } else { -var10 = ((short int (*)(val*, val*))(var9->class->vft[COLOR_kernel__Object___33d_61d]))(var9, var_e) /* != on */; +var19 = ((short int (*)(val*, val*))(var15->class->vft[COLOR_kernel__Object___33d_61d]))(var15, var_e) /* != on */; +var18 = var19; } -var6 = var10; +var7 = var18; +} else { +var7 = var_; +} +if (var7){ +{ +{ /* Inline list#ListNode#next (var_n) on */ +var22 = var_n->attrs[COLOR_list__ListNode___next].val; /* _next on */ +var20 = var22; +RET_LABEL21:(void)0; +} +} +var_n = var20; } else { -var6 = var_; +goto BREAK_label; } -if (!var6) break; -var11 = ((val* (*)(val*))(var_n->class->vft[COLOR_list__ListNode__next]))(var_n) /* next on */; -var_n = var11; -CONTINUE_label: (void)0; } BREAK_label: (void)0; var = var_n; @@ -1437,29 +1851,69 @@ short int var /* : Bool */; int cltype; int idtype; const struct type* type_struct; +const char* var_class_name; val* var_node /* var node: ListNode[nullable Object] */; val* var1 /* : nullable ListNode[nullable Object] */; -val* var2 /* : null */; -short int var3 /* : Bool */; -val* var4 /* : nullable ListNode[nullable Object] */; -val* var5 /* : nullable ListNode[nullable Object] */; -val* var6 /* : null */; -short int var7 /* : Bool */; -val* var8 /* : null */; -val* var9 /* : nullable ListNode[nullable Object] */; -val* var10 /* : null */; +val* var3 /* : nullable ListNode[nullable Object] */; +val* var4 /* : null */; +short int var5 /* : Bool */; +short int var6 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var8 /* : Bool */; +short int var10 /* : Bool */; val* var11 /* : nullable ListNode[nullable Object] */; -val* var12 /* : null */; -short int var13 /* : Bool */; +val* var13 /* : nullable ListNode[nullable Object] */; val* var14 /* : nullable ListNode[nullable Object] */; -val* var15 /* : nullable ListNode[nullable Object] */; -val* var16 /* : null */; -val* var17 /* : nullable ListNode[nullable Object] */; -val* var18 /* : nullable ListNode[nullable Object] */; -val* var19 /* : nullable ListNode[nullable Object] */; -val* var20 /* : nullable ListNode[nullable Object] */; -/* Covariant cast for argument 0 (node) isa ListNode[List#0] */ -/* isa ListNode[List#0] */ +val* var16 /* : nullable ListNode[nullable Object] */; +val* var17 /* : null */; +short int var18 /* : Bool */; +short int var19 /* : Bool */; +short int var21 /* : Bool */; +short int var23 /* : Bool */; +val* var24 /* : null */; +val* var25 /* : nullable ListNode[nullable Object] */; +val* var27 /* : nullable ListNode[nullable Object] */; +val* var28 /* : null */; +short int var30 /* : Bool */; +int cltype31; +int idtype32; +const char* var_class_name33; +val* var34 /* : nullable ListNode[nullable Object] */; +val* var36 /* : nullable ListNode[nullable Object] */; +val* var37 /* : null */; +short int var38 /* : Bool */; +short int var39 /* : Bool */; +short int var41 /* : Bool */; +short int var43 /* : Bool */; +val* var44 /* : nullable ListNode[nullable Object] */; +val* var46 /* : nullable ListNode[nullable Object] */; +val* var47 /* : nullable ListNode[nullable Object] */; +val* var49 /* : nullable ListNode[nullable Object] */; +val* var50 /* : null */; +short int var52 /* : Bool */; +int cltype53; +int idtype54; +const char* var_class_name55; +val* var56 /* : nullable ListNode[nullable Object] */; +val* var58 /* : nullable ListNode[nullable Object] */; +val* var59 /* : nullable ListNode[nullable Object] */; +val* var61 /* : nullable ListNode[nullable Object] */; +short int var63 /* : Bool */; +int cltype64; +int idtype65; +const struct type* type_struct66; +const char* var_class_name67; +val* var68 /* : nullable ListNode[nullable Object] */; +val* var70 /* : nullable ListNode[nullable Object] */; +val* var71 /* : nullable ListNode[nullable Object] */; +val* var73 /* : nullable ListNode[nullable Object] */; +short int var75 /* : Bool */; +int cltype76; +int idtype77; +const struct type* type_struct78; +const char* var_class_name79; +/* Covariant cast for argument 0 (node) isa ListNode[E] */ +/* isa ListNode[E] */ type_struct = self->type->resolution_table->types[COLOR_list__ListNodelist__List_FT0]; cltype = type_struct->color; idtype = type_struct->id; @@ -1468,165 +1922,297 @@ var = 0; } else { var = p0->type->type_table[cltype] == idtype; } -if (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/list.nit", 219); -exit(1); +if (unlikely(!var)) { +var_class_name = p0 == NULL ? "null" : p0->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "ListNode[E]", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 242); +show_backtrace(1); } var_node = p0; -var1 = ((val* (*)(val*))(var_node->class->vft[COLOR_list__ListNode__prev]))(var_node) /* prev on */; -var2 = NULL; +{ +{ /* Inline list#ListNode#prev (var_node) on */ +var3 = var_node->attrs[COLOR_list__ListNode___prev].val; /* _prev on */ +var1 = var3; +RET_LABEL2:(void)0; +} +} +var4 = NULL; if (var1 == NULL) { -var3 = 1; /* is null */ +var5 = 1; /* is null */ } else { -var3 = 0; /* arg is null but recv is not */ +var5 = 0; /* arg is null but recv is not */ } -if (var3){ -var4 = ((val* (*)(val*))(var_node->class->vft[COLOR_list__ListNode__next]))(var_node) /* next on */; -self->attrs[COLOR_list__List___head].val = var4; /* _head on */ -var5 = ((val* (*)(val*))(var_node->class->vft[COLOR_list__ListNode__next]))(var_node) /* next on */; -var6 = NULL; -if (var5 == NULL) { -var7 = 1; /* is null */ -} else { -var7 = 0; /* arg is null but recv is not */ +if (0) { +{ /* Inline kernel#Object#== (var1,var4) on */ +var_other = var4; +{ +{ /* Inline kernel#Object#is_same_instance (var1,var_other) on */ +var10 = var1 == var_other; +var8 = var10; +goto RET_LABEL9; +RET_LABEL9:(void)0; } -if (var7){ -var8 = NULL; -self->attrs[COLOR_list__List___tail].val = var8; /* _tail on */ +} +var6 = var8; +goto RET_LABEL7; +RET_LABEL7:(void)0; +} +var5 = var6; +} +if (var5){ +{ +{ /* Inline list#ListNode#next (var_node) on */ +var13 = var_node->attrs[COLOR_list__ListNode___next].val; /* _next on */ +var11 = var13; +RET_LABEL12:(void)0; +} +} +self->attrs[COLOR_list__List___head].val = var11; /* _head on */ +{ +{ /* Inline list#ListNode#next (var_node) on */ +var16 = var_node->attrs[COLOR_list__ListNode___next].val; /* _next on */ +var14 = var16; +RET_LABEL15:(void)0; +} +} +var17 = NULL; +if (var14 == NULL) { +var18 = 1; /* is null */ } else { -var9 = ((val* (*)(val*))(var_node->class->vft[COLOR_list__ListNode__next]))(var_node) /* next on */; -var10 = NULL; -if (var9 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/collection/list.nit", 227); -exit(1); +var18 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var14,var17) on */ +var_other = var17; +{ +{ /* Inline kernel#Object#is_same_instance (var14,var_other) on */ +var23 = var14 == var_other; +var21 = var23; +goto RET_LABEL22; +RET_LABEL22:(void)0; +} +} +var19 = var21; +goto RET_LABEL20; +RET_LABEL20:(void)0; +} +var18 = var19; +} +if (var18){ +var24 = NULL; +self->attrs[COLOR_list__List___tail].val = var24; /* _tail on */ } else { -((void (*)(val*, val*))(var9->class->vft[COLOR_list__ListNode__prev_61d]))(var9, var10) /* prev= on */; +{ +{ /* Inline list#ListNode#next (var_node) on */ +var27 = var_node->attrs[COLOR_list__ListNode___next].val; /* _next on */ +var25 = var27; +RET_LABEL26:(void)0; } } +var28 = NULL; +if (var25 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 250); +show_backtrace(1); } else { -var11 = ((val* (*)(val*))(var_node->class->vft[COLOR_list__ListNode__next]))(var_node) /* next on */; -var12 = NULL; -if (var11 == NULL) { -var13 = 1; /* is null */ +{ /* Inline list#ListNode#prev= (var25,var28) on */ +/* Covariant cast for argument 0 (prev) isa nullable ListNode[E] */ +/* isa nullable ListNode[E] */ +var30 = 1; /* easy isa nullable ListNode[E]*/ +if (unlikely(!var30)) { +var_class_name33 = var28 == NULL ? "null" : var28->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name33); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 349); +show_backtrace(1); +} +if (unlikely(var25 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 349); +show_backtrace(1); +} +var25->attrs[COLOR_list__ListNode___prev].val = var28; /* _prev on */ +RET_LABEL29:(void)0; +} +} +} } else { -var13 = 0; /* arg is null but recv is not */ +{ +{ /* Inline list#ListNode#next (var_node) on */ +var36 = var_node->attrs[COLOR_list__ListNode___next].val; /* _next on */ +var34 = var36; +RET_LABEL35:(void)0; } -if (var13){ -var14 = ((val* (*)(val*))(var_node->class->vft[COLOR_list__ListNode__prev]))(var_node) /* prev on */; -self->attrs[COLOR_list__List___tail].val = var14; /* _tail on */ -var15 = ((val* (*)(val*))(var_node->class->vft[COLOR_list__ListNode__prev]))(var_node) /* prev on */; -var16 = NULL; -if (var15 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/collection/list.nit", 231); -exit(1); +} +var37 = NULL; +if (var34 == NULL) { +var38 = 1; /* is null */ } else { -((void (*)(val*, val*))(var15->class->vft[COLOR_list__ListNode__next_61d]))(var15, var16) /* next= on */; +var38 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var34,var37) on */ +var_other = var37; +{ +{ /* Inline kernel#Object#is_same_instance (var34,var_other) on */ +var43 = var34 == var_other; +var41 = var43; +goto RET_LABEL42; +RET_LABEL42:(void)0; +} +} +var39 = var41; +goto RET_LABEL40; +RET_LABEL40:(void)0; +} +var38 = var39; +} +if (var38){ +{ +{ /* Inline list#ListNode#prev (var_node) on */ +var46 = var_node->attrs[COLOR_list__ListNode___prev].val; /* _prev on */ +var44 = var46; +RET_LABEL45:(void)0; +} +} +self->attrs[COLOR_list__List___tail].val = var44; /* _tail on */ +{ +{ /* Inline list#ListNode#prev (var_node) on */ +var49 = var_node->attrs[COLOR_list__ListNode___prev].val; /* _prev on */ +var47 = var49; +RET_LABEL48:(void)0; +} } +var50 = NULL; +if (var47 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 254); +show_backtrace(1); } else { -var17 = ((val* (*)(val*))(var_node->class->vft[COLOR_list__ListNode__prev]))(var_node) /* prev on */; -var18 = ((val* (*)(val*))(var_node->class->vft[COLOR_list__ListNode__next]))(var_node) /* next on */; -if (var17 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/collection/list.nit", 233); -exit(1); +{ /* Inline list#ListNode#next= (var47,var50) on */ +/* Covariant cast for argument 0 (next) isa nullable ListNode[E] */ +/* isa nullable ListNode[E] */ +var52 = 1; /* easy isa nullable ListNode[E]*/ +if (unlikely(!var52)) { +var_class_name55 = var50 == NULL ? "null" : var50->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name55); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 346); +show_backtrace(1); +} +if (unlikely(var47 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 346); +show_backtrace(1); +} +var47->attrs[COLOR_list__ListNode___next].val = var50; /* _next on */ +RET_LABEL51:(void)0; +} +} } else { -((void (*)(val*, val*))(var17->class->vft[COLOR_list__ListNode__next_61d]))(var17, var18) /* next= on */; +{ +{ /* Inline list#ListNode#prev (var_node) on */ +var58 = var_node->attrs[COLOR_list__ListNode___prev].val; /* _prev on */ +var56 = var58; +RET_LABEL57:(void)0; +} +} +{ +{ /* Inline list#ListNode#next (var_node) on */ +var61 = var_node->attrs[COLOR_list__ListNode___next].val; /* _next on */ +var59 = var61; +RET_LABEL60:(void)0; +} } -var19 = ((val* (*)(val*))(var_node->class->vft[COLOR_list__ListNode__next]))(var_node) /* next on */; -var20 = ((val* (*)(val*))(var_node->class->vft[COLOR_list__ListNode__prev]))(var_node) /* prev on */; -if (var19 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/collection/list.nit", 234); -exit(1); +if (var56 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 256); +show_backtrace(1); } else { -((void (*)(val*, val*))(var19->class->vft[COLOR_list__ListNode__prev_61d]))(var19, var20) /* prev= on */; +{ /* Inline list#ListNode#next= (var56,var59) on */ +/* Covariant cast for argument 0 (next) isa nullable ListNode[E] */ +/* isa nullable ListNode[E] */ +type_struct66 = var56->type->resolution_table->types[COLOR_nullable_list__ListNodelist__ListNode_FT0]; +cltype64 = type_struct66->color; +idtype65 = type_struct66->id; +if(var59 == NULL) { +var63 = 1; +} else { +if(cltype64 >= var59->type->table_size) { +var63 = 0; +} else { +var63 = var59->type->type_table[cltype64] == idtype65; } } +if (unlikely(!var63)) { +var_class_name67 = var59 == NULL ? "null" : var59->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name67); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 346); +show_backtrace(1); } -RET_LABEL:; +if (unlikely(var56 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 346); +show_backtrace(1); } -/* method list#List#remove_node for (self: Object, ListNode[nullable Object]) */ -void VIRTUAL_list__List__remove_node(val* self, val* p0) { -list__List__remove_node(self, p0); -RET_LABEL:; +var56->attrs[COLOR_list__ListNode___next].val = var59; /* _next on */ +RET_LABEL62:(void)0; } -/* method list#List#insert_before for (self: List[nullable Object], nullable Object, ListNode[nullable Object]) */ -void list__List__insert_before(val* self, val* p0, val* p1) { -short int var /* : Bool */; -int cltype; -int idtype; -const struct type* type_struct; -short int is_nullable; -short int var1 /* : Bool */; -int cltype2; -int idtype3; -const struct type* type_struct4; -val* var_element /* var element: nullable Object */; -val* var_node /* var node: ListNode[nullable Object] */; -val* var5 /* : ListNode[nullable Object] */; -val* var_nnode /* var nnode: ListNode[nullable Object] */; -val* var6 /* : nullable ListNode[nullable Object] */; -val* var_prev /* var prev: nullable ListNode[nullable Object] */; -val* var7 /* : null */; -short int var8 /* : Bool */; -/* Covariant cast for argument 0 (element) isa List#0 */ -/* isa List#0 */ -type_struct = self->type->resolution_table->types[COLOR_list__List_FT0]; -cltype = type_struct->color; -idtype = type_struct->id; -is_nullable = type_struct->is_nullable; -if(p0 == NULL) { -var = is_nullable; +} +{ +{ /* Inline list#ListNode#next (var_node) on */ +var70 = var_node->attrs[COLOR_list__ListNode___next].val; /* _next on */ +var68 = var70; +RET_LABEL69:(void)0; +} +} +{ +{ /* Inline list#ListNode#prev (var_node) on */ +var73 = var_node->attrs[COLOR_list__ListNode___prev].val; /* _prev on */ +var71 = var73; +RET_LABEL72:(void)0; +} +} +if (var68 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 257); +show_backtrace(1); } else { -if(cltype >= p0->type->table_size) { -var = 0; +{ /* Inline list#ListNode#prev= (var68,var71) on */ +/* Covariant cast for argument 0 (prev) isa nullable ListNode[E] */ +/* isa nullable ListNode[E] */ +type_struct78 = var68->type->resolution_table->types[COLOR_nullable_list__ListNodelist__ListNode_FT0]; +cltype76 = type_struct78->color; +idtype77 = type_struct78->id; +if(var71 == NULL) { +var75 = 1; } else { -var = p0->type->type_table[cltype] == idtype; +if(cltype76 >= var71->type->table_size) { +var75 = 0; +} else { +var75 = var71->type->type_table[cltype76] == idtype77; } } -if (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/list.nit", 238); -exit(1); +if (unlikely(!var75)) { +var_class_name79 = var71 == NULL ? "null" : var71->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name79); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 349); +show_backtrace(1); } -/* Covariant cast for argument 1 (node) isa ListNode[List#0] */ -/* isa ListNode[List#0] */ -type_struct4 = self->type->resolution_table->types[COLOR_list__ListNodelist__List_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(var68 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 349); +show_backtrace(1); +} +var68->attrs[COLOR_list__ListNode___prev].val = var71; /* _prev on */ +RET_LABEL74:(void)0; } -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/list.nit", 238); -exit(1); } -var_element = p0; -var_node = p1; -var5 = NEW_list__ListNode(self->type->resolution_table->types[COLOR_list__ListNodelist__List_FT0]); -((void (*)(val*, val*))(var5->class->vft[COLOR_list__ListNode__init]))(var5, var_element) /* init on */; -CHECK_NEW_list__ListNode(var5); -var_nnode = var5; -var6 = ((val* (*)(val*))(var_node->class->vft[COLOR_list__ListNode__prev]))(var_node) /* prev on */; -var_prev = var6; -var7 = NULL; -if (var_prev == NULL) { -var8 = 1; /* is null */ -} else { -var8 = 0; /* arg is null but recv is not */ } -if (var8){ -self->attrs[COLOR_list__List___head].val = var_nnode; /* _head on */ -} else { -((void (*)(val*, val*))(var_prev->class->vft[COLOR_list__ListNode__next_61d]))(var_prev, var_nnode) /* next= on */; } -((void (*)(val*, val*))(var_nnode->class->vft[COLOR_list__ListNode__prev_61d]))(var_nnode, var_prev) /* prev= on */; -((void (*)(val*, val*))(var_nnode->class->vft[COLOR_list__ListNode__next_61d]))(var_nnode, var_node) /* next= on */; -((void (*)(val*, val*))(var_node->class->vft[COLOR_list__ListNode__prev_61d]))(var_node, var_nnode) /* prev= on */; RET_LABEL:; } -/* method list#List#insert_before for (self: Object, nullable Object, ListNode[nullable Object]) */ -void VIRTUAL_list__List__insert_before(val* self, val* p0, val* p1) { -list__List__insert_before(self, p0, p1); +/* method list#List#remove_node for (self: Object, ListNode[nullable Object]) */ +void VIRTUAL_list__List__remove_node(val* self, val* p0) { +list__List__remove_node(self, p0); /* Direct call list#List#remove_node on */ RET_LABEL:; } /* method list#ListIterator#item for (self: ListIterator[nullable Object]): nullable Object */ @@ -1634,12 +2220,23 @@ val* list__ListIterator__item(val* self) { val* var /* : nullable Object */; val* var1 /* : nullable ListNode[nullable Object] */; val* var2 /* : nullable Object */; +val* var4 /* : nullable Object */; var1 = self->attrs[COLOR_list__ListIterator___node].val; /* _node on */ if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/collection/list.nit", 256); -exit(1); +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 279); +show_backtrace(1); } else { -var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Container__item]))(var1) /* item on */; +{ /* Inline abstract_collection#Container#item (var1) on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/abstract_collection.nit", 200); +show_backtrace(1); +} +var4 = var1->attrs[COLOR_abstract_collection__Container___item].val; /* _item on */ +var2 = var4; +RET_LABEL3:(void)0; +} } var = var2; goto RET_LABEL; @@ -1655,49 +2252,6 @@ var = var1; RET_LABEL:; return var; } -/* method list#ListIterator#item= for (self: ListIterator[nullable Object], nullable Object) */ -void list__ListIterator__item_61d(val* self, val* p0) { -short int var /* : Bool */; -int cltype; -int idtype; -const struct type* type_struct; -short int is_nullable; -val* var_e /* var e: nullable Object */; -val* var1 /* : nullable ListNode[nullable Object] */; -/* Covariant cast for argument 0 (e) isa ListIterator#0 */ -/* isa ListIterator#0 */ -type_struct = self->type->resolution_table->types[COLOR_list__ListIterator_FT0]; -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 (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/list.nit", 258); -exit(1); -} -var_e = p0; -var1 = self->attrs[COLOR_list__ListIterator___node].val; /* _node on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/collection/list.nit", 258); -exit(1); -} else { -((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__Container__item_61d]))(var1, var_e) /* item= on */; -} -RET_LABEL:; -} -/* method list#ListIterator#item= for (self: Object, nullable Object) */ -void VIRTUAL_list__ListIterator__item_61d(val* self, val* p0) { -list__ListIterator__item_61d(self, p0); -RET_LABEL:; -} /* method list#ListIterator#is_ok for (self: ListIterator[nullable Object]): Bool */ short int list__ListIterator__is_ok(val* self) { short int var /* : Bool */; @@ -1705,6 +2259,10 @@ val* var1 /* : nullable ListNode[nullable Object] */; val* var2 /* : null */; short int var3 /* : Bool */; short int var4 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var6 /* : Bool */; +short int var8 /* : Bool */; +short int var9 /* : Bool */; var1 = self->attrs[COLOR_list__ListIterator___node].val; /* _node on */ var2 = NULL; if (var1 == NULL) { @@ -1712,8 +2270,25 @@ var3 = 1; /* is null */ } else { var3 = 0; /* arg is null but recv is not */ } -var4 = !var3; -var = var4; +if (0) { +{ /* Inline kernel#Object#== (var1,var2) on */ +var_other = var2; +{ +{ /* Inline kernel#Object#is_same_instance (var1,var_other) on */ +var8 = var1 == var_other; +var6 = var8; +goto RET_LABEL7; +RET_LABEL7:(void)0; +} +} +var4 = var6; +goto RET_LABEL5; +RET_LABEL5:(void)0; +} +var3 = var4; +} +var9 = !var3; +var = var9; goto RET_LABEL; RET_LABEL:; return var; @@ -1731,34 +2306,60 @@ return var; void list__ListIterator__next(val* self) { val* var /* : nullable ListNode[nullable Object] */; val* var1 /* : nullable ListNode[nullable Object] */; +val* var3 /* : nullable ListNode[nullable Object] */; val* var_ /* var : ListIterator[nullable Object] */; -long var2 /* : Int */; -long var3 /* : Int */; long var4 /* : Int */; +long var5 /* : Int */; long var6 /* : Int */; +short int var8 /* : Bool */; +int cltype; +int idtype; +const char* var_class_name; +long var9 /* : Int */; var = self->attrs[COLOR_list__ListIterator___node].val; /* _node on */ if (var == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/collection/list.nit", 264); -exit(1); +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 287); +show_backtrace(1); } else { -var1 = ((val* (*)(val*))(var->class->vft[COLOR_list__ListNode__next]))(var) /* next on */; +{ /* Inline list#ListNode#next (var) on */ +if (unlikely(var == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 346); +show_backtrace(1); +} +var3 = var->attrs[COLOR_list__ListNode___next].val; /* _next on */ +var1 = var3; +RET_LABEL2:(void)0; +} } self->attrs[COLOR_list__ListIterator___node].val = var1; /* _node on */ var_ = self; -var2 = var_->attrs[COLOR_list__ListIterator___index].l; /* _index on */ -var3 = 1; -{ /* Inline kernel#Int#+ (var2,var3) */ -var6 = var2 + var3; -var4 = var6; -goto RET_LABEL5; -RET_LABEL5:(void)0; +var4 = var_->attrs[COLOR_list__ListIterator___index].l; /* _index on */ +var5 = 1; +{ +{ /* Inline kernel#Int#+ (var4,var5) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var8 = 1; /* easy isa OTHER*/ +if (unlikely(!var8)) { +var_class_name = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374); +show_backtrace(1); +} +var9 = var4 + var5; +var6 = var9; +goto RET_LABEL7; +RET_LABEL7:(void)0; +} } -var_->attrs[COLOR_list__ListIterator___index].l = var4; /* _index on */ +var_->attrs[COLOR_list__ListIterator___index].l = var6; /* _index on */ RET_LABEL:; } /* method list#ListIterator#next for (self: Object) */ void VIRTUAL_list__ListIterator__next(val* self) { -list__ListIterator__next(self); +list__ListIterator__next(self); /* Direct call list#ListIterator#next on */ RET_LABEL:; } /* method list#ListIterator#init for (self: ListIterator[nullable Object], List[nullable Object]) */ @@ -1767,11 +2368,12 @@ short int var /* : Bool */; int cltype; int idtype; const struct type* type_struct; +const char* var_class_name; val* var_list /* var list: List[nullable Object] */; val* var1 /* : nullable ListNode[nullable Object] */; long var2 /* : Int */; -/* Covariant cast for argument 0 (list) isa List[ListIterator#0] */ -/* isa List[ListIterator#0] */ +/* Covariant cast for argument 0 (list) isa List[E] */ +/* isa List[E] */ type_struct = self->type->resolution_table->types[COLOR_list__Listlist__ListIterator_FT0]; cltype = type_struct->color; idtype = type_struct->id; @@ -1780,9 +2382,11 @@ var = 0; } else { var = p0->type->type_table[cltype] == idtype; } -if (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/list.nit", 268); -exit(1); +if (unlikely(!var)) { +var_class_name = p0 == NULL ? "null" : p0->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "List[E]", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 291); +show_backtrace(1); } var_list = p0; self->attrs[COLOR_list__ListIterator___list].val = var_list; /* _list on */ @@ -1794,7 +2398,7 @@ RET_LABEL:; } /* method list#ListIterator#init for (self: Object, List[nullable Object]) */ void VIRTUAL_list__ListIterator__init(val* self, val* p0) { -list__ListIterator__init(self, p0); +list__ListIterator__init(self, p0); /* Direct call list#ListIterator#init on */ RET_LABEL:; } /* method list#ListIterator#index for (self: ListIterator[nullable Object]): Int */ @@ -1810,46 +2414,34 @@ return var; long VIRTUAL_list__ListIterator__index(val* self) { long var /* : Int */; long var1 /* : Int */; -var1 = list__ListIterator__index(self); +long var3 /* : Int */; +{ /* Inline list#ListIterator#index (self) on */ +var3 = self->attrs[COLOR_list__ListIterator___index].l; /* _index on */ +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } -/* method list#ListIterator#delete for (self: ListIterator[nullable Object]) */ -void list__ListIterator__delete(val* self) { -val* var /* : List[nullable Object] */; -val* var1 /* : nullable ListNode[nullable Object] */; -var = self->attrs[COLOR_list__ListIterator___list].val; /* _list on */ -if (var == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _list", "lib/standard/collection/list.nit", 288); -exit(1); -} -var1 = self->attrs[COLOR_list__ListIterator___node].val; /* _node on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/list.nit", 288); -exit(1); -} -((void (*)(val*, val*))(var->class->vft[COLOR_list__List__remove_node]))(var, var1) /* remove_node on */; -RET_LABEL:; -} -/* method list#ListIterator#delete for (self: Object) */ -void VIRTUAL_list__ListIterator__delete(val* self) { -list__ListIterator__delete(self); -RET_LABEL:; -} -/* method list#ListIterator#insert_before for (self: ListIterator[nullable Object], nullable Object) */ -void list__ListIterator__insert_before(val* self, val* p0) { +/* method list#ListNode#init for (self: ListNode[nullable Object], nullable Object) */ +void list__ListNode__init(val* self, val* p0) { short int var /* : Bool */; int cltype; int idtype; const struct type* type_struct; short int is_nullable; -val* var_element /* var element: nullable Object */; -val* var1 /* : List[nullable Object] */; -val* var2 /* : nullable ListNode[nullable Object] */; -/* Covariant cast for argument 0 (element) isa ListIterator#0 */ -/* isa ListIterator#0 */ -type_struct = self->type->resolution_table->types[COLOR_list__ListIterator_FT0]; +const char* var_class_name; +val* var_i /* var i: nullable Object */; +short int var2 /* : Bool */; +int cltype3; +int idtype4; +const struct type* type_struct5; +short int is_nullable6; +const char* var_class_name7; +/* Covariant cast for argument 0 (i) isa E */ +/* isa E */ +type_struct = self->type->resolution_table->types[COLOR_list__ListNode_FT0]; cltype = type_struct->color; idtype = type_struct->id; is_nullable = type_struct->is_nullable; @@ -1862,64 +2454,48 @@ var = 0; var = p0->type->type_table[cltype] == idtype; } } -if (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/list.nit", 291); -exit(1); -} -var_element = p0; -var1 = self->attrs[COLOR_list__ListIterator___list].val; /* _list on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _list", "lib/standard/collection/list.nit", 294); -exit(1); -} -var2 = self->attrs[COLOR_list__ListIterator___node].val; /* _node on */ -if (var2 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/list.nit", 294); -exit(1); -} -((void (*)(val*, val*, val*))(var1->class->vft[COLOR_list__List__insert_before]))(var1, var_element, var2) /* insert_before on */; -RET_LABEL:; +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", "../lib/standard/collection/list.nit", 341); +show_backtrace(1); } -/* method list#ListIterator#insert_before for (self: Object, nullable Object) */ -void VIRTUAL_list__ListIterator__insert_before(val* self, val* p0) { -list__ListIterator__insert_before(self, p0); -RET_LABEL:; +{ +abstract_collection__Container__init(self, p0); /* Direct call abstract_collection#Container#init on */ } -/* method list#ListNode#init for (self: ListNode[nullable Object], nullable Object) */ -void list__ListNode__init(val* self, val* p0) { -short int var /* : Bool */; -int cltype; -int idtype; -const struct type* type_struct; -short int is_nullable; -val* var_i /* var i: nullable Object */; -/* Covariant cast for argument 0 (i) isa ListNode#0 */ -/* isa ListNode#0 */ -type_struct = self->type->resolution_table->types[COLOR_list__ListNode_FT0]; -cltype = type_struct->color; -idtype = type_struct->id; -is_nullable = type_struct->is_nullable; -if(p0 == NULL) { -var = is_nullable; +var_i = p0; +{ +{ /* Inline abstract_collection#Container#item= (self,var_i) on */ +/* Covariant cast for argument 0 (item) isa E */ +/* isa E */ +type_struct5 = self->type->resolution_table->types[COLOR_abstract_collection__Container_FT0]; +cltype3 = type_struct5->color; +idtype4 = type_struct5->id; +is_nullable6 = type_struct5->is_nullable; +if(var_i == NULL) { +var2 = is_nullable6; } else { -if(cltype >= p0->type->table_size) { -var = 0; +if(cltype3 >= var_i->type->table_size) { +var2 = 0; } else { -var = p0->type->type_table[cltype] == idtype; +var2 = var_i->type->type_table[cltype3] == idtype4; } } -if (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/list.nit", 301); -exit(1); +if (unlikely(!var2)) { +var_class_name7 = var_i == NULL ? "null" : var_i->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name7); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/abstract_collection.nit", 200); +show_backtrace(1); +} +self->attrs[COLOR_abstract_collection__Container___item].val = var_i; /* _item on */ +RET_LABEL1:(void)0; +} } -var_i = p0; -((void (*)(val*, val*))(self->class->vft[COLOR_abstract_collection__Container__init]))(self, p0) /* init on */; -((void (*)(val*, val*))(self->class->vft[COLOR_abstract_collection__Container__item_61d]))(self, var_i) /* item= on */; RET_LABEL:; } /* method list#ListNode#init for (self: Object, nullable Object) */ void VIRTUAL_list__ListNode__init(val* self, val* p0) { -list__ListNode__init(self, p0); +list__ListNode__init(self, p0); /* Direct call list#ListNode#init on */ RET_LABEL:; } /* method list#ListNode#next for (self: ListNode[nullable Object]): nullable ListNode[nullable Object] */ @@ -1935,7 +2511,12 @@ return var; val* VIRTUAL_list__ListNode__next(val* self) { val* var /* : nullable ListNode[nullable Object] */; val* var1 /* : nullable ListNode[nullable Object] */; -var1 = list__ListNode__next(self); +val* var3 /* : nullable ListNode[nullable Object] */; +{ /* Inline list#ListNode#next (self) on */ +var3 = self->attrs[COLOR_list__ListNode___next].val; /* _next on */ +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; @@ -1946,9 +2527,10 @@ short int var /* : Bool */; int cltype; int idtype; const struct type* type_struct; -/* Covariant cast for argument 0 (next) isa nullable ListNode[ListNode#0] */ -/* isa nullable ListNode[ListNode#0] */ -type_struct = self->type->resolution_table->types[COLOR_list__ListNodelist__ListNode_FT0]; +const char* var_class_name; +/* Covariant cast for argument 0 (next) isa nullable ListNode[E] */ +/* isa nullable ListNode[E] */ +type_struct = self->type->resolution_table->types[COLOR_nullable_list__ListNodelist__ListNode_FT0]; cltype = type_struct->color; idtype = type_struct->id; if(p0 == NULL) { @@ -1960,16 +2542,46 @@ var = 0; var = p0->type->type_table[cltype] == idtype; } } -if (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/list.nit", 306); -exit(1); +if (unlikely(!var)) { +var_class_name = p0 == NULL ? "null" : p0->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 346); +show_backtrace(1); } self->attrs[COLOR_list__ListNode___next].val = p0; /* _next on */ RET_LABEL:; } /* method list#ListNode#next= for (self: Object, nullable ListNode[nullable Object]) */ void VIRTUAL_list__ListNode__next_61d(val* self, val* p0) { -list__ListNode__next_61d(self, p0); +short int var /* : Bool */; +int cltype; +int idtype; +const struct type* type_struct; +const char* var_class_name; +{ /* Inline list#ListNode#next= (self,p0) on */ +/* Covariant cast for argument 0 (next) isa nullable ListNode[E] */ +/* isa nullable ListNode[E] */ +type_struct = self->type->resolution_table->types[COLOR_nullable_list__ListNodelist__ListNode_FT0]; +cltype = type_struct->color; +idtype = type_struct->id; +if(p0 == NULL) { +var = 1; +} 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`", "nullable ListNode[E]", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 346); +show_backtrace(1); +} +self->attrs[COLOR_list__ListNode___next].val = p0; /* _next on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method list#ListNode#prev for (self: ListNode[nullable Object]): nullable ListNode[nullable Object] */ @@ -1985,7 +2597,12 @@ return var; val* VIRTUAL_list__ListNode__prev(val* self) { val* var /* : nullable ListNode[nullable Object] */; val* var1 /* : nullable ListNode[nullable Object] */; -var1 = list__ListNode__prev(self); +val* var3 /* : nullable ListNode[nullable Object] */; +{ /* Inline list#ListNode#prev (self) on */ +var3 = self->attrs[COLOR_list__ListNode___prev].val; /* _prev on */ +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; @@ -1996,9 +2613,10 @@ short int var /* : Bool */; int cltype; int idtype; const struct type* type_struct; -/* Covariant cast for argument 0 (prev) isa nullable ListNode[ListNode#0] */ -/* isa nullable ListNode[ListNode#0] */ -type_struct = self->type->resolution_table->types[COLOR_list__ListNodelist__ListNode_FT0]; +const char* var_class_name; +/* Covariant cast for argument 0 (prev) isa nullable ListNode[E] */ +/* isa nullable ListNode[E] */ +type_struct = self->type->resolution_table->types[COLOR_nullable_list__ListNodelist__ListNode_FT0]; cltype = type_struct->color; idtype = type_struct->id; if(p0 == NULL) { @@ -2010,15 +2628,45 @@ var = 0; var = p0->type->type_table[cltype] == idtype; } } -if (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/list.nit", 309); -exit(1); +if (unlikely(!var)) { +var_class_name = p0 == NULL ? "null" : p0->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 349); +show_backtrace(1); } self->attrs[COLOR_list__ListNode___prev].val = p0; /* _prev on */ RET_LABEL:; } /* method list#ListNode#prev= for (self: Object, nullable ListNode[nullable Object]) */ void VIRTUAL_list__ListNode__prev_61d(val* self, val* p0) { -list__ListNode__prev_61d(self, p0); +short int var /* : Bool */; +int cltype; +int idtype; +const struct type* type_struct; +const char* var_class_name; +{ /* Inline list#ListNode#prev= (self,p0) on */ +/* Covariant cast for argument 0 (prev) isa nullable ListNode[E] */ +/* isa nullable ListNode[E] */ +type_struct = self->type->resolution_table->types[COLOR_nullable_list__ListNodelist__ListNode_FT0]; +cltype = type_struct->color; +idtype = type_struct->id; +if(p0 == NULL) { +var = 1; +} 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`", "nullable ListNode[E]", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/list.nit", 349); +show_backtrace(1); +} +self->attrs[COLOR_list__ListNode___prev].val = p0; /* _prev on */ +RET_LABEL1:(void)0; +} RET_LABEL:; }