X-Git-Url: http://nitlanguage.org diff --git a/c_src/scope.sep.1.c b/c_src/scope.sep.1.c index 0d0f9c3..6b82f73 100644 --- a/c_src/scope.sep.1.c +++ b/c_src/scope.sep.1.c @@ -3,10 +3,11 @@ val* scope__ToolContext__scope_phase(val* self) { val* var /* : Phase */; val* var1 /* : Phase */; -var1 = self->attrs[COLOR_scope__ToolContext___64dscope_phase].val; /* @scope_phase on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @scope_phase", "src/scope.nit", 25); -exit(1); +var1 = self->attrs[COLOR_scope__ToolContext___scope_phase].val; /* _scope_phase on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scope_phase"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 23); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -16,43 +17,58 @@ return var; val* VIRTUAL_scope__ToolContext__scope_phase(val* self) { val* var /* : Phase */; val* var1 /* : Phase */; -var1 = scope__ToolContext__scope_phase(self); -var = var1; -RET_LABEL:; -return var; +val* var3 /* : Phase */; +{ /* Inline scope#ToolContext#scope_phase (self) on */ +var3 = self->attrs[COLOR_scope__ToolContext___scope_phase].val; /* _scope_phase on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scope_phase"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 23); +show_backtrace(1); } -/* method scope#ToolContext#scope_phase= for (self: ToolContext, Phase) */ -void scope__ToolContext__scope_phase_61d(val* self, val* p0) { -self->attrs[COLOR_scope__ToolContext___64dscope_phase].val = p0; /* @scope_phase on */ -RET_LABEL:; +var1 = var3; +RET_LABEL2:(void)0; } -/* method scope#ToolContext#scope_phase= for (self: Object, Phase) */ -void VIRTUAL_scope__ToolContext__scope_phase_61d(val* self, val* p0) { -scope__ToolContext__scope_phase_61d(self, p0); +var = var1; RET_LABEL:; +return var; } /* method scope#ScopePhase#process_npropdef for (self: ScopePhase, APropdef) */ void scope__ScopePhase__process_npropdef(val* self, val* p0) { val* var_npropdef /* var npropdef: APropdef */; val* var /* : ToolContext */; +val* var2 /* : ToolContext */; var_npropdef = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_phase__Phase__toolcontext]))(self) /* toolcontext on */; -((void (*)(val*, val*))(var_npropdef->class->vft[COLOR_scope__APropdef__do_scope]))(var_npropdef, var) /* do_scope on */; +{ +{ /* Inline phase#Phase#toolcontext (self) on */ +var2 = self->attrs[COLOR_phase__Phase___toolcontext].val; /* _toolcontext on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "phase.nit", 162); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +scope__APropdef__do_scope(var_npropdef, var); /* Direct call scope#APropdef#do_scope on */ +} RET_LABEL:; } /* method scope#ScopePhase#process_npropdef for (self: Object, APropdef) */ void VIRTUAL_scope__ScopePhase__process_npropdef(val* self, val* p0) { -scope__ScopePhase__process_npropdef(self, p0); +scope__ScopePhase__process_npropdef(self, p0); /* Direct call scope#ScopePhase#process_npropdef on */ RET_LABEL:; } /* method scope#Variable#name for (self: Variable): String */ val* scope__Variable__name(val* self) { val* var /* : String */; val* var1 /* : String */; -var1 = self->attrs[COLOR_scope__Variable___64dname].val; /* @name on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @name", "src/scope.nit", 36); -exit(1); +var1 = self->attrs[COLOR_scope__Variable___name].val; /* _name on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 34); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -62,26 +78,51 @@ return var; val* VIRTUAL_scope__Variable__name(val* self) { val* var /* : String */; val* var1 /* : String */; -var1 = scope__Variable__name(self); +val* var3 /* : String */; +{ /* Inline scope#Variable#name (self) on */ +var3 = self->attrs[COLOR_scope__Variable___name].val; /* _name on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 34); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method scope#Variable#name= for (self: Variable, String) */ void scope__Variable__name_61d(val* self, val* p0) { -self->attrs[COLOR_scope__Variable___64dname].val = p0; /* @name on */ +self->attrs[COLOR_scope__Variable___name].val = p0; /* _name on */ RET_LABEL:; } /* method scope#Variable#name= for (self: Object, String) */ void VIRTUAL_scope__Variable__name_61d(val* self, val* p0) { -scope__Variable__name_61d(self, p0); +{ /* Inline scope#Variable#name= (self,p0) on */ +self->attrs[COLOR_scope__Variable___name].val = p0; /* _name on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method scope#Variable#to_s for (self: Variable): String */ val* scope__Variable__to_s(val* self) { val* var /* : String */; val* var1 /* : String */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_scope__Variable__name]))(self) /* name on */; +val* var3 /* : String */; +{ +{ /* Inline scope#Variable#name (self) on */ +var3 = self->attrs[COLOR_scope__Variable___name].val; /* _name on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 34); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} var = var1; goto RET_LABEL; RET_LABEL:; @@ -96,21 +137,100 @@ var = var1; RET_LABEL:; return var; } -/* method scope#Variable#init for (self: Variable, String) */ -void scope__Variable__init(val* self, val* p0) { -self->attrs[COLOR_scope__Variable___64dname].val = p0; /* @name on */ +/* method scope#Variable#location for (self: Variable): nullable Location */ +val* scope__Variable__location(val* self) { +val* var /* : nullable Location */; +val* var1 /* : nullable Location */; +var1 = self->attrs[COLOR_scope__Variable___location].val; /* _location on */ +var = var1; +RET_LABEL:; +return var; +} +/* method scope#Variable#location for (self: Object): nullable Location */ +val* VIRTUAL_scope__Variable__location(val* self) { +val* var /* : nullable Location */; +val* var1 /* : nullable Location */; +val* var3 /* : nullable Location */; +{ /* Inline scope#Variable#location (self) on */ +var3 = self->attrs[COLOR_scope__Variable___location].val; /* _location on */ +var1 = var3; +RET_LABEL2:(void)0; +} +var = var1; +RET_LABEL:; +return var; +} +/* method scope#Variable#location= for (self: Variable, nullable Location) */ +void scope__Variable__location_61d(val* self, val* p0) { +self->attrs[COLOR_scope__Variable___location].val = p0; /* _location on */ +RET_LABEL:; +} +/* method scope#Variable#location= for (self: Object, nullable Location) */ +void VIRTUAL_scope__Variable__location_61d(val* self, val* p0) { +{ /* Inline scope#Variable#location= (self,p0) on */ +self->attrs[COLOR_scope__Variable___location].val = p0; /* _location on */ +RET_LABEL1:(void)0; +} +RET_LABEL:; +} +/* method scope#Variable#warn_unread for (self: Variable): Bool */ +short int scope__Variable__warn_unread(val* self) { +short int var /* : Bool */; +short int var1 /* : Bool */; +var1 = self->attrs[COLOR_scope__Variable___warn_unread].s; /* _warn_unread on */ +var = var1; +RET_LABEL:; +return var; +} +/* method scope#Variable#warn_unread for (self: Object): Bool */ +short int VIRTUAL_scope__Variable__warn_unread(val* self) { +short int var /* : Bool */; +short int var1 /* : Bool */; +short int var3 /* : Bool */; +{ /* Inline scope#Variable#warn_unread (self) on */ +var3 = self->attrs[COLOR_scope__Variable___warn_unread].s; /* _warn_unread on */ +var1 = var3; +RET_LABEL2:(void)0; +} +var = var1; +RET_LABEL:; +return var; +} +/* method scope#Variable#warn_unread= for (self: Variable, Bool) */ +void scope__Variable__warn_unread_61d(val* self, short int p0) { +self->attrs[COLOR_scope__Variable___warn_unread].s = p0; /* _warn_unread on */ +RET_LABEL:; +} +/* method scope#Variable#warn_unread= for (self: Object, Bool) */ +void VIRTUAL_scope__Variable__warn_unread_61d(val* self, short int p0) { +{ /* Inline scope#Variable#warn_unread= (self,p0) on */ +self->attrs[COLOR_scope__Variable___warn_unread].s = p0; /* _warn_unread on */ +RET_LABEL1:(void)0; +} +RET_LABEL:; +} +/* method scope#Variable#init for (self: Variable) */ +void scope__Variable__init(val* self) { +{ +((void (*)(val*))(self->class->vft[COLOR_scope__Variable__init]))(self) /* init on */; +} RET_LABEL:; } -/* method scope#Variable#init for (self: Object, String) */ -void VIRTUAL_scope__Variable__init(val* self, val* p0) { -scope__Variable__init(self, p0); +/* method scope#Variable#init for (self: Object) */ +void VIRTUAL_scope__Variable__init(val* self) { +{ /* Inline scope#Variable#init (self) on */ +{ +((void (*)(val*))(self->class->vft[COLOR_scope__Variable__init]))(self) /* init on */; +} +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method scope#EscapeMark#name for (self: EscapeMark): nullable String */ val* scope__EscapeMark__name(val* self) { val* var /* : nullable String */; val* var1 /* : nullable String */; -var1 = self->attrs[COLOR_scope__EscapeMark___64dname].val; /* @name on */ +var1 = self->attrs[COLOR_scope__EscapeMark___name].val; /* _name on */ var = var1; RET_LABEL:; return var; @@ -119,132 +239,124 @@ return var; val* VIRTUAL_scope__EscapeMark__name(val* self) { val* var /* : nullable String */; val* var1 /* : nullable String */; -var1 = scope__EscapeMark__name(self); +val* var3 /* : nullable String */; +{ /* Inline scope#EscapeMark#name (self) on */ +var3 = self->attrs[COLOR_scope__EscapeMark___name].val; /* _name on */ +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method scope#EscapeMark#name= for (self: EscapeMark, nullable String) */ void scope__EscapeMark__name_61d(val* self, val* p0) { -self->attrs[COLOR_scope__EscapeMark___64dname].val = p0; /* @name on */ +self->attrs[COLOR_scope__EscapeMark___name].val = p0; /* _name on */ RET_LABEL:; } /* method scope#EscapeMark#name= for (self: Object, nullable String) */ void VIRTUAL_scope__EscapeMark__name_61d(val* self, val* p0) { -scope__EscapeMark__name_61d(self, p0); -RET_LABEL:; +{ /* Inline scope#EscapeMark#name= (self,p0) on */ +self->attrs[COLOR_scope__EscapeMark___name].val = p0; /* _name on */ +RET_LABEL1:(void)0; } -/* method scope#EscapeMark#for_loop for (self: EscapeMark): Bool */ -short int scope__EscapeMark__for_loop(val* self) { -short int var /* : Bool */; -short int var1 /* : Bool */; -var1 = self->attrs[COLOR_scope__EscapeMark___64dfor_loop].s; /* @for_loop on */ -var = var1; RET_LABEL:; -return var; } -/* method scope#EscapeMark#for_loop for (self: Object): Bool */ -short int VIRTUAL_scope__EscapeMark__for_loop(val* self) { -short int var /* : Bool */; -short int var1 /* : Bool */; -var1 = scope__EscapeMark__for_loop(self); +/* method scope#EscapeMark#continue_mark for (self: EscapeMark): nullable EscapeMark */ +val* scope__EscapeMark__continue_mark(val* self) { +val* var /* : nullable EscapeMark */; +val* var1 /* : nullable EscapeMark */; +var1 = self->attrs[COLOR_scope__EscapeMark___continue_mark].val; /* _continue_mark on */ var = var1; RET_LABEL:; return var; } -/* method scope#EscapeMark#for_loop= for (self: EscapeMark, Bool) */ -void scope__EscapeMark__for_loop_61d(val* self, short int p0) { -self->attrs[COLOR_scope__EscapeMark___64dfor_loop].s = p0; /* @for_loop on */ -RET_LABEL:; -} -/* method scope#EscapeMark#for_loop= for (self: Object, Bool) */ -void VIRTUAL_scope__EscapeMark__for_loop_61d(val* self, short int p0) { -scope__EscapeMark__for_loop_61d(self, p0); -RET_LABEL:; -} -/* method scope#EscapeMark#continues for (self: EscapeMark): Array[AContinueExpr] */ -val* scope__EscapeMark__continues(val* self) { -val* var /* : Array[AContinueExpr] */; -val* var1 /* : Array[AContinueExpr] */; -var1 = self->attrs[COLOR_scope__EscapeMark___64dcontinues].val; /* @continues on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @continues", "src/scope.nit", 58); -exit(1); +/* method scope#EscapeMark#continue_mark for (self: Object): nullable EscapeMark */ +val* VIRTUAL_scope__EscapeMark__continue_mark(val* self) { +val* var /* : nullable EscapeMark */; +val* var1 /* : nullable EscapeMark */; +val* var3 /* : nullable EscapeMark */; +{ /* Inline scope#EscapeMark#continue_mark (self) on */ +var3 = self->attrs[COLOR_scope__EscapeMark___continue_mark].val; /* _continue_mark on */ +var1 = var3; +RET_LABEL2:(void)0; } var = var1; RET_LABEL:; return var; } -/* method scope#EscapeMark#continues for (self: Object): Array[AContinueExpr] */ -val* VIRTUAL_scope__EscapeMark__continues(val* self) { -val* var /* : Array[AContinueExpr] */; -val* var1 /* : Array[AContinueExpr] */; -var1 = scope__EscapeMark__continues(self); -var = var1; +/* method scope#EscapeMark#continue_mark= for (self: EscapeMark, nullable EscapeMark) */ +void scope__EscapeMark__continue_mark_61d(val* self, val* p0) { +self->attrs[COLOR_scope__EscapeMark___continue_mark].val = p0; /* _continue_mark on */ RET_LABEL:; -return var; } -/* method scope#EscapeMark#continues= for (self: EscapeMark, Array[AContinueExpr]) */ -void scope__EscapeMark__continues_61d(val* self, val* p0) { -self->attrs[COLOR_scope__EscapeMark___64dcontinues].val = p0; /* @continues on */ -RET_LABEL:; +/* method scope#EscapeMark#continue_mark= for (self: Object, nullable EscapeMark) */ +void VIRTUAL_scope__EscapeMark__continue_mark_61d(val* self, val* p0) { +{ /* Inline scope#EscapeMark#continue_mark= (self,p0) on */ +self->attrs[COLOR_scope__EscapeMark___continue_mark].val = p0; /* _continue_mark on */ +RET_LABEL1:(void)0; } -/* method scope#EscapeMark#continues= for (self: Object, Array[AContinueExpr]) */ -void VIRTUAL_scope__EscapeMark__continues_61d(val* self, val* p0) { -scope__EscapeMark__continues_61d(self, p0); RET_LABEL:; } -/* method scope#EscapeMark#breaks for (self: EscapeMark): Array[ABreakExpr] */ -val* scope__EscapeMark__breaks(val* self) { -val* var /* : Array[ABreakExpr] */; -val* var1 /* : Array[ABreakExpr] */; -var1 = self->attrs[COLOR_scope__EscapeMark___64dbreaks].val; /* @breaks on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @breaks", "src/scope.nit", 61); -exit(1); +/* method scope#EscapeMark#escapes for (self: EscapeMark): Array[AEscapeExpr] */ +val* scope__EscapeMark__escapes(val* self) { +val* var /* : Array[AEscapeExpr] */; +val* var1 /* : Array[AEscapeExpr] */; +var1 = self->attrs[COLOR_scope__EscapeMark___escapes].val; /* _escapes on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _escapes"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 57); +show_backtrace(1); } var = var1; RET_LABEL:; return var; } -/* method scope#EscapeMark#breaks for (self: Object): Array[ABreakExpr] */ -val* VIRTUAL_scope__EscapeMark__breaks(val* self) { -val* var /* : Array[ABreakExpr] */; -val* var1 /* : Array[ABreakExpr] */; -var1 = scope__EscapeMark__breaks(self); +/* method scope#EscapeMark#escapes for (self: Object): Array[AEscapeExpr] */ +val* VIRTUAL_scope__EscapeMark__escapes(val* self) { +val* var /* : Array[AEscapeExpr] */; +val* var1 /* : Array[AEscapeExpr] */; +val* var3 /* : Array[AEscapeExpr] */; +{ /* Inline scope#EscapeMark#escapes (self) on */ +var3 = self->attrs[COLOR_scope__EscapeMark___escapes].val; /* _escapes on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _escapes"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 57); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } -/* method scope#EscapeMark#breaks= for (self: EscapeMark, Array[ABreakExpr]) */ -void scope__EscapeMark__breaks_61d(val* self, val* p0) { -self->attrs[COLOR_scope__EscapeMark___64dbreaks].val = p0; /* @breaks on */ -RET_LABEL:; +/* method scope#EscapeMark#init for (self: EscapeMark) */ +void scope__EscapeMark__init(val* self) { +{ +((void (*)(val*))(self->class->vft[COLOR_scope__EscapeMark__init]))(self) /* init on */; } -/* method scope#EscapeMark#breaks= for (self: Object, Array[ABreakExpr]) */ -void VIRTUAL_scope__EscapeMark__breaks_61d(val* self, val* p0) { -scope__EscapeMark__breaks_61d(self, p0); RET_LABEL:; } -/* method scope#EscapeMark#init for (self: EscapeMark, nullable String, Bool) */ -void scope__EscapeMark__init(val* self, val* p0, short int p1) { -self->attrs[COLOR_scope__EscapeMark___64dname].val = p0; /* @name on */ -self->attrs[COLOR_scope__EscapeMark___64dfor_loop].s = p1; /* @for_loop on */ -RET_LABEL:; +/* method scope#EscapeMark#init for (self: Object) */ +void VIRTUAL_scope__EscapeMark__init(val* self) { +{ /* Inline scope#EscapeMark#init (self) on */ +{ +((void (*)(val*))(self->class->vft[COLOR_scope__EscapeMark__init]))(self) /* init on */; +} +RET_LABEL1:(void)0; } -/* method scope#EscapeMark#init for (self: Object, nullable String, Bool) */ -void VIRTUAL_scope__EscapeMark__init(val* self, val* p0, short int p1) { -scope__EscapeMark__init(self, p0, p1); RET_LABEL:; } /* method scope#ScopeVisitor#toolcontext for (self: ScopeVisitor): ToolContext */ val* scope__ScopeVisitor__toolcontext(val* self) { val* var /* : ToolContext */; val* var1 /* : ToolContext */; -var1 = self->attrs[COLOR_scope__ScopeVisitor___64dtoolcontext].val; /* @toolcontext on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @toolcontext", "src/scope.nit", 74); -exit(1); +var1 = self->attrs[COLOR_scope__ScopeVisitor___toolcontext].val; /* _toolcontext on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 69); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -254,29 +366,43 @@ return var; val* VIRTUAL_scope__ScopeVisitor__toolcontext(val* self) { val* var /* : ToolContext */; val* var1 /* : ToolContext */; -var1 = scope__ScopeVisitor__toolcontext(self); +val* var3 /* : ToolContext */; +{ /* Inline scope#ScopeVisitor#toolcontext (self) on */ +var3 = self->attrs[COLOR_scope__ScopeVisitor___toolcontext].val; /* _toolcontext on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 69); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method scope#ScopeVisitor#toolcontext= for (self: ScopeVisitor, ToolContext) */ void scope__ScopeVisitor__toolcontext_61d(val* self, val* p0) { -self->attrs[COLOR_scope__ScopeVisitor___64dtoolcontext].val = p0; /* @toolcontext on */ +self->attrs[COLOR_scope__ScopeVisitor___toolcontext].val = p0; /* _toolcontext on */ RET_LABEL:; } /* method scope#ScopeVisitor#toolcontext= for (self: Object, ToolContext) */ void VIRTUAL_scope__ScopeVisitor__toolcontext_61d(val* self, val* p0) { -scope__ScopeVisitor__toolcontext_61d(self, p0); +{ /* Inline scope#ScopeVisitor#toolcontext= (self,p0) on */ +self->attrs[COLOR_scope__ScopeVisitor___toolcontext].val = p0; /* _toolcontext on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method scope#ScopeVisitor#selfvariable for (self: ScopeVisitor): Variable */ val* scope__ScopeVisitor__selfvariable(val* self) { val* var /* : Variable */; val* var1 /* : Variable */; -var1 = self->attrs[COLOR_scope__ScopeVisitor___64dselfvariable].val; /* @selfvariable on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @selfvariable", "src/scope.nit", 77); -exit(1); +var1 = self->attrs[COLOR_scope__ScopeVisitor___selfvariable].val; /* _selfvariable on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _selfvariable"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 72); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -286,49 +412,72 @@ return var; val* VIRTUAL_scope__ScopeVisitor__selfvariable(val* self) { val* var /* : Variable */; val* var1 /* : Variable */; -var1 = scope__ScopeVisitor__selfvariable(self); -var = var1; -RET_LABEL:; -return var; +val* var3 /* : Variable */; +{ /* Inline scope#ScopeVisitor#selfvariable (self) on */ +var3 = self->attrs[COLOR_scope__ScopeVisitor___selfvariable].val; /* _selfvariable on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _selfvariable"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 72); +show_backtrace(1); } -/* method scope#ScopeVisitor#selfvariable= for (self: ScopeVisitor, Variable) */ -void scope__ScopeVisitor__selfvariable_61d(val* self, val* p0) { -self->attrs[COLOR_scope__ScopeVisitor___64dselfvariable].val = p0; /* @selfvariable on */ -RET_LABEL:; +var1 = var3; +RET_LABEL2:(void)0; } -/* method scope#ScopeVisitor#selfvariable= for (self: Object, Variable) */ -void VIRTUAL_scope__ScopeVisitor__selfvariable_61d(val* self, val* p0) { -scope__ScopeVisitor__selfvariable_61d(self, p0); +var = var1; RET_LABEL:; +return var; } /* method scope#ScopeVisitor#init for (self: ScopeVisitor, ToolContext) */ void scope__ScopeVisitor__init(val* self, val* p0) { val* var_toolcontext /* var toolcontext: ToolContext */; val* var /* : List[Scope] */; -val* var1 /* : Scope */; +val* var3 /* : List[Scope] */; +val* var4 /* : Scope */; +{ +((void (*)(val*))(self->class->vft[COLOR_kernel__Object__init]))(self) /* init on */; +} var_toolcontext = p0; -((void (*)(val*))(self->class->vft[COLOR_parser_nodes__Visitor__init]))(self) /* init on */; -((void (*)(val*, val*))(self->class->vft[COLOR_scope__ScopeVisitor__toolcontext_61d]))(self, var_toolcontext) /* toolcontext= on */; -var = ((val* (*)(val*))(self->class->vft[COLOR_scope__ScopeVisitor__scopes]))(self) /* scopes on */; -var1 = NEW_scope__Scope(&type_scope__Scope); -((void (*)(val*))(var1->class->vft[COLOR_scope__Scope__init]))(var1) /* init on */; -CHECK_NEW_scope__Scope(var1); -((void (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var, var1) /* add on */; +{ +{ /* Inline scope#ScopeVisitor#toolcontext= (self,var_toolcontext) on */ +self->attrs[COLOR_scope__ScopeVisitor___toolcontext].val = var_toolcontext; /* _toolcontext on */ +RET_LABEL1:(void)0; +} +} +{ +{ /* Inline scope#ScopeVisitor#scopes (self) on */ +var3 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 80); +show_backtrace(1); +} +var = var3; +RET_LABEL2:(void)0; +} +} +var4 = NEW_scope__Scope(&type_scope__Scope); +{ +((void (*)(val*))(var4->class->vft[COLOR_kernel__Object__init]))(var4) /* init on */; +} +{ +abstract_collection__Sequence__add(var, var4); /* Direct call abstract_collection#Sequence#add on */ +} RET_LABEL:; } /* method scope#ScopeVisitor#init for (self: Object, ToolContext) */ void VIRTUAL_scope__ScopeVisitor__init(val* self, val* p0) { -scope__ScopeVisitor__init(self, p0); +scope__ScopeVisitor__init(self, p0); /* Direct call scope#ScopeVisitor#init on */ RET_LABEL:; } /* method scope#ScopeVisitor#scopes for (self: ScopeVisitor): List[Scope] */ val* scope__ScopeVisitor__scopes(val* self) { val* var /* : List[Scope] */; val* var1 /* : List[Scope] */; -var1 = self->attrs[COLOR_scope__ScopeVisitor___64dscopes].val; /* @scopes on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @scopes", "src/scope.nit", 85); -exit(1); +var1 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 80); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -338,19 +487,246 @@ return var; val* VIRTUAL_scope__ScopeVisitor__scopes(val* self) { val* var /* : List[Scope] */; val* var1 /* : List[Scope] */; -var1 = scope__ScopeVisitor__scopes(self); +val* var3 /* : List[Scope] */; +{ /* Inline scope#ScopeVisitor#scopes (self) on */ +var3 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 80); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } -/* method scope#ScopeVisitor#scopes= for (self: ScopeVisitor, List[Scope]) */ -void scope__ScopeVisitor__scopes_61d(val* self, val* p0) { -self->attrs[COLOR_scope__ScopeVisitor___64dscopes].val = p0; /* @scopes on */ +/* method scope#ScopeVisitor#shift_scope for (self: ScopeVisitor) */ +void scope__ScopeVisitor__shift_scope(val* self) { +val* var /* : List[Scope] */; +val* var2 /* : List[Scope] */; +short int var3 /* : Bool */; +short int var4 /* : Bool */; +val* var5 /* : List[Scope] */; +val* var7 /* : List[Scope] */; +val* var8 /* : nullable Object */; +val* var_scope /* var scope: Scope */; +val* var9 /* : HashMap[String, Variable] */; +val* var11 /* : HashMap[String, Variable] */; +val* var12 /* : RemovableCollection[nullable Object] */; +val* var14 /* : RemovableCollection[nullable Object] */; +val* var_ /* var : RemovableCollection[Variable] */; +val* var15 /* : Iterator[nullable Object] */; +val* var_16 /* var : Iterator[Variable] */; +short int var17 /* : Bool */; +val* var18 /* : nullable Object */; +val* var_v /* var v: Variable */; +short int var19 /* : Bool */; +short int var21 /* : Bool */; +val* var22 /* : ToolContext */; +val* var24 /* : ToolContext */; +val* var25 /* : nullable Location */; +val* var27 /* : nullable Location */; +static val* varonce; +val* var28 /* : String */; +char* var29 /* : NativeString */; +long var30 /* : Int */; +val* var31 /* : FlatString */; +static val* varonce32; +val* var33 /* : String */; +char* var34 /* : NativeString */; +long var35 /* : Int */; +val* var36 /* : FlatString */; +val* var37 /* : String */; +val* var39 /* : String */; +static val* varonce40; +val* var41 /* : String */; +char* var42 /* : NativeString */; +long var43 /* : Int */; +val* var44 /* : FlatString */; +val* var45 /* : Array[Object] */; +long var46 /* : Int */; +val* var47 /* : NativeArray[Object] */; +val* var48 /* : String */; +{ +{ /* Inline scope#ScopeVisitor#scopes (self) on */ +var2 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 80); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +var3 = list__List__is_empty(var); +} +var4 = !var3; +if (unlikely(!var4)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 86); +show_backtrace(1); +} +{ +{ /* Inline scope#ScopeVisitor#scopes (self) on */ +var7 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on */ +if (unlikely(var7 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 80); +show_backtrace(1); +} +var5 = var7; +RET_LABEL6:(void)0; +} +} +{ +var8 = list__List__shift(var5); +} +var_scope = var8; +{ +{ /* Inline scope#Scope#variables (var_scope) on */ +var11 = var_scope->attrs[COLOR_scope__Scope___variables].val; /* _variables on */ +if (unlikely(var11 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _variables"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 225); +show_backtrace(1); +} +var9 = var11; +RET_LABEL10:(void)0; +} +} +{ +{ /* Inline hash_collection#HashMap#values (var9) on */ +var14 = var9->attrs[COLOR_hash_collection__HashMap___values].val; /* _values on */ +if (unlikely(var14 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _values"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 250); +show_backtrace(1); +} +var12 = var14; +RET_LABEL13:(void)0; +} +} +var_ = var12; +{ +var15 = ((val* (*)(val*))(var_->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_) /* iterator on */; +} +var_16 = var15; +for(;;) { +{ +var17 = ((short int (*)(val*))(var_16->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_16) /* is_ok on */; +} +if (var17){ +{ +var18 = ((val* (*)(val*))(var_16->class->vft[COLOR_abstract_collection__Iterator__item]))(var_16) /* item on */; +} +var_v = var18; +{ +{ /* Inline scope#Variable#warn_unread (var_v) on */ +var21 = var_v->attrs[COLOR_scope__Variable___warn_unread].s; /* _warn_unread on */ +var19 = var21; +RET_LABEL20:(void)0; +} +} +if (var19){ +{ +{ /* Inline scope#ScopeVisitor#toolcontext (self) on */ +var24 = self->attrs[COLOR_scope__ScopeVisitor___toolcontext].val; /* _toolcontext on */ +if (unlikely(var24 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 69); +show_backtrace(1); +} +var22 = var24; +RET_LABEL23:(void)0; +} +} +{ +{ /* Inline scope#Variable#location (var_v) on */ +var27 = var_v->attrs[COLOR_scope__Variable___location].val; /* _location on */ +var25 = var27; +RET_LABEL26:(void)0; +} +} +if (varonce) { +var28 = varonce; +} else { +var29 = "unread-variable"; +var30 = 15; +var31 = string__NativeString__to_s_with_length(var29, var30); +var28 = var31; +varonce = var28; +} +if (varonce32) { +var33 = varonce32; +} else { +var34 = "Warning: local variable "; +var35 = 24; +var36 = string__NativeString__to_s_with_length(var34, var35); +var33 = var36; +varonce32 = var33; +} +{ +{ /* Inline scope#Variable#name (var_v) on */ +var39 = var_v->attrs[COLOR_scope__Variable___name].val; /* _name on */ +if (unlikely(var39 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 34); +show_backtrace(1); +} +var37 = var39; +RET_LABEL38:(void)0; +} +} +if (varonce40) { +var41 = varonce40; +} else { +var42 = " is never read."; +var43 = 15; +var44 = string__NativeString__to_s_with_length(var42, var43); +var41 = var44; +varonce40 = var41; +} +var45 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var45 = array_instance Array[Object] */ +var46 = 3; +var47 = NEW_array__NativeArray(var46, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var47)->values[0] = (val*) var33; +((struct instance_array__NativeArray*)var47)->values[1] = (val*) var37; +((struct instance_array__NativeArray*)var47)->values[2] = (val*) var41; +{ +((void (*)(val*, val*, long))(var45->class->vft[COLOR_array__Array__with_native]))(var45, var47, var46) /* with_native on */; +} +} +{ +var48 = ((val* (*)(val*))(var45->class->vft[COLOR_string__Object__to_s]))(var45) /* to_s on */; +} +{ +toolcontext__ToolContext__advice(var22, var25, var28, var48); /* Direct call toolcontext#ToolContext#advice on */ +} +} else { +} +{ +((void (*)(val*))(var_16->class->vft[COLOR_abstract_collection__Iterator__next]))(var_16) /* next on */; +} +} else { +goto BREAK_label; +} +} +BREAK_label: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_16) on */ +RET_LABEL49:(void)0; +} +} RET_LABEL:; } -/* method scope#ScopeVisitor#scopes= for (self: Object, List[Scope]) */ -void VIRTUAL_scope__ScopeVisitor__scopes_61d(val* self, val* p0) { -scope__ScopeVisitor__scopes_61d(self, p0); +/* method scope#ScopeVisitor#shift_scope for (self: Object) */ +void VIRTUAL_scope__ScopeVisitor__shift_scope(val* self) { +scope__ScopeVisitor__shift_scope(self); /* Direct call scope#ScopeVisitor#shift_scope on */ RET_LABEL:; } /* method scope#ScopeVisitor#register_variable for (self: ScopeVisitor, ANode, Variable): Bool */ @@ -359,84 +735,170 @@ short int var /* : Bool */; val* var_node /* var node: ANode */; val* var_variable /* var variable: Variable */; val* var1 /* : String */; +val* var3 /* : String */; val* var_name /* var name: String */; -val* var2 /* : nullable Variable */; +val* var4 /* : nullable Variable */; val* var_found /* var found: nullable Variable */; -val* var3 /* : null */; -short int var4 /* : Bool */; +val* var5 /* : null */; +short int var6 /* : Bool */; +short int var7 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var9 /* : Bool */; +short int var10 /* : Bool */; +short int var11 /* : Bool */; static val* varonce; -val* var5 /* : String */; -char* var6 /* : NativeString */; -long var7 /* : Int */; -val* var8 /* : String */; -static val* varonce9; -val* var10 /* : String */; -char* var11 /* : NativeString */; -long var12 /* : Int */; -val* var13 /* : String */; -val* var14 /* : Array[Object] */; -long var15 /* : Int */; -val* var16 /* : NativeArray[Object] */; +val* var12 /* : String */; +char* var13 /* : NativeString */; +long var14 /* : Int */; +val* var15 /* : FlatString */; +static val* varonce16; val* var17 /* : String */; -short int var18 /* : Bool */; -val* var19 /* : List[Scope] */; -val* var20 /* : nullable Object */; -val* var21 /* : HashMap[String, Variable] */; -short int var22 /* : Bool */; +char* var18 /* : NativeString */; +long var19 /* : Int */; +val* var20 /* : FlatString */; +val* var21 /* : Array[Object] */; +long var22 /* : Int */; +val* var23 /* : NativeArray[Object] */; +val* var24 /* : String */; +short int var25 /* : Bool */; +val* var26 /* : List[Scope] */; +val* var28 /* : List[Scope] */; +val* var29 /* : nullable Object */; +val* var30 /* : HashMap[String, Variable] */; +val* var32 /* : HashMap[String, Variable] */; +val* var33 /* : Location */; +val* var35 /* : Location */; +short int var37 /* : Bool */; var_node = p0; var_variable = p1; -var1 = ((val* (*)(val*))(var_variable->class->vft[COLOR_scope__Variable__name]))(var_variable) /* name on */; +{ +{ /* Inline scope#Variable#name (var_variable) on */ +var3 = var_variable->attrs[COLOR_scope__Variable___name].val; /* _name on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 34); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} var_name = var1; -var2 = ((val* (*)(val*, val*))(self->class->vft[COLOR_scope__ScopeVisitor__search_variable]))(self, var_name) /* search_variable on */; -var_found = var2; -var3 = NULL; +{ +var4 = scope__ScopeVisitor__search_variable(self, var_name); +} +var_found = var4; +var5 = NULL; if (var_found == NULL) { -var4 = 0; /* is null */ +var6 = 0; /* is null */ } else { -var4 = 1; /* arg is null and recv is not */ +var6 = 1; /* arg is null and recv is not */ } -if (var4){ +if (0) { +{ /* Inline kernel#Object#!= (var_found,var5) on */ +var_other = var5; +{ +var10 = ((short int (*)(val*, val*))(var_found->class->vft[COLOR_kernel__Object___61d_61d]))(var_found, var_other) /* == on */; +var9 = var10; +} +var11 = !var9; +var7 = var11; +goto RET_LABEL8; +RET_LABEL8:(void)0; +} +var6 = var7; +} +if (var6){ if (varonce) { -var5 = varonce; -} else { -var6 = "Error: A variable named `"; -var7 = 25; -var8 = string__NativeString__to_s_with_length(var6, var7); -var5 = var8; -varonce = var5; -} -if (varonce9) { -var10 = varonce9; -} else { -var11 = "\' already exists"; -var12 = 16; -var13 = string__NativeString__to_s_with_length(var11, var12); -var10 = var13; -varonce9 = var10; -} -var14 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var14 = array_instance Array[Object] */ -var15 = 3; -var16 = NEW_array__NativeArray(var15, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var16)->values[0] = (val*) var5; -((struct instance_array__NativeArray*)var16)->values[1] = (val*) var_name; -((struct instance_array__NativeArray*)var16)->values[2] = (val*) var10; -((void (*)(val*, val*, long))(var14->class->vft[COLOR_array__Array__with_native]))(var14, var16, var15) /* with_native on */; -CHECK_NEW_array__Array(var14); -} -var17 = ((val* (*)(val*))(var14->class->vft[COLOR_string__Object__to_s]))(var14) /* to_s on */; -((void (*)(val*, val*, val*))(self->class->vft[COLOR_scope__ScopeVisitor__error]))(self, var_node, var17) /* error on */; -var18 = 0; -var = var18; +var12 = varonce; +} else { +var13 = "Error: A variable named `"; +var14 = 25; +var15 = string__NativeString__to_s_with_length(var13, var14); +var12 = var15; +varonce = var12; +} +if (varonce16) { +var17 = varonce16; +} else { +var18 = "\' already exists"; +var19 = 16; +var20 = string__NativeString__to_s_with_length(var18, var19); +var17 = var20; +varonce16 = var17; +} +var21 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var21 = array_instance Array[Object] */ +var22 = 3; +var23 = NEW_array__NativeArray(var22, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var23)->values[0] = (val*) var12; +((struct instance_array__NativeArray*)var23)->values[1] = (val*) var_name; +((struct instance_array__NativeArray*)var23)->values[2] = (val*) var17; +{ +((void (*)(val*, val*, long))(var21->class->vft[COLOR_array__Array__with_native]))(var21, var23, var22) /* with_native on */; +} +} +{ +var24 = ((val* (*)(val*))(var21->class->vft[COLOR_string__Object__to_s]))(var21) /* to_s on */; +} +{ +scope__ScopeVisitor__error(self, var_node, var24); /* Direct call scope#ScopeVisitor#error on */ +} +var25 = 0; +var = var25; goto RET_LABEL; } else { } -var19 = ((val* (*)(val*))(self->class->vft[COLOR_scope__ScopeVisitor__scopes]))(self) /* scopes on */; -var20 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_collection__Collection__first]))(var19) /* first on */; -var21 = ((val* (*)(val*))(var20->class->vft[COLOR_scope__Scope__variables]))(var20) /* variables on */; -((void (*)(val*, val*, val*))(var21->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var21, var_name, var_variable) /* []= on */; -var22 = 1; -var = var22; +{ +{ /* Inline scope#ScopeVisitor#scopes (self) on */ +var28 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on */ +if (unlikely(var28 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 80); +show_backtrace(1); +} +var26 = var28; +RET_LABEL27:(void)0; +} +} +{ +var29 = list__List__first(var26); +} +{ +{ /* Inline scope#Scope#variables (var29) on */ +var32 = var29->attrs[COLOR_scope__Scope___variables].val; /* _variables on */ +if (unlikely(var32 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _variables"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 225); +show_backtrace(1); +} +var30 = var32; +RET_LABEL31:(void)0; +} +} +{ +hash_collection__HashMap___91d_93d_61d(var30, var_name, var_variable); /* Direct call hash_collection#HashMap#[]= on */ +} +{ +{ /* Inline parser_nodes#ANode#location (var_node) on */ +var35 = var_node->attrs[COLOR_parser_nodes__ANode___location].val; /* _location on */ +if (unlikely(var35 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 23); +show_backtrace(1); +} +var33 = var35; +RET_LABEL34:(void)0; +} +} +{ +{ /* Inline scope#Variable#location= (var_variable,var33) on */ +var_variable->attrs[COLOR_scope__Variable___location].val = var33; /* _location on */ +RET_LABEL36:(void)0; +} +} +var37 = 1; +var = var37; goto RET_LABEL; RET_LABEL:; return var; @@ -455,42 +917,94 @@ val* scope__ScopeVisitor__search_variable(val* self, val* p0) { val* var /* : nullable Variable */; val* var_name /* var name: String */; val* var1 /* : List[Scope] */; -val* var2 /* : Iterator[nullable Object] */; -short int var3 /* : Bool */; -val* var4 /* : nullable Object */; +val* var3 /* : List[Scope] */; +val* var_ /* var : List[Scope] */; +val* var4 /* : ListIterator[nullable Object] */; +val* var_5 /* var : ListIterator[Scope] */; +short int var6 /* : Bool */; +val* var7 /* : nullable Object */; val* var_scope /* var scope: Scope */; -val* var5 /* : nullable Variable */; +val* var8 /* : nullable Variable */; val* var_res /* var res: nullable Variable */; -val* var6 /* : null */; -short int var7 /* : Bool */; -val* var8 /* : null */; +val* var9 /* : null */; +short int var10 /* : Bool */; +short int var11 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var13 /* : Bool */; +short int var14 /* : Bool */; +short int var15 /* : Bool */; +val* var17 /* : null */; var_name = p0; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_scope__ScopeVisitor__scopes]))(self) /* scopes on */; -var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__iterator]))(var1) /* iterator on */; +{ +{ /* Inline scope#ScopeVisitor#scopes (self) on */ +var3 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 80); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} +var_ = var1; +{ +var4 = list__List__iterator(var_); +} +var_5 = var4; for(;;) { -var3 = ((short int (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var2) /* is_ok on */; -if(!var3) break; -var4 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__item]))(var2) /* item on */; -var_scope = var4; -var5 = ((val* (*)(val*, val*))(var_scope->class->vft[COLOR_scope__Scope__get_variable]))(var_scope, var_name) /* get_variable on */; -var_res = var5; -var6 = NULL; +{ +var6 = list__ListIterator__is_ok(var_5); +} +if (var6){ +{ +var7 = list__ListIterator__item(var_5); +} +var_scope = var7; +{ +var8 = scope__Scope__get_variable(var_scope, var_name); +} +var_res = var8; +var9 = NULL; if (var_res == NULL) { -var7 = 0; /* is null */ +var10 = 0; /* is null */ } else { -var7 = 1; /* arg is null and recv is not */ +var10 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_res,var9) on */ +var_other = var9; +{ +var14 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on */; +var13 = var14; } -if (var7){ +var15 = !var13; +var11 = var15; +goto RET_LABEL12; +RET_LABEL12:(void)0; +} +var10 = var11; +} +if (var10){ var = var_res; goto RET_LABEL; } else { } -CONTINUE_label: (void)0; -((void (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__next]))(var2) /* next on */; +{ +list__ListIterator__next(var_5); /* Direct call list#ListIterator#next on */ +} +} else { +goto BREAK_label; +} } BREAK_label: (void)0; -var8 = NULL; -var = var8; +{ +{ /* Inline abstract_collection#Iterator#finish (var_5) on */ +RET_LABEL16:(void)0; +} +} +var17 = NULL; +var = var17; goto RET_LABEL; RET_LABEL:; return var; @@ -508,12 +1022,14 @@ return var; void scope__ScopeVisitor__visit(val* self, val* p0) { val* var_n /* var n: ANode */; var_n = p0; +{ ((void (*)(val*, val*))(var_n->class->vft[COLOR_scope__ANode__accept_scope_visitor]))(var_n, self) /* accept_scope_visitor on */; +} RET_LABEL:; } /* method scope#ScopeVisitor#visit for (self: Object, ANode) */ void VIRTUAL_scope__ScopeVisitor__visit(val* self, val* p0) { -scope__ScopeVisitor__visit(self, p0); +scope__ScopeVisitor__visit(self, p0); /* Direct call scope#ScopeVisitor#visit on */ RET_LABEL:; } /* method scope#ScopeVisitor#enter_visit_block for (self: ScopeVisitor, nullable AExpr, nullable EscapeMark) */ @@ -522,11 +1038,14 @@ val* var_node /* var node: nullable AExpr */; val* var_escapemark /* var escapemark: nullable EscapeMark */; val* var /* : null */; short int var1 /* : Bool */; -val* var2 /* : Scope */; +short int var2 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var4 /* : Bool */; +short int var6 /* : Bool */; +val* var7 /* : Scope */; val* var_scope /* var scope: Scope */; -val* var3 /* : List[Scope] */; -val* var4 /* : List[Scope] */; -val* var5 /* : nullable Object */; +val* var9 /* : List[Scope] */; +val* var11 /* : List[Scope] */; var_node = p0; var_escapemark = p1; var = NULL; @@ -535,26 +1054,64 @@ var1 = 1; /* is null */ } else { var1 = 0; /* arg is null but recv is not */ } +if (0) { +{ /* Inline kernel#Object#== (var_node,var) on */ +var_other = var; +{ +{ /* Inline kernel#Object#is_same_instance (var_node,var_other) on */ +var6 = var_node == var_other; +var4 = var6; +goto RET_LABEL5; +RET_LABEL5:(void)0; +} +} +var2 = var4; +goto RET_LABEL3; +RET_LABEL3:(void)0; +} +var1 = var2; +} if (var1){ goto RET_LABEL; } else { } -var2 = NEW_scope__Scope(&type_scope__Scope); -((void (*)(val*))(var2->class->vft[COLOR_scope__Scope__init]))(var2) /* init on */; -CHECK_NEW_scope__Scope(var2); -var_scope = var2; -((void (*)(val*, val*))(var_scope->class->vft[COLOR_scope__Scope__escapemark_61d]))(var_scope, var_escapemark) /* escapemark= on */; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_scope__ScopeVisitor__scopes]))(self) /* scopes on */; -((void (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__Sequence__unshift]))(var3, var_scope) /* unshift on */; -((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(self, var_node) /* enter_visit on */; -var4 = ((val* (*)(val*))(self->class->vft[COLOR_scope__ScopeVisitor__scopes]))(self) /* scopes on */; -var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Sequence__shift]))(var4) /* shift on */; -var5; +var7 = NEW_scope__Scope(&type_scope__Scope); +{ +((void (*)(val*))(var7->class->vft[COLOR_kernel__Object__init]))(var7) /* init on */; +} +var_scope = var7; +{ +{ /* Inline scope#Scope#escapemark= (var_scope,var_escapemark) on */ +var_scope->attrs[COLOR_scope__Scope___escapemark].val = var_escapemark; /* _escapemark on */ +RET_LABEL8:(void)0; +} +} +{ +{ /* Inline scope#ScopeVisitor#scopes (self) on */ +var11 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on */ +if (unlikely(var11 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 80); +show_backtrace(1); +} +var9 = var11; +RET_LABEL10:(void)0; +} +} +{ +list__List__unshift(var9, var_scope); /* Direct call list#List#unshift on */ +} +{ +parser_nodes__Visitor__enter_visit(self, var_node); /* Direct call parser_nodes#Visitor#enter_visit on */ +} +{ +scope__ScopeVisitor__shift_scope(self); /* Direct call scope#ScopeVisitor#shift_scope on */ +} RET_LABEL:; } /* method scope#ScopeVisitor#enter_visit_block for (self: Object, nullable AExpr, nullable EscapeMark) */ void VIRTUAL_scope__ScopeVisitor__enter_visit_block(val* self, val* p0, val* p1) { -scope__ScopeVisitor__enter_visit_block(self, p0, p1); +scope__ScopeVisitor__enter_visit_block(self, p0, p1); /* Direct call scope#ScopeVisitor#enter_visit_block on */ RET_LABEL:; } /* method scope#ScopeVisitor#search_label for (self: ScopeVisitor, String): nullable EscapeMark */ @@ -562,59 +1119,125 @@ val* scope__ScopeVisitor__search_label(val* self, val* p0) { val* var /* : nullable EscapeMark */; val* var_name /* var name: String */; val* var1 /* : List[Scope] */; -val* var2 /* : Iterator[nullable Object] */; -short int var3 /* : Bool */; -val* var4 /* : nullable Object */; +val* var3 /* : List[Scope] */; +val* var_ /* var : List[Scope] */; +val* var4 /* : ListIterator[nullable Object] */; +val* var_5 /* var : ListIterator[Scope] */; +short int var6 /* : Bool */; +val* var7 /* : nullable Object */; val* var_scope /* var scope: Scope */; -val* var5 /* : nullable EscapeMark */; +val* var8 /* : nullable EscapeMark */; +val* var10 /* : nullable EscapeMark */; val* var_res /* var res: nullable EscapeMark */; -short int var6 /* : Bool */; -val* var7 /* : null */; -short int var8 /* : Bool */; -short int var_ /* var : Bool */; -val* var9 /* : nullable String */; -short int var10 /* : Bool */; -val* var11 /* : null */; +short int var11 /* : Bool */; +val* var12 /* : null */; +short int var13 /* : Bool */; +short int var14 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var16 /* : Bool */; +short int var17 /* : Bool */; +short int var18 /* : Bool */; +short int var_19 /* var : Bool */; +val* var20 /* : nullable String */; +val* var22 /* : nullable String */; +short int var23 /* : Bool */; +short int var24 /* : Bool */; +val* var26 /* : null */; var_name = p0; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_scope__ScopeVisitor__scopes]))(self) /* scopes on */; -var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__iterator]))(var1) /* iterator on */; +{ +{ /* Inline scope#ScopeVisitor#scopes (self) on */ +var3 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 80); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} +var_ = var1; +{ +var4 = list__List__iterator(var_); +} +var_5 = var4; for(;;) { -var3 = ((short int (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var2) /* is_ok on */; -if(!var3) break; -var4 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__item]))(var2) /* item on */; -var_scope = var4; -var5 = ((val* (*)(val*))(var_scope->class->vft[COLOR_scope__Scope__escapemark]))(var_scope) /* escapemark on */; -var_res = var5; -var7 = NULL; +{ +var6 = list__ListIterator__is_ok(var_5); +} +if (var6){ +{ +var7 = list__ListIterator__item(var_5); +} +var_scope = var7; +{ +{ /* Inline scope#Scope#escapemark (var_scope) on */ +var10 = var_scope->attrs[COLOR_scope__Scope___escapemark].val; /* _escapemark on */ +var8 = var10; +RET_LABEL9:(void)0; +} +} +var_res = var8; +var12 = NULL; if (var_res == NULL) { -var8 = 0; /* is null */ +var13 = 0; /* is null */ } else { -var8 = 1; /* arg is null and recv is not */ +var13 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_res,var12) on */ +var_other = var12; +{ +var17 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on */; +var16 = var17; +} +var18 = !var16; +var14 = var18; +goto RET_LABEL15; +RET_LABEL15:(void)0; +} +var13 = var14; } -var_ = var8; -if (var8){ -var9 = ((val* (*)(val*))(var_res->class->vft[COLOR_scope__EscapeMark__name]))(var_res) /* name on */; -if (var9 == NULL) { -var10 = 0; /* cannot be null */ +var_19 = var13; +if (var13){ +{ +{ /* Inline scope#EscapeMark#name (var_res) on */ +var22 = var_res->attrs[COLOR_scope__EscapeMark___name].val; /* _name on */ +var20 = var22; +RET_LABEL21:(void)0; +} +} +if (var20 == NULL) { +var23 = 0; /* cannot be null */ } else { -var10 = ((short int (*)(val*, val*))(var9->class->vft[COLOR_kernel__Object___61d_61d]))(var9, var_name) /* == on */; +var24 = string__FlatString___61d_61d(var20, var_name); +var23 = var24; } -var6 = var10; +var11 = var23; } else { -var6 = var_; +var11 = var_19; } -if (var6){ +if (var11){ var = var_res; goto RET_LABEL; } else { } -CONTINUE_label: (void)0; -((void (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__next]))(var2) /* next on */; +{ +list__ListIterator__next(var_5); /* Direct call list#ListIterator#next on */ +} +} else { +goto BREAK_label; +} } BREAK_label: (void)0; -var11 = NULL; -var = var11; -goto RET_LABEL; +{ +{ /* Inline abstract_collection#Iterator#finish (var_5) on */ +RET_LABEL25:(void)0; +} +} +var26 = NULL; +var = var26; +goto RET_LABEL; RET_LABEL:; return var; } @@ -634,30 +1257,71 @@ val* var_nlabel /* var nlabel: nullable ALabel */; short int var_for_loop /* var for_loop: Bool */; val* var1 /* : null */; short int var2 /* : Bool */; -val* var3 /* : TId */; -val* var4 /* : String */; -val* var_name /* var name: nullable String */; -val* var5 /* : nullable EscapeMark */; -val* var_found /* var found: nullable EscapeMark */; -val* var6 /* : null */; +short int var3 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var5 /* : Bool */; +short int var6 /* : Bool */; short int var7 /* : Bool */; +val* var8 /* : nullable TId */; +val* var10 /* : nullable TId */; +val* var_nid /* var nid: nullable TId */; +val* var11 /* : null */; +short int var12 /* : Bool */; +short int var13 /* : Bool */; +val* var_other15 /* var other: nullable Object */; +short int var16 /* : Bool */; +short int var18 /* : Bool */; static val* varonce; -val* var8 /* : String */; -char* var9 /* : NativeString */; -long var10 /* : Int */; -val* var11 /* : String */; -static val* varonce12; -val* var13 /* : String */; -char* var14 /* : NativeString */; -long var15 /* : Int */; -val* var16 /* : String */; -val* var17 /* : Array[Object] */; -long var18 /* : Int */; -val* var19 /* : NativeArray[Object] */; -val* var20 /* : String */; -val* var21 /* : null */; -val* var22 /* : EscapeMark */; -val* var_res /* var res: EscapeMark */; +val* var19 /* : String */; +char* var20 /* : NativeString */; +long var21 /* : Int */; +val* var22 /* : FlatString */; +val* var23 /* : nullable EscapeMark */; +val* var_res /* var res: nullable EscapeMark */; +val* var24 /* : null */; +short int var25 /* : Bool */; +short int var26 /* : Bool */; +short int var28 /* : Bool */; +short int var29 /* : Bool */; +short int var30 /* : Bool */; +static val* varonce31; +val* var32 /* : String */; +char* var33 /* : NativeString */; +long var34 /* : Int */; +val* var35 /* : FlatString */; +static val* varonce36; +val* var37 /* : String */; +char* var38 /* : NativeString */; +long var39 /* : Int */; +val* var40 /* : FlatString */; +val* var_name /* var name: nullable String */; +val* var41 /* : String */; +val* var42 /* : nullable EscapeMark */; +val* var_found /* var found: nullable EscapeMark */; +val* var43 /* : null */; +short int var44 /* : Bool */; +short int var45 /* : Bool */; +short int var47 /* : Bool */; +short int var48 /* : Bool */; +short int var49 /* : Bool */; +static val* varonce50; +val* var51 /* : String */; +char* var52 /* : NativeString */; +long var53 /* : Int */; +val* var54 /* : FlatString */; +static val* varonce55; +val* var56 /* : String */; +char* var57 /* : NativeString */; +long var58 /* : Int */; +val* var59 /* : FlatString */; +val* var60 /* : Array[Object] */; +long var61 /* : Int */; +val* var62 /* : NativeArray[Object] */; +val* var63 /* : String */; +val* var64 /* : null */; +val* var65 /* : EscapeMark */; +val* var_res66 /* var res: EscapeMark */; +val* var67 /* : EscapeMark */; var_nlabel = p0; var_for_loop = p1; var1 = NULL; @@ -666,60 +1330,208 @@ var2 = 0; /* is null */ } else { var2 = 1; /* arg is null and recv is not */ } +if (0) { +{ /* Inline kernel#Object#!= (var_nlabel,var1) on */ +var_other = var1; +{ +var6 = ((short int (*)(val*, val*))(var_nlabel->class->vft[COLOR_kernel__Object___61d_61d]))(var_nlabel, var_other) /* == on */; +var5 = var6; +} +var7 = !var5; +var3 = var7; +goto RET_LABEL4; +RET_LABEL4:(void)0; +} +var2 = var3; +} if (var2){ -var3 = ((val* (*)(val*))(var_nlabel->class->vft[COLOR_parser_nodes__ALabel__n_id]))(var_nlabel) /* n_id on */; -var4 = ((val* (*)(val*))(var3->class->vft[COLOR_parser_nodes__Token__text]))(var3) /* text on */; -var_name = var4; -var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_scope__ScopeVisitor__search_label]))(self, var_name) /* search_label on */; -var_found = var5; -var6 = NULL; -if (var_found == NULL) { -var7 = 0; /* is null */ +{ +{ /* Inline parser_nodes#ALabel#n_id (var_nlabel) on */ +var10 = var_nlabel->attrs[COLOR_parser_nodes__ALabel___n_id].val; /* _n_id on */ +var8 = var10; +RET_LABEL9:(void)0; +} +} +var_nid = var8; +var11 = NULL; +if (var_nid == NULL) { +var12 = 1; /* is null */ } else { -var7 = 1; /* arg is null and recv is not */ +var12 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_nid,var11) on */ +var_other15 = var11; +{ +{ /* Inline kernel#Object#is_same_instance (var_nid,var_other15) on */ +var18 = var_nid == var_other15; +var16 = var18; +goto RET_LABEL17; +RET_LABEL17:(void)0; +} +} +var13 = var16; +goto RET_LABEL14; +RET_LABEL14:(void)0; +} +var12 = var13; } -if (var7){ +if (var12){ if (varonce) { -var8 = varonce; +var19 = varonce; } else { -var9 = "Syntax error: label "; -var10 = 20; -var11 = string__NativeString__to_s_with_length(var9, var10); -var8 = var11; -varonce = var8; +var20 = ""; +var21 = 0; +var22 = string__NativeString__to_s_with_length(var20, var21); +var19 = var22; +varonce = var19; } -if (varonce12) { -var13 = varonce12; +{ +var23 = scope__ScopeVisitor__search_label(self, var19); +} +var_res = var23; +var24 = NULL; +if (var_res == NULL) { +var25 = 0; /* is null */ } else { -var14 = " already defined."; -var15 = 17; -var16 = string__NativeString__to_s_with_length(var14, var15); -var13 = var16; -varonce12 = var13; +var25 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_res,var24) on */ +var_other = var24; +{ +var29 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on */; +var28 = var29; } -var17 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var17 = array_instance Array[Object] */ -var18 = 3; -var19 = NEW_array__NativeArray(var18, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var19)->values[0] = (val*) var8; -((struct instance_array__NativeArray*)var19)->values[1] = (val*) var_name; -((struct instance_array__NativeArray*)var19)->values[2] = (val*) var13; -((void (*)(val*, val*, long))(var17->class->vft[COLOR_array__Array__with_native]))(var17, var19, var18) /* with_native on */; -CHECK_NEW_array__Array(var17); +var30 = !var28; +var26 = var30; +goto RET_LABEL27; +RET_LABEL27:(void)0; } -var20 = ((val* (*)(val*))(var17->class->vft[COLOR_string__Object__to_s]))(var17) /* to_s on */; -((void (*)(val*, val*, val*))(self->class->vft[COLOR_scope__ScopeVisitor__error]))(self, var_nlabel, var20) /* error on */; +var25 = var26; +} +if (var25){ +if (varonce31) { +var32 = varonce31; } else { +var33 = "Syntax error: anonymous label already defined."; +var34 = 46; +var35 = string__NativeString__to_s_with_length(var33, var34); +var32 = var35; +varonce31 = var32; +} +{ +scope__ScopeVisitor__error(self, var_nlabel, var32); /* Direct call scope#ScopeVisitor#error on */ } } else { -var21 = NULL; -var_name = var21; } -var22 = NEW_scope__EscapeMark(&type_scope__EscapeMark); -((void (*)(val*, val*, short int))(var22->class->vft[COLOR_scope__EscapeMark__init]))(var22, var_name, var_for_loop) /* init on */; -CHECK_NEW_scope__EscapeMark(var22); -var_res = var22; -var = var_res; +if (varonce36) { +var37 = varonce36; +} else { +var38 = ""; +var39 = 0; +var40 = string__NativeString__to_s_with_length(var38, var39); +var37 = var40; +varonce36 = var37; +} +var_name = var37; +} else { +{ +var41 = lexer_work__Token__text(var_nid); +} +var_name = var41; +{ +var42 = scope__ScopeVisitor__search_label(self, var_name); +} +var_found = var42; +var43 = NULL; +if (var_found == NULL) { +var44 = 0; /* is null */ +} else { +var44 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_found,var43) on */ +var_other = var43; +{ +var48 = ((short int (*)(val*, val*))(var_found->class->vft[COLOR_kernel__Object___61d_61d]))(var_found, var_other) /* == on */; +var47 = var48; +} +var49 = !var47; +var45 = var49; +goto RET_LABEL46; +RET_LABEL46:(void)0; +} +var44 = var45; +} +if (var44){ +if (varonce50) { +var51 = varonce50; +} else { +var52 = "Syntax error: label "; +var53 = 20; +var54 = string__NativeString__to_s_with_length(var52, var53); +var51 = var54; +varonce50 = var51; +} +if (varonce55) { +var56 = varonce55; +} else { +var57 = " already defined."; +var58 = 17; +var59 = string__NativeString__to_s_with_length(var57, var58); +var56 = var59; +varonce55 = var56; +} +var60 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var60 = array_instance Array[Object] */ +var61 = 3; +var62 = NEW_array__NativeArray(var61, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var62)->values[0] = (val*) var51; +((struct instance_array__NativeArray*)var62)->values[1] = (val*) var_name; +((struct instance_array__NativeArray*)var62)->values[2] = (val*) var56; +{ +((void (*)(val*, val*, long))(var60->class->vft[COLOR_array__Array__with_native]))(var60, var62, var61) /* with_native on */; +} +} +{ +var63 = ((val* (*)(val*))(var60->class->vft[COLOR_string__Object__to_s]))(var60) /* to_s on */; +} +{ +scope__ScopeVisitor__error(self, var_nlabel, var63); /* Direct call scope#ScopeVisitor#error on */ +} +} else { +} +} +} else { +var64 = NULL; +var_name = var64; +} +var65 = NEW_scope__EscapeMark(&type_scope__EscapeMark); +{ +((void (*)(val*, val*))(var65->class->vft[COLOR_scope__EscapeMark__name_61d]))(var65, var_name) /* name= on */; +} +{ +((void (*)(val*))(var65->class->vft[COLOR_kernel__Object__init]))(var65) /* init on */; +} +var_res66 = var65; +if (var_for_loop){ +var67 = NEW_scope__EscapeMark(&type_scope__EscapeMark); +{ +((void (*)(val*, val*))(var67->class->vft[COLOR_scope__EscapeMark__name_61d]))(var67, var_name) /* name= on */; +} +{ +((void (*)(val*))(var67->class->vft[COLOR_kernel__Object__init]))(var67) /* init on */; +} +{ +{ /* Inline scope#EscapeMark#continue_mark= (var_res66,var67) on */ +var_res66->attrs[COLOR_scope__EscapeMark___continue_mark].val = var67; /* _continue_mark on */ +RET_LABEL68:(void)0; +} +} +} else { +} +var = var_res66; goto RET_LABEL; RET_LABEL:; return var; @@ -740,43 +1552,85 @@ val* var_node /* var node: ANode */; val* var_nlabel /* var nlabel: nullable ALabel */; val* var1 /* : null */; short int var2 /* : Bool */; -val* var3 /* : TId */; -val* var4 /* : String */; -val* var_name /* var name: String */; -val* var5 /* : nullable EscapeMark */; -val* var_res /* var res: nullable EscapeMark */; -val* var6 /* : null */; +short int var3 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var5 /* : Bool */; +short int var6 /* : Bool */; short int var7 /* : Bool */; +val* var8 /* : nullable TId */; +val* var10 /* : nullable TId */; +val* var_nid /* var nid: nullable TId */; +val* var11 /* : null */; +short int var12 /* : Bool */; +short int var13 /* : Bool */; +val* var_other15 /* var other: nullable Object */; +short int var16 /* : Bool */; +short int var18 /* : Bool */; static val* varonce; -val* var8 /* : String */; -char* var9 /* : NativeString */; -long var10 /* : Int */; -val* var11 /* : String */; -static val* varonce12; -val* var13 /* : String */; -char* var14 /* : NativeString */; -long var15 /* : Int */; -val* var16 /* : String */; -val* var17 /* : Array[Object] */; -long var18 /* : Int */; -val* var19 /* : NativeArray[Object] */; -val* var20 /* : String */; -val* var21 /* : null */; -val* var22 /* : List[Scope] */; -val* var23 /* : Iterator[nullable Object] */; -short int var24 /* : Bool */; -val* var25 /* : nullable Object */; +val* var19 /* : String */; +char* var20 /* : NativeString */; +long var21 /* : Int */; +val* var22 /* : FlatString */; +val* var23 /* : nullable EscapeMark */; +val* var_res /* var res: nullable EscapeMark */; +val* var24 /* : null */; +short int var25 /* : Bool */; +short int var26 /* : Bool */; +short int var28 /* : Bool */; +short int var30 /* : Bool */; +static val* varonce31; +val* var32 /* : String */; +char* var33 /* : NativeString */; +long var34 /* : Int */; +val* var35 /* : FlatString */; +val* var36 /* : null */; +val* var37 /* : String */; +val* var_name /* var name: String */; +val* var38 /* : nullable EscapeMark */; +val* var_res39 /* var res: nullable EscapeMark */; +val* var40 /* : null */; +short int var41 /* : Bool */; +short int var42 /* : Bool */; +short int var44 /* : Bool */; +short int var46 /* : Bool */; +static val* varonce47; +val* var48 /* : String */; +char* var49 /* : NativeString */; +long var50 /* : Int */; +val* var51 /* : FlatString */; +static val* varonce52; +val* var53 /* : String */; +char* var54 /* : NativeString */; +long var55 /* : Int */; +val* var56 /* : FlatString */; +val* var57 /* : Array[Object] */; +long var58 /* : Int */; +val* var59 /* : NativeArray[Object] */; +val* var60 /* : String */; +val* var61 /* : null */; +val* var62 /* : List[Scope] */; +val* var64 /* : List[Scope] */; +val* var_ /* var : List[Scope] */; +val* var65 /* : ListIterator[nullable Object] */; +val* var_66 /* var : ListIterator[Scope] */; +short int var67 /* : Bool */; +val* var68 /* : nullable Object */; val* var_scope /* var scope: Scope */; -val* var26 /* : nullable EscapeMark */; -val* var_res27 /* var res: nullable EscapeMark */; -val* var28 /* : null */; -short int var29 /* : Bool */; -static val* varonce30; -val* var31 /* : String */; -char* var32 /* : NativeString */; -long var33 /* : Int */; -val* var34 /* : String */; -val* var35 /* : null */; +val* var69 /* : nullable EscapeMark */; +val* var71 /* : nullable EscapeMark */; +val* var_res72 /* var res: nullable EscapeMark */; +val* var73 /* : null */; +short int var74 /* : Bool */; +short int var75 /* : Bool */; +short int var77 /* : Bool */; +short int var78 /* : Bool */; +short int var79 /* : Bool */; +static val* varonce81; +val* var82 /* : String */; +char* var83 /* : NativeString */; +long var84 /* : Int */; +val* var85 /* : FlatString */; +val* var86 /* : null */; var_node = p0; var_nlabel = p1; var1 = NULL; @@ -785,93 +1639,272 @@ var2 = 0; /* is null */ } else { var2 = 1; /* arg is null and recv is not */ } +if (0) { +{ /* Inline kernel#Object#!= (var_nlabel,var1) on */ +var_other = var1; +{ +var6 = ((short int (*)(val*, val*))(var_nlabel->class->vft[COLOR_kernel__Object___61d_61d]))(var_nlabel, var_other) /* == on */; +var5 = var6; +} +var7 = !var5; +var3 = var7; +goto RET_LABEL4; +RET_LABEL4:(void)0; +} +var2 = var3; +} if (var2){ -var3 = ((val* (*)(val*))(var_nlabel->class->vft[COLOR_parser_nodes__ALabel__n_id]))(var_nlabel) /* n_id on */; -var4 = ((val* (*)(val*))(var3->class->vft[COLOR_parser_nodes__Token__text]))(var3) /* text on */; -var_name = var4; -var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_scope__ScopeVisitor__search_label]))(self, var_name) /* search_label on */; -var_res = var5; -var6 = NULL; -if (var_res == NULL) { -var7 = 1; /* is null */ +{ +{ /* Inline parser_nodes#ALabel#n_id (var_nlabel) on */ +var10 = var_nlabel->attrs[COLOR_parser_nodes__ALabel___n_id].val; /* _n_id on */ +var8 = var10; +RET_LABEL9:(void)0; +} +} +var_nid = var8; +var11 = NULL; +if (var_nid == NULL) { +var12 = 1; /* is null */ } else { -var7 = 0; /* arg is null but recv is not */ +var12 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_nid,var11) on */ +var_other15 = var11; +{ +{ /* Inline kernel#Object#is_same_instance (var_nid,var_other15) on */ +var18 = var_nid == var_other15; +var16 = var18; +goto RET_LABEL17; +RET_LABEL17:(void)0; +} } -if (var7){ +var13 = var16; +goto RET_LABEL14; +RET_LABEL14:(void)0; +} +var12 = var13; +} +if (var12){ if (varonce) { -var8 = varonce; +var19 = varonce; +} else { +var20 = ""; +var21 = 0; +var22 = string__NativeString__to_s_with_length(var20, var21); +var19 = var22; +varonce = var19; +} +{ +var23 = scope__ScopeVisitor__search_label(self, var19); +} +var_res = var23; +var24 = NULL; +if (var_res == NULL) { +var25 = 1; /* is null */ } else { -var9 = "Syntax error: invalid label "; -var10 = 28; -var11 = string__NativeString__to_s_with_length(var9, var10); -var8 = var11; -varonce = var8; +var25 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_res,var24) on */ +var_other15 = var24; +{ +{ /* Inline kernel#Object#is_same_instance (var_res,var_other15) on */ +var30 = var_res == var_other15; +var28 = var30; +goto RET_LABEL29; +RET_LABEL29:(void)0; } -if (varonce12) { -var13 = varonce12; +} +var26 = var28; +goto RET_LABEL27; +RET_LABEL27:(void)0; +} +var25 = var26; +} +if (var25){ +if (varonce31) { +var32 = varonce31; } else { -var14 = "."; -var15 = 1; -var16 = string__NativeString__to_s_with_length(var14, var15); -var13 = var16; -varonce12 = var13; -} -var17 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var17 = array_instance Array[Object] */ -var18 = 3; -var19 = NEW_array__NativeArray(var18, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var19)->values[0] = (val*) var8; -((struct instance_array__NativeArray*)var19)->values[1] = (val*) var_name; -((struct instance_array__NativeArray*)var19)->values[2] = (val*) var13; -((void (*)(val*, val*, long))(var17->class->vft[COLOR_array__Array__with_native]))(var17, var19, var18) /* with_native on */; -CHECK_NEW_array__Array(var17); -} -var20 = ((val* (*)(val*))(var17->class->vft[COLOR_string__Object__to_s]))(var17) /* to_s on */; -((void (*)(val*, val*, val*))(self->class->vft[COLOR_scope__ScopeVisitor__error]))(self, var_nlabel, var20) /* error on */; -var21 = NULL; -var = var21; +var33 = "Syntax error: invalid anonymous label."; +var34 = 38; +var35 = string__NativeString__to_s_with_length(var33, var34); +var32 = var35; +varonce31 = var32; +} +{ +scope__ScopeVisitor__error(self, var_nlabel, var32); /* Direct call scope#ScopeVisitor#error on */ +} +var36 = NULL; +var = var36; goto RET_LABEL; } else { } var = var_res; goto RET_LABEL; } else { -var22 = ((val* (*)(val*))(self->class->vft[COLOR_scope__ScopeVisitor__scopes]))(self) /* scopes on */; -var23 = ((val* (*)(val*))(var22->class->vft[COLOR_abstract_collection__Collection__iterator]))(var22) /* iterator on */; +} +{ +var37 = lexer_work__Token__text(var_nid); +} +var_name = var37; +{ +var38 = scope__ScopeVisitor__search_label(self, var_name); +} +var_res39 = var38; +var40 = NULL; +if (var_res39 == NULL) { +var41 = 1; /* is null */ +} else { +var41 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_res39,var40) on */ +var_other15 = var40; +{ +{ /* Inline kernel#Object#is_same_instance (var_res39,var_other15) on */ +var46 = var_res39 == var_other15; +var44 = var46; +goto RET_LABEL45; +RET_LABEL45:(void)0; +} +} +var42 = var44; +goto RET_LABEL43; +RET_LABEL43:(void)0; +} +var41 = var42; +} +if (var41){ +if (varonce47) { +var48 = varonce47; +} else { +var49 = "Syntax error: invalid label "; +var50 = 28; +var51 = string__NativeString__to_s_with_length(var49, var50); +var48 = var51; +varonce47 = var48; +} +if (varonce52) { +var53 = varonce52; +} else { +var54 = "."; +var55 = 1; +var56 = string__NativeString__to_s_with_length(var54, var55); +var53 = var56; +varonce52 = var53; +} +var57 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var57 = array_instance Array[Object] */ +var58 = 3; +var59 = NEW_array__NativeArray(var58, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var59)->values[0] = (val*) var48; +((struct instance_array__NativeArray*)var59)->values[1] = (val*) var_name; +((struct instance_array__NativeArray*)var59)->values[2] = (val*) var53; +{ +((void (*)(val*, val*, long))(var57->class->vft[COLOR_array__Array__with_native]))(var57, var59, var58) /* with_native on */; +} +} +{ +var60 = ((val* (*)(val*))(var57->class->vft[COLOR_string__Object__to_s]))(var57) /* to_s on */; +} +{ +scope__ScopeVisitor__error(self, var_nlabel, var60); /* Direct call scope#ScopeVisitor#error on */ +} +var61 = NULL; +var = var61; +goto RET_LABEL; +} else { +} +var = var_res39; +goto RET_LABEL; +} else { +{ +{ /* Inline scope#ScopeVisitor#scopes (self) on */ +var64 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on */ +if (unlikely(var64 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 80); +show_backtrace(1); +} +var62 = var64; +RET_LABEL63:(void)0; +} +} +var_ = var62; +{ +var65 = list__List__iterator(var_); +} +var_66 = var65; for(;;) { -var24 = ((short int (*)(val*))(var23->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var23) /* is_ok on */; -if(!var24) break; -var25 = ((val* (*)(val*))(var23->class->vft[COLOR_abstract_collection__Iterator__item]))(var23) /* item on */; -var_scope = var25; -var26 = ((val* (*)(val*))(var_scope->class->vft[COLOR_scope__Scope__escapemark]))(var_scope) /* escapemark on */; -var_res27 = var26; -var28 = NULL; -if (var_res27 == NULL) { -var29 = 0; /* is null */ -} else { -var29 = 1; /* arg is null and recv is not */ -} -if (var29){ -var = var_res27; +{ +var67 = list__ListIterator__is_ok(var_66); +} +if (var67){ +{ +var68 = list__ListIterator__item(var_66); +} +var_scope = var68; +{ +{ /* Inline scope#Scope#escapemark (var_scope) on */ +var71 = var_scope->attrs[COLOR_scope__Scope___escapemark].val; /* _escapemark on */ +var69 = var71; +RET_LABEL70:(void)0; +} +} +var_res72 = var69; +var73 = NULL; +if (var_res72 == NULL) { +var74 = 0; /* is null */ +} else { +var74 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_res72,var73) on */ +var_other = var73; +{ +var78 = ((short int (*)(val*, val*))(var_res72->class->vft[COLOR_kernel__Object___61d_61d]))(var_res72, var_other) /* == on */; +var77 = var78; +} +var79 = !var77; +var75 = var79; +goto RET_LABEL76; +RET_LABEL76:(void)0; +} +var74 = var75; +} +if (var74){ +var = var_res72; goto RET_LABEL; } else { } -CONTINUE_label: (void)0; -((void (*)(val*))(var23->class->vft[COLOR_abstract_collection__Iterator__next]))(var23) /* next on */; +{ +list__ListIterator__next(var_66); /* Direct call list#ListIterator#next on */ +} +} else { +goto BREAK_label; +} } BREAK_label: (void)0; -if (varonce30) { -var31 = varonce30; +{ +{ /* Inline abstract_collection#Iterator#finish (var_66) on */ +RET_LABEL80:(void)0; +} +} +if (varonce81) { +var82 = varonce81; } else { -var32 = "Syntax Error: \'break\' statment outside block."; -var33 = 45; -var34 = string__NativeString__to_s_with_length(var32, var33); -var31 = var34; -varonce30 = var31; +var83 = "Syntax Error: \'break\' statement outside block."; +var84 = 46; +var85 = string__NativeString__to_s_with_length(var83, var84); +var82 = var85; +varonce81 = var82; } -((void (*)(val*, val*, val*))(self->class->vft[COLOR_scope__ScopeVisitor__error]))(self, var_node, var31) /* error on */; -var35 = NULL; -var = var35; +{ +scope__ScopeVisitor__error(self, var_node, var82); /* Direct call scope#ScopeVisitor#error on */ +} +var86 = NULL; +var = var86; goto RET_LABEL; } RET_LABEL:; @@ -891,27 +1924,44 @@ void scope__ScopeVisitor__error(val* self, val* p0, val* p1) { val* var_node /* var node: ANode */; val* var_message /* var message: String */; val* var /* : ToolContext */; -val* var1 /* : Location */; +val* var2 /* : ToolContext */; +val* var3 /* : Location */; var_node = p0; var_message = p1; -var = ((val* (*)(val*))(self->class->vft[COLOR_scope__ScopeVisitor__toolcontext]))(self) /* toolcontext on */; -var1 = ((val* (*)(val*))(var_node->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_node) /* hot_location on */; -((void (*)(val*, val*, val*))(var->class->vft[COLOR_toolcontext__ToolContext__error]))(var, var1, var_message) /* error on */; +{ +{ /* Inline scope#ScopeVisitor#toolcontext (self) on */ +var2 = self->attrs[COLOR_scope__ScopeVisitor___toolcontext].val; /* _toolcontext on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 69); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +var3 = ((val* (*)(val*))(var_node->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_node) /* hot_location on */; +} +{ +toolcontext__ToolContext__error(var, var3, var_message); /* Direct call toolcontext#ToolContext#error on */ +} RET_LABEL:; } /* method scope#ScopeVisitor#error for (self: Object, ANode, String) */ void VIRTUAL_scope__ScopeVisitor__error(val* self, val* p0, val* p1) { -scope__ScopeVisitor__error(self, p0, p1); +scope__ScopeVisitor__error(self, p0, p1); /* Direct call scope#ScopeVisitor#error on */ RET_LABEL:; } /* method scope#Scope#variables for (self: Scope): HashMap[String, Variable] */ val* scope__Scope__variables(val* self) { val* var /* : HashMap[String, Variable] */; val* var1 /* : HashMap[String, Variable] */; -var1 = self->attrs[COLOR_scope__Scope___64dvariables].val; /* @variables on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @variables", "src/scope.nit", 198); -exit(1); +var1 = self->attrs[COLOR_scope__Scope___variables].val; /* _variables on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _variables"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 225); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -921,26 +1971,26 @@ return var; val* VIRTUAL_scope__Scope__variables(val* self) { val* var /* : HashMap[String, Variable] */; val* var1 /* : HashMap[String, Variable] */; -var1 = scope__Scope__variables(self); -var = var1; -RET_LABEL:; -return var; +val* var3 /* : HashMap[String, Variable] */; +{ /* Inline scope#Scope#variables (self) on */ +var3 = self->attrs[COLOR_scope__Scope___variables].val; /* _variables on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _variables"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 225); +show_backtrace(1); } -/* method scope#Scope#variables= for (self: Scope, HashMap[String, Variable]) */ -void scope__Scope__variables_61d(val* self, val* p0) { -self->attrs[COLOR_scope__Scope___64dvariables].val = p0; /* @variables on */ -RET_LABEL:; +var1 = var3; +RET_LABEL2:(void)0; } -/* method scope#Scope#variables= for (self: Object, HashMap[String, Variable]) */ -void VIRTUAL_scope__Scope__variables_61d(val* self, val* p0) { -scope__Scope__variables_61d(self, p0); +var = var1; RET_LABEL:; +return var; } /* method scope#Scope#escapemark for (self: Scope): nullable EscapeMark */ val* scope__Scope__escapemark(val* self) { val* var /* : nullable EscapeMark */; val* var1 /* : nullable EscapeMark */; -var1 = self->attrs[COLOR_scope__Scope___64descapemark].val; /* @escapemark on */ +var1 = self->attrs[COLOR_scope__Scope___escapemark].val; /* _escapemark on */ var = var1; RET_LABEL:; return var; @@ -949,19 +1999,27 @@ return var; val* VIRTUAL_scope__Scope__escapemark(val* self) { val* var /* : nullable EscapeMark */; val* var1 /* : nullable EscapeMark */; -var1 = scope__Scope__escapemark(self); +val* var3 /* : nullable EscapeMark */; +{ /* Inline scope#Scope#escapemark (self) on */ +var3 = self->attrs[COLOR_scope__Scope___escapemark].val; /* _escapemark on */ +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method scope#Scope#escapemark= for (self: Scope, nullable EscapeMark) */ void scope__Scope__escapemark_61d(val* self, val* p0) { -self->attrs[COLOR_scope__Scope___64descapemark].val = p0; /* @escapemark on */ +self->attrs[COLOR_scope__Scope___escapemark].val = p0; /* _escapemark on */ RET_LABEL:; } /* method scope#Scope#escapemark= for (self: Object, nullable EscapeMark) */ void VIRTUAL_scope__Scope__escapemark_61d(val* self, val* p0) { -scope__Scope__escapemark_61d(self, p0); +{ /* Inline scope#Scope#escapemark= (self,p0) on */ +self->attrs[COLOR_scope__Scope___escapemark].val = p0; /* _escapemark on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method scope#Scope#get_variable for (self: Scope, String): nullable Variable */ @@ -969,21 +2027,49 @@ val* scope__Scope__get_variable(val* self, val* p0) { val* var /* : nullable Variable */; val* var_name /* var name: String */; val* var1 /* : HashMap[String, Variable] */; -short int var2 /* : Bool */; val* var3 /* : HashMap[String, Variable] */; -val* var4 /* : nullable Object */; -val* var5 /* : null */; +short int var4 /* : Bool */; +val* var5 /* : HashMap[String, Variable] */; +val* var7 /* : HashMap[String, Variable] */; +val* var8 /* : nullable Object */; +val* var9 /* : null */; var_name = p0; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_scope__Scope__variables]))(self) /* variables on */; -var2 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var1, var_name) /* has_key on */; -if (var2){ -var3 = ((val* (*)(val*))(self->class->vft[COLOR_scope__Scope__variables]))(self) /* variables on */; -var4 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var3, var_name) /* [] on */; -var = var4; +{ +{ /* Inline scope#Scope#variables (self) on */ +var3 = self->attrs[COLOR_scope__Scope___variables].val; /* _variables on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _variables"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 225); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} +{ +var4 = abstract_collection__MapRead__has_key(var1, var_name); +} +if (var4){ +{ +{ /* Inline scope#Scope#variables (self) on */ +var7 = self->attrs[COLOR_scope__Scope___variables].val; /* _variables on */ +if (unlikely(var7 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _variables"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 225); +show_backtrace(1); +} +var5 = var7; +RET_LABEL6:(void)0; +} +} +{ +var8 = hash_collection__HashMap___91d_93d(var5, var_name); +} +var = var8; goto RET_LABEL; } else { -var5 = NULL; -var = var5; +var9 = NULL; +var = var9; goto RET_LABEL; } RET_LABEL:; @@ -998,25 +2084,18 @@ var = var1; RET_LABEL:; return var; } -/* method scope#Scope#init for (self: Scope) */ -void scope__Scope__init(val* self) { -RET_LABEL:; -} -/* method scope#Scope#init for (self: Object) */ -void VIRTUAL_scope__Scope__init(val* self) { -scope__Scope__init(self); -RET_LABEL:; -} /* method scope#ANode#accept_scope_visitor for (self: ANode, ScopeVisitor) */ void scope__ANode__accept_scope_visitor(val* self, val* p0) { val* var_v /* var v: ScopeVisitor */; var_v = p0; +{ ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__visit_all]))(self, var_v) /* visit_all on */; +} RET_LABEL:; } /* method scope#ANode#accept_scope_visitor for (self: Object, ScopeVisitor) */ void VIRTUAL_scope__ANode__accept_scope_visitor(val* self, val* p0) { -scope__ANode__accept_scope_visitor(self, p0); +scope__ANode__accept_scope_visitor(self, p0); /* Direct call scope#ANode#accept_scope_visitor on */ RET_LABEL:; } /* method scope#APropdef#do_scope for (self: APropdef, ToolContext) */ @@ -1026,22 +2105,28 @@ val* var /* : ScopeVisitor */; val* var_v /* var v: ScopeVisitor */; var_toolcontext = p0; var = NEW_scope__ScopeVisitor(&type_scope__ScopeVisitor); -((void (*)(val*, val*))(var->class->vft[COLOR_scope__ScopeVisitor__init]))(var, var_toolcontext) /* init on */; -CHECK_NEW_scope__ScopeVisitor(var); +{ +scope__ScopeVisitor__init(var, var_toolcontext); /* Direct call scope#ScopeVisitor#init on */ +} var_v = var; -((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, self) /* enter_visit on */; +{ +parser_nodes__Visitor__enter_visit(var_v, self); /* Direct call parser_nodes#Visitor#enter_visit on */ +} +{ +scope__ScopeVisitor__shift_scope(var_v); /* Direct call scope#ScopeVisitor#shift_scope on */ +} RET_LABEL:; } /* method scope#APropdef#do_scope for (self: Object, ToolContext) */ void VIRTUAL_scope__APropdef__do_scope(val* self, val* p0) { -scope__APropdef__do_scope(self, p0); +scope__APropdef__do_scope(self, p0); /* Direct call scope#APropdef#do_scope on */ RET_LABEL:; } /* method scope#AParam#variable for (self: AParam): nullable Variable */ val* scope__AParam__variable(val* self) { val* var /* : nullable Variable */; val* var1 /* : nullable Variable */; -var1 = self->attrs[COLOR_scope__AParam___64dvariable].val; /* @variable on */ +var1 = self->attrs[COLOR_scope__AParam___variable].val; /* _variable on */ var = var1; RET_LABEL:; return var; @@ -1050,109 +2135,88 @@ return var; val* VIRTUAL_scope__AParam__variable(val* self) { val* var /* : nullable Variable */; val* var1 /* : nullable Variable */; -var1 = scope__AParam__variable(self); +val* var3 /* : nullable Variable */; +{ /* Inline scope#AParam#variable (self) on */ +var3 = self->attrs[COLOR_scope__AParam___variable].val; /* _variable on */ +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method scope#AParam#variable= for (self: AParam, nullable Variable) */ void scope__AParam__variable_61d(val* self, val* p0) { -self->attrs[COLOR_scope__AParam___64dvariable].val = p0; /* @variable on */ +self->attrs[COLOR_scope__AParam___variable].val = p0; /* _variable on */ RET_LABEL:; } /* method scope#AParam#variable= for (self: Object, nullable Variable) */ void VIRTUAL_scope__AParam__variable_61d(val* self, val* p0) { -scope__AParam__variable_61d(self, p0); +{ /* Inline scope#AParam#variable= (self,p0) on */ +self->attrs[COLOR_scope__AParam___variable].val = p0; /* _variable on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method scope#AParam#accept_scope_visitor for (self: AParam, ScopeVisitor) */ void scope__AParam__accept_scope_visitor(val* self, val* p0) { val* var_v /* var v: ScopeVisitor */; val* var /* : TId */; +val* var2 /* : TId */; val* var_nid /* var nid: TId */; -val* var1 /* : Variable */; -val* var2 /* : String */; +val* var3 /* : Variable */; +val* var4 /* : String */; val* var_variable /* var variable: Variable */; -short int var3 /* : Bool */; +short int var5 /* : Bool */; var_v = p0; +{ ((void (*)(val*, val*))(self->class->vft[COLOR_scope__AParam__accept_scope_visitor]))(self, p0) /* accept_scope_visitor on */; -var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AParam__n_id]))(self) /* n_id on */; +} +{ +{ /* Inline parser_nodes#AParam#n_id (self) on */ +var2 = self->attrs[COLOR_parser_nodes__AParam___n_id].val; /* _n_id on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1287); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} var_nid = var; -var1 = NEW_scope__Variable(&type_scope__Variable); -var2 = ((val* (*)(val*))(var_nid->class->vft[COLOR_parser_nodes__Token__text]))(var_nid) /* text on */; -((void (*)(val*, val*))(var1->class->vft[COLOR_scope__Variable__init]))(var1, var2) /* init on */; -CHECK_NEW_scope__Variable(var1); -var_variable = var1; -var3 = ((short int (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__register_variable]))(var_v, var_nid, var_variable) /* register_variable on */; -var3; -((void (*)(val*, val*))(self->class->vft[COLOR_scope__AParam__variable_61d]))(self, var_variable) /* variable= on */; -RET_LABEL:; +var3 = NEW_scope__Variable(&type_scope__Variable); +{ +var4 = lexer_work__Token__text(var_nid); } -/* method scope#AParam#accept_scope_visitor for (self: Object, ScopeVisitor) */ -void VIRTUAL_scope__AParam__accept_scope_visitor(val* self, val* p0) { -scope__AParam__accept_scope_visitor(self, p0); -RET_LABEL:; +{ +((void (*)(val*, val*))(var3->class->vft[COLOR_scope__Variable__name_61d]))(var3, var4) /* name= on */; } -/* method scope#AClosureDecl#variable for (self: AClosureDecl): nullable ClosureVariable */ -val* scope__AClosureDecl__variable(val* self) { -val* var /* : nullable ClosureVariable */; -val* var1 /* : nullable ClosureVariable */; -var1 = self->attrs[COLOR_scope__AClosureDecl___64dvariable].val; /* @variable on */ -var = var1; -RET_LABEL:; -return var; +{ +((void (*)(val*))(var3->class->vft[COLOR_kernel__Object__init]))(var3) /* init on */; } -/* method scope#AClosureDecl#variable for (self: Object): nullable ClosureVariable */ -val* VIRTUAL_scope__AClosureDecl__variable(val* self) { -val* var /* : nullable ClosureVariable */; -val* var1 /* : nullable ClosureVariable */; -var1 = scope__AClosureDecl__variable(self); -var = var1; -RET_LABEL:; -return var; +var_variable = var3; +{ +var5 = scope__ScopeVisitor__register_variable(var_v, var_nid, var_variable); } -/* method scope#AClosureDecl#variable= for (self: AClosureDecl, nullable ClosureVariable) */ -void scope__AClosureDecl__variable_61d(val* self, val* p0) { -self->attrs[COLOR_scope__AClosureDecl___64dvariable].val = p0; /* @variable on */ -RET_LABEL:; +{ +{ /* Inline scope#AParam#variable= (self,var_variable) on */ +self->attrs[COLOR_scope__AParam___variable].val = var_variable; /* _variable on */ +RET_LABEL6:(void)0; } -/* method scope#AClosureDecl#variable= for (self: Object, nullable ClosureVariable) */ -void VIRTUAL_scope__AClosureDecl__variable_61d(val* self, val* p0) { -scope__AClosureDecl__variable_61d(self, p0); -RET_LABEL:; } -/* method scope#AClosureDecl#accept_scope_visitor for (self: AClosureDecl, ScopeVisitor) */ -void scope__AClosureDecl__accept_scope_visitor(val* self, val* p0) { -val* var_v /* var v: ScopeVisitor */; -val* var /* : TId */; -val* var_nid /* var nid: TId */; -val* var1 /* : ClosureVariable */; -val* var2 /* : String */; -val* var_variable /* var variable: ClosureVariable */; -short int var3 /* : Bool */; -var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AClosureDecl__n_id]))(self) /* n_id on */; -var_nid = var; -var1 = NEW_scope__ClosureVariable(&type_scope__ClosureVariable); -var2 = ((val* (*)(val*))(var_nid->class->vft[COLOR_parser_nodes__Token__text]))(var_nid) /* text on */; -((void (*)(val*, val*))(var1->class->vft[COLOR_scope__Variable__init]))(var1, var2) /* init on */; -CHECK_NEW_scope__ClosureVariable(var1); -var_variable = var1; -var3 = ((short int (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__register_variable]))(var_v, var_nid, var_variable) /* register_variable on */; -var3; -((void (*)(val*, val*))(self->class->vft[COLOR_scope__AClosureDecl__variable_61d]))(self, var_variable) /* variable= on */; RET_LABEL:; } -/* method scope#AClosureDecl#accept_scope_visitor for (self: Object, ScopeVisitor) */ -void VIRTUAL_scope__AClosureDecl__accept_scope_visitor(val* self, val* p0) { -scope__AClosureDecl__accept_scope_visitor(self, p0); +/* method scope#AParam#accept_scope_visitor for (self: Object, ScopeVisitor) */ +void VIRTUAL_scope__AParam__accept_scope_visitor(val* self, val* p0) { +scope__AParam__accept_scope_visitor(self, p0); /* Direct call scope#AParam#accept_scope_visitor on */ RET_LABEL:; } /* method scope#AVardeclExpr#variable for (self: AVardeclExpr): nullable Variable */ val* scope__AVardeclExpr__variable(val* self) { val* var /* : nullable Variable */; val* var1 /* : nullable Variable */; -var1 = self->attrs[COLOR_scope__AVardeclExpr___64dvariable].val; /* @variable on */ +var1 = self->attrs[COLOR_scope__AVardeclExpr___variable].val; /* _variable on */ var = var1; RET_LABEL:; return var; @@ -1161,423 +2225,836 @@ return var; val* VIRTUAL_scope__AVardeclExpr__variable(val* self) { val* var /* : nullable Variable */; val* var1 /* : nullable Variable */; -var1 = scope__AVardeclExpr__variable(self); +val* var3 /* : nullable Variable */; +{ /* Inline scope#AVardeclExpr#variable (self) on */ +var3 = self->attrs[COLOR_scope__AVardeclExpr___variable].val; /* _variable on */ +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method scope#AVardeclExpr#variable= for (self: AVardeclExpr, nullable Variable) */ void scope__AVardeclExpr__variable_61d(val* self, val* p0) { -self->attrs[COLOR_scope__AVardeclExpr___64dvariable].val = p0; /* @variable on */ +self->attrs[COLOR_scope__AVardeclExpr___variable].val = p0; /* _variable on */ RET_LABEL:; } /* method scope#AVardeclExpr#variable= for (self: Object, nullable Variable) */ void VIRTUAL_scope__AVardeclExpr__variable_61d(val* self, val* p0) { -scope__AVardeclExpr__variable_61d(self, p0); +{ /* Inline scope#AVardeclExpr#variable= (self,p0) on */ +self->attrs[COLOR_scope__AVardeclExpr___variable].val = p0; /* _variable on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method scope#AVardeclExpr#accept_scope_visitor for (self: AVardeclExpr, ScopeVisitor) */ void scope__AVardeclExpr__accept_scope_visitor(val* self, val* p0) { val* var_v /* var v: ScopeVisitor */; val* var /* : TId */; +val* var2 /* : TId */; val* var_nid /* var nid: TId */; -val* var1 /* : Variable */; -val* var2 /* : String */; +val* var3 /* : Variable */; +val* var4 /* : String */; val* var_variable /* var variable: Variable */; -short int var3 /* : Bool */; +short int var5 /* : Bool */; +short int var6 /* : Bool */; var_v = p0; +{ ((void (*)(val*, val*))(self->class->vft[COLOR_scope__AVardeclExpr__accept_scope_visitor]))(self, p0) /* accept_scope_visitor on */; -var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AVardeclExpr__n_id]))(self) /* n_id on */; +} +{ +{ /* Inline parser_nodes#AVardeclExpr#n_id (self) on */ +var2 = self->attrs[COLOR_parser_nodes__AVardeclExpr___n_id].val; /* _n_id on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1329); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} var_nid = var; -var1 = NEW_scope__Variable(&type_scope__Variable); -var2 = ((val* (*)(val*))(var_nid->class->vft[COLOR_parser_nodes__Token__text]))(var_nid) /* text on */; -((void (*)(val*, val*))(var1->class->vft[COLOR_scope__Variable__init]))(var1, var2) /* init on */; -CHECK_NEW_scope__Variable(var1); -var_variable = var1; -var3 = ((short int (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__register_variable]))(var_v, var_nid, var_variable) /* register_variable on */; -var3; -((void (*)(val*, val*))(self->class->vft[COLOR_scope__AVardeclExpr__variable_61d]))(self, var_variable) /* variable= on */; -RET_LABEL:; +var3 = NEW_scope__Variable(&type_scope__Variable); +{ +var4 = lexer_work__Token__text(var_nid); +} +{ +((void (*)(val*, val*))(var3->class->vft[COLOR_scope__Variable__name_61d]))(var3, var4) /* name= on */; +} +{ +((void (*)(val*))(var3->class->vft[COLOR_kernel__Object__init]))(var3) /* init on */; +} +var_variable = var3; +{ +var5 = scope__ScopeVisitor__register_variable(var_v, var_nid, var_variable); +} +var6 = 1; +{ +{ /* Inline scope#Variable#warn_unread= (var_variable,var6) on */ +var_variable->attrs[COLOR_scope__Variable___warn_unread].s = var6; /* _warn_unread on */ +RET_LABEL7:(void)0; +} +} +{ +{ /* Inline scope#AVardeclExpr#variable= (self,var_variable) on */ +self->attrs[COLOR_scope__AVardeclExpr___variable].val = var_variable; /* _variable on */ +RET_LABEL8:(void)0; } -/* method scope#AVardeclExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */ -void VIRTUAL_scope__AVardeclExpr__accept_scope_visitor(val* self, val* p0) { -scope__AVardeclExpr__accept_scope_visitor(self, p0); -RET_LABEL:; } -/* method scope#ASelfExpr#variable for (self: ASelfExpr): nullable Variable */ -val* scope__ASelfExpr__variable(val* self) { -val* var /* : nullable Variable */; -val* var1 /* : nullable Variable */; -var1 = self->attrs[COLOR_scope__ASelfExpr___64dvariable].val; /* @variable on */ -var = var1; RET_LABEL:; -return var; } -/* method scope#ASelfExpr#variable for (self: Object): nullable Variable */ -val* VIRTUAL_scope__ASelfExpr__variable(val* self) { -val* var /* : nullable Variable */; -val* var1 /* : nullable Variable */; -var1 = scope__ASelfExpr__variable(self); -var = var1; +/* method scope#AVardeclExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */ +void VIRTUAL_scope__AVardeclExpr__accept_scope_visitor(val* self, val* p0) { +scope__AVardeclExpr__accept_scope_visitor(self, p0); /* Direct call scope#AVardeclExpr#accept_scope_visitor on */ RET_LABEL:; -return var; } /* method scope#ASelfExpr#variable= for (self: ASelfExpr, nullable Variable) */ void scope__ASelfExpr__variable_61d(val* self, val* p0) { -self->attrs[COLOR_scope__ASelfExpr___64dvariable].val = p0; /* @variable on */ +self->attrs[COLOR_scope__ASelfExpr___variable].val = p0; /* _variable on */ RET_LABEL:; } /* method scope#ASelfExpr#variable= for (self: Object, nullable Variable) */ void VIRTUAL_scope__ASelfExpr__variable_61d(val* self, val* p0) { -scope__ASelfExpr__variable_61d(self, p0); +{ /* Inline scope#ASelfExpr#variable= (self,p0) on */ +self->attrs[COLOR_scope__ASelfExpr___variable].val = p0; /* _variable on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method scope#ASelfExpr#accept_scope_visitor for (self: ASelfExpr, ScopeVisitor) */ void scope__ASelfExpr__accept_scope_visitor(val* self, val* p0) { val* var_v /* var v: ScopeVisitor */; val* var /* : Variable */; +val* var2 /* : Variable */; var_v = p0; +{ ((void (*)(val*, val*))(self->class->vft[COLOR_scope__ASelfExpr__accept_scope_visitor]))(self, p0) /* accept_scope_visitor on */; -var = ((val* (*)(val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__selfvariable]))(var_v) /* selfvariable on */; -((void (*)(val*, val*))(self->class->vft[COLOR_scope__ASelfExpr__variable_61d]))(self, var) /* variable= on */; -RET_LABEL:; } -/* method scope#ASelfExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */ -void VIRTUAL_scope__ASelfExpr__accept_scope_visitor(val* self, val* p0) { -scope__ASelfExpr__accept_scope_visitor(self, p0); +{ +{ /* Inline scope#ScopeVisitor#selfvariable (var_v) on */ +var2 = var_v->attrs[COLOR_scope__ScopeVisitor___selfvariable].val; /* _selfvariable on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _selfvariable"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 72); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +{ /* Inline scope#ASelfExpr#variable= (self,var) on */ +self->attrs[COLOR_scope__ASelfExpr___variable].val = var; /* _variable on */ +RET_LABEL3:(void)0; +} +} RET_LABEL:; } -/* method scope#AContinueExpr#escapemark for (self: AContinueExpr): nullable EscapeMark */ -val* scope__AContinueExpr__escapemark(val* self) { +/* method scope#ASelfExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */ +void VIRTUAL_scope__ASelfExpr__accept_scope_visitor(val* self, val* p0) { +scope__ASelfExpr__accept_scope_visitor(self, p0); /* Direct call scope#ASelfExpr#accept_scope_visitor on */ +RET_LABEL:; +} +/* method scope#AEscapeExpr#escapemark for (self: AEscapeExpr): nullable EscapeMark */ +val* scope__AEscapeExpr__escapemark(val* self) { val* var /* : nullable EscapeMark */; val* var1 /* : nullable EscapeMark */; -var1 = self->attrs[COLOR_scope__AContinueExpr___64descapemark].val; /* @escapemark on */ +var1 = self->attrs[COLOR_scope__AEscapeExpr___escapemark].val; /* _escapemark on */ var = var1; RET_LABEL:; return var; } -/* method scope#AContinueExpr#escapemark for (self: Object): nullable EscapeMark */ -val* VIRTUAL_scope__AContinueExpr__escapemark(val* self) { +/* method scope#AEscapeExpr#escapemark for (self: Object): nullable EscapeMark */ +val* VIRTUAL_scope__AEscapeExpr__escapemark(val* self) { val* var /* : nullable EscapeMark */; val* var1 /* : nullable EscapeMark */; -var1 = scope__AContinueExpr__escapemark(self); +val* var3 /* : nullable EscapeMark */; +{ /* Inline scope#AEscapeExpr#escapemark (self) on */ +var3 = self->attrs[COLOR_scope__AEscapeExpr___escapemark].val; /* _escapemark on */ +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } -/* method scope#AContinueExpr#escapemark= for (self: AContinueExpr, nullable EscapeMark) */ -void scope__AContinueExpr__escapemark_61d(val* self, val* p0) { -self->attrs[COLOR_scope__AContinueExpr___64descapemark].val = p0; /* @escapemark on */ +/* method scope#AEscapeExpr#escapemark= for (self: AEscapeExpr, nullable EscapeMark) */ +void scope__AEscapeExpr__escapemark_61d(val* self, val* p0) { +self->attrs[COLOR_scope__AEscapeExpr___escapemark].val = p0; /* _escapemark on */ RET_LABEL:; } -/* method scope#AContinueExpr#escapemark= for (self: Object, nullable EscapeMark) */ -void VIRTUAL_scope__AContinueExpr__escapemark_61d(val* self, val* p0) { -scope__AContinueExpr__escapemark_61d(self, p0); +/* method scope#AEscapeExpr#escapemark= for (self: Object, nullable EscapeMark) */ +void VIRTUAL_scope__AEscapeExpr__escapemark_61d(val* self, val* p0) { +{ /* Inline scope#AEscapeExpr#escapemark= (self,p0) on */ +self->attrs[COLOR_scope__AEscapeExpr___escapemark].val = p0; /* _escapemark on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method scope#AContinueExpr#accept_scope_visitor for (self: AContinueExpr, ScopeVisitor) */ void scope__AContinueExpr__accept_scope_visitor(val* self, val* p0) { val* var_v /* var v: ScopeVisitor */; val* var /* : nullable ALabel */; -val* var1 /* : nullable EscapeMark */; +val* var2 /* : nullable ALabel */; +val* var3 /* : nullable EscapeMark */; val* var_escapemark /* var escapemark: nullable EscapeMark */; -val* var2 /* : null */; -short int var3 /* : Bool */; -short int var4 /* : Bool */; +val* var4 /* : null */; short int var5 /* : Bool */; +short int var6 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var8 /* : Bool */; +short int var10 /* : Bool */; +val* var11 /* : nullable EscapeMark */; +val* var13 /* : nullable EscapeMark */; +val* var14 /* : null */; +short int var15 /* : Bool */; +short int var16 /* : Bool */; +short int var18 /* : Bool */; +short int var20 /* : Bool */; static val* varonce; -val* var6 /* : String */; -char* var7 /* : NativeString */; -long var8 /* : Int */; -val* var9 /* : String */; -val* var10 /* : Array[AContinueExpr] */; +val* var21 /* : String */; +char* var22 /* : NativeString */; +long var23 /* : Int */; +val* var24 /* : FlatString */; +val* var25 /* : Array[AEscapeExpr] */; +val* var27 /* : Array[AEscapeExpr] */; var_v = p0; +{ ((void (*)(val*, val*))(self->class->vft[COLOR_scope__AContinueExpr__accept_scope_visitor]))(self, p0) /* accept_scope_visitor on */; -var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ALabelable__n_label]))(self) /* n_label on */; -var1 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__get_escapemark]))(var_v, self, var) /* get_escapemark on */; -var_escapemark = var1; -var2 = NULL; +} +{ +{ /* Inline parser_nodes#ALabelable#n_label (self) on */ +var2 = self->attrs[COLOR_parser_nodes__ALabelable___n_label].val; /* _n_label on */ +var = var2; +RET_LABEL1:(void)0; +} +} +{ +var3 = scope__ScopeVisitor__get_escapemark(var_v, self, var); +} +var_escapemark = var3; +var4 = NULL; if (var_escapemark == NULL) { -var3 = 1; /* is null */ +var5 = 1; /* is null */ } else { -var3 = 0; /* arg is null but recv is not */ +var5 = 0; /* arg is null but recv is not */ } -if (var3){ +if (0) { +{ /* Inline kernel#Object#== (var_escapemark,var4) on */ +var_other = var4; +{ +{ /* Inline kernel#Object#is_same_instance (var_escapemark,var_other) on */ +var10 = var_escapemark == var_other; +var8 = var10; +goto RET_LABEL9; +RET_LABEL9:(void)0; +} +} +var6 = var8; +goto RET_LABEL7; +RET_LABEL7:(void)0; +} +var5 = var6; +} +if (var5){ goto RET_LABEL; } else { } -var4 = ((short int (*)(val*))(var_escapemark->class->vft[COLOR_scope__EscapeMark__for_loop]))(var_escapemark) /* for_loop on */; -var5 = !var4; -if (var5){ +{ +{ /* Inline scope#EscapeMark#continue_mark (var_escapemark) on */ +var13 = var_escapemark->attrs[COLOR_scope__EscapeMark___continue_mark].val; /* _continue_mark on */ +var11 = var13; +RET_LABEL12:(void)0; +} +} +var_escapemark = var11; +var14 = NULL; +if (var_escapemark == NULL) { +var15 = 1; /* is null */ +} else { +var15 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_escapemark,var14) on */ +var_other = var14; +{ +{ /* Inline kernel#Object#is_same_instance (var_escapemark,var_other) on */ +var20 = var_escapemark == var_other; +var18 = var20; +goto RET_LABEL19; +RET_LABEL19:(void)0; +} +} +var16 = var18; +goto RET_LABEL17; +RET_LABEL17:(void)0; +} +var15 = var16; +} +if (var15){ if (varonce) { -var6 = varonce; +var21 = varonce; } else { -var7 = "Error: cannot \'continue\', only \'break\'."; -var8 = 39; -var9 = string__NativeString__to_s_with_length(var7, var8); -var6 = var9; -varonce = var6; +var22 = "Error: cannot \'continue\', only \'break\'."; +var23 = 39; +var24 = string__NativeString__to_s_with_length(var22, var23); +var21 = var24; +varonce = var21; +} +{ +scope__ScopeVisitor__error(var_v, self, var21); /* Direct call scope#ScopeVisitor#error on */ } -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__error]))(var_v, self, var6) /* error on */; +goto RET_LABEL; } else { } -var10 = ((val* (*)(val*))(var_escapemark->class->vft[COLOR_scope__EscapeMark__continues]))(var_escapemark) /* continues on */; -((void (*)(val*, val*))(var10->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var10, self) /* add on */; -((void (*)(val*, val*))(self->class->vft[COLOR_scope__AContinueExpr__escapemark_61d]))(self, var_escapemark) /* escapemark= on */; -RET_LABEL:; +{ +{ /* Inline scope#EscapeMark#escapes (var_escapemark) on */ +var27 = var_escapemark->attrs[COLOR_scope__EscapeMark___escapes].val; /* _escapes on */ +if (unlikely(var27 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _escapes"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 57); +show_backtrace(1); } -/* method scope#AContinueExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */ -void VIRTUAL_scope__AContinueExpr__accept_scope_visitor(val* self, val* p0) { -scope__AContinueExpr__accept_scope_visitor(self, p0); -RET_LABEL:; +var25 = var27; +RET_LABEL26:(void)0; } -/* method scope#ABreakExpr#escapemark for (self: ABreakExpr): nullable EscapeMark */ -val* scope__ABreakExpr__escapemark(val* self) { -val* var /* : nullable EscapeMark */; -val* var1 /* : nullable EscapeMark */; -var1 = self->attrs[COLOR_scope__ABreakExpr___64descapemark].val; /* @escapemark on */ -var = var1; -RET_LABEL:; -return var; } -/* method scope#ABreakExpr#escapemark for (self: Object): nullable EscapeMark */ -val* VIRTUAL_scope__ABreakExpr__escapemark(val* self) { -val* var /* : nullable EscapeMark */; -val* var1 /* : nullable EscapeMark */; -var1 = scope__ABreakExpr__escapemark(self); -var = var1; -RET_LABEL:; -return var; +{ +array__Array__add(var25, self); /* Direct call array#Array#add on */ +} +{ +{ /* Inline scope#AEscapeExpr#escapemark= (self,var_escapemark) on */ +self->attrs[COLOR_scope__AEscapeExpr___escapemark].val = var_escapemark; /* _escapemark on */ +RET_LABEL28:(void)0; +} } -/* method scope#ABreakExpr#escapemark= for (self: ABreakExpr, nullable EscapeMark) */ -void scope__ABreakExpr__escapemark_61d(val* self, val* p0) { -self->attrs[COLOR_scope__ABreakExpr___64descapemark].val = p0; /* @escapemark on */ RET_LABEL:; } -/* method scope#ABreakExpr#escapemark= for (self: Object, nullable EscapeMark) */ -void VIRTUAL_scope__ABreakExpr__escapemark_61d(val* self, val* p0) { -scope__ABreakExpr__escapemark_61d(self, p0); +/* method scope#AContinueExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */ +void VIRTUAL_scope__AContinueExpr__accept_scope_visitor(val* self, val* p0) { +scope__AContinueExpr__accept_scope_visitor(self, p0); /* Direct call scope#AContinueExpr#accept_scope_visitor on */ RET_LABEL:; } /* method scope#ABreakExpr#accept_scope_visitor for (self: ABreakExpr, ScopeVisitor) */ void scope__ABreakExpr__accept_scope_visitor(val* self, val* p0) { val* var_v /* var v: ScopeVisitor */; val* var /* : nullable ALabel */; -val* var1 /* : nullable EscapeMark */; +val* var2 /* : nullable ALabel */; +val* var3 /* : nullable EscapeMark */; val* var_escapemark /* var escapemark: nullable EscapeMark */; -val* var2 /* : null */; -short int var3 /* : Bool */; -val* var4 /* : Array[ABreakExpr] */; +val* var4 /* : null */; +short int var5 /* : Bool */; +short int var6 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var8 /* : Bool */; +short int var10 /* : Bool */; +val* var11 /* : Array[AEscapeExpr] */; +val* var13 /* : Array[AEscapeExpr] */; var_v = p0; +{ ((void (*)(val*, val*))(self->class->vft[COLOR_scope__ABreakExpr__accept_scope_visitor]))(self, p0) /* accept_scope_visitor on */; -var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ALabelable__n_label]))(self) /* n_label on */; -var1 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__get_escapemark]))(var_v, self, var) /* get_escapemark on */; -var_escapemark = var1; -var2 = NULL; +} +{ +{ /* Inline parser_nodes#ALabelable#n_label (self) on */ +var2 = self->attrs[COLOR_parser_nodes__ALabelable___n_label].val; /* _n_label on */ +var = var2; +RET_LABEL1:(void)0; +} +} +{ +var3 = scope__ScopeVisitor__get_escapemark(var_v, self, var); +} +var_escapemark = var3; +var4 = NULL; if (var_escapemark == NULL) { -var3 = 1; /* is null */ +var5 = 1; /* is null */ } else { -var3 = 0; /* arg is null but recv is not */ +var5 = 0; /* arg is null but recv is not */ } -if (var3){ +if (0) { +{ /* Inline kernel#Object#== (var_escapemark,var4) on */ +var_other = var4; +{ +{ /* Inline kernel#Object#is_same_instance (var_escapemark,var_other) on */ +var10 = var_escapemark == var_other; +var8 = var10; +goto RET_LABEL9; +RET_LABEL9:(void)0; +} +} +var6 = var8; +goto RET_LABEL7; +RET_LABEL7:(void)0; +} +var5 = var6; +} +if (var5){ goto RET_LABEL; } else { } -var4 = ((val* (*)(val*))(var_escapemark->class->vft[COLOR_scope__EscapeMark__breaks]))(var_escapemark) /* breaks on */; -((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var4, self) /* add on */; -((void (*)(val*, val*))(self->class->vft[COLOR_scope__ABreakExpr__escapemark_61d]))(self, var_escapemark) /* escapemark= on */; +{ +{ /* Inline scope#EscapeMark#escapes (var_escapemark) on */ +var13 = var_escapemark->attrs[COLOR_scope__EscapeMark___escapes].val; /* _escapes on */ +if (unlikely(var13 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _escapes"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 57); +show_backtrace(1); +} +var11 = var13; +RET_LABEL12:(void)0; +} +} +{ +array__Array__add(var11, self); /* Direct call array#Array#add on */ +} +{ +{ /* Inline scope#AEscapeExpr#escapemark= (self,var_escapemark) on */ +self->attrs[COLOR_scope__AEscapeExpr___escapemark].val = var_escapemark; /* _escapemark on */ +RET_LABEL14:(void)0; +} +} RET_LABEL:; } /* method scope#ABreakExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */ void VIRTUAL_scope__ABreakExpr__accept_scope_visitor(val* self, val* p0) { -scope__ABreakExpr__accept_scope_visitor(self, p0); +scope__ABreakExpr__accept_scope_visitor(self, p0); /* Direct call scope#ABreakExpr#accept_scope_visitor on */ RET_LABEL:; } -/* method scope#ADoExpr#escapemark for (self: ADoExpr): nullable EscapeMark */ -val* scope__ADoExpr__escapemark(val* self) { +/* method scope#ADoExpr#break_mark for (self: ADoExpr): nullable EscapeMark */ +val* scope__ADoExpr__break_mark(val* self) { val* var /* : nullable EscapeMark */; val* var1 /* : nullable EscapeMark */; -var1 = self->attrs[COLOR_scope__ADoExpr___64descapemark].val; /* @escapemark on */ +var1 = self->attrs[COLOR_scope__ADoExpr___break_mark].val; /* _break_mark on */ var = var1; RET_LABEL:; return var; } -/* method scope#ADoExpr#escapemark for (self: Object): nullable EscapeMark */ -val* VIRTUAL_scope__ADoExpr__escapemark(val* self) { +/* method scope#ADoExpr#break_mark for (self: Object): nullable EscapeMark */ +val* VIRTUAL_scope__ADoExpr__break_mark(val* self) { val* var /* : nullable EscapeMark */; val* var1 /* : nullable EscapeMark */; -var1 = scope__ADoExpr__escapemark(self); +val* var3 /* : nullable EscapeMark */; +{ /* Inline scope#ADoExpr#break_mark (self) on */ +var3 = self->attrs[COLOR_scope__ADoExpr___break_mark].val; /* _break_mark on */ +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } -/* method scope#ADoExpr#escapemark= for (self: ADoExpr, nullable EscapeMark) */ -void scope__ADoExpr__escapemark_61d(val* self, val* p0) { -self->attrs[COLOR_scope__ADoExpr___64descapemark].val = p0; /* @escapemark on */ +/* method scope#ADoExpr#break_mark= for (self: ADoExpr, nullable EscapeMark) */ +void scope__ADoExpr__break_mark_61d(val* self, val* p0) { +self->attrs[COLOR_scope__ADoExpr___break_mark].val = p0; /* _break_mark on */ RET_LABEL:; } -/* method scope#ADoExpr#escapemark= for (self: Object, nullable EscapeMark) */ -void VIRTUAL_scope__ADoExpr__escapemark_61d(val* self, val* p0) { -scope__ADoExpr__escapemark_61d(self, p0); +/* method scope#ADoExpr#break_mark= for (self: Object, nullable EscapeMark) */ +void VIRTUAL_scope__ADoExpr__break_mark_61d(val* self, val* p0) { +{ /* Inline scope#ADoExpr#break_mark= (self,p0) on */ +self->attrs[COLOR_scope__ADoExpr___break_mark].val = p0; /* _break_mark on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method scope#ADoExpr#accept_scope_visitor for (self: ADoExpr, ScopeVisitor) */ void scope__ADoExpr__accept_scope_visitor(val* self, val* p0) { val* var_v /* var v: ScopeVisitor */; val* var /* : nullable ALabel */; -short int var1 /* : Bool */; -val* var2 /* : EscapeMark */; -val* var3 /* : nullable AExpr */; -val* var4 /* : nullable EscapeMark */; +val* var2 /* : nullable ALabel */; +short int var3 /* : Bool */; +val* var4 /* : EscapeMark */; +val* var6 /* : nullable AExpr */; +val* var8 /* : nullable AExpr */; +val* var9 /* : nullable EscapeMark */; +val* var11 /* : nullable EscapeMark */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ALabelable__n_label]))(self) /* n_label on */; -var1 = 0; -var2 = ((val* (*)(val*, val*, short int))(var_v->class->vft[COLOR_scope__ScopeVisitor__make_escape_mark]))(var_v, var, var1) /* make_escape_mark on */; -((void (*)(val*, val*))(self->class->vft[COLOR_scope__ADoExpr__escapemark_61d]))(self, var2) /* escapemark= on */; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ADoExpr__n_block]))(self) /* n_block on */; -var4 = ((val* (*)(val*))(self->class->vft[COLOR_scope__ADoExpr__escapemark]))(self) /* escapemark on */; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__enter_visit_block]))(var_v, var3, var4) /* enter_visit_block on */; +{ +{ /* Inline parser_nodes#ALabelable#n_label (self) on */ +var2 = self->attrs[COLOR_parser_nodes__ALabelable___n_label].val; /* _n_label on */ +var = var2; +RET_LABEL1:(void)0; +} +} +var3 = 0; +{ +var4 = scope__ScopeVisitor__make_escape_mark(var_v, var, var3); +} +{ +{ /* Inline scope#ADoExpr#break_mark= (self,var4) on */ +self->attrs[COLOR_scope__ADoExpr___break_mark].val = var4; /* _break_mark on */ +RET_LABEL5:(void)0; +} +} +{ +{ /* Inline parser_nodes#ADoExpr#n_block (self) on */ +var8 = self->attrs[COLOR_parser_nodes__ADoExpr___n_block].val; /* _n_block on */ +var6 = var8; +RET_LABEL7:(void)0; +} +} +{ +{ /* Inline scope#ADoExpr#break_mark (self) on */ +var11 = self->attrs[COLOR_scope__ADoExpr___break_mark].val; /* _break_mark on */ +var9 = var11; +RET_LABEL10:(void)0; +} +} +{ +scope__ScopeVisitor__enter_visit_block(var_v, var6, var9); /* Direct call scope#ScopeVisitor#enter_visit_block on */ +} RET_LABEL:; } /* method scope#ADoExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */ void VIRTUAL_scope__ADoExpr__accept_scope_visitor(val* self, val* p0) { -scope__ADoExpr__accept_scope_visitor(self, p0); +scope__ADoExpr__accept_scope_visitor(self, p0); /* Direct call scope#ADoExpr#accept_scope_visitor on */ RET_LABEL:; } /* method scope#AIfExpr#accept_scope_visitor for (self: AIfExpr, ScopeVisitor) */ void scope__AIfExpr__accept_scope_visitor(val* self, val* p0) { val* var_v /* var v: ScopeVisitor */; val* var /* : AExpr */; -val* var1 /* : nullable AExpr */; -val* var2 /* : null */; +val* var2 /* : AExpr */; val* var3 /* : nullable AExpr */; -val* var4 /* : null */; +val* var5 /* : nullable AExpr */; +val* var6 /* : null */; +val* var7 /* : nullable AExpr */; +val* var9 /* : nullable AExpr */; +val* var10 /* : null */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfExpr__n_expr]))(self) /* n_expr on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfExpr__n_then]))(self) /* n_then on */; -var2 = NULL; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__enter_visit_block]))(var_v, var1, var2) /* enter_visit_block on */; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfExpr__n_else]))(self) /* n_else on */; -var4 = NULL; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__enter_visit_block]))(var_v, var3, var4) /* enter_visit_block on */; +{ +{ /* Inline parser_nodes#AIfExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_parser_nodes__AIfExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1387); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +parser_nodes__Visitor__enter_visit(var_v, var); /* Direct call parser_nodes#Visitor#enter_visit on */ +} +{ +{ /* Inline parser_nodes#AIfExpr#n_then (self) on */ +var5 = self->attrs[COLOR_parser_nodes__AIfExpr___n_then].val; /* _n_then on */ +var3 = var5; +RET_LABEL4:(void)0; +} +} +var6 = NULL; +{ +scope__ScopeVisitor__enter_visit_block(var_v, var3, var6); /* Direct call scope#ScopeVisitor#enter_visit_block on */ +} +{ +{ /* Inline parser_nodes#AIfExpr#n_else (self) on */ +var9 = self->attrs[COLOR_parser_nodes__AIfExpr___n_else].val; /* _n_else on */ +var7 = var9; +RET_LABEL8:(void)0; +} +} +var10 = NULL; +{ +scope__ScopeVisitor__enter_visit_block(var_v, var7, var10); /* Direct call scope#ScopeVisitor#enter_visit_block on */ +} RET_LABEL:; } /* method scope#AIfExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */ void VIRTUAL_scope__AIfExpr__accept_scope_visitor(val* self, val* p0) { -scope__AIfExpr__accept_scope_visitor(self, p0); +scope__AIfExpr__accept_scope_visitor(self, p0); /* Direct call scope#AIfExpr#accept_scope_visitor on */ RET_LABEL:; } -/* method scope#AWhileExpr#escapemark for (self: AWhileExpr): nullable EscapeMark */ -val* scope__AWhileExpr__escapemark(val* self) { +/* method scope#AWhileExpr#break_mark for (self: AWhileExpr): nullable EscapeMark */ +val* scope__AWhileExpr__break_mark(val* self) { val* var /* : nullable EscapeMark */; val* var1 /* : nullable EscapeMark */; -var1 = self->attrs[COLOR_scope__AWhileExpr___64descapemark].val; /* @escapemark on */ +var1 = self->attrs[COLOR_scope__AWhileExpr___break_mark].val; /* _break_mark on */ var = var1; RET_LABEL:; return var; } -/* method scope#AWhileExpr#escapemark for (self: Object): nullable EscapeMark */ -val* VIRTUAL_scope__AWhileExpr__escapemark(val* self) { +/* method scope#AWhileExpr#break_mark for (self: Object): nullable EscapeMark */ +val* VIRTUAL_scope__AWhileExpr__break_mark(val* self) { val* var /* : nullable EscapeMark */; val* var1 /* : nullable EscapeMark */; -var1 = scope__AWhileExpr__escapemark(self); +val* var3 /* : nullable EscapeMark */; +{ /* Inline scope#AWhileExpr#break_mark (self) on */ +var3 = self->attrs[COLOR_scope__AWhileExpr___break_mark].val; /* _break_mark on */ +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } -/* method scope#AWhileExpr#escapemark= for (self: AWhileExpr, nullable EscapeMark) */ -void scope__AWhileExpr__escapemark_61d(val* self, val* p0) { -self->attrs[COLOR_scope__AWhileExpr___64descapemark].val = p0; /* @escapemark on */ +/* method scope#AWhileExpr#break_mark= for (self: AWhileExpr, nullable EscapeMark) */ +void scope__AWhileExpr__break_mark_61d(val* self, val* p0) { +self->attrs[COLOR_scope__AWhileExpr___break_mark].val = p0; /* _break_mark on */ RET_LABEL:; } -/* method scope#AWhileExpr#escapemark= for (self: Object, nullable EscapeMark) */ -void VIRTUAL_scope__AWhileExpr__escapemark_61d(val* self, val* p0) { -scope__AWhileExpr__escapemark_61d(self, p0); +/* method scope#AWhileExpr#break_mark= for (self: Object, nullable EscapeMark) */ +void VIRTUAL_scope__AWhileExpr__break_mark_61d(val* self, val* p0) { +{ /* Inline scope#AWhileExpr#break_mark= (self,p0) on */ +self->attrs[COLOR_scope__AWhileExpr___break_mark].val = p0; /* _break_mark on */ +RET_LABEL1:(void)0; +} +RET_LABEL:; +} +/* method scope#AWhileExpr#continue_mark for (self: AWhileExpr): nullable EscapeMark */ +val* scope__AWhileExpr__continue_mark(val* self) { +val* var /* : nullable EscapeMark */; +val* var1 /* : nullable EscapeMark */; +var1 = self->attrs[COLOR_scope__AWhileExpr___continue_mark].val; /* _continue_mark on */ +var = var1; +RET_LABEL:; +return var; +} +/* method scope#AWhileExpr#continue_mark for (self: Object): nullable EscapeMark */ +val* VIRTUAL_scope__AWhileExpr__continue_mark(val* self) { +val* var /* : nullable EscapeMark */; +val* var1 /* : nullable EscapeMark */; +val* var3 /* : nullable EscapeMark */; +{ /* Inline scope#AWhileExpr#continue_mark (self) on */ +var3 = self->attrs[COLOR_scope__AWhileExpr___continue_mark].val; /* _continue_mark on */ +var1 = var3; +RET_LABEL2:(void)0; +} +var = var1; +RET_LABEL:; +return var; +} +/* method scope#AWhileExpr#continue_mark= for (self: AWhileExpr, nullable EscapeMark) */ +void scope__AWhileExpr__continue_mark_61d(val* self, val* p0) { +self->attrs[COLOR_scope__AWhileExpr___continue_mark].val = p0; /* _continue_mark on */ +RET_LABEL:; +} +/* method scope#AWhileExpr#continue_mark= for (self: Object, nullable EscapeMark) */ +void VIRTUAL_scope__AWhileExpr__continue_mark_61d(val* self, val* p0) { +{ /* Inline scope#AWhileExpr#continue_mark= (self,p0) on */ +self->attrs[COLOR_scope__AWhileExpr___continue_mark].val = p0; /* _continue_mark on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method scope#AWhileExpr#accept_scope_visitor for (self: AWhileExpr, ScopeVisitor) */ void scope__AWhileExpr__accept_scope_visitor(val* self, val* p0) { val* var_v /* var v: ScopeVisitor */; val* var /* : nullable ALabel */; -short int var1 /* : Bool */; -val* var2 /* : EscapeMark */; +val* var2 /* : nullable ALabel */; +short int var3 /* : Bool */; +val* var4 /* : EscapeMark */; val* var_escapemark /* var escapemark: EscapeMark */; -val* var3 /* : AExpr */; -val* var4 /* : nullable AExpr */; +val* var6 /* : nullable EscapeMark */; +val* var8 /* : nullable EscapeMark */; +val* var10 /* : AExpr */; +val* var12 /* : AExpr */; +val* var13 /* : nullable AExpr */; +val* var15 /* : nullable AExpr */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ALabelable__n_label]))(self) /* n_label on */; -var1 = 1; -var2 = ((val* (*)(val*, val*, short int))(var_v->class->vft[COLOR_scope__ScopeVisitor__make_escape_mark]))(var_v, var, var1) /* make_escape_mark on */; -var_escapemark = var2; -((void (*)(val*, val*))(self->class->vft[COLOR_scope__AWhileExpr__escapemark_61d]))(self, var_escapemark) /* escapemark= on */; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AWhileExpr__n_expr]))(self) /* n_expr on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var3) /* enter_visit on */; -var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AWhileExpr__n_block]))(self) /* n_block on */; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__enter_visit_block]))(var_v, var4, var_escapemark) /* enter_visit_block on */; +{ +{ /* Inline parser_nodes#ALabelable#n_label (self) on */ +var2 = self->attrs[COLOR_parser_nodes__ALabelable___n_label].val; /* _n_label on */ +var = var2; +RET_LABEL1:(void)0; +} +} +var3 = 1; +{ +var4 = scope__ScopeVisitor__make_escape_mark(var_v, var, var3); +} +var_escapemark = var4; +{ +{ /* Inline scope#AWhileExpr#break_mark= (self,var_escapemark) on */ +self->attrs[COLOR_scope__AWhileExpr___break_mark].val = var_escapemark; /* _break_mark on */ +RET_LABEL5:(void)0; +} +} +{ +{ /* Inline scope#EscapeMark#continue_mark (var_escapemark) on */ +var8 = var_escapemark->attrs[COLOR_scope__EscapeMark___continue_mark].val; /* _continue_mark on */ +var6 = var8; +RET_LABEL7:(void)0; +} +} +{ +{ /* Inline scope#AWhileExpr#continue_mark= (self,var6) on */ +self->attrs[COLOR_scope__AWhileExpr___continue_mark].val = var6; /* _continue_mark on */ +RET_LABEL9:(void)0; +} +} +{ +{ /* Inline parser_nodes#AWhileExpr#n_expr (self) on */ +var12 = self->attrs[COLOR_parser_nodes__AWhileExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var12 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1408); +show_backtrace(1); +} +var10 = var12; +RET_LABEL11:(void)0; +} +} +{ +parser_nodes__Visitor__enter_visit(var_v, var10); /* Direct call parser_nodes#Visitor#enter_visit on */ +} +{ +{ /* Inline parser_nodes#AWhileExpr#n_block (self) on */ +var15 = self->attrs[COLOR_parser_nodes__AWhileExpr___n_block].val; /* _n_block on */ +var13 = var15; +RET_LABEL14:(void)0; +} +} +{ +scope__ScopeVisitor__enter_visit_block(var_v, var13, var_escapemark); /* Direct call scope#ScopeVisitor#enter_visit_block on */ +} RET_LABEL:; } /* method scope#AWhileExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */ void VIRTUAL_scope__AWhileExpr__accept_scope_visitor(val* self, val* p0) { -scope__AWhileExpr__accept_scope_visitor(self, p0); +scope__AWhileExpr__accept_scope_visitor(self, p0); /* Direct call scope#AWhileExpr#accept_scope_visitor on */ +RET_LABEL:; +} +/* method scope#ALoopExpr#break_mark for (self: ALoopExpr): nullable EscapeMark */ +val* scope__ALoopExpr__break_mark(val* self) { +val* var /* : nullable EscapeMark */; +val* var1 /* : nullable EscapeMark */; +var1 = self->attrs[COLOR_scope__ALoopExpr___break_mark].val; /* _break_mark on */ +var = var1; +RET_LABEL:; +return var; +} +/* method scope#ALoopExpr#break_mark for (self: Object): nullable EscapeMark */ +val* VIRTUAL_scope__ALoopExpr__break_mark(val* self) { +val* var /* : nullable EscapeMark */; +val* var1 /* : nullable EscapeMark */; +val* var3 /* : nullable EscapeMark */; +{ /* Inline scope#ALoopExpr#break_mark (self) on */ +var3 = self->attrs[COLOR_scope__ALoopExpr___break_mark].val; /* _break_mark on */ +var1 = var3; +RET_LABEL2:(void)0; +} +var = var1; +RET_LABEL:; +return var; +} +/* method scope#ALoopExpr#break_mark= for (self: ALoopExpr, nullable EscapeMark) */ +void scope__ALoopExpr__break_mark_61d(val* self, val* p0) { +self->attrs[COLOR_scope__ALoopExpr___break_mark].val = p0; /* _break_mark on */ RET_LABEL:; } -/* method scope#ALoopExpr#escapemark for (self: ALoopExpr): nullable EscapeMark */ -val* scope__ALoopExpr__escapemark(val* self) { +/* method scope#ALoopExpr#break_mark= for (self: Object, nullable EscapeMark) */ +void VIRTUAL_scope__ALoopExpr__break_mark_61d(val* self, val* p0) { +{ /* Inline scope#ALoopExpr#break_mark= (self,p0) on */ +self->attrs[COLOR_scope__ALoopExpr___break_mark].val = p0; /* _break_mark on */ +RET_LABEL1:(void)0; +} +RET_LABEL:; +} +/* method scope#ALoopExpr#continue_mark for (self: ALoopExpr): nullable EscapeMark */ +val* scope__ALoopExpr__continue_mark(val* self) { val* var /* : nullable EscapeMark */; val* var1 /* : nullable EscapeMark */; -var1 = self->attrs[COLOR_scope__ALoopExpr___64descapemark].val; /* @escapemark on */ +var1 = self->attrs[COLOR_scope__ALoopExpr___continue_mark].val; /* _continue_mark on */ var = var1; RET_LABEL:; return var; } -/* method scope#ALoopExpr#escapemark for (self: Object): nullable EscapeMark */ -val* VIRTUAL_scope__ALoopExpr__escapemark(val* self) { +/* method scope#ALoopExpr#continue_mark for (self: Object): nullable EscapeMark */ +val* VIRTUAL_scope__ALoopExpr__continue_mark(val* self) { val* var /* : nullable EscapeMark */; val* var1 /* : nullable EscapeMark */; -var1 = scope__ALoopExpr__escapemark(self); +val* var3 /* : nullable EscapeMark */; +{ /* Inline scope#ALoopExpr#continue_mark (self) on */ +var3 = self->attrs[COLOR_scope__ALoopExpr___continue_mark].val; /* _continue_mark on */ +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } -/* method scope#ALoopExpr#escapemark= for (self: ALoopExpr, nullable EscapeMark) */ -void scope__ALoopExpr__escapemark_61d(val* self, val* p0) { -self->attrs[COLOR_scope__ALoopExpr___64descapemark].val = p0; /* @escapemark on */ +/* method scope#ALoopExpr#continue_mark= for (self: ALoopExpr, nullable EscapeMark) */ +void scope__ALoopExpr__continue_mark_61d(val* self, val* p0) { +self->attrs[COLOR_scope__ALoopExpr___continue_mark].val = p0; /* _continue_mark on */ RET_LABEL:; } -/* method scope#ALoopExpr#escapemark= for (self: Object, nullable EscapeMark) */ -void VIRTUAL_scope__ALoopExpr__escapemark_61d(val* self, val* p0) { -scope__ALoopExpr__escapemark_61d(self, p0); +/* method scope#ALoopExpr#continue_mark= for (self: Object, nullable EscapeMark) */ +void VIRTUAL_scope__ALoopExpr__continue_mark_61d(val* self, val* p0) { +{ /* Inline scope#ALoopExpr#continue_mark= (self,p0) on */ +self->attrs[COLOR_scope__ALoopExpr___continue_mark].val = p0; /* _continue_mark on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method scope#ALoopExpr#accept_scope_visitor for (self: ALoopExpr, ScopeVisitor) */ void scope__ALoopExpr__accept_scope_visitor(val* self, val* p0) { val* var_v /* var v: ScopeVisitor */; val* var /* : nullable ALabel */; -short int var1 /* : Bool */; -val* var2 /* : EscapeMark */; +val* var2 /* : nullable ALabel */; +short int var3 /* : Bool */; +val* var4 /* : EscapeMark */; val* var_escapemark /* var escapemark: EscapeMark */; -val* var3 /* : nullable AExpr */; +val* var6 /* : nullable EscapeMark */; +val* var8 /* : nullable EscapeMark */; +val* var10 /* : nullable AExpr */; +val* var12 /* : nullable AExpr */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ALabelable__n_label]))(self) /* n_label on */; -var1 = 1; -var2 = ((val* (*)(val*, val*, short int))(var_v->class->vft[COLOR_scope__ScopeVisitor__make_escape_mark]))(var_v, var, var1) /* make_escape_mark on */; -var_escapemark = var2; -((void (*)(val*, val*))(self->class->vft[COLOR_scope__ALoopExpr__escapemark_61d]))(self, var_escapemark) /* escapemark= on */; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ALoopExpr__n_block]))(self) /* n_block on */; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__enter_visit_block]))(var_v, var3, var_escapemark) /* enter_visit_block on */; +{ +{ /* Inline parser_nodes#ALabelable#n_label (self) on */ +var2 = self->attrs[COLOR_parser_nodes__ALabelable___n_label].val; /* _n_label on */ +var = var2; +RET_LABEL1:(void)0; +} +} +var3 = 1; +{ +var4 = scope__ScopeVisitor__make_escape_mark(var_v, var, var3); +} +var_escapemark = var4; +{ +{ /* Inline scope#ALoopExpr#break_mark= (self,var_escapemark) on */ +self->attrs[COLOR_scope__ALoopExpr___break_mark].val = var_escapemark; /* _break_mark on */ +RET_LABEL5:(void)0; +} +} +{ +{ /* Inline scope#EscapeMark#continue_mark (var_escapemark) on */ +var8 = var_escapemark->attrs[COLOR_scope__EscapeMark___continue_mark].val; /* _continue_mark on */ +var6 = var8; +RET_LABEL7:(void)0; +} +} +{ +{ /* Inline scope#ALoopExpr#continue_mark= (self,var6) on */ +self->attrs[COLOR_scope__ALoopExpr___continue_mark].val = var6; /* _continue_mark on */ +RET_LABEL9:(void)0; +} +} +{ +{ /* Inline parser_nodes#ALoopExpr#n_block (self) on */ +var12 = self->attrs[COLOR_parser_nodes__ALoopExpr___n_block].val; /* _n_block on */ +var10 = var12; +RET_LABEL11:(void)0; +} +} +{ +scope__ScopeVisitor__enter_visit_block(var_v, var10, var_escapemark); /* Direct call scope#ScopeVisitor#enter_visit_block on */ +} RET_LABEL:; } /* method scope#ALoopExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */ void VIRTUAL_scope__ALoopExpr__accept_scope_visitor(val* self, val* p0) { -scope__ALoopExpr__accept_scope_visitor(self, p0); +scope__ALoopExpr__accept_scope_visitor(self, p0); /* Direct call scope#ALoopExpr#accept_scope_visitor on */ RET_LABEL:; } /* method scope#AForExpr#variables for (self: AForExpr): nullable Array[Variable] */ val* scope__AForExpr__variables(val* self) { val* var /* : nullable Array[Variable] */; val* var1 /* : nullable Array[Variable] */; -var1 = self->attrs[COLOR_scope__AForExpr___64dvariables].val; /* @variables on */ +var1 = self->attrs[COLOR_scope__AForExpr___variables].val; /* _variables on */ var = var1; RET_LABEL:; return var; @@ -1586,127 +3063,290 @@ return var; val* VIRTUAL_scope__AForExpr__variables(val* self) { val* var /* : nullable Array[Variable] */; val* var1 /* : nullable Array[Variable] */; -var1 = scope__AForExpr__variables(self); +val* var3 /* : nullable Array[Variable] */; +{ /* Inline scope#AForExpr#variables (self) on */ +var3 = self->attrs[COLOR_scope__AForExpr___variables].val; /* _variables on */ +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method scope#AForExpr#variables= for (self: AForExpr, nullable Array[Variable]) */ void scope__AForExpr__variables_61d(val* self, val* p0) { -self->attrs[COLOR_scope__AForExpr___64dvariables].val = p0; /* @variables on */ +self->attrs[COLOR_scope__AForExpr___variables].val = p0; /* _variables on */ RET_LABEL:; } /* method scope#AForExpr#variables= for (self: Object, nullable Array[Variable]) */ void VIRTUAL_scope__AForExpr__variables_61d(val* self, val* p0) { -scope__AForExpr__variables_61d(self, p0); +{ /* Inline scope#AForExpr#variables= (self,p0) on */ +self->attrs[COLOR_scope__AForExpr___variables].val = p0; /* _variables on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } -/* method scope#AForExpr#escapemark for (self: AForExpr): nullable EscapeMark */ -val* scope__AForExpr__escapemark(val* self) { +/* method scope#AForExpr#break_mark for (self: AForExpr): nullable EscapeMark */ +val* scope__AForExpr__break_mark(val* self) { val* var /* : nullable EscapeMark */; val* var1 /* : nullable EscapeMark */; -var1 = self->attrs[COLOR_scope__AForExpr___64descapemark].val; /* @escapemark on */ +var1 = self->attrs[COLOR_scope__AForExpr___break_mark].val; /* _break_mark on */ var = var1; RET_LABEL:; return var; } -/* method scope#AForExpr#escapemark for (self: Object): nullable EscapeMark */ -val* VIRTUAL_scope__AForExpr__escapemark(val* self) { +/* method scope#AForExpr#break_mark for (self: Object): nullable EscapeMark */ +val* VIRTUAL_scope__AForExpr__break_mark(val* self) { val* var /* : nullable EscapeMark */; val* var1 /* : nullable EscapeMark */; -var1 = scope__AForExpr__escapemark(self); +val* var3 /* : nullable EscapeMark */; +{ /* Inline scope#AForExpr#break_mark (self) on */ +var3 = self->attrs[COLOR_scope__AForExpr___break_mark].val; /* _break_mark on */ +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } -/* method scope#AForExpr#escapemark= for (self: AForExpr, nullable EscapeMark) */ -void scope__AForExpr__escapemark_61d(val* self, val* p0) { -self->attrs[COLOR_scope__AForExpr___64descapemark].val = p0; /* @escapemark on */ +/* method scope#AForExpr#break_mark= for (self: AForExpr, nullable EscapeMark) */ +void scope__AForExpr__break_mark_61d(val* self, val* p0) { +self->attrs[COLOR_scope__AForExpr___break_mark].val = p0; /* _break_mark on */ RET_LABEL:; } -/* method scope#AForExpr#escapemark= for (self: Object, nullable EscapeMark) */ -void VIRTUAL_scope__AForExpr__escapemark_61d(val* self, val* p0) { -scope__AForExpr__escapemark_61d(self, p0); +/* method scope#AForExpr#break_mark= for (self: Object, nullable EscapeMark) */ +void VIRTUAL_scope__AForExpr__break_mark_61d(val* self, val* p0) { +{ /* Inline scope#AForExpr#break_mark= (self,p0) on */ +self->attrs[COLOR_scope__AForExpr___break_mark].val = p0; /* _break_mark on */ +RET_LABEL1:(void)0; +} +RET_LABEL:; +} +/* method scope#AForExpr#continue_mark for (self: AForExpr): nullable EscapeMark */ +val* scope__AForExpr__continue_mark(val* self) { +val* var /* : nullable EscapeMark */; +val* var1 /* : nullable EscapeMark */; +var1 = self->attrs[COLOR_scope__AForExpr___continue_mark].val; /* _continue_mark on */ +var = var1; +RET_LABEL:; +return var; +} +/* method scope#AForExpr#continue_mark for (self: Object): nullable EscapeMark */ +val* VIRTUAL_scope__AForExpr__continue_mark(val* self) { +val* var /* : nullable EscapeMark */; +val* var1 /* : nullable EscapeMark */; +val* var3 /* : nullable EscapeMark */; +{ /* Inline scope#AForExpr#continue_mark (self) on */ +var3 = self->attrs[COLOR_scope__AForExpr___continue_mark].val; /* _continue_mark on */ +var1 = var3; +RET_LABEL2:(void)0; +} +var = var1; +RET_LABEL:; +return var; +} +/* method scope#AForExpr#continue_mark= for (self: AForExpr, nullable EscapeMark) */ +void scope__AForExpr__continue_mark_61d(val* self, val* p0) { +self->attrs[COLOR_scope__AForExpr___continue_mark].val = p0; /* _continue_mark on */ +RET_LABEL:; +} +/* method scope#AForExpr#continue_mark= for (self: Object, nullable EscapeMark) */ +void VIRTUAL_scope__AForExpr__continue_mark_61d(val* self, val* p0) { +{ /* Inline scope#AForExpr#continue_mark= (self,p0) on */ +self->attrs[COLOR_scope__AForExpr___continue_mark].val = p0; /* _continue_mark on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method scope#AForExpr#accept_scope_visitor for (self: AForExpr, ScopeVisitor) */ void scope__AForExpr__accept_scope_visitor(val* self, val* p0) { val* var_v /* var v: ScopeVisitor */; val* var /* : AExpr */; -val* var1 /* : List[Scope] */; -val* var2 /* : Scope */; -val* var3 /* : Array[Variable] */; +val* var2 /* : AExpr */; +val* var3 /* : List[Scope] */; +val* var5 /* : List[Scope] */; +val* var6 /* : Scope */; +val* var7 /* : Array[Variable] */; val* var_variables /* var variables: Array[Variable] */; -val* var4 /* : ANodes[TId] */; -val* var5 /* : Iterator[nullable Object] */; -short int var6 /* : Bool */; -val* var7 /* : nullable Object */; +val* var9 /* : ANodes[TId] */; +val* var11 /* : ANodes[TId] */; +val* var_ /* var : ANodes[TId] */; +val* var12 /* : Iterator[ANode] */; +val* var_13 /* var : Iterator[TId] */; +short int var14 /* : Bool */; +val* var15 /* : nullable Object */; val* var_nid /* var nid: TId */; -val* var8 /* : Variable */; -val* var9 /* : String */; +val* var16 /* : Variable */; +val* var17 /* : String */; val* var_va /* var va: Variable */; -short int var10 /* : Bool */; -val* var11 /* : nullable ALabel */; -short int var12 /* : Bool */; -val* var13 /* : EscapeMark */; +short int var18 /* : Bool */; +val* var20 /* : nullable ALabel */; +val* var22 /* : nullable ALabel */; +short int var23 /* : Bool */; +val* var24 /* : EscapeMark */; val* var_escapemark /* var escapemark: EscapeMark */; -val* var14 /* : nullable AExpr */; -val* var15 /* : List[Scope] */; -val* var16 /* : nullable Object */; +val* var26 /* : nullable EscapeMark */; +val* var28 /* : nullable EscapeMark */; +val* var30 /* : nullable AExpr */; +val* var32 /* : nullable AExpr */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AForExpr__n_expr]))(self) /* n_expr on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on */; -var1 = ((val* (*)(val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__scopes]))(var_v) /* scopes on */; -var2 = NEW_scope__Scope(&type_scope__Scope); -((void (*)(val*))(var2->class->vft[COLOR_scope__Scope__init]))(var2) /* init on */; -CHECK_NEW_scope__Scope(var2); -((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__Sequence__unshift]))(var1, var2) /* unshift on */; -var3 = NEW_array__Array(&type_array__Arrayscope__Variable); -((void (*)(val*))(var3->class->vft[COLOR_array__Array__init]))(var3) /* init on */; -CHECK_NEW_array__Array(var3); -var_variables = var3; -((void (*)(val*, val*))(self->class->vft[COLOR_scope__AForExpr__variables_61d]))(self, var_variables) /* variables= on */; -var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AForExpr__n_ids]))(self) /* n_ids on */; -var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Collection__iterator]))(var4) /* iterator on */; +{ +{ /* Inline parser_nodes#AForExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_parser_nodes__AForExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1427); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +parser_nodes__Visitor__enter_visit(var_v, var); /* Direct call parser_nodes#Visitor#enter_visit on */ +} +{ +{ /* Inline scope#ScopeVisitor#scopes (var_v) on */ +var5 = var_v->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 80); +show_backtrace(1); +} +var3 = var5; +RET_LABEL4:(void)0; +} +} +var6 = NEW_scope__Scope(&type_scope__Scope); +{ +((void (*)(val*))(var6->class->vft[COLOR_kernel__Object__init]))(var6) /* init on */; +} +{ +list__List__unshift(var3, var6); /* Direct call list#List#unshift on */ +} +var7 = NEW_array__Array(&type_array__Arrayscope__Variable); +{ +((void (*)(val*))(var7->class->vft[COLOR_kernel__Object__init]))(var7) /* init on */; +} +var_variables = var7; +{ +{ /* Inline scope#AForExpr#variables= (self,var_variables) on */ +self->attrs[COLOR_scope__AForExpr___variables].val = var_variables; /* _variables on */ +RET_LABEL8:(void)0; +} +} +{ +{ /* Inline parser_nodes#AForExpr#n_ids (self) on */ +var11 = self->attrs[COLOR_parser_nodes__AForExpr___n_ids].val; /* _n_ids on */ +if (unlikely(var11 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_ids"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1426); +show_backtrace(1); +} +var9 = var11; +RET_LABEL10:(void)0; +} +} +var_ = var9; +{ +var12 = parser_nodes__ANodes__iterator(var_); +} +var_13 = var12; for(;;) { -var6 = ((short int (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var5) /* is_ok on */; -if(!var6) break; -var7 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__item]))(var5) /* item on */; -var_nid = var7; -var8 = NEW_scope__Variable(&type_scope__Variable); -var9 = ((val* (*)(val*))(var_nid->class->vft[COLOR_parser_nodes__Token__text]))(var_nid) /* text on */; -((void (*)(val*, val*))(var8->class->vft[COLOR_scope__Variable__init]))(var8, var9) /* init on */; -CHECK_NEW_scope__Variable(var8); -var_va = var8; -var10 = ((short int (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__register_variable]))(var_v, var_nid, var_va) /* register_variable on */; -var10; -((void (*)(val*, val*))(var_variables->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_variables, var_va) /* add on */; -CONTINUE_label: (void)0; -((void (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__next]))(var5) /* next on */; +{ +var14 = ((short int (*)(val*))(var_13->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_13) /* is_ok on */; +} +if (var14){ +{ +var15 = ((val* (*)(val*))(var_13->class->vft[COLOR_abstract_collection__Iterator__item]))(var_13) /* item on */; +} +var_nid = var15; +var16 = NEW_scope__Variable(&type_scope__Variable); +{ +var17 = lexer_work__Token__text(var_nid); +} +{ +((void (*)(val*, val*))(var16->class->vft[COLOR_scope__Variable__name_61d]))(var16, var17) /* name= on */; +} +{ +((void (*)(val*))(var16->class->vft[COLOR_kernel__Object__init]))(var16) /* init on */; +} +var_va = var16; +{ +var18 = scope__ScopeVisitor__register_variable(var_v, var_nid, var_va); +} +{ +array__Array__add(var_variables, var_va); /* Direct call array#Array#add on */ +} +{ +((void (*)(val*))(var_13->class->vft[COLOR_abstract_collection__Iterator__next]))(var_13) /* next on */; +} +} else { +goto BREAK_label; +} } BREAK_label: (void)0; -var11 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ALabelable__n_label]))(self) /* n_label on */; -var12 = 1; -var13 = ((val* (*)(val*, val*, short int))(var_v->class->vft[COLOR_scope__ScopeVisitor__make_escape_mark]))(var_v, var11, var12) /* make_escape_mark on */; -var_escapemark = var13; -((void (*)(val*, val*))(self->class->vft[COLOR_scope__AForExpr__escapemark_61d]))(self, var_escapemark) /* escapemark= on */; -var14 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AForExpr__n_block]))(self) /* n_block on */; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__enter_visit_block]))(var_v, var14, var_escapemark) /* enter_visit_block on */; -var15 = ((val* (*)(val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__scopes]))(var_v) /* scopes on */; -var16 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_collection__Sequence__shift]))(var15) /* shift on */; -var16; +{ +{ /* Inline abstract_collection#Iterator#finish (var_13) on */ +RET_LABEL19:(void)0; +} +} +{ +{ /* Inline parser_nodes#ALabelable#n_label (self) on */ +var22 = self->attrs[COLOR_parser_nodes__ALabelable___n_label].val; /* _n_label on */ +var20 = var22; +RET_LABEL21:(void)0; +} +} +var23 = 1; +{ +var24 = scope__ScopeVisitor__make_escape_mark(var_v, var20, var23); +} +var_escapemark = var24; +{ +{ /* Inline scope#AForExpr#break_mark= (self,var_escapemark) on */ +self->attrs[COLOR_scope__AForExpr___break_mark].val = var_escapemark; /* _break_mark on */ +RET_LABEL25:(void)0; +} +} +{ +{ /* Inline scope#EscapeMark#continue_mark (var_escapemark) on */ +var28 = var_escapemark->attrs[COLOR_scope__EscapeMark___continue_mark].val; /* _continue_mark on */ +var26 = var28; +RET_LABEL27:(void)0; +} +} +{ +{ /* Inline scope#AForExpr#continue_mark= (self,var26) on */ +self->attrs[COLOR_scope__AForExpr___continue_mark].val = var26; /* _continue_mark on */ +RET_LABEL29:(void)0; +} +} +{ +{ /* Inline parser_nodes#AForExpr#n_block (self) on */ +var32 = self->attrs[COLOR_parser_nodes__AForExpr___n_block].val; /* _n_block on */ +var30 = var32; +RET_LABEL31:(void)0; +} +} +{ +scope__ScopeVisitor__enter_visit_block(var_v, var30, var_escapemark); /* Direct call scope#ScopeVisitor#enter_visit_block on */ +} +{ +scope__ScopeVisitor__shift_scope(var_v); /* Direct call scope#ScopeVisitor#shift_scope on */ +} RET_LABEL:; } /* method scope#AForExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */ void VIRTUAL_scope__AForExpr__accept_scope_visitor(val* self, val* p0) { -scope__AForExpr__accept_scope_visitor(self, p0); +scope__AForExpr__accept_scope_visitor(self, p0); /* Direct call scope#AForExpr#accept_scope_visitor on */ RET_LABEL:; } /* method scope#AVarFormExpr#variable for (self: AVarFormExpr): nullable Variable */ val* scope__AVarFormExpr__variable(val* self) { val* var /* : nullable Variable */; val* var1 /* : nullable Variable */; -var1 = self->attrs[COLOR_scope__AVarFormExpr___64dvariable].val; /* @variable on */ +var1 = self->attrs[COLOR_scope__AVarFormExpr___variable].val; /* _variable on */ var = var1; RET_LABEL:; return var; @@ -1715,208 +3355,299 @@ return var; val* VIRTUAL_scope__AVarFormExpr__variable(val* self) { val* var /* : nullable Variable */; val* var1 /* : nullable Variable */; -var1 = scope__AVarFormExpr__variable(self); +val* var3 /* : nullable Variable */; +{ /* Inline scope#AVarFormExpr#variable (self) on */ +var3 = self->attrs[COLOR_scope__AVarFormExpr___variable].val; /* _variable on */ +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method scope#AVarFormExpr#variable= for (self: AVarFormExpr, nullable Variable) */ void scope__AVarFormExpr__variable_61d(val* self, val* p0) { -self->attrs[COLOR_scope__AVarFormExpr___64dvariable].val = p0; /* @variable on */ +self->attrs[COLOR_scope__AVarFormExpr___variable].val = p0; /* _variable on */ RET_LABEL:; } /* method scope#AVarFormExpr#variable= for (self: Object, nullable Variable) */ void VIRTUAL_scope__AVarFormExpr__variable_61d(val* self, val* p0) { -scope__AVarFormExpr__variable_61d(self, p0); +{ /* Inline scope#AVarFormExpr#variable= (self,p0) on */ +self->attrs[COLOR_scope__AVarFormExpr___variable].val = p0; /* _variable on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method scope#ACallFormExpr#accept_scope_visitor for (self: ACallFormExpr, ScopeVisitor) */ void scope__ACallFormExpr__accept_scope_visitor(val* self, val* p0) { val* var_v /* var v: ScopeVisitor */; val* var /* : AExpr */; -short int var1 /* : Bool */; +val* var2 /* : AExpr */; +short int var3 /* : Bool */; int cltype; int idtype; -val* var2 /* : TId */; -val* var3 /* : String */; +val* var4 /* : TId */; +val* var6 /* : TId */; +val* var7 /* : String */; val* var_name /* var name: String */; -val* var4 /* : nullable Variable */; +val* var8 /* : nullable Variable */; val* var_variable /* var variable: nullable Variable */; -val* var5 /* : null */; -short int var6 /* : Bool */; -short int var7 /* : Bool */; -int cltype8; -int idtype9; -val* var10 /* : AClosureCallExpr */; -val* var11 /* : TId */; -val* var12 /* : AExprs */; -val* var13 /* : ANodes[AClosureDef] */; -val* var_n /* var n: AExpr */; +val* var9 /* : null */; +short int var10 /* : Bool */; +short int var11 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var13 /* : Bool */; short int var14 /* : Bool */; -val* var15 /* : AExprs */; -val* var16 /* : ANodes[AExpr] */; -short int var17 /* : Bool */; -short int var18 /* : Bool */; +short int var15 /* : Bool */; +short int var16 /* : Bool */; +val* var17 /* : AExprs */; val* var19 /* : AExprs */; -short int var20 /* : Bool */; -int cltype21; -int idtype22; +val* var20 /* : ANodes[AExpr] */; +val* var22 /* : ANodes[AExpr] */; +short int var23 /* : Bool */; +short int var24 /* : Bool */; +short int var_ /* var : Bool */; +val* var25 /* : AExprs */; +val* var27 /* : AExprs */; +short int var28 /* : Bool */; +int cltype29; +int idtype30; static val* varonce; -val* var23 /* : String */; -char* var24 /* : NativeString */; -long var25 /* : Int */; -val* var26 /* : String */; -static val* varonce27; -val* var28 /* : String */; -char* var29 /* : NativeString */; -long var30 /* : Int */; val* var31 /* : String */; -val* var32 /* : Array[Object] */; +char* var32 /* : NativeString */; long var33 /* : Int */; -val* var34 /* : NativeArray[Object] */; -val* var35 /* : String */; -val* var36 /* : AVarFormExpr */; +val* var34 /* : FlatString */; +static val* varonce35; +val* var36 /* : String */; +char* var37 /* : NativeString */; +long var38 /* : Int */; +val* var39 /* : FlatString */; +val* var40 /* : Array[Object] */; +long var41 /* : Int */; +val* var42 /* : NativeArray[Object] */; +val* var43 /* : String */; +val* var44 /* : AVarFormExpr */; +val* var_n /* var n: AExpr */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on */; +{ +{ /* Inline parser_nodes#ASendExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_parser_nodes__ASendExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1466); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} /* isa AImplicitSelfExpr */ cltype = type_parser_nodes__AImplicitSelfExpr.color; idtype = type_parser_nodes__AImplicitSelfExpr.id; if(cltype >= var->type->table_size) { -var1 = 0; +var3 = 0; } else { -var1 = var->type->type_table[cltype] == idtype; +var3 = var->type->type_table[cltype] == idtype; } -if (var1){ -var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_id]))(self) /* n_id on */; -var3 = ((val* (*)(val*))(var2->class->vft[COLOR_parser_nodes__Token__text]))(var2) /* text on */; -var_name = var3; -var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__search_variable]))(var_v, var_name) /* search_variable on */; -var_variable = var4; -var5 = NULL; +if (var3){ +{ +{ /* Inline parser_nodes#ACallFormExpr#n_id (self) on */ +var6 = self->attrs[COLOR_parser_nodes__ACallFormExpr___n_id].val; /* _n_id on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1644); +show_backtrace(1); +} +var4 = var6; +RET_LABEL5:(void)0; +} +} +{ +var7 = lexer_work__Token__text(var4); +} +var_name = var7; +{ +var8 = scope__ScopeVisitor__search_variable(var_v, var_name); +} +var_variable = var8; +var9 = NULL; if (var_variable == NULL) { -var6 = 0; /* is null */ +var10 = 0; /* is null */ } else { -var6 = 1; /* arg is null and recv is not */ +var10 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_variable,var9) on */ +var_other = var9; +{ +var14 = ((short int (*)(val*, val*))(var_variable->class->vft[COLOR_kernel__Object___61d_61d]))(var_variable, var_other) /* == on */; +var13 = var14; +} +var15 = !var13; +var11 = var15; +goto RET_LABEL12; +RET_LABEL12:(void)0; +} +var10 = var11; +} +if (var10){ +{ +{ /* Inline parser_nodes#ACallFormExpr#n_args (self) on */ +var19 = self->attrs[COLOR_parser_nodes__ACallFormExpr___n_args].val; /* _n_args on */ +if (unlikely(var19 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1647); +show_backtrace(1); +} +var17 = var19; +RET_LABEL18:(void)0; +} +} +{ +{ /* Inline parser_nodes#AExprs#n_exprs (var17) on */ +var22 = var17->attrs[COLOR_parser_nodes__AExprs___n_exprs].val; /* _n_exprs on */ +if (unlikely(var22 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1946); +show_backtrace(1); +} +var20 = var22; +RET_LABEL21:(void)0; +} +} +{ +var23 = parser_nodes__ANodes__is_empty(var20); +} +var24 = !var23; +var_ = var24; +if (var24){ +var16 = var_; +} else { +{ +{ /* Inline parser_nodes#ACallFormExpr#n_args (self) on */ +var27 = self->attrs[COLOR_parser_nodes__ACallFormExpr___n_args].val; /* _n_args on */ +if (unlikely(var27 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1647); +show_backtrace(1); +} +var25 = var27; +RET_LABEL26:(void)0; +} +} +/* isa AParExprs */ +cltype29 = type_parser_nodes__AParExprs.color; +idtype30 = type_parser_nodes__AParExprs.id; +if(cltype29 >= var25->type->table_size) { +var28 = 0; +} else { +var28 = var25->type->type_table[cltype29] == idtype30; } -if (var6){ -/* isa ClosureVariable */ -cltype8 = type_scope__ClosureVariable.color; -idtype9 = type_scope__ClosureVariable.id; -if(cltype8 >= var_variable->type->table_size) { -var7 = 0; -} else { -var7 = var_variable->type->type_table[cltype8] == idtype9; -} -if (var7){ -var10 = NEW_parser_nodes__AClosureCallExpr(&type_parser_nodes__AClosureCallExpr); -var11 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_id]))(self) /* n_id on */; -var12 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_args]))(self) /* n_args on */; -var13 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_closure_defs]))(self) /* n_closure_defs on */; -((void (*)(val*, val*, val*, val*))(var10->class->vft[COLOR_parser_prod__AClosureCallExpr__init_aclosurecallexpr]))(var10, var11, var12, var13) /* init_aclosurecallexpr on */; -CHECK_NEW_parser_nodes__AClosureCallExpr(var10); -var_n = var10; -((void (*)(val*, val*))(var_n->class->vft[COLOR_scope__AClosureCallExpr__variable_61d]))(var_n, var_variable) /* variable= on */; -} else { -var15 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_args]))(self) /* n_args on */; -var16 = ((val* (*)(val*))(var15->class->vft[COLOR_parser_nodes__AExprs__n_exprs]))(var15) /* n_exprs on */; -var17 = ((short int (*)(val*))(var16->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var16) /* is_empty on */; -var18 = !var17; -if (var18) { -var14 = 1; -} else { -var19 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_args]))(self) /* n_args on */; -/* isa AParExprs */ -cltype21 = type_parser_nodes__AParExprs.color; -idtype22 = type_parser_nodes__AParExprs.id; -if(cltype21 >= var19->type->table_size) { -var20 = 0; -} else { -var20 = var19->type->type_table[cltype21] == idtype22; -} -var14 = var20; +var16 = var28; } -if (var14){ +if (var16){ if (varonce) { -var23 = varonce; +var31 = varonce; } else { -var24 = "Error: "; -var25 = 7; -var26 = string__NativeString__to_s_with_length(var24, var25); -var23 = var26; -varonce = var23; +var32 = "Error: "; +var33 = 7; +var34 = string__NativeString__to_s_with_length(var32, var33); +var31 = var34; +varonce = var31; } -if (varonce27) { -var28 = varonce27; +if (varonce35) { +var36 = varonce35; } else { -var29 = " is variable, not a function."; -var30 = 29; -var31 = string__NativeString__to_s_with_length(var29, var30); -var28 = var31; -varonce27 = var28; -} -var32 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var32 = array_instance Array[Object] */ -var33 = 3; -var34 = NEW_array__NativeArray(var33, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var34)->values[0] = (val*) var23; -((struct instance_array__NativeArray*)var34)->values[1] = (val*) var_name; -((struct instance_array__NativeArray*)var34)->values[2] = (val*) var28; -((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on */; -CHECK_NEW_array__Array(var32); -} -var35 = ((val* (*)(val*))(var32->class->vft[COLOR_string__Object__to_s]))(var32) /* to_s on */; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__error]))(var_v, self, var35) /* error on */; +var37 = " is variable, not a function."; +var38 = 29; +var39 = string__NativeString__to_s_with_length(var37, var38); +var36 = var39; +varonce35 = var36; +} +var40 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var40 = array_instance Array[Object] */ +var41 = 3; +var42 = NEW_array__NativeArray(var41, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var42)->values[0] = (val*) var31; +((struct instance_array__NativeArray*)var42)->values[1] = (val*) var_name; +((struct instance_array__NativeArray*)var42)->values[2] = (val*) var36; +{ +((void (*)(val*, val*, long))(var40->class->vft[COLOR_array__Array__with_native]))(var40, var42, var41) /* with_native on */; +} +} +{ +var43 = ((val* (*)(val*))(var40->class->vft[COLOR_string__Object__to_s]))(var40) /* to_s on */; +} +{ +scope__ScopeVisitor__error(var_v, self, var43); /* Direct call scope#ScopeVisitor#error on */ +} goto RET_LABEL; } else { } -var36 = ((val* (*)(val*, val*))(self->class->vft[COLOR_scope__ACallFormExpr__variable_create]))(self, var_variable) /* variable_create on */; -var_n = var36; -((void (*)(val*, val*))(var_n->class->vft[COLOR_scope__AVarFormExpr__variable_61d]))(var_n, var_variable) /* variable= on */; +{ +var44 = ((val* (*)(val*, val*))(self->class->vft[COLOR_scope__ACallFormExpr__variable_create]))(self, var_variable) /* variable_create on */; +} +var_n = var44; +{ +{ /* Inline scope#AVarFormExpr#variable= (var_n,var_variable) on */ +var_n->attrs[COLOR_scope__AVarFormExpr___variable].val = var_variable; /* _variable on */ +RET_LABEL45:(void)0; +} +} +{ +parser_nodes__Prod__replace_with(self, var_n); /* Direct call parser_nodes#Prod#replace_with on */ +} +{ +scope__ANode__accept_scope_visitor(var_n, var_v); /* Direct call scope#ANode#accept_scope_visitor on */ } -((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__replace_with]))(self, var_n) /* replace_with on */; -((void (*)(val*, val*))(var_n->class->vft[COLOR_scope__ANode__accept_scope_visitor]))(var_n, var_v) /* accept_scope_visitor on */; goto RET_LABEL; } else { } } else { } +{ ((void (*)(val*, val*))(self->class->vft[COLOR_scope__ACallFormExpr__accept_scope_visitor]))(self, p0) /* accept_scope_visitor on */; +} RET_LABEL:; } /* method scope#ACallFormExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */ void VIRTUAL_scope__ACallFormExpr__accept_scope_visitor(val* self, val* p0) { -scope__ACallFormExpr__accept_scope_visitor(self, p0); -RET_LABEL:; -} -/* method scope#ACallFormExpr#variable_create for (self: ACallFormExpr, Variable): AVarFormExpr */ -val* scope__ACallFormExpr__variable_create(val* self, val* p0) { -val* var /* : AVarFormExpr */; -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/scope.nit", 412); -exit(1); -RET_LABEL:; -return var; -} -/* method scope#ACallFormExpr#variable_create for (self: Object, Variable): AVarFormExpr */ -val* VIRTUAL_scope__ACallFormExpr__variable_create(val* self, val* p0) { -val* var /* : AVarFormExpr */; -val* var1 /* : AVarFormExpr */; -var1 = scope__ACallFormExpr__variable_create(self, p0); -var = var1; +scope__ACallFormExpr__accept_scope_visitor(self, p0); /* Direct call scope#ACallFormExpr#accept_scope_visitor on */ RET_LABEL:; -return var; } /* method scope#ACallExpr#variable_create for (self: ACallExpr, Variable): AVarFormExpr */ val* scope__ACallExpr__variable_create(val* self, val* p0) { val* var /* : AVarFormExpr */; val* var_variable /* var variable: Variable */; -val* var1 /* : AVarExpr */; -val* var2 /* : TId */; +short int var1 /* : Bool */; +val* var3 /* : AVarExpr */; +val* var4 /* : TId */; +val* var6 /* : TId */; var_variable = p0; -var1 = NEW_parser_nodes__AVarExpr(&type_parser_nodes__AVarExpr); -var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_id]))(self) /* n_id on */; -((void (*)(val*, val*))(var1->class->vft[COLOR_parser_prod__AVarExpr__init_avarexpr]))(var1, var2) /* init_avarexpr on */; -CHECK_NEW_parser_nodes__AVarExpr(var1); -var = var1; +var1 = 0; +{ +{ /* Inline scope#Variable#warn_unread= (var_variable,var1) on */ +var_variable->attrs[COLOR_scope__Variable___warn_unread].s = var1; /* _warn_unread on */ +RET_LABEL2:(void)0; +} +} +var3 = NEW_parser_nodes__AVarExpr(&type_parser_nodes__AVarExpr); +{ +{ /* Inline parser_nodes#ACallFormExpr#n_id (self) on */ +var6 = self->attrs[COLOR_parser_nodes__ACallFormExpr___n_id].val; /* _n_id on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1644); +show_backtrace(1); +} +var4 = var6; +RET_LABEL5:(void)0; +} +} +{ +parser_prod__AVarExpr__init_avarexpr(var3, var4); /* Direct call parser_prod#AVarExpr#init_avarexpr on */ +} +var = var3; goto RET_LABEL; RET_LABEL:; return var; @@ -1936,15 +3667,52 @@ val* var /* : AVarFormExpr */; val* var_variable /* var variable: Variable */; val* var1 /* : AVarAssignExpr */; val* var2 /* : TId */; -val* var3 /* : TAssign */; -val* var4 /* : AExpr */; +val* var4 /* : TId */; +val* var5 /* : TAssign */; +val* var7 /* : TAssign */; +val* var8 /* : AExpr */; +val* var10 /* : AExpr */; var_variable = p0; var1 = NEW_parser_nodes__AVarAssignExpr(&type_parser_nodes__AVarAssignExpr); -var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_id]))(self) /* n_id on */; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssignFormExpr__n_assign]))(self) /* n_assign on */; -var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssignFormExpr__n_value]))(self) /* n_value on */; -((void (*)(val*, val*, val*, val*))(var1->class->vft[COLOR_parser_prod__AVarAssignExpr__init_avarassignexpr]))(var1, var2, var3, var4) /* init_avarassignexpr on */; -CHECK_NEW_parser_nodes__AVarAssignExpr(var1); +{ +{ /* Inline parser_nodes#ACallFormExpr#n_id (self) on */ +var4 = self->attrs[COLOR_parser_nodes__ACallFormExpr___n_id].val; /* _n_id on */ +if (unlikely(var4 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1644); +show_backtrace(1); +} +var2 = var4; +RET_LABEL3:(void)0; +} +} +{ +{ /* Inline parser_nodes#AAssignFormExpr#n_assign (self) on */ +var7 = self->attrs[COLOR_parser_nodes__AAssignFormExpr___n_assign].val; /* _n_assign on */ +if (unlikely(var7 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_assign"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1444); +show_backtrace(1); +} +var5 = var7; +RET_LABEL6:(void)0; +} +} +{ +{ /* Inline parser_nodes#AAssignFormExpr#n_value (self) on */ +var10 = self->attrs[COLOR_parser_nodes__AAssignFormExpr___n_value].val; /* _n_value on */ +if (unlikely(var10 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_value"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1445); +show_backtrace(1); +} +var8 = var10; +RET_LABEL9:(void)0; +} +} +{ +parser_prod__AVarAssignExpr__init_avarassignexpr(var1, var2, var5, var8); /* Direct call parser_prod#AVarAssignExpr#init_avarassignexpr on */ +} var = var1; goto RET_LABEL; RET_LABEL:; @@ -1963,279 +3731,73 @@ return var; val* scope__ACallReassignExpr__variable_create(val* self, val* p0) { val* var /* : AVarFormExpr */; val* var_variable /* var variable: Variable */; -val* var1 /* : AVarReassignExpr */; -val* var2 /* : TId */; -val* var3 /* : AAssignOp */; -val* var4 /* : AExpr */; +short int var1 /* : Bool */; +val* var3 /* : AVarReassignExpr */; +val* var4 /* : TId */; +val* var6 /* : TId */; +val* var7 /* : AAssignOp */; +val* var9 /* : AAssignOp */; +val* var10 /* : AExpr */; +val* var12 /* : AExpr */; var_variable = p0; -var1 = NEW_parser_nodes__AVarReassignExpr(&type_parser_nodes__AVarReassignExpr); -var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_id]))(self) /* n_id on */; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_assign_op]))(self) /* n_assign_op on */; -var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_value]))(self) /* n_value on */; -((void (*)(val*, val*, val*, val*))(var1->class->vft[COLOR_parser_prod__AVarReassignExpr__init_avarreassignexpr]))(var1, var2, var3, var4) /* init_avarreassignexpr on */; -CHECK_NEW_parser_nodes__AVarReassignExpr(var1); -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; +var1 = 0; +{ +{ /* Inline scope#Variable#warn_unread= (var_variable,var1) on */ +var_variable->attrs[COLOR_scope__Variable___warn_unread].s = var1; /* _warn_unread on */ +RET_LABEL2:(void)0; } -/* method scope#ACallReassignExpr#variable_create for (self: Object, Variable): AVarFormExpr */ -val* VIRTUAL_scope__ACallReassignExpr__variable_create(val* self, val* p0) { -val* var /* : AVarFormExpr */; -val* var1 /* : AVarFormExpr */; -var1 = scope__ACallReassignExpr__variable_create(self, p0); -var = var1; -RET_LABEL:; -return var; } -/* method scope#AClosureCallExpr#variable for (self: AClosureCallExpr): nullable ClosureVariable */ -val* scope__AClosureCallExpr__variable(val* self) { -val* var /* : nullable ClosureVariable */; -val* var1 /* : nullable ClosureVariable */; -var1 = self->attrs[COLOR_scope__AClosureCallExpr___64dvariable].val; /* @variable on */ -var = var1; -RET_LABEL:; -return var; +var3 = NEW_parser_nodes__AVarReassignExpr(&type_parser_nodes__AVarReassignExpr); +{ +{ /* Inline parser_nodes#ACallFormExpr#n_id (self) on */ +var6 = self->attrs[COLOR_parser_nodes__ACallFormExpr___n_id].val; /* _n_id on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1644); +show_backtrace(1); } -/* method scope#AClosureCallExpr#variable for (self: Object): nullable ClosureVariable */ -val* VIRTUAL_scope__AClosureCallExpr__variable(val* self) { -val* var /* : nullable ClosureVariable */; -val* var1 /* : nullable ClosureVariable */; -var1 = scope__AClosureCallExpr__variable(self); -var = var1; -RET_LABEL:; -return var; +var4 = var6; +RET_LABEL5:(void)0; } -/* method scope#AClosureCallExpr#variable= for (self: AClosureCallExpr, nullable ClosureVariable) */ -void scope__AClosureCallExpr__variable_61d(val* self, val* p0) { -self->attrs[COLOR_scope__AClosureCallExpr___64dvariable].val = p0; /* @variable on */ -RET_LABEL:; } -/* method scope#AClosureCallExpr#variable= for (self: Object, nullable ClosureVariable) */ -void VIRTUAL_scope__AClosureCallExpr__variable_61d(val* self, val* p0) { -scope__AClosureCallExpr__variable_61d(self, p0); -RET_LABEL:; +{ +{ /* Inline parser_nodes#AReassignFormExpr#n_assign_op (self) on */ +var9 = self->attrs[COLOR_parser_nodes__AReassignFormExpr___n_assign_op].val; /* _n_assign_op on */ +if (unlikely(var9 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_assign_op"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1451); +show_backtrace(1); } -/* method scope#ASendExpr#escapemark for (self: ASendExpr): nullable EscapeMark */ -val* scope__ASendExpr__escapemark(val* self) { -val* var /* : nullable EscapeMark */; -val* var1 /* : nullable EscapeMark */; -var1 = self->attrs[COLOR_scope__ASendExpr___64descapemark].val; /* @escapemark on */ -var = var1; -RET_LABEL:; -return var; -} -/* method scope#ASendExpr#escapemark for (self: Object): nullable EscapeMark */ -val* VIRTUAL_scope__ASendExpr__escapemark(val* self) { -val* var /* : nullable EscapeMark */; -val* var1 /* : nullable EscapeMark */; -var1 = scope__ASendExpr__escapemark(self); -var = var1; -RET_LABEL:; -return var; +var7 = var9; +RET_LABEL8:(void)0; } -/* method scope#ASendExpr#escapemark= for (self: ASendExpr, nullable EscapeMark) */ -void scope__ASendExpr__escapemark_61d(val* self, val* p0) { -self->attrs[COLOR_scope__ASendExpr___64descapemark].val = p0; /* @escapemark on */ -RET_LABEL:; } -/* method scope#ASendExpr#escapemark= for (self: Object, nullable EscapeMark) */ -void VIRTUAL_scope__ASendExpr__escapemark_61d(val* self, val* p0) { -scope__ASendExpr__escapemark_61d(self, p0); -RET_LABEL:; +{ +{ /* Inline parser_nodes#AReassignFormExpr#n_value (self) on */ +var12 = self->attrs[COLOR_parser_nodes__AReassignFormExpr___n_value].val; /* _n_value on */ +if (unlikely(var12 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_value"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1452); +show_backtrace(1); } -/* method scope#ASendExpr#accept_scope_visitor for (self: ASendExpr, ScopeVisitor) */ -void scope__ASendExpr__accept_scope_visitor(val* self, val* p0) { -val* var_v /* var v: ScopeVisitor */; -val* var /* : ANodes[AClosureDef] */; -long var1 /* : Int */; -long var2 /* : Int */; -short int var3 /* : Bool */; -short int var5 /* : Bool */; -int cltype; -int idtype; -short int var6 /* : Bool */; -val* var7 /* : ANodes[AClosureDef] */; -val* var8 /* : nullable Object */; -val* var9 /* : nullable ALabel */; -short int var10 /* : Bool */; -val* var11 /* : EscapeMark */; -val* var_escapemark /* var escapemark: EscapeMark */; -var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_closure_defs]))(self) /* n_closure_defs on */; -var1 = ((long (*)(val*))(var->class->vft[COLOR_abstract_collection__Collection__length]))(var) /* length on */; -var2 = 0; -{ /* Inline kernel#Int#> (var1,var2) */ -/* Covariant cast for argument 0 (i) isa OTHER */ -/* isa OTHER */ -var5 = 1; /* easy isa OTHER*/ -if (!var5) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259); -exit(1); -} -var6 = var1 > var2; -var3 = var6; -goto RET_LABEL4; -RET_LABEL4:(void)0; +var10 = var12; +RET_LABEL11:(void)0; } -if (var3){ -var7 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_closure_defs]))(self) /* n_closure_defs on */; -var8 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__SequenceRead__last]))(var7) /* last on */; -var9 = ((val* (*)(val*))(var8->class->vft[COLOR_parser_nodes__ALabelable__n_label]))(var8) /* n_label on */; -var10 = 1; -var11 = ((val* (*)(val*, val*, short int))(var_v->class->vft[COLOR_scope__ScopeVisitor__make_escape_mark]))(var_v, var9, var10) /* make_escape_mark on */; -var_escapemark = var11; -((void (*)(val*, val*))(self->class->vft[COLOR_scope__ASendExpr__escapemark_61d]))(self, var_escapemark) /* escapemark= on */; -} else { } -((void (*)(val*, val*))(self->class->vft[COLOR_scope__ASendExpr__accept_scope_visitor]))(self, p0) /* accept_scope_visitor on */; -RET_LABEL:; +{ +parser_prod__AVarReassignExpr__init_avarreassignexpr(var3, var4, var7, var10); /* Direct call parser_prod#AVarReassignExpr#init_avarreassignexpr on */ } -/* method scope#ASendExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */ -void VIRTUAL_scope__ASendExpr__accept_scope_visitor(val* self, val* p0) { -scope__ASendExpr__accept_scope_visitor(self, p0); -RET_LABEL:; -} -/* method scope#AClosureDef#variables for (self: AClosureDef): nullable Array[Variable] */ -val* scope__AClosureDef__variables(val* self) { -val* var /* : nullable Array[Variable] */; -val* var1 /* : nullable Array[Variable] */; -var1 = self->attrs[COLOR_scope__AClosureDef___64dvariables].val; /* @variables on */ -var = var1; -RET_LABEL:; -return var; -} -/* method scope#AClosureDef#variables for (self: Object): nullable Array[Variable] */ -val* VIRTUAL_scope__AClosureDef__variables(val* self) { -val* var /* : nullable Array[Variable] */; -val* var1 /* : nullable Array[Variable] */; -var1 = scope__AClosureDef__variables(self); -var = var1; -RET_LABEL:; -return var; -} -/* method scope#AClosureDef#variables= for (self: AClosureDef, nullable Array[Variable]) */ -void scope__AClosureDef__variables_61d(val* self, val* p0) { -self->attrs[COLOR_scope__AClosureDef___64dvariables].val = p0; /* @variables on */ -RET_LABEL:; -} -/* method scope#AClosureDef#variables= for (self: Object, nullable Array[Variable]) */ -void VIRTUAL_scope__AClosureDef__variables_61d(val* self, val* p0) { -scope__AClosureDef__variables_61d(self, p0); -RET_LABEL:; -} -/* method scope#AClosureDef#escapemark for (self: AClosureDef): nullable EscapeMark */ -val* scope__AClosureDef__escapemark(val* self) { -val* var /* : nullable EscapeMark */; -val* var1 /* : nullable EscapeMark */; -var1 = self->attrs[COLOR_scope__AClosureDef___64descapemark].val; /* @escapemark on */ -var = var1; +var = var3; +goto RET_LABEL; RET_LABEL:; return var; } -/* method scope#AClosureDef#escapemark for (self: Object): nullable EscapeMark */ -val* VIRTUAL_scope__AClosureDef__escapemark(val* self) { -val* var /* : nullable EscapeMark */; -val* var1 /* : nullable EscapeMark */; -var1 = scope__AClosureDef__escapemark(self); +/* method scope#ACallReassignExpr#variable_create for (self: Object, Variable): AVarFormExpr */ +val* VIRTUAL_scope__ACallReassignExpr__variable_create(val* self, val* p0) { +val* var /* : AVarFormExpr */; +val* var1 /* : AVarFormExpr */; +var1 = scope__ACallReassignExpr__variable_create(self, p0); var = var1; RET_LABEL:; return var; } -/* method scope#AClosureDef#escapemark= for (self: AClosureDef, nullable EscapeMark) */ -void scope__AClosureDef__escapemark_61d(val* self, val* p0) { -self->attrs[COLOR_scope__AClosureDef___64descapemark].val = p0; /* @escapemark on */ -RET_LABEL:; -} -/* method scope#AClosureDef#escapemark= for (self: Object, nullable EscapeMark) */ -void VIRTUAL_scope__AClosureDef__escapemark_61d(val* self, val* p0) { -scope__AClosureDef__escapemark_61d(self, p0); -RET_LABEL:; -} -/* method scope#AClosureDef#accept_scope_visitor for (self: AClosureDef, ScopeVisitor) */ -void scope__AClosureDef__accept_scope_visitor(val* self, val* p0) { -val* var_v /* var v: ScopeVisitor */; -val* var /* : List[Scope] */; -val* var1 /* : Scope */; -val* var2 /* : Array[Variable] */; -val* var_variables /* var variables: Array[Variable] */; -val* var3 /* : ANodes[TId] */; -val* var4 /* : Iterator[nullable Object] */; -short int var5 /* : Bool */; -val* var6 /* : nullable Object */; -val* var_nid /* var nid: TId */; -val* var7 /* : Variable */; -val* var8 /* : String */; -val* var_va /* var va: Variable */; -short int var9 /* : Bool */; -val* var10 /* : nullable ANode */; -short int var11 /* : Bool */; -int cltype; -int idtype; -val* var12 /* : nullable EscapeMark */; -val* var13 /* : nullable AExpr */; -val* var14 /* : nullable EscapeMark */; -val* var15 /* : List[Scope] */; -val* var16 /* : nullable Object */; -var_v = p0; -var = ((val* (*)(val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__scopes]))(var_v) /* scopes on */; -var1 = NEW_scope__Scope(&type_scope__Scope); -((void (*)(val*))(var1->class->vft[COLOR_scope__Scope__init]))(var1) /* init on */; -CHECK_NEW_scope__Scope(var1); -((void (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__Sequence__unshift]))(var, var1) /* unshift on */; -var2 = NEW_array__Array(&type_array__Arrayscope__Variable); -((void (*)(val*))(var2->class->vft[COLOR_array__Array__init]))(var2) /* init on */; -CHECK_NEW_array__Array(var2); -var_variables = var2; -((void (*)(val*, val*))(self->class->vft[COLOR_scope__AClosureDef__variables_61d]))(self, var_variables) /* variables= on */; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AClosureDef__n_ids]))(self) /* n_ids on */; -var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Collection__iterator]))(var3) /* iterator on */; -for(;;) { -var5 = ((short int (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var4) /* is_ok on */; -if(!var5) break; -var6 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__item]))(var4) /* item on */; -var_nid = var6; -var7 = NEW_scope__Variable(&type_scope__Variable); -var8 = ((val* (*)(val*))(var_nid->class->vft[COLOR_parser_nodes__Token__text]))(var_nid) /* text on */; -((void (*)(val*, val*))(var7->class->vft[COLOR_scope__Variable__init]))(var7, var8) /* init on */; -CHECK_NEW_scope__Variable(var7); -var_va = var7; -var9 = ((short int (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__register_variable]))(var_v, var_nid, var_va) /* register_variable on */; -var9; -((void (*)(val*, val*))(var_variables->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_variables, var_va) /* add on */; -CONTINUE_label: (void)0; -((void (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__next]))(var4) /* next on */; -} -BREAK_label: (void)0; -var10 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__parent]))(self) /* parent on */; -/* isa ASendExpr */ -cltype = type_parser_nodes__ASendExpr.color; -idtype = type_parser_nodes__ASendExpr.id; -if(var10 == NULL) { -var11 = 0; -} else { -if(cltype >= var10->type->table_size) { -var11 = 0; -} else { -var11 = var10->type->type_table[cltype] == idtype; -} -} -if (!var11) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/scope.nit", 476); -exit(1); -} -var12 = ((val* (*)(val*))(var10->class->vft[COLOR_scope__ASendExpr__escapemark]))(var10) /* escapemark on */; -((void (*)(val*, val*))(self->class->vft[COLOR_scope__AClosureDef__escapemark_61d]))(self, var12) /* escapemark= on */; -var13 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AClosureDef__n_expr]))(self) /* n_expr on */; -var14 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AClosureDef__escapemark]))(self) /* escapemark on */; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__enter_visit_block]))(var_v, var13, var14) /* enter_visit_block on */; -var15 = ((val* (*)(val*))(var_v->class->vft[COLOR_scope__ScopeVisitor__scopes]))(var_v) /* scopes on */; -var16 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_collection__Sequence__shift]))(var15) /* shift on */; -var16; -RET_LABEL:; -} -/* method scope#AClosureDef#accept_scope_visitor for (self: Object, ScopeVisitor) */ -void VIRTUAL_scope__AClosureDef__accept_scope_visitor(val* self, val* p0) { -scope__AClosureDef__accept_scope_visitor(self, p0); -RET_LABEL:; -}