#include "core__list.sep.0.h"
-/* method list#List#[] for (self: List[nullable Object], Int): nullable Object */
+/* method list$List$[] for (self: List[nullable Object], Int): nullable Object */
val* core___core__List___core__abstract_collection__SequenceRead___91d_93d(val* self, long p0) {
val* var /* : nullable Object */;
long var_index /* var index: Int */;
{
var1 = core___core__List___get_node(self, var_index);
}
-if (var1 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 24);
-fatal_exit(1);
-} else {
-{ /* Inline abstract_collection#Ref#item (var1) on <var1:nullable ListNode[nullable Object]> */
if (unlikely(var1 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 334);
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 24);
fatal_exit(1);
}
-var4 = var1->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <var1:nullable ListNode[nullable Object]> */
+{
+{ /* Inline abstract_collection$Ref$item (var1) on <var1:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+var4 = var1->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <var1:nullable ListNode[nullable Object](ListNode[nullable Object])> */
var2 = var4;
RET_LABEL3:(void)0;
}
RET_LABEL:;
return var;
}
-/* method list#List#[]= for (self: List[nullable Object], Int, nullable Object) */
+/* method list$List$[]= for (self: List[nullable Object], Int, nullable Object) */
void core___core__List___core__abstract_collection__Sequence___91d_93d_61d(val* self, long p0, val* p1) {
short int var /* : Bool */;
int cltype;
{
var1 = core___core__List___get_node(self, var_index);
}
-if (var1 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
+if (unlikely(var1 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Cast failed");
PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 26);
fatal_exit(1);
-} else {
-{ /* Inline abstract_collection#Ref#item= (var1,var_item) on <var1:nullable ListNode[nullable Object]> */
+}
+{
+{ /* Inline abstract_collection$Ref$item= (var1,var_item) on <var1:nullable ListNode[nullable Object](ListNode[nullable Object])> */
/* Covariant cast for argument 0 (item) <var_item:nullable Object> isa E */
/* <var_item:nullable Object> isa E */
type_struct6 = var1->type->resolution_table->types[COLOR_core__Ref___35dE];
if (unlikely(!var3)) {
var_class_name8 = var_item == NULL ? "null" : (((long)var_item&3)?type_info[((long)var_item&3)]:var_item->type)->name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name8);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 334);
-fatal_exit(1);
-}
-if (unlikely(var1 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 334);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 340);
fatal_exit(1);
}
-var1->attrs[COLOR_core__abstract_collection__Ref___item].val = var_item; /* _item on <var1:nullable ListNode[nullable Object]> */
+var1->attrs[COLOR_core__abstract_collection__Ref___item].val = var_item; /* _item on <var1:nullable ListNode[nullable Object](ListNode[nullable Object])> */
RET_LABEL2:(void)0;
}
}
RET_LABEL:;
}
-/* method list#List#first for (self: List[nullable Object]): nullable Object */
+/* method list$List$first for (self: List[nullable Object]): nullable Object */
val* core___core__List___core__abstract_collection__Collection__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_core__list__List___head].val; /* _head on <self:List[nullable Object]> */
-if (var1 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 29);
-fatal_exit(1);
-} else {
-{ /* Inline abstract_collection#Ref#item (var1) on <var1:nullable ListNode[nullable Object]> */
if (unlikely(var1 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 334);
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 29);
fatal_exit(1);
}
-var4 = var1->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <var1:nullable ListNode[nullable Object]> */
+{
+{ /* Inline abstract_collection$Ref$item (var1) on <var1:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+var4 = var1->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <var1:nullable ListNode[nullable Object](ListNode[nullable Object])> */
var2 = var4;
RET_LABEL3:(void)0;
}
RET_LABEL:;
return var;
}
-/* method list#List#first= for (self: List[nullable Object], nullable Object) */
+/* method list$List$first= for (self: List[nullable Object], nullable Object) */
void core___core__List___core__abstract_collection__Sequence__first_61d(val* self, val* p0) {
short int var /* : Bool */;
int cltype;
}
var_e = p0;
var1 = self->attrs[COLOR_core__list__List___head].val; /* _head on <self:List[nullable Object]> */
-if (var1 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
+if (unlikely(var1 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Cast failed");
PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 32);
fatal_exit(1);
-} else {
-{ /* Inline abstract_collection#Ref#item= (var1,var_e) on <var1:nullable ListNode[nullable Object]> */
+}
+{
+{ /* Inline abstract_collection$Ref$item= (var1,var_e) on <var1:nullable ListNode[nullable Object](ListNode[nullable Object])> */
/* Covariant cast for argument 0 (item) <var_e:nullable Object> isa E */
/* <var_e:nullable Object> isa E */
type_struct6 = var1->type->resolution_table->types[COLOR_core__Ref___35dE];
if (unlikely(!var3)) {
var_class_name8 = var_e == NULL ? "null" : (((long)var_e&3)?type_info[((long)var_e&3)]:var_e->type)->name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name8);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 334);
-fatal_exit(1);
-}
-if (unlikely(var1 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 334);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 340);
fatal_exit(1);
}
-var1->attrs[COLOR_core__abstract_collection__Ref___item].val = var_e; /* _item on <var1:nullable ListNode[nullable Object]> */
+var1->attrs[COLOR_core__abstract_collection__Ref___item].val = var_e; /* _item on <var1:nullable ListNode[nullable Object](ListNode[nullable Object])> */
RET_LABEL2:(void)0;
}
}
RET_LABEL:;
}
-/* method list#List#last for (self: List[nullable Object]): nullable Object */
+/* method list$List$last for (self: List[nullable Object]): nullable Object */
val* core___core__List___core__abstract_collection__SequenceRead__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_core__list__List___tail].val; /* _tail on <self:List[nullable Object]> */
-if (var1 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 35);
-fatal_exit(1);
-} else {
-{ /* Inline abstract_collection#Ref#item (var1) on <var1:nullable ListNode[nullable Object]> */
if (unlikely(var1 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 334);
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 35);
fatal_exit(1);
}
-var4 = var1->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <var1:nullable ListNode[nullable Object]> */
+{
+{ /* Inline abstract_collection$Ref$item (var1) on <var1:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+var4 = var1->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <var1:nullable ListNode[nullable Object](ListNode[nullable Object])> */
var2 = var4;
RET_LABEL3:(void)0;
}
RET_LABEL:;
return var;
}
-/* method list#List#is_empty for (self: List[nullable Object]): Bool */
+/* method list$List$is_empty for (self: List[nullable Object]): Bool */
short int core___core__List___core__abstract_collection__Collection__is_empty(val* self) {
short int var /* : Bool */;
val* var1 /* : nullable ListNode[nullable Object] */;
var2 = 0; /* arg is null but recv is not */
}
if (0) {
-{ /* Inline kernel#Object#== (var1,((val*)NULL)) on <var1:nullable ListNode[nullable Object]> */
+{ /* Inline kernel$Object$== (var1,((val*)NULL)) on <var1:nullable ListNode[nullable Object]> */
var_other = ((val*)NULL);
{
-{ /* Inline kernel#Object#is_same_instance (var1,var_other) on <var1:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+{ /* Inline kernel$Object$is_same_instance (var1,var_other) on <var1:nullable ListNode[nullable Object](ListNode[nullable Object])> */
var7 = var1 == var_other;
var5 = var7;
goto RET_LABEL6;
RET_LABEL:;
return var;
}
-/* method list#List#length for (self: List[nullable Object]): Int */
+/* method list$List$length for (self: List[nullable Object]): Int */
long core___core__List___core__abstract_collection__Collection__length(val* self) {
long var /* : Int */;
long var1 /* : Int */;
RET_LABEL:;
return var;
}
-/* method list#List#length= for (self: List[nullable Object], Int) */
+/* method list$List$length= for (self: List[nullable Object], Int) */
void core___core__List___length_61d(val* self, long p0) {
self->attrs[COLOR_core__list__List___length].l = p0; /* _length on <self:List[nullable Object]> */
RET_LABEL:;
}
-/* method list#List#has for (self: List[nullable Object], nullable Object): Bool */
+/* method list$List$has for (self: List[nullable Object], nullable Object): Bool */
short int core___core__List___core__abstract_collection__Collection__has(val* self, val* p0) {
short int var /* : Bool */;
val* var_e /* var e: nullable Object */;
var4 = 1; /* arg is null and recv is not */
}
if (0) {
-{ /* Inline kernel#Object#!= (var3,((val*)NULL)) on <var3:nullable ListNode[nullable Object]> */
+{ /* Inline kernel$Object$!= (var3,((val*)NULL)) on <var3:nullable ListNode[nullable Object]> */
var_other = ((val*)NULL);
{
var7 = ((short int(*)(val* self, val* p0))(var3->class->vft[COLOR_core__kernel__Object___61d_61d]))(var3, var_other); /* == on <var3:nullable ListNode[nullable Object](ListNode[nullable Object])>*/
RET_LABEL:;
return var;
}
-/* method list#List#push for (self: List[nullable Object], nullable Object) */
+/* method list$List$count for (self: List[nullable Object], nullable Object): Int */
+long core___core__List___core__abstract_collection__Collection__count(val* self, val* p0) {
+long var /* : Int */;
+val* var_e /* var e: nullable Object */;
+long var_nb /* var nb: Int */;
+val* var1 /* : nullable ListNode[nullable Object] */;
+val* var_node /* var node: nullable ListNode[nullable Object] */;
+short int var2 /* : Bool */;
+short int var3 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
+val* var7 /* : nullable Object */;
+val* var9 /* : nullable Object */;
+short int var10 /* : Bool */;
+short int var11 /* : Bool */;
+long var12 /* : Int */;
+short int var14 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+long var15 /* : Int */;
+val* var16 /* : nullable ListNode[nullable Object] */;
+val* var18 /* : nullable ListNode[nullable Object] */;
+var_e = p0;
+var_nb = 0l;
+var1 = self->attrs[COLOR_core__list__List___head].val; /* _head on <self:List[nullable Object]> */
+var_node = var1;
+for(;;) {
+if (var_node == NULL) {
+var2 = 0; /* is null */
+} else {
+var2 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel$Object$!= (var_node,((val*)NULL)) on <var_node:nullable ListNode[nullable Object]> */
+var_other = ((val*)NULL);
+{
+var5 = ((short int(*)(val* self, val* p0))(var_node->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_node, var_other); /* == on <var_node:nullable ListNode[nullable Object](ListNode[nullable Object])>*/
+}
+var6 = !var5;
+var3 = var6;
+goto RET_LABEL4;
+RET_LABEL4:(void)0;
+}
+var2 = var3;
+}
+if (var2){
+{
+{ /* Inline abstract_collection$Ref$item (var_node) on <var_node:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+var9 = var_node->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <var_node:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+var7 = var9;
+RET_LABEL8:(void)0;
+}
+}
+if (var7 == NULL) {
+var10 = (var_e != NULL);
+} else {
+var11 = ((short int(*)(val* self, val* p0))((((long)var7&3)?class_info[((long)var7&3)]:var7->class)->vft[COLOR_core__kernel__Object___33d_61d]))(var7, var_e); /* != on <var7:nullable Object>*/
+var10 = var11;
+}
+if (var10){
+{
+{ /* Inline kernel$Int$+ (var_nb,1l) on <var_nb:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var14 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var14)) {
+var_class_name = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+fatal_exit(1);
+}
+var15 = var_nb + 1l;
+var12 = var15;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
+}
+}
+var_nb = var12;
+} else {
+}
+{
+{ /* Inline list$ListNode$next (var_node) on <var_node:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+var18 = var_node->attrs[COLOR_core__list__ListNode___next].val; /* _next on <var_node:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+var16 = var18;
+RET_LABEL17:(void)0;
+}
+}
+var_node = var16;
+} else {
+goto BREAK_label;
+}
+}
+BREAK_label: (void)0;
+var = var_nb;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method list$List$push for (self: List[nullable Object], nullable Object) */
void core___core__List___core__abstract_collection__Sequence__push(val* self, val* p0) {
short int var /* : Bool */;
int cltype;
val* var1 /* : ListNode[nullable Object] */;
val* var_node /* var node: ListNode[nullable Object] */;
val* var2 /* : nullable ListNode[nullable Object] */;
+val* var_tail /* var tail: nullable ListNode[nullable Object] */;
short int var3 /* : Bool */;
short int var4 /* : Bool */;
val* var_other /* var other: nullable Object */;
short int var6 /* : Bool */;
short int var8 /* : Bool */;
-val* var9 /* : nullable ListNode[nullable Object] */;
-short int var11 /* : Bool */;
-int cltype12;
-int idtype13;
-const struct type* type_struct14;
-const char* var_class_name15;
-val* var16 /* : nullable ListNode[nullable Object] */;
-short int var18 /* : Bool */;
-int cltype19;
-int idtype20;
-const struct type* type_struct21;
-const char* var_class_name22;
+short int var10 /* : Bool */;
+int cltype11;
+int idtype12;
+const struct type* type_struct13;
+const char* var_class_name14;
+short int var16 /* : Bool */;
+int cltype17;
+int idtype18;
+const struct type* type_struct19;
+const char* var_class_name20;
val* var_ /* var : List[nullable Object] */;
+long var21 /* : Int */;
long var23 /* : Int */;
-long var25 /* : Int */;
-long var26 /* : Int */;
-short int var28 /* : Bool */;
-int cltype29;
-int idtype30;
-const char* var_class_name31;
-long var32 /* : Int */;
+long var24 /* : Int */;
+short int var26 /* : Bool */;
+int cltype27;
+int idtype28;
+const char* var_class_name29;
+long var30 /* : Int */;
/* Covariant cast for argument 0 (e) <p0:nullable Object> isa E */
/* <p0:nullable Object> isa E */
type_struct = self->type->resolution_table->types[COLOR_core__List___35dE];
}
var_node = var1;
var2 = self->attrs[COLOR_core__list__List___tail].val; /* _tail on <self:List[nullable Object]> */
-if (var2 == NULL) {
+var_tail = var2;
+if (var_tail == NULL) {
var3 = 1; /* is null */
} else {
var3 = 0; /* arg is null but recv is not */
}
if (0) {
-{ /* Inline kernel#Object#== (var2,((val*)NULL)) on <var2:nullable ListNode[nullable Object]> */
+{ /* Inline kernel$Object$== (var_tail,((val*)NULL)) on <var_tail:nullable ListNode[nullable Object]> */
var_other = ((val*)NULL);
{
-{ /* Inline kernel#Object#is_same_instance (var2,var_other) on <var2:nullable ListNode[nullable Object](ListNode[nullable Object])> */
-var8 = var2 == var_other;
+{ /* Inline kernel$Object$is_same_instance (var_tail,var_other) on <var_tail:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+var8 = var_tail == var_other;
var6 = var8;
goto RET_LABEL7;
RET_LABEL7:(void)0;
if (var3){
self->attrs[COLOR_core__list__List___head].val = var_node; /* _head on <self:List[nullable Object]> */
} else {
-var9 = self->attrs[COLOR_core__list__List___tail].val; /* _tail on <self:List[nullable Object]> */
-if (var9 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 93);
-fatal_exit(1);
-} else {
-{ /* Inline list#ListNode#next= (var9,var_node) on <var9:nullable ListNode[nullable Object]> */
+{
+{ /* Inline list$ListNode$next= (var_tail,var_node) on <var_tail:nullable ListNode[nullable Object](ListNode[nullable Object])> */
/* Covariant cast for argument 0 (next) <var_node:ListNode[nullable Object]> isa nullable ListNode[E] */
/* <var_node:ListNode[nullable Object]> isa nullable ListNode[E] */
-type_struct14 = var9->type->resolution_table->types[COLOR_nullable__core__list__ListNode__core__list__ListNode___35dE];
-cltype12 = type_struct14->color;
-idtype13 = type_struct14->id;
-if(cltype12 >= var_node->type->table_size) {
-var11 = 0;
+type_struct13 = var_tail->type->resolution_table->types[COLOR_nullable__core__list__ListNode__core__list__ListNode___35dE];
+cltype11 = type_struct13->color;
+idtype12 = type_struct13->id;
+if(cltype11 >= var_node->type->table_size) {
+var10 = 0;
} else {
-var11 = var_node->type->type_table[cltype12] == idtype13;
+var10 = var_node->type->type_table[cltype11] == idtype12;
}
-if (unlikely(!var11)) {
-var_class_name15 = var_node == NULL ? "null" : var_node->type->name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name15);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
+if (unlikely(!var10)) {
+var_class_name14 = var_node == NULL ? "null" : var_node->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name14);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 334);
fatal_exit(1);
}
-if (unlikely(var9 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
-fatal_exit(1);
-}
-var9->attrs[COLOR_core__list__ListNode___next].val = var_node; /* _next on <var9:nullable ListNode[nullable Object]> */
-RET_LABEL10:(void)0;
+var_tail->attrs[COLOR_core__list__ListNode___next].val = var_node; /* _next on <var_tail:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+RET_LABEL9:(void)0;
}
}
-var16 = self->attrs[COLOR_core__list__List___tail].val; /* _tail on <self:List[nullable Object]> */
{
-{ /* Inline list#ListNode#prev= (var_node,var16) on <var_node:ListNode[nullable Object]> */
-/* Covariant cast for argument 0 (prev) <var16:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
-/* <var16:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
-type_struct21 = var_node->type->resolution_table->types[COLOR_nullable__core__list__ListNode__core__list__ListNode___35dE];
-cltype19 = type_struct21->color;
-idtype20 = type_struct21->id;
-if(var16 == NULL) {
-var18 = 1;
-} else {
-if(cltype19 >= var16->type->table_size) {
-var18 = 0;
+{ /* Inline list$ListNode$prev= (var_node,var_tail) on <var_node:ListNode[nullable Object]> */
+/* Covariant cast for argument 0 (prev) <var_tail:nullable ListNode[nullable Object](ListNode[nullable Object])> isa nullable ListNode[E] */
+/* <var_tail:nullable ListNode[nullable Object](ListNode[nullable Object])> isa nullable ListNode[E] */
+type_struct19 = var_node->type->resolution_table->types[COLOR_nullable__core__list__ListNode__core__list__ListNode___35dE];
+cltype17 = type_struct19->color;
+idtype18 = type_struct19->id;
+if(cltype17 >= var_tail->type->table_size) {
+var16 = 0;
} else {
-var18 = var16->type->type_table[cltype19] == idtype20;
-}
+var16 = var_tail->type->type_table[cltype17] == idtype18;
}
-if (unlikely(!var18)) {
-var_class_name22 = var16 == NULL ? "null" : var16->type->name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name22);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
+if (unlikely(!var16)) {
+var_class_name20 = var_tail == NULL ? "null" : var_tail->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name20);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 337);
fatal_exit(1);
}
-var_node->attrs[COLOR_core__list__ListNode___prev].val = var16; /* _prev on <var_node:ListNode[nullable Object]> */
-RET_LABEL17:(void)0;
+var_node->attrs[COLOR_core__list__ListNode___prev].val = var_tail; /* _prev on <var_node:ListNode[nullable Object]> */
+RET_LABEL15:(void)0;
}
}
}
self->attrs[COLOR_core__list__List___tail].val = var_node; /* _tail on <self:List[nullable Object]> */
var_ = self;
{
-{ /* Inline list#List#length (var_) on <var_:List[nullable Object]> */
-var25 = var_->attrs[COLOR_core__list__List___length].l; /* _length on <var_:List[nullable Object]> */
-var23 = var25;
-RET_LABEL24:(void)0;
+{ /* Inline list$List$length (var_) on <var_:List[nullable Object]> */
+var23 = var_->attrs[COLOR_core__list__List___length].l; /* _length on <var_:List[nullable Object]> */
+var21 = var23;
+RET_LABEL22:(void)0;
}
}
{
-{ /* Inline kernel#Int#+ (var23,1l) on <var23:Int> */
+{ /* Inline kernel$Int$+ (var21,1l) on <var21:Int> */
/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
/* <1l:Int> isa OTHER */
-var28 = 1; /* easy <1l:Int> isa OTHER*/
-if (unlikely(!var28)) {
-var_class_name31 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name31);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+var26 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var26)) {
+var_class_name29 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name29);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
fatal_exit(1);
}
-var32 = var23 + 1l;
-var26 = var32;
-goto RET_LABEL27;
-RET_LABEL27:(void)0;
+var30 = var21 + 1l;
+var24 = var30;
+goto RET_LABEL25;
+RET_LABEL25:(void)0;
}
}
{
-{ /* Inline list#List#length= (var_,var26) on <var_:List[nullable Object]> */
-var_->attrs[COLOR_core__list__List___length].l = var26; /* _length on <var_:List[nullable Object]> */
-RET_LABEL33:(void)0;
+{ /* Inline list$List$length= (var_,var24) on <var_:List[nullable Object]> */
+var_->attrs[COLOR_core__list__List___length].l = var24; /* _length on <var_:List[nullable Object]> */
+RET_LABEL31:(void)0;
}
}
RET_LABEL:;
}
-/* method list#List#unshift for (self: List[nullable Object], nullable Object) */
+/* method list$List$unshift for (self: List[nullable Object], nullable Object) */
void core___core__List___core__abstract_collection__Sequence__unshift(val* self, val* p0) {
short int var /* : Bool */;
int cltype;
val* var1 /* : ListNode[nullable Object] */;
val* var_node /* var node: ListNode[nullable Object] */;
val* var2 /* : nullable ListNode[nullable Object] */;
+val* var_head /* var head: nullable ListNode[nullable Object] */;
short int var3 /* : Bool */;
short int var4 /* : Bool */;
val* var_other /* var other: nullable Object */;
short int var6 /* : Bool */;
short int var8 /* : Bool */;
-val* var9 /* : nullable ListNode[nullable Object] */;
-short int var11 /* : Bool */;
-int cltype12;
-int idtype13;
-const struct type* type_struct14;
-const char* var_class_name15;
-val* var16 /* : nullable ListNode[nullable Object] */;
-short int var18 /* : Bool */;
-int cltype19;
-int idtype20;
-const struct type* type_struct21;
-const char* var_class_name22;
+short int var10 /* : Bool */;
+int cltype11;
+int idtype12;
+const struct type* type_struct13;
+const char* var_class_name14;
+short int var16 /* : Bool */;
+int cltype17;
+int idtype18;
+const struct type* type_struct19;
+const char* var_class_name20;
val* var_ /* var : List[nullable Object] */;
+long var21 /* : Int */;
long var23 /* : Int */;
-long var25 /* : Int */;
-long var26 /* : Int */;
-short int var28 /* : Bool */;
-int cltype29;
-int idtype30;
-const char* var_class_name31;
-long var32 /* : Int */;
+long var24 /* : Int */;
+short int var26 /* : Bool */;
+int cltype27;
+int idtype28;
+const char* var_class_name29;
+long var30 /* : Int */;
/* Covariant cast for argument 0 (e) <p0:nullable Object> isa E */
/* <p0:nullable Object> isa E */
type_struct = self->type->resolution_table->types[COLOR_core__List___35dE];
if (unlikely(!var)) {
var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 100);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 101);
fatal_exit(1);
}
var_e = p0;
}
var_node = var1;
var2 = self->attrs[COLOR_core__list__List___head].val; /* _head on <self:List[nullable Object]> */
-if (var2 == NULL) {
+var_head = var2;
+if (var_head == NULL) {
var3 = 1; /* is null */
} else {
var3 = 0; /* arg is null but recv is not */
}
if (0) {
-{ /* Inline kernel#Object#== (var2,((val*)NULL)) on <var2:nullable ListNode[nullable Object]> */
+{ /* Inline kernel$Object$== (var_head,((val*)NULL)) on <var_head:nullable ListNode[nullable Object]> */
var_other = ((val*)NULL);
{
-{ /* Inline kernel#Object#is_same_instance (var2,var_other) on <var2:nullable ListNode[nullable Object](ListNode[nullable Object])> */
-var8 = var2 == var_other;
+{ /* Inline kernel$Object$is_same_instance (var_head,var_other) on <var_head:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+var8 = var_head == var_other;
var6 = var8;
goto RET_LABEL7;
RET_LABEL7:(void)0;
if (var3){
self->attrs[COLOR_core__list__List___tail].val = var_node; /* _tail on <self:List[nullable Object]> */
} else {
-var9 = self->attrs[COLOR_core__list__List___head].val; /* _head on <self:List[nullable Object]> */
{
-{ /* Inline list#ListNode#next= (var_node,var9) on <var_node:ListNode[nullable Object]> */
-/* Covariant cast for argument 0 (next) <var9:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
-/* <var9:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
-type_struct14 = var_node->type->resolution_table->types[COLOR_nullable__core__list__ListNode__core__list__ListNode___35dE];
-cltype12 = type_struct14->color;
-idtype13 = type_struct14->id;
-if(var9 == NULL) {
-var11 = 1;
-} else {
-if(cltype12 >= var9->type->table_size) {
-var11 = 0;
+{ /* Inline list$ListNode$next= (var_node,var_head) on <var_node:ListNode[nullable Object]> */
+/* Covariant cast for argument 0 (next) <var_head:nullable ListNode[nullable Object](ListNode[nullable Object])> isa nullable ListNode[E] */
+/* <var_head:nullable ListNode[nullable Object](ListNode[nullable Object])> isa nullable ListNode[E] */
+type_struct13 = var_node->type->resolution_table->types[COLOR_nullable__core__list__ListNode__core__list__ListNode___35dE];
+cltype11 = type_struct13->color;
+idtype12 = type_struct13->id;
+if(cltype11 >= var_head->type->table_size) {
+var10 = 0;
} else {
-var11 = var9->type->type_table[cltype12] == idtype13;
+var10 = var_head->type->type_table[cltype11] == idtype12;
}
-}
-if (unlikely(!var11)) {
-var_class_name15 = var9 == NULL ? "null" : var9->type->name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name15);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
+if (unlikely(!var10)) {
+var_class_name14 = var_head == NULL ? "null" : var_head->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name14);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 334);
fatal_exit(1);
}
-var_node->attrs[COLOR_core__list__ListNode___next].val = var9; /* _next on <var_node:ListNode[nullable Object]> */
-RET_LABEL10:(void)0;
+var_node->attrs[COLOR_core__list__ListNode___next].val = var_head; /* _next on <var_node:ListNode[nullable Object]> */
+RET_LABEL9:(void)0;
}
}
-var16 = self->attrs[COLOR_core__list__List___head].val; /* _head on <self:List[nullable Object]> */
-if (var16 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 108);
-fatal_exit(1);
-} else {
-{ /* Inline list#ListNode#prev= (var16,var_node) on <var16:nullable ListNode[nullable Object]> */
+{
+{ /* Inline list$ListNode$prev= (var_head,var_node) on <var_head:nullable ListNode[nullable Object](ListNode[nullable Object])> */
/* Covariant cast for argument 0 (prev) <var_node:ListNode[nullable Object]> isa nullable ListNode[E] */
/* <var_node:ListNode[nullable Object]> isa nullable ListNode[E] */
-type_struct21 = var16->type->resolution_table->types[COLOR_nullable__core__list__ListNode__core__list__ListNode___35dE];
-cltype19 = type_struct21->color;
-idtype20 = type_struct21->id;
-if(cltype19 >= var_node->type->table_size) {
-var18 = 0;
-} else {
-var18 = var_node->type->type_table[cltype19] == idtype20;
-}
-if (unlikely(!var18)) {
-var_class_name22 = var_node == NULL ? "null" : var_node->type->name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name22);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
-fatal_exit(1);
+type_struct19 = var_head->type->resolution_table->types[COLOR_nullable__core__list__ListNode__core__list__ListNode___35dE];
+cltype17 = type_struct19->color;
+idtype18 = type_struct19->id;
+if(cltype17 >= var_node->type->table_size) {
+var16 = 0;
+} else {
+var16 = var_node->type->type_table[cltype17] == idtype18;
}
-if (unlikely(var16 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
+if (unlikely(!var16)) {
+var_class_name20 = var_node == NULL ? "null" : var_node->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name20);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 337);
fatal_exit(1);
}
-var16->attrs[COLOR_core__list__ListNode___prev].val = var_node; /* _prev on <var16:nullable ListNode[nullable Object]> */
-RET_LABEL17:(void)0;
+var_head->attrs[COLOR_core__list__ListNode___prev].val = var_node; /* _prev on <var_head:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+RET_LABEL15:(void)0;
}
}
}
self->attrs[COLOR_core__list__List___head].val = var_node; /* _head on <self:List[nullable Object]> */
var_ = self;
{
-{ /* Inline list#List#length (var_) on <var_:List[nullable Object]> */
-var25 = var_->attrs[COLOR_core__list__List___length].l; /* _length on <var_:List[nullable Object]> */
-var23 = var25;
-RET_LABEL24:(void)0;
+{ /* Inline list$List$length (var_) on <var_:List[nullable Object]> */
+var23 = var_->attrs[COLOR_core__list__List___length].l; /* _length on <var_:List[nullable Object]> */
+var21 = var23;
+RET_LABEL22:(void)0;
}
}
{
-{ /* Inline kernel#Int#+ (var23,1l) on <var23:Int> */
+{ /* Inline kernel$Int$+ (var21,1l) on <var21:Int> */
/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
/* <1l:Int> isa OTHER */
-var28 = 1; /* easy <1l:Int> isa OTHER*/
-if (unlikely(!var28)) {
-var_class_name31 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name31);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+var26 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var26)) {
+var_class_name29 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name29);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
fatal_exit(1);
}
-var32 = var23 + 1l;
-var26 = var32;
-goto RET_LABEL27;
-RET_LABEL27:(void)0;
+var30 = var21 + 1l;
+var24 = var30;
+goto RET_LABEL25;
+RET_LABEL25:(void)0;
}
}
{
-{ /* Inline list#List#length= (var_,var26) on <var_:List[nullable Object]> */
-var_->attrs[COLOR_core__list__List___length].l = var26; /* _length on <var_:List[nullable Object]> */
-RET_LABEL33:(void)0;
+{ /* Inline list$List$length= (var_,var24) on <var_:List[nullable Object]> */
+var_->attrs[COLOR_core__list__List___length].l = var24; /* _length on <var_:List[nullable Object]> */
+RET_LABEL31:(void)0;
}
}
RET_LABEL:;
}
-/* method list#List#insert for (self: List[nullable Object], nullable Object, Int) */
+/* method list$List$insert for (self: List[nullable Object], nullable Object, Int) */
void core___core__List___core__abstract_collection__Sequence__insert(val* self, val* p0, long p1) {
short int var /* : Bool */;
int cltype;
if (unlikely(!var)) {
var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 114);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 116);
fatal_exit(1);
}
var_e = p0;
var2 = 0; /* arg is null but recv is not */
}
if (0) {
-{ /* Inline kernel#Object#== (var_node,((val*)NULL)) on <var_node:nullable ListNode[nullable Object]> */
+{ /* Inline kernel$Object$== (var_node,((val*)NULL)) on <var_node:nullable ListNode[nullable Object]> */
var_other = ((val*)NULL);
{
-{ /* Inline kernel#Object#is_same_instance (var_node,var_other) on <var_node:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+{ /* Inline kernel$Object$is_same_instance (var_node,var_other) on <var_node:nullable ListNode[nullable Object](ListNode[nullable Object])> */
var7 = var_node == var_other;
var5 = var7;
goto RET_LABEL6;
}
if (var2){
{
-core___core__List___core__abstract_collection__Sequence__push(self, var_e); /* Direct call list#List#push on <self:List[nullable Object]>*/
+core___core__List___core__abstract_collection__Sequence__push(self, var_e); /* Direct call list$List$push on <self:List[nullable Object]>*/
}
goto RET_LABEL;
} else {
}
{
-core___core__List___insert_before(self, var_e, var_node); /* Direct call list#List#insert_before on <self:List[nullable Object]>*/
+core___core__List___insert_before(self, var_e, var_node); /* Direct call list$List$insert_before on <self:List[nullable Object]>*/
}
RET_LABEL:;
}
-/* method list#List#pop for (self: List[nullable Object]): nullable Object */
+/* method list$List$pop for (self: List[nullable Object]): nullable Object */
val* core___core__List___core__abstract_collection__Sequence__pop(val* self) {
val* var /* : nullable Object */;
val* var1 /* : nullable ListNode[nullable Object] */;
-val* var_node /* var node: nullable ListNode[nullable Object] */;
+val* var_node /* var node: ListNode[nullable Object] */;
val* var2 /* : nullable ListNode[nullable Object] */;
val* var4 /* : nullable ListNode[nullable Object] */;
short int var6 /* : Bool */;
val* var31 /* : nullable Object */;
val* var33 /* : nullable Object */;
var1 = self->attrs[COLOR_core__list__List___tail].val; /* _tail on <self:List[nullable Object]> */
-var_node = var1;
-if (var_node == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 147);
-fatal_exit(1);
-} else {
-{ /* Inline list#ListNode#prev (var_node) on <var_node:nullable ListNode[nullable Object]> */
-if (unlikely(var_node == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
+if (unlikely(var1 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 149);
fatal_exit(1);
}
-var4 = var_node->attrs[COLOR_core__list__ListNode___prev].val; /* _prev on <var_node:nullable ListNode[nullable Object]> */
+var_node = var1;
+{
+{ /* Inline list$ListNode$prev (var_node) on <var_node:ListNode[nullable Object]> */
+var4 = var_node->attrs[COLOR_core__list__ListNode___prev].val; /* _prev on <var_node:ListNode[nullable Object]> */
var2 = var4;
RET_LABEL3:(void)0;
}
}
self->attrs[COLOR_core__list__List___tail].val = var2; /* _tail on <self:List[nullable Object]> */
-if (var_node == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 148);
-fatal_exit(1);
-} else {
-{ /* Inline list#ListNode#prev= (var_node,((val*)NULL)) on <var_node:nullable ListNode[nullable Object]> */
+{
+{ /* Inline list$ListNode$prev= (var_node,((val*)NULL)) on <var_node:ListNode[nullable Object]> */
/* Covariant cast for argument 0 (prev) <((val*)NULL):null> isa nullable ListNode[E] */
/* <((val*)NULL):null> isa nullable ListNode[E] */
var6 = 1; /* easy <((val*)NULL):null> isa nullable ListNode[E]*/
if (unlikely(!var6)) {
var_class_name = ((val*)NULL) == NULL ? "null" : ((val*)NULL)->type->name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 337);
fatal_exit(1);
}
-if (unlikely(var_node == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
-fatal_exit(1);
-}
-var_node->attrs[COLOR_core__list__ListNode___prev].val = ((val*)NULL); /* _prev on <var_node:nullable ListNode[nullable Object]> */
+var_node->attrs[COLOR_core__list__ListNode___prev].val = ((val*)NULL); /* _prev on <var_node:ListNode[nullable Object]> */
RET_LABEL5:(void)0;
}
}
var8 = 0; /* arg is null but recv is not */
}
if (0) {
-{ /* Inline kernel#Object#== (var7,((val*)NULL)) on <var7:nullable ListNode[nullable Object]> */
+{ /* Inline kernel$Object$== (var7,((val*)NULL)) on <var7:nullable ListNode[nullable Object]> */
var_other = ((val*)NULL);
{
-{ /* Inline kernel#Object#is_same_instance (var7,var_other) on <var7:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+{ /* Inline kernel$Object$is_same_instance (var7,var_other) on <var7:nullable ListNode[nullable Object](ListNode[nullable Object])> */
var13 = var7 == var_other;
var11 = var13;
goto RET_LABEL12;
self->attrs[COLOR_core__list__List___head].val = ((val*)NULL); /* _head on <self:List[nullable Object]> */
} else {
var14 = self->attrs[COLOR_core__list__List___tail].val; /* _tail on <self:List[nullable Object]> */
-if (var14 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 152);
+if (unlikely(var14 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 155);
fatal_exit(1);
-} else {
-{ /* Inline list#ListNode#next= (var14,((val*)NULL)) on <var14:nullable ListNode[nullable Object]> */
+}
+{
+{ /* Inline list$ListNode$next= (var14,((val*)NULL)) on <var14:nullable ListNode[nullable Object](ListNode[nullable Object])> */
/* Covariant cast for argument 0 (next) <((val*)NULL):null> isa nullable ListNode[E] */
/* <((val*)NULL):null> isa nullable ListNode[E] */
var16 = 1; /* easy <((val*)NULL):null> isa nullable ListNode[E]*/
if (unlikely(!var16)) {
var_class_name19 = ((val*)NULL) == NULL ? "null" : ((val*)NULL)->type->name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name19);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
-fatal_exit(1);
-}
-if (unlikely(var14 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 334);
fatal_exit(1);
}
-var14->attrs[COLOR_core__list__ListNode___next].val = ((val*)NULL); /* _next on <var14:nullable ListNode[nullable Object]> */
+var14->attrs[COLOR_core__list__ListNode___next].val = ((val*)NULL); /* _next on <var14:nullable ListNode[nullable Object](ListNode[nullable Object])> */
RET_LABEL15:(void)0;
}
}
}
var_ = self;
{
-{ /* Inline list#List#length (var_) on <var_:List[nullable Object]> */
+{ /* Inline list$List$length (var_) on <var_:List[nullable Object]> */
var22 = var_->attrs[COLOR_core__list__List___length].l; /* _length on <var_:List[nullable Object]> */
var20 = var22;
RET_LABEL21:(void)0;
}
}
{
-{ /* Inline kernel#Int#- (var20,1l) on <var20:Int> */
+{ /* Inline kernel$Int$- (var20,1l) on <var20:Int> */
/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
/* <1l:Int> isa OTHER */
var25 = 1; /* easy <1l:Int> isa OTHER*/
if (unlikely(!var25)) {
var_class_name28 = type_core__Int.name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name28);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
fatal_exit(1);
}
var29 = var20 - 1l;
}
}
{
-{ /* Inline list#List#length= (var_,var23) on <var_:List[nullable Object]> */
+{ /* Inline list$List$length= (var_,var23) on <var_:List[nullable Object]> */
var_->attrs[COLOR_core__list__List___length].l = var23; /* _length on <var_:List[nullable Object]> */
RET_LABEL30:(void)0;
}
}
-if (var_node == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 155);
-fatal_exit(1);
-} else {
-{ /* Inline abstract_collection#Ref#item (var_node) on <var_node:nullable ListNode[nullable Object]> */
-if (unlikely(var_node == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 334);
-fatal_exit(1);
-}
-var33 = var_node->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <var_node:nullable ListNode[nullable Object]> */
+{
+{ /* Inline abstract_collection$Ref$item (var_node) on <var_node:ListNode[nullable Object]> */
+var33 = var_node->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <var_node:ListNode[nullable Object]> */
var31 = var33;
RET_LABEL32:(void)0;
}
RET_LABEL:;
return var;
}
-/* method list#List#shift for (self: List[nullable Object]): nullable Object */
+/* method list$List$shift for (self: List[nullable Object]): nullable Object */
val* core___core__List___core__abstract_collection__Sequence__shift(val* self) {
val* var /* : nullable Object */;
val* var1 /* : nullable ListNode[nullable Object] */;
-val* var_node /* var node: nullable ListNode[nullable Object] */;
+val* var_node /* var node: ListNode[nullable Object] */;
val* var2 /* : nullable ListNode[nullable Object] */;
val* var4 /* : nullable ListNode[nullable Object] */;
short int var6 /* : Bool */;
val* var31 /* : nullable Object */;
val* var33 /* : nullable Object */;
var1 = self->attrs[COLOR_core__list__List___head].val; /* _head on <self:List[nullable Object]> */
-var_node = var1;
-if (var_node == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 162);
-fatal_exit(1);
-} else {
-{ /* Inline list#ListNode#next (var_node) on <var_node:nullable ListNode[nullable Object]> */
-if (unlikely(var_node == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
+if (unlikely(var1 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 164);
fatal_exit(1);
}
-var4 = var_node->attrs[COLOR_core__list__ListNode___next].val; /* _next on <var_node:nullable ListNode[nullable Object]> */
+var_node = var1;
+{
+{ /* Inline list$ListNode$next (var_node) on <var_node:ListNode[nullable Object]> */
+var4 = var_node->attrs[COLOR_core__list__ListNode___next].val; /* _next on <var_node:ListNode[nullable Object]> */
var2 = var4;
RET_LABEL3:(void)0;
}
}
self->attrs[COLOR_core__list__List___head].val = var2; /* _head on <self:List[nullable Object]> */
-if (var_node == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 163);
-fatal_exit(1);
-} else {
-{ /* Inline list#ListNode#next= (var_node,((val*)NULL)) on <var_node:nullable ListNode[nullable Object]> */
+{
+{ /* Inline list$ListNode$next= (var_node,((val*)NULL)) on <var_node:ListNode[nullable Object]> */
/* Covariant cast for argument 0 (next) <((val*)NULL):null> isa nullable ListNode[E] */
/* <((val*)NULL):null> isa nullable ListNode[E] */
var6 = 1; /* easy <((val*)NULL):null> isa nullable ListNode[E]*/
if (unlikely(!var6)) {
var_class_name = ((val*)NULL) == NULL ? "null" : ((val*)NULL)->type->name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
-fatal_exit(1);
-}
-if (unlikely(var_node == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 334);
fatal_exit(1);
}
-var_node->attrs[COLOR_core__list__ListNode___next].val = ((val*)NULL); /* _next on <var_node:nullable ListNode[nullable Object]> */
+var_node->attrs[COLOR_core__list__ListNode___next].val = ((val*)NULL); /* _next on <var_node:ListNode[nullable Object]> */
RET_LABEL5:(void)0;
}
}
var8 = 0; /* arg is null but recv is not */
}
if (0) {
-{ /* Inline kernel#Object#== (var7,((val*)NULL)) on <var7:nullable ListNode[nullable Object]> */
+{ /* Inline kernel$Object$== (var7,((val*)NULL)) on <var7:nullable ListNode[nullable Object]> */
var_other = ((val*)NULL);
{
-{ /* Inline kernel#Object#is_same_instance (var7,var_other) on <var7:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+{ /* Inline kernel$Object$is_same_instance (var7,var_other) on <var7:nullable ListNode[nullable Object](ListNode[nullable Object])> */
var13 = var7 == var_other;
var11 = var13;
goto RET_LABEL12;
self->attrs[COLOR_core__list__List___tail].val = ((val*)NULL); /* _tail on <self:List[nullable Object]> */
} else {
var14 = self->attrs[COLOR_core__list__List___head].val; /* _head on <self:List[nullable Object]> */
-if (var14 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 167);
+if (unlikely(var14 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 170);
fatal_exit(1);
-} else {
-{ /* Inline list#ListNode#prev= (var14,((val*)NULL)) on <var14:nullable ListNode[nullable Object]> */
+}
+{
+{ /* Inline list$ListNode$prev= (var14,((val*)NULL)) on <var14:nullable ListNode[nullable Object](ListNode[nullable Object])> */
/* Covariant cast for argument 0 (prev) <((val*)NULL):null> isa nullable ListNode[E] */
/* <((val*)NULL):null> isa nullable ListNode[E] */
var16 = 1; /* easy <((val*)NULL):null> isa nullable ListNode[E]*/
if (unlikely(!var16)) {
var_class_name19 = ((val*)NULL) == NULL ? "null" : ((val*)NULL)->type->name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name19);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 337);
fatal_exit(1);
}
-if (unlikely(var14 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
-fatal_exit(1);
-}
-var14->attrs[COLOR_core__list__ListNode___prev].val = ((val*)NULL); /* _prev on <var14:nullable ListNode[nullable Object]> */
+var14->attrs[COLOR_core__list__ListNode___prev].val = ((val*)NULL); /* _prev on <var14:nullable ListNode[nullable Object](ListNode[nullable Object])> */
RET_LABEL15:(void)0;
}
}
}
var_ = self;
{
-{ /* Inline list#List#length (var_) on <var_:List[nullable Object]> */
+{ /* Inline list$List$length (var_) on <var_:List[nullable Object]> */
var22 = var_->attrs[COLOR_core__list__List___length].l; /* _length on <var_:List[nullable Object]> */
var20 = var22;
RET_LABEL21:(void)0;
}
}
{
-{ /* Inline kernel#Int#- (var20,1l) on <var20:Int> */
+{ /* Inline kernel$Int$- (var20,1l) on <var20:Int> */
/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
/* <1l:Int> isa OTHER */
var25 = 1; /* easy <1l:Int> isa OTHER*/
if (unlikely(!var25)) {
var_class_name28 = type_core__Int.name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name28);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
fatal_exit(1);
}
var29 = var20 - 1l;
}
}
{
-{ /* Inline list#List#length= (var_,var23) on <var_:List[nullable Object]> */
+{ /* Inline list$List$length= (var_,var23) on <var_:List[nullable Object]> */
var_->attrs[COLOR_core__list__List___length].l = var23; /* _length on <var_:List[nullable Object]> */
RET_LABEL30:(void)0;
}
}
-if (var_node == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 170);
-fatal_exit(1);
-} else {
-{ /* Inline abstract_collection#Ref#item (var_node) on <var_node:nullable ListNode[nullable Object]> */
-if (unlikely(var_node == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 334);
-fatal_exit(1);
-}
-var33 = var_node->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <var_node:nullable ListNode[nullable Object]> */
+{
+{ /* Inline abstract_collection$Ref$item (var_node) on <var_node:ListNode[nullable Object]> */
+var33 = var_node->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <var_node:ListNode[nullable Object]> */
var31 = var33;
RET_LABEL32:(void)0;
}
RET_LABEL:;
return var;
}
-/* method list#List#remove for (self: List[nullable Object], nullable Object) */
+/* method list$List$remove for (self: List[nullable Object], nullable Object) */
void core___core__List___core__abstract_collection__RemovableCollection__remove(val* self, val* p0) {
val* var_e /* var e: nullable Object */;
short int var /* : Bool */;
if (unlikely(!var)) {
var_class_name = var_e == NULL ? "null" : (((long)var_e&3)?type_info[((long)var_e&3)]:var_e->type)->name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 175);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 178);
fatal_exit(1);
}
var1 = self->attrs[COLOR_core__list__List___head].val; /* _head on <self:List[nullable Object]> */
var3 = 1; /* arg is null and recv is not */
}
if (0) {
-{ /* Inline kernel#Object#!= (var_node,((val*)NULL)) on <var_node:nullable ListNode[nullable Object]> */
+{ /* Inline kernel$Object$!= (var_node,((val*)NULL)) on <var_node:nullable ListNode[nullable Object]> */
var_other = ((val*)NULL);
{
var6 = ((short int(*)(val* self, val* p0))(var_node->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_node, var_other); /* == on <var_node:nullable ListNode[nullable Object](ListNode[nullable Object])>*/
}
if (var3){
{
-core___core__List___remove_node(self, var_node); /* Direct call list#List#remove_node on <self:List[nullable Object]>*/
+core___core__List___remove_node(self, var_node); /* Direct call list$List$remove_node on <self:List[nullable Object]>*/
}
} else {
}
RET_LABEL:;
}
-/* method list#List#remove_at for (self: List[nullable Object], Int) */
+/* method list$List$remove_at for (self: List[nullable Object], Int) */
void core___core__List___core__abstract_collection__Sequence__remove_at(val* self, long p0) {
long var_i /* var i: Int */;
val* var /* : nullable ListNode[nullable Object] */;
var1 = 1; /* arg is null and recv is not */
}
if (0) {
-{ /* Inline kernel#Object#!= (var_node,((val*)NULL)) on <var_node:nullable ListNode[nullable Object]> */
+{ /* Inline kernel$Object$!= (var_node,((val*)NULL)) on <var_node:nullable ListNode[nullable Object]> */
var_other = ((val*)NULL);
{
var4 = ((short int(*)(val* self, val* p0))(var_node->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_node, var_other); /* == on <var_node:nullable ListNode[nullable Object](ListNode[nullable Object])>*/
}
if (var1){
{
-core___core__List___remove_node(self, var_node); /* Direct call list#List#remove_node on <self:List[nullable Object]>*/
+core___core__List___remove_node(self, var_node); /* Direct call list$List$remove_node on <self:List[nullable Object]>*/
}
} else {
}
RET_LABEL:;
}
-/* method list#List#clear for (self: List[nullable Object]) */
+/* method list$List$clear for (self: List[nullable Object]) */
void core___core__List___core__abstract_collection__RemovableCollection__clear(val* self) {
self->attrs[COLOR_core__list__List___head].val = ((val*)NULL); /* _head on <self:List[nullable Object]> */
self->attrs[COLOR_core__list__List___tail].val = ((val*)NULL); /* _tail on <self:List[nullable Object]> */
+{
+{ /* Inline list$List$length= (self,0l) on <self:List[nullable Object]> */
+self->attrs[COLOR_core__list__List___length].l = 0l; /* _length on <self:List[nullable Object]> */
+RET_LABEL1:(void)0;
+}
+}
RET_LABEL:;
}
-/* method list#List#iterator for (self: List[nullable Object]): ListIterator[nullable Object] */
+/* method list$List$iterator for (self: List[nullable Object]): ListIterator[nullable Object] */
val* core___core__List___core__abstract_collection__Collection__iterator(val* self) {
val* var /* : ListIterator[nullable Object] */;
val* var1 /* : ListIterator[nullable Object] */;
RET_LABEL:;
return var;
}
-/* method list#List#reverse_iterator for (self: List[nullable Object]): ListIterator[nullable Object] */
+/* method list$List$reverse_iterator for (self: List[nullable Object]): ListIterator[nullable Object] */
val* core___core__List___core__abstract_collection__SequenceRead__reverse_iterator(val* self) {
val* var /* : ListIterator[nullable Object] */;
val* var1 /* : ListReverseIterator[nullable Object] */;
RET_LABEL:;
return var;
}
-/* method list#List#init for (self: List[nullable Object]) */
+/* method list$List$init for (self: List[nullable Object]) */
void core___core__List___core__kernel__Object__init(val* self) {
{
((void(*)(val* self))(self->class->vft[COLOR_core___core__List___core__kernel__Object__init]))(self); /* init on <self:List[nullable Object]>*/
}
RET_LABEL:;
}
-/* method list#List#get_node for (self: List[nullable Object], Int): nullable ListNode[nullable Object] */
+/* method list$List$get_node for (self: List[nullable Object], Int): nullable ListNode[nullable Object] */
val* core___core__List___get_node(val* self, long p0) {
val* var /* : nullable ListNode[nullable Object] */;
long var_i /* var i: Int */;
var1 = self->attrs[COLOR_core__list__List___head].val; /* _head on <self:List[nullable Object]> */
var_n = var1;
{
-{ /* Inline kernel#Int#< (var_i,0l) on <var_i:Int> */
+{ /* Inline kernel$Int$< (var_i,0l) on <var_i:Int> */
/* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
/* <0l:Int> isa OTHER */
var4 = 1; /* easy <0l:Int> isa OTHER*/
if (unlikely(!var4)) {
var_class_name = type_core__Int.name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
fatal_exit(1);
}
var5 = var_i < 0l;
var7 = 1; /* arg is null and recv is not */
}
if (0) {
-{ /* Inline kernel#Object#!= (var_n,((val*)NULL)) on <var_n:nullable ListNode[nullable Object]> */
+{ /* Inline kernel$Object$!= (var_n,((val*)NULL)) on <var_n:nullable ListNode[nullable Object]> */
var_other = ((val*)NULL);
{
var10 = ((short int(*)(val* self, val* p0))(var_n->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_n, var_other); /* == on <var_n:nullable ListNode[nullable Object](ListNode[nullable Object])>*/
var_ = var7;
if (var7){
{
-{ /* Inline kernel#Int#> (var_i,0l) on <var_i:Int> */
+{ /* Inline kernel$Int$> (var_i,0l) on <var_i:Int> */
/* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
/* <0l:Int> isa OTHER */
var14 = 1; /* easy <0l:Int> isa OTHER*/
if (unlikely(!var14)) {
var_class_name17 = type_core__Int.name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name17);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
fatal_exit(1);
}
var18 = var_i > 0l;
}
if (var6){
{
-{ /* Inline list#ListNode#next (var_n) on <var_n:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+{ /* Inline list$ListNode$next (var_n) on <var_n:nullable ListNode[nullable Object](ListNode[nullable Object])> */
var21 = var_n->attrs[COLOR_core__list__ListNode___next].val; /* _next on <var_n:nullable ListNode[nullable Object](ListNode[nullable Object])> */
var19 = var21;
RET_LABEL20:(void)0;
}
var_n = var19;
{
-{ /* Inline kernel#Int#- (var_i,1l) on <var_i:Int> */
+{ /* Inline kernel$Int$- (var_i,1l) on <var_i:Int> */
/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
/* <1l:Int> isa OTHER */
var24 = 1; /* easy <1l:Int> isa OTHER*/
if (unlikely(!var24)) {
var_class_name27 = type_core__Int.name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name27);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
fatal_exit(1);
}
var28 = var_i - 1l;
RET_LABEL:;
return var;
}
-/* method list#List#search_node_after for (self: List[nullable Object], nullable Object, nullable ListNode[nullable Object]): nullable ListNode[nullable Object] */
+/* method list$List$search_node_after for (self: List[nullable Object], nullable Object, nullable ListNode[nullable Object]): nullable ListNode[nullable Object] */
val* core___core__List___search_node_after(val* self, val* p0, val* p1) {
val* var /* : nullable ListNode[nullable Object] */;
short int var1 /* : Bool */;
if (unlikely(!var1)) {
var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 221);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 225);
fatal_exit(1);
}
/* Covariant cast for argument 1 (after) <p1:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
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", FILE_core__list, 221);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 225);
fatal_exit(1);
}
var_e = p0;
var8 = 1; /* arg is null and recv is not */
}
if (0) {
-{ /* Inline kernel#Object#!= (var_n,((val*)NULL)) on <var_n:nullable ListNode[nullable Object]> */
+{ /* Inline kernel$Object$!= (var_n,((val*)NULL)) on <var_n:nullable ListNode[nullable Object]> */
var_other = ((val*)NULL);
{
var11 = ((short int(*)(val* self, val* p0))(var_n->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_n, var_other); /* == on <var_n:nullable ListNode[nullable Object](ListNode[nullable Object])>*/
var_ = var8;
if (var8){
{
-{ /* Inline abstract_collection#Ref#item (var_n) on <var_n:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+{ /* Inline abstract_collection$Ref$item (var_n) on <var_n:nullable ListNode[nullable Object](ListNode[nullable Object])> */
var15 = var_n->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <var_n:nullable ListNode[nullable Object](ListNode[nullable Object])> */
var13 = var15;
RET_LABEL14:(void)0;
}
if (var7){
{
-{ /* Inline list#ListNode#next (var_n) on <var_n:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+{ /* Inline list$ListNode$next (var_n) on <var_n:nullable ListNode[nullable Object](ListNode[nullable Object])> */
var20 = var_n->attrs[COLOR_core__list__ListNode___next].val; /* _next on <var_n:nullable ListNode[nullable Object](ListNode[nullable Object])> */
var18 = var20;
RET_LABEL19:(void)0;
RET_LABEL:;
return var;
}
-/* method list#List#remove_node for (self: List[nullable Object], ListNode[nullable Object]) */
+/* method list$List$remove_node for (self: List[nullable Object], ListNode[nullable Object]) */
void core___core__List___remove_node(val* self, val* p0) {
short int var /* : Bool */;
int cltype;
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", FILE_core__list, 229);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 233);
fatal_exit(1);
}
var_node = p0;
var_ = self;
{
-{ /* Inline list#List#length (var_) on <var_:List[nullable Object]> */
+{ /* Inline list$List$length (var_) on <var_:List[nullable Object]> */
var3 = var_->attrs[COLOR_core__list__List___length].l; /* _length on <var_:List[nullable Object]> */
var1 = var3;
RET_LABEL2:(void)0;
}
}
{
-{ /* Inline kernel#Int#- (var1,1l) on <var1:Int> */
+{ /* Inline kernel$Int$- (var1,1l) on <var1:Int> */
/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
/* <1l:Int> isa OTHER */
var6 = 1; /* easy <1l:Int> isa OTHER*/
if (unlikely(!var6)) {
var_class_name9 = type_core__Int.name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name9);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
fatal_exit(1);
}
var10 = var1 - 1l;
}
}
{
-{ /* Inline list#List#length= (var_,var4) on <var_:List[nullable Object]> */
+{ /* Inline list$List$length= (var_,var4) on <var_:List[nullable Object]> */
var_->attrs[COLOR_core__list__List___length].l = var4; /* _length on <var_:List[nullable Object]> */
RET_LABEL11:(void)0;
}
}
{
-{ /* Inline list#ListNode#prev (var_node) on <var_node:ListNode[nullable Object]> */
+{ /* Inline list$ListNode$prev (var_node) on <var_node:ListNode[nullable Object]> */
var14 = var_node->attrs[COLOR_core__list__ListNode___prev].val; /* _prev on <var_node:ListNode[nullable Object]> */
var12 = var14;
RET_LABEL13:(void)0;
var15 = 0; /* arg is null but recv is not */
}
if (0) {
-{ /* Inline kernel#Object#== (var12,((val*)NULL)) on <var12:nullable ListNode[nullable Object]> */
+{ /* Inline kernel$Object$== (var12,((val*)NULL)) on <var12:nullable ListNode[nullable Object]> */
var_other = ((val*)NULL);
{
-{ /* Inline kernel#Object#is_same_instance (var12,var_other) on <var12:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+{ /* Inline kernel$Object$is_same_instance (var12,var_other) on <var12:nullable ListNode[nullable Object](ListNode[nullable Object])> */
var20 = var12 == var_other;
var18 = var20;
goto RET_LABEL19;
}
if (var15){
{
-{ /* Inline list#ListNode#next (var_node) on <var_node:ListNode[nullable Object]> */
+{ /* Inline list$ListNode$next (var_node) on <var_node:ListNode[nullable Object]> */
var23 = var_node->attrs[COLOR_core__list__ListNode___next].val; /* _next on <var_node:ListNode[nullable Object]> */
var21 = var23;
RET_LABEL22:(void)0;
}
self->attrs[COLOR_core__list__List___head].val = var21; /* _head on <self:List[nullable Object]> */
{
-{ /* Inline list#ListNode#next (var_node) on <var_node:ListNode[nullable Object]> */
+{ /* Inline list$ListNode$next (var_node) on <var_node:ListNode[nullable Object]> */
var26 = var_node->attrs[COLOR_core__list__ListNode___next].val; /* _next on <var_node:ListNode[nullable Object]> */
var24 = var26;
RET_LABEL25:(void)0;
var27 = 0; /* arg is null but recv is not */
}
if (0) {
-{ /* Inline kernel#Object#== (var24,((val*)NULL)) on <var24:nullable ListNode[nullable Object]> */
+{ /* Inline kernel$Object$== (var24,((val*)NULL)) on <var24:nullable ListNode[nullable Object]> */
var_other = ((val*)NULL);
{
-{ /* Inline kernel#Object#is_same_instance (var24,var_other) on <var24:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+{ /* Inline kernel$Object$is_same_instance (var24,var_other) on <var24:nullable ListNode[nullable Object](ListNode[nullable Object])> */
var32 = var24 == var_other;
var30 = var32;
goto RET_LABEL31;
self->attrs[COLOR_core__list__List___tail].val = ((val*)NULL); /* _tail on <self:List[nullable Object]> */
} else {
{
-{ /* Inline list#ListNode#next (var_node) on <var_node:ListNode[nullable Object]> */
+{ /* Inline list$ListNode$next (var_node) on <var_node:ListNode[nullable Object]> */
var35 = var_node->attrs[COLOR_core__list__ListNode___next].val; /* _next on <var_node:ListNode[nullable Object]> */
var33 = var35;
RET_LABEL34:(void)0;
}
}
-if (var33 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 238);
+if (unlikely(var33 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 242);
fatal_exit(1);
-} else {
-{ /* Inline list#ListNode#prev= (var33,((val*)NULL)) on <var33:nullable ListNode[nullable Object]> */
+}
+{
+{ /* Inline list$ListNode$prev= (var33,((val*)NULL)) on <var33:nullable ListNode[nullable Object](ListNode[nullable Object])> */
/* Covariant cast for argument 0 (prev) <((val*)NULL):null> isa nullable ListNode[E] */
/* <((val*)NULL):null> isa nullable ListNode[E] */
var37 = 1; /* easy <((val*)NULL):null> isa nullable ListNode[E]*/
if (unlikely(!var37)) {
var_class_name40 = ((val*)NULL) == NULL ? "null" : ((val*)NULL)->type->name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name40);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
-fatal_exit(1);
-}
-if (unlikely(var33 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 337);
fatal_exit(1);
}
-var33->attrs[COLOR_core__list__ListNode___prev].val = ((val*)NULL); /* _prev on <var33:nullable ListNode[nullable Object]> */
+var33->attrs[COLOR_core__list__ListNode___prev].val = ((val*)NULL); /* _prev on <var33:nullable ListNode[nullable Object](ListNode[nullable Object])> */
RET_LABEL36:(void)0;
}
}
}
} else {
{
-{ /* Inline list#ListNode#next (var_node) on <var_node:ListNode[nullable Object]> */
+{ /* Inline list$ListNode$next (var_node) on <var_node:ListNode[nullable Object]> */
var43 = var_node->attrs[COLOR_core__list__ListNode___next].val; /* _next on <var_node:ListNode[nullable Object]> */
var41 = var43;
RET_LABEL42:(void)0;
var44 = 0; /* arg is null but recv is not */
}
if (0) {
-{ /* Inline kernel#Object#== (var41,((val*)NULL)) on <var41:nullable ListNode[nullable Object]> */
+{ /* Inline kernel$Object$== (var41,((val*)NULL)) on <var41:nullable ListNode[nullable Object]> */
var_other = ((val*)NULL);
{
-{ /* Inline kernel#Object#is_same_instance (var41,var_other) on <var41:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+{ /* Inline kernel$Object$is_same_instance (var41,var_other) on <var41:nullable ListNode[nullable Object](ListNode[nullable Object])> */
var49 = var41 == var_other;
var47 = var49;
goto RET_LABEL48;
}
if (var44){
{
-{ /* Inline list#ListNode#prev (var_node) on <var_node:ListNode[nullable Object]> */
+{ /* Inline list$ListNode$prev (var_node) on <var_node:ListNode[nullable Object]> */
var52 = var_node->attrs[COLOR_core__list__ListNode___prev].val; /* _prev on <var_node:ListNode[nullable Object]> */
var50 = var52;
RET_LABEL51:(void)0;
}
self->attrs[COLOR_core__list__List___tail].val = var50; /* _tail on <self:List[nullable Object]> */
{
-{ /* Inline list#ListNode#prev (var_node) on <var_node:ListNode[nullable Object]> */
+{ /* Inline list$ListNode$prev (var_node) on <var_node:ListNode[nullable Object]> */
var55 = var_node->attrs[COLOR_core__list__ListNode___prev].val; /* _prev on <var_node:ListNode[nullable Object]> */
var53 = var55;
RET_LABEL54:(void)0;
}
}
-if (var53 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 242);
+if (unlikely(var53 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 246);
fatal_exit(1);
-} else {
-{ /* Inline list#ListNode#next= (var53,((val*)NULL)) on <var53:nullable ListNode[nullable Object]> */
+}
+{
+{ /* Inline list$ListNode$next= (var53,((val*)NULL)) on <var53:nullable ListNode[nullable Object](ListNode[nullable Object])> */
/* Covariant cast for argument 0 (next) <((val*)NULL):null> isa nullable ListNode[E] */
/* <((val*)NULL):null> isa nullable ListNode[E] */
var57 = 1; /* easy <((val*)NULL):null> isa nullable ListNode[E]*/
if (unlikely(!var57)) {
var_class_name60 = ((val*)NULL) == NULL ? "null" : ((val*)NULL)->type->name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name60);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
-fatal_exit(1);
-}
-if (unlikely(var53 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 334);
fatal_exit(1);
}
-var53->attrs[COLOR_core__list__ListNode___next].val = ((val*)NULL); /* _next on <var53:nullable ListNode[nullable Object]> */
+var53->attrs[COLOR_core__list__ListNode___next].val = ((val*)NULL); /* _next on <var53:nullable ListNode[nullable Object](ListNode[nullable Object])> */
RET_LABEL56:(void)0;
}
}
} else {
{
-{ /* Inline list#ListNode#prev (var_node) on <var_node:ListNode[nullable Object]> */
+{ /* Inline list$ListNode$prev (var_node) on <var_node:ListNode[nullable Object]> */
var63 = var_node->attrs[COLOR_core__list__ListNode___prev].val; /* _prev on <var_node:ListNode[nullable Object]> */
var61 = var63;
RET_LABEL62:(void)0;
}
}
+if (unlikely(var61 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 248);
+fatal_exit(1);
+}
{
-{ /* Inline list#ListNode#next (var_node) on <var_node:ListNode[nullable Object]> */
+{ /* Inline list$ListNode$next (var_node) on <var_node:ListNode[nullable Object]> */
var66 = var_node->attrs[COLOR_core__list__ListNode___next].val; /* _next on <var_node:ListNode[nullable Object]> */
var64 = var66;
RET_LABEL65:(void)0;
}
}
-if (var61 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 244);
-fatal_exit(1);
-} else {
-{ /* Inline list#ListNode#next= (var61,var64) on <var61:nullable ListNode[nullable Object]> */
+{
+{ /* Inline list$ListNode$next= (var61,var64) on <var61:nullable ListNode[nullable Object](ListNode[nullable Object])> */
/* Covariant cast for argument 0 (next) <var64:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
/* <var64:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
type_struct71 = var61->type->resolution_table->types[COLOR_nullable__core__list__ListNode__core__list__ListNode___35dE];
if (unlikely(!var68)) {
var_class_name72 = var64 == NULL ? "null" : var64->type->name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name72);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
-fatal_exit(1);
-}
-if (unlikely(var61 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 334);
fatal_exit(1);
}
-var61->attrs[COLOR_core__list__ListNode___next].val = var64; /* _next on <var61:nullable ListNode[nullable Object]> */
+var61->attrs[COLOR_core__list__ListNode___next].val = var64; /* _next on <var61:nullable ListNode[nullable Object](ListNode[nullable Object])> */
RET_LABEL67:(void)0;
}
}
{
-{ /* Inline list#ListNode#next (var_node) on <var_node:ListNode[nullable Object]> */
+{ /* Inline list$ListNode$next (var_node) on <var_node:ListNode[nullable Object]> */
var75 = var_node->attrs[COLOR_core__list__ListNode___next].val; /* _next on <var_node:ListNode[nullable Object]> */
var73 = var75;
RET_LABEL74:(void)0;
}
}
+if (unlikely(var73 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 249);
+fatal_exit(1);
+}
{
-{ /* Inline list#ListNode#prev (var_node) on <var_node:ListNode[nullable Object]> */
+{ /* Inline list$ListNode$prev (var_node) on <var_node:ListNode[nullable Object]> */
var78 = var_node->attrs[COLOR_core__list__ListNode___prev].val; /* _prev on <var_node:ListNode[nullable Object]> */
var76 = var78;
RET_LABEL77:(void)0;
}
}
-if (var73 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 245);
-fatal_exit(1);
-} else {
-{ /* Inline list#ListNode#prev= (var73,var76) on <var73:nullable ListNode[nullable Object]> */
+{
+{ /* Inline list$ListNode$prev= (var73,var76) on <var73:nullable ListNode[nullable Object](ListNode[nullable Object])> */
/* Covariant cast for argument 0 (prev) <var76:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
/* <var76:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
type_struct83 = var73->type->resolution_table->types[COLOR_nullable__core__list__ListNode__core__list__ListNode___35dE];
if (unlikely(!var80)) {
var_class_name84 = var76 == NULL ? "null" : var76->type->name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name84);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
-fatal_exit(1);
-}
-if (unlikely(var73 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 337);
fatal_exit(1);
}
-var73->attrs[COLOR_core__list__ListNode___prev].val = var76; /* _prev on <var73:nullable ListNode[nullable Object]> */
+var73->attrs[COLOR_core__list__ListNode___prev].val = var76; /* _prev on <var73:nullable ListNode[nullable Object](ListNode[nullable Object])> */
RET_LABEL79:(void)0;
}
}
}
RET_LABEL:;
}
-/* method list#List#insert_before for (self: List[nullable Object], nullable Object, ListNode[nullable Object]) */
+/* method list$List$insert_before for (self: List[nullable Object], nullable Object, ListNode[nullable Object]) */
void core___core__List___insert_before(val* self, val* p0, val* p1) {
short int var /* : Bool */;
int cltype;
if (unlikely(!var)) {
var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 249);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 253);
fatal_exit(1);
}
/* Covariant cast for argument 1 (node) <p1:ListNode[nullable Object]> isa ListNode[E] */
if (unlikely(!var1)) {
var_class_name5 = p1 == NULL ? "null" : p1->type->name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "ListNode[E]", var_class_name5);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 249);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 253);
fatal_exit(1);
}
var_element = p0;
var_node = p1;
var_ = self;
{
-{ /* Inline list#List#length (var_) on <var_:List[nullable Object]> */
+{ /* Inline list$List$length (var_) on <var_:List[nullable Object]> */
var8 = var_->attrs[COLOR_core__list__List___length].l; /* _length on <var_:List[nullable Object]> */
var6 = var8;
RET_LABEL7:(void)0;
}
}
{
-{ /* Inline kernel#Int#+ (var6,1l) on <var6:Int> */
+{ /* Inline kernel$Int$+ (var6,1l) on <var6:Int> */
/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
/* <1l:Int> isa OTHER */
var11 = 1; /* easy <1l:Int> isa OTHER*/
if (unlikely(!var11)) {
var_class_name14 = type_core__Int.name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name14);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
fatal_exit(1);
}
var15 = var6 + 1l;
}
}
{
-{ /* Inline list#List#length= (var_,var9) on <var_:List[nullable Object]> */
+{ /* Inline list$List$length= (var_,var9) on <var_:List[nullable Object]> */
var_->attrs[COLOR_core__list__List___length].l = var9; /* _length on <var_:List[nullable Object]> */
RET_LABEL16:(void)0;
}
}
var_nnode = var17;
{
-{ /* Inline list#ListNode#prev (var_node) on <var_node:ListNode[nullable Object]> */
+{ /* Inline list$ListNode$prev (var_node) on <var_node:ListNode[nullable Object]> */
var20 = var_node->attrs[COLOR_core__list__ListNode___prev].val; /* _prev on <var_node:ListNode[nullable Object]> */
var18 = var20;
RET_LABEL19:(void)0;
var21 = 0; /* arg is null but recv is not */
}
if (0) {
-{ /* Inline kernel#Object#== (var_prev,((val*)NULL)) on <var_prev:nullable ListNode[nullable Object]> */
+{ /* Inline kernel$Object$== (var_prev,((val*)NULL)) on <var_prev:nullable ListNode[nullable Object]> */
var_other = ((val*)NULL);
{
-{ /* Inline kernel#Object#is_same_instance (var_prev,var_other) on <var_prev:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+{ /* Inline kernel$Object$is_same_instance (var_prev,var_other) on <var_prev:nullable ListNode[nullable Object](ListNode[nullable Object])> */
var26 = var_prev == var_other;
var24 = var26;
goto RET_LABEL25;
self->attrs[COLOR_core__list__List___head].val = var_nnode; /* _head on <self:List[nullable Object]> */
} else {
{
-{ /* Inline list#ListNode#next= (var_prev,var_nnode) on <var_prev:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+{ /* Inline list$ListNode$next= (var_prev,var_nnode) on <var_prev:nullable ListNode[nullable Object](ListNode[nullable Object])> */
/* Covariant cast for argument 0 (next) <var_nnode:ListNode[nullable Object]> isa nullable ListNode[E] */
/* <var_nnode:ListNode[nullable Object]> isa nullable ListNode[E] */
type_struct31 = var_prev->type->resolution_table->types[COLOR_nullable__core__list__ListNode__core__list__ListNode___35dE];
if (unlikely(!var28)) {
var_class_name32 = var_nnode == NULL ? "null" : var_nnode->type->name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name32);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 334);
fatal_exit(1);
}
var_prev->attrs[COLOR_core__list__ListNode___next].val = var_nnode; /* _next on <var_prev:nullable ListNode[nullable Object](ListNode[nullable Object])> */
}
}
{
-{ /* Inline list#ListNode#prev= (var_nnode,var_prev) on <var_nnode:ListNode[nullable Object]> */
+{ /* Inline list$ListNode$prev= (var_nnode,var_prev) on <var_nnode:ListNode[nullable Object]> */
/* Covariant cast for argument 0 (prev) <var_prev:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
/* <var_prev:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
type_struct37 = var_nnode->type->resolution_table->types[COLOR_nullable__core__list__ListNode__core__list__ListNode___35dE];
if (unlikely(!var34)) {
var_class_name38 = var_prev == NULL ? "null" : var_prev->type->name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name38);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 337);
fatal_exit(1);
}
var_nnode->attrs[COLOR_core__list__ListNode___prev].val = var_prev; /* _prev on <var_nnode:ListNode[nullable Object]> */
}
}
{
-{ /* Inline list#ListNode#next= (var_nnode,var_node) on <var_nnode:ListNode[nullable Object]> */
+{ /* Inline list$ListNode$next= (var_nnode,var_node) on <var_nnode:ListNode[nullable Object]> */
/* Covariant cast for argument 0 (next) <var_node:ListNode[nullable Object]> isa nullable ListNode[E] */
/* <var_node:ListNode[nullable Object]> isa nullable ListNode[E] */
type_struct43 = var_nnode->type->resolution_table->types[COLOR_nullable__core__list__ListNode__core__list__ListNode___35dE];
if (unlikely(!var40)) {
var_class_name44 = var_node == NULL ? "null" : var_node->type->name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name44);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 334);
fatal_exit(1);
}
var_nnode->attrs[COLOR_core__list__ListNode___next].val = var_node; /* _next on <var_nnode:ListNode[nullable Object]> */
}
}
{
-{ /* Inline list#ListNode#prev= (var_node,var_nnode) on <var_node:ListNode[nullable Object]> */
+{ /* Inline list$ListNode$prev= (var_node,var_nnode) on <var_node:ListNode[nullable Object]> */
/* Covariant cast for argument 0 (prev) <var_nnode:ListNode[nullable Object]> isa nullable ListNode[E] */
/* <var_nnode:ListNode[nullable Object]> isa nullable ListNode[E] */
type_struct49 = var_node->type->resolution_table->types[COLOR_nullable__core__list__ListNode__core__list__ListNode___35dE];
if (unlikely(!var46)) {
var_class_name50 = var_nnode == NULL ? "null" : var_nnode->type->name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name50);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 337);
fatal_exit(1);
}
var_node->attrs[COLOR_core__list__ListNode___prev].val = var_nnode; /* _prev on <var_node:ListNode[nullable Object]> */
}
RET_LABEL:;
}
-/* method list#ListIterator#item for (self: ListIterator[nullable Object]): nullable Object */
+/* method list$ListIterator$item for (self: ListIterator[nullable Object]): nullable Object */
val* core___core__ListIterator___core__abstract_collection__Iterator__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_core__list__ListIterator___node].val; /* _node on <self:ListIterator[nullable Object]> */
-if (var1 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 268);
-fatal_exit(1);
-} else {
-{ /* Inline abstract_collection#Ref#item (var1) on <var1:nullable ListNode[nullable Object]> */
if (unlikely(var1 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 334);
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 272);
fatal_exit(1);
}
-var4 = var1->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <var1:nullable ListNode[nullable Object]> */
+{
+{ /* Inline abstract_collection$Ref$item (var1) on <var1:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+var4 = var1->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <var1:nullable ListNode[nullable Object](ListNode[nullable Object])> */
var2 = var4;
RET_LABEL3:(void)0;
}
RET_LABEL:;
return var;
}
-/* method list#ListIterator#is_ok for (self: ListIterator[nullable Object]): Bool */
+/* method list$ListIterator$is_ok for (self: ListIterator[nullable Object]): Bool */
short int core___core__ListIterator___core__abstract_collection__Iterator__is_ok(val* self) {
short int var /* : Bool */;
val* var1 /* : nullable ListNode[nullable Object] */;
var2 = 0; /* arg is null but recv is not */
}
if (0) {
-{ /* Inline kernel#Object#== (var1,((val*)NULL)) on <var1:nullable ListNode[nullable Object]> */
+{ /* Inline kernel$Object$== (var1,((val*)NULL)) on <var1:nullable ListNode[nullable Object]> */
var_other = ((val*)NULL);
{
-{ /* Inline kernel#Object#is_same_instance (var1,var_other) on <var1:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+{ /* Inline kernel$Object$is_same_instance (var1,var_other) on <var1:nullable ListNode[nullable Object](ListNode[nullable Object])> */
var7 = var1 == var_other;
var5 = var7;
goto RET_LABEL6;
RET_LABEL:;
return var;
}
-/* method list#ListIterator#next for (self: ListIterator[nullable Object]) */
+/* method list$ListIterator$next for (self: ListIterator[nullable Object]) */
void core___core__ListIterator___core__abstract_collection__Iterator__next(val* self) {
val* var /* : nullable ListNode[nullable Object] */;
val* var1 /* : nullable ListNode[nullable Object] */;
const char* var_class_name;
long var8 /* : Int */;
var = self->attrs[COLOR_core__list__ListIterator___node].val; /* _node on <self:ListIterator[nullable Object]> */
-if (var == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 277);
-fatal_exit(1);
-} else {
-{ /* Inline list#ListNode#next (var) on <var:nullable ListNode[nullable Object]> */
if (unlikely(var == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 281);
fatal_exit(1);
}
-var3 = var->attrs[COLOR_core__list__ListNode___next].val; /* _next on <var:nullable ListNode[nullable Object]> */
+{
+{ /* Inline list$ListNode$next (var) on <var:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+var3 = var->attrs[COLOR_core__list__ListNode___next].val; /* _next on <var:nullable ListNode[nullable Object](ListNode[nullable Object])> */
var1 = var3;
RET_LABEL2:(void)0;
}
var_ = self;
var4 = var_->attrs[COLOR_core__list__ListIterator___index].l; /* _index on <var_:ListIterator[nullable Object]> */
{
-{ /* Inline kernel#Int#+ (var4,1l) on <var4:Int> */
+{ /* Inline kernel$Int$+ (var4,1l) on <var4:Int> */
/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
/* <1l:Int> isa OTHER */
var7 = 1; /* easy <1l:Int> isa OTHER*/
if (unlikely(!var7)) {
var_class_name = type_core__Int.name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
fatal_exit(1);
}
var8 = var4 + 1l;
var_->attrs[COLOR_core__list__ListIterator___index].l = var5; /* _index on <var_:ListIterator[nullable Object]> */
RET_LABEL:;
}
-/* method list#ListIterator#init for (self: ListIterator[nullable Object]) */
+/* method list$ListIterator$init for (self: ListIterator[nullable Object]) */
void core___core__ListIterator___core__kernel__Object__init(val* self) {
val* var /* : List[nullable Object] */;
val* var1 /* : nullable ListNode[nullable Object] */;
}
var = self->attrs[COLOR_core__list__ListIterator___list].val; /* _list on <self:ListIterator[nullable Object]> */
if (unlikely(var == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _list");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 284);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 288);
fatal_exit(1);
}
var1 = var->attrs[COLOR_core__list__List___head].val; /* _head on <var:List[nullable Object]> */
self->attrs[COLOR_core__list__ListIterator___node].val = var1; /* _node on <self:ListIterator[nullable Object]> */
RET_LABEL:;
}
-/* method list#ListIterator#list= for (self: ListIterator[nullable Object], List[nullable Object]) */
+/* method list$ListIterator$list= for (self: ListIterator[nullable Object], List[nullable Object]) */
void core___core__ListIterator___list_61d(val* self, val* p0) {
short int var /* : Bool */;
int cltype;
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", FILE_core__list, 287);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 291);
fatal_exit(1);
}
self->attrs[COLOR_core__list__ListIterator___list].val = p0; /* _list on <self:ListIterator[nullable Object]> */
RET_LABEL:;
}
-/* method list#ListIterator#index for (self: ListIterator[nullable Object]): Int */
+/* method list$ListIterator$index for (self: ListIterator[nullable Object]): Int */
long core___core__ListIterator___core__abstract_collection__IndexedIterator__index(val* self) {
long var /* : Int */;
long var1 /* : Int */;
RET_LABEL:;
return var;
}
-/* method list#ListReverseIterator#next for (self: ListReverseIterator[nullable Object]) */
+/* method list$ListReverseIterator$next for (self: ListReverseIterator[nullable Object]) */
void core__list___core__list__ListReverseIterator___core__abstract_collection__Iterator__next(val* self) {
val* var /* : nullable ListNode[nullable Object] */;
val* var1 /* : nullable ListNode[nullable Object] */;
const char* var_class_name;
long var8 /* : Int */;
var = self->attrs[COLOR_core__list__ListIterator___node].val; /* _node on <self:ListReverseIterator[nullable Object]> */
-if (var == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 314);
-fatal_exit(1);
-} else {
-{ /* Inline list#ListNode#prev (var) on <var:nullable ListNode[nullable Object]> */
if (unlikely(var == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 318);
fatal_exit(1);
}
-var3 = var->attrs[COLOR_core__list__ListNode___prev].val; /* _prev on <var:nullable ListNode[nullable Object]> */
+{
+{ /* Inline list$ListNode$prev (var) on <var:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+var3 = var->attrs[COLOR_core__list__ListNode___prev].val; /* _prev on <var:nullable ListNode[nullable Object](ListNode[nullable Object])> */
var1 = var3;
RET_LABEL2:(void)0;
}
var_ = self;
var4 = var_->attrs[COLOR_core__list__ListIterator___index].l; /* _index on <var_:ListReverseIterator[nullable Object]> */
{
-{ /* Inline kernel#Int#- (var4,1l) on <var4:Int> */
+{ /* Inline kernel$Int$- (var4,1l) on <var4:Int> */
/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
/* <1l:Int> isa OTHER */
var7 = 1; /* easy <1l:Int> isa OTHER*/
if (unlikely(!var7)) {
var_class_name = type_core__Int.name;
PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
fatal_exit(1);
}
var8 = var4 - 1l;
var_->attrs[COLOR_core__list__ListIterator___index].l = var5; /* _index on <var_:ListReverseIterator[nullable Object]> */
RET_LABEL:;
}
-/* method list#ListReverseIterator#init for (self: ListReverseIterator[nullable Object]) */
+/* method list$ListReverseIterator$init for (self: ListReverseIterator[nullable Object]) */
void core__list___core__list__ListReverseIterator___core__kernel__Object__init(val* self) {
val* var /* : List[nullable Object] */;
val* var_list /* var list: List[nullable Object] */;
}
var = self->attrs[COLOR_core__list__ListIterator___list].val; /* _list on <self:ListReverseIterator[nullable Object]> */
if (unlikely(var == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _list");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 320);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 324);
fatal_exit(1);
}
var_list = var;
var1 = var_list->attrs[COLOR_core__list__List___tail].val; /* _tail on <var_list:List[nullable Object]> */
self->attrs[COLOR_core__list__ListIterator___node].val = var1; /* _node on <self:ListReverseIterator[nullable Object]> */
{
-{ /* Inline list#List#length (var_list) on <var_list:List[nullable Object]> */
+{ /* Inline list$List$length (var_list) on <var_list:List[nullable Object]> */
var4 = var_list->attrs[COLOR_core__list__List___length].l; /* _length on <var_list:List[nullable Object]> */
var2 = var4;
RET_LABEL3:(void)0;
self->attrs[COLOR_core__list__ListIterator___index].l = var2; /* _index on <self:ListReverseIterator[nullable Object]> */
RET_LABEL:;
}
-/* method list#ListNode#next for (self: ListNode[nullable Object]): nullable ListNode[nullable Object] */
+/* method list$ListNode$next for (self: ListNode[nullable Object]): nullable ListNode[nullable Object] */
val* core__list___core__list__ListNode___next(val* self) {
val* var /* : nullable ListNode[nullable Object] */;
val* var1 /* : nullable ListNode[nullable Object] */;
RET_LABEL:;
return var;
}
-/* method list#ListNode#next= for (self: ListNode[nullable Object], nullable ListNode[nullable Object]) */
+/* method list$ListNode$next= for (self: ListNode[nullable Object], nullable ListNode[nullable Object]) */
void core__list___core__list__ListNode___next_61d(val* self, val* p0) {
short int var /* : Bool */;
int cltype;
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", FILE_core__list, 330);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 334);
fatal_exit(1);
}
self->attrs[COLOR_core__list__ListNode___next].val = p0; /* _next on <self:ListNode[nullable Object]> */
RET_LABEL:;
}
-/* method list#ListNode#prev for (self: ListNode[nullable Object]): nullable ListNode[nullable Object] */
+/* method list$ListNode$prev for (self: ListNode[nullable Object]): nullable ListNode[nullable Object] */
val* core__list___core__list__ListNode___prev(val* self) {
val* var /* : nullable ListNode[nullable Object] */;
val* var1 /* : nullable ListNode[nullable Object] */;
RET_LABEL:;
return var;
}
-/* method list#ListNode#prev= for (self: ListNode[nullable Object], nullable ListNode[nullable Object]) */
+/* method list$ListNode$prev= for (self: ListNode[nullable Object], nullable ListNode[nullable Object]) */
void core__list___core__list__ListNode___prev_61d(val* self, val* p0) {
short int var /* : Bool */;
int cltype;
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", FILE_core__list, 333);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 337);
fatal_exit(1);
}
self->attrs[COLOR_core__list__ListNode___prev].val = p0; /* _prev on <self:ListNode[nullable Object]> */