X-Git-Url: http://nitlanguage.org diff --git a/c_src/flow.sep.1.c b/c_src/flow.sep.1.c index 6de74a6..0f7ddfc 100644 --- a/c_src/flow.sep.1.c +++ b/c_src/flow.sep.1.c @@ -3,10 +3,10 @@ val* flow__ToolContext__flow_phase(val* self) { val* var /* : Phase */; val* var1 /* : Phase */; -var1 = self->attrs[COLOR_flow__ToolContext___64dflow_phase].val; /* @flow_phase on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @flow_phase"); -fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 26); +var1 = self->attrs[COLOR_flow__ToolContext___flow_phase].val; /* _flow_phase on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flow_phase"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 23); show_backtrace(1); } var = var1; @@ -17,43 +17,57 @@ return var; val* VIRTUAL_flow__ToolContext__flow_phase(val* self) { val* var /* : Phase */; val* var1 /* : Phase */; -var1 = flow__ToolContext__flow_phase(self); -var = var1; -RET_LABEL:; -return var; +val* var3 /* : Phase */; +{ /* Inline flow#ToolContext#flow_phase (self) on */ +var3 = self->attrs[COLOR_flow__ToolContext___flow_phase].val; /* _flow_phase on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flow_phase"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 23); +show_backtrace(1); } -/* method flow#ToolContext#flow_phase= for (self: ToolContext, Phase) */ -void flow__ToolContext__flow_phase_61d(val* self, val* p0) { -self->attrs[COLOR_flow__ToolContext___64dflow_phase].val = p0; /* @flow_phase on */ -RET_LABEL:; +var1 = var3; +RET_LABEL2:(void)0; } -/* method flow#ToolContext#flow_phase= for (self: Object, Phase) */ -void VIRTUAL_flow__ToolContext__flow_phase_61d(val* self, val* p0) { -flow__ToolContext__flow_phase_61d(self, p0); +var = var1; RET_LABEL:; +return var; } /* method flow#FlowPhase#process_npropdef for (self: FlowPhase, APropdef) */ void flow__FlowPhase__process_npropdef(val* self, val* p0) { val* var_npropdef /* var npropdef: APropdef */; val* var /* : ToolContext */; +val* var2 /* : ToolContext */; var_npropdef = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_phase__Phase__toolcontext]))(self) /* toolcontext on */; -((void (*)(val*, val*))(var_npropdef->class->vft[COLOR_flow__APropdef__do_flow]))(var_npropdef, var) /* do_flow on */; +{ +{ /* Inline phase#Phase#toolcontext (self) on */ +var2 = self->attrs[COLOR_phase__Phase___toolcontext].val; /* _toolcontext on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "phase.nit", 162); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +flow__APropdef__do_flow(var_npropdef, var); /* Direct call flow#APropdef#do_flow on */ +} RET_LABEL:; } /* method flow#FlowPhase#process_npropdef for (self: Object, APropdef) */ void VIRTUAL_flow__FlowPhase__process_npropdef(val* self, val* p0) { -flow__FlowPhase__process_npropdef(self, p0); +flow__FlowPhase__process_npropdef(self, p0); /* Direct call flow#FlowPhase#process_npropdef on */ RET_LABEL:; } /* method flow#FlowVisitor#current_flow_context for (self: FlowVisitor): FlowContext */ val* flow__FlowVisitor__current_flow_context(val* self) { val* var /* : FlowContext */; val* var1 /* : FlowContext */; -var1 = self->attrs[COLOR_flow__FlowVisitor___64dcurrent_flow_context].val; /* @current_flow_context on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @current_flow_context"); -fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 39); +var1 = self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 36); show_backtrace(1); } var = var1; @@ -64,29 +78,42 @@ return var; val* VIRTUAL_flow__FlowVisitor__current_flow_context(val* self) { val* var /* : FlowContext */; val* var1 /* : FlowContext */; -var1 = flow__FlowVisitor__current_flow_context(self); +val* var3 /* : FlowContext */; +{ /* Inline flow#FlowVisitor#current_flow_context (self) on */ +var3 = self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 36); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method flow#FlowVisitor#current_flow_context= for (self: FlowVisitor, FlowContext) */ void flow__FlowVisitor__current_flow_context_61d(val* self, val* p0) { -self->attrs[COLOR_flow__FlowVisitor___64dcurrent_flow_context].val = p0; /* @current_flow_context on */ +self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = p0; /* _current_flow_context on */ RET_LABEL:; } /* method flow#FlowVisitor#current_flow_context= for (self: Object, FlowContext) */ void VIRTUAL_flow__FlowVisitor__current_flow_context_61d(val* self, val* p0) { -flow__FlowVisitor__current_flow_context_61d(self, p0); +{ /* Inline flow#FlowVisitor#current_flow_context= (self,p0) on */ +self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = p0; /* _current_flow_context on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method flow#FlowVisitor#toolcontext for (self: FlowVisitor): ToolContext */ val* flow__FlowVisitor__toolcontext(val* self) { val* var /* : ToolContext */; val* var1 /* : ToolContext */; -var1 = self->attrs[COLOR_flow__FlowVisitor___64dtoolcontext].val; /* @toolcontext on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @toolcontext"); -fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 41); +var1 = self->attrs[COLOR_flow__FlowVisitor___toolcontext].val; /* _toolcontext on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 38); show_backtrace(1); } var = var1; @@ -97,53 +124,123 @@ return var; val* VIRTUAL_flow__FlowVisitor__toolcontext(val* self) { val* var /* : ToolContext */; val* var1 /* : ToolContext */; -var1 = flow__FlowVisitor__toolcontext(self); +val* var3 /* : ToolContext */; +{ /* Inline flow#FlowVisitor#toolcontext (self) on */ +var3 = self->attrs[COLOR_flow__FlowVisitor___toolcontext].val; /* _toolcontext on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 38); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method flow#FlowVisitor#toolcontext= for (self: FlowVisitor, ToolContext) */ void flow__FlowVisitor__toolcontext_61d(val* self, val* p0) { -self->attrs[COLOR_flow__FlowVisitor___64dtoolcontext].val = p0; /* @toolcontext on */ +self->attrs[COLOR_flow__FlowVisitor___toolcontext].val = p0; /* _toolcontext on */ RET_LABEL:; } /* method flow#FlowVisitor#toolcontext= for (self: Object, ToolContext) */ void VIRTUAL_flow__FlowVisitor__toolcontext_61d(val* self, val* p0) { -flow__FlowVisitor__toolcontext_61d(self, p0); +{ /* Inline flow#FlowVisitor#toolcontext= (self,p0) on */ +self->attrs[COLOR_flow__FlowVisitor___toolcontext].val = p0; /* _toolcontext on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method flow#FlowVisitor#init for (self: FlowVisitor, ToolContext) */ void flow__FlowVisitor__init(val* self, val* p0) { val* var_toolcontext /* var toolcontext: ToolContext */; val* var /* : FlowContext */; -val* var1 /* : Array[FlowContext] */; -val* var2 /* : FlowContext */; -val* var3 /* : FlowContext */; -short int var4 /* : Bool */; +val* var3 /* : Array[FlowContext] */; +val* var5 /* : Array[FlowContext] */; +val* var6 /* : FlowContext */; +val* var8 /* : FlowContext */; +val* var9 /* : FlowContext */; +val* var11 /* : FlowContext */; +short int var12 /* : Bool */; +{ +((void (*)(val*))(self->class->vft[COLOR_kernel__Object__init]))(self) /* init on */; +} var_toolcontext = p0; -((void (*)(val*))(self->class->vft[COLOR_parser_nodes__Visitor__init]))(self) /* init on */; -((void (*)(val*, val*))(self->class->vft[COLOR_flow__FlowVisitor__toolcontext_61d]))(self, var_toolcontext) /* toolcontext= on */; +{ +{ /* Inline flow#FlowVisitor#toolcontext= (self,var_toolcontext) on */ +self->attrs[COLOR_flow__FlowVisitor___toolcontext].val = var_toolcontext; /* _toolcontext on */ +RET_LABEL1:(void)0; +} +} var = NEW_flow__FlowContext(&type_flow__FlowContext); -((void (*)(val*))(var->class->vft[COLOR_flow__FlowContext__init]))(var) /* init on */; -((void (*)(val*, val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(self, var) /* current_flow_context= on */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__flows]))(self) /* flows on */; -var2 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(self) /* current_flow_context on */; -((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var1, var2) /* add on */; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(self) /* current_flow_context on */; -var4 = 1; -((void (*)(val*, short int))(var3->class->vft[COLOR_flow__FlowContext__is_start_61d]))(var3, var4) /* is_start= on */; +{ +((void (*)(val*))(var->class->vft[COLOR_kernel__Object__init]))(var) /* init on */; +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context= (self,var) on */ +self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var; /* _current_flow_context on */ +RET_LABEL2:(void)0; +} +} +{ +{ /* Inline flow#FlowVisitor#flows (self) on */ +var5 = self->attrs[COLOR_flow__FlowVisitor___flows].val; /* _flows on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 77); +show_backtrace(1); +} +var3 = var5; +RET_LABEL4:(void)0; +} +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context (self) on */ +var8 = self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on */ +if (unlikely(var8 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 36); +show_backtrace(1); +} +var6 = var8; +RET_LABEL7:(void)0; +} +} +{ +array__Array__add(var3, var6); /* Direct call array#Array#add on */ +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context (self) on */ +var11 = self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on */ +if (unlikely(var11 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 36); +show_backtrace(1); +} +var9 = var11; +RET_LABEL10:(void)0; +} +} +var12 = 1; +{ +{ /* Inline flow#FlowContext#is_start= (var9,var12) on */ +var9->attrs[COLOR_flow__FlowContext___is_start].s = var12; /* _is_start on */ +RET_LABEL13:(void)0; +} +} RET_LABEL:; } /* method flow#FlowVisitor#init for (self: Object, ToolContext) */ void VIRTUAL_flow__FlowVisitor__init(val* self, val* p0) { -flow__FlowVisitor__init(self, p0); +flow__FlowVisitor__init(self, p0); /* Direct call flow#FlowVisitor#init on */ RET_LABEL:; } /* method flow#FlowVisitor#first for (self: FlowVisitor): nullable ANode */ val* flow__FlowVisitor__first(val* self) { val* var /* : nullable ANode */; val* var1 /* : nullable ANode */; -var1 = self->attrs[COLOR_flow__FlowVisitor___64dfirst].val; /* @first on */ +var1 = self->attrs[COLOR_flow__FlowVisitor___first].val; /* _first on */ var = var1; RET_LABEL:; return var; @@ -152,132 +249,349 @@ return var; val* VIRTUAL_flow__FlowVisitor__first(val* self) { val* var /* : nullable ANode */; val* var1 /* : nullable ANode */; -var1 = flow__FlowVisitor__first(self); +val* var3 /* : nullable ANode */; +{ /* Inline flow#FlowVisitor#first (self) on */ +var3 = self->attrs[COLOR_flow__FlowVisitor___first].val; /* _first on */ +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method flow#FlowVisitor#first= for (self: FlowVisitor, nullable ANode) */ void flow__FlowVisitor__first_61d(val* self, val* p0) { -self->attrs[COLOR_flow__FlowVisitor___64dfirst].val = p0; /* @first on */ +self->attrs[COLOR_flow__FlowVisitor___first].val = p0; /* _first on */ RET_LABEL:; } /* method flow#FlowVisitor#first= for (self: Object, nullable ANode) */ void VIRTUAL_flow__FlowVisitor__first_61d(val* self, val* p0) { -flow__FlowVisitor__first_61d(self, p0); +{ /* Inline flow#FlowVisitor#first= (self,p0) on */ +self->attrs[COLOR_flow__FlowVisitor___first].val = p0; /* _first on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method flow#FlowVisitor#visit for (self: FlowVisitor, ANode) */ void flow__FlowVisitor__visit(val* self, val* p0) { val* var_node /* var node: ANode */; val* var /* : nullable ANode */; -val* var1 /* : null */; -short int var2 /* : Bool */; -val* var3 /* : FlowContext */; -val* var4 /* : nullable ANode */; -val* var5 /* : null */; -short int var6 /* : Bool */; -val* var7 /* : FlowContext */; -short int var8 /* : Bool */; +val* var2 /* : nullable ANode */; +val* var3 /* : null */; +short int var4 /* : Bool */; +short int var5 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var7 /* : Bool */; +short int var9 /* : Bool */; +val* var11 /* : FlowContext */; +val* var13 /* : FlowContext */; +val* var14 /* : nullable ANode */; +val* var16 /* : nullable ANode */; +val* var17 /* : null */; +short int var18 /* : Bool */; +short int var19 /* : Bool */; +short int var21 /* : Bool */; +short int var23 /* : Bool */; +val* var24 /* : FlowContext */; +val* var26 /* : FlowContext */; +short int var28 /* : Bool */; int cltype; int idtype; -val* var9 /* : FlowContext */; +val* var29 /* : FlowContext */; +val* var31 /* : FlowContext */; val* var_flow /* var flow: FlowContext */; -short int var10 /* : Bool */; -val* var11 /* : FlowContext */; -short int var12 /* : Bool */; +short int var33 /* : Bool */; +val* var34 /* : FlowContext */; +val* var36 /* : FlowContext */; +short int var37 /* : Bool */; +short int var38 /* : Bool */; +val* var_other40 /* var other: nullable Object */; +short int var41 /* : Bool */; +short int var42 /* : Bool */; +short int var43 /* : Bool */; short int var_ /* var : Bool */; -val* var13 /* : FlowContext */; -short int var14 /* : Bool */; -val* var15 /* : FlowContext */; -val* var16 /* : FlowContext */; +val* var44 /* : FlowContext */; +val* var46 /* : FlowContext */; +short int var47 /* : Bool */; +short int var48 /* : Bool */; +short int var50 /* : Bool */; +short int var51 /* : Bool */; +short int var52 /* : Bool */; +val* var53 /* : FlowContext */; +val* var54 /* : FlowContext */; +val* var56 /* : FlowContext */; static val* varonce; -val* var17 /* : String */; -char* var18 /* : NativeString */; -long var19 /* : Int */; -val* var20 /* : String */; -val* var21 /* : nullable ANode */; -short int var22 /* : Bool */; +val* var57 /* : String */; +char* var58 /* : NativeString */; +long var59 /* : Int */; +val* var60 /* : FlatString */; +val* var62 /* : nullable ANode */; +val* var64 /* : nullable ANode */; +short int var65 /* : Bool */; +short int var66 /* : Bool */; +short int var68 /* : Bool */; +short int var70 /* : Bool */; var_node = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__first]))(self) /* first on */; -var1 = NULL; +{ +{ /* Inline flow#FlowVisitor#first (self) on */ +var2 = self->attrs[COLOR_flow__FlowVisitor___first].val; /* _first on */ +var = var2; +RET_LABEL1:(void)0; +} +} +var3 = NULL; if (var == NULL) { -var2 = 1; /* is null */ +var4 = 1; /* is null */ } else { -var2 = 0; /* arg is null but recv is not */ +var4 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var,var3) on */ +var_other = var3; +{ +{ /* Inline kernel#Object#is_same_instance (var,var_other) on */ +var9 = var == var_other; +var7 = var9; +goto RET_LABEL8; +RET_LABEL8:(void)0; +} +} +var5 = var7; +goto RET_LABEL6; +RET_LABEL6:(void)0; +} +var4 = var5; +} +if (var4){ +{ +{ /* Inline flow#FlowVisitor#first= (self,var_node) on */ +self->attrs[COLOR_flow__FlowVisitor___first].val = var_node; /* _first on */ +RET_LABEL10:(void)0; +} } -if (var2){ -((void (*)(val*, val*))(self->class->vft[COLOR_flow__FlowVisitor__first_61d]))(self, var_node) /* first= on */; } else { } -var3 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(self) /* current_flow_context on */; -var4 = ((val* (*)(val*))(var3->class->vft[COLOR_flow__FlowContext__node]))(var3) /* node on */; -var5 = NULL; -if (var4 == NULL) { -var6 = 1; /* is null */ +{ +{ /* Inline flow#FlowVisitor#current_flow_context (self) on */ +var13 = self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on */ +if (unlikely(var13 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 36); +show_backtrace(1); +} +var11 = var13; +RET_LABEL12:(void)0; +} +} +{ +{ /* Inline flow#FlowContext#node (var11) on */ +var16 = var11->attrs[COLOR_flow__FlowContext___node].val; /* _node on */ +var14 = var16; +RET_LABEL15:(void)0; +} +} +var17 = NULL; +if (var14 == NULL) { +var18 = 1; /* is null */ } else { -var6 = 0; /* arg is null but recv is not */ +var18 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var14,var17) on */ +var_other = var17; +{ +{ /* Inline kernel#Object#is_same_instance (var14,var_other) on */ +var23 = var14 == var_other; +var21 = var23; +goto RET_LABEL22; +RET_LABEL22:(void)0; +} +} +var19 = var21; +goto RET_LABEL20; +RET_LABEL20:(void)0; +} +var18 = var19; +} +if (var18){ +{ +{ /* Inline flow#FlowVisitor#current_flow_context (self) on */ +var26 = self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on */ +if (unlikely(var26 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 36); +show_backtrace(1); +} +var24 = var26; +RET_LABEL25:(void)0; +} +} +{ +{ /* Inline flow#FlowContext#node= (var24,var_node) on */ +var24->attrs[COLOR_flow__FlowContext___node].val = var_node; /* _node on */ +RET_LABEL27:(void)0; +} } -if (var6){ -var7 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(self) /* current_flow_context on */; -((void (*)(val*, val*))(var7->class->vft[COLOR_flow__FlowContext__node_61d]))(var7, var_node) /* node= on */; } else { } +{ ((void (*)(val*, val*))(var_node->class->vft[COLOR_flow__ANode__accept_flow_visitor]))(var_node, self) /* accept_flow_visitor on */; +} /* isa AExpr */ cltype = type_parser_nodes__AExpr.color; idtype = type_parser_nodes__AExpr.id; if(cltype >= var_node->type->table_size) { -var8 = 0; +var28 = 0; } else { -var8 = var_node->type->type_table[cltype] == idtype; -} -if (var8){ -var9 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(self) /* current_flow_context on */; -var_flow = var9; -((void (*)(val*, val*))(var_node->class->vft[COLOR_flow__AExpr__after_flow_context_61d]))(var_node, var_flow) /* after_flow_context= on */; -var11 = ((val* (*)(val*))(var_flow->class->vft[COLOR_flow__FlowContext__when_true]))(var_flow) /* when_true on */; -var12 = ((short int (*)(val*, val*))(var11->class->vft[COLOR_kernel__Object___33d_61d]))(var11, var_flow) /* != on */; -var_ = var12; -if (var12){ -var10 = var_; +var28 = var_node->type->type_table[cltype] == idtype; +} +if (var28){ +{ +{ /* Inline flow#FlowVisitor#current_flow_context (self) on */ +var31 = self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on */ +if (unlikely(var31 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 36); +show_backtrace(1); +} +var29 = var31; +RET_LABEL30:(void)0; +} +} +var_flow = var29; +{ +{ /* Inline flow#AExpr#after_flow_context= (var_node,var_flow) on */ +var_node->attrs[COLOR_flow__AExpr___after_flow_context].val = var_flow; /* _after_flow_context on */ +RET_LABEL32:(void)0; +} +} +{ +{ /* Inline flow#FlowContext#when_true (var_flow) on */ +var36 = var_flow->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on */ +if (unlikely(var36 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 225); +show_backtrace(1); +} +var34 = var36; +RET_LABEL35:(void)0; +} +} +{ +{ /* Inline kernel#Object#!= (var34,var_flow) on */ +var_other40 = var_flow; +{ +var42 = ((short int (*)(val*, val*))(var34->class->vft[COLOR_kernel__Object___61d_61d]))(var34, var_other40) /* == on */; +var41 = var42; +} +var43 = !var41; +var38 = var43; +goto RET_LABEL39; +RET_LABEL39:(void)0; +} +var37 = var38; +} +var_ = var37; +if (var37){ +var33 = var_; } else { -var13 = ((val* (*)(val*))(var_flow->class->vft[COLOR_flow__FlowContext__when_false]))(var_flow) /* when_false on */; -var14 = ((short int (*)(val*, val*))(var13->class->vft[COLOR_kernel__Object___33d_61d]))(var13, var_flow) /* != on */; -var10 = var14; -} -if (var10){ -var15 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__make_sub_flow]))(self) /* make_sub_flow on */; -var15; -var16 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(self) /* current_flow_context on */; +{ +{ /* Inline flow#FlowContext#when_false (var_flow) on */ +var46 = var_flow->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on */ +if (unlikely(var46 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 228); +show_backtrace(1); +} +var44 = var46; +RET_LABEL45:(void)0; +} +} +{ +{ /* Inline kernel#Object#!= (var44,var_flow) on */ +var_other40 = var_flow; +{ +var51 = ((short int (*)(val*, val*))(var44->class->vft[COLOR_kernel__Object___61d_61d]))(var44, var_other40) /* == on */; +var50 = var51; +} +var52 = !var50; +var48 = var52; +goto RET_LABEL49; +RET_LABEL49:(void)0; +} +var47 = var48; +} +var33 = var47; +} +if (var33){ +{ +var53 = flow__FlowVisitor__make_sub_flow(self); +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context (self) on */ +var56 = self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on */ +if (unlikely(var56 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 36); +show_backtrace(1); +} +var54 = var56; +RET_LABEL55:(void)0; +} +} if (varonce) { -var17 = varonce; +var57 = varonce; } else { -var18 = "AUTOSUB"; -var19 = 7; -var20 = string__NativeString__to_s_with_length(var18, var19); -var17 = var20; -varonce = var17; +var58 = "AUTOSUB"; +var59 = 7; +var60 = string__NativeString__to_s_with_length(var58, var59); +var57 = var60; +varonce = var57; +} +{ +{ /* Inline flow#FlowContext#name= (var54,var57) on */ +var54->attrs[COLOR_flow__FlowContext___name].val = var57; /* _name on */ +RET_LABEL61:(void)0; +} } -((void (*)(val*, val*))(var16->class->vft[COLOR_flow__FlowContext__name_61d]))(var16, var17) /* name= on */; } else { } } else { } -var21 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__first]))(self) /* first on */; -if (var21 == NULL) { -var22 = 0; /* cannot be null */ +{ +{ /* Inline flow#FlowVisitor#first (self) on */ +var64 = self->attrs[COLOR_flow__FlowVisitor___first].val; /* _first on */ +var62 = var64; +RET_LABEL63:(void)0; +} +} +if (var62 == NULL) { +var65 = 0; /* cannot be null */ } else { -var22 = ((short int (*)(val*, val*))(var21->class->vft[COLOR_kernel__Object___61d_61d]))(var21, var_node) /* == on */; +{ /* Inline kernel#Object#== (var62,var_node) on */ +var_other = var_node; +{ +{ /* Inline kernel#Object#is_same_instance (var62,var_other) on */ +var70 = var62 == var_other; +var68 = var70; +goto RET_LABEL69; +RET_LABEL69:(void)0; +} +} +var66 = var68; +goto RET_LABEL67; +RET_LABEL67:(void)0; } -if (var22){ +var65 = var66; +} +if (var65){ } else { } RET_LABEL:; } /* method flow#FlowVisitor#visit for (self: Object, ANode) */ void VIRTUAL_flow__FlowVisitor__visit(val* self, val* p0) { -flow__FlowVisitor__visit(self, p0); +flow__FlowVisitor__visit(self, p0); /* Direct call flow#FlowVisitor#visit on */ RET_LABEL:; } /* method flow#FlowVisitor#visit_expr for (self: FlowVisitor, AExpr): FlowContext */ @@ -285,12 +599,21 @@ val* flow__FlowVisitor__visit_expr(val* self, val* p0) { val* var /* : FlowContext */; val* var_node /* var node: AExpr */; val* var1 /* : nullable FlowContext */; +val* var3 /* : nullable FlowContext */; var_node = p0; -((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(self, var_node) /* enter_visit on */; -var1 = ((val* (*)(val*))(var_node->class->vft[COLOR_flow__AExpr__after_flow_context]))(var_node) /* after_flow_context on */; -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Cast failed"); -fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 77); +{ +parser_nodes__Visitor__enter_visit(self, var_node); /* Direct call parser_nodes#Visitor#enter_visit on */ +} +{ +{ /* Inline flow#AExpr#after_flow_context (var_node) on */ +var3 = var_node->attrs[COLOR_flow__AExpr___after_flow_context].val; /* _after_flow_context on */ +var1 = var3; +RET_LABEL2:(void)0; +} +} +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Cast failed"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 74); show_backtrace(1); } var = var1; @@ -311,10 +634,10 @@ return var; val* flow__FlowVisitor__flows(val* self) { val* var /* : Array[FlowContext] */; val* var1 /* : Array[FlowContext] */; -var1 = self->attrs[COLOR_flow__FlowVisitor___64dflows].val; /* @flows on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @flows"); -fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 80); +var1 = self->attrs[COLOR_flow__FlowVisitor___flows].val; /* _flows on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 77); show_backtrace(1); } var = var1; @@ -325,600 +648,86 @@ return var; val* VIRTUAL_flow__FlowVisitor__flows(val* self) { val* var /* : Array[FlowContext] */; val* var1 /* : Array[FlowContext] */; -var1 = flow__FlowVisitor__flows(self); -var = var1; -RET_LABEL:; -return var; +val* var3 /* : Array[FlowContext] */; +{ /* Inline flow#FlowVisitor#flows (self) on */ +var3 = self->attrs[COLOR_flow__FlowVisitor___flows].val; /* _flows on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 77); +show_backtrace(1); } -/* method flow#FlowVisitor#flows= for (self: FlowVisitor, Array[FlowContext]) */ -void flow__FlowVisitor__flows_61d(val* self, val* p0) { -self->attrs[COLOR_flow__FlowVisitor___64dflows].val = p0; /* @flows on */ -RET_LABEL:; +var1 = var3; +RET_LABEL2:(void)0; } -/* method flow#FlowVisitor#flows= for (self: Object, Array[FlowContext]) */ -void VIRTUAL_flow__FlowVisitor__flows_61d(val* self, val* p0) { -flow__FlowVisitor__flows_61d(self, p0); +var = var1; RET_LABEL:; +return var; } -/* method flow#FlowVisitor#printflow for (self: FlowVisitor) */ -void flow__FlowVisitor__printflow(val* self) { -val* var /* : OFStream */; -static val* varonce; -val* var1 /* : String */; -char* var2 /* : NativeString */; -long var3 /* : Int */; -val* var4 /* : String */; -val* var_file /* var file: OFStream */; -static val* varonce5; -val* var6 /* : String */; -char* var7 /* : NativeString */; -long var8 /* : Int */; -val* var9 /* : String */; -val* var10 /* : Array[FlowContext] */; -val* var11 /* : Iterator[nullable Object] */; -short int var12 /* : Bool */; -val* var13 /* : nullable Object */; -val* var_f /* var f: FlowContext */; -static val* varonce14; -val* var15 /* : String */; -char* var16 /* : NativeString */; -long var17 /* : Int */; -val* var18 /* : String */; -val* var_s /* var s: String */; -val* var19 /* : nullable ANode */; -short int var20 /* : Bool */; -int cltype; -int idtype; -val* var21 /* : Array[Object] */; -long var22 /* : Int */; -val* var_ /* var : Array[Object] */; -static val* varonce23; -val* var24 /* : String */; -char* var25 /* : NativeString */; -long var26 /* : Int */; -val* var27 /* : String */; -val* var28 /* : nullable ANode */; -short int var29 /* : Bool */; -int cltype30; -int idtype31; -const char* var_class_name; -val* var32 /* : nullable FlowContext */; -long var33 /* : Int */; -val* var34 /* : nullable Object */; -static val* varonce35; -val* var36 /* : String */; -char* var37 /* : NativeString */; -long var38 /* : Int */; -val* var39 /* : String */; -val* var40 /* : String */; -static val* varonce41; -val* var42 /* : String */; -char* var43 /* : NativeString */; -long var44 /* : Int */; -val* var45 /* : String */; -long var46 /* : Int */; -static val* varonce47; -val* var48 /* : String */; -char* var49 /* : NativeString */; -long var50 /* : Int */; -val* var51 /* : String */; -long var52 /* : Int */; -static val* varonce53; -val* var54 /* : String */; -char* var55 /* : NativeString */; -long var56 /* : Int */; -val* var57 /* : String */; -val* var58 /* : nullable ANode */; -val* var59 /* : Location */; -static val* varonce60; -val* var61 /* : String */; -char* var62 /* : NativeString */; -long var63 /* : Int */; -val* var64 /* : String */; -val* var65 /* : nullable ANode */; -val* var66 /* : String */; -static val* varonce67; -val* var68 /* : String */; -char* var69 /* : NativeString */; -long var70 /* : Int */; -val* var71 /* : String */; -val* var72 /* : String */; -static val* varonce73; -val* var74 /* : String */; -char* var75 /* : NativeString */; -long var76 /* : Int */; -val* var77 /* : String */; -val* var78 /* : Array[Object] */; -long var79 /* : Int */; -val* var80 /* : NativeArray[Object] */; -val* var81 /* : Object */; -val* var82 /* : Object */; -val* var83 /* : String */; -val* var84 /* : Array[FlowContext] */; -val* var85 /* : Iterator[nullable Object] */; -short int var86 /* : Bool */; -val* var87 /* : nullable Object */; -val* var_p /* var p: FlowContext */; -static val* varonce88; -val* var89 /* : String */; -char* var90 /* : NativeString */; -long var91 /* : Int */; -val* var92 /* : String */; -long var93 /* : Int */; -static val* varonce94; -val* var95 /* : String */; -char* var96 /* : NativeString */; -long var97 /* : Int */; -val* var98 /* : String */; -long var99 /* : Int */; -static val* varonce100; -val* var101 /* : String */; -char* var102 /* : NativeString */; -long var103 /* : Int */; -val* var104 /* : String */; -val* var105 /* : Array[Object] */; -long var106 /* : Int */; -val* var107 /* : NativeArray[Object] */; -val* var108 /* : Object */; -val* var109 /* : Object */; -val* var110 /* : String */; -val* var111 /* : FlowContext */; -short int var112 /* : Bool */; -static val* varonce113; -val* var114 /* : String */; -char* var115 /* : NativeString */; -long var116 /* : Int */; -val* var117 /* : String */; -long var118 /* : Int */; -static val* varonce119; -val* var120 /* : String */; -char* var121 /* : NativeString */; -long var122 /* : Int */; -val* var123 /* : String */; -val* var124 /* : FlowContext */; -long var125 /* : Int */; -static val* varonce126; -val* var127 /* : String */; -char* var128 /* : NativeString */; -long var129 /* : Int */; -val* var130 /* : String */; -val* var131 /* : Array[Object] */; -long var132 /* : Int */; -val* var133 /* : NativeArray[Object] */; -val* var134 /* : Object */; -val* var135 /* : Object */; -val* var136 /* : String */; -val* var137 /* : FlowContext */; -short int var138 /* : Bool */; -static val* varonce139; -val* var140 /* : String */; -char* var141 /* : NativeString */; -long var142 /* : Int */; -val* var143 /* : String */; -long var144 /* : Int */; -static val* varonce145; -val* var146 /* : String */; -char* var147 /* : NativeString */; -long var148 /* : Int */; -val* var149 /* : String */; -val* var150 /* : FlowContext */; -long var151 /* : Int */; -static val* varonce152; -val* var153 /* : String */; -char* var154 /* : NativeString */; -long var155 /* : Int */; -val* var156 /* : String */; -val* var157 /* : Array[Object] */; -long var158 /* : Int */; -val* var159 /* : NativeArray[Object] */; -val* var160 /* : Object */; -val* var161 /* : Object */; -val* var162 /* : String */; -static val* varonce164; -val* var165 /* : String */; -char* var166 /* : NativeString */; -long var167 /* : Int */; -val* var168 /* : String */; -var = NEW_file__OFStream(&type_file__OFStream); -if (varonce) { -var1 = varonce; -} else { -var2 = "flow.dot"; -var3 = 8; -var4 = string__NativeString__to_s_with_length(var2, var3); -var1 = var4; -varonce = var1; -} -((void (*)(val*, val*))(var->class->vft[COLOR_file__OFStream__open]))(var, var1) /* open on */; -var_file = var; -if (varonce5) { -var6 = varonce5; -} else { -var7 = "digraph {\n"; -var8 = 10; -var9 = string__NativeString__to_s_with_length(var7, var8); -var6 = var9; -varonce5 = var6; -} -((void (*)(val*, val*))(var_file->class->vft[COLOR_stream__OStream__write]))(var_file, var6) /* write on */; -var10 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__flows]))(self) /* flows on */; -var11 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Collection__iterator]))(var10) /* iterator on */; -for(;;) { -var12 = ((short int (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var11) /* is_ok on */; -if(!var12) break; -var13 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__item]))(var11) /* item on */; -var_f = var13; -if (varonce14) { -var15 = varonce14; -} else { -var16 = ""; -var17 = 0; -var18 = string__NativeString__to_s_with_length(var16, var17); -var15 = var18; -varonce14 = var15; -} -var_s = var15; -var19 = ((val* (*)(val*))(var_f->class->vft[COLOR_flow__FlowContext__node]))(var_f) /* node on */; -/* isa AExpr */ -cltype = type_parser_nodes__AExpr.color; -idtype = type_parser_nodes__AExpr.id; -if(var19 == NULL) { -var20 = 0; -} else { -if(cltype >= var19->type->table_size) { -var20 = 0; -} else { -var20 = var19->type->type_table[cltype] == idtype; -} -} -if (var20){ -var21 = NEW_array__Array(&type_array__Arraykernel__Object); -var22 = 3; -((void (*)(val*, long))(var21->class->vft[COLOR_array__Array__with_capacity]))(var21, var22) /* with_capacity on */; -var_ = var21; -if (varonce23) { -var24 = varonce23; -} else { -var25 = "\\nmain="; -var26 = 7; -var27 = string__NativeString__to_s_with_length(var25, var26); -var24 = var27; -varonce23 = var24; -} -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var24) /* add on */; -var28 = ((val* (*)(val*))(var_f->class->vft[COLOR_flow__FlowContext__node]))(var_f) /* node on */; -/* isa AExpr */ -cltype30 = type_parser_nodes__AExpr.color; -idtype31 = type_parser_nodes__AExpr.id; -if(var28 == NULL) { -var29 = 0; -} else { -if(cltype30 >= var28->type->table_size) { -var29 = 0; -} else { -var29 = var28->type->type_table[cltype30] == idtype31; -} +/* method flow#FlowVisitor#make_sub_flow for (self: FlowVisitor): FlowContext */ +val* flow__FlowVisitor__make_sub_flow(val* self) { +val* var /* : FlowContext */; +val* var1 /* : FlowContext */; +val* var_flow /* var flow: FlowContext */; +val* var2 /* : Array[FlowContext] */; +val* var4 /* : Array[FlowContext] */; +val* var5 /* : nullable ANode */; +val* var7 /* : nullable ANode */; +val* var9 /* : FlowContext */; +val* var11 /* : FlowContext */; +var1 = NEW_flow__FlowContext(&type_flow__FlowContext); +{ +((void (*)(val*))(var1->class->vft[COLOR_kernel__Object__init]))(var1) /* init on */; } -if (!var29) { -var_class_name = var28 == NULL ? "null" : var28->type->name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AExpr", var_class_name); -fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 89); +var_flow = var1; +{ +{ /* Inline flow#FlowVisitor#flows (self) on */ +var4 = self->attrs[COLOR_flow__FlowVisitor___flows].val; /* _flows on */ +if (unlikely(var4 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 77); show_backtrace(1); } -var32 = ((val* (*)(val*))(var28->class->vft[COLOR_flow__AExpr__after_flow_context]))(var28) /* after_flow_context on */; -if (var32 == NULL) { -fprintf(stderr, "Runtime error: %s", "Receiver is null"); -fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 89); -show_backtrace(1); -} else { -var33 = ((long (*)(val*))(var32->class->vft[COLOR_kernel__Object__object_id]))(var32) /* object_id on */; +var2 = var4; +RET_LABEL3:(void)0; } -var34 = BOX_kernel__Int(var33); /* autobox from Int to nullable Object */ -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var34) /* add on */; -if (varonce35) { -var36 = varonce35; -} else { -var37 = ""; -var38 = 0; -var39 = string__NativeString__to_s_with_length(var37, var38); -var36 = var39; -varonce35 = var36; -} -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var36) /* add on */; -var40 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on */; -var_s = var40; -} else { } -if (varonce41) { -var42 = varonce41; -} else { -var43 = "F"; -var44 = 1; -var45 = string__NativeString__to_s_with_length(var43, var44); -var42 = var45; -varonce41 = var42; -} -var46 = ((long (*)(val*))(var_f->class->vft[COLOR_kernel__Object__object_id]))(var_f) /* object_id on */; -if (varonce47) { -var48 = varonce47; -} else { -var49 = " [label=\""; -var50 = 9; -var51 = string__NativeString__to_s_with_length(var49, var50); -var48 = var51; -varonce47 = var48; -} -var52 = ((long (*)(val*))(var_f->class->vft[COLOR_kernel__Object__object_id]))(var_f) /* object_id on */; -if (varonce53) { -var54 = varonce53; -} else { -var55 = "\\n"; -var56 = 2; -var57 = string__NativeString__to_s_with_length(var55, var56); -var54 = var57; -varonce53 = var54; +{ +array__Array__add(var2, var_flow); /* Direct call array#Array#add on */ } -var58 = ((val* (*)(val*))(var_f->class->vft[COLOR_flow__FlowContext__node]))(var_f) /* node on */; -if (var58 == NULL) { -fprintf(stderr, "Runtime error: %s", "Receiver is null"); -fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 91); -show_backtrace(1); -} else { -var59 = ((val* (*)(val*))(var58->class->vft[COLOR_parser_nodes__ANode__location]))(var58) /* location on */; +{ +{ /* Inline parser_nodes#Visitor#current_node (self) on */ +var7 = self->attrs[COLOR_parser_nodes__Visitor___current_node].val; /* _current_node on */ +var5 = var7; +RET_LABEL6:(void)0; } -if (varonce60) { -var61 = varonce60; -} else { -var62 = "\\n"; -var63 = 2; -var64 = string__NativeString__to_s_with_length(var62, var63); -var61 = var64; -varonce60 = var61; } -var65 = ((val* (*)(val*))(var_f->class->vft[COLOR_flow__FlowContext__node]))(var_f) /* node on */; -if (var65 == NULL) { -fprintf(stderr, "Runtime error: %s", "Receiver is null"); -fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 91); -show_backtrace(1); -} else { -var66 = ((val* (*)(val*))(var65->class->vft[COLOR_string__Object__class_name]))(var65) /* class_name on */; +{ +{ /* Inline flow#FlowContext#node= (var_flow,var5) on */ +var_flow->attrs[COLOR_flow__FlowContext___node].val = var5; /* _node on */ +RET_LABEL8:(void)0; } -if (varonce67) { -var68 = varonce67; -} else { -var69 = "\\n"; -var70 = 2; -var71 = string__NativeString__to_s_with_length(var69, var70); -var68 = var71; -varonce67 = var68; -} -var72 = ((val* (*)(val*))(var_f->class->vft[COLOR_flow__FlowContext__name]))(var_f) /* name on */; -if (varonce73) { -var74 = varonce73; -} else { -var75 = "\"];\n"; -var76 = 4; -var77 = string__NativeString__to_s_with_length(var75, var76); -var74 = var77; -varonce73 = var74; -} -var78 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var78 = array_instance Array[Object] */ -var79 = 12; -var80 = NEW_array__NativeArray(var79, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var80)->values[0] = (val*) var42; -var81 = BOX_kernel__Int(var46); /* autobox from Int to Object */ -((struct instance_array__NativeArray*)var80)->values[1] = (val*) var81; -((struct instance_array__NativeArray*)var80)->values[2] = (val*) var48; -var82 = BOX_kernel__Int(var52); /* autobox from Int to Object */ -((struct instance_array__NativeArray*)var80)->values[3] = (val*) var82; -((struct instance_array__NativeArray*)var80)->values[4] = (val*) var54; -((struct instance_array__NativeArray*)var80)->values[5] = (val*) var59; -((struct instance_array__NativeArray*)var80)->values[6] = (val*) var61; -((struct instance_array__NativeArray*)var80)->values[7] = (val*) var66; -((struct instance_array__NativeArray*)var80)->values[8] = (val*) var68; -((struct instance_array__NativeArray*)var80)->values[9] = (val*) var72; -((struct instance_array__NativeArray*)var80)->values[10] = (val*) var_s; -((struct instance_array__NativeArray*)var80)->values[11] = (val*) var74; -((void (*)(val*, val*, long))(var78->class->vft[COLOR_array__Array__with_native]))(var78, var80, var79) /* with_native on */; -} -var83 = ((val* (*)(val*))(var78->class->vft[COLOR_string__Object__to_s]))(var78) /* to_s on */; -((void (*)(val*, val*))(var_file->class->vft[COLOR_stream__OStream__write]))(var_file, var83) /* write on */; -var84 = ((val* (*)(val*))(var_f->class->vft[COLOR_flow__FlowContext__previous]))(var_f) /* previous on */; -var85 = ((val* (*)(val*))(var84->class->vft[COLOR_abstract_collection__Collection__iterator]))(var84) /* iterator on */; -for(;;) { -var86 = ((short int (*)(val*))(var85->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var85) /* is_ok on */; -if(!var86) break; -var87 = ((val* (*)(val*))(var85->class->vft[COLOR_abstract_collection__Iterator__item]))(var85) /* item on */; -var_p = var87; -if (varonce88) { -var89 = varonce88; -} else { -var90 = "F"; -var91 = 1; -var92 = string__NativeString__to_s_with_length(var90, var91); -var89 = var92; -varonce88 = var89; -} -var93 = ((long (*)(val*))(var_p->class->vft[COLOR_kernel__Object__object_id]))(var_p) /* object_id on */; -if (varonce94) { -var95 = varonce94; -} else { -var96 = " -> F"; -var97 = 5; -var98 = string__NativeString__to_s_with_length(var96, var97); -var95 = var98; -varonce94 = var95; -} -var99 = ((long (*)(val*))(var_f->class->vft[COLOR_kernel__Object__object_id]))(var_f) /* object_id on */; -if (varonce100) { -var101 = varonce100; -} else { -var102 = ";\n"; -var103 = 2; -var104 = string__NativeString__to_s_with_length(var102, var103); -var101 = var104; -varonce100 = var101; -} -var105 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var105 = array_instance Array[Object] */ -var106 = 5; -var107 = NEW_array__NativeArray(var106, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var107)->values[0] = (val*) var89; -var108 = BOX_kernel__Int(var93); /* autobox from Int to Object */ -((struct instance_array__NativeArray*)var107)->values[1] = (val*) var108; -((struct instance_array__NativeArray*)var107)->values[2] = (val*) var95; -var109 = BOX_kernel__Int(var99); /* autobox from Int to Object */ -((struct instance_array__NativeArray*)var107)->values[3] = (val*) var109; -((struct instance_array__NativeArray*)var107)->values[4] = (val*) var101; -((void (*)(val*, val*, long))(var105->class->vft[COLOR_array__Array__with_native]))(var105, var107, var106) /* with_native on */; -} -var110 = ((val* (*)(val*))(var105->class->vft[COLOR_string__Object__to_s]))(var105) /* to_s on */; -((void (*)(val*, val*))(var_file->class->vft[COLOR_stream__OStream__write]))(var_file, var110) /* write on */; -CONTINUE_label: (void)0; -((void (*)(val*))(var85->class->vft[COLOR_abstract_collection__Iterator__next]))(var85) /* next on */; } -BREAK_label: (void)0; -var111 = ((val* (*)(val*))(var_f->class->vft[COLOR_flow__FlowContext__when_true]))(var_f) /* when_true on */; -var112 = ((short int (*)(val*, val*))(var111->class->vft[COLOR_kernel__Object___33d_61d]))(var111, var_f) /* != on */; -if (var112){ -if (varonce113) { -var114 = varonce113; -} else { -var115 = "F"; -var116 = 1; -var117 = string__NativeString__to_s_with_length(var115, var116); -var114 = var117; -varonce113 = var114; -} -var118 = ((long (*)(val*))(var_f->class->vft[COLOR_kernel__Object__object_id]))(var_f) /* object_id on */; -if (varonce119) { -var120 = varonce119; -} else { -var121 = " -> F"; -var122 = 5; -var123 = string__NativeString__to_s_with_length(var121, var122); -var120 = var123; -varonce119 = var120; -} -var124 = ((val* (*)(val*))(var_f->class->vft[COLOR_flow__FlowContext__when_true]))(var_f) /* when_true on */; -var125 = ((long (*)(val*))(var124->class->vft[COLOR_kernel__Object__object_id]))(var124) /* object_id on */; -if (varonce126) { -var127 = varonce126; -} else { -var128 = "[label=TRUE, style=dotted];\n"; -var129 = 28; -var130 = string__NativeString__to_s_with_length(var128, var129); -var127 = var130; -varonce126 = var127; -} -var131 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var131 = array_instance Array[Object] */ -var132 = 5; -var133 = NEW_array__NativeArray(var132, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var133)->values[0] = (val*) var114; -var134 = BOX_kernel__Int(var118); /* autobox from Int to Object */ -((struct instance_array__NativeArray*)var133)->values[1] = (val*) var134; -((struct instance_array__NativeArray*)var133)->values[2] = (val*) var120; -var135 = BOX_kernel__Int(var125); /* autobox from Int to Object */ -((struct instance_array__NativeArray*)var133)->values[3] = (val*) var135; -((struct instance_array__NativeArray*)var133)->values[4] = (val*) var127; -((void (*)(val*, val*, long))(var131->class->vft[COLOR_array__Array__with_native]))(var131, var133, var132) /* with_native on */; -} -var136 = ((val* (*)(val*))(var131->class->vft[COLOR_string__Object__to_s]))(var131) /* to_s on */; -((void (*)(val*, val*))(var_file->class->vft[COLOR_stream__OStream__write]))(var_file, var136) /* write on */; -} else { +{ +{ /* Inline flow#FlowVisitor#current_flow_context (self) on */ +var11 = self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on */ +if (unlikely(var11 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 36); +show_backtrace(1); } -var137 = ((val* (*)(val*))(var_f->class->vft[COLOR_flow__FlowContext__when_false]))(var_f) /* when_false on */; -var138 = ((short int (*)(val*, val*))(var137->class->vft[COLOR_kernel__Object___33d_61d]))(var137, var_f) /* != on */; -if (var138){ -if (varonce139) { -var140 = varonce139; -} else { -var141 = "F"; -var142 = 1; -var143 = string__NativeString__to_s_with_length(var141, var142); -var140 = var143; -varonce139 = var140; -} -var144 = ((long (*)(val*))(var_f->class->vft[COLOR_kernel__Object__object_id]))(var_f) /* object_id on */; -if (varonce145) { -var146 = varonce145; -} else { -var147 = " -> F"; -var148 = 5; -var149 = string__NativeString__to_s_with_length(var147, var148); -var146 = var149; -varonce145 = var146; -} -var150 = ((val* (*)(val*))(var_f->class->vft[COLOR_flow__FlowContext__when_false]))(var_f) /* when_false on */; -var151 = ((long (*)(val*))(var150->class->vft[COLOR_kernel__Object__object_id]))(var150) /* object_id on */; -if (varonce152) { -var153 = varonce152; -} else { -var154 = "[label=FALSE,style=dotted];\n"; -var155 = 28; -var156 = string__NativeString__to_s_with_length(var154, var155); -var153 = var156; -varonce152 = var153; -} -var157 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var157 = array_instance Array[Object] */ -var158 = 5; -var159 = NEW_array__NativeArray(var158, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var159)->values[0] = (val*) var140; -var160 = BOX_kernel__Int(var144); /* autobox from Int to Object */ -((struct instance_array__NativeArray*)var159)->values[1] = (val*) var160; -((struct instance_array__NativeArray*)var159)->values[2] = (val*) var146; -var161 = BOX_kernel__Int(var151); /* autobox from Int to Object */ -((struct instance_array__NativeArray*)var159)->values[3] = (val*) var161; -((struct instance_array__NativeArray*)var159)->values[4] = (val*) var153; -((void (*)(val*, val*, long))(var157->class->vft[COLOR_array__Array__with_native]))(var157, var159, var158) /* with_native on */; -} -var162 = ((val* (*)(val*))(var157->class->vft[COLOR_string__Object__to_s]))(var157) /* to_s on */; -((void (*)(val*, val*))(var_file->class->vft[COLOR_stream__OStream__write]))(var_file, var162) /* write on */; -} else { +var9 = var11; +RET_LABEL10:(void)0; } -CONTINUE_label163: (void)0; -((void (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__next]))(var11) /* next on */; } -BREAK_label163: (void)0; -if (varonce164) { -var165 = varonce164; -} else { -var166 = "}\n"; -var167 = 2; -var168 = string__NativeString__to_s_with_length(var166, var167); -var165 = var168; -varonce164 = var165; +{ +flow__FlowContext__add_previous(var_flow, var9); /* Direct call flow#FlowContext#add_previous on */ } -((void (*)(val*, val*))(var_file->class->vft[COLOR_stream__OStream__write]))(var_file, var165) /* write on */; -((void (*)(val*))(var_file->class->vft[COLOR_stream__IOS__close]))(var_file) /* close on */; -RET_LABEL:; +{ +{ /* Inline flow#FlowVisitor#current_flow_context= (self,var_flow) on */ +self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var_flow; /* _current_flow_context on */ +RET_LABEL12:(void)0; } -/* method flow#FlowVisitor#printflow for (self: Object) */ -void VIRTUAL_flow__FlowVisitor__printflow(val* self) { -flow__FlowVisitor__printflow(self); -RET_LABEL:; } -/* method flow#FlowVisitor#make_sub_flow for (self: FlowVisitor): FlowContext */ -val* flow__FlowVisitor__make_sub_flow(val* self) { -val* var /* : FlowContext */; -val* var1 /* : FlowContext */; -val* var_flow /* var flow: FlowContext */; -val* var2 /* : Array[FlowContext] */; -val* var3 /* : nullable ANode */; -val* var4 /* : FlowContext */; -var1 = NEW_flow__FlowContext(&type_flow__FlowContext); -((void (*)(val*))(var1->class->vft[COLOR_flow__FlowContext__init]))(var1) /* init on */; -var_flow = var1; -var2 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__flows]))(self) /* flows on */; -((void (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var2, var_flow) /* add on */; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__Visitor__current_node]))(self) /* current_node on */; -((void (*)(val*, val*))(var_flow->class->vft[COLOR_flow__FlowContext__node_61d]))(var_flow, var3) /* node= on */; -var4 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(self) /* current_flow_context on */; -((void (*)(val*, val*))(var_flow->class->vft[COLOR_flow__FlowContext__add_previous]))(var_flow, var4) /* add_previous on */; -((void (*)(val*, val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(self, var_flow) /* current_flow_context= on */; var = var_flow; goto RET_LABEL; RET_LABEL:; @@ -941,19 +750,56 @@ val* var_flow2 /* var flow2: FlowContext */; val* var1 /* : FlowContext */; val* var_flow /* var flow: FlowContext */; val* var2 /* : Array[FlowContext] */; -val* var3 /* : nullable ANode */; +val* var4 /* : Array[FlowContext] */; +val* var5 /* : nullable ANode */; +val* var7 /* : nullable ANode */; var_flow1 = p0; var_flow2 = p1; var1 = NEW_flow__FlowContext(&type_flow__FlowContext); -((void (*)(val*))(var1->class->vft[COLOR_flow__FlowContext__init]))(var1) /* init on */; +{ +((void (*)(val*))(var1->class->vft[COLOR_kernel__Object__init]))(var1) /* init on */; +} var_flow = var1; -var2 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__flows]))(self) /* flows on */; -((void (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var2, var_flow) /* add on */; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__Visitor__current_node]))(self) /* current_node on */; -((void (*)(val*, val*))(var_flow->class->vft[COLOR_flow__FlowContext__node_61d]))(var_flow, var3) /* node= on */; -((void (*)(val*, val*))(var_flow->class->vft[COLOR_flow__FlowContext__add_previous]))(var_flow, var_flow1) /* add_previous on */; -((void (*)(val*, val*))(var_flow->class->vft[COLOR_flow__FlowContext__add_previous]))(var_flow, var_flow2) /* add_previous on */; -((void (*)(val*, val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(self, var_flow) /* current_flow_context= on */; +{ +{ /* Inline flow#FlowVisitor#flows (self) on */ +var4 = self->attrs[COLOR_flow__FlowVisitor___flows].val; /* _flows on */ +if (unlikely(var4 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 77); +show_backtrace(1); +} +var2 = var4; +RET_LABEL3:(void)0; +} +} +{ +array__Array__add(var2, var_flow); /* Direct call array#Array#add on */ +} +{ +{ /* Inline parser_nodes#Visitor#current_node (self) on */ +var7 = self->attrs[COLOR_parser_nodes__Visitor___current_node].val; /* _current_node on */ +var5 = var7; +RET_LABEL6:(void)0; +} +} +{ +{ /* Inline flow#FlowContext#node= (var_flow,var5) on */ +var_flow->attrs[COLOR_flow__FlowContext___node].val = var5; /* _node on */ +RET_LABEL8:(void)0; +} +} +{ +flow__FlowContext__add_previous(var_flow, var_flow1); /* Direct call flow#FlowContext#add_previous on */ +} +{ +flow__FlowContext__add_previous(var_flow, var_flow2); /* Direct call flow#FlowContext#add_previous on */ +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context= (self,var_flow) on */ +self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var_flow; /* _current_flow_context on */ +RET_LABEL9:(void)0; +} +} var = var_flow; goto RET_LABEL; RET_LABEL:; @@ -976,99 +822,230 @@ val* var_false_flow /* var false_flow: FlowContext */; val* var1 /* : FlowContext */; val* var_flow /* var flow: FlowContext */; val* var2 /* : Array[FlowContext] */; -val* var3 /* : nullable ANode */; +val* var4 /* : Array[FlowContext] */; +val* var5 /* : nullable ANode */; +val* var7 /* : nullable ANode */; var_true_flow = p0; var_false_flow = p1; var1 = NEW_flow__FlowContext(&type_flow__FlowContext); -((void (*)(val*))(var1->class->vft[COLOR_flow__FlowContext__init]))(var1) /* init on */; +{ +((void (*)(val*))(var1->class->vft[COLOR_kernel__Object__init]))(var1) /* init on */; +} var_flow = var1; -var2 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__flows]))(self) /* flows on */; -((void (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var2, var_flow) /* add on */; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__Visitor__current_node]))(self) /* current_node on */; -((void (*)(val*, val*))(var_flow->class->vft[COLOR_flow__FlowContext__node_61d]))(var_flow, var3) /* node= on */; -((void (*)(val*, val*))(var_flow->class->vft[COLOR_flow__FlowContext__add_previous]))(var_flow, var_true_flow) /* add_previous on */; -((void (*)(val*, val*))(var_flow->class->vft[COLOR_flow__FlowContext__add_previous]))(var_flow, var_false_flow) /* add_previous on */; -((void (*)(val*, val*))(var_flow->class->vft[COLOR_flow__FlowContext__when_true_61d]))(var_flow, var_true_flow) /* when_true= on */; -((void (*)(val*, val*))(var_flow->class->vft[COLOR_flow__FlowContext__when_false_61d]))(var_flow, var_false_flow) /* when_false= on */; -((void (*)(val*, val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(self, var_flow) /* current_flow_context= on */; -var = var_flow; -goto RET_LABEL; -RET_LABEL:; -return var; +{ +{ /* Inline flow#FlowVisitor#flows (self) on */ +var4 = self->attrs[COLOR_flow__FlowVisitor___flows].val; /* _flows on */ +if (unlikely(var4 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 77); +show_backtrace(1); } -/* method flow#FlowVisitor#make_true_false_flow for (self: Object, FlowContext, FlowContext): FlowContext */ -val* VIRTUAL_flow__FlowVisitor__make_true_false_flow(val* self, val* p0, val* p1) { -val* var /* : FlowContext */; -val* var1 /* : FlowContext */; -var1 = flow__FlowVisitor__make_true_false_flow(self, p0, p1); -var = var1; -RET_LABEL:; +var2 = var4; +RET_LABEL3:(void)0; +} +} +{ +array__Array__add(var2, var_flow); /* Direct call array#Array#add on */ +} +{ +{ /* Inline parser_nodes#Visitor#current_node (self) on */ +var7 = self->attrs[COLOR_parser_nodes__Visitor___current_node].val; /* _current_node on */ +var5 = var7; +RET_LABEL6:(void)0; +} +} +{ +{ /* Inline flow#FlowContext#node= (var_flow,var5) on */ +var_flow->attrs[COLOR_flow__FlowContext___node].val = var5; /* _node on */ +RET_LABEL8:(void)0; +} +} +{ +flow__FlowContext__add_previous(var_flow, var_true_flow); /* Direct call flow#FlowContext#add_previous on */ +} +{ +flow__FlowContext__add_previous(var_flow, var_false_flow); /* Direct call flow#FlowContext#add_previous on */ +} +{ +{ /* Inline flow#FlowContext#when_true= (var_flow,var_true_flow) on */ +var_flow->attrs[COLOR_flow__FlowContext___when_true].val = var_true_flow; /* _when_true on */ +RET_LABEL9:(void)0; +} +} +{ +{ /* Inline flow#FlowContext#when_false= (var_flow,var_false_flow) on */ +var_flow->attrs[COLOR_flow__FlowContext___when_false].val = var_false_flow; /* _when_false on */ +RET_LABEL10:(void)0; +} +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context= (self,var_flow) on */ +self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var_flow; /* _current_flow_context on */ +RET_LABEL11:(void)0; +} +} +var = var_flow; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method flow#FlowVisitor#make_true_false_flow for (self: Object, FlowContext, FlowContext): FlowContext */ +val* VIRTUAL_flow__FlowVisitor__make_true_false_flow(val* self, val* p0, val* p1) { +val* var /* : FlowContext */; +val* var1 /* : FlowContext */; +var1 = flow__FlowVisitor__make_true_false_flow(self, p0, p1); +var = var1; +RET_LABEL:; return var; } /* method flow#FlowVisitor#make_sub_true_false_flow for (self: FlowVisitor): FlowContext */ val* flow__FlowVisitor__make_sub_true_false_flow(val* self) { val* var /* : FlowContext */; val* var1 /* : FlowContext */; +val* var3 /* : FlowContext */; val* var_orig_flow /* var orig_flow: FlowContext */; -val* var2 /* : FlowContext */; +val* var4 /* : FlowContext */; val* var_true_flow /* var true_flow: FlowContext */; -val* var3 /* : Array[FlowContext] */; -val* var4 /* : nullable ANode */; +val* var5 /* : Array[FlowContext] */; +val* var7 /* : Array[FlowContext] */; +val* var8 /* : nullable ANode */; +val* var10 /* : nullable ANode */; static val* varonce; -val* var5 /* : String */; -char* var6 /* : NativeString */; -long var7 /* : Int */; -val* var8 /* : String */; -val* var9 /* : FlowContext */; -val* var_false_flow /* var false_flow: FlowContext */; -val* var10 /* : Array[FlowContext] */; -val* var11 /* : nullable ANode */; -static val* varonce12; -val* var13 /* : String */; -char* var14 /* : NativeString */; -long var15 /* : Int */; -val* var16 /* : String */; +val* var12 /* : String */; +char* var13 /* : NativeString */; +long var14 /* : Int */; +val* var15 /* : FlatString */; val* var17 /* : FlowContext */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(self) /* current_flow_context on */; +val* var_false_flow /* var false_flow: FlowContext */; +val* var18 /* : Array[FlowContext] */; +val* var20 /* : Array[FlowContext] */; +val* var21 /* : nullable ANode */; +val* var23 /* : nullable ANode */; +static val* varonce25; +val* var26 /* : String */; +char* var27 /* : NativeString */; +long var28 /* : Int */; +val* var29 /* : FlatString */; +val* var31 /* : FlowContext */; +{ +{ /* Inline flow#FlowVisitor#current_flow_context (self) on */ +var3 = self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 36); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} var_orig_flow = var1; -var2 = NEW_flow__FlowContext(&type_flow__FlowContext); -((void (*)(val*))(var2->class->vft[COLOR_flow__FlowContext__init]))(var2) /* init on */; -var_true_flow = var2; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__flows]))(self) /* flows on */; -((void (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var3, var_true_flow) /* add on */; -var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__Visitor__current_node]))(self) /* current_node on */; -((void (*)(val*, val*))(var_true_flow->class->vft[COLOR_flow__FlowContext__node_61d]))(var_true_flow, var4) /* node= on */; -((void (*)(val*, val*))(var_true_flow->class->vft[COLOR_flow__FlowContext__add_previous]))(var_true_flow, var_orig_flow) /* add_previous on */; +var4 = NEW_flow__FlowContext(&type_flow__FlowContext); +{ +((void (*)(val*))(var4->class->vft[COLOR_kernel__Object__init]))(var4) /* init on */; +} +var_true_flow = var4; +{ +{ /* Inline flow#FlowVisitor#flows (self) on */ +var7 = self->attrs[COLOR_flow__FlowVisitor___flows].val; /* _flows on */ +if (unlikely(var7 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 77); +show_backtrace(1); +} +var5 = var7; +RET_LABEL6:(void)0; +} +} +{ +array__Array__add(var5, var_true_flow); /* Direct call array#Array#add on */ +} +{ +{ /* Inline parser_nodes#Visitor#current_node (self) on */ +var10 = self->attrs[COLOR_parser_nodes__Visitor___current_node].val; /* _current_node on */ +var8 = var10; +RET_LABEL9:(void)0; +} +} +{ +{ /* Inline flow#FlowContext#node= (var_true_flow,var8) on */ +var_true_flow->attrs[COLOR_flow__FlowContext___node].val = var8; /* _node on */ +RET_LABEL11:(void)0; +} +} +{ +flow__FlowContext__add_previous(var_true_flow, var_orig_flow); /* Direct call flow#FlowContext#add_previous on */ +} if (varonce) { -var5 = varonce; -} else { -var6 = "TRUE"; -var7 = 4; -var8 = string__NativeString__to_s_with_length(var6, var7); -var5 = var8; -varonce = var5; -} -((void (*)(val*, val*))(var_true_flow->class->vft[COLOR_flow__FlowContext__name_61d]))(var_true_flow, var5) /* name= on */; -var9 = NEW_flow__FlowContext(&type_flow__FlowContext); -((void (*)(val*))(var9->class->vft[COLOR_flow__FlowContext__init]))(var9) /* init on */; -var_false_flow = var9; -var10 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__flows]))(self) /* flows on */; -((void (*)(val*, val*))(var10->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var10, var_false_flow) /* add on */; -var11 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__Visitor__current_node]))(self) /* current_node on */; -((void (*)(val*, val*))(var_false_flow->class->vft[COLOR_flow__FlowContext__node_61d]))(var_false_flow, var11) /* node= on */; -((void (*)(val*, val*))(var_false_flow->class->vft[COLOR_flow__FlowContext__add_previous]))(var_false_flow, var_orig_flow) /* add_previous on */; -if (varonce12) { -var13 = varonce12; +var12 = varonce; +} else { +var13 = "TRUE"; +var14 = 4; +var15 = string__NativeString__to_s_with_length(var13, var14); +var12 = var15; +varonce = var12; +} +{ +{ /* Inline flow#FlowContext#name= (var_true_flow,var12) on */ +var_true_flow->attrs[COLOR_flow__FlowContext___name].val = var12; /* _name on */ +RET_LABEL16:(void)0; +} +} +var17 = NEW_flow__FlowContext(&type_flow__FlowContext); +{ +((void (*)(val*))(var17->class->vft[COLOR_kernel__Object__init]))(var17) /* init on */; +} +var_false_flow = var17; +{ +{ /* Inline flow#FlowVisitor#flows (self) on */ +var20 = self->attrs[COLOR_flow__FlowVisitor___flows].val; /* _flows on */ +if (unlikely(var20 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 77); +show_backtrace(1); +} +var18 = var20; +RET_LABEL19:(void)0; +} +} +{ +array__Array__add(var18, var_false_flow); /* Direct call array#Array#add on */ +} +{ +{ /* Inline parser_nodes#Visitor#current_node (self) on */ +var23 = self->attrs[COLOR_parser_nodes__Visitor___current_node].val; /* _current_node on */ +var21 = var23; +RET_LABEL22:(void)0; +} +} +{ +{ /* Inline flow#FlowContext#node= (var_false_flow,var21) on */ +var_false_flow->attrs[COLOR_flow__FlowContext___node].val = var21; /* _node on */ +RET_LABEL24:(void)0; +} +} +{ +flow__FlowContext__add_previous(var_false_flow, var_orig_flow); /* Direct call flow#FlowContext#add_previous on */ +} +if (varonce25) { +var26 = varonce25; } else { -var14 = "FALSE"; -var15 = 5; -var16 = string__NativeString__to_s_with_length(var14, var15); -var13 = var16; -varonce12 = var13; -} -((void (*)(val*, val*))(var_false_flow->class->vft[COLOR_flow__FlowContext__name_61d]))(var_false_flow, var13) /* name= on */; -var17 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_flow__FlowVisitor__make_true_false_flow]))(self, var_true_flow, var_false_flow) /* make_true_false_flow on */; -var = var17; +var27 = "FALSE"; +var28 = 5; +var29 = string__NativeString__to_s_with_length(var27, var28); +var26 = var29; +varonce25 = var26; +} +{ +{ /* Inline flow#FlowContext#name= (var_false_flow,var26) on */ +var_false_flow->attrs[COLOR_flow__FlowContext___name].val = var26; /* _name on */ +RET_LABEL30:(void)0; +} +} +{ +var31 = flow__FlowVisitor__make_true_false_flow(self, var_true_flow, var_false_flow); +} +var = var31; goto RET_LABEL; RET_LABEL:; return var; @@ -1088,21 +1065,73 @@ val* var /* : FlowContext */; val* var1 /* : FlowContext */; val* var_flow /* var flow: FlowContext */; val* var2 /* : Array[FlowContext] */; -val* var3 /* : nullable ANode */; -val* var4 /* : FlowContext */; -short int var5 /* : Bool */; +val* var4 /* : Array[FlowContext] */; +val* var5 /* : nullable ANode */; +val* var7 /* : nullable ANode */; +val* var9 /* : FlowContext */; +val* var11 /* : FlowContext */; +short int var12 /* : Bool */; var1 = NEW_flow__FlowContext(&type_flow__FlowContext); -((void (*)(val*))(var1->class->vft[COLOR_flow__FlowContext__init]))(var1) /* init on */; +{ +((void (*)(val*))(var1->class->vft[COLOR_kernel__Object__init]))(var1) /* init on */; +} var_flow = var1; -var2 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__flows]))(self) /* flows on */; -((void (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var2, var_flow) /* add on */; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__Visitor__current_node]))(self) /* current_node on */; -((void (*)(val*, val*))(var_flow->class->vft[COLOR_flow__FlowContext__node_61d]))(var_flow, var3) /* node= on */; -var4 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(self) /* current_flow_context on */; -((void (*)(val*, val*))(var_flow->class->vft[COLOR_flow__FlowContext__add_previous]))(var_flow, var4) /* add_previous on */; -var5 = 1; -((void (*)(val*, short int))(var_flow->class->vft[COLOR_flow__FlowContext__is_marked_unreachable_61d]))(var_flow, var5) /* is_marked_unreachable= on */; -((void (*)(val*, val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(self, var_flow) /* current_flow_context= on */; +{ +{ /* Inline flow#FlowVisitor#flows (self) on */ +var4 = self->attrs[COLOR_flow__FlowVisitor___flows].val; /* _flows on */ +if (unlikely(var4 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 77); +show_backtrace(1); +} +var2 = var4; +RET_LABEL3:(void)0; +} +} +{ +array__Array__add(var2, var_flow); /* Direct call array#Array#add on */ +} +{ +{ /* Inline parser_nodes#Visitor#current_node (self) on */ +var7 = self->attrs[COLOR_parser_nodes__Visitor___current_node].val; /* _current_node on */ +var5 = var7; +RET_LABEL6:(void)0; +} +} +{ +{ /* Inline flow#FlowContext#node= (var_flow,var5) on */ +var_flow->attrs[COLOR_flow__FlowContext___node].val = var5; /* _node on */ +RET_LABEL8:(void)0; +} +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context (self) on */ +var11 = self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on */ +if (unlikely(var11 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 36); +show_backtrace(1); +} +var9 = var11; +RET_LABEL10:(void)0; +} +} +{ +flow__FlowContext__add_previous(var_flow, var9); /* Direct call flow#FlowContext#add_previous on */ +} +var12 = 1; +{ +{ /* Inline flow#FlowContext#is_marked_unreachable= (var_flow,var12) on */ +var_flow->attrs[COLOR_flow__FlowContext___is_marked_unreachable].s = var12; /* _is_marked_unreachable on */ +RET_LABEL13:(void)0; +} +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context= (self,var_flow) on */ +self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var_flow; /* _current_flow_context on */ +RET_LABEL14:(void)0; +} +} var = var_flow; goto RET_LABEL; RET_LABEL:; @@ -1123,15 +1152,25 @@ val* var_before_loop /* var before_loop: FlowContext */; val* var_escapemark /* var escapemark: nullable EscapeMark */; val* var /* : null */; short int var1 /* : Bool */; -val* var2 /* : Array[AContinueExpr] */; -val* var3 /* : Iterator[nullable Object] */; +short int var2 /* : Bool */; +val* var_other /* var other: nullable Object */; short int var4 /* : Bool */; -val* var5 /* : nullable Object */; -val* var_b /* var b: AContinueExpr */; -val* var6 /* : nullable FlowContext */; +short int var6 /* : Bool */; +val* var7 /* : Array[AEscapeExpr] */; +val* var9 /* : Array[AEscapeExpr] */; +val* var_ /* var : Array[AEscapeExpr] */; +val* var10 /* : ArrayIterator[nullable Object] */; +val* var_11 /* var : ArrayIterator[AEscapeExpr] */; +short int var12 /* : Bool */; +val* var13 /* : nullable Object */; +val* var_b /* var b: AEscapeExpr */; +val* var14 /* : nullable FlowContext */; val* var_before /* var before: nullable FlowContext */; -val* var7 /* : null */; -short int var8 /* : Bool */; +val* var15 /* : null */; +short int var16 /* : Bool */; +short int var17 /* : Bool */; +short int var19 /* : Bool */; +short int var21 /* : Bool */; var_before_loop = p0; var_escapemark = p1; var = NULL; @@ -1140,39 +1179,106 @@ var1 = 1; /* is null */ } else { var1 = 0; /* arg is null but recv is not */ } +if (0) { +{ /* Inline kernel#Object#== (var_escapemark,var) on */ +var_other = var; +{ +{ /* Inline kernel#Object#is_same_instance (var_escapemark,var_other) on */ +var6 = var_escapemark == var_other; +var4 = var6; +goto RET_LABEL5; +RET_LABEL5:(void)0; +} +} +var2 = var4; +goto RET_LABEL3; +RET_LABEL3:(void)0; +} +var1 = var2; +} if (var1){ goto RET_LABEL; } else { } -var2 = ((val* (*)(val*))(var_escapemark->class->vft[COLOR_scope__EscapeMark__continues]))(var_escapemark) /* continues on */; -var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on */; +{ +{ /* Inline scope#EscapeMark#escapes (var_escapemark) on */ +var9 = var_escapemark->attrs[COLOR_scope__EscapeMark___escapes].val; /* _escapes on */ +if (unlikely(var9 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _escapes"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 57); +show_backtrace(1); +} +var7 = var9; +RET_LABEL8:(void)0; +} +} +var_ = var7; +{ +var10 = array__AbstractArrayRead__iterator(var_); +} +var_11 = var10; for(;;) { -var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on */; -if(!var4) break; -var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on */; -var_b = var5; -var6 = ((val* (*)(val*))(var_b->class->vft[COLOR_flow__AContinueExpr__before_flow_context]))(var_b) /* before_flow_context on */; -var_before = var6; -var7 = NULL; +{ +var12 = array__ArrayIterator__is_ok(var_11); +} +if (var12){ +{ +var13 = array__ArrayIterator__item(var_11); +} +var_b = var13; +{ +var14 = flow__AEscapeExpr__before_flow_context(var_b); +} +var_before = var14; +var15 = NULL; if (var_before == NULL) { -var8 = 1; /* is null */ +var16 = 1; /* is null */ } else { -var8 = 0; /* arg is null but recv is not */ +var16 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_before,var15) on */ +var_other = var15; +{ +{ /* Inline kernel#Object#is_same_instance (var_before,var_other) on */ +var21 = var_before == var_other; +var19 = var21; +goto RET_LABEL20; +RET_LABEL20:(void)0; +} +} +var17 = var19; +goto RET_LABEL18; +RET_LABEL18:(void)0; } -if (var8){ -goto CONTINUE_label; +var16 = var17; +} +if (var16){ +goto BREAK_label; } else { } -((void (*)(val*, val*))(var_before_loop->class->vft[COLOR_flow__FlowContext__add_loop]))(var_before_loop, var_before) /* add_loop on */; -CONTINUE_label: (void)0; -((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on */; +{ +flow__FlowContext__add_loop(var_before_loop, var_before); /* Direct call flow#FlowContext#add_loop on */ } BREAK_label: (void)0; +{ +array__ArrayIterator__next(var_11); /* Direct call array#ArrayIterator#next on */ +} +} else { +goto BREAK_label22; +} +} +BREAK_label22: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_11) on */ +RET_LABEL23:(void)0; +} +} RET_LABEL:; } /* method flow#FlowVisitor#merge_continues_to for (self: Object, FlowContext, nullable EscapeMark) */ void VIRTUAL_flow__FlowVisitor__merge_continues_to(val* self, val* p0, val* p1) { -flow__FlowVisitor__merge_continues_to(self, p0, p1); +flow__FlowVisitor__merge_continues_to(self, p0, p1); /* Direct call flow#FlowVisitor#merge_continues_to on */ RET_LABEL:; } /* method flow#FlowVisitor#merge_breaks for (self: FlowVisitor, nullable EscapeMark) */ @@ -1180,17 +1286,28 @@ void flow__FlowVisitor__merge_breaks(val* self, val* p0) { val* var_escapemark /* var escapemark: nullable EscapeMark */; val* var /* : null */; short int var1 /* : Bool */; -val* var2 /* : Array[ABreakExpr] */; -val* var3 /* : Iterator[nullable Object] */; +short int var2 /* : Bool */; +val* var_other /* var other: nullable Object */; short int var4 /* : Bool */; -val* var5 /* : nullable Object */; -val* var_b /* var b: ABreakExpr */; -val* var6 /* : nullable FlowContext */; +short int var6 /* : Bool */; +val* var7 /* : Array[AEscapeExpr] */; +val* var9 /* : Array[AEscapeExpr] */; +val* var_ /* var : Array[AEscapeExpr] */; +val* var10 /* : ArrayIterator[nullable Object] */; +val* var_11 /* var : ArrayIterator[AEscapeExpr] */; +short int var12 /* : Bool */; +val* var13 /* : nullable Object */; +val* var_b /* var b: AEscapeExpr */; +val* var14 /* : nullable FlowContext */; val* var_before /* var before: nullable FlowContext */; -val* var7 /* : null */; -short int var8 /* : Bool */; -val* var9 /* : FlowContext */; -val* var10 /* : FlowContext */; +val* var15 /* : null */; +short int var16 /* : Bool */; +short int var17 /* : Bool */; +short int var19 /* : Bool */; +short int var21 /* : Bool */; +val* var22 /* : FlowContext */; +val* var24 /* : FlowContext */; +val* var25 /* : FlowContext */; var_escapemark = p0; var = NULL; if (var_escapemark == NULL) { @@ -1198,51 +1315,128 @@ var1 = 1; /* is null */ } else { var1 = 0; /* arg is null but recv is not */ } +if (0) { +{ /* Inline kernel#Object#== (var_escapemark,var) on */ +var_other = var; +{ +{ /* Inline kernel#Object#is_same_instance (var_escapemark,var_other) on */ +var6 = var_escapemark == var_other; +var4 = var6; +goto RET_LABEL5; +RET_LABEL5:(void)0; +} +} +var2 = var4; +goto RET_LABEL3; +RET_LABEL3:(void)0; +} +var1 = var2; +} if (var1){ goto RET_LABEL; } else { } -var2 = ((val* (*)(val*))(var_escapemark->class->vft[COLOR_scope__EscapeMark__breaks]))(var_escapemark) /* breaks on */; -var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on */; +{ +{ /* Inline scope#EscapeMark#escapes (var_escapemark) on */ +var9 = var_escapemark->attrs[COLOR_scope__EscapeMark___escapes].val; /* _escapes on */ +if (unlikely(var9 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _escapes"); +PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 57); +show_backtrace(1); +} +var7 = var9; +RET_LABEL8:(void)0; +} +} +var_ = var7; +{ +var10 = array__AbstractArrayRead__iterator(var_); +} +var_11 = var10; for(;;) { -var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on */; -if(!var4) break; -var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on */; -var_b = var5; -var6 = ((val* (*)(val*))(var_b->class->vft[COLOR_flow__ABreakExpr__before_flow_context]))(var_b) /* before_flow_context on */; -var_before = var6; -var7 = NULL; +{ +var12 = array__ArrayIterator__is_ok(var_11); +} +if (var12){ +{ +var13 = array__ArrayIterator__item(var_11); +} +var_b = var13; +{ +var14 = flow__AEscapeExpr__before_flow_context(var_b); +} +var_before = var14; +var15 = NULL; if (var_before == NULL) { -var8 = 1; /* is null */ +var16 = 1; /* is null */ } else { -var8 = 0; /* arg is null but recv is not */ +var16 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_before,var15) on */ +var_other = var15; +{ +{ /* Inline kernel#Object#is_same_instance (var_before,var_other) on */ +var21 = var_before == var_other; +var19 = var21; +goto RET_LABEL20; +RET_LABEL20:(void)0; } -if (var8){ -goto CONTINUE_label; +} +var17 = var19; +goto RET_LABEL18; +RET_LABEL18:(void)0; +} +var16 = var17; +} +if (var16){ +goto BREAK_label; } else { } -var9 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(self) /* current_flow_context on */; -var10 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_flow__FlowVisitor__make_merge_flow]))(self, var9, var_before) /* make_merge_flow on */; -var10; -CONTINUE_label: (void)0; -((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on */; +{ +{ /* Inline flow#FlowVisitor#current_flow_context (self) on */ +var24 = self->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on */ +if (unlikely(var24 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 36); +show_backtrace(1); +} +var22 = var24; +RET_LABEL23:(void)0; +} +} +{ +var25 = flow__FlowVisitor__make_merge_flow(self, var22, var_before); } BREAK_label: (void)0; +{ +array__ArrayIterator__next(var_11); /* Direct call array#ArrayIterator#next on */ +} +} else { +goto BREAK_label26; +} +} +BREAK_label26: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_11) on */ +RET_LABEL27:(void)0; +} +} RET_LABEL:; } /* method flow#FlowVisitor#merge_breaks for (self: Object, nullable EscapeMark) */ void VIRTUAL_flow__FlowVisitor__merge_breaks(val* self, val* p0) { -flow__FlowVisitor__merge_breaks(self, p0); +flow__FlowVisitor__merge_breaks(self, p0); /* Direct call flow#FlowVisitor#merge_breaks on */ RET_LABEL:; } /* method flow#FlowContext#previous for (self: FlowContext): Array[FlowContext] */ val* flow__FlowContext__previous(val* self) { val* var /* : Array[FlowContext] */; val* var1 /* : Array[FlowContext] */; -var1 = self->attrs[COLOR_flow__FlowContext___64dprevious].val; /* @previous on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @previous"); -fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 192); +var1 = self->attrs[COLOR_flow__FlowContext___previous].val; /* _previous on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 189); show_backtrace(1); } var = var1; @@ -1253,29 +1447,29 @@ return var; val* VIRTUAL_flow__FlowContext__previous(val* self) { val* var /* : Array[FlowContext] */; val* var1 /* : Array[FlowContext] */; -var1 = flow__FlowContext__previous(self); -var = var1; -RET_LABEL:; -return var; +val* var3 /* : Array[FlowContext] */; +{ /* Inline flow#FlowContext#previous (self) on */ +var3 = self->attrs[COLOR_flow__FlowContext___previous].val; /* _previous on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 189); +show_backtrace(1); } -/* method flow#FlowContext#previous= for (self: FlowContext, Array[FlowContext]) */ -void flow__FlowContext__previous_61d(val* self, val* p0) { -self->attrs[COLOR_flow__FlowContext___64dprevious].val = p0; /* @previous on */ -RET_LABEL:; +var1 = var3; +RET_LABEL2:(void)0; } -/* method flow#FlowContext#previous= for (self: Object, Array[FlowContext]) */ -void VIRTUAL_flow__FlowContext__previous_61d(val* self, val* p0) { -flow__FlowContext__previous_61d(self, p0); +var = var1; RET_LABEL:; +return var; } /* method flow#FlowContext#loops for (self: FlowContext): Array[FlowContext] */ val* flow__FlowContext__loops(val* self) { val* var /* : Array[FlowContext] */; val* var1 /* : Array[FlowContext] */; -var1 = self->attrs[COLOR_flow__FlowContext___64dloops].val; /* @loops on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @loops"); -fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 195); +var1 = self->attrs[COLOR_flow__FlowContext___loops].val; /* _loops on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _loops"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 192); show_backtrace(1); } var = var1; @@ -1286,26 +1480,26 @@ return var; val* VIRTUAL_flow__FlowContext__loops(val* self) { val* var /* : Array[FlowContext] */; val* var1 /* : Array[FlowContext] */; -var1 = flow__FlowContext__loops(self); -var = var1; -RET_LABEL:; -return var; +val* var3 /* : Array[FlowContext] */; +{ /* Inline flow#FlowContext#loops (self) on */ +var3 = self->attrs[COLOR_flow__FlowContext___loops].val; /* _loops on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _loops"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 192); +show_backtrace(1); } -/* method flow#FlowContext#loops= for (self: FlowContext, Array[FlowContext]) */ -void flow__FlowContext__loops_61d(val* self, val* p0) { -self->attrs[COLOR_flow__FlowContext___64dloops].val = p0; /* @loops on */ -RET_LABEL:; +var1 = var3; +RET_LABEL2:(void)0; } -/* method flow#FlowContext#loops= for (self: Object, Array[FlowContext]) */ -void VIRTUAL_flow__FlowContext__loops_61d(val* self, val* p0) { -flow__FlowContext__loops_61d(self, p0); +var = var1; RET_LABEL:; +return var; } /* method flow#FlowContext#is_marked_unreachable for (self: FlowContext): Bool */ short int flow__FlowContext__is_marked_unreachable(val* self) { short int var /* : Bool */; short int var1 /* : Bool */; -var1 = self->attrs[COLOR_flow__FlowContext___64dis_marked_unreachable].s; /* @is_marked_unreachable on */ +var1 = self->attrs[COLOR_flow__FlowContext___is_marked_unreachable].s; /* _is_marked_unreachable on */ var = var1; RET_LABEL:; return var; @@ -1314,66 +1508,111 @@ return var; short int VIRTUAL_flow__FlowContext__is_marked_unreachable(val* self) { short int var /* : Bool */; short int var1 /* : Bool */; -var1 = flow__FlowContext__is_marked_unreachable(self); +short int var3 /* : Bool */; +{ /* Inline flow#FlowContext#is_marked_unreachable (self) on */ +var3 = self->attrs[COLOR_flow__FlowContext___is_marked_unreachable].s; /* _is_marked_unreachable on */ +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method flow#FlowContext#is_marked_unreachable= for (self: FlowContext, Bool) */ void flow__FlowContext__is_marked_unreachable_61d(val* self, short int p0) { -self->attrs[COLOR_flow__FlowContext___64dis_marked_unreachable].s = p0; /* @is_marked_unreachable on */ +self->attrs[COLOR_flow__FlowContext___is_marked_unreachable].s = p0; /* _is_marked_unreachable on */ RET_LABEL:; } /* method flow#FlowContext#is_marked_unreachable= for (self: Object, Bool) */ void VIRTUAL_flow__FlowContext__is_marked_unreachable_61d(val* self, short int p0) { -flow__FlowContext__is_marked_unreachable_61d(self, p0); +{ /* Inline flow#FlowContext#is_marked_unreachable= (self,p0) on */ +self->attrs[COLOR_flow__FlowContext___is_marked_unreachable].s = p0; /* _is_marked_unreachable on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method flow#FlowContext#is_unreachable for (self: FlowContext): Bool */ short int flow__FlowContext__is_unreachable(val* self) { short int var /* : Bool */; short int var1 /* : Bool */; -short int var2 /* : Bool */; short int var3 /* : Bool */; short int var4 /* : Bool */; -val* var5 /* : Array[FlowContext] */; -long var6 /* : Int */; -long var7 /* : Int */; +short int var5 /* : Bool */; +short int var7 /* : Bool */; short int var8 /* : Bool */; -short int var10 /* : Bool */; -short int var11 /* : Bool */; -short int var12 /* : Bool */; -var1 = ((short int (*)(val*))(self->class->vft[COLOR_flow__FlowContext__is_marked_unreachable]))(self) /* is_marked_unreachable on */; +val* var9 /* : Array[FlowContext] */; +val* var11 /* : Array[FlowContext] */; +long var12 /* : Int */; +long var14 /* : Int */; +long var15 /* : Int */; +short int var16 /* : Bool */; +short int var17 /* : Bool */; +short int var19 /* : Bool */; +short int var20 /* : Bool */; +short int var21 /* : Bool */; +{ +{ /* Inline flow#FlowContext#is_marked_unreachable (self) on */ +var3 = self->attrs[COLOR_flow__FlowContext___is_marked_unreachable].s; /* _is_marked_unreachable on */ +var1 = var3; +RET_LABEL2:(void)0; +} +} if (var1){ -var2 = 1; -var = var2; +var4 = 1; +var = var4; goto RET_LABEL; } else { } -var3 = ((short int (*)(val*))(self->class->vft[COLOR_flow__FlowContext__is_start]))(self) /* is_start on */; -if (var3){ -var4 = 0; -var = var4; +{ +{ /* Inline flow#FlowContext#is_start (self) on */ +var7 = self->attrs[COLOR_flow__FlowContext___is_start].s; /* _is_start on */ +var5 = var7; +RET_LABEL6:(void)0; +} +} +if (var5){ +var8 = 0; +var = var8; goto RET_LABEL; } else { } -var5 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowContext__previous]))(self) /* previous on */; -var6 = ((long (*)(val*))(var5->class->vft[COLOR_abstract_collection__Collection__length]))(var5) /* length on */; -var7 = 0; -{ /* Inline kernel#Int#== (var6,var7) */ -var10 = var6 == var7; -var8 = var10; -goto RET_LABEL9; -RET_LABEL9:(void)0; +{ +{ /* Inline flow#FlowContext#previous (self) on */ +var11 = self->attrs[COLOR_flow__FlowContext___previous].val; /* _previous on */ +if (unlikely(var11 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 189); +show_backtrace(1); } -if (var8){ -var11 = 1; -var = var11; +var9 = var11; +RET_LABEL10:(void)0; +} +} +{ +{ /* Inline array#AbstractArrayRead#length (var9) on */ +var14 = var9->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on */ +var12 = var14; +RET_LABEL13:(void)0; +} +} +var15 = 0; +{ +{ /* Inline kernel#Int#== (var12,var15) on */ +var19 = var12 == var15; +var17 = var19; +goto RET_LABEL18; +RET_LABEL18:(void)0; +} +var16 = var17; +} +if (var16){ +var20 = 1; +var = var20; goto RET_LABEL; } else { } -var12 = 0; -var = var12; +var21 = 0; +var = var21; goto RET_LABEL; RET_LABEL:; return var; @@ -1391,7 +1630,7 @@ return var; short int flow__FlowContext__is_already_unreachable(val* self) { short int var /* : Bool */; short int var1 /* : Bool */; -var1 = self->attrs[COLOR_flow__FlowContext___64dis_already_unreachable].s; /* @is_already_unreachable on */ +var1 = self->attrs[COLOR_flow__FlowContext___is_already_unreachable].s; /* _is_already_unreachable on */ var = var1; RET_LABEL:; return var; @@ -1400,26 +1639,34 @@ return var; short int VIRTUAL_flow__FlowContext__is_already_unreachable(val* self) { short int var /* : Bool */; short int var1 /* : Bool */; -var1 = flow__FlowContext__is_already_unreachable(self); +short int var3 /* : Bool */; +{ /* Inline flow#FlowContext#is_already_unreachable (self) on */ +var3 = self->attrs[COLOR_flow__FlowContext___is_already_unreachable].s; /* _is_already_unreachable on */ +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method flow#FlowContext#is_already_unreachable= for (self: FlowContext, Bool) */ void flow__FlowContext__is_already_unreachable_61d(val* self, short int p0) { -self->attrs[COLOR_flow__FlowContext___64dis_already_unreachable].s = p0; /* @is_already_unreachable on */ +self->attrs[COLOR_flow__FlowContext___is_already_unreachable].s = p0; /* _is_already_unreachable on */ RET_LABEL:; } /* method flow#FlowContext#is_already_unreachable= for (self: Object, Bool) */ void VIRTUAL_flow__FlowContext__is_already_unreachable_61d(val* self, short int p0) { -flow__FlowContext__is_already_unreachable_61d(self, p0); +{ /* Inline flow#FlowContext#is_already_unreachable= (self,p0) on */ +self->attrs[COLOR_flow__FlowContext___is_already_unreachable].s = p0; /* _is_already_unreachable on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method flow#FlowContext#is_start for (self: FlowContext): Bool */ short int flow__FlowContext__is_start(val* self) { short int var /* : Bool */; short int var1 /* : Bool */; -var1 = self->attrs[COLOR_flow__FlowContext___64dis_start].s; /* @is_start on */ +var1 = self->attrs[COLOR_flow__FlowContext___is_start].s; /* _is_start on */ var = var1; RET_LABEL:; return var; @@ -1428,26 +1675,34 @@ return var; short int VIRTUAL_flow__FlowContext__is_start(val* self) { short int var /* : Bool */; short int var1 /* : Bool */; -var1 = flow__FlowContext__is_start(self); +short int var3 /* : Bool */; +{ /* Inline flow#FlowContext#is_start (self) on */ +var3 = self->attrs[COLOR_flow__FlowContext___is_start].s; /* _is_start on */ +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method flow#FlowContext#is_start= for (self: FlowContext, Bool) */ void flow__FlowContext__is_start_61d(val* self, short int p0) { -self->attrs[COLOR_flow__FlowContext___64dis_start].s = p0; /* @is_start on */ +self->attrs[COLOR_flow__FlowContext___is_start].s = p0; /* _is_start on */ RET_LABEL:; } /* method flow#FlowContext#is_start= for (self: Object, Bool) */ void VIRTUAL_flow__FlowContext__is_start_61d(val* self, short int p0) { -flow__FlowContext__is_start_61d(self, p0); +{ /* Inline flow#FlowContext#is_start= (self,p0) on */ +self->attrs[COLOR_flow__FlowContext___is_start].s = p0; /* _is_start on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method flow#FlowContext#node for (self: FlowContext): nullable ANode */ val* flow__FlowContext__node(val* self) { val* var /* : nullable ANode */; val* var1 /* : nullable ANode */; -var1 = self->attrs[COLOR_flow__FlowContext___64dnode].val; /* @node on */ +var1 = self->attrs[COLOR_flow__FlowContext___node].val; /* _node on */ var = var1; RET_LABEL:; return var; @@ -1456,62 +1711,50 @@ return var; val* VIRTUAL_flow__FlowContext__node(val* self) { val* var /* : nullable ANode */; val* var1 /* : nullable ANode */; -var1 = flow__FlowContext__node(self); +val* var3 /* : nullable ANode */; +{ /* Inline flow#FlowContext#node (self) on */ +var3 = self->attrs[COLOR_flow__FlowContext___node].val; /* _node on */ +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method flow#FlowContext#node= for (self: FlowContext, nullable ANode) */ void flow__FlowContext__node_61d(val* self, val* p0) { -self->attrs[COLOR_flow__FlowContext___64dnode].val = p0; /* @node on */ +self->attrs[COLOR_flow__FlowContext___node].val = p0; /* _node on */ RET_LABEL:; } /* method flow#FlowContext#node= for (self: Object, nullable ANode) */ void VIRTUAL_flow__FlowContext__node_61d(val* self, val* p0) { -flow__FlowContext__node_61d(self, p0); -RET_LABEL:; -} -/* method flow#FlowContext#name for (self: FlowContext): String */ -val* flow__FlowContext__name(val* self) { -val* var /* : String */; -val* var1 /* : String */; -var1 = self->attrs[COLOR_flow__FlowContext___64dname].val; /* @name on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @name"); -fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 225); -show_backtrace(1); -} -var = var1; -RET_LABEL:; -return var; +{ /* Inline flow#FlowContext#node= (self,p0) on */ +self->attrs[COLOR_flow__FlowContext___node].val = p0; /* _node on */ +RET_LABEL1:(void)0; } -/* method flow#FlowContext#name for (self: Object): String */ -val* VIRTUAL_flow__FlowContext__name(val* self) { -val* var /* : String */; -val* var1 /* : String */; -var1 = flow__FlowContext__name(self); -var = var1; RET_LABEL:; -return var; } /* method flow#FlowContext#name= for (self: FlowContext, String) */ void flow__FlowContext__name_61d(val* self, val* p0) { -self->attrs[COLOR_flow__FlowContext___64dname].val = p0; /* @name on */ +self->attrs[COLOR_flow__FlowContext___name].val = p0; /* _name on */ RET_LABEL:; } /* method flow#FlowContext#name= for (self: Object, String) */ void VIRTUAL_flow__FlowContext__name_61d(val* self, val* p0) { -flow__FlowContext__name_61d(self, p0); +{ /* Inline flow#FlowContext#name= (self,p0) on */ +self->attrs[COLOR_flow__FlowContext___name].val = p0; /* _name on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method flow#FlowContext#when_true for (self: FlowContext): FlowContext */ val* flow__FlowContext__when_true(val* self) { val* var /* : FlowContext */; val* var1 /* : FlowContext */; -var1 = self->attrs[COLOR_flow__FlowContext___64dwhen_true].val; /* @when_true on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @when_true"); -fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 228); +var1 = self->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 225); show_backtrace(1); } var = var1; @@ -1522,29 +1765,42 @@ return var; val* VIRTUAL_flow__FlowContext__when_true(val* self) { val* var /* : FlowContext */; val* var1 /* : FlowContext */; -var1 = flow__FlowContext__when_true(self); +val* var3 /* : FlowContext */; +{ /* Inline flow#FlowContext#when_true (self) on */ +var3 = self->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 225); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method flow#FlowContext#when_true= for (self: FlowContext, FlowContext) */ void flow__FlowContext__when_true_61d(val* self, val* p0) { -self->attrs[COLOR_flow__FlowContext___64dwhen_true].val = p0; /* @when_true on */ +self->attrs[COLOR_flow__FlowContext___when_true].val = p0; /* _when_true on */ RET_LABEL:; } /* method flow#FlowContext#when_true= for (self: Object, FlowContext) */ void VIRTUAL_flow__FlowContext__when_true_61d(val* self, val* p0) { -flow__FlowContext__when_true_61d(self, p0); +{ /* Inline flow#FlowContext#when_true= (self,p0) on */ +self->attrs[COLOR_flow__FlowContext___when_true].val = p0; /* _when_true on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method flow#FlowContext#when_false for (self: FlowContext): FlowContext */ val* flow__FlowContext__when_false(val* self) { val* var /* : FlowContext */; val* var1 /* : FlowContext */; -var1 = self->attrs[COLOR_flow__FlowContext___64dwhen_false].val; /* @when_false on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @when_false"); -fprintf(stderr, " (%s:%d)\n", "src/flow.nit", 231); +var1 = self->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 228); show_backtrace(1); } var = var1; @@ -1555,19 +1811,32 @@ return var; val* VIRTUAL_flow__FlowContext__when_false(val* self) { val* var /* : FlowContext */; val* var1 /* : FlowContext */; -var1 = flow__FlowContext__when_false(self); +val* var3 /* : FlowContext */; +{ /* Inline flow#FlowContext#when_false (self) on */ +var3 = self->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 228); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method flow#FlowContext#when_false= for (self: FlowContext, FlowContext) */ void flow__FlowContext__when_false_61d(val* self, val* p0) { -self->attrs[COLOR_flow__FlowContext___64dwhen_false].val = p0; /* @when_false on */ +self->attrs[COLOR_flow__FlowContext___when_false].val = p0; /* _when_false on */ RET_LABEL:; } /* method flow#FlowContext#when_false= for (self: Object, FlowContext) */ void VIRTUAL_flow__FlowContext__when_false_61d(val* self, val* p0) { -flow__FlowContext__when_false_61d(self, p0); +{ /* Inline flow#FlowContext#when_false= (self,p0) on */ +self->attrs[COLOR_flow__FlowContext___when_false].val = p0; /* _when_false on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method flow#FlowContext#add_previous for (self: FlowContext, FlowContext) */ @@ -1578,31 +1847,61 @@ short int var1 /* : Bool */; short int var2 /* : Bool */; short int var_ /* var : Bool */; val* var3 /* : Array[FlowContext] */; -short int var4 /* : Bool */; -short int var5 /* : Bool */; -val* var6 /* : Array[FlowContext] */; +val* var5 /* : Array[FlowContext] */; +short int var6 /* : Bool */; +short int var7 /* : Bool */; +val* var8 /* : Array[FlowContext] */; +val* var10 /* : Array[FlowContext] */; var_flow = p0; -var1 = ((short int (*)(val*))(var_flow->class->vft[COLOR_flow__FlowContext__is_unreachable]))(var_flow) /* is_unreachable on */; +{ +var1 = flow__FlowContext__is_unreachable(var_flow); +} var2 = !var1; var_ = var2; if (var2){ -var3 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowContext__previous]))(self) /* previous on */; -var4 = ((short int (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__Collection__has]))(var3, var_flow) /* has on */; -var5 = !var4; -var = var5; +{ +{ /* Inline flow#FlowContext#previous (self) on */ +var5 = self->attrs[COLOR_flow__FlowContext___previous].val; /* _previous on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 189); +show_backtrace(1); +} +var3 = var5; +RET_LABEL4:(void)0; +} +} +{ +var6 = array__AbstractArrayRead__has(var3, var_flow); +} +var7 = !var6; +var = var7; } else { var = var_; } if (var){ -var6 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowContext__previous]))(self) /* previous on */; -((void (*)(val*, val*))(var6->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var6, var_flow) /* add on */; +{ +{ /* Inline flow#FlowContext#previous (self) on */ +var10 = self->attrs[COLOR_flow__FlowContext___previous].val; /* _previous on */ +if (unlikely(var10 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 189); +show_backtrace(1); +} +var8 = var10; +RET_LABEL9:(void)0; +} +} +{ +array__Array__add(var8, var_flow); /* Direct call array#Array#add on */ +} } else { } RET_LABEL:; } /* method flow#FlowContext#add_previous for (self: Object, FlowContext) */ void VIRTUAL_flow__FlowContext__add_previous(val* self, val* p0) { -flow__FlowContext__add_previous(self, p0); +flow__FlowContext__add_previous(self, p0); /* Direct call flow#FlowContext#add_previous on */ RET_LABEL:; } /* method flow#FlowContext#add_loop for (self: FlowContext, FlowContext) */ @@ -1613,52 +1912,75 @@ short int var1 /* : Bool */; short int var2 /* : Bool */; short int var_ /* var : Bool */; val* var3 /* : Array[FlowContext] */; -short int var4 /* : Bool */; -short int var5 /* : Bool */; -val* var6 /* : Array[FlowContext] */; +val* var5 /* : Array[FlowContext] */; +short int var6 /* : Bool */; +short int var7 /* : Bool */; +val* var8 /* : Array[FlowContext] */; +val* var10 /* : Array[FlowContext] */; var_flow = p0; -var1 = ((short int (*)(val*))(var_flow->class->vft[COLOR_flow__FlowContext__is_unreachable]))(var_flow) /* is_unreachable on */; +{ +var1 = flow__FlowContext__is_unreachable(var_flow); +} var2 = !var1; var_ = var2; if (var2){ -var3 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowContext__previous]))(self) /* previous on */; -var4 = ((short int (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__Collection__has]))(var3, var_flow) /* has on */; -var5 = !var4; -var = var5; +{ +{ /* Inline flow#FlowContext#previous (self) on */ +var5 = self->attrs[COLOR_flow__FlowContext___previous].val; /* _previous on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 189); +show_backtrace(1); +} +var3 = var5; +RET_LABEL4:(void)0; +} +} +{ +var6 = array__AbstractArrayRead__has(var3, var_flow); +} +var7 = !var6; +var = var7; } else { var = var_; } if (var){ -var6 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowContext__loops]))(self) /* loops on */; -((void (*)(val*, val*))(var6->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var6, var_flow) /* add on */; +{ +{ /* Inline flow#FlowContext#loops (self) on */ +var10 = self->attrs[COLOR_flow__FlowContext___loops].val; /* _loops on */ +if (unlikely(var10 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _loops"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 192); +show_backtrace(1); +} +var8 = var10; +RET_LABEL9:(void)0; +} +} +{ +array__Array__add(var8, var_flow); /* Direct call array#Array#add on */ +} } else { } RET_LABEL:; } /* method flow#FlowContext#add_loop for (self: Object, FlowContext) */ void VIRTUAL_flow__FlowContext__add_loop(val* self, val* p0) { -flow__FlowContext__add_loop(self, p0); -RET_LABEL:; -} -/* method flow#FlowContext#init for (self: FlowContext) */ -void flow__FlowContext__init(val* self) { -RET_LABEL:; -} -/* method flow#FlowContext#init for (self: Object) */ -void VIRTUAL_flow__FlowContext__init(val* self) { -flow__FlowContext__init(self); +flow__FlowContext__add_loop(self, p0); /* Direct call flow#FlowContext#add_loop on */ RET_LABEL:; } /* method flow#ANode#accept_flow_visitor for (self: ANode, FlowVisitor) */ void flow__ANode__accept_flow_visitor(val* self, val* p0) { val* var_v /* var v: FlowVisitor */; var_v = p0; +{ ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__visit_all]))(self, var_v) /* visit_all on */; +} RET_LABEL:; } /* method flow#ANode#accept_flow_visitor for (self: Object, FlowVisitor) */ void VIRTUAL_flow__ANode__accept_flow_visitor(val* self, val* p0) { -flow__ANode__accept_flow_visitor(self, p0); +flow__ANode__accept_flow_visitor(self, p0); /* Direct call flow#ANode#accept_flow_visitor on */ RET_LABEL:; } /* method flow#APropdef#do_flow for (self: APropdef, ToolContext) */ @@ -1668,95 +1990,105 @@ val* var /* : FlowVisitor */; val* var_v /* var v: FlowVisitor */; var_toolcontext = p0; var = NEW_flow__FlowVisitor(&type_flow__FlowVisitor); -((void (*)(val*, val*))(var->class->vft[COLOR_flow__FlowVisitor__init]))(var, var_toolcontext) /* init on */; +{ +flow__FlowVisitor__init(var, var_toolcontext); /* Direct call flow#FlowVisitor#init on */ +} var_v = var; -((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, self) /* enter_visit on */; +{ +parser_nodes__Visitor__enter_visit(var_v, self); /* Direct call parser_nodes#Visitor#enter_visit on */ +} RET_LABEL:; } /* method flow#APropdef#do_flow for (self: Object, ToolContext) */ void VIRTUAL_flow__APropdef__do_flow(val* self, val* p0) { -flow__APropdef__do_flow(self, p0); -RET_LABEL:; -} -/* method flow#APropdef#before_flow_context for (self: APropdef): nullable FlowContext */ -val* flow__APropdef__before_flow_context(val* self) { -val* var /* : nullable FlowContext */; -val* var1 /* : nullable FlowContext */; -var1 = self->attrs[COLOR_flow__APropdef___64dbefore_flow_context].val; /* @before_flow_context on */ -var = var1; +flow__APropdef__do_flow(self, p0); /* Direct call flow#APropdef#do_flow on */ RET_LABEL:; -return var; -} -/* method flow#APropdef#before_flow_context for (self: Object): nullable FlowContext */ -val* VIRTUAL_flow__APropdef__before_flow_context(val* self) { -val* var /* : nullable FlowContext */; -val* var1 /* : nullable FlowContext */; -var1 = flow__APropdef__before_flow_context(self); -var = var1; -RET_LABEL:; -return var; } /* method flow#APropdef#before_flow_context= for (self: APropdef, nullable FlowContext) */ void flow__APropdef__before_flow_context_61d(val* self, val* p0) { -self->attrs[COLOR_flow__APropdef___64dbefore_flow_context].val = p0; /* @before_flow_context on */ +self->attrs[COLOR_flow__APropdef___before_flow_context].val = p0; /* _before_flow_context on */ RET_LABEL:; } /* method flow#APropdef#before_flow_context= for (self: Object, nullable FlowContext) */ void VIRTUAL_flow__APropdef__before_flow_context_61d(val* self, val* p0) { -flow__APropdef__before_flow_context_61d(self, p0); -RET_LABEL:; +{ /* Inline flow#APropdef#before_flow_context= (self,p0) on */ +self->attrs[COLOR_flow__APropdef___before_flow_context].val = p0; /* _before_flow_context on */ +RET_LABEL1:(void)0; } -/* method flow#APropdef#after_flow_context for (self: APropdef): nullable FlowContext */ -val* flow__APropdef__after_flow_context(val* self) { -val* var /* : nullable FlowContext */; -val* var1 /* : nullable FlowContext */; -var1 = self->attrs[COLOR_flow__APropdef___64dafter_flow_context].val; /* @after_flow_context on */ -var = var1; -RET_LABEL:; -return var; -} -/* method flow#APropdef#after_flow_context for (self: Object): nullable FlowContext */ -val* VIRTUAL_flow__APropdef__after_flow_context(val* self) { -val* var /* : nullable FlowContext */; -val* var1 /* : nullable FlowContext */; -var1 = flow__APropdef__after_flow_context(self); -var = var1; RET_LABEL:; -return var; } /* method flow#APropdef#after_flow_context= for (self: APropdef, nullable FlowContext) */ void flow__APropdef__after_flow_context_61d(val* self, val* p0) { -self->attrs[COLOR_flow__APropdef___64dafter_flow_context].val = p0; /* @after_flow_context on */ +self->attrs[COLOR_flow__APropdef___after_flow_context].val = p0; /* _after_flow_context on */ RET_LABEL:; } /* method flow#APropdef#after_flow_context= for (self: Object, nullable FlowContext) */ void VIRTUAL_flow__APropdef__after_flow_context_61d(val* self, val* p0) { -flow__APropdef__after_flow_context_61d(self, p0); +{ /* Inline flow#APropdef#after_flow_context= (self,p0) on */ +self->attrs[COLOR_flow__APropdef___after_flow_context].val = p0; /* _after_flow_context on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method flow#APropdef#accept_flow_visitor for (self: APropdef, FlowVisitor) */ void flow__APropdef__accept_flow_visitor(val* self, val* p0) { val* var_v /* var v: FlowVisitor */; val* var /* : FlowContext */; -val* var1 /* : FlowContext */; +val* var2 /* : FlowContext */; +val* var4 /* : FlowContext */; +val* var6 /* : FlowContext */; var_v = p0; -var = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(var_v) /* current_flow_context on */; -((void (*)(val*, val*))(self->class->vft[COLOR_flow__APropdef__before_flow_context_61d]))(self, var) /* before_flow_context= on */; +{ +{ /* Inline flow#FlowVisitor#current_flow_context (var_v) on */ +var2 = var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 36); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +{ /* Inline flow#APropdef#before_flow_context= (self,var) on */ +self->attrs[COLOR_flow__APropdef___before_flow_context].val = var; /* _before_flow_context on */ +RET_LABEL3:(void)0; +} +} +{ ((void (*)(val*, val*))(self->class->vft[COLOR_flow__APropdef__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on */; -var1 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(var_v) /* current_flow_context on */; -((void (*)(val*, val*))(self->class->vft[COLOR_flow__APropdef__after_flow_context_61d]))(self, var1) /* after_flow_context= on */; +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context (var_v) on */ +var6 = var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 36); +show_backtrace(1); +} +var4 = var6; +RET_LABEL5:(void)0; +} +} +{ +{ /* Inline flow#APropdef#after_flow_context= (self,var4) on */ +self->attrs[COLOR_flow__APropdef___after_flow_context].val = var4; /* _after_flow_context on */ +RET_LABEL7:(void)0; +} +} RET_LABEL:; } /* method flow#APropdef#accept_flow_visitor for (self: Object, FlowVisitor) */ void VIRTUAL_flow__APropdef__accept_flow_visitor(val* self, val* p0) { -flow__APropdef__accept_flow_visitor(self, p0); +flow__APropdef__accept_flow_visitor(self, p0); /* Direct call flow#APropdef#accept_flow_visitor on */ RET_LABEL:; } /* method flow#AExpr#after_flow_context for (self: AExpr): nullable FlowContext */ val* flow__AExpr__after_flow_context(val* self) { val* var /* : nullable FlowContext */; val* var1 /* : nullable FlowContext */; -var1 = self->attrs[COLOR_flow__AExpr___64dafter_flow_context].val; /* @after_flow_context on */ +var1 = self->attrs[COLOR_flow__AExpr___after_flow_context].val; /* _after_flow_context on */ var = var1; RET_LABEL:; return var; @@ -1765,19 +2097,27 @@ return var; val* VIRTUAL_flow__AExpr__after_flow_context(val* self) { val* var /* : nullable FlowContext */; val* var1 /* : nullable FlowContext */; -var1 = flow__AExpr__after_flow_context(self); +val* var3 /* : nullable FlowContext */; +{ /* Inline flow#AExpr#after_flow_context (self) on */ +var3 = self->attrs[COLOR_flow__AExpr___after_flow_context].val; /* _after_flow_context on */ +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method flow#AExpr#after_flow_context= for (self: AExpr, nullable FlowContext) */ void flow__AExpr__after_flow_context_61d(val* self, val* p0) { -self->attrs[COLOR_flow__AExpr___64dafter_flow_context].val = p0; /* @after_flow_context on */ +self->attrs[COLOR_flow__AExpr___after_flow_context].val = p0; /* _after_flow_context on */ RET_LABEL:; } /* method flow#AExpr#after_flow_context= for (self: Object, nullable FlowContext) */ void VIRTUAL_flow__AExpr__after_flow_context_61d(val* self, val* p0) { -flow__AExpr__after_flow_context_61d(self, p0); +{ /* Inline flow#AExpr#after_flow_context= (self,p0) on */ +self->attrs[COLOR_flow__AExpr___after_flow_context].val = p0; /* _after_flow_context on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method flow#AVarAssignExpr#accept_flow_visitor for (self: AVarAssignExpr, FlowVisitor) */ @@ -1785,14 +2125,23 @@ void flow__AVarAssignExpr__accept_flow_visitor(val* self, val* p0) { val* var_v /* var v: FlowVisitor */; val* var /* : FlowContext */; var_v = p0; +{ ((void (*)(val*, val*))(self->class->vft[COLOR_flow__AVarAssignExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on */; -var = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_sub_flow]))(var_v) /* make_sub_flow on */; -((void (*)(val*, val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context_61d]))(self, var) /* after_flow_context= on */; +} +{ +var = flow__FlowVisitor__make_sub_flow(var_v); +} +{ +{ /* Inline flow#AExpr#after_flow_context= (self,var) on */ +self->attrs[COLOR_flow__AExpr___after_flow_context].val = var; /* _after_flow_context on */ +RET_LABEL1:(void)0; +} +} RET_LABEL:; } /* method flow#AVarAssignExpr#accept_flow_visitor for (self: Object, FlowVisitor) */ void VIRTUAL_flow__AVarAssignExpr__accept_flow_visitor(val* self, val* p0) { -flow__AVarAssignExpr__accept_flow_visitor(self, p0); +flow__AVarAssignExpr__accept_flow_visitor(self, p0); /* Direct call flow#AVarAssignExpr#accept_flow_visitor on */ RET_LABEL:; } /* method flow#AReassignFormExpr#accept_flow_visitor for (self: AReassignFormExpr, FlowVisitor) */ @@ -1800,84 +2149,192 @@ void flow__AReassignFormExpr__accept_flow_visitor(val* self, val* p0) { val* var_v /* var v: FlowVisitor */; val* var /* : FlowContext */; var_v = p0; +{ ((void (*)(val*, val*))(self->class->vft[COLOR_flow__AReassignFormExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on */; -var = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_sub_flow]))(var_v) /* make_sub_flow on */; -((void (*)(val*, val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context_61d]))(self, var) /* after_flow_context= on */; +} +{ +var = flow__FlowVisitor__make_sub_flow(var_v); +} +{ +{ /* Inline flow#AExpr#after_flow_context= (self,var) on */ +self->attrs[COLOR_flow__AExpr___after_flow_context].val = var; /* _after_flow_context on */ +RET_LABEL1:(void)0; +} +} RET_LABEL:; } /* method flow#AReassignFormExpr#accept_flow_visitor for (self: Object, FlowVisitor) */ void VIRTUAL_flow__AReassignFormExpr__accept_flow_visitor(val* self, val* p0) { -flow__AReassignFormExpr__accept_flow_visitor(self, p0); +flow__AReassignFormExpr__accept_flow_visitor(self, p0); /* Direct call flow#AReassignFormExpr#accept_flow_visitor on */ RET_LABEL:; } /* method flow#ABlockExpr#accept_flow_visitor for (self: ABlockExpr, FlowVisitor) */ void flow__ABlockExpr__accept_flow_visitor(val* self, val* p0) { val* var_v /* var v: FlowVisitor */; val* var /* : ANodes[AExpr] */; -val* var1 /* : Iterator[nullable Object] */; -short int var2 /* : Bool */; -val* var3 /* : nullable Object */; -val* var_e /* var e: AExpr */; -val* var4 /* : FlowContext */; +val* var2 /* : ANodes[AExpr] */; +val* var_ /* var : ANodes[AExpr] */; +val* var3 /* : Iterator[ANode] */; +val* var_4 /* var : Iterator[AExpr] */; short int var5 /* : Bool */; -short int var6 /* : Bool */; +val* var6 /* : nullable Object */; +val* var_e /* var e: AExpr */; val* var7 /* : FlowContext */; -short int var8 /* : Bool */; -short int var9 /* : Bool */; -val* var10 /* : FlowContext */; +val* var9 /* : FlowContext */; +short int var10 /* : Bool */; short int var11 /* : Bool */; -val* var12 /* : ToolContext */; -val* var13 /* : Location */; +val* var12 /* : FlowContext */; +val* var14 /* : FlowContext */; +short int var15 /* : Bool */; +short int var17 /* : Bool */; +short int var18 /* : Bool */; +val* var19 /* : FlowContext */; +val* var21 /* : FlowContext */; +short int var22 /* : Bool */; +val* var24 /* : ToolContext */; +val* var26 /* : ToolContext */; +val* var27 /* : Location */; static val* varonce; -val* var14 /* : String */; -char* var15 /* : NativeString */; -long var16 /* : Int */; -val* var17 /* : String */; +val* var28 /* : String */; +char* var29 /* : NativeString */; +long var30 /* : Int */; +val* var31 /* : FlatString */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABlockExpr__n_expr]))(self) /* n_expr on */; -var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_collection__Collection__iterator]))(var) /* iterator on */; +{ +{ /* Inline parser_nodes#ABlockExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_parser_nodes__ABlockExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1321); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +var_ = var; +{ +var3 = parser_nodes__ANodes__iterator(var_); +} +var_4 = var3; for(;;) { -var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var1) /* is_ok on */; -if(!var2) break; -var3 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__item]))(var1) /* item on */; -var_e = var3; -var4 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(var_v) /* current_flow_context on */; -var5 = ((short int (*)(val*))(var4->class->vft[COLOR_flow__FlowContext__is_unreachable]))(var4) /* is_unreachable on */; -var6 = !var5; -if (var6){ -((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var_e) /* enter_visit on */; +{ +var5 = ((short int (*)(val*))(var_4->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_4) /* is_ok on */; +} +if (var5){ +{ +var6 = ((val* (*)(val*))(var_4->class->vft[COLOR_abstract_collection__Iterator__item]))(var_4) /* item on */; +} +var_e = var6; +{ +{ /* Inline flow#FlowVisitor#current_flow_context (var_v) on */ +var9 = var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on */ +if (unlikely(var9 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 36); +show_backtrace(1); +} +var7 = var9; +RET_LABEL8:(void)0; +} +} +{ +var10 = flow__FlowContext__is_unreachable(var7); +} +var11 = !var10; +if (var11){ +{ +parser_nodes__Visitor__enter_visit(var_v, var_e); /* Direct call parser_nodes#Visitor#enter_visit on */ +} } else { -var7 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(var_v) /* current_flow_context on */; -var8 = ((short int (*)(val*))(var7->class->vft[COLOR_flow__FlowContext__is_already_unreachable]))(var7) /* is_already_unreachable on */; -var9 = !var8; -if (var9){ -var10 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(var_v) /* current_flow_context on */; -var11 = 1; -((void (*)(val*, short int))(var10->class->vft[COLOR_flow__FlowContext__is_already_unreachable_61d]))(var10, var11) /* is_already_unreachable= on */; -var12 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__toolcontext]))(var_v) /* toolcontext on */; -var13 = ((val* (*)(val*))(var_e->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_e) /* hot_location on */; +{ +{ /* Inline flow#FlowVisitor#current_flow_context (var_v) on */ +var14 = var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on */ +if (unlikely(var14 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 36); +show_backtrace(1); +} +var12 = var14; +RET_LABEL13:(void)0; +} +} +{ +{ /* Inline flow#FlowContext#is_already_unreachable (var12) on */ +var17 = var12->attrs[COLOR_flow__FlowContext___is_already_unreachable].s; /* _is_already_unreachable on */ +var15 = var17; +RET_LABEL16:(void)0; +} +} +var18 = !var15; +if (var18){ +{ +{ /* Inline flow#FlowVisitor#current_flow_context (var_v) on */ +var21 = var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on */ +if (unlikely(var21 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 36); +show_backtrace(1); +} +var19 = var21; +RET_LABEL20:(void)0; +} +} +var22 = 1; +{ +{ /* Inline flow#FlowContext#is_already_unreachable= (var19,var22) on */ +var19->attrs[COLOR_flow__FlowContext___is_already_unreachable].s = var22; /* _is_already_unreachable on */ +RET_LABEL23:(void)0; +} +} +{ +{ /* Inline flow#FlowVisitor#toolcontext (var_v) on */ +var26 = var_v->attrs[COLOR_flow__FlowVisitor___toolcontext].val; /* _toolcontext on */ +if (unlikely(var26 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 38); +show_backtrace(1); +} +var24 = var26; +RET_LABEL25:(void)0; +} +} +{ +var27 = parser_nodes__ANode__hot_location(var_e); +} if (varonce) { -var14 = varonce; +var28 = varonce; } else { -var15 = "Error: unreachable statement."; -var16 = 29; -var17 = string__NativeString__to_s_with_length(var15, var16); -var14 = var17; -varonce = var14; +var29 = "Error: unreachable statement."; +var30 = 29; +var31 = string__NativeString__to_s_with_length(var29, var30); +var28 = var31; +varonce = var28; +} +{ +toolcontext__ToolContext__error(var24, var27, var28); /* Direct call toolcontext#ToolContext#error on */ } -((void (*)(val*, val*, val*))(var12->class->vft[COLOR_toolcontext__ToolContext__error]))(var12, var13, var14) /* error on */; } else { } } -CONTINUE_label: (void)0; -((void (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__next]))(var1) /* next on */; +{ +((void (*)(val*))(var_4->class->vft[COLOR_abstract_collection__Iterator__next]))(var_4) /* next on */; +} +} else { +goto BREAK_label; +} } BREAK_label: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_4) on */ +RET_LABEL32:(void)0; +} +} RET_LABEL:; } /* method flow#ABlockExpr#accept_flow_visitor for (self: Object, FlowVisitor) */ void VIRTUAL_flow__ABlockExpr__accept_flow_visitor(val* self, val* p0) { -flow__ABlockExpr__accept_flow_visitor(self, p0); +flow__ABlockExpr__accept_flow_visitor(self, p0); /* Direct call flow#ABlockExpr#accept_flow_visitor on */ RET_LABEL:; } /* method flow#AReturnExpr#accept_flow_visitor for (self: AReturnExpr, FlowVisitor) */ @@ -1885,124 +2342,117 @@ void flow__AReturnExpr__accept_flow_visitor(val* self, val* p0) { val* var_v /* var v: FlowVisitor */; val* var /* : FlowContext */; var_v = p0; +{ ((void (*)(val*, val*))(self->class->vft[COLOR_flow__AReturnExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on */; -var = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_unreachable_flow]))(var_v) /* make_unreachable_flow on */; -var; +} +{ +var = flow__FlowVisitor__make_unreachable_flow(var_v); +} RET_LABEL:; } /* method flow#AReturnExpr#accept_flow_visitor for (self: Object, FlowVisitor) */ void VIRTUAL_flow__AReturnExpr__accept_flow_visitor(val* self, val* p0) { -flow__AReturnExpr__accept_flow_visitor(self, p0); +flow__AReturnExpr__accept_flow_visitor(self, p0); /* Direct call flow#AReturnExpr#accept_flow_visitor on */ RET_LABEL:; } -/* method flow#AContinueExpr#before_flow_context for (self: AContinueExpr): nullable FlowContext */ -val* flow__AContinueExpr__before_flow_context(val* self) { +/* method flow#AEscapeExpr#before_flow_context for (self: AEscapeExpr): nullable FlowContext */ +val* flow__AEscapeExpr__before_flow_context(val* self) { val* var /* : nullable FlowContext */; val* var1 /* : nullable FlowContext */; +val* var3 /* : nullable FlowContext */; val* var_after /* var after: nullable FlowContext */; -val* var2 /* : null */; -short int var3 /* : Bool */; val* var4 /* : null */; -val* var5 /* : Array[FlowContext] */; -val* var6 /* : nullable Object */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context]))(self) /* after_flow_context on */; -var_after = var1; -var2 = NULL; -if (var_after == NULL) { -var3 = 1; /* is null */ -} else { -var3 = 0; /* arg is null but recv is not */ +short int var5 /* : Bool */; +short int var6 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var8 /* : Bool */; +short int var10 /* : Bool */; +val* var11 /* : null */; +val* var12 /* : Array[FlowContext] */; +val* var14 /* : Array[FlowContext] */; +val* var15 /* : nullable Object */; +{ +{ /* Inline flow#AExpr#after_flow_context (self) on */ +var3 = self->attrs[COLOR_flow__AExpr___after_flow_context].val; /* _after_flow_context on */ +var1 = var3; +RET_LABEL2:(void)0; +} } -if (var3){ +var_after = var1; var4 = NULL; -var = var4; -goto RET_LABEL; +if (var_after == NULL) { +var5 = 1; /* is null */ } else { +var5 = 0; /* arg is null but recv is not */ } -var5 = ((val* (*)(val*))(var_after->class->vft[COLOR_flow__FlowContext__previous]))(var_after) /* previous on */; -var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Collection__first]))(var5) /* first on */; -var = var6; -goto RET_LABEL; -RET_LABEL:; -return var; -} -/* method flow#AContinueExpr#before_flow_context for (self: Object): nullable FlowContext */ -val* VIRTUAL_flow__AContinueExpr__before_flow_context(val* self) { -val* var /* : nullable FlowContext */; -val* var1 /* : nullable FlowContext */; -var1 = flow__AContinueExpr__before_flow_context(self); -var = var1; -RET_LABEL:; -return var; +if (0) { +{ /* Inline kernel#Object#== (var_after,var4) on */ +var_other = var4; +{ +{ /* Inline kernel#Object#is_same_instance (var_after,var_other) on */ +var10 = var_after == var_other; +var8 = var10; +goto RET_LABEL9; +RET_LABEL9:(void)0; } -/* method flow#AContinueExpr#accept_flow_visitor for (self: AContinueExpr, FlowVisitor) */ -void flow__AContinueExpr__accept_flow_visitor(val* self, val* p0) { -val* var_v /* var v: FlowVisitor */; -val* var /* : FlowContext */; -var_v = p0; -((void (*)(val*, val*))(self->class->vft[COLOR_flow__AContinueExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on */; -var = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_unreachable_flow]))(var_v) /* make_unreachable_flow on */; -var; -RET_LABEL:; } -/* method flow#AContinueExpr#accept_flow_visitor for (self: Object, FlowVisitor) */ -void VIRTUAL_flow__AContinueExpr__accept_flow_visitor(val* self, val* p0) { -flow__AContinueExpr__accept_flow_visitor(self, p0); -RET_LABEL:; +var6 = var8; +goto RET_LABEL7; +RET_LABEL7:(void)0; } -/* method flow#ABreakExpr#before_flow_context for (self: ABreakExpr): nullable FlowContext */ -val* flow__ABreakExpr__before_flow_context(val* self) { -val* var /* : nullable FlowContext */; -val* var1 /* : nullable FlowContext */; -val* var_after /* var after: nullable FlowContext */; -val* var2 /* : null */; -short int var3 /* : Bool */; -val* var4 /* : null */; -val* var5 /* : Array[FlowContext] */; -val* var6 /* : nullable Object */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context]))(self) /* after_flow_context on */; -var_after = var1; -var2 = NULL; -if (var_after == NULL) { -var3 = 1; /* is null */ -} else { -var3 = 0; /* arg is null but recv is not */ +var5 = var6; } -if (var3){ -var4 = NULL; -var = var4; +if (var5){ +var11 = NULL; +var = var11; goto RET_LABEL; } else { } -var5 = ((val* (*)(val*))(var_after->class->vft[COLOR_flow__FlowContext__previous]))(var_after) /* previous on */; -var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Collection__first]))(var5) /* first on */; -var = var6; +{ +{ /* Inline flow#FlowContext#previous (var_after) on */ +var14 = var_after->attrs[COLOR_flow__FlowContext___previous].val; /* _previous on */ +if (unlikely(var14 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 189); +show_backtrace(1); +} +var12 = var14; +RET_LABEL13:(void)0; +} +} +{ +var15 = abstract_collection__SequenceRead__first(var12); +} +var = var15; goto RET_LABEL; RET_LABEL:; return var; } -/* method flow#ABreakExpr#before_flow_context for (self: Object): nullable FlowContext */ -val* VIRTUAL_flow__ABreakExpr__before_flow_context(val* self) { +/* method flow#AEscapeExpr#before_flow_context for (self: Object): nullable FlowContext */ +val* VIRTUAL_flow__AEscapeExpr__before_flow_context(val* self) { val* var /* : nullable FlowContext */; val* var1 /* : nullable FlowContext */; -var1 = flow__ABreakExpr__before_flow_context(self); +var1 = flow__AEscapeExpr__before_flow_context(self); var = var1; RET_LABEL:; return var; } -/* method flow#ABreakExpr#accept_flow_visitor for (self: ABreakExpr, FlowVisitor) */ -void flow__ABreakExpr__accept_flow_visitor(val* self, val* p0) { +/* method flow#AEscapeExpr#accept_flow_visitor for (self: AEscapeExpr, FlowVisitor) */ +void flow__AEscapeExpr__accept_flow_visitor(val* self, val* p0) { val* var_v /* var v: FlowVisitor */; val* var /* : FlowContext */; var_v = p0; -((void (*)(val*, val*))(self->class->vft[COLOR_flow__ABreakExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on */; -var = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_unreachable_flow]))(var_v) /* make_unreachable_flow on */; -var; +{ +((void (*)(val*, val*))(self->class->vft[COLOR_flow__AEscapeExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on */; +} +{ +var = flow__FlowVisitor__make_unreachable_flow(var_v); +} RET_LABEL:; } -/* method flow#ABreakExpr#accept_flow_visitor for (self: Object, FlowVisitor) */ -void VIRTUAL_flow__ABreakExpr__accept_flow_visitor(val* self, val* p0) { -flow__ABreakExpr__accept_flow_visitor(self, p0); +/* method flow#AEscapeExpr#accept_flow_visitor for (self: Object, FlowVisitor) */ +void VIRTUAL_flow__AEscapeExpr__accept_flow_visitor(val* self, val* p0) { +flow__AEscapeExpr__accept_flow_visitor(self, p0); /* Direct call flow#AEscapeExpr#accept_flow_visitor on */ RET_LABEL:; } /* method flow#AAbortExpr#accept_flow_visitor for (self: AAbortExpr, FlowVisitor) */ @@ -2010,150 +2460,447 @@ void flow__AAbortExpr__accept_flow_visitor(val* self, val* p0) { val* var_v /* var v: FlowVisitor */; val* var /* : FlowContext */; var_v = p0; +{ ((void (*)(val*, val*))(self->class->vft[COLOR_flow__AAbortExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on */; -var = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_unreachable_flow]))(var_v) /* make_unreachable_flow on */; -var; +} +{ +var = flow__FlowVisitor__make_unreachable_flow(var_v); +} RET_LABEL:; } /* method flow#AAbortExpr#accept_flow_visitor for (self: Object, FlowVisitor) */ void VIRTUAL_flow__AAbortExpr__accept_flow_visitor(val* self, val* p0) { -flow__AAbortExpr__accept_flow_visitor(self, p0); +flow__AAbortExpr__accept_flow_visitor(self, p0); /* Direct call flow#AAbortExpr#accept_flow_visitor on */ RET_LABEL:; } /* method flow#ADoExpr#accept_flow_visitor for (self: ADoExpr, FlowVisitor) */ void flow__ADoExpr__accept_flow_visitor(val* self, val* p0) { val* var_v /* var v: FlowVisitor */; val* var /* : nullable EscapeMark */; +val* var2 /* : nullable EscapeMark */; var_v = p0; +{ ((void (*)(val*, val*))(self->class->vft[COLOR_flow__ADoExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on */; -var = ((val* (*)(val*))(self->class->vft[COLOR_scope__ADoExpr__escapemark]))(self) /* escapemark on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__merge_breaks]))(var_v, var) /* merge_breaks on */; +} +{ +{ /* Inline scope#ADoExpr#break_mark (self) on */ +var2 = self->attrs[COLOR_scope__ADoExpr___break_mark].val; /* _break_mark on */ +var = var2; +RET_LABEL1:(void)0; +} +} +{ +flow__FlowVisitor__merge_breaks(var_v, var); /* Direct call flow#FlowVisitor#merge_breaks on */ +} RET_LABEL:; } /* method flow#ADoExpr#accept_flow_visitor for (self: Object, FlowVisitor) */ void VIRTUAL_flow__ADoExpr__accept_flow_visitor(val* self, val* p0) { -flow__ADoExpr__accept_flow_visitor(self, p0); +flow__ADoExpr__accept_flow_visitor(self, p0); /* Direct call flow#ADoExpr#accept_flow_visitor on */ RET_LABEL:; } /* method flow#AIfExpr#accept_flow_visitor for (self: AIfExpr, FlowVisitor) */ void flow__AIfExpr__accept_flow_visitor(val* self, val* p0) { val* var_v /* var v: FlowVisitor */; val* var /* : AExpr */; -val* var1 /* : FlowContext */; +val* var2 /* : AExpr */; +val* var3 /* : FlowContext */; val* var_after_expr /* var after_expr: FlowContext */; -val* var2 /* : FlowContext */; -val* var3 /* : nullable AExpr */; val* var4 /* : FlowContext */; +val* var6 /* : FlowContext */; +val* var8 /* : nullable AExpr */; +val* var10 /* : nullable AExpr */; +val* var11 /* : FlowContext */; +val* var13 /* : FlowContext */; val* var_after_then /* var after_then: FlowContext */; -val* var5 /* : FlowContext */; -val* var6 /* : nullable AExpr */; -val* var7 /* : FlowContext */; +val* var14 /* : FlowContext */; +val* var16 /* : FlowContext */; +val* var18 /* : nullable AExpr */; +val* var20 /* : nullable AExpr */; +val* var21 /* : FlowContext */; +val* var23 /* : FlowContext */; val* var_after_else /* var after_else: FlowContext */; -val* var8 /* : FlowContext */; +val* var24 /* : FlowContext */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfExpr__n_expr]))(self) /* n_expr on */; -var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__visit_expr]))(var_v, var) /* visit_expr on */; -var_after_expr = var1; -var2 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_true]))(var_after_expr) /* when_true on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(var_v, var2) /* current_flow_context= on */; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfExpr__n_then]))(self) /* n_then on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var3) /* enter_visit on */; -var4 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(var_v) /* current_flow_context on */; -var_after_then = var4; -var5 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_false]))(var_after_expr) /* when_false on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(var_v, var5) /* current_flow_context= on */; -var6 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfExpr__n_else]))(self) /* n_else on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var6) /* enter_visit on */; -var7 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(var_v) /* current_flow_context on */; -var_after_else = var7; -var8 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_merge_flow]))(var_v, var_after_then, var_after_else) /* make_merge_flow on */; -var8; +{ +{ /* Inline parser_nodes#AIfExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_parser_nodes__AIfExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1387); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +var3 = flow__FlowVisitor__visit_expr(var_v, var); +} +var_after_expr = var3; +{ +{ /* Inline flow#FlowContext#when_true (var_after_expr) on */ +var6 = var_after_expr->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 225); +show_backtrace(1); +} +var4 = var6; +RET_LABEL5:(void)0; +} +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context= (var_v,var4) on */ +var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var4; /* _current_flow_context on */ +RET_LABEL7:(void)0; +} +} +{ +{ /* Inline parser_nodes#AIfExpr#n_then (self) on */ +var10 = self->attrs[COLOR_parser_nodes__AIfExpr___n_then].val; /* _n_then on */ +var8 = var10; +RET_LABEL9:(void)0; +} +} +{ +parser_nodes__Visitor__enter_visit(var_v, var8); /* Direct call parser_nodes#Visitor#enter_visit on */ +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context (var_v) on */ +var13 = var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on */ +if (unlikely(var13 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 36); +show_backtrace(1); +} +var11 = var13; +RET_LABEL12:(void)0; +} +} +var_after_then = var11; +{ +{ /* Inline flow#FlowContext#when_false (var_after_expr) on */ +var16 = var_after_expr->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on */ +if (unlikely(var16 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 228); +show_backtrace(1); +} +var14 = var16; +RET_LABEL15:(void)0; +} +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context= (var_v,var14) on */ +var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var14; /* _current_flow_context on */ +RET_LABEL17:(void)0; +} +} +{ +{ /* Inline parser_nodes#AIfExpr#n_else (self) on */ +var20 = self->attrs[COLOR_parser_nodes__AIfExpr___n_else].val; /* _n_else on */ +var18 = var20; +RET_LABEL19:(void)0; +} +} +{ +parser_nodes__Visitor__enter_visit(var_v, var18); /* Direct call parser_nodes#Visitor#enter_visit on */ +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context (var_v) on */ +var23 = var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on */ +if (unlikely(var23 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 36); +show_backtrace(1); +} +var21 = var23; +RET_LABEL22:(void)0; +} +} +var_after_else = var21; +{ +var24 = flow__FlowVisitor__make_merge_flow(var_v, var_after_then, var_after_else); +} RET_LABEL:; } /* method flow#AIfExpr#accept_flow_visitor for (self: Object, FlowVisitor) */ void VIRTUAL_flow__AIfExpr__accept_flow_visitor(val* self, val* p0) { -flow__AIfExpr__accept_flow_visitor(self, p0); +flow__AIfExpr__accept_flow_visitor(self, p0); /* Direct call flow#AIfExpr#accept_flow_visitor on */ RET_LABEL:; } /* method flow#AIfexprExpr#accept_flow_visitor for (self: AIfexprExpr, FlowVisitor) */ void flow__AIfexprExpr__accept_flow_visitor(val* self, val* p0) { val* var_v /* var v: FlowVisitor */; val* var /* : AExpr */; -val* var1 /* : FlowContext */; +val* var2 /* : AExpr */; +val* var3 /* : FlowContext */; val* var_after_expr /* var after_expr: FlowContext */; -val* var2 /* : FlowContext */; -val* var3 /* : AExpr */; val* var4 /* : FlowContext */; +val* var6 /* : FlowContext */; +val* var8 /* : AExpr */; +val* var10 /* : AExpr */; +val* var11 /* : FlowContext */; +val* var13 /* : FlowContext */; val* var_after_then /* var after_then: FlowContext */; -val* var5 /* : FlowContext */; -val* var6 /* : AExpr */; -val* var7 /* : FlowContext */; +val* var14 /* : FlowContext */; +val* var16 /* : FlowContext */; +val* var18 /* : AExpr */; +val* var20 /* : AExpr */; +val* var21 /* : FlowContext */; +val* var23 /* : FlowContext */; val* var_after_else /* var after_else: FlowContext */; -val* var8 /* : FlowContext */; +val* var24 /* : FlowContext */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfexprExpr__n_expr]))(self) /* n_expr on */; -var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__visit_expr]))(var_v, var) /* visit_expr on */; -var_after_expr = var1; -var2 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_true]))(var_after_expr) /* when_true on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(var_v, var2) /* current_flow_context= on */; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfexprExpr__n_then]))(self) /* n_then on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var3) /* enter_visit on */; -var4 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(var_v) /* current_flow_context on */; -var_after_then = var4; -var5 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_false]))(var_after_expr) /* when_false on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(var_v, var5) /* current_flow_context= on */; -var6 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfexprExpr__n_else]))(self) /* n_else on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var6) /* enter_visit on */; -var7 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(var_v) /* current_flow_context on */; -var_after_else = var7; -var8 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_merge_flow]))(var_v, var_after_then, var_after_else) /* make_merge_flow on */; -var8; -RET_LABEL:; +{ +{ /* Inline parser_nodes#AIfexprExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_parser_nodes__AIfexprExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1396); +show_backtrace(1); } -/* method flow#AIfexprExpr#accept_flow_visitor for (self: Object, FlowVisitor) */ -void VIRTUAL_flow__AIfexprExpr__accept_flow_visitor(val* self, val* p0) { -flow__AIfexprExpr__accept_flow_visitor(self, p0); -RET_LABEL:; +var = var2; +RET_LABEL1:(void)0; } -/* method flow#AWhileExpr#accept_flow_visitor for (self: AWhileExpr, FlowVisitor) */ -void flow__AWhileExpr__accept_flow_visitor(val* self, val* p0) { -val* var_v /* var v: FlowVisitor */; -val* var /* : FlowContext */; -val* var_before_loop /* var before_loop: FlowContext */; -val* var1 /* : AExpr */; -val* var2 /* : FlowContext */; -val* var_after_expr /* var after_expr: FlowContext */; -val* var3 /* : FlowContext */; -val* var4 /* : nullable AExpr */; -val* var5 /* : FlowContext */; -val* var_after_block /* var after_block: FlowContext */; -val* var6 /* : nullable EscapeMark */; +} +{ +var3 = flow__FlowVisitor__visit_expr(var_v, var); +} +var_after_expr = var3; +{ +{ /* Inline flow#FlowContext#when_true (var_after_expr) on */ +var6 = var_after_expr->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 225); +show_backtrace(1); +} +var4 = var6; +RET_LABEL5:(void)0; +} +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context= (var_v,var4) on */ +var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var4; /* _current_flow_context on */ +RET_LABEL7:(void)0; +} +} +{ +{ /* Inline parser_nodes#AIfexprExpr#n_then (self) on */ +var10 = self->attrs[COLOR_parser_nodes__AIfexprExpr___n_then].val; /* _n_then on */ +if (unlikely(var10 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_then"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1398); +show_backtrace(1); +} +var8 = var10; +RET_LABEL9:(void)0; +} +} +{ +parser_nodes__Visitor__enter_visit(var_v, var8); /* Direct call parser_nodes#Visitor#enter_visit on */ +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context (var_v) on */ +var13 = var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on */ +if (unlikely(var13 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 36); +show_backtrace(1); +} +var11 = var13; +RET_LABEL12:(void)0; +} +} +var_after_then = var11; +{ +{ /* Inline flow#FlowContext#when_false (var_after_expr) on */ +var16 = var_after_expr->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on */ +if (unlikely(var16 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 228); +show_backtrace(1); +} +var14 = var16; +RET_LABEL15:(void)0; +} +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context= (var_v,var14) on */ +var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var14; /* _current_flow_context on */ +RET_LABEL17:(void)0; +} +} +{ +{ /* Inline parser_nodes#AIfexprExpr#n_else (self) on */ +var20 = self->attrs[COLOR_parser_nodes__AIfexprExpr___n_else].val; /* _n_else on */ +if (unlikely(var20 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_else"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1400); +show_backtrace(1); +} +var18 = var20; +RET_LABEL19:(void)0; +} +} +{ +parser_nodes__Visitor__enter_visit(var_v, var18); /* Direct call parser_nodes#Visitor#enter_visit on */ +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context (var_v) on */ +var23 = var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on */ +if (unlikely(var23 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 36); +show_backtrace(1); +} +var21 = var23; +RET_LABEL22:(void)0; +} +} +var_after_else = var21; +{ +var24 = flow__FlowVisitor__make_merge_flow(var_v, var_after_then, var_after_else); +} +RET_LABEL:; +} +/* method flow#AIfexprExpr#accept_flow_visitor for (self: Object, FlowVisitor) */ +void VIRTUAL_flow__AIfexprExpr__accept_flow_visitor(val* self, val* p0) { +flow__AIfexprExpr__accept_flow_visitor(self, p0); /* Direct call flow#AIfexprExpr#accept_flow_visitor on */ +RET_LABEL:; +} +/* method flow#AWhileExpr#accept_flow_visitor for (self: AWhileExpr, FlowVisitor) */ +void flow__AWhileExpr__accept_flow_visitor(val* self, val* p0) { +val* var_v /* var v: FlowVisitor */; +val* var /* : FlowContext */; +val* var_before_loop /* var before_loop: FlowContext */; +val* var1 /* : AExpr */; +val* var3 /* : AExpr */; +val* var4 /* : FlowContext */; +val* var_after_expr /* var after_expr: FlowContext */; +val* var5 /* : FlowContext */; val* var7 /* : FlowContext */; -val* var8 /* : nullable EscapeMark */; +val* var9 /* : nullable AExpr */; +val* var11 /* : nullable AExpr */; +val* var12 /* : FlowContext */; +val* var14 /* : FlowContext */; +val* var_after_block /* var after_block: FlowContext */; +val* var15 /* : nullable EscapeMark */; +val* var17 /* : nullable EscapeMark */; +val* var18 /* : FlowContext */; +val* var20 /* : FlowContext */; +val* var22 /* : nullable EscapeMark */; +val* var24 /* : nullable EscapeMark */; var_v = p0; -var = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_sub_flow]))(var_v) /* make_sub_flow on */; +{ +var = flow__FlowVisitor__make_sub_flow(var_v); +} var_before_loop = var; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AWhileExpr__n_expr]))(self) /* n_expr on */; -var2 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__visit_expr]))(var_v, var1) /* visit_expr on */; -var_after_expr = var2; -var3 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_true]))(var_after_expr) /* when_true on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(var_v, var3) /* current_flow_context= on */; -var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AWhileExpr__n_block]))(self) /* n_block on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var4) /* enter_visit on */; -var5 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(var_v) /* current_flow_context on */; -var_after_block = var5; -((void (*)(val*, val*))(var_before_loop->class->vft[COLOR_flow__FlowContext__add_loop]))(var_before_loop, var_after_block) /* add_loop on */; -var6 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AWhileExpr__escapemark]))(self) /* escapemark on */; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__merge_continues_to]))(var_v, var_after_block, var6) /* merge_continues_to on */; -var7 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_false]))(var_after_expr) /* when_false on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(var_v, var7) /* current_flow_context= on */; -var8 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AWhileExpr__escapemark]))(self) /* escapemark on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__merge_breaks]))(var_v, var8) /* merge_breaks on */; +{ +{ /* Inline parser_nodes#AWhileExpr#n_expr (self) on */ +var3 = self->attrs[COLOR_parser_nodes__AWhileExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1408); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} +{ +var4 = flow__FlowVisitor__visit_expr(var_v, var1); +} +var_after_expr = var4; +{ +{ /* Inline flow#FlowContext#when_true (var_after_expr) on */ +var7 = var_after_expr->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on */ +if (unlikely(var7 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 225); +show_backtrace(1); +} +var5 = var7; +RET_LABEL6:(void)0; +} +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context= (var_v,var5) on */ +var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var5; /* _current_flow_context on */ +RET_LABEL8:(void)0; +} +} +{ +{ /* Inline parser_nodes#AWhileExpr#n_block (self) on */ +var11 = self->attrs[COLOR_parser_nodes__AWhileExpr___n_block].val; /* _n_block on */ +var9 = var11; +RET_LABEL10:(void)0; +} +} +{ +parser_nodes__Visitor__enter_visit(var_v, var9); /* Direct call parser_nodes#Visitor#enter_visit on */ +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context (var_v) on */ +var14 = var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on */ +if (unlikely(var14 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 36); +show_backtrace(1); +} +var12 = var14; +RET_LABEL13:(void)0; +} +} +var_after_block = var12; +{ +flow__FlowContext__add_loop(var_before_loop, var_after_block); /* Direct call flow#FlowContext#add_loop on */ +} +{ +{ /* Inline scope#AWhileExpr#continue_mark (self) on */ +var17 = self->attrs[COLOR_scope__AWhileExpr___continue_mark].val; /* _continue_mark on */ +var15 = var17; +RET_LABEL16:(void)0; +} +} +{ +flow__FlowVisitor__merge_continues_to(var_v, var_after_block, var15); /* Direct call flow#FlowVisitor#merge_continues_to on */ +} +{ +{ /* Inline flow#FlowContext#when_false (var_after_expr) on */ +var20 = var_after_expr->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on */ +if (unlikely(var20 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 228); +show_backtrace(1); +} +var18 = var20; +RET_LABEL19:(void)0; +} +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context= (var_v,var18) on */ +var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var18; /* _current_flow_context on */ +RET_LABEL21:(void)0; +} +} +{ +{ /* Inline scope#AWhileExpr#break_mark (self) on */ +var24 = self->attrs[COLOR_scope__AWhileExpr___break_mark].val; /* _break_mark on */ +var22 = var24; +RET_LABEL23:(void)0; +} +} +{ +flow__FlowVisitor__merge_breaks(var_v, var22); /* Direct call flow#FlowVisitor#merge_breaks on */ +} RET_LABEL:; } /* method flow#AWhileExpr#accept_flow_visitor for (self: Object, FlowVisitor) */ void VIRTUAL_flow__AWhileExpr__accept_flow_visitor(val* self, val* p0) { -flow__AWhileExpr__accept_flow_visitor(self, p0); +flow__AWhileExpr__accept_flow_visitor(self, p0); /* Direct call flow#AWhileExpr#accept_flow_visitor on */ RET_LABEL:; } /* method flow#ALoopExpr#accept_flow_visitor for (self: ALoopExpr, FlowVisitor) */ @@ -2162,291 +2909,770 @@ val* var_v /* var v: FlowVisitor */; val* var /* : FlowContext */; val* var_before_loop /* var before_loop: FlowContext */; val* var1 /* : nullable AExpr */; -val* var2 /* : FlowContext */; -val* var_after_block /* var after_block: FlowContext */; -val* var3 /* : nullable EscapeMark */; +val* var3 /* : nullable AExpr */; val* var4 /* : FlowContext */; -val* var5 /* : nullable EscapeMark */; +val* var6 /* : FlowContext */; +val* var_after_block /* var after_block: FlowContext */; +val* var7 /* : nullable EscapeMark */; +val* var9 /* : nullable EscapeMark */; +val* var10 /* : FlowContext */; +val* var11 /* : nullable EscapeMark */; +val* var13 /* : nullable EscapeMark */; var_v = p0; -var = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_sub_flow]))(var_v) /* make_sub_flow on */; +{ +var = flow__FlowVisitor__make_sub_flow(var_v); +} var_before_loop = var; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ALoopExpr__n_block]))(self) /* n_block on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var1) /* enter_visit on */; -var2 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(var_v) /* current_flow_context on */; -var_after_block = var2; -((void (*)(val*, val*))(var_before_loop->class->vft[COLOR_flow__FlowContext__add_loop]))(var_before_loop, var_after_block) /* add_loop on */; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_scope__ALoopExpr__escapemark]))(self) /* escapemark on */; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__merge_continues_to]))(var_v, var_after_block, var3) /* merge_continues_to on */; -var4 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_unreachable_flow]))(var_v) /* make_unreachable_flow on */; -var4; -var5 = ((val* (*)(val*))(self->class->vft[COLOR_scope__ALoopExpr__escapemark]))(self) /* escapemark on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__merge_breaks]))(var_v, var5) /* merge_breaks on */; +{ +{ /* Inline parser_nodes#ALoopExpr#n_block (self) on */ +var3 = self->attrs[COLOR_parser_nodes__ALoopExpr___n_block].val; /* _n_block on */ +var1 = var3; +RET_LABEL2:(void)0; +} +} +{ +parser_nodes__Visitor__enter_visit(var_v, var1); /* Direct call parser_nodes#Visitor#enter_visit on */ +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context (var_v) on */ +var6 = var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 36); +show_backtrace(1); +} +var4 = var6; +RET_LABEL5:(void)0; +} +} +var_after_block = var4; +{ +flow__FlowContext__add_loop(var_before_loop, var_after_block); /* Direct call flow#FlowContext#add_loop on */ +} +{ +{ /* Inline scope#ALoopExpr#continue_mark (self) on */ +var9 = self->attrs[COLOR_scope__ALoopExpr___continue_mark].val; /* _continue_mark on */ +var7 = var9; +RET_LABEL8:(void)0; +} +} +{ +flow__FlowVisitor__merge_continues_to(var_v, var_after_block, var7); /* Direct call flow#FlowVisitor#merge_continues_to on */ +} +{ +var10 = flow__FlowVisitor__make_unreachable_flow(var_v); +} +{ +{ /* Inline scope#ALoopExpr#break_mark (self) on */ +var13 = self->attrs[COLOR_scope__ALoopExpr___break_mark].val; /* _break_mark on */ +var11 = var13; +RET_LABEL12:(void)0; +} +} +{ +flow__FlowVisitor__merge_breaks(var_v, var11); /* Direct call flow#FlowVisitor#merge_breaks on */ +} RET_LABEL:; } /* method flow#ALoopExpr#accept_flow_visitor for (self: Object, FlowVisitor) */ void VIRTUAL_flow__ALoopExpr__accept_flow_visitor(val* self, val* p0) { -flow__ALoopExpr__accept_flow_visitor(self, p0); +flow__ALoopExpr__accept_flow_visitor(self, p0); /* Direct call flow#ALoopExpr#accept_flow_visitor on */ RET_LABEL:; } /* method flow#AForExpr#accept_flow_visitor for (self: AForExpr, FlowVisitor) */ void flow__AForExpr__accept_flow_visitor(val* self, val* p0) { val* var_v /* var v: FlowVisitor */; val* var /* : AExpr */; -val* var1 /* : FlowContext */; -val* var_before_loop /* var before_loop: FlowContext */; -val* var2 /* : nullable AExpr */; +val* var2 /* : AExpr */; val* var3 /* : FlowContext */; +val* var_before_loop /* var before_loop: FlowContext */; +val* var4 /* : nullable AExpr */; +val* var6 /* : nullable AExpr */; +val* var7 /* : FlowContext */; +val* var9 /* : FlowContext */; val* var_after_block /* var after_block: FlowContext */; -val* var4 /* : nullable EscapeMark */; -val* var5 /* : FlowContext */; -val* var6 /* : FlowContext */; -val* var7 /* : nullable EscapeMark */; +val* var10 /* : nullable EscapeMark */; +val* var12 /* : nullable EscapeMark */; +val* var13 /* : FlowContext */; +val* var15 /* : FlowContext */; +val* var16 /* : FlowContext */; +val* var17 /* : nullable EscapeMark */; +val* var19 /* : nullable EscapeMark */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AForExpr__n_expr]))(self) /* n_expr on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on */; -var1 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_sub_flow]))(var_v) /* make_sub_flow on */; -var_before_loop = var1; -var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AForExpr__n_block]))(self) /* n_block on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var2) /* enter_visit on */; -var3 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(var_v) /* current_flow_context on */; -var_after_block = var3; -((void (*)(val*, val*))(var_before_loop->class->vft[COLOR_flow__FlowContext__add_loop]))(var_before_loop, var_after_block) /* add_loop on */; -var4 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AForExpr__escapemark]))(self) /* escapemark on */; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__merge_continues_to]))(var_v, var_after_block, var4) /* merge_continues_to on */; -var5 = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context]))(var_v) /* current_flow_context on */; -var6 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_merge_flow]))(var_v, var5, var_before_loop) /* make_merge_flow on */; -var6; -var7 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AForExpr__escapemark]))(self) /* escapemark on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__merge_breaks]))(var_v, var7) /* merge_breaks on */; +{ +{ /* Inline parser_nodes#AForExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_parser_nodes__AForExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1427); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +parser_nodes__Visitor__enter_visit(var_v, var); /* Direct call parser_nodes#Visitor#enter_visit on */ +} +{ +var3 = flow__FlowVisitor__make_sub_flow(var_v); +} +var_before_loop = var3; +{ +{ /* Inline parser_nodes#AForExpr#n_block (self) on */ +var6 = self->attrs[COLOR_parser_nodes__AForExpr___n_block].val; /* _n_block on */ +var4 = var6; +RET_LABEL5:(void)0; +} +} +{ +parser_nodes__Visitor__enter_visit(var_v, var4); /* Direct call parser_nodes#Visitor#enter_visit on */ +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context (var_v) on */ +var9 = var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on */ +if (unlikely(var9 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 36); +show_backtrace(1); +} +var7 = var9; +RET_LABEL8:(void)0; +} +} +var_after_block = var7; +{ +flow__FlowContext__add_loop(var_before_loop, var_after_block); /* Direct call flow#FlowContext#add_loop on */ +} +{ +{ /* Inline scope#AForExpr#continue_mark (self) on */ +var12 = self->attrs[COLOR_scope__AForExpr___continue_mark].val; /* _continue_mark on */ +var10 = var12; +RET_LABEL11:(void)0; +} +} +{ +flow__FlowVisitor__merge_continues_to(var_v, var_after_block, var10); /* Direct call flow#FlowVisitor#merge_continues_to on */ +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context (var_v) on */ +var15 = var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on */ +if (unlikely(var15 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 36); +show_backtrace(1); +} +var13 = var15; +RET_LABEL14:(void)0; +} +} +{ +var16 = flow__FlowVisitor__make_merge_flow(var_v, var13, var_before_loop); +} +{ +{ /* Inline scope#AForExpr#break_mark (self) on */ +var19 = self->attrs[COLOR_scope__AForExpr___break_mark].val; /* _break_mark on */ +var17 = var19; +RET_LABEL18:(void)0; +} +} +{ +flow__FlowVisitor__merge_breaks(var_v, var17); /* Direct call flow#FlowVisitor#merge_breaks on */ +} RET_LABEL:; } /* method flow#AForExpr#accept_flow_visitor for (self: Object, FlowVisitor) */ void VIRTUAL_flow__AForExpr__accept_flow_visitor(val* self, val* p0) { -flow__AForExpr__accept_flow_visitor(self, p0); +flow__AForExpr__accept_flow_visitor(self, p0); /* Direct call flow#AForExpr#accept_flow_visitor on */ RET_LABEL:; } /* method flow#AAssertExpr#accept_flow_visitor for (self: AAssertExpr, FlowVisitor) */ void flow__AAssertExpr__accept_flow_visitor(val* self, val* p0) { val* var_v /* var v: FlowVisitor */; val* var /* : AExpr */; -val* var1 /* : FlowContext */; +val* var2 /* : AExpr */; +val* var3 /* : FlowContext */; val* var_after_expr /* var after_expr: FlowContext */; -val* var2 /* : FlowContext */; -val* var3 /* : nullable AExpr */; val* var4 /* : FlowContext */; +val* var6 /* : FlowContext */; +val* var8 /* : nullable AExpr */; +val* var10 /* : nullable AExpr */; +val* var11 /* : FlowContext */; +val* var13 /* : FlowContext */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssertExpr__n_expr]))(self) /* n_expr on */; -var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__visit_expr]))(var_v, var) /* visit_expr on */; -var_after_expr = var1; -var2 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_false]))(var_after_expr) /* when_false on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(var_v, var2) /* current_flow_context= on */; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssertExpr__n_else]))(self) /* n_else on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var3) /* enter_visit on */; -var4 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_true]))(var_after_expr) /* when_true on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(var_v, var4) /* current_flow_context= on */; +{ +{ /* Inline parser_nodes#AAssertExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_parser_nodes__AAssertExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1437); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +var3 = flow__FlowVisitor__visit_expr(var_v, var); +} +var_after_expr = var3; +{ +{ /* Inline flow#FlowContext#when_false (var_after_expr) on */ +var6 = var_after_expr->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 228); +show_backtrace(1); +} +var4 = var6; +RET_LABEL5:(void)0; +} +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context= (var_v,var4) on */ +var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var4; /* _current_flow_context on */ +RET_LABEL7:(void)0; +} +} +{ +{ /* Inline parser_nodes#AAssertExpr#n_else (self) on */ +var10 = self->attrs[COLOR_parser_nodes__AAssertExpr___n_else].val; /* _n_else on */ +var8 = var10; +RET_LABEL9:(void)0; +} +} +{ +parser_nodes__Visitor__enter_visit(var_v, var8); /* Direct call parser_nodes#Visitor#enter_visit on */ +} +{ +{ /* Inline flow#FlowContext#when_true (var_after_expr) on */ +var13 = var_after_expr->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on */ +if (unlikely(var13 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 225); +show_backtrace(1); +} +var11 = var13; +RET_LABEL12:(void)0; +} +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context= (var_v,var11) on */ +var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var11; /* _current_flow_context on */ +RET_LABEL14:(void)0; +} +} RET_LABEL:; } /* method flow#AAssertExpr#accept_flow_visitor for (self: Object, FlowVisitor) */ void VIRTUAL_flow__AAssertExpr__accept_flow_visitor(val* self, val* p0) { -flow__AAssertExpr__accept_flow_visitor(self, p0); +flow__AAssertExpr__accept_flow_visitor(self, p0); /* Direct call flow#AAssertExpr#accept_flow_visitor on */ RET_LABEL:; } /* method flow#AOrExpr#accept_flow_visitor for (self: AOrExpr, FlowVisitor) */ void flow__AOrExpr__accept_flow_visitor(val* self, val* p0) { val* var_v /* var v: FlowVisitor */; val* var /* : AExpr */; -val* var1 /* : FlowContext */; +val* var2 /* : AExpr */; +val* var3 /* : FlowContext */; val* var_after_expr /* var after_expr: FlowContext */; -val* var2 /* : FlowContext */; -val* var3 /* : AExpr */; val* var4 /* : FlowContext */; -val* var_after_expr2 /* var after_expr2: FlowContext */; -val* var5 /* : FlowContext */; val* var6 /* : FlowContext */; -val* var7 /* : FlowContext */; +val* var8 /* : AExpr */; +val* var10 /* : AExpr */; +val* var11 /* : FlowContext */; +val* var_after_expr2 /* var after_expr2: FlowContext */; +val* var12 /* : FlowContext */; +val* var14 /* : FlowContext */; +val* var15 /* : FlowContext */; +val* var17 /* : FlowContext */; +val* var18 /* : FlowContext */; val* var_merge_true /* var merge_true: FlowContext */; static val* varonce; -val* var8 /* : String */; -char* var9 /* : NativeString */; -long var10 /* : Int */; -val* var11 /* : String */; -val* var12 /* : FlowContext */; -val* var13 /* : FlowContext */; +val* var19 /* : String */; +char* var20 /* : NativeString */; +long var21 /* : Int */; +val* var22 /* : FlatString */; +val* var24 /* : FlowContext */; +val* var26 /* : FlowContext */; +val* var27 /* : FlowContext */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrExpr__n_expr]))(self) /* n_expr on */; -var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__visit_expr]))(var_v, var) /* visit_expr on */; -var_after_expr = var1; -var2 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_false]))(var_after_expr) /* when_false on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(var_v, var2) /* current_flow_context= on */; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrExpr__n_expr2]))(self) /* n_expr2 on */; -var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__visit_expr]))(var_v, var3) /* visit_expr on */; -var_after_expr2 = var4; -var5 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_true]))(var_after_expr) /* when_true on */; -var6 = ((val* (*)(val*))(var_after_expr2->class->vft[COLOR_flow__FlowContext__when_true]))(var_after_expr2) /* when_true on */; -var7 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_merge_flow]))(var_v, var5, var6) /* make_merge_flow on */; -var_merge_true = var7; +{ +{ /* Inline parser_nodes#AOrExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_parser_nodes__AOrExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1486); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +var3 = flow__FlowVisitor__visit_expr(var_v, var); +} +var_after_expr = var3; +{ +{ /* Inline flow#FlowContext#when_false (var_after_expr) on */ +var6 = var_after_expr->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 228); +show_backtrace(1); +} +var4 = var6; +RET_LABEL5:(void)0; +} +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context= (var_v,var4) on */ +var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var4; /* _current_flow_context on */ +RET_LABEL7:(void)0; +} +} +{ +{ /* Inline parser_nodes#AOrExpr#n_expr2 (self) on */ +var10 = self->attrs[COLOR_parser_nodes__AOrExpr___n_expr2].val; /* _n_expr2 on */ +if (unlikely(var10 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1487); +show_backtrace(1); +} +var8 = var10; +RET_LABEL9:(void)0; +} +} +{ +var11 = flow__FlowVisitor__visit_expr(var_v, var8); +} +var_after_expr2 = var11; +{ +{ /* Inline flow#FlowContext#when_true (var_after_expr) on */ +var14 = var_after_expr->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on */ +if (unlikely(var14 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 225); +show_backtrace(1); +} +var12 = var14; +RET_LABEL13:(void)0; +} +} +{ +{ /* Inline flow#FlowContext#when_true (var_after_expr2) on */ +var17 = var_after_expr2->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on */ +if (unlikely(var17 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 225); +show_backtrace(1); +} +var15 = var17; +RET_LABEL16:(void)0; +} +} +{ +var18 = flow__FlowVisitor__make_merge_flow(var_v, var12, var15); +} +var_merge_true = var18; if (varonce) { -var8 = varonce; -} else { -var9 = "OR TRUE"; -var10 = 7; -var11 = string__NativeString__to_s_with_length(var9, var10); -var8 = var11; -varonce = var8; +var19 = varonce; +} else { +var20 = "OR TRUE"; +var21 = 7; +var22 = string__NativeString__to_s_with_length(var20, var21); +var19 = var22; +varonce = var19; +} +{ +{ /* Inline flow#FlowContext#name= (var_merge_true,var19) on */ +var_merge_true->attrs[COLOR_flow__FlowContext___name].val = var19; /* _name on */ +RET_LABEL23:(void)0; +} +} +{ +{ /* Inline flow#FlowContext#when_false (var_after_expr2) on */ +var26 = var_after_expr2->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on */ +if (unlikely(var26 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 228); +show_backtrace(1); +} +var24 = var26; +RET_LABEL25:(void)0; +} +} +{ +var27 = flow__FlowVisitor__make_true_false_flow(var_v, var_merge_true, var24); } -((void (*)(val*, val*))(var_merge_true->class->vft[COLOR_flow__FlowContext__name_61d]))(var_merge_true, var8) /* name= on */; -var12 = ((val* (*)(val*))(var_after_expr2->class->vft[COLOR_flow__FlowContext__when_false]))(var_after_expr2) /* when_false on */; -var13 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_true_false_flow]))(var_v, var_merge_true, var12) /* make_true_false_flow on */; -var13; RET_LABEL:; } /* method flow#AOrExpr#accept_flow_visitor for (self: Object, FlowVisitor) */ void VIRTUAL_flow__AOrExpr__accept_flow_visitor(val* self, val* p0) { -flow__AOrExpr__accept_flow_visitor(self, p0); +flow__AOrExpr__accept_flow_visitor(self, p0); /* Direct call flow#AOrExpr#accept_flow_visitor on */ RET_LABEL:; } /* method flow#AImpliesExpr#accept_flow_visitor for (self: AImpliesExpr, FlowVisitor) */ void flow__AImpliesExpr__accept_flow_visitor(val* self, val* p0) { val* var_v /* var v: FlowVisitor */; val* var /* : AExpr */; -val* var1 /* : FlowContext */; +val* var2 /* : AExpr */; +val* var3 /* : FlowContext */; val* var_after_expr /* var after_expr: FlowContext */; -val* var2 /* : FlowContext */; -val* var3 /* : AExpr */; val* var4 /* : FlowContext */; -val* var_after_expr2 /* var after_expr2: FlowContext */; -val* var5 /* : FlowContext */; val* var6 /* : FlowContext */; -val* var7 /* : FlowContext */; +val* var8 /* : AExpr */; +val* var10 /* : AExpr */; +val* var11 /* : FlowContext */; +val* var_after_expr2 /* var after_expr2: FlowContext */; +val* var12 /* : FlowContext */; +val* var14 /* : FlowContext */; +val* var15 /* : FlowContext */; +val* var17 /* : FlowContext */; +val* var18 /* : FlowContext */; val* var_merge_true /* var merge_true: FlowContext */; static val* varonce; -val* var8 /* : String */; -char* var9 /* : NativeString */; -long var10 /* : Int */; -val* var11 /* : String */; -val* var12 /* : FlowContext */; -val* var13 /* : FlowContext */; +val* var19 /* : String */; +char* var20 /* : NativeString */; +long var21 /* : Int */; +val* var22 /* : FlatString */; +val* var24 /* : FlowContext */; +val* var26 /* : FlowContext */; +val* var27 /* : FlowContext */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AImpliesExpr__n_expr]))(self) /* n_expr on */; -var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__visit_expr]))(var_v, var) /* visit_expr on */; -var_after_expr = var1; -var2 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_true]))(var_after_expr) /* when_true on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(var_v, var2) /* current_flow_context= on */; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AImpliesExpr__n_expr2]))(self) /* n_expr2 on */; -var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__visit_expr]))(var_v, var3) /* visit_expr on */; -var_after_expr2 = var4; -var5 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_false]))(var_after_expr) /* when_false on */; -var6 = ((val* (*)(val*))(var_after_expr2->class->vft[COLOR_flow__FlowContext__when_true]))(var_after_expr2) /* when_true on */; -var7 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_merge_flow]))(var_v, var5, var6) /* make_merge_flow on */; -var_merge_true = var7; +{ +{ /* Inline parser_nodes#AImpliesExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_parser_nodes__AImpliesExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1507); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +var3 = flow__FlowVisitor__visit_expr(var_v, var); +} +var_after_expr = var3; +{ +{ /* Inline flow#FlowContext#when_true (var_after_expr) on */ +var6 = var_after_expr->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 225); +show_backtrace(1); +} +var4 = var6; +RET_LABEL5:(void)0; +} +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context= (var_v,var4) on */ +var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var4; /* _current_flow_context on */ +RET_LABEL7:(void)0; +} +} +{ +{ /* Inline parser_nodes#AImpliesExpr#n_expr2 (self) on */ +var10 = self->attrs[COLOR_parser_nodes__AImpliesExpr___n_expr2].val; /* _n_expr2 on */ +if (unlikely(var10 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1508); +show_backtrace(1); +} +var8 = var10; +RET_LABEL9:(void)0; +} +} +{ +var11 = flow__FlowVisitor__visit_expr(var_v, var8); +} +var_after_expr2 = var11; +{ +{ /* Inline flow#FlowContext#when_false (var_after_expr) on */ +var14 = var_after_expr->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on */ +if (unlikely(var14 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 228); +show_backtrace(1); +} +var12 = var14; +RET_LABEL13:(void)0; +} +} +{ +{ /* Inline flow#FlowContext#when_true (var_after_expr2) on */ +var17 = var_after_expr2->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on */ +if (unlikely(var17 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 225); +show_backtrace(1); +} +var15 = var17; +RET_LABEL16:(void)0; +} +} +{ +var18 = flow__FlowVisitor__make_merge_flow(var_v, var12, var15); +} +var_merge_true = var18; if (varonce) { -var8 = varonce; -} else { -var9 = "OR TRUE"; -var10 = 7; -var11 = string__NativeString__to_s_with_length(var9, var10); -var8 = var11; -varonce = var8; +var19 = varonce; +} else { +var20 = "OR TRUE"; +var21 = 7; +var22 = string__NativeString__to_s_with_length(var20, var21); +var19 = var22; +varonce = var19; +} +{ +{ /* Inline flow#FlowContext#name= (var_merge_true,var19) on */ +var_merge_true->attrs[COLOR_flow__FlowContext___name].val = var19; /* _name on */ +RET_LABEL23:(void)0; +} +} +{ +{ /* Inline flow#FlowContext#when_false (var_after_expr2) on */ +var26 = var_after_expr2->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on */ +if (unlikely(var26 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 228); +show_backtrace(1); +} +var24 = var26; +RET_LABEL25:(void)0; +} +} +{ +var27 = flow__FlowVisitor__make_true_false_flow(var_v, var_merge_true, var24); } -((void (*)(val*, val*))(var_merge_true->class->vft[COLOR_flow__FlowContext__name_61d]))(var_merge_true, var8) /* name= on */; -var12 = ((val* (*)(val*))(var_after_expr2->class->vft[COLOR_flow__FlowContext__when_false]))(var_after_expr2) /* when_false on */; -var13 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_true_false_flow]))(var_v, var_merge_true, var12) /* make_true_false_flow on */; -var13; RET_LABEL:; } /* method flow#AImpliesExpr#accept_flow_visitor for (self: Object, FlowVisitor) */ void VIRTUAL_flow__AImpliesExpr__accept_flow_visitor(val* self, val* p0) { -flow__AImpliesExpr__accept_flow_visitor(self, p0); +flow__AImpliesExpr__accept_flow_visitor(self, p0); /* Direct call flow#AImpliesExpr#accept_flow_visitor on */ RET_LABEL:; } /* method flow#AAndExpr#accept_flow_visitor for (self: AAndExpr, FlowVisitor) */ void flow__AAndExpr__accept_flow_visitor(val* self, val* p0) { val* var_v /* var v: FlowVisitor */; val* var /* : AExpr */; -val* var1 /* : FlowContext */; +val* var2 /* : AExpr */; +val* var3 /* : FlowContext */; val* var_after_expr /* var after_expr: FlowContext */; -val* var2 /* : FlowContext */; -val* var3 /* : AExpr */; val* var4 /* : FlowContext */; -val* var_after_expr2 /* var after_expr2: FlowContext */; -val* var5 /* : FlowContext */; val* var6 /* : FlowContext */; -val* var7 /* : FlowContext */; +val* var8 /* : AExpr */; +val* var10 /* : AExpr */; +val* var11 /* : FlowContext */; +val* var_after_expr2 /* var after_expr2: FlowContext */; +val* var12 /* : FlowContext */; +val* var14 /* : FlowContext */; +val* var15 /* : FlowContext */; +val* var17 /* : FlowContext */; +val* var18 /* : FlowContext */; val* var_merge_false /* var merge_false: FlowContext */; static val* varonce; -val* var8 /* : String */; -char* var9 /* : NativeString */; -long var10 /* : Int */; -val* var11 /* : String */; -val* var12 /* : FlowContext */; -val* var13 /* : FlowContext */; +val* var19 /* : String */; +char* var20 /* : NativeString */; +long var21 /* : Int */; +val* var22 /* : FlatString */; +val* var24 /* : FlowContext */; +val* var26 /* : FlowContext */; +val* var27 /* : FlowContext */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAndExpr__n_expr]))(self) /* n_expr on */; -var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__visit_expr]))(var_v, var) /* visit_expr on */; -var_after_expr = var1; -var2 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_true]))(var_after_expr) /* when_true on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(var_v, var2) /* current_flow_context= on */; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAndExpr__n_expr2]))(self) /* n_expr2 on */; -var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__visit_expr]))(var_v, var3) /* visit_expr on */; -var_after_expr2 = var4; -var5 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_false]))(var_after_expr) /* when_false on */; -var6 = ((val* (*)(val*))(var_after_expr2->class->vft[COLOR_flow__FlowContext__when_false]))(var_after_expr2) /* when_false on */; -var7 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_merge_flow]))(var_v, var5, var6) /* make_merge_flow on */; -var_merge_false = var7; +{ +{ /* Inline parser_nodes#AAndExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_parser_nodes__AAndExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1493); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +var3 = flow__FlowVisitor__visit_expr(var_v, var); +} +var_after_expr = var3; +{ +{ /* Inline flow#FlowContext#when_true (var_after_expr) on */ +var6 = var_after_expr->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 225); +show_backtrace(1); +} +var4 = var6; +RET_LABEL5:(void)0; +} +} +{ +{ /* Inline flow#FlowVisitor#current_flow_context= (var_v,var4) on */ +var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var4; /* _current_flow_context on */ +RET_LABEL7:(void)0; +} +} +{ +{ /* Inline parser_nodes#AAndExpr#n_expr2 (self) on */ +var10 = self->attrs[COLOR_parser_nodes__AAndExpr___n_expr2].val; /* _n_expr2 on */ +if (unlikely(var10 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1494); +show_backtrace(1); +} +var8 = var10; +RET_LABEL9:(void)0; +} +} +{ +var11 = flow__FlowVisitor__visit_expr(var_v, var8); +} +var_after_expr2 = var11; +{ +{ /* Inline flow#FlowContext#when_false (var_after_expr) on */ +var14 = var_after_expr->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on */ +if (unlikely(var14 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 228); +show_backtrace(1); +} +var12 = var14; +RET_LABEL13:(void)0; +} +} +{ +{ /* Inline flow#FlowContext#when_false (var_after_expr2) on */ +var17 = var_after_expr2->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on */ +if (unlikely(var17 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 228); +show_backtrace(1); +} +var15 = var17; +RET_LABEL16:(void)0; +} +} +{ +var18 = flow__FlowVisitor__make_merge_flow(var_v, var12, var15); +} +var_merge_false = var18; if (varonce) { -var8 = varonce; -} else { -var9 = "AND FALSE"; -var10 = 9; -var11 = string__NativeString__to_s_with_length(var9, var10); -var8 = var11; -varonce = var8; +var19 = varonce; +} else { +var20 = "AND FALSE"; +var21 = 9; +var22 = string__NativeString__to_s_with_length(var20, var21); +var19 = var22; +varonce = var19; +} +{ +{ /* Inline flow#FlowContext#name= (var_merge_false,var19) on */ +var_merge_false->attrs[COLOR_flow__FlowContext___name].val = var19; /* _name on */ +RET_LABEL23:(void)0; +} +} +{ +{ /* Inline flow#FlowContext#when_true (var_after_expr2) on */ +var26 = var_after_expr2->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on */ +if (unlikely(var26 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 225); +show_backtrace(1); +} +var24 = var26; +RET_LABEL25:(void)0; +} +} +{ +var27 = flow__FlowVisitor__make_true_false_flow(var_v, var24, var_merge_false); } -((void (*)(val*, val*))(var_merge_false->class->vft[COLOR_flow__FlowContext__name_61d]))(var_merge_false, var8) /* name= on */; -var12 = ((val* (*)(val*))(var_after_expr2->class->vft[COLOR_flow__FlowContext__when_true]))(var_after_expr2) /* when_true on */; -var13 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_true_false_flow]))(var_v, var12, var_merge_false) /* make_true_false_flow on */; -var13; RET_LABEL:; } /* method flow#AAndExpr#accept_flow_visitor for (self: Object, FlowVisitor) */ void VIRTUAL_flow__AAndExpr__accept_flow_visitor(val* self, val* p0) { -flow__AAndExpr__accept_flow_visitor(self, p0); +flow__AAndExpr__accept_flow_visitor(self, p0); /* Direct call flow#AAndExpr#accept_flow_visitor on */ RET_LABEL:; } /* method flow#ANotExpr#accept_flow_visitor for (self: ANotExpr, FlowVisitor) */ void flow__ANotExpr__accept_flow_visitor(val* self, val* p0) { val* var_v /* var v: FlowVisitor */; val* var /* : AExpr */; -val* var1 /* : FlowContext */; -val* var_after_expr /* var after_expr: FlowContext */; -val* var2 /* : FlowContext */; +val* var2 /* : AExpr */; val* var3 /* : FlowContext */; +val* var_after_expr /* var after_expr: FlowContext */; val* var4 /* : FlowContext */; +val* var6 /* : FlowContext */; +val* var7 /* : FlowContext */; +val* var9 /* : FlowContext */; +val* var10 /* : FlowContext */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANotExpr__n_expr]))(self) /* n_expr on */; -var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__visit_expr]))(var_v, var) /* visit_expr on */; -var_after_expr = var1; -var2 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_false]))(var_after_expr) /* when_false on */; -var3 = ((val* (*)(val*))(var_after_expr->class->vft[COLOR_flow__FlowContext__when_true]))(var_after_expr) /* when_true on */; -var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_true_false_flow]))(var_v, var2, var3) /* make_true_false_flow on */; -var4; +{ +{ /* Inline parser_nodes#ANotExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_parser_nodes__ANotExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1515); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +var3 = flow__FlowVisitor__visit_expr(var_v, var); +} +var_after_expr = var3; +{ +{ /* Inline flow#FlowContext#when_false (var_after_expr) on */ +var6 = var_after_expr->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 228); +show_backtrace(1); +} +var4 = var6; +RET_LABEL5:(void)0; +} +} +{ +{ /* Inline flow#FlowContext#when_true (var_after_expr) on */ +var9 = var_after_expr->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on */ +if (unlikely(var9 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true"); +PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 225); +show_backtrace(1); +} +var7 = var9; +RET_LABEL8:(void)0; +} +} +{ +var10 = flow__FlowVisitor__make_true_false_flow(var_v, var4, var7); +} RET_LABEL:; } /* method flow#ANotExpr#accept_flow_visitor for (self: Object, FlowVisitor) */ void VIRTUAL_flow__ANotExpr__accept_flow_visitor(val* self, val* p0) { -flow__ANotExpr__accept_flow_visitor(self, p0); +flow__ANotExpr__accept_flow_visitor(self, p0); /* Direct call flow#ANotExpr#accept_flow_visitor on */ RET_LABEL:; } /* method flow#AOrElseExpr#accept_flow_visitor for (self: AOrElseExpr, FlowVisitor) */ void flow__AOrElseExpr__accept_flow_visitor(val* self, val* p0) { val* var_v /* var v: FlowVisitor */; var_v = p0; +{ ((void (*)(val*, val*))(self->class->vft[COLOR_flow__AOrElseExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on */; +} RET_LABEL:; } /* method flow#AOrElseExpr#accept_flow_visitor for (self: Object, FlowVisitor) */ void VIRTUAL_flow__AOrElseExpr__accept_flow_visitor(val* self, val* p0) { -flow__AOrElseExpr__accept_flow_visitor(self, p0); +flow__AOrElseExpr__accept_flow_visitor(self, p0); /* Direct call flow#AOrElseExpr#accept_flow_visitor on */ RET_LABEL:; } /* method flow#AEqExpr#accept_flow_visitor for (self: AEqExpr, FlowVisitor) */ @@ -2454,14 +3680,17 @@ void flow__AEqExpr__accept_flow_visitor(val* self, val* p0) { val* var_v /* var v: FlowVisitor */; val* var /* : FlowContext */; var_v = p0; +{ ((void (*)(val*, val*))(self->class->vft[COLOR_flow__AEqExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on */; -var = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_sub_true_false_flow]))(var_v) /* make_sub_true_false_flow on */; -var; +} +{ +var = flow__FlowVisitor__make_sub_true_false_flow(var_v); +} RET_LABEL:; } /* method flow#AEqExpr#accept_flow_visitor for (self: Object, FlowVisitor) */ void VIRTUAL_flow__AEqExpr__accept_flow_visitor(val* self, val* p0) { -flow__AEqExpr__accept_flow_visitor(self, p0); +flow__AEqExpr__accept_flow_visitor(self, p0); /* Direct call flow#AEqExpr#accept_flow_visitor on */ RET_LABEL:; } /* method flow#ANeExpr#accept_flow_visitor for (self: ANeExpr, FlowVisitor) */ @@ -2469,14 +3698,17 @@ void flow__ANeExpr__accept_flow_visitor(val* self, val* p0) { val* var_v /* var v: FlowVisitor */; val* var /* : FlowContext */; var_v = p0; +{ ((void (*)(val*, val*))(self->class->vft[COLOR_flow__ANeExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on */; -var = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_sub_true_false_flow]))(var_v) /* make_sub_true_false_flow on */; -var; +} +{ +var = flow__FlowVisitor__make_sub_true_false_flow(var_v); +} RET_LABEL:; } /* method flow#ANeExpr#accept_flow_visitor for (self: Object, FlowVisitor) */ void VIRTUAL_flow__ANeExpr__accept_flow_visitor(val* self, val* p0) { -flow__ANeExpr__accept_flow_visitor(self, p0); +flow__ANeExpr__accept_flow_visitor(self, p0); /* Direct call flow#ANeExpr#accept_flow_visitor on */ RET_LABEL:; } /* method flow#AIsaExpr#accept_flow_visitor for (self: AIsaExpr, FlowVisitor) */ @@ -2484,31 +3716,90 @@ void flow__AIsaExpr__accept_flow_visitor(val* self, val* p0) { val* var_v /* var v: FlowVisitor */; val* var /* : FlowContext */; var_v = p0; +{ ((void (*)(val*, val*))(self->class->vft[COLOR_flow__AIsaExpr__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on */; -var = ((val* (*)(val*))(var_v->class->vft[COLOR_flow__FlowVisitor__make_sub_true_false_flow]))(var_v) /* make_sub_true_false_flow on */; -var; +} +{ +var = flow__FlowVisitor__make_sub_true_false_flow(var_v); +} RET_LABEL:; } /* method flow#AIsaExpr#accept_flow_visitor for (self: Object, FlowVisitor) */ void VIRTUAL_flow__AIsaExpr__accept_flow_visitor(val* self, val* p0) { -flow__AIsaExpr__accept_flow_visitor(self, p0); +flow__AIsaExpr__accept_flow_visitor(self, p0); /* Direct call flow#AIsaExpr#accept_flow_visitor on */ RET_LABEL:; } -/* method flow#AProxyExpr#accept_flow_visitor for (self: AProxyExpr, FlowVisitor) */ -void flow__AProxyExpr__accept_flow_visitor(val* self, val* p0) { +/* method flow#AParExpr#accept_flow_visitor for (self: AParExpr, FlowVisitor) */ +void flow__AParExpr__accept_flow_visitor(val* self, val* p0) { val* var_v /* var v: FlowVisitor */; val* var /* : AExpr */; -val* var1 /* : FlowContext */; +val* var2 /* : AExpr */; +val* var3 /* : FlowContext */; +val* var_after_expr /* var after_expr: FlowContext */; +var_v = p0; +{ +{ /* Inline parser_nodes#AParExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_parser_nodes__AParExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1868); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +var3 = flow__FlowVisitor__visit_expr(var_v, var); +} +var_after_expr = var3; +{ +{ /* Inline flow#FlowVisitor#current_flow_context= (var_v,var_after_expr) on */ +var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var_after_expr; /* _current_flow_context on */ +RET_LABEL4:(void)0; +} +} +RET_LABEL:; +} +/* method flow#AParExpr#accept_flow_visitor for (self: Object, FlowVisitor) */ +void VIRTUAL_flow__AParExpr__accept_flow_visitor(val* self, val* p0) { +flow__AParExpr__accept_flow_visitor(self, p0); /* Direct call flow#AParExpr#accept_flow_visitor on */ +RET_LABEL:; +} +/* method flow#AOnceExpr#accept_flow_visitor for (self: AOnceExpr, FlowVisitor) */ +void flow__AOnceExpr__accept_flow_visitor(val* self, val* p0) { +val* var_v /* var v: FlowVisitor */; +val* var /* : AExpr */; +val* var2 /* : AExpr */; +val* var3 /* : FlowContext */; val* var_after_expr /* var after_expr: FlowContext */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AProxyExpr__n_expr]))(self) /* n_expr on */; -var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__visit_expr]))(var_v, var) /* visit_expr on */; -var_after_expr = var1; -((void (*)(val*, val*))(var_v->class->vft[COLOR_flow__FlowVisitor__current_flow_context_61d]))(var_v, var_after_expr) /* current_flow_context= on */; +{ +{ /* Inline parser_nodes#AOnceExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_parser_nodes__AOnceExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1459); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +var3 = flow__FlowVisitor__visit_expr(var_v, var); +} +var_after_expr = var3; +{ +{ /* Inline flow#FlowVisitor#current_flow_context= (var_v,var_after_expr) on */ +var_v->attrs[COLOR_flow__FlowVisitor___current_flow_context].val = var_after_expr; /* _current_flow_context on */ +RET_LABEL4:(void)0; +} +} RET_LABEL:; } -/* method flow#AProxyExpr#accept_flow_visitor for (self: Object, FlowVisitor) */ -void VIRTUAL_flow__AProxyExpr__accept_flow_visitor(val* self, val* p0) { -flow__AProxyExpr__accept_flow_visitor(self, p0); +/* method flow#AOnceExpr#accept_flow_visitor for (self: Object, FlowVisitor) */ +void VIRTUAL_flow__AOnceExpr__accept_flow_visitor(val* self, val* p0) { +flow__AOnceExpr__accept_flow_visitor(self, p0); /* Direct call flow#AOnceExpr#accept_flow_visitor on */ RET_LABEL:; }