update c_src
[nit.git] / c_src / scope.sep.1.c
index 4ad1734..6b82f73 100644 (file)
@@ -6,7 +6,7 @@ val* var1 /* : Phase */;
 var1 = self->attrs[COLOR_scope__ToolContext___scope_phase].val; /* _scope_phase on <self:ToolContext> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scope_phase");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 25);
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 23);
 show_backtrace(1);
 }
 var = var1;
@@ -22,7 +22,7 @@ val* var3 /* : Phase */;
 var3 = self->attrs[COLOR_scope__ToolContext___scope_phase].val; /* _scope_phase on <self:Object(ToolContext)> */
 if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scope_phase");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 25);
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 23);
 show_backtrace(1);
 }
 var1 = var3;
@@ -43,7 +43,7 @@ var_npropdef = p0;
 var2 = self->attrs[COLOR_phase__Phase___toolcontext].val; /* _toolcontext on <self:ScopePhase> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
-PRINT_ERROR(" (%s:%d)\n", "src/phase.nit", 145);
+PRINT_ERROR(" (%s:%d)\n", "phase.nit", 162);
 show_backtrace(1);
 }
 var = var2;
@@ -67,7 +67,7 @@ val* var1 /* : String */;
 var1 = self->attrs[COLOR_scope__Variable___name].val; /* _name on <self:Variable> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 36);
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 34);
 show_backtrace(1);
 }
 var = var1;
@@ -83,7 +83,7 @@ val* var3 /* : String */;
 var3 = self->attrs[COLOR_scope__Variable___name].val; /* _name on <self:Object(Variable)> */
 if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 36);
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 34);
 show_backtrace(1);
 }
 var1 = var3;
@@ -93,6 +93,19 @@ 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___name].val = p0; /* _name on <self:Variable> */
+RET_LABEL:;
+}
+/* method scope#Variable#name= for (self: Object, String) */
+void VIRTUAL_scope__Variable__name_61d(val* self, val* p0) {
+{ /* Inline scope#Variable#name= (self,p0) on <self:Object(Variable)> */
+self->attrs[COLOR_scope__Variable___name].val = p0; /* _name on <self:Object(Variable)> */
+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 */;
@@ -103,7 +116,7 @@ val* var3 /* : String */;
 var3 = self->attrs[COLOR_scope__Variable___name].val; /* _name on <self:Variable> */
 if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 36);
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 34);
 show_backtrace(1);
 }
 var1 = var3;
@@ -124,15 +137,91 @@ 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___name].val = p0; /* _name on <self:Variable> */
+/* 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 <self:Variable> */
+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 <self:Object(Variable)> */
+var3 = self->attrs[COLOR_scope__Variable___location].val; /* _location on <self:Object(Variable)> */
+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 <self:Variable> */
+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:Object(Variable)> */
+self->attrs[COLOR_scope__Variable___location].val = p0; /* _location on <self:Object(Variable)> */
+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 <self:Variable> */
+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 <self:Object(Variable)> */
+var3 = self->attrs[COLOR_scope__Variable___warn_unread].s; /* _warn_unread on <self:Object(Variable)> */
+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 <self:Variable> */
+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:Object(Variable)> */
+self->attrs[COLOR_scope__Variable___warn_unread].s = p0; /* _warn_unread on <self:Object(Variable)> */
+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 <self:Variable>*/;
+}
+RET_LABEL:;
+}
+/* method scope#Variable#init for (self: Object) */
+void VIRTUAL_scope__Variable__init(val* self) {
+{ /* Inline scope#Variable#init (self) on <self:Object(Variable)> */
+{
+((void (*)(val*))(self->class->vft[COLOR_scope__Variable__init]))(self) /* init on <self:Object(Variable)>*/;
 }
-/* method scope#Variable#init for (self: Object, String) */
-void VIRTUAL_scope__Variable__init(val* self, val* p0) {
-{ /* Inline scope#Variable#init (self,p0) on <self:Object(Variable)> */
-self->attrs[COLOR_scope__Variable___name].val = p0; /* _name on <self:Object(Variable)> */
 RET_LABEL1:(void)0;
 }
 RET_LABEL:;
@@ -160,55 +249,35 @@ var = var1;
 RET_LABEL:;
 return var;
 }
-/* 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___for_loop].s; /* _for_loop on <self:EscapeMark> */
-var = var1;
+/* method scope#EscapeMark#name= for (self: EscapeMark, nullable String) */
+void scope__EscapeMark__name_61d(val* self, val* p0) {
+self->attrs[COLOR_scope__EscapeMark___name].val = p0; /* _name on <self:EscapeMark> */
 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 */;
-short int var3 /* : Bool */;
-{ /* Inline scope#EscapeMark#for_loop (self) on <self:Object(EscapeMark)> */
-var3 = self->attrs[COLOR_scope__EscapeMark___for_loop].s; /* _for_loop on <self:Object(EscapeMark)> */
-var1 = var3;
-RET_LABEL2:(void)0;
+/* method scope#EscapeMark#name= for (self: Object, nullable String) */
+void VIRTUAL_scope__EscapeMark__name_61d(val* self, val* p0) {
+{ /* Inline scope#EscapeMark#name= (self,p0) on <self:Object(EscapeMark)> */
+self->attrs[COLOR_scope__EscapeMark___name].val = p0; /* _name on <self:Object(EscapeMark)> */
+RET_LABEL1:(void)0;
 }
-var = var1;
 RET_LABEL:;
-return var;
-}
-/* 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___continues].val; /* _continues on <self:EscapeMark> */
-if (unlikely(var1 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _continues");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 53);
-show_backtrace(1);
 }
+/* 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 <self:EscapeMark> */
 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] */;
-val* var3 /* : Array[AContinueExpr] */;
-{ /* Inline scope#EscapeMark#continues (self) on <self:Object(EscapeMark)> */
-var3 = self->attrs[COLOR_scope__EscapeMark___continues].val; /* _continues on <self:Object(EscapeMark)> */
-if (unlikely(var3 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _continues");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 53);
-show_backtrace(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 <self:Object(EscapeMark)> */
+var3 = self->attrs[COLOR_scope__EscapeMark___continue_mark].val; /* _continue_mark on <self:Object(EscapeMark)> */
 var1 = var3;
 RET_LABEL2:(void)0;
 }
@@ -216,30 +285,43 @@ var = var1;
 RET_LABEL:;
 return var;
 }
-/* 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___breaks].val; /* _breaks on <self:EscapeMark> */
+/* 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 <self:EscapeMark> */
+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:Object(EscapeMark)> */
+self->attrs[COLOR_scope__EscapeMark___continue_mark].val = p0; /* _continue_mark on <self:Object(EscapeMark)> */
+RET_LABEL1:(void)0;
+}
+RET_LABEL:;
+}
+/* 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 <self:EscapeMark> */
 if (unlikely(var1 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _breaks");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 56);
+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] */;
-val* var3 /* : Array[ABreakExpr] */;
-{ /* Inline scope#EscapeMark#breaks (self) on <self:Object(EscapeMark)> */
-var3 = self->attrs[COLOR_scope__EscapeMark___breaks].val; /* _breaks on <self:Object(EscapeMark)> */
+/* 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 <self:Object(EscapeMark)> */
+var3 = self->attrs[COLOR_scope__EscapeMark___escapes].val; /* _escapes on <self:Object(EscapeMark)> */
 if (unlikely(var3 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _breaks");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 56);
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _escapes");
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 57);
 show_backtrace(1);
 }
 var1 = var3;
@@ -249,17 +331,19 @@ var = var1;
 RET_LABEL:;
 return var;
 }
-/* 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___name].val = p0; /* _name on <self:EscapeMark> */
-self->attrs[COLOR_scope__EscapeMark___for_loop].s = p1; /* _for_loop on <self:EscapeMark> */
+/* 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 <self:EscapeMark>*/;
+}
 RET_LABEL:;
 }
-/* method scope#EscapeMark#init for (self: Object, nullable String, Bool) */
-void VIRTUAL_scope__EscapeMark__init(val* self, val* p0, short int p1) {
-{ /* Inline scope#EscapeMark#init (self,p0,p1) on <self:Object(EscapeMark)> */
-self->attrs[COLOR_scope__EscapeMark___name].val = p0; /* _name on <self:Object(EscapeMark)> */
-self->attrs[COLOR_scope__EscapeMark___for_loop].s = p1; /* _for_loop on <self:Object(EscapeMark)> */
+/* method scope#EscapeMark#init for (self: Object) */
+void VIRTUAL_scope__EscapeMark__init(val* self) {
+{ /* Inline scope#EscapeMark#init (self) on <self:Object(EscapeMark)> */
+{
+((void (*)(val*))(self->class->vft[COLOR_scope__EscapeMark__init]))(self) /* init on <self:Object(EscapeMark)>*/;
+}
 RET_LABEL1:(void)0;
 }
 RET_LABEL:;
@@ -271,7 +355,7 @@ val* var1 /* : ToolContext */;
 var1 = self->attrs[COLOR_scope__ScopeVisitor___toolcontext].val; /* _toolcontext on <self:ScopeVisitor> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 68);
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 69);
 show_backtrace(1);
 }
 var = var1;
@@ -287,7 +371,7 @@ val* var3 /* : ToolContext */;
 var3 = self->attrs[COLOR_scope__ScopeVisitor___toolcontext].val; /* _toolcontext on <self:Object(ScopeVisitor)> */
 if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 68);
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 69);
 show_backtrace(1);
 }
 var1 = var3;
@@ -317,7 +401,7 @@ val* var1 /* : Variable */;
 var1 = self->attrs[COLOR_scope__ScopeVisitor___selfvariable].val; /* _selfvariable on <self:ScopeVisitor> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _selfvariable");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 71);
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 72);
 show_backtrace(1);
 }
 var = var1;
@@ -333,7 +417,7 @@ val* var3 /* : Variable */;
 var3 = self->attrs[COLOR_scope__ScopeVisitor___selfvariable].val; /* _selfvariable on <self:Object(ScopeVisitor)> */
 if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _selfvariable");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 71);
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 72);
 show_backtrace(1);
 }
 var1 = var3;
@@ -347,40 +431,36 @@ return var;
 void scope__ScopeVisitor__init(val* self, val* p0) {
 val* var_toolcontext /* var toolcontext: ToolContext */;
 val* var /* : List[Scope] */;
-val* var4 /* : List[Scope] */;
-val* var5 /* : Scope */;
+val* var3 /* : List[Scope] */;
+val* var4 /* : Scope */;
 {
-{ /* Inline parser_nodes#Visitor#init (self) on <self:ScopeVisitor> */
-RET_LABEL1:(void)0;
-}
+((void (*)(val*))(self->class->vft[COLOR_kernel__Object__init]))(self) /* init on <self:ScopeVisitor>*/;
 }
 var_toolcontext = p0;
 {
 { /* Inline scope#ScopeVisitor#toolcontext= (self,var_toolcontext) on <self:ScopeVisitor> */
 self->attrs[COLOR_scope__ScopeVisitor___toolcontext].val = var_toolcontext; /* _toolcontext on <self:ScopeVisitor> */
-RET_LABEL2:(void)0;
+RET_LABEL1:(void)0;
 }
 }
 {
 { /* Inline scope#ScopeVisitor#scopes (self) on <self:ScopeVisitor> */
-var4 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <self:ScopeVisitor> */
-if (unlikely(var4 == NULL)) {
+var3 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <self:ScopeVisitor> */
+if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 79);
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 80);
 show_backtrace(1);
 }
-var = var4;
-RET_LABEL3:(void)0;
+var = var3;
+RET_LABEL2:(void)0;
 }
 }
-var5 = NEW_scope__Scope(&type_scope__Scope);
+var4 = NEW_scope__Scope(&type_scope__Scope);
 {
-{ /* Inline scope#Scope#init (var5) on <var5:Scope> */
-RET_LABEL6:(void)0;
-}
+((void (*)(val*))(var4->class->vft[COLOR_kernel__Object__init]))(var4) /* init on <var4:Scope>*/;
 }
 {
-abstract_collection__Sequence__add(var, var5); /* Direct call abstract_collection#Sequence#add on <var:List[Scope]>*/
+abstract_collection__Sequence__add(var, var4); /* Direct call abstract_collection#Sequence#add on <var:List[Scope]>*/
 }
 RET_LABEL:;
 }
@@ -396,7 +476,7 @@ val* var1 /* : List[Scope] */;
 var1 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <self:ScopeVisitor> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 79);
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 80);
 show_backtrace(1);
 }
 var = var1;
@@ -412,7 +492,7 @@ val* var3 /* : List[Scope] */;
 var3 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <self:Object(ScopeVisitor)> */
 if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 79);
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 80);
 show_backtrace(1);
 }
 var1 = var3;
@@ -422,6 +502,233 @@ var = var1;
 RET_LABEL:;
 return var;
 }
+/* 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 <self:ScopeVisitor> */
+var2 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <self:ScopeVisitor> */
+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 <self:ScopeVisitor> */
+var7 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <self:ScopeVisitor> */
+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 <var_scope:Scope> */
+var11 = var_scope->attrs[COLOR_scope__Scope___variables].val; /* _variables on <var_scope:Scope> */
+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 <var9:HashMap[String, Variable]> */
+var14 = var9->attrs[COLOR_hash_collection__HashMap___values].val; /* _values on <var9:HashMap[String, Variable]> */
+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_:RemovableCollection[Variable]>*/;
+}
+var_16 = var15;
+for(;;) {
+{
+var17 = ((short int (*)(val*))(var_16->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_16) /* is_ok on <var_16:Iterator[Variable]>*/;
+}
+if (var17){
+{
+var18 = ((val* (*)(val*))(var_16->class->vft[COLOR_abstract_collection__Iterator__item]))(var_16) /* item on <var_16:Iterator[Variable]>*/;
+}
+var_v = var18;
+{
+{ /* Inline scope#Variable#warn_unread (var_v) on <var_v:Variable> */
+var21 = var_v->attrs[COLOR_scope__Variable___warn_unread].s; /* _warn_unread on <var_v:Variable> */
+var19 = var21;
+RET_LABEL20:(void)0;
+}
+}
+if (var19){
+{
+{ /* Inline scope#ScopeVisitor#toolcontext (self) on <self:ScopeVisitor> */
+var24 = self->attrs[COLOR_scope__ScopeVisitor___toolcontext].val; /* _toolcontext on <self:ScopeVisitor> */
+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 <var_v:Variable> */
+var27 = var_v->attrs[COLOR_scope__Variable___location].val; /* _location on <var_v:Variable> */
+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 <var_v:Variable> */
+var39 = var_v->attrs[COLOR_scope__Variable___name].val; /* _name on <var_v:Variable> */
+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 <var45:Array[Object]>*/;
+}
+}
+{
+var48 = ((val* (*)(val*))(var45->class->vft[COLOR_string__Object__to_s]))(var45) /* to_s on <var45:Array[Object]>*/;
+}
+{
+toolcontext__ToolContext__advice(var22, var25, var28, var48); /* Direct call toolcontext#ToolContext#advice on <var22:ToolContext>*/
+}
+} else {
+}
+{
+((void (*)(val*))(var_16->class->vft[COLOR_abstract_collection__Iterator__next]))(var_16) /* next on <var_16:Iterator[Variable]>*/;
+}
+} else {
+goto BREAK_label;
+}
+}
+BREAK_label: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_16) on <var_16:Iterator[Variable]> */
+RET_LABEL49:(void)0;
+}
+}
+RET_LABEL:;
+}
+/* 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 <self:Object(ScopeVisitor)>*/
+RET_LABEL:;
+}
 /* method scope#ScopeVisitor#register_variable for (self: ScopeVisitor, ANode, Variable): Bool */
 short int scope__ScopeVisitor__register_variable(val* self, val* p0, val* p1) {
 short int var /* : Bool */;
@@ -459,7 +766,9 @@ val* var28 /* : List[Scope] */;
 val* var29 /* : nullable Object */;
 val* var30 /* : HashMap[String, Variable] */;
 val* var32 /* : HashMap[String, Variable] */;
-short int var33 /* : Bool */;
+val* var33 /* : Location */;
+val* var35 /* : Location */;
+short int var37 /* : Bool */;
 var_node = p0;
 var_variable = p1;
 {
@@ -467,7 +776,7 @@ var_variable = p1;
 var3 = var_variable->attrs[COLOR_scope__Variable___name].val; /* _name on <var_variable:Variable> */
 if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 36);
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 34);
 show_backtrace(1);
 }
 var1 = var3;
@@ -545,7 +854,7 @@ goto RET_LABEL;
 var28 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <self:ScopeVisitor> */
 if (unlikely(var28 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 79);
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 80);
 show_backtrace(1);
 }
 var26 = var28;
@@ -560,7 +869,7 @@ var29 = list__List__first(var26);
 var32 = var29->attrs[COLOR_scope__Scope___variables].val; /* _variables on <var29:nullable Object(Scope)> */
 if (unlikely(var32 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _variables");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 210);
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 225);
 show_backtrace(1);
 }
 var30 = var32;
@@ -570,8 +879,26 @@ RET_LABEL31:(void)0;
 {
 hash_collection__HashMap___91d_93d_61d(var30, var_name, var_variable); /* Direct call hash_collection#HashMap#[]= on <var30:HashMap[String, Variable]>*/
 }
-var33 = 1;
-var = var33;
+{
+{ /* Inline parser_nodes#ANode#location (var_node) on <var_node:ANode> */
+var35 = var_node->attrs[COLOR_parser_nodes__ANode___location].val; /* _location on <var_node:ANode> */
+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:Variable> */
+var_variable->attrs[COLOR_scope__Variable___location].val = var33; /* _location on <var_variable:Variable> */
+RET_LABEL36:(void)0;
+}
+}
+var37 = 1;
+var = var37;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
@@ -591,82 +918,93 @@ val* var /* : nullable Variable */;
 val* var_name /* var name: String */;
 val* var1 /* : List[Scope] */;
 val* var3 /* : List[Scope] */;
+val* var_ /* var : List[Scope] */;
 val* var4 /* : ListIterator[nullable Object] */;
-short int var5 /* : Bool */;
-val* var6 /* : nullable Object */;
+val* var_5 /* var : ListIterator[Scope] */;
+short int var6 /* : Bool */;
+val* var7 /* : nullable Object */;
 val* var_scope /* var scope: Scope */;
-val* var7 /* : nullable Variable */;
+val* var8 /* : nullable Variable */;
 val* var_res /* var res: nullable Variable */;
-val* var8 /* : null */;
-short int var9 /* : Bool */;
+val* var9 /* : null */;
 short int var10 /* : Bool */;
+short int var11 /* : Bool */;
 val* var_other /* var other: nullable Object */;
-short int var12 /* : Bool */;
 short int var13 /* : Bool */;
 short int var14 /* : Bool */;
-val* var15 /* : null */;
+short int var15 /* : Bool */;
+val* var17 /* : null */;
 var_name = p0;
 {
 { /* Inline scope#ScopeVisitor#scopes (self) on <self:ScopeVisitor> */
 var3 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <self:ScopeVisitor> */
 if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 79);
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 80);
 show_backtrace(1);
 }
 var1 = var3;
 RET_LABEL2:(void)0;
 }
 }
+var_ = var1;
 {
-var4 = list__List__iterator(var1);
+var4 = list__List__iterator(var_);
 }
+var_5 = var4;
 for(;;) {
 {
-var5 = list__ListIterator__is_ok(var4);
+var6 = list__ListIterator__is_ok(var_5);
 }
-if(!var5) break;
+if (var6){
 {
-var6 = list__ListIterator__item(var4);
+var7 = list__ListIterator__item(var_5);
 }
-var_scope = var6;
+var_scope = var7;
 {
-var7 = scope__Scope__get_variable(var_scope, var_name);
+var8 = scope__Scope__get_variable(var_scope, var_name);
 }
-var_res = var7;
-var8 = NULL;
+var_res = var8;
+var9 = NULL;
 if (var_res == NULL) {
-var9 = 0; /* is null */
+var10 = 0; /* is null */
 } else {
-var9 = 1; /* arg is null and recv is not */
+var10 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_res,var8) on <var_res:nullable Variable> */
-var_other = var8;
+{ /* Inline kernel#Object#!= (var_res,var9) on <var_res:nullable Variable> */
+var_other = var9;
 {
-var13 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable Variable(Variable)>*/;
-var12 = var13;
+var14 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable Variable(Variable)>*/;
+var13 = var14;
 }
-var14 = !var12;
-var10 = var14;
-goto RET_LABEL11;
-RET_LABEL11:(void)0;
+var15 = !var13;
+var11 = var15;
+goto RET_LABEL12;
+RET_LABEL12:(void)0;
 }
-var9 = var10;
+var10 = var11;
 }
-if (var9){
+if (var10){
 var = var_res;
 goto RET_LABEL;
 } else {
 }
-CONTINUE_label: (void)0;
 {
-list__ListIterator__next(var4); /* Direct call list#ListIterator#next on <var4:ListIterator[nullable Object]>*/
+list__ListIterator__next(var_5); /* Direct call list#ListIterator#next on <var_5:ListIterator[Scope]>*/
+}
+} else {
+goto BREAK_label;
 }
 }
 BREAK_label: (void)0;
-var15 = NULL;
-var = var15;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_5) on <var_5:ListIterator[Scope]> */
+RET_LABEL16:(void)0;
+}
+}
+var17 = NULL;
+var = var17;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
@@ -706,11 +1044,8 @@ short int var4 /* : Bool */;
 short int var6 /* : Bool */;
 val* var7 /* : Scope */;
 val* var_scope /* var scope: Scope */;
-val* var10 /* : List[Scope] */;
-val* var12 /* : List[Scope] */;
-val* var13 /* : List[Scope] */;
-val* var15 /* : List[Scope] */;
-val* var16 /* : nullable Object */;
+val* var9 /* : List[Scope] */;
+val* var11 /* : List[Scope] */;
 var_node = p0;
 var_escapemark = p1;
 var = NULL;
@@ -742,51 +1077,36 @@ goto RET_LABEL;
 }
 var7 = NEW_scope__Scope(&type_scope__Scope);
 {
-{ /* Inline scope#Scope#init (var7) on <var7:Scope> */
-RET_LABEL8:(void)0;
-}
+((void (*)(val*))(var7->class->vft[COLOR_kernel__Object__init]))(var7) /* init on <var7:Scope>*/;
 }
 var_scope = var7;
 {
 { /* Inline scope#Scope#escapemark= (var_scope,var_escapemark) on <var_scope:Scope> */
 var_scope->attrs[COLOR_scope__Scope___escapemark].val = var_escapemark; /* _escapemark on <var_scope:Scope> */
-RET_LABEL9:(void)0;
+RET_LABEL8:(void)0;
 }
 }
 {
 { /* Inline scope#ScopeVisitor#scopes (self) on <self:ScopeVisitor> */
-var12 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <self:ScopeVisitor> */
-if (unlikely(var12 == NULL)) {
+var11 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <self:ScopeVisitor> */
+if (unlikely(var11 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 79);
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 80);
 show_backtrace(1);
 }
-var10 = var12;
-RET_LABEL11:(void)0;
+var9 = var11;
+RET_LABEL10:(void)0;
 }
 }
 {
-list__List__unshift(var10, var_scope); /* Direct call list#List#unshift on <var10:List[Scope]>*/
+list__List__unshift(var9, var_scope); /* Direct call list#List#unshift on <var9:List[Scope]>*/
 }
 {
 parser_nodes__Visitor__enter_visit(self, var_node); /* Direct call parser_nodes#Visitor#enter_visit on <self:ScopeVisitor>*/
 }
 {
-{ /* Inline scope#ScopeVisitor#scopes (self) on <self:ScopeVisitor> */
-var15 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <self:ScopeVisitor> */
-if (unlikely(var15 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 79);
-show_backtrace(1);
-}
-var13 = var15;
-RET_LABEL14:(void)0;
-}
-}
-{
-var16 = list__List__shift(var13);
+scope__ScopeVisitor__shift_scope(self); /* Direct call scope#ScopeVisitor#shift_scope on <self:ScopeVisitor>*/
 }
-var16;
 RET_LABEL:;
 }
 /* method scope#ScopeVisitor#enter_visit_block for (self: Object, nullable AExpr, nullable EscapeMark) */
@@ -800,112 +1120,123 @@ val* var /* : nullable EscapeMark */;
 val* var_name /* var name: String */;
 val* var1 /* : List[Scope] */;
 val* var3 /* : List[Scope] */;
+val* var_ /* var : List[Scope] */;
 val* var4 /* : ListIterator[nullable Object] */;
-short int var5 /* : Bool */;
-val* var6 /* : nullable Object */;
+val* var_5 /* var : ListIterator[Scope] */;
+short int var6 /* : Bool */;
+val* var7 /* : nullable Object */;
 val* var_scope /* var scope: Scope */;
-val* var7 /* : nullable EscapeMark */;
-val* var9 /* : nullable EscapeMark */;
+val* var8 /* : nullable EscapeMark */;
+val* var10 /* : nullable EscapeMark */;
 val* var_res /* var res: nullable EscapeMark */;
-short int var10 /* : Bool */;
-val* var11 /* : null */;
-short int var12 /* : Bool */;
+short int var11 /* : Bool */;
+val* var12 /* : null */;
 short int var13 /* : Bool */;
+short int var14 /* : Bool */;
 val* var_other /* var other: nullable Object */;
-short int var15 /* : Bool */;
 short int var16 /* : Bool */;
 short int var17 /* : Bool */;
-short int var_ /* var : Bool */;
-val* var18 /* : nullable String */;
+short int var18 /* : Bool */;
+short int var_19 /* var : Bool */;
 val* var20 /* : nullable String */;
-short int var21 /* : Bool */;
-short int var22 /* : Bool */;
-val* var23 /* : null */;
+val* var22 /* : nullable String */;
+short int var23 /* : Bool */;
+short int var24 /* : Bool */;
+val* var26 /* : null */;
 var_name = p0;
 {
 { /* Inline scope#ScopeVisitor#scopes (self) on <self:ScopeVisitor> */
 var3 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <self:ScopeVisitor> */
 if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 79);
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 80);
 show_backtrace(1);
 }
 var1 = var3;
 RET_LABEL2:(void)0;
 }
 }
+var_ = var1;
 {
-var4 = list__List__iterator(var1);
+var4 = list__List__iterator(var_);
 }
+var_5 = var4;
 for(;;) {
 {
-var5 = list__ListIterator__is_ok(var4);
+var6 = list__ListIterator__is_ok(var_5);
 }
-if(!var5) break;
+if (var6){
 {
-var6 = list__ListIterator__item(var4);
+var7 = list__ListIterator__item(var_5);
 }
-var_scope = var6;
+var_scope = var7;
 {
 { /* Inline scope#Scope#escapemark (var_scope) on <var_scope:Scope> */
-var9 = var_scope->attrs[COLOR_scope__Scope___escapemark].val; /* _escapemark on <var_scope:Scope> */
-var7 = var9;
-RET_LABEL8:(void)0;
+var10 = var_scope->attrs[COLOR_scope__Scope___escapemark].val; /* _escapemark on <var_scope:Scope> */
+var8 = var10;
+RET_LABEL9:(void)0;
 }
 }
-var_res = var7;
-var11 = NULL;
+var_res = var8;
+var12 = NULL;
 if (var_res == NULL) {
-var12 = 0; /* is null */
+var13 = 0; /* is null */
 } else {
-var12 = 1; /* arg is null and recv is not */
+var13 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_res,var11) on <var_res:nullable EscapeMark> */
-var_other = var11;
+{ /* Inline kernel#Object#!= (var_res,var12) on <var_res:nullable EscapeMark> */
+var_other = var12;
 {
-var16 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable EscapeMark(EscapeMark)>*/;
-var15 = var16;
+var17 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable EscapeMark(EscapeMark)>*/;
+var16 = var17;
 }
-var17 = !var15;
-var13 = var17;
-goto RET_LABEL14;
-RET_LABEL14:(void)0;
+var18 = !var16;
+var14 = var18;
+goto RET_LABEL15;
+RET_LABEL15:(void)0;
 }
-var12 = var13;
+var13 = var14;
 }
-var_ = var12;
-if (var12){
+var_19 = var13;
+if (var13){
 {
 { /* Inline scope#EscapeMark#name (var_res) on <var_res:nullable EscapeMark(EscapeMark)> */
-var20 = var_res->attrs[COLOR_scope__EscapeMark___name].val; /* _name on <var_res:nullable EscapeMark(EscapeMark)> */
-var18 = var20;
-RET_LABEL19:(void)0;
+var22 = var_res->attrs[COLOR_scope__EscapeMark___name].val; /* _name on <var_res:nullable EscapeMark(EscapeMark)> */
+var20 = var22;
+RET_LABEL21:(void)0;
 }
 }
-if (var18 == NULL) {
-var21 = 0; /* <var_name:String> cannot be null */
+if (var20 == NULL) {
+var23 = 0; /* <var_name:String> cannot be null */
 } else {
-var22 = string__FlatString___61d_61d(var18, var_name);
-var21 = var22;
+var24 = string__FlatString___61d_61d(var20, var_name);
+var23 = var24;
 }
-var10 = var21;
+var11 = var23;
 } else {
-var10 = var_;
+var11 = var_19;
 }
-if (var10){
+if (var11){
 var = var_res;
 goto RET_LABEL;
 } else {
 }
-CONTINUE_label: (void)0;
 {
-list__ListIterator__next(var4); /* Direct call list#ListIterator#next on <var4:ListIterator[nullable Object]>*/
+list__ListIterator__next(var_5); /* Direct call list#ListIterator#next on <var_5:ListIterator[Scope]>*/
+}
+} else {
+goto BREAK_label;
 }
 }
 BREAK_label: (void)0;
-var23 = NULL;
-var = var23;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_5) on <var_5:ListIterator[Scope]> */
+RET_LABEL25:(void)0;
+}
+}
+var26 = NULL;
+var = var26;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
@@ -932,63 +1263,65 @@ 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* var9 /* : null */;
-short int var10 /* : Bool */;
-short int var11 /* : Bool */;
-val* var_other13 /* var other: nullable Object */;
-short int var14 /* : Bool */;
+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* var17 /* : String */;
-char* var18 /* : NativeString */;
-long var19 /* : Int */;
-val* var20 /* : FlatString */;
-val* var21 /* : nullable 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* var22 /* : null */;
-short int var23 /* : Bool */;
-short int var24 /* : Bool */;
+val* var24 /* : null */;
+short int var25 /* : Bool */;
 short int var26 /* : Bool */;
-short int var27 /* : Bool */;
 short int var28 /* : Bool */;
-static val* varonce29;
-val* var30 /* : String */;
-char* var31 /* : NativeString */;
-long var32 /* : Int */;
-val* var33 /* : FlatString */;
-static val* varonce34;
-val* var35 /* : String */;
-char* var36 /* : NativeString */;
-long var37 /* : Int */;
-val* var38 /* : FlatString */;
+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* var39 /* : String */;
-val* var40 /* : nullable EscapeMark */;
+val* var41 /* : String */;
+val* var42 /* : nullable EscapeMark */;
 val* var_found /* var found: nullable EscapeMark */;
-val* var41 /* : null */;
-short int var42 /* : Bool */;
-short int var43 /* : Bool */;
+val* var43 /* : null */;
+short int var44 /* : Bool */;
 short int var45 /* : Bool */;
-short int var46 /* : Bool */;
 short int var47 /* : Bool */;
-static val* varonce48;
-val* var49 /* : String */;
-char* var50 /* : NativeString */;
-long var51 /* : Int */;
-val* var52 /* : FlatString */;
-static val* varonce53;
-val* var54 /* : String */;
-char* var55 /* : NativeString */;
-long var56 /* : Int */;
-val* var57 /* : FlatString */;
-val* var58 /* : Array[Object] */;
-long var59 /* : Int */;
-val* var60 /* : NativeArray[Object] */;
-val* var61 /* : String */;
-val* var62 /* : null */;
-val* var63 /* : EscapeMark */;
-val* var_res65 /* var res: EscapeMark */;
+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;
@@ -1013,173 +1346,192 @@ var2 = var3;
 }
 if (var2){
 {
-var8 = parser_nodes__ALabel__n_id(var_nlabel);
+{ /* Inline parser_nodes#ALabel#n_id (var_nlabel) on <var_nlabel:nullable ALabel(ALabel)> */
+var10 = var_nlabel->attrs[COLOR_parser_nodes__ALabel___n_id].val; /* _n_id on <var_nlabel:nullable ALabel(ALabel)> */
+var8 = var10;
+RET_LABEL9:(void)0;
+}
 }
 var_nid = var8;
-var9 = NULL;
+var11 = NULL;
 if (var_nid == NULL) {
-var10 = 1; /* is null */
+var12 = 1; /* is null */
 } else {
-var10 = 0; /* arg is null but recv is not */
+var12 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_nid,var9) on <var_nid:nullable TId> */
-var_other13 = var9;
+{ /* Inline kernel#Object#== (var_nid,var11) on <var_nid:nullable TId> */
+var_other15 = var11;
 {
-{ /* Inline kernel#Object#is_same_instance (var_nid,var_other13) on <var_nid:nullable TId(TId)> */
-var16 = var_nid == var_other13;
-var14 = var16;
-goto RET_LABEL15;
-RET_LABEL15:(void)0;
+{ /* Inline kernel#Object#is_same_instance (var_nid,var_other15) on <var_nid:nullable TId(TId)> */
+var18 = var_nid == var_other15;
+var16 = var18;
+goto RET_LABEL17;
+RET_LABEL17:(void)0;
 }
 }
-var11 = var14;
-goto RET_LABEL12;
-RET_LABEL12:(void)0;
+var13 = var16;
+goto RET_LABEL14;
+RET_LABEL14:(void)0;
 }
-var10 = var11;
+var12 = var13;
 }
-if (var10){
+if (var12){
 if (varonce) {
-var17 = varonce;
+var19 = varonce;
 } else {
-var18 = "";
-var19 = 0;
-var20 = string__NativeString__to_s_with_length(var18, var19);
-var17 = var20;
-varonce = var17;
+var20 = "";
+var21 = 0;
+var22 = string__NativeString__to_s_with_length(var20, var21);
+var19 = var22;
+varonce = var19;
 }
 {
-var21 = scope__ScopeVisitor__search_label(self, var17);
+var23 = scope__ScopeVisitor__search_label(self, var19);
 }
-var_res = var21;
-var22 = NULL;
+var_res = var23;
+var24 = NULL;
 if (var_res == NULL) {
-var23 = 0; /* is null */
+var25 = 0; /* is null */
 } else {
-var23 = 1; /* arg is null and recv is not */
+var25 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_res,var22) on <var_res:nullable EscapeMark> */
-var_other = var22;
+{ /* Inline kernel#Object#!= (var_res,var24) on <var_res:nullable EscapeMark> */
+var_other = var24;
 {
-var27 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable EscapeMark(EscapeMark)>*/;
-var26 = var27;
+var29 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable EscapeMark(EscapeMark)>*/;
+var28 = var29;
 }
-var28 = !var26;
-var24 = var28;
-goto RET_LABEL25;
-RET_LABEL25:(void)0;
+var30 = !var28;
+var26 = var30;
+goto RET_LABEL27;
+RET_LABEL27:(void)0;
 }
-var23 = var24;
+var25 = var26;
 }
-if (var23){
-if (varonce29) {
-var30 = varonce29;
+if (var25){
+if (varonce31) {
+var32 = varonce31;
 } else {
-var31 = "Syntax error: anonymous label already defined.";
-var32 = 46;
-var33 = string__NativeString__to_s_with_length(var31, var32);
-var30 = var33;
-varonce29 = var30;
+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, var30); /* Direct call scope#ScopeVisitor#error on <self:ScopeVisitor>*/
+scope__ScopeVisitor__error(self, var_nlabel, var32); /* Direct call scope#ScopeVisitor#error on <self:ScopeVisitor>*/
 }
 } else {
 }
-if (varonce34) {
-var35 = varonce34;
+if (varonce36) {
+var37 = varonce36;
 } else {
-var36 = "";
-var37 = 0;
-var38 = string__NativeString__to_s_with_length(var36, var37);
-var35 = var38;
-varonce34 = var35;
+var38 = "";
+var39 = 0;
+var40 = string__NativeString__to_s_with_length(var38, var39);
+var37 = var40;
+varonce36 = var37;
 }
-var_name = var35;
+var_name = var37;
 } else {
 {
-var39 = lexer_work__Token__text(var_nid);
+var41 = lexer_work__Token__text(var_nid);
 }
-var_name = var39;
+var_name = var41;
 {
-var40 = scope__ScopeVisitor__search_label(self, var_name);
+var42 = scope__ScopeVisitor__search_label(self, var_name);
 }
-var_found = var40;
-var41 = NULL;
+var_found = var42;
+var43 = NULL;
 if (var_found == NULL) {
-var42 = 0; /* is null */
+var44 = 0; /* is null */
 } else {
-var42 = 1; /* arg is null and recv is not */
+var44 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_found,var41) on <var_found:nullable EscapeMark> */
-var_other = var41;
+{ /* Inline kernel#Object#!= (var_found,var43) on <var_found:nullable EscapeMark> */
+var_other = var43;
 {
-var46 = ((short int (*)(val*, val*))(var_found->class->vft[COLOR_kernel__Object___61d_61d]))(var_found, var_other) /* == on <var_found:nullable EscapeMark(EscapeMark)>*/;
-var45 = var46;
+var48 = ((short int (*)(val*, val*))(var_found->class->vft[COLOR_kernel__Object___61d_61d]))(var_found, var_other) /* == on <var_found:nullable EscapeMark(EscapeMark)>*/;
+var47 = var48;
 }
-var47 = !var45;
-var43 = var47;
-goto RET_LABEL44;
-RET_LABEL44:(void)0;
+var49 = !var47;
+var45 = var49;
+goto RET_LABEL46;
+RET_LABEL46:(void)0;
 }
-var42 = var43;
+var44 = var45;
 }
-if (var42){
-if (varonce48) {
-var49 = varonce48;
+if (var44){
+if (varonce50) {
+var51 = varonce50;
 } else {
-var50 = "Syntax error: label ";
-var51 = 20;
-var52 = string__NativeString__to_s_with_length(var50, var51);
-var49 = var52;
-varonce48 = var49;
+var52 = "Syntax error: label ";
+var53 = 20;
+var54 = string__NativeString__to_s_with_length(var52, var53);
+var51 = var54;
+varonce50 = var51;
 }
-if (varonce53) {
-var54 = varonce53;
+if (varonce55) {
+var56 = varonce55;
 } else {
-var55 = " already defined.";
-var56 = 17;
-var57 = string__NativeString__to_s_with_length(var55, var56);
-var54 = var57;
-varonce53 = var54;
+var57 = " already defined.";
+var58 = 17;
+var59 = string__NativeString__to_s_with_length(var57, var58);
+var56 = var59;
+varonce55 = var56;
 }
-var58 = NEW_array__Array(&type_array__Arraykernel__Object);
-{ /* var58 = array_instance Array[Object] */
-var59 = 3;
-var60 = NEW_array__NativeArray(var59, &type_array__NativeArraykernel__Object);
-((struct instance_array__NativeArray*)var60)->values[0] = (val*) var49;
-((struct instance_array__NativeArray*)var60)->values[1] = (val*) var_name;
-((struct instance_array__NativeArray*)var60)->values[2] = (val*) var54;
+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))(var58->class->vft[COLOR_array__Array__with_native]))(var58, var60, var59) /* with_native on <var58:Array[Object]>*/;
+((void (*)(val*, val*, long))(var60->class->vft[COLOR_array__Array__with_native]))(var60, var62, var61) /* with_native on <var60:Array[Object]>*/;
 }
 }
 {
-var61 = ((val* (*)(val*))(var58->class->vft[COLOR_string__Object__to_s]))(var58) /* to_s on <var58:Array[Object]>*/;
+var63 = ((val* (*)(val*))(var60->class->vft[COLOR_string__Object__to_s]))(var60) /* to_s on <var60:Array[Object]>*/;
 }
 {
-scope__ScopeVisitor__error(self, var_nlabel, var61); /* Direct call scope#ScopeVisitor#error on <self:ScopeVisitor>*/
+scope__ScopeVisitor__error(self, var_nlabel, var63); /* Direct call scope#ScopeVisitor#error on <self:ScopeVisitor>*/
 }
 } else {
 }
 }
 } else {
-var62 = NULL;
-var_name = var62;
+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 <var65:EscapeMark>*/;
 }
-var63 = NEW_scope__EscapeMark(&type_scope__EscapeMark);
 {
-{ /* Inline scope#EscapeMark#init (var63,var_name,var_for_loop) on <var63:EscapeMark> */
-var63->attrs[COLOR_scope__EscapeMark___name].val = var_name; /* _name on <var63:EscapeMark> */
-var63->attrs[COLOR_scope__EscapeMark___for_loop].s = var_for_loop; /* _for_loop on <var63:EscapeMark> */
-RET_LABEL64:(void)0;
+((void (*)(val*))(var65->class->vft[COLOR_kernel__Object__init]))(var65) /* init on <var65:EscapeMark>*/;
 }
+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 <var67:EscapeMark>*/;
+}
+{
+((void (*)(val*))(var67->class->vft[COLOR_kernel__Object__init]))(var67) /* init on <var67:EscapeMark>*/;
+}
+{
+{ /* Inline scope#EscapeMark#continue_mark= (var_res66,var67) on <var_res66:EscapeMark> */
+var_res66->attrs[COLOR_scope__EscapeMark___continue_mark].val = var67; /* _continue_mark on <var_res66:EscapeMark> */
+RET_LABEL68:(void)0;
+}
+}
+} else {
 }
-var_res65 = var63;
-var = var_res65;
+var = var_res66;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
@@ -1206,76 +1558,79 @@ 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* var9 /* : null */;
-short int var10 /* : Bool */;
-short int var11 /* : Bool */;
-val* var_other13 /* var other: nullable Object */;
-short int var14 /* : Bool */;
+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* var17 /* : String */;
-char* var18 /* : NativeString */;
-long var19 /* : Int */;
-val* var20 /* : FlatString */;
-val* var21 /* : nullable 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* var22 /* : null */;
-short int var23 /* : Bool */;
-short int var24 /* : Bool */;
+val* var24 /* : null */;
+short int var25 /* : Bool */;
 short int var26 /* : Bool */;
 short int var28 /* : Bool */;
-static val* varonce29;
-val* var30 /* : String */;
-char* var31 /* : NativeString */;
-long var32 /* : Int */;
-val* var33 /* : FlatString */;
-val* var34 /* : null */;
-val* var35 /* : String */;
+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* var36 /* : nullable EscapeMark */;
-val* var_res37 /* var res: nullable EscapeMark */;
-val* var38 /* : null */;
-short int var39 /* : Bool */;
-short int var40 /* : Bool */;
+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 */;
-static val* varonce45;
-val* var46 /* : String */;
-char* var47 /* : NativeString */;
-long var48 /* : Int */;
-val* var49 /* : FlatString */;
-static val* varonce50;
-val* var51 /* : String */;
-char* var52 /* : NativeString */;
-long var53 /* : Int */;
-val* var54 /* : FlatString */;
-val* var55 /* : Array[Object] */;
-long var56 /* : Int */;
-val* var57 /* : NativeArray[Object] */;
-val* var58 /* : String */;
-val* var59 /* : null */;
-val* var60 /* : List[Scope] */;
+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* var63 /* : ListIterator[nullable Object] */;
-short int var64 /* : Bool */;
-val* var65 /* : nullable Object */;
+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* var66 /* : nullable EscapeMark */;
-val* var68 /* : nullable EscapeMark */;
-val* var_res69 /* var res: nullable EscapeMark */;
-val* var70 /* : null */;
-short int var71 /* : Bool */;
-short int var72 /* : Bool */;
+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 var76 /* : Bool */;
-static val* varonce77;
-val* var78 /* : String */;
-char* var79 /* : NativeString */;
-long var80 /* : Int */;
-val* var81 /* : FlatString */;
-val* var82 /* : null */;
+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;
@@ -1300,84 +1655,88 @@ var2 = var3;
 }
 if (var2){
 {
-var8 = parser_nodes__ALabel__n_id(var_nlabel);
+{ /* Inline parser_nodes#ALabel#n_id (var_nlabel) on <var_nlabel:nullable ALabel(ALabel)> */
+var10 = var_nlabel->attrs[COLOR_parser_nodes__ALabel___n_id].val; /* _n_id on <var_nlabel:nullable ALabel(ALabel)> */
+var8 = var10;
+RET_LABEL9:(void)0;
+}
 }
 var_nid = var8;
-var9 = NULL;
+var11 = NULL;
 if (var_nid == NULL) {
-var10 = 1; /* is null */
+var12 = 1; /* is null */
 } else {
-var10 = 0; /* arg is null but recv is not */
+var12 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_nid,var9) on <var_nid:nullable TId> */
-var_other13 = var9;
+{ /* Inline kernel#Object#== (var_nid,var11) on <var_nid:nullable TId> */
+var_other15 = var11;
 {
-{ /* Inline kernel#Object#is_same_instance (var_nid,var_other13) on <var_nid:nullable TId(TId)> */
-var16 = var_nid == var_other13;
-var14 = var16;
-goto RET_LABEL15;
-RET_LABEL15:(void)0;
+{ /* Inline kernel#Object#is_same_instance (var_nid,var_other15) on <var_nid:nullable TId(TId)> */
+var18 = var_nid == var_other15;
+var16 = var18;
+goto RET_LABEL17;
+RET_LABEL17:(void)0;
 }
 }
-var11 = var14;
-goto RET_LABEL12;
-RET_LABEL12:(void)0;
+var13 = var16;
+goto RET_LABEL14;
+RET_LABEL14:(void)0;
 }
-var10 = var11;
+var12 = var13;
 }
-if (var10){
+if (var12){
 if (varonce) {
-var17 = varonce;
+var19 = varonce;
 } else {
-var18 = "";
-var19 = 0;
-var20 = string__NativeString__to_s_with_length(var18, var19);
-var17 = var20;
-varonce = var17;
+var20 = "";
+var21 = 0;
+var22 = string__NativeString__to_s_with_length(var20, var21);
+var19 = var22;
+varonce = var19;
 }
 {
-var21 = scope__ScopeVisitor__search_label(self, var17);
+var23 = scope__ScopeVisitor__search_label(self, var19);
 }
-var_res = var21;
-var22 = NULL;
+var_res = var23;
+var24 = NULL;
 if (var_res == NULL) {
-var23 = 1; /* is null */
+var25 = 1; /* is null */
 } else {
-var23 = 0; /* arg is null but recv is not */
+var25 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_res,var22) on <var_res:nullable EscapeMark> */
-var_other13 = var22;
+{ /* Inline kernel#Object#== (var_res,var24) on <var_res:nullable EscapeMark> */
+var_other15 = var24;
 {
-{ /* Inline kernel#Object#is_same_instance (var_res,var_other13) on <var_res:nullable EscapeMark(EscapeMark)> */
-var28 = var_res == var_other13;
+{ /* Inline kernel#Object#is_same_instance (var_res,var_other15) on <var_res:nullable EscapeMark(EscapeMark)> */
+var30 = var_res == var_other15;
+var28 = var30;
+goto RET_LABEL29;
+RET_LABEL29:(void)0;
+}
+}
 var26 = var28;
 goto RET_LABEL27;
 RET_LABEL27:(void)0;
 }
+var25 = var26;
 }
-var24 = var26;
-goto RET_LABEL25;
-RET_LABEL25:(void)0;
-}
-var23 = var24;
-}
-if (var23){
-if (varonce29) {
-var30 = varonce29;
+if (var25){
+if (varonce31) {
+var32 = varonce31;
 } else {
-var31 = "Syntax error: invalid anonymous label.";
-var32 = 38;
-var33 = string__NativeString__to_s_with_length(var31, var32);
-var30 = var33;
-varonce29 = var30;
+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, var30); /* Direct call scope#ScopeVisitor#error on <self:ScopeVisitor>*/
+scope__ScopeVisitor__error(self, var_nlabel, var32); /* Direct call scope#ScopeVisitor#error on <self:ScopeVisitor>*/
 }
-var34 = NULL;
-var = var34;
+var36 = NULL;
+var = var36;
 goto RET_LABEL;
 } else {
 }
@@ -1386,157 +1745,166 @@ goto RET_LABEL;
 } else {
 }
 {
-var35 = lexer_work__Token__text(var_nid);
+var37 = lexer_work__Token__text(var_nid);
 }
-var_name = var35;
+var_name = var37;
 {
-var36 = scope__ScopeVisitor__search_label(self, var_name);
+var38 = scope__ScopeVisitor__search_label(self, var_name);
 }
-var_res37 = var36;
-var38 = NULL;
-if (var_res37 == NULL) {
-var39 = 1; /* is null */
+var_res39 = var38;
+var40 = NULL;
+if (var_res39 == NULL) {
+var41 = 1; /* is null */
 } else {
-var39 = 0; /* arg is null but recv is not */
+var41 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_res37,var38) on <var_res37:nullable EscapeMark> */
-var_other13 = var38;
+{ /* Inline kernel#Object#== (var_res39,var40) on <var_res39:nullable EscapeMark> */
+var_other15 = var40;
 {
-{ /* Inline kernel#Object#is_same_instance (var_res37,var_other13) on <var_res37:nullable EscapeMark(EscapeMark)> */
-var44 = var_res37 == var_other13;
+{ /* Inline kernel#Object#is_same_instance (var_res39,var_other15) on <var_res39:nullable EscapeMark(EscapeMark)> */
+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;
 }
-var40 = var42;
-goto RET_LABEL41;
-RET_LABEL41:(void)0;
-}
-var39 = var40;
-}
-if (var39){
-if (varonce45) {
-var46 = varonce45;
+if (var41){
+if (varonce47) {
+var48 = varonce47;
 } else {
-var47 = "Syntax error: invalid label ";
-var48 = 28;
-var49 = string__NativeString__to_s_with_length(var47, var48);
-var46 = var49;
-varonce45 = var46;
-}
-if (varonce50) {
-var51 = varonce50;
+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 {
-var52 = ".";
-var53 = 1;
-var54 = string__NativeString__to_s_with_length(var52, var53);
-var51 = var54;
-varonce50 = var51;
+var54 = ".";
+var55 = 1;
+var56 = string__NativeString__to_s_with_length(var54, var55);
+var53 = var56;
+varonce52 = var53;
 }
-var55 = NEW_array__Array(&type_array__Arraykernel__Object);
-{ /* var55 = array_instance Array[Object] */
-var56 = 3;
-var57 = NEW_array__NativeArray(var56, &type_array__NativeArraykernel__Object);
-((struct instance_array__NativeArray*)var57)->values[0] = (val*) var46;
-((struct instance_array__NativeArray*)var57)->values[1] = (val*) var_name;
-((struct instance_array__NativeArray*)var57)->values[2] = (val*) var51;
+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))(var55->class->vft[COLOR_array__Array__with_native]))(var55, var57, var56) /* with_native on <var55:Array[Object]>*/;
+((void (*)(val*, val*, long))(var57->class->vft[COLOR_array__Array__with_native]))(var57, var59, var58) /* with_native on <var57:Array[Object]>*/;
 }
 }
 {
-var58 = ((val* (*)(val*))(var55->class->vft[COLOR_string__Object__to_s]))(var55) /* to_s on <var55:Array[Object]>*/;
+var60 = ((val* (*)(val*))(var57->class->vft[COLOR_string__Object__to_s]))(var57) /* to_s on <var57:Array[Object]>*/;
 }
 {
-scope__ScopeVisitor__error(self, var_nlabel, var58); /* Direct call scope#ScopeVisitor#error on <self:ScopeVisitor>*/
+scope__ScopeVisitor__error(self, var_nlabel, var60); /* Direct call scope#ScopeVisitor#error on <self:ScopeVisitor>*/
 }
-var59 = NULL;
-var = var59;
+var61 = NULL;
+var = var61;
 goto RET_LABEL;
 } else {
 }
-var = var_res37;
+var = var_res39;
 goto RET_LABEL;
 } else {
 {
 { /* Inline scope#ScopeVisitor#scopes (self) on <self:ScopeVisitor> */
-var62 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <self:ScopeVisitor> */
-if (unlikely(var62 == NULL)) {
+var64 = self->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <self:ScopeVisitor> */
+if (unlikely(var64 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 79);
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 80);
 show_backtrace(1);
 }
-var60 = var62;
-RET_LABEL61:(void)0;
+var62 = var64;
+RET_LABEL63:(void)0;
 }
 }
+var_ = var62;
 {
-var63 = list__List__iterator(var60);
+var65 = list__List__iterator(var_);
 }
+var_66 = var65;
 for(;;) {
 {
-var64 = list__ListIterator__is_ok(var63);
+var67 = list__ListIterator__is_ok(var_66);
 }
-if(!var64) break;
+if (var67){
 {
-var65 = list__ListIterator__item(var63);
+var68 = list__ListIterator__item(var_66);
 }
-var_scope = var65;
+var_scope = var68;
 {
 { /* Inline scope#Scope#escapemark (var_scope) on <var_scope:Scope> */
-var68 = var_scope->attrs[COLOR_scope__Scope___escapemark].val; /* _escapemark on <var_scope:Scope> */
-var66 = var68;
-RET_LABEL67:(void)0;
+var71 = var_scope->attrs[COLOR_scope__Scope___escapemark].val; /* _escapemark on <var_scope:Scope> */
+var69 = var71;
+RET_LABEL70:(void)0;
 }
 }
-var_res69 = var66;
-var70 = NULL;
-if (var_res69 == NULL) {
-var71 = 0; /* is null */
+var_res72 = var69;
+var73 = NULL;
+if (var_res72 == NULL) {
+var74 = 0; /* is null */
 } else {
-var71 = 1; /* arg is null and recv is not */
+var74 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_res69,var70) on <var_res69:nullable EscapeMark> */
-var_other = var70;
+{ /* Inline kernel#Object#!= (var_res72,var73) on <var_res72:nullable EscapeMark> */
+var_other = var73;
 {
-var75 = ((short int (*)(val*, val*))(var_res69->class->vft[COLOR_kernel__Object___61d_61d]))(var_res69, var_other) /* == on <var_res69:nullable EscapeMark(EscapeMark)>*/;
-var74 = var75;
+var78 = ((short int (*)(val*, val*))(var_res72->class->vft[COLOR_kernel__Object___61d_61d]))(var_res72, var_other) /* == on <var_res72:nullable EscapeMark(EscapeMark)>*/;
+var77 = var78;
 }
-var76 = !var74;
-var72 = var76;
-goto RET_LABEL73;
-RET_LABEL73:(void)0;
+var79 = !var77;
+var75 = var79;
+goto RET_LABEL76;
+RET_LABEL76:(void)0;
 }
-var71 = var72;
+var74 = var75;
 }
-if (var71){
-var = var_res69;
+if (var74){
+var = var_res72;
 goto RET_LABEL;
 } else {
 }
-CONTINUE_label: (void)0;
 {
-list__ListIterator__next(var63); /* Direct call list#ListIterator#next on <var63:ListIterator[nullable Object]>*/
+list__ListIterator__next(var_66); /* Direct call list#ListIterator#next on <var_66:ListIterator[Scope]>*/
+}
+} else {
+goto BREAK_label;
 }
 }
 BREAK_label: (void)0;
-if (varonce77) {
-var78 = varonce77;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_66) on <var_66:ListIterator[Scope]> */
+RET_LABEL80:(void)0;
+}
+}
+if (varonce81) {
+var82 = varonce81;
 } else {
-var79 = "Syntax Error: \'break\' statment outside block.";
-var80 = 45;
-var81 = string__NativeString__to_s_with_length(var79, var80);
-var78 = var81;
-varonce77 = var78;
+var83 = "Syntax Error: \'break\' statement outside block.";
+var84 = 46;
+var85 = string__NativeString__to_s_with_length(var83, var84);
+var82 = var85;
+varonce81 = var82;
 }
 {
-scope__ScopeVisitor__error(self, var_node, var78); /* Direct call scope#ScopeVisitor#error on <self:ScopeVisitor>*/
+scope__ScopeVisitor__error(self, var_node, var82); /* Direct call scope#ScopeVisitor#error on <self:ScopeVisitor>*/
 }
-var82 = NULL;
-var = var82;
+var86 = NULL;
+var = var86;
 goto RET_LABEL;
 }
 RET_LABEL:;
@@ -1565,7 +1933,7 @@ var_message = p1;
 var2 = self->attrs[COLOR_scope__ScopeVisitor___toolcontext].val; /* _toolcontext on <self:ScopeVisitor> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 68);
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 69);
 show_backtrace(1);
 }
 var = var2;
@@ -1592,7 +1960,7 @@ val* var1 /* : HashMap[String, Variable] */;
 var1 = self->attrs[COLOR_scope__Scope___variables].val; /* _variables on <self:Scope> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _variables");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 210);
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 225);
 show_backtrace(1);
 }
 var = var1;
@@ -1608,7 +1976,7 @@ val* var3 /* : HashMap[String, Variable] */;
 var3 = self->attrs[COLOR_scope__Scope___variables].val; /* _variables on <self:Object(Scope)> */
 if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _variables");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 210);
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 225);
 show_backtrace(1);
 }
 var1 = var3;
@@ -1671,7 +2039,7 @@ var_name = p0;
 var3 = self->attrs[COLOR_scope__Scope___variables].val; /* _variables on <self:Scope> */
 if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _variables");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 210);
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 225);
 show_backtrace(1);
 }
 var1 = var3;
@@ -1687,7 +2055,7 @@ if (var4){
 var7 = self->attrs[COLOR_scope__Scope___variables].val; /* _variables on <self:Scope> */
 if (unlikely(var7 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _variables");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 210);
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 225);
 show_backtrace(1);
 }
 var5 = var7;
@@ -1716,17 +2084,6 @@ 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) {
-{ /* Inline scope#Scope#init (self) on <self:Object(Scope)> */
-RET_LABEL1:(void)0;
-}
-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 */;
@@ -1755,6 +2112,9 @@ var_v = var;
 {
 parser_nodes__Visitor__enter_visit(var_v, self); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:ScopeVisitor>*/
 }
+{
+scope__ScopeVisitor__shift_scope(var_v); /* Direct call scope#ScopeVisitor#shift_scope on <var_v:ScopeVisitor>*/
+}
 RET_LABEL:;
 }
 /* method scope#APropdef#do_scope for (self: Object, ToolContext) */
@@ -1802,38 +2162,47 @@ RET_LABEL:;
 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 var4 /* : 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 <self:AParam>*/;
 }
 {
-var = parser_nodes__AParam__n_id(self);
+{ /* Inline parser_nodes#AParam#n_id (self) on <self:AParam> */
+var2 = self->attrs[COLOR_parser_nodes__AParam___n_id].val; /* _n_id on <self:AParam> */
+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);
+var3 = NEW_scope__Variable(&type_scope__Variable);
 {
-var2 = lexer_work__Token__text(var_nid);
+var4 = lexer_work__Token__text(var_nid);
 }
 {
-{ /* Inline scope#Variable#init (var1,var2) on <var1:Variable> */
-var1->attrs[COLOR_scope__Variable___name].val = var2; /* _name on <var1:Variable> */
-RET_LABEL3:(void)0;
+((void (*)(val*, val*))(var3->class->vft[COLOR_scope__Variable__name_61d]))(var3, var4) /* name= on <var3:Variable>*/;
 }
+{
+((void (*)(val*))(var3->class->vft[COLOR_kernel__Object__init]))(var3) /* init on <var3:Variable>*/;
 }
-var_variable = var1;
+var_variable = var3;
 {
-var4 = scope__ScopeVisitor__register_variable(var_v, var_nid, var_variable);
+var5 = scope__ScopeVisitor__register_variable(var_v, var_nid, var_variable);
 }
-var4;
 {
 { /* Inline scope#AParam#variable= (self,var_variable) on <self:AParam> */
 self->attrs[COLOR_scope__AParam___variable].val = var_variable; /* _variable on <self:AParam> */
-RET_LABEL5:(void)0;
+RET_LABEL6:(void)0;
 }
 }
 RET_LABEL:;
@@ -1883,38 +2252,55 @@ RET_LABEL:;
 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 var4 /* : 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 <self:AVardeclExpr>*/;
 }
 {
-var = parser_nodes__AVardeclExpr__n_id(self);
+{ /* Inline parser_nodes#AVardeclExpr#n_id (self) on <self:AVardeclExpr> */
+var2 = self->attrs[COLOR_parser_nodes__AVardeclExpr___n_id].val; /* _n_id on <self:AVardeclExpr> */
+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);
+var3 = NEW_scope__Variable(&type_scope__Variable);
 {
-var2 = lexer_work__Token__text(var_nid);
+var4 = lexer_work__Token__text(var_nid);
 }
 {
-{ /* Inline scope#Variable#init (var1,var2) on <var1:Variable> */
-var1->attrs[COLOR_scope__Variable___name].val = var2; /* _name on <var1:Variable> */
-RET_LABEL3:(void)0;
+((void (*)(val*, val*))(var3->class->vft[COLOR_scope__Variable__name_61d]))(var3, var4) /* name= on <var3:Variable>*/;
+}
+{
+((void (*)(val*))(var3->class->vft[COLOR_kernel__Object__init]))(var3) /* init on <var3:Variable>*/;
 }
+var_variable = var3;
+{
+var5 = scope__ScopeVisitor__register_variable(var_v, var_nid, var_variable);
 }
-var_variable = var1;
+var6 = 1;
 {
-var4 = scope__ScopeVisitor__register_variable(var_v, var_nid, var_variable);
+{ /* Inline scope#Variable#warn_unread= (var_variable,var6) on <var_variable:Variable> */
+var_variable->attrs[COLOR_scope__Variable___warn_unread].s = var6; /* _warn_unread on <var_variable:Variable> */
+RET_LABEL7:(void)0;
+}
 }
-var4;
 {
 { /* Inline scope#AVardeclExpr#variable= (self,var_variable) on <self:AVardeclExpr> */
 self->attrs[COLOR_scope__AVardeclExpr___variable].val = var_variable; /* _variable on <self:AVardeclExpr> */
-RET_LABEL5:(void)0;
+RET_LABEL8:(void)0;
 }
 }
 RET_LABEL:;
@@ -1951,7 +2337,7 @@ var_v = p0;
 var2 = var_v->attrs[COLOR_scope__ScopeVisitor___selfvariable].val; /* _selfvariable on <var_v:ScopeVisitor> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _selfvariable");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 71);
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 72);
 show_backtrace(1);
 }
 var = var2;
@@ -1971,22 +2357,22 @@ 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 <self:Object(ASelfExpr)>*/
 RET_LABEL:;
 }
-/* method scope#AContinueExpr#escapemark for (self: AContinueExpr): nullable EscapeMark */
-val* scope__AContinueExpr__escapemark(val* self) {
+/* 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___escapemark].val; /* _escapemark on <self:AContinueExpr> */
+var1 = self->attrs[COLOR_scope__AEscapeExpr___escapemark].val; /* _escapemark on <self:AEscapeExpr> */
 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 */;
 val* var3 /* : nullable EscapeMark */;
-{ /* Inline scope#AContinueExpr#escapemark (self) on <self:Object(AContinueExpr)> */
-var3 = self->attrs[COLOR_scope__AContinueExpr___escapemark].val; /* _escapemark on <self:Object(AContinueExpr)> */
+{ /* Inline scope#AEscapeExpr#escapemark (self) on <self:Object(AEscapeExpr)> */
+var3 = self->attrs[COLOR_scope__AEscapeExpr___escapemark].val; /* _escapemark on <self:Object(AEscapeExpr)> */
 var1 = var3;
 RET_LABEL2:(void)0;
 }
@@ -1994,15 +2380,15 @@ 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___escapemark].val = p0; /* _escapemark on <self:AContinueExpr> */
+/* 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 <self:AEscapeExpr> */
 RET_LABEL:;
 }
-/* method scope#AContinueExpr#escapemark= for (self: Object, nullable EscapeMark) */
-void VIRTUAL_scope__AContinueExpr__escapemark_61d(val* self, val* p0) {
-{ /* Inline scope#AContinueExpr#escapemark= (self,p0) on <self:Object(AContinueExpr)> */
-self->attrs[COLOR_scope__AContinueExpr___escapemark].val = p0; /* _escapemark on <self:Object(AContinueExpr)> */
+/* 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:Object(AEscapeExpr)> */
+self->attrs[COLOR_scope__AEscapeExpr___escapemark].val = p0; /* _escapemark on <self:Object(AEscapeExpr)> */
 RET_LABEL1:(void)0;
 }
 RET_LABEL:;
@@ -2011,104 +2397,137 @@ RET_LABEL:;
 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* var_other /* var other: nullable Object */;
+val* var4 /* : null */;
+short int var5 /* : Bool */;
 short int var6 /* : Bool */;
+val* var_other /* var other: nullable Object */;
 short int var8 /* : Bool */;
-short int var9 /* : Bool */;
-short int var11 /* : Bool */;
-short int var12 /* : 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* var13 /* : String */;
-char* var14 /* : NativeString */;
-long var15 /* : Int */;
-val* var16 /* : FlatString */;
-val* var17 /* : Array[AContinueExpr] */;
-val* var19 /* : 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 <self:AContinueExpr>*/;
 }
 {
-var = parser_nodes__ALabelable__n_label(self);
+{ /* Inline parser_nodes#ALabelable#n_label (self) on <self:AContinueExpr> */
+var2 = self->attrs[COLOR_parser_nodes__ALabelable___n_label].val; /* _n_label on <self:AContinueExpr> */
+var = var2;
+RET_LABEL1:(void)0;
+}
 }
 {
-var1 = scope__ScopeVisitor__get_escapemark(var_v, self, var);
+var3 = scope__ScopeVisitor__get_escapemark(var_v, self, var);
 }
-var_escapemark = var1;
-var2 = NULL;
+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 (0) {
-{ /* Inline kernel#Object#== (var_escapemark,var2) on <var_escapemark:nullable EscapeMark> */
-var_other = var2;
+{ /* Inline kernel#Object#== (var_escapemark,var4) on <var_escapemark:nullable EscapeMark> */
+var_other = var4;
 {
 { /* Inline kernel#Object#is_same_instance (var_escapemark,var_other) on <var_escapemark:nullable EscapeMark(EscapeMark)> */
-var8 = var_escapemark == var_other;
+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;
 }
-var4 = var6;
-goto RET_LABEL5;
-RET_LABEL5:(void)0;
-}
-var3 = var4;
-}
-if (var3){
+if (var5){
 goto RET_LABEL;
 } else {
 }
 {
-{ /* Inline scope#EscapeMark#for_loop (var_escapemark) on <var_escapemark:nullable EscapeMark(EscapeMark)> */
-var11 = var_escapemark->attrs[COLOR_scope__EscapeMark___for_loop].s; /* _for_loop on <var_escapemark:nullable EscapeMark(EscapeMark)> */
-var9 = var11;
-RET_LABEL10:(void)0;
+{ /* Inline scope#EscapeMark#continue_mark (var_escapemark) on <var_escapemark:nullable EscapeMark(EscapeMark)> */
+var13 = var_escapemark->attrs[COLOR_scope__EscapeMark___continue_mark].val; /* _continue_mark on <var_escapemark:nullable EscapeMark(EscapeMark)> */
+var11 = var13;
+RET_LABEL12:(void)0;
 }
 }
-var12 = !var9;
-if (var12){
-if (varonce) {
-var13 = varonce;
+var_escapemark = var11;
+var14 = NULL;
+if (var_escapemark == NULL) {
+var15 = 1; /* is null */
 } else {
-var14 = "Error: cannot \'continue\', only \'break\'.";
-var15 = 39;
-var16 = string__NativeString__to_s_with_length(var14, var15);
-var13 = var16;
-varonce = var13;
+var15 = 0; /* arg is null but recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#== (var_escapemark,var14) on <var_escapemark:nullable EscapeMark> */
+var_other = var14;
 {
-scope__ScopeVisitor__error(var_v, self, var13); /* Direct call scope#ScopeVisitor#error on <var_v:ScopeVisitor>*/
+{ /* Inline kernel#Object#is_same_instance (var_escapemark,var_other) on <var_escapemark:nullable EscapeMark(EscapeMark)> */
+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) {
+var21 = varonce;
 } else {
+var22 = "Error: cannot \'continue\', only \'break\'.";
+var23 = 39;
+var24 = string__NativeString__to_s_with_length(var22, var23);
+var21 = var24;
+varonce = var21;
 }
 {
-{ /* Inline scope#EscapeMark#continues (var_escapemark) on <var_escapemark:nullable EscapeMark(EscapeMark)> */
-var19 = var_escapemark->attrs[COLOR_scope__EscapeMark___continues].val; /* _continues on <var_escapemark:nullable EscapeMark(EscapeMark)> */
-if (unlikely(var19 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _continues");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 53);
+scope__ScopeVisitor__error(var_v, self, var21); /* Direct call scope#ScopeVisitor#error on <var_v:ScopeVisitor>*/
+}
+goto RET_LABEL;
+} else {
+}
+{
+{ /* Inline scope#EscapeMark#escapes (var_escapemark) on <var_escapemark:nullable EscapeMark(EscapeMark)> */
+var27 = var_escapemark->attrs[COLOR_scope__EscapeMark___escapes].val; /* _escapes on <var_escapemark:nullable EscapeMark(EscapeMark)> */
+if (unlikely(var27 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _escapes");
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 57);
 show_backtrace(1);
 }
-var17 = var19;
-RET_LABEL18:(void)0;
+var25 = var27;
+RET_LABEL26:(void)0;
 }
 }
 {
-array__Array__add(var17, self); /* Direct call array#Array#add on <var17:Array[AContinueExpr]>*/
+array__Array__add(var25, self); /* Direct call array#Array#add on <var25:Array[AEscapeExpr]>*/
 }
 {
-{ /* Inline scope#AContinueExpr#escapemark= (self,var_escapemark) on <self:AContinueExpr> */
-self->attrs[COLOR_scope__AContinueExpr___escapemark].val = var_escapemark; /* _escapemark on <self:AContinueExpr> */
-RET_LABEL20:(void)0;
+{ /* Inline scope#AEscapeExpr#escapemark= (self,var_escapemark) on <self:AContinueExpr> */
+self->attrs[COLOR_scope__AEscapeExpr___escapemark].val = var_escapemark; /* _escapemark on <self:AContinueExpr> */
+RET_LABEL28:(void)0;
 }
 }
 RET_LABEL:;
@@ -2118,113 +2537,82 @@ 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 <self:Object(AContinueExpr)>*/
 RET_LABEL:;
 }
-/* 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___escapemark].val; /* _escapemark on <self:ABreakExpr> */
-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 */;
-val* var3 /* : nullable EscapeMark */;
-{ /* Inline scope#ABreakExpr#escapemark (self) on <self:Object(ABreakExpr)> */
-var3 = self->attrs[COLOR_scope__ABreakExpr___escapemark].val; /* _escapemark on <self:Object(ABreakExpr)> */
-var1 = var3;
-RET_LABEL2:(void)0;
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method scope#ABreakExpr#escapemark= for (self: ABreakExpr, nullable EscapeMark) */
-void scope__ABreakExpr__escapemark_61d(val* self, val* p0) {
-self->attrs[COLOR_scope__ABreakExpr___escapemark].val = p0; /* _escapemark on <self:ABreakExpr> */
-RET_LABEL:;
-}
-/* method scope#ABreakExpr#escapemark= for (self: Object, nullable EscapeMark) */
-void VIRTUAL_scope__ABreakExpr__escapemark_61d(val* self, val* p0) {
-{ /* Inline scope#ABreakExpr#escapemark= (self,p0) on <self:Object(ABreakExpr)> */
-self->attrs[COLOR_scope__ABreakExpr___escapemark].val = p0; /* _escapemark on <self:Object(ABreakExpr)> */
-RET_LABEL1:(void)0;
-}
-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 */;
-short int var4 /* : Bool */;
-val* var_other /* var other: nullable Object */;
+val* var4 /* : null */;
+short int var5 /* : Bool */;
 short int var6 /* : Bool */;
+val* var_other /* var other: nullable Object */;
 short int var8 /* : Bool */;
-val* var9 /* : Array[ABreakExpr] */;
-val* var11 /* : Array[ABreakExpr] */;
+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 <self:ABreakExpr>*/;
 }
 {
-var = parser_nodes__ALabelable__n_label(self);
+{ /* Inline parser_nodes#ALabelable#n_label (self) on <self:ABreakExpr> */
+var2 = self->attrs[COLOR_parser_nodes__ALabelable___n_label].val; /* _n_label on <self:ABreakExpr> */
+var = var2;
+RET_LABEL1:(void)0;
+}
 }
 {
-var1 = scope__ScopeVisitor__get_escapemark(var_v, self, var);
+var3 = scope__ScopeVisitor__get_escapemark(var_v, self, var);
 }
-var_escapemark = var1;
-var2 = NULL;
+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 (0) {
-{ /* Inline kernel#Object#== (var_escapemark,var2) on <var_escapemark:nullable EscapeMark> */
-var_other = var2;
+{ /* Inline kernel#Object#== (var_escapemark,var4) on <var_escapemark:nullable EscapeMark> */
+var_other = var4;
 {
 { /* Inline kernel#Object#is_same_instance (var_escapemark,var_other) on <var_escapemark:nullable EscapeMark(EscapeMark)> */
-var8 = var_escapemark == var_other;
+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;
 }
-var4 = var6;
-goto RET_LABEL5;
-RET_LABEL5:(void)0;
-}
-var3 = var4;
-}
-if (var3){
+if (var5){
 goto RET_LABEL;
 } else {
 }
 {
-{ /* Inline scope#EscapeMark#breaks (var_escapemark) on <var_escapemark:nullable EscapeMark(EscapeMark)> */
-var11 = var_escapemark->attrs[COLOR_scope__EscapeMark___breaks].val; /* _breaks on <var_escapemark:nullable EscapeMark(EscapeMark)> */
-if (unlikely(var11 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _breaks");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 56);
+{ /* Inline scope#EscapeMark#escapes (var_escapemark) on <var_escapemark:nullable EscapeMark(EscapeMark)> */
+var13 = var_escapemark->attrs[COLOR_scope__EscapeMark___escapes].val; /* _escapes on <var_escapemark:nullable EscapeMark(EscapeMark)> */
+if (unlikely(var13 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _escapes");
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 57);
 show_backtrace(1);
 }
-var9 = var11;
-RET_LABEL10:(void)0;
+var11 = var13;
+RET_LABEL12:(void)0;
 }
 }
 {
-array__Array__add(var9, self); /* Direct call array#Array#add on <var9:Array[ABreakExpr]>*/
+array__Array__add(var11, self); /* Direct call array#Array#add on <var11:Array[AEscapeExpr]>*/
 }
 {
-{ /* Inline scope#ABreakExpr#escapemark= (self,var_escapemark) on <self:ABreakExpr> */
-self->attrs[COLOR_scope__ABreakExpr___escapemark].val = var_escapemark; /* _escapemark on <self:ABreakExpr> */
-RET_LABEL12:(void)0;
+{ /* Inline scope#AEscapeExpr#escapemark= (self,var_escapemark) on <self:ABreakExpr> */
+self->attrs[COLOR_scope__AEscapeExpr___escapemark].val = var_escapemark; /* _escapemark on <self:ABreakExpr> */
+RET_LABEL14:(void)0;
 }
 }
 RET_LABEL:;
@@ -2234,22 +2622,22 @@ void VIRTUAL_scope__ABreakExpr__accept_scope_visitor(val* self, val* p0) {
 scope__ABreakExpr__accept_scope_visitor(self, p0); /* Direct call scope#ABreakExpr#accept_scope_visitor on <self:Object(ABreakExpr)>*/
 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___escapemark].val; /* _escapemark on <self:ADoExpr> */
+var1 = self->attrs[COLOR_scope__ADoExpr___break_mark].val; /* _break_mark on <self:ADoExpr> */
 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 */;
 val* var3 /* : nullable EscapeMark */;
-{ /* Inline scope#ADoExpr#escapemark (self) on <self:Object(ADoExpr)> */
-var3 = self->attrs[COLOR_scope__ADoExpr___escapemark].val; /* _escapemark on <self:Object(ADoExpr)> */
+{ /* Inline scope#ADoExpr#break_mark (self) on <self:Object(ADoExpr)> */
+var3 = self->attrs[COLOR_scope__ADoExpr___break_mark].val; /* _break_mark on <self:Object(ADoExpr)> */
 var1 = var3;
 RET_LABEL2:(void)0;
 }
@@ -2257,15 +2645,15 @@ 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___escapemark].val = p0; /* _escapemark on <self:ADoExpr> */
+/* 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 <self:ADoExpr> */
 RET_LABEL:;
 }
-/* method scope#ADoExpr#escapemark= for (self: Object, nullable EscapeMark) */
-void VIRTUAL_scope__ADoExpr__escapemark_61d(val* self, val* p0) {
-{ /* Inline scope#ADoExpr#escapemark= (self,p0) on <self:Object(ADoExpr)> */
-self->attrs[COLOR_scope__ADoExpr___escapemark].val = p0; /* _escapemark on <self:Object(ADoExpr)> */
+/* 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:Object(ADoExpr)> */
+self->attrs[COLOR_scope__ADoExpr___break_mark].val = p0; /* _break_mark on <self:Object(ADoExpr)> */
 RET_LABEL1:(void)0;
 }
 RET_LABEL:;
@@ -2274,37 +2662,47 @@ RET_LABEL:;
 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* var4 /* : nullable AExpr */;
-val* var5 /* : nullable EscapeMark */;
-val* var7 /* : 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 = parser_nodes__ALabelable__n_label(self);
+{ /* Inline parser_nodes#ALabelable#n_label (self) on <self:ADoExpr> */
+var2 = self->attrs[COLOR_parser_nodes__ALabelable___n_label].val; /* _n_label on <self:ADoExpr> */
+var = var2;
+RET_LABEL1:(void)0;
 }
-var1 = 0;
+}
+var3 = 0;
 {
-var2 = scope__ScopeVisitor__make_escape_mark(var_v, var, var1);
+var4 = scope__ScopeVisitor__make_escape_mark(var_v, var, var3);
 }
 {
-{ /* Inline scope#ADoExpr#escapemark= (self,var2) on <self:ADoExpr> */
-self->attrs[COLOR_scope__ADoExpr___escapemark].val = var2; /* _escapemark on <self:ADoExpr> */
-RET_LABEL3:(void)0;
+{ /* Inline scope#ADoExpr#break_mark= (self,var4) on <self:ADoExpr> */
+self->attrs[COLOR_scope__ADoExpr___break_mark].val = var4; /* _break_mark on <self:ADoExpr> */
+RET_LABEL5:(void)0;
 }
 }
 {
-var4 = parser_nodes__ADoExpr__n_block(self);
+{ /* Inline parser_nodes#ADoExpr#n_block (self) on <self:ADoExpr> */
+var8 = self->attrs[COLOR_parser_nodes__ADoExpr___n_block].val; /* _n_block on <self:ADoExpr> */
+var6 = var8;
+RET_LABEL7:(void)0;
+}
 }
 {
-{ /* Inline scope#ADoExpr#escapemark (self) on <self:ADoExpr> */
-var7 = self->attrs[COLOR_scope__ADoExpr___escapemark].val; /* _escapemark on <self:ADoExpr> */
-var5 = var7;
-RET_LABEL6:(void)0;
+{ /* Inline scope#ADoExpr#break_mark (self) on <self:ADoExpr> */
+var11 = self->attrs[COLOR_scope__ADoExpr___break_mark].val; /* _break_mark on <self:ADoExpr> */
+var9 = var11;
+RET_LABEL10:(void)0;
 }
 }
 {
-scope__ScopeVisitor__enter_visit_block(var_v, var4, var5); /* Direct call scope#ScopeVisitor#enter_visit_block on <var_v:ScopeVisitor>*/
+scope__ScopeVisitor__enter_visit_block(var_v, var6, var9); /* Direct call scope#ScopeVisitor#enter_visit_block on <var_v:ScopeVisitor>*/
 }
 RET_LABEL:;
 }
@@ -2317,30 +2715,50 @@ RET_LABEL:;
 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 = parser_nodes__AIfExpr__n_expr(self);
+{ /* Inline parser_nodes#AIfExpr#n_expr (self) on <self:AIfExpr> */
+var2 = self->attrs[COLOR_parser_nodes__AIfExpr___n_expr].val; /* _n_expr on <self:AIfExpr> */
+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 <var_v:ScopeVisitor>*/
 }
 {
-var1 = parser_nodes__AIfExpr__n_then(self);
+{ /* Inline parser_nodes#AIfExpr#n_then (self) on <self:AIfExpr> */
+var5 = self->attrs[COLOR_parser_nodes__AIfExpr___n_then].val; /* _n_then on <self:AIfExpr> */
+var3 = var5;
+RET_LABEL4:(void)0;
+}
 }
-var2 = NULL;
+var6 = NULL;
 {
-scope__ScopeVisitor__enter_visit_block(var_v, var1, var2); /* Direct call scope#ScopeVisitor#enter_visit_block on <var_v:ScopeVisitor>*/
+scope__ScopeVisitor__enter_visit_block(var_v, var3, var6); /* Direct call scope#ScopeVisitor#enter_visit_block on <var_v:ScopeVisitor>*/
 }
 {
-var3 = parser_nodes__AIfExpr__n_else(self);
+{ /* Inline parser_nodes#AIfExpr#n_else (self) on <self:AIfExpr> */
+var9 = self->attrs[COLOR_parser_nodes__AIfExpr___n_else].val; /* _n_else on <self:AIfExpr> */
+var7 = var9;
+RET_LABEL8:(void)0;
 }
-var4 = NULL;
+}
+var10 = NULL;
 {
-scope__ScopeVisitor__enter_visit_block(var_v, var3, var4); /* Direct call scope#ScopeVisitor#enter_visit_block on <var_v:ScopeVisitor>*/
+scope__ScopeVisitor__enter_visit_block(var_v, var7, var10); /* Direct call scope#ScopeVisitor#enter_visit_block on <var_v:ScopeVisitor>*/
 }
 RET_LABEL:;
 }
@@ -2349,22 +2767,22 @@ void VIRTUAL_scope__AIfExpr__accept_scope_visitor(val* self, val* p0) {
 scope__AIfExpr__accept_scope_visitor(self, p0); /* Direct call scope#AIfExpr#accept_scope_visitor on <self:Object(AIfExpr)>*/
 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___escapemark].val; /* _escapemark on <self:AWhileExpr> */
+var1 = self->attrs[COLOR_scope__AWhileExpr___break_mark].val; /* _break_mark on <self:AWhileExpr> */
 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 */;
 val* var3 /* : nullable EscapeMark */;
-{ /* Inline scope#AWhileExpr#escapemark (self) on <self:Object(AWhileExpr)> */
-var3 = self->attrs[COLOR_scope__AWhileExpr___escapemark].val; /* _escapemark on <self:Object(AWhileExpr)> */
+{ /* Inline scope#AWhileExpr#break_mark (self) on <self:Object(AWhileExpr)> */
+var3 = self->attrs[COLOR_scope__AWhileExpr___break_mark].val; /* _break_mark on <self:Object(AWhileExpr)> */
 var1 = var3;
 RET_LABEL2:(void)0;
 }
@@ -2372,15 +2790,51 @@ 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___escapemark].val = p0; /* _escapemark on <self:AWhileExpr> */
+/* 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 <self:AWhileExpr> */
 RET_LABEL:;
 }
-/* method scope#AWhileExpr#escapemark= for (self: Object, nullable EscapeMark) */
-void VIRTUAL_scope__AWhileExpr__escapemark_61d(val* self, val* p0) {
-{ /* Inline scope#AWhileExpr#escapemark= (self,p0) on <self:Object(AWhileExpr)> */
-self->attrs[COLOR_scope__AWhileExpr___escapemark].val = p0; /* _escapemark on <self:Object(AWhileExpr)> */
+/* 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:Object(AWhileExpr)> */
+self->attrs[COLOR_scope__AWhileExpr___break_mark].val = p0; /* _break_mark on <self:Object(AWhileExpr)> */
+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 <self:AWhileExpr> */
+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 <self:Object(AWhileExpr)> */
+var3 = self->attrs[COLOR_scope__AWhileExpr___continue_mark].val; /* _continue_mark on <self:Object(AWhileExpr)> */
+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 <self:AWhileExpr> */
+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:Object(AWhileExpr)> */
+self->attrs[COLOR_scope__AWhileExpr___continue_mark].val = p0; /* _continue_mark on <self:Object(AWhileExpr)> */
 RET_LABEL1:(void)0;
 }
 RET_LABEL:;
@@ -2389,37 +2843,72 @@ RET_LABEL:;
 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* var4 /* : AExpr */;
-val* var5 /* : 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 = parser_nodes__ALabelable__n_label(self);
+{ /* Inline parser_nodes#ALabelable#n_label (self) on <self:AWhileExpr> */
+var2 = self->attrs[COLOR_parser_nodes__ALabelable___n_label].val; /* _n_label on <self:AWhileExpr> */
+var = var2;
+RET_LABEL1:(void)0;
 }
-var1 = 1;
+}
+var3 = 1;
 {
-var2 = scope__ScopeVisitor__make_escape_mark(var_v, var, var1);
+var4 = scope__ScopeVisitor__make_escape_mark(var_v, var, var3);
 }
-var_escapemark = var2;
+var_escapemark = var4;
 {
-{ /* Inline scope#AWhileExpr#escapemark= (self,var_escapemark) on <self:AWhileExpr> */
-self->attrs[COLOR_scope__AWhileExpr___escapemark].val = var_escapemark; /* _escapemark on <self:AWhileExpr> */
-RET_LABEL3:(void)0;
+{ /* Inline scope#AWhileExpr#break_mark= (self,var_escapemark) on <self:AWhileExpr> */
+self->attrs[COLOR_scope__AWhileExpr___break_mark].val = var_escapemark; /* _break_mark on <self:AWhileExpr> */
+RET_LABEL5:(void)0;
+}
+}
+{
+{ /* Inline scope#EscapeMark#continue_mark (var_escapemark) on <var_escapemark:EscapeMark> */
+var8 = var_escapemark->attrs[COLOR_scope__EscapeMark___continue_mark].val; /* _continue_mark on <var_escapemark:EscapeMark> */
+var6 = var8;
+RET_LABEL7:(void)0;
+}
+}
+{
+{ /* Inline scope#AWhileExpr#continue_mark= (self,var6) on <self:AWhileExpr> */
+self->attrs[COLOR_scope__AWhileExpr___continue_mark].val = var6; /* _continue_mark on <self:AWhileExpr> */
+RET_LABEL9:(void)0;
 }
 }
 {
-var4 = parser_nodes__AWhileExpr__n_expr(self);
+{ /* Inline parser_nodes#AWhileExpr#n_expr (self) on <self:AWhileExpr> */
+var12 = self->attrs[COLOR_parser_nodes__AWhileExpr___n_expr].val; /* _n_expr on <self:AWhileExpr> */
+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, var4); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:ScopeVisitor>*/
+parser_nodes__Visitor__enter_visit(var_v, var10); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:ScopeVisitor>*/
 }
 {
-var5 = parser_nodes__AWhileExpr__n_block(self);
+{ /* Inline parser_nodes#AWhileExpr#n_block (self) on <self:AWhileExpr> */
+var15 = self->attrs[COLOR_parser_nodes__AWhileExpr___n_block].val; /* _n_block on <self:AWhileExpr> */
+var13 = var15;
+RET_LABEL14:(void)0;
+}
 }
 {
-scope__ScopeVisitor__enter_visit_block(var_v, var5, var_escapemark); /* Direct call scope#ScopeVisitor#enter_visit_block on <var_v:ScopeVisitor>*/
+scope__ScopeVisitor__enter_visit_block(var_v, var13, var_escapemark); /* Direct call scope#ScopeVisitor#enter_visit_block on <var_v:ScopeVisitor>*/
 }
 RET_LABEL:;
 }
@@ -2428,22 +2917,22 @@ void VIRTUAL_scope__AWhileExpr__accept_scope_visitor(val* self, val* p0) {
 scope__AWhileExpr__accept_scope_visitor(self, p0); /* Direct call scope#AWhileExpr#accept_scope_visitor on <self:Object(AWhileExpr)>*/
 RET_LABEL:;
 }
-/* method scope#ALoopExpr#escapemark for (self: ALoopExpr): nullable EscapeMark */
-val* scope__ALoopExpr__escapemark(val* self) {
+/* 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___escapemark].val; /* _escapemark on <self:ALoopExpr> */
+var1 = self->attrs[COLOR_scope__ALoopExpr___break_mark].val; /* _break_mark on <self:ALoopExpr> */
 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#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#escapemark (self) on <self:Object(ALoopExpr)> */
-var3 = self->attrs[COLOR_scope__ALoopExpr___escapemark].val; /* _escapemark on <self:Object(ALoopExpr)> */
+{ /* Inline scope#ALoopExpr#break_mark (self) on <self:Object(ALoopExpr)> */
+var3 = self->attrs[COLOR_scope__ALoopExpr___break_mark].val; /* _break_mark on <self:Object(ALoopExpr)> */
 var1 = var3;
 RET_LABEL2:(void)0;
 }
@@ -2451,15 +2940,51 @@ 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___escapemark].val = p0; /* _escapemark on <self:ALoopExpr> */
+/* 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 <self:ALoopExpr> */
 RET_LABEL:;
 }
-/* method scope#ALoopExpr#escapemark= for (self: Object, nullable EscapeMark) */
-void VIRTUAL_scope__ALoopExpr__escapemark_61d(val* self, val* p0) {
-{ /* Inline scope#ALoopExpr#escapemark= (self,p0) on <self:Object(ALoopExpr)> */
-self->attrs[COLOR_scope__ALoopExpr___escapemark].val = p0; /* _escapemark on <self:Object(ALoopExpr)> */
+/* 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:Object(ALoopExpr)> */
+self->attrs[COLOR_scope__ALoopExpr___break_mark].val = p0; /* _break_mark on <self:Object(ALoopExpr)> */
+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___continue_mark].val; /* _continue_mark on <self:ALoopExpr> */
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* 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 */;
+val* var3 /* : nullable EscapeMark */;
+{ /* Inline scope#ALoopExpr#continue_mark (self) on <self:Object(ALoopExpr)> */
+var3 = self->attrs[COLOR_scope__ALoopExpr___continue_mark].val; /* _continue_mark on <self:Object(ALoopExpr)> */
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* 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 <self:ALoopExpr> */
+RET_LABEL:;
+}
+/* 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:Object(ALoopExpr)> */
+self->attrs[COLOR_scope__ALoopExpr___continue_mark].val = p0; /* _continue_mark on <self:Object(ALoopExpr)> */
 RET_LABEL1:(void)0;
 }
 RET_LABEL:;
@@ -2468,30 +2993,55 @@ RET_LABEL:;
 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* var4 /* : nullable AExpr */;
+val* var6 /* : nullable EscapeMark */;
+val* var8 /* : nullable EscapeMark */;
+val* var10 /* : nullable AExpr */;
+val* var12 /* : nullable AExpr */;
 var_v = p0;
 {
-var = parser_nodes__ALabelable__n_label(self);
+{ /* Inline parser_nodes#ALabelable#n_label (self) on <self:ALoopExpr> */
+var2 = self->attrs[COLOR_parser_nodes__ALabelable___n_label].val; /* _n_label on <self:ALoopExpr> */
+var = var2;
+RET_LABEL1:(void)0;
+}
 }
-var1 = 1;
+var3 = 1;
 {
-var2 = scope__ScopeVisitor__make_escape_mark(var_v, var, var1);
+var4 = scope__ScopeVisitor__make_escape_mark(var_v, var, var3);
 }
-var_escapemark = var2;
+var_escapemark = var4;
 {
-{ /* Inline scope#ALoopExpr#escapemark= (self,var_escapemark) on <self:ALoopExpr> */
-self->attrs[COLOR_scope__ALoopExpr___escapemark].val = var_escapemark; /* _escapemark on <self:ALoopExpr> */
-RET_LABEL3:(void)0;
+{ /* Inline scope#ALoopExpr#break_mark= (self,var_escapemark) on <self:ALoopExpr> */
+self->attrs[COLOR_scope__ALoopExpr___break_mark].val = var_escapemark; /* _break_mark on <self:ALoopExpr> */
+RET_LABEL5:(void)0;
+}
+}
+{
+{ /* Inline scope#EscapeMark#continue_mark (var_escapemark) on <var_escapemark:EscapeMark> */
+var8 = var_escapemark->attrs[COLOR_scope__EscapeMark___continue_mark].val; /* _continue_mark on <var_escapemark:EscapeMark> */
+var6 = var8;
+RET_LABEL7:(void)0;
+}
+}
+{
+{ /* Inline scope#ALoopExpr#continue_mark= (self,var6) on <self:ALoopExpr> */
+self->attrs[COLOR_scope__ALoopExpr___continue_mark].val = var6; /* _continue_mark on <self:ALoopExpr> */
+RET_LABEL9:(void)0;
 }
 }
 {
-var4 = parser_nodes__ALoopExpr__n_block(self);
+{ /* Inline parser_nodes#ALoopExpr#n_block (self) on <self:ALoopExpr> */
+var12 = self->attrs[COLOR_parser_nodes__ALoopExpr___n_block].val; /* _n_block on <self:ALoopExpr> */
+var10 = var12;
+RET_LABEL11:(void)0;
+}
 }
 {
-scope__ScopeVisitor__enter_visit_block(var_v, var4, var_escapemark); /* Direct call scope#ScopeVisitor#enter_visit_block on <var_v:ScopeVisitor>*/
+scope__ScopeVisitor__enter_visit_block(var_v, var10, var_escapemark); /* Direct call scope#ScopeVisitor#enter_visit_block on <var_v:ScopeVisitor>*/
 }
 RET_LABEL:;
 }
@@ -2536,22 +3086,22 @@ 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___escapemark].val; /* _escapemark on <self:AForExpr> */
+var1 = self->attrs[COLOR_scope__AForExpr___break_mark].val; /* _break_mark on <self:AForExpr> */
 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 */;
 val* var3 /* : nullable EscapeMark */;
-{ /* Inline scope#AForExpr#escapemark (self) on <self:Object(AForExpr)> */
-var3 = self->attrs[COLOR_scope__AForExpr___escapemark].val; /* _escapemark on <self:Object(AForExpr)> */
+{ /* Inline scope#AForExpr#break_mark (self) on <self:Object(AForExpr)> */
+var3 = self->attrs[COLOR_scope__AForExpr___break_mark].val; /* _break_mark on <self:Object(AForExpr)> */
 var1 = var3;
 RET_LABEL2:(void)0;
 }
@@ -2559,15 +3109,51 @@ 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___escapemark].val = p0; /* _escapemark on <self:AForExpr> */
+/* 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 <self:AForExpr> */
 RET_LABEL:;
 }
-/* method scope#AForExpr#escapemark= for (self: Object, nullable EscapeMark) */
-void VIRTUAL_scope__AForExpr__escapemark_61d(val* self, val* p0) {
-{ /* Inline scope#AForExpr#escapemark= (self,p0) on <self:Object(AForExpr)> */
-self->attrs[COLOR_scope__AForExpr___escapemark].val = p0; /* _escapemark on <self:Object(AForExpr)> */
+/* 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:Object(AForExpr)> */
+self->attrs[COLOR_scope__AForExpr___break_mark].val = p0; /* _break_mark on <self:Object(AForExpr)> */
+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 <self:AForExpr> */
+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 <self:Object(AForExpr)> */
+var3 = self->attrs[COLOR_scope__AForExpr___continue_mark].val; /* _continue_mark on <self:Object(AForExpr)> */
+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 <self:AForExpr> */
+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:Object(AForExpr)> */
+self->attrs[COLOR_scope__AForExpr___continue_mark].val = p0; /* _continue_mark on <self:Object(AForExpr)> */
 RET_LABEL1:(void)0;
 }
 RET_LABEL:;
@@ -2576,152 +3162,179 @@ RET_LABEL:;
 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 /* : AExpr */;
 val* var3 /* : List[Scope] */;
-val* var4 /* : Scope */;
-val* var6 /* : Array[Variable] */;
+val* var5 /* : List[Scope] */;
+val* var6 /* : Scope */;
+val* var7 /* : Array[Variable] */;
 val* var_variables /* var variables: Array[Variable] */;
-val* var8 /* : ANodes[TId] */;
-val* var10 /* : ANodes[TId] */;
-val* var11 /* : Iterator[ANode] */;
-short int var12 /* : Bool */;
-val* var13 /* : 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* var14 /* : Variable */;
-val* var15 /* : String */;
+val* var16 /* : Variable */;
+val* var17 /* : String */;
 val* var_va /* var va: Variable */;
-short int var17 /* : Bool */;
-val* var18 /* : nullable ALabel */;
-short int var19 /* : Bool */;
-val* var20 /* : 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* var22 /* : nullable AExpr */;
-val* var23 /* : List[Scope] */;
-val* var25 /* : List[Scope] */;
-val* var26 /* : nullable Object */;
+val* var26 /* : nullable EscapeMark */;
+val* var28 /* : nullable EscapeMark */;
+val* var30 /* : nullable AExpr */;
+val* var32 /* : nullable AExpr */;
 var_v = p0;
 {
-var = parser_nodes__AForExpr__n_expr(self);
+{ /* Inline parser_nodes#AForExpr#n_expr (self) on <self:AForExpr> */
+var2 = self->attrs[COLOR_parser_nodes__AForExpr___n_expr].val; /* _n_expr on <self:AForExpr> */
+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 <var_v:ScopeVisitor>*/
 }
 {
 { /* Inline scope#ScopeVisitor#scopes (var_v) on <var_v:ScopeVisitor> */
-var3 = var_v->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <var_v:ScopeVisitor> */
-if (unlikely(var3 == NULL)) {
+var5 = var_v->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <var_v:ScopeVisitor> */
+if (unlikely(var5 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 79);
+PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 80);
 show_backtrace(1);
 }
-var1 = var3;
-RET_LABEL2:(void)0;
+var3 = var5;
+RET_LABEL4:(void)0;
 }
 }
-var4 = NEW_scope__Scope(&type_scope__Scope);
+var6 = NEW_scope__Scope(&type_scope__Scope);
 {
-{ /* Inline scope#Scope#init (var4) on <var4:Scope> */
-RET_LABEL5:(void)0;
-}
+((void (*)(val*))(var6->class->vft[COLOR_kernel__Object__init]))(var6) /* init on <var6:Scope>*/;
 }
 {
-list__List__unshift(var1, var4); /* Direct call list#List#unshift on <var1:List[Scope]>*/
+list__List__unshift(var3, var6); /* Direct call list#List#unshift on <var3:List[Scope]>*/
 }
-var6 = NEW_array__Array(&type_array__Arrayscope__Variable);
+var7 = NEW_array__Array(&type_array__Arrayscope__Variable);
 {
-array__Array__init(var6); /* Direct call array#Array#init on <var6:Array[Variable]>*/
+((void (*)(val*))(var7->class->vft[COLOR_kernel__Object__init]))(var7) /* init on <var7:Array[Variable]>*/;
 }
-var_variables = var6;
+var_variables = var7;
 {
 { /* Inline scope#AForExpr#variables= (self,var_variables) on <self:AForExpr> */
 self->attrs[COLOR_scope__AForExpr___variables].val = var_variables; /* _variables on <self:AForExpr> */
-RET_LABEL7:(void)0;
+RET_LABEL8:(void)0;
 }
 }
 {
 { /* Inline parser_nodes#AForExpr#n_ids (self) on <self:AForExpr> */
-var10 = self->attrs[COLOR_parser_nodes__AForExpr___n_ids].val; /* _n_ids on <self:AForExpr> */
-if (unlikely(var10 == NULL)) {
+var11 = self->attrs[COLOR_parser_nodes__AForExpr___n_ids].val; /* _n_ids on <self:AForExpr> */
+if (unlikely(var11 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_ids");
-PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 1604);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1426);
 show_backtrace(1);
 }
-var8 = var10;
-RET_LABEL9:(void)0;
+var9 = var11;
+RET_LABEL10:(void)0;
 }
 }
+var_ = var9;
 {
-var11 = parser_nodes__ANodes__iterator(var8);
+var12 = parser_nodes__ANodes__iterator(var_);
 }
+var_13 = var12;
 for(;;) {
 {
-var12 = ((short int (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var11) /* is_ok on <var11:Iterator[ANode]>*/;
+var14 = ((short int (*)(val*))(var_13->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_13) /* is_ok on <var_13:Iterator[TId]>*/;
 }
-if(!var12) break;
+if (var14){
 {
-var13 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__item]))(var11) /* item on <var11:Iterator[ANode]>*/;
+var15 = ((val* (*)(val*))(var_13->class->vft[COLOR_abstract_collection__Iterator__item]))(var_13) /* item on <var_13:Iterator[TId]>*/;
 }
-var_nid = var13;
-var14 = NEW_scope__Variable(&type_scope__Variable);
+var_nid = var15;
+var16 = NEW_scope__Variable(&type_scope__Variable);
 {
-var15 = lexer_work__Token__text(var_nid);
+var17 = lexer_work__Token__text(var_nid);
 }
 {
-{ /* Inline scope#Variable#init (var14,var15) on <var14:Variable> */
-var14->attrs[COLOR_scope__Variable___name].val = var15; /* _name on <var14:Variable> */
-RET_LABEL16:(void)0;
+((void (*)(val*, val*))(var16->class->vft[COLOR_scope__Variable__name_61d]))(var16, var17) /* name= on <var16:Variable>*/;
 }
+{
+((void (*)(val*))(var16->class->vft[COLOR_kernel__Object__init]))(var16) /* init on <var16:Variable>*/;
 }
-var_va = var14;
+var_va = var16;
 {
-var17 = scope__ScopeVisitor__register_variable(var_v, var_nid, var_va);
+var18 = scope__ScopeVisitor__register_variable(var_v, var_nid, var_va);
 }
-var17;
 {
 array__Array__add(var_variables, var_va); /* Direct call array#Array#add on <var_variables:Array[Variable]>*/
 }
-CONTINUE_label: (void)0;
 {
-((void (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__next]))(var11) /* next on <var11:Iterator[ANode]>*/;
+((void (*)(val*))(var_13->class->vft[COLOR_abstract_collection__Iterator__next]))(var_13) /* next on <var_13:Iterator[TId]>*/;
+}
+} else {
+goto BREAK_label;
 }
 }
 BREAK_label: (void)0;
 {
-var18 = parser_nodes__ALabelable__n_label(self);
+{ /* Inline abstract_collection#Iterator#finish (var_13) on <var_13:Iterator[TId]> */
+RET_LABEL19:(void)0;
+}
+}
+{
+{ /* Inline parser_nodes#ALabelable#n_label (self) on <self:AForExpr> */
+var22 = self->attrs[COLOR_parser_nodes__ALabelable___n_label].val; /* _n_label on <self:AForExpr> */
+var20 = var22;
+RET_LABEL21:(void)0;
 }
-var19 = 1;
+}
+var23 = 1;
 {
-var20 = scope__ScopeVisitor__make_escape_mark(var_v, var18, var19);
+var24 = scope__ScopeVisitor__make_escape_mark(var_v, var20, var23);
 }
-var_escapemark = var20;
+var_escapemark = var24;
 {
-{ /* Inline scope#AForExpr#escapemark= (self,var_escapemark) on <self:AForExpr> */
-self->attrs[COLOR_scope__AForExpr___escapemark].val = var_escapemark; /* _escapemark on <self:AForExpr> */
-RET_LABEL21:(void)0;
+{ /* Inline scope#AForExpr#break_mark= (self,var_escapemark) on <self:AForExpr> */
+self->attrs[COLOR_scope__AForExpr___break_mark].val = var_escapemark; /* _break_mark on <self:AForExpr> */
+RET_LABEL25:(void)0;
 }
 }
 {
-var22 = parser_nodes__AForExpr__n_block(self);
+{ /* Inline scope#EscapeMark#continue_mark (var_escapemark) on <var_escapemark:EscapeMark> */
+var28 = var_escapemark->attrs[COLOR_scope__EscapeMark___continue_mark].val; /* _continue_mark on <var_escapemark:EscapeMark> */
+var26 = var28;
+RET_LABEL27:(void)0;
+}
 }
 {
-scope__ScopeVisitor__enter_visit_block(var_v, var22, var_escapemark); /* Direct call scope#ScopeVisitor#enter_visit_block on <var_v:ScopeVisitor>*/
+{ /* Inline scope#AForExpr#continue_mark= (self,var26) on <self:AForExpr> */
+self->attrs[COLOR_scope__AForExpr___continue_mark].val = var26; /* _continue_mark on <self:AForExpr> */
+RET_LABEL29:(void)0;
+}
 }
 {
-{ /* Inline scope#ScopeVisitor#scopes (var_v) on <var_v:ScopeVisitor> */
-var25 = var_v->attrs[COLOR_scope__ScopeVisitor___scopes].val; /* _scopes on <var_v:ScopeVisitor> */
-if (unlikely(var25 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _scopes");
-PRINT_ERROR(" (%s:%d)\n", "src/scope.nit", 79);
-show_backtrace(1);
+{ /* Inline parser_nodes#AForExpr#n_block (self) on <self:AForExpr> */
+var32 = self->attrs[COLOR_parser_nodes__AForExpr___n_block].val; /* _n_block on <self:AForExpr> */
+var30 = var32;
+RET_LABEL31:(void)0;
 }
-var23 = var25;
-RET_LABEL24:(void)0;
 }
+{
+scope__ScopeVisitor__enter_visit_block(var_v, var30, var_escapemark); /* Direct call scope#ScopeVisitor#enter_visit_block on <var_v:ScopeVisitor>*/
 }
 {
-var26 = list__List__shift(var23);
+scope__ScopeVisitor__shift_scope(var_v); /* Direct call scope#ScopeVisitor#shift_scope on <var_v:ScopeVisitor>*/
 }
-var26;
 RET_LABEL:;
 }
 /* method scope#AForExpr#accept_scope_visitor for (self: Object, ScopeVisitor) */
@@ -2769,176 +3382,216 @@ RET_LABEL:;
 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 */;
-val* var_other /* var other: nullable Object */;
-short int var9 /* : Bool */;
+val* var9 /* : null */;
 short int var10 /* : Bool */;
 short int var11 /* : Bool */;
-short int var12 /* : Bool */;
-val* var13 /* : AExprs */;
-val* var14 /* : ANodes[AExpr] */;
-val* var16 /* : ANodes[AExpr] */;
-short int var17 /* : Bool */;
-short int var18 /* : Bool */;
-short int var_ /* var : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var13 /* : Bool */;
+short int var14 /* : 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 /* : FlatString */;
-static val* varonce27;
-val* var28 /* : String */;
-char* var29 /* : NativeString */;
-long var30 /* : Int */;
-val* var31 /* : FlatString */;
-val* var32 /* : Array[Object] */;
+val* var31 /* : String */;
+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 = parser_nodes__ASendExpr__n_expr(self);
+{ /* Inline parser_nodes#ASendExpr#n_expr (self) on <self:ACallFormExpr> */
+var2 = self->attrs[COLOR_parser_nodes__ASendExpr___n_expr].val; /* _n_expr on <self:ACallFormExpr> */
+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;
+}
 }
 /* <var:AExpr> 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){
+if (var3){
 {
-var2 = parser_nodes__ACallFormExpr__n_id(self);
+{ /* Inline parser_nodes#ACallFormExpr#n_id (self) on <self:ACallFormExpr> */
+var6 = self->attrs[COLOR_parser_nodes__ACallFormExpr___n_id].val; /* _n_id on <self:ACallFormExpr> */
+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;
+}
 }
 {
-var3 = lexer_work__Token__text(var2);
+var7 = lexer_work__Token__text(var4);
 }
-var_name = var3;
+var_name = var7;
 {
-var4 = scope__ScopeVisitor__search_variable(var_v, var_name);
+var8 = scope__ScopeVisitor__search_variable(var_v, var_name);
 }
-var_variable = var4;
-var5 = NULL;
+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,var5) on <var_variable:nullable Variable> */
-var_other = var5;
+{ /* Inline kernel#Object#!= (var_variable,var9) on <var_variable:nullable Variable> */
+var_other = var9;
 {
-var10 = ((short int (*)(val*, val*))(var_variable->class->vft[COLOR_kernel__Object___61d_61d]))(var_variable, var_other) /* == on <var_variable:nullable Variable(Variable)>*/;
-var9 = var10;
+var14 = ((short int (*)(val*, val*))(var_variable->class->vft[COLOR_kernel__Object___61d_61d]))(var_variable, var_other) /* == on <var_variable:nullable Variable(Variable)>*/;
+var13 = var14;
 }
-var11 = !var9;
-var7 = var11;
-goto RET_LABEL8;
-RET_LABEL8:(void)0;
+var15 = !var13;
+var11 = var15;
+goto RET_LABEL12;
+RET_LABEL12:(void)0;
 }
-var6 = var7;
+var10 = var11;
 }
-if (var6){
+if (var10){
 {
-var13 = parser_nodes__ACallFormExpr__n_args(self);
+{ /* Inline parser_nodes#ACallFormExpr#n_args (self) on <self:ACallFormExpr> */
+var19 = self->attrs[COLOR_parser_nodes__ACallFormExpr___n_args].val; /* _n_args on <self:ACallFormExpr> */
+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 (var13) on <var13:AExprs> */
-var16 = var13->attrs[COLOR_parser_nodes__AExprs___n_exprs].val; /* _n_exprs on <var13:AExprs> */
-if (unlikely(var16 == NULL)) {
+{ /* Inline parser_nodes#AExprs#n_exprs (var17) on <var17:AExprs> */
+var22 = var17->attrs[COLOR_parser_nodes__AExprs___n_exprs].val; /* _n_exprs on <var17:AExprs> */
+if (unlikely(var22 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs");
-PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 2274);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1946);
 show_backtrace(1);
 }
-var14 = var16;
-RET_LABEL15:(void)0;
+var20 = var22;
+RET_LABEL21:(void)0;
 }
 }
 {
-var17 = parser_nodes__ANodes__is_empty(var14);
+var23 = parser_nodes__ANodes__is_empty(var20);
 }
-var18 = !var17;
-var_ = var18;
-if (var18){
-var12 = var_;
+var24 = !var23;
+var_ = var24;
+if (var24){
+var16 = var_;
 } else {
 {
-var19 = parser_nodes__ACallFormExpr__n_args(self);
+{ /* Inline parser_nodes#ACallFormExpr#n_args (self) on <self:ACallFormExpr> */
+var27 = self->attrs[COLOR_parser_nodes__ACallFormExpr___n_args].val; /* _n_args on <self:ACallFormExpr> */
+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;
 }
-/* <var19:AExprs> isa AParExprs */
-cltype21 = type_parser_nodes__AParExprs.color;
-idtype22 = type_parser_nodes__AParExprs.id;
-if(cltype21 >= var19->type->table_size) {
-var20 = 0;
+}
+/* <var25:AExprs> isa AParExprs */
+cltype29 = type_parser_nodes__AParExprs.color;
+idtype30 = type_parser_nodes__AParExprs.id;
+if(cltype29 >= var25->type->table_size) {
+var28 = 0;
 } else {
-var20 = var19->type->type_table[cltype21] == idtype22;
+var28 = var25->type->type_table[cltype29] == idtype30;
 }
-var12 = var20;
+var16 = var28;
 }
-if (var12){
+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;
-}
-if (varonce27) {
-var28 = varonce27;
+var32 = "Error: ";
+var33 = 7;
+var34 = string__NativeString__to_s_with_length(var32, var33);
+var31 = var34;
+varonce = var31;
+}
+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;
+var37 = " is variable, not a function.";
+var38 = 29;
+var39 = string__NativeString__to_s_with_length(var37, var38);
+var36 = var39;
+varonce35 = var36;
 }
-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;
+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))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[Object]>*/;
+((void (*)(val*, val*, long))(var40->class->vft[COLOR_array__Array__with_native]))(var40, var42, var41) /* with_native on <var40:Array[Object]>*/;
 }
 }
 {
-var35 = ((val* (*)(val*))(var32->class->vft[COLOR_string__Object__to_s]))(var32) /* to_s on <var32:Array[Object]>*/;
+var43 = ((val* (*)(val*))(var40->class->vft[COLOR_string__Object__to_s]))(var40) /* to_s on <var40:Array[Object]>*/;
 }
 {
-scope__ScopeVisitor__error(var_v, self, var35); /* Direct call scope#ScopeVisitor#error on <var_v:ScopeVisitor>*/
+scope__ScopeVisitor__error(var_v, self, var43); /* Direct call scope#ScopeVisitor#error on <var_v:ScopeVisitor>*/
 }
 goto RET_LABEL;
 } else {
 }
 {
-var36 = ((val* (*)(val*, val*))(self->class->vft[COLOR_scope__ACallFormExpr__variable_create]))(self, var_variable) /* variable_create on <self:ACallFormExpr>*/;
+var44 = ((val* (*)(val*, val*))(self->class->vft[COLOR_scope__ACallFormExpr__variable_create]))(self, var_variable) /* variable_create on <self:ACallFormExpr>*/;
 }
-var_n = var36;
+var_n = var44;
 {
 { /* Inline scope#AVarFormExpr#variable= (var_n,var_variable) on <var_n:AExpr(AVarFormExpr)> */
 var_n->attrs[COLOR_scope__AVarFormExpr___variable].val = var_variable; /* _variable on <var_n:AExpr(AVarFormExpr)> */
-RET_LABEL37:(void)0;
+RET_LABEL45:(void)0;
 }
 }
 {
@@ -2966,17 +3619,35 @@ RET_LABEL:;
 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);
+var1 = 0;
 {
-var2 = parser_nodes__ACallFormExpr__n_id(self);
+{ /* Inline scope#Variable#warn_unread= (var_variable,var1) on <var_variable:Variable> */
+var_variable->attrs[COLOR_scope__Variable___warn_unread].s = var1; /* _warn_unread on <var_variable:Variable> */
+RET_LABEL2:(void)0;
 }
+}
+var3 = NEW_parser_nodes__AVarExpr(&type_parser_nodes__AVarExpr);
 {
-parser_prod__AVarExpr__init_avarexpr(var1, var2); /* Direct call parser_prod#AVarExpr#init_avarexpr on <var1:AVarExpr>*/
+{ /* Inline parser_nodes#ACallFormExpr#n_id (self) on <self:ACallExpr> */
+var6 = self->attrs[COLOR_parser_nodes__ACallFormExpr___n_id].val; /* _n_id on <self:ACallExpr> */
+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);
 }
-var = var1;
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+{
+parser_prod__AVarExpr__init_avarexpr(var3, var4); /* Direct call parser_prod#AVarExpr#init_avarexpr on <var3:AVarExpr>*/
+}
+var = var3;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
@@ -2996,21 +3667,51 @@ 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 = parser_nodes__ACallFormExpr__n_id(self);
+{ /* Inline parser_nodes#ACallFormExpr#n_id (self) on <self:ACallAssignExpr> */
+var4 = self->attrs[COLOR_parser_nodes__ACallFormExpr___n_id].val; /* _n_id on <self:ACallAssignExpr> */
+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;
+}
 }
 {
-var3 = parser_nodes__AAssignFormExpr__n_assign(self);
+{ /* Inline parser_nodes#AAssignFormExpr#n_assign (self) on <self:ACallAssignExpr> */
+var7 = self->attrs[COLOR_parser_nodes__AAssignFormExpr___n_assign].val; /* _n_assign on <self:ACallAssignExpr> */
+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;
+}
 }
 {
-var4 = parser_nodes__AAssignFormExpr__n_value(self);
+{ /* Inline parser_nodes#AAssignFormExpr#n_value (self) on <self:ACallAssignExpr> */
+var10 = self->attrs[COLOR_parser_nodes__AAssignFormExpr___n_value].val; /* _n_value on <self:ACallAssignExpr> */
+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, var3, var4); /* Direct call parser_prod#AVarAssignExpr#init_avarassignexpr on <var1:AVarAssignExpr>*/
+parser_prod__AVarAssignExpr__init_avarassignexpr(var1, var2, var5, var8); /* Direct call parser_prod#AVarAssignExpr#init_avarassignexpr on <var1:AVarAssignExpr>*/
 }
 var = var1;
 goto RET_LABEL;
@@ -3030,25 +3731,63 @@ 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);
+var1 = 0;
+{
+{ /* Inline scope#Variable#warn_unread= (var_variable,var1) on <var_variable:Variable> */
+var_variable->attrs[COLOR_scope__Variable___warn_unread].s = var1; /* _warn_unread on <var_variable:Variable> */
+RET_LABEL2:(void)0;
+}
+}
+var3 = NEW_parser_nodes__AVarReassignExpr(&type_parser_nodes__AVarReassignExpr);
 {
-var2 = parser_nodes__ACallFormExpr__n_id(self);
+{ /* Inline parser_nodes#ACallFormExpr#n_id (self) on <self:ACallReassignExpr> */
+var6 = self->attrs[COLOR_parser_nodes__ACallFormExpr___n_id].val; /* _n_id on <self:ACallReassignExpr> */
+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;
+}
 }
 {
-var3 = parser_nodes__AReassignFormExpr__n_assign_op(self);
+{ /* Inline parser_nodes#AReassignFormExpr#n_assign_op (self) on <self:ACallReassignExpr> */
+var9 = self->attrs[COLOR_parser_nodes__AReassignFormExpr___n_assign_op].val; /* _n_assign_op on <self:ACallReassignExpr> */
+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);
+}
+var7 = var9;
+RET_LABEL8:(void)0;
+}
 }
 {
-var4 = parser_nodes__AReassignFormExpr__n_value(self);
+{ /* Inline parser_nodes#AReassignFormExpr#n_value (self) on <self:ACallReassignExpr> */
+var12 = self->attrs[COLOR_parser_nodes__AReassignFormExpr___n_value].val; /* _n_value on <self:ACallReassignExpr> */
+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);
+}
+var10 = var12;
+RET_LABEL11:(void)0;
+}
 }
 {
-parser_prod__AVarReassignExpr__init_avarreassignexpr(var1, var2, var3, var4); /* Direct call parser_prod#AVarReassignExpr#init_avarreassignexpr on <var1:AVarReassignExpr>*/
+parser_prod__AVarReassignExpr__init_avarreassignexpr(var3, var4, var7, var10); /* Direct call parser_prod#AVarReassignExpr#init_avarreassignexpr on <var3:AVarReassignExpr>*/
 }
-var = var1;
+var = var3;
 goto RET_LABEL;
 RET_LABEL:;
 return var;