X-Git-Url: http://nitlanguage.org diff --git a/c_src/modelbuilder.sep.1.c b/c_src/modelbuilder.sep.1.c index 5d76261..90bd361 100644 --- a/c_src/modelbuilder.sep.1.c +++ b/c_src/modelbuilder.sep.1.c @@ -3,10 +3,10 @@ val* modelbuilder__ToolContext__opt_path(val* self) { val* var /* : OptionArray */; val* var1 /* : OptionArray */; -var1 = self->attrs[COLOR_modelbuilder__ToolContext___64dopt_path].val; /* @opt_path on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_path"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 37); +var1 = self->attrs[COLOR_modelbuilder__ToolContext___opt_path].val; /* _opt_path on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_path"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 33); show_backtrace(1); } var = var1; @@ -17,29 +17,29 @@ return var; val* VIRTUAL_modelbuilder__ToolContext__opt_path(val* self) { val* var /* : OptionArray */; val* var1 /* : OptionArray */; -var1 = modelbuilder__ToolContext__opt_path(self); -var = var1; -RET_LABEL:; -return var; +val* var3 /* : OptionArray */; +{ /* Inline modelbuilder#ToolContext#opt_path (self) on */ +var3 = self->attrs[COLOR_modelbuilder__ToolContext___opt_path].val; /* _opt_path on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_path"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 33); +show_backtrace(1); } -/* method modelbuilder#ToolContext#opt_path= for (self: ToolContext, OptionArray) */ -void modelbuilder__ToolContext__opt_path_61d(val* self, val* p0) { -self->attrs[COLOR_modelbuilder__ToolContext___64dopt_path].val = p0; /* @opt_path on */ -RET_LABEL:; +var1 = var3; +RET_LABEL2:(void)0; } -/* method modelbuilder#ToolContext#opt_path= for (self: Object, OptionArray) */ -void VIRTUAL_modelbuilder__ToolContext__opt_path_61d(val* self, val* p0) { -modelbuilder__ToolContext__opt_path_61d(self, p0); +var = var1; RET_LABEL:; +return var; } /* method modelbuilder#ToolContext#opt_only_metamodel for (self: ToolContext): OptionBool */ val* modelbuilder__ToolContext__opt_only_metamodel(val* self) { val* var /* : OptionBool */; val* var1 /* : OptionBool */; -var1 = self->attrs[COLOR_modelbuilder__ToolContext___64dopt_only_metamodel].val; /* @opt_only_metamodel on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_only_metamodel"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 40); +var1 = self->attrs[COLOR_modelbuilder__ToolContext___opt_only_metamodel].val; /* _opt_only_metamodel on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_only_metamodel"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 36); show_backtrace(1); } var = var1; @@ -50,29 +50,29 @@ return var; val* VIRTUAL_modelbuilder__ToolContext__opt_only_metamodel(val* self) { val* var /* : OptionBool */; val* var1 /* : OptionBool */; -var1 = modelbuilder__ToolContext__opt_only_metamodel(self); -var = var1; -RET_LABEL:; -return var; +val* var3 /* : OptionBool */; +{ /* Inline modelbuilder#ToolContext#opt_only_metamodel (self) on */ +var3 = self->attrs[COLOR_modelbuilder__ToolContext___opt_only_metamodel].val; /* _opt_only_metamodel on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_only_metamodel"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 36); +show_backtrace(1); } -/* method modelbuilder#ToolContext#opt_only_metamodel= for (self: ToolContext, OptionBool) */ -void modelbuilder__ToolContext__opt_only_metamodel_61d(val* self, val* p0) { -self->attrs[COLOR_modelbuilder__ToolContext___64dopt_only_metamodel].val = p0; /* @opt_only_metamodel on */ -RET_LABEL:; +var1 = var3; +RET_LABEL2:(void)0; } -/* method modelbuilder#ToolContext#opt_only_metamodel= for (self: Object, OptionBool) */ -void VIRTUAL_modelbuilder__ToolContext__opt_only_metamodel_61d(val* self, val* p0) { -modelbuilder__ToolContext__opt_only_metamodel_61d(self, p0); +var = var1; RET_LABEL:; +return var; } /* method modelbuilder#ToolContext#opt_only_parse for (self: ToolContext): OptionBool */ val* modelbuilder__ToolContext__opt_only_parse(val* self) { val* var /* : OptionBool */; val* var1 /* : OptionBool */; -var1 = self->attrs[COLOR_modelbuilder__ToolContext___64dopt_only_parse].val; /* @opt_only_parse on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_only_parse"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 43); +var1 = self->attrs[COLOR_modelbuilder__ToolContext___opt_only_parse].val; /* _opt_only_parse on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_only_parse"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 39); show_backtrace(1); } var = var1; @@ -83,60 +83,169 @@ return var; val* VIRTUAL_modelbuilder__ToolContext__opt_only_parse(val* self) { val* var /* : OptionBool */; val* var1 /* : OptionBool */; -var1 = modelbuilder__ToolContext__opt_only_parse(self); +val* var3 /* : OptionBool */; +{ /* Inline modelbuilder#ToolContext#opt_only_parse (self) on */ +var3 = self->attrs[COLOR_modelbuilder__ToolContext___opt_only_parse].val; /* _opt_only_parse on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_only_parse"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 39); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } -/* method modelbuilder#ToolContext#opt_only_parse= for (self: ToolContext, OptionBool) */ -void modelbuilder__ToolContext__opt_only_parse_61d(val* self, val* p0) { -self->attrs[COLOR_modelbuilder__ToolContext___64dopt_only_parse].val = p0; /* @opt_only_parse on */ +/* method modelbuilder#ToolContext#opt_ignore_visibility for (self: ToolContext): OptionBool */ +val* modelbuilder__ToolContext__opt_ignore_visibility(val* self) { +val* var /* : OptionBool */; +val* var1 /* : OptionBool */; +var1 = self->attrs[COLOR_modelbuilder__ToolContext___opt_ignore_visibility].val; /* _opt_ignore_visibility on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_ignore_visibility"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 42); +show_backtrace(1); +} +var = var1; RET_LABEL:; +return var; +} +/* method modelbuilder#ToolContext#opt_ignore_visibility for (self: Object): OptionBool */ +val* VIRTUAL_modelbuilder__ToolContext__opt_ignore_visibility(val* self) { +val* var /* : OptionBool */; +val* var1 /* : OptionBool */; +val* var3 /* : OptionBool */; +{ /* Inline modelbuilder#ToolContext#opt_ignore_visibility (self) on */ +var3 = self->attrs[COLOR_modelbuilder__ToolContext___opt_ignore_visibility].val; /* _opt_ignore_visibility on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_ignore_visibility"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 42); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; } -/* method modelbuilder#ToolContext#opt_only_parse= for (self: Object, OptionBool) */ -void VIRTUAL_modelbuilder__ToolContext__opt_only_parse_61d(val* self, val* p0) { -modelbuilder__ToolContext__opt_only_parse_61d(self, p0); +var = var1; RET_LABEL:; +return var; } /* method modelbuilder#ToolContext#init for (self: ToolContext) */ void modelbuilder__ToolContext__init(val* self) { val* var /* : OptionContext */; -val* var1 /* : OptionArray */; -val* var2 /* : OptionBool */; -val* var3 /* : OptionBool */; -val* var4 /* : Array[Option] */; -long var5 /* : Int */; -val* var6 /* : NativeArray[Option] */; +val* var2 /* : OptionContext */; +val* var3 /* : OptionArray */; +val* var5 /* : OptionArray */; +val* var6 /* : OptionBool */; +val* var8 /* : OptionBool */; +val* var9 /* : OptionBool */; +val* var11 /* : OptionBool */; +val* var12 /* : OptionBool */; +val* var14 /* : OptionBool */; +val* var15 /* : Array[Option] */; +long var16 /* : Int */; +val* var17 /* : NativeArray[Option] */; +{ ((void (*)(val*))(self->class->vft[COLOR_modelbuilder__ToolContext__init]))(self) /* init on */; -var = ((val* (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__option_context]))(self) /* option_context on */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ToolContext__opt_path]))(self) /* opt_path on */; -var2 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ToolContext__opt_only_parse]))(self) /* opt_only_parse on */; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ToolContext__opt_only_metamodel]))(self) /* opt_only_metamodel on */; -var4 = NEW_array__Array(&type_array__Arrayopts__Option); -{ /* var4 = array_instance Array[Option] */ -var5 = 3; -var6 = NEW_array__NativeArray(var5, &type_array__NativeArrayopts__Option); -((struct instance_array__NativeArray*)var6)->values[0] = (val*) var1; -((struct instance_array__NativeArray*)var6)->values[1] = (val*) var2; -((struct instance_array__NativeArray*)var6)->values[2] = (val*) var3; -((void (*)(val*, val*, long))(var4->class->vft[COLOR_array__Array__with_native]))(var4, var6, var5) /* with_native on */; -} -((void (*)(val*, val*))(var->class->vft[COLOR_opts__OptionContext__add_option]))(var, var4) /* add_option on */; +} +{ +{ /* Inline toolcontext#ToolContext#option_context (self) on */ +var2 = self->attrs[COLOR_toolcontext__ToolContext___option_context].val; /* _option_context on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context"); +PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 231); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +{ /* Inline modelbuilder#ToolContext#opt_path (self) on */ +var5 = self->attrs[COLOR_modelbuilder__ToolContext___opt_path].val; /* _opt_path on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_path"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 33); +show_backtrace(1); +} +var3 = var5; +RET_LABEL4:(void)0; +} +} +{ +{ /* Inline modelbuilder#ToolContext#opt_only_parse (self) on */ +var8 = self->attrs[COLOR_modelbuilder__ToolContext___opt_only_parse].val; /* _opt_only_parse on */ +if (unlikely(var8 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_only_parse"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 39); +show_backtrace(1); +} +var6 = var8; +RET_LABEL7:(void)0; +} +} +{ +{ /* Inline modelbuilder#ToolContext#opt_only_metamodel (self) on */ +var11 = self->attrs[COLOR_modelbuilder__ToolContext___opt_only_metamodel].val; /* _opt_only_metamodel on */ +if (unlikely(var11 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_only_metamodel"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 36); +show_backtrace(1); +} +var9 = var11; +RET_LABEL10:(void)0; +} +} +{ +{ /* Inline modelbuilder#ToolContext#opt_ignore_visibility (self) on */ +var14 = self->attrs[COLOR_modelbuilder__ToolContext___opt_ignore_visibility].val; /* _opt_ignore_visibility on */ +if (unlikely(var14 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_ignore_visibility"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 42); +show_backtrace(1); +} +var12 = var14; +RET_LABEL13:(void)0; +} +} +var15 = NEW_array__Array(&type_array__Arrayopts__Option); +{ /* var15 = array_instance Array[Option] */ +var16 = 4; +var17 = NEW_array__NativeArray(var16, &type_array__NativeArrayopts__Option); +((struct instance_array__NativeArray*)var17)->values[0] = (val*) var3; +((struct instance_array__NativeArray*)var17)->values[1] = (val*) var6; +((struct instance_array__NativeArray*)var17)->values[2] = (val*) var9; +((struct instance_array__NativeArray*)var17)->values[3] = (val*) var12; +{ +((void (*)(val*, val*, long))(var15->class->vft[COLOR_array__Array__with_native]))(var15, var17, var16) /* with_native on */; +} +} +{ +opts__OptionContext__add_option(var, var15); /* Direct call opts#OptionContext#add_option on */ +} RET_LABEL:; } /* method modelbuilder#ToolContext#init for (self: Object) */ void VIRTUAL_modelbuilder__ToolContext__init(val* self) { -modelbuilder__ToolContext__init(self); +modelbuilder__ToolContext__init(self); /* Direct call modelbuilder#ToolContext#init on */ RET_LABEL:; } /* method modelbuilder#ToolContext#modelbuilder for (self: ToolContext): ModelBuilder */ val* modelbuilder__ToolContext__modelbuilder(val* self) { val* var /* : ModelBuilder */; val* var1 /* : nullable ModelBuilder */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ToolContext__modelbuilder_real]))(self) /* modelbuilder_real on */; -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Cast failed"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 52); +val* var3 /* : nullable ModelBuilder */; +{ +{ /* Inline modelbuilder#ToolContext#modelbuilder_real (self) on */ +var3 = self->attrs[COLOR_modelbuilder__ToolContext___modelbuilder_real].val; /* _modelbuilder_real on */ +var1 = var3; +RET_LABEL2:(void)0; +} +} +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Cast failed"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 52); show_backtrace(1); } var = var1; @@ -157,7 +266,7 @@ return var; val* modelbuilder__ToolContext__modelbuilder_real(val* self) { val* var /* : nullable ModelBuilder */; val* var1 /* : nullable ModelBuilder */; -var1 = self->attrs[COLOR_modelbuilder__ToolContext___64dmodelbuilder_real].val; /* @modelbuilder_real on */ +var1 = self->attrs[COLOR_modelbuilder__ToolContext___modelbuilder_real].val; /* _modelbuilder_real on */ var = var1; RET_LABEL:; return var; @@ -166,68 +275,302 @@ return var; val* VIRTUAL_modelbuilder__ToolContext__modelbuilder_real(val* self) { val* var /* : nullable ModelBuilder */; val* var1 /* : nullable ModelBuilder */; -var1 = modelbuilder__ToolContext__modelbuilder_real(self); +val* var3 /* : nullable ModelBuilder */; +{ /* Inline modelbuilder#ToolContext#modelbuilder_real (self) on */ +var3 = self->attrs[COLOR_modelbuilder__ToolContext___modelbuilder_real].val; /* _modelbuilder_real on */ +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method modelbuilder#ToolContext#modelbuilder_real= for (self: ToolContext, nullable ModelBuilder) */ void modelbuilder__ToolContext__modelbuilder_real_61d(val* self, val* p0) { -self->attrs[COLOR_modelbuilder__ToolContext___64dmodelbuilder_real].val = p0; /* @modelbuilder_real on */ +self->attrs[COLOR_modelbuilder__ToolContext___modelbuilder_real].val = p0; /* _modelbuilder_real on */ RET_LABEL:; } /* method modelbuilder#ToolContext#modelbuilder_real= for (self: Object, nullable ModelBuilder) */ void VIRTUAL_modelbuilder__ToolContext__modelbuilder_real_61d(val* self, val* p0) { -modelbuilder__ToolContext__modelbuilder_real_61d(self, p0); +{ /* Inline modelbuilder#ToolContext#modelbuilder_real= (self,p0) on */ +self->attrs[COLOR_modelbuilder__ToolContext___modelbuilder_real].val = p0; /* _modelbuilder_real on */ +RET_LABEL1:(void)0; +} +RET_LABEL:; +} +/* method modelbuilder#ToolContext#make_main_module for (self: ToolContext, Array[MModule]): MModule */ +val* modelbuilder__ToolContext__make_main_module(val* self, val* p0) { +val* var /* : MModule */; +val* var_mmodules /* var mmodules: Array[MModule] */; +short int var1 /* : Bool */; +short int var2 /* : Bool */; +long var3 /* : Int */; +long var5 /* : Int */; +long var6 /* : Int */; +short int var7 /* : Bool */; +short int var8 /* : Bool */; +short int var10 /* : Bool */; +val* var11 /* : nullable Object */; +val* var_mainmodule /* var mainmodule: nullable Object */; +val* var12 /* : MModule */; +val* var13 /* : ModelBuilder */; +val* var14 /* : Model */; +val* var16 /* : Model */; +val* var17 /* : null */; +val* var18 /* : nullable Object */; +val* var19 /* : String */; +val* var21 /* : String */; +static val* varonce; +val* var22 /* : String */; +char* var23 /* : NativeString */; +long var24 /* : Int */; +val* var25 /* : FlatString */; +val* var26 /* : String */; +val* var27 /* : Location */; +val* var28 /* : nullable Object */; +val* var29 /* : Location */; +val* var31 /* : Location */; +val* var32 /* : nullable SourceFile */; +val* var34 /* : nullable SourceFile */; +long var35 /* : Int */; +long var36 /* : Int */; +long var37 /* : Int */; +long var38 /* : Int */; +short int var39 /* : Bool */; +var_mmodules = p0; +{ +var1 = array__AbstractArrayRead__is_empty(var_mmodules); +} +var2 = !var1; +if (unlikely(!var2)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 59); +show_backtrace(1); +} +{ +{ /* Inline array#AbstractArrayRead#length (var_mmodules) on */ +var5 = var_mmodules->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on */ +var3 = var5; +RET_LABEL4:(void)0; +} +} +var6 = 1; +{ +{ /* Inline kernel#Int#== (var3,var6) on */ +var10 = var3 == var6; +var8 = var10; +goto RET_LABEL9; +RET_LABEL9:(void)0; +} +var7 = var8; +} +if (var7){ +{ +var11 = abstract_collection__SequenceRead__first(var_mmodules); +} +var_mainmodule = var11; +} else { +var12 = NEW_mmodule__MModule(&type_mmodule__MModule); +{ +var13 = modelbuilder__ToolContext__modelbuilder(self); +} +{ +{ /* Inline modelbuilder#ModelBuilder#model (var13) on */ +var16 = var13->attrs[COLOR_modelbuilder__ModelBuilder___model].val; /* _model on */ +if (unlikely(var16 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 103); +show_backtrace(1); +} +var14 = var16; +RET_LABEL15:(void)0; +} +} +var17 = NULL; +{ +var18 = abstract_collection__SequenceRead__first(var_mmodules); +} +{ +{ /* Inline mmodule#MModule#name (var18) on */ +var21 = var18->attrs[COLOR_mmodule__MModule___name].val; /* _name on */ +if (unlikely(var21 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name"); +PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 78); +show_backtrace(1); +} +var19 = var21; +RET_LABEL20:(void)0; +} +} +if (varonce) { +var22 = varonce; +} else { +var23 = "-m"; +var24 = 2; +var25 = string__NativeString__to_s_with_length(var23, var24); +var22 = var25; +varonce = var22; +} +{ +var26 = string__FlatString___43d(var19, var22); +} +var27 = NEW_location__Location(&type_location__Location); +{ +var28 = abstract_collection__SequenceRead__first(var_mmodules); +} +{ +{ /* Inline mmodule#MModule#location (var28) on */ +var31 = var28->attrs[COLOR_mmodule__MModule___location].val; /* _location on */ +if (unlikely(var31 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location"); +PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 81); +show_backtrace(1); +} +var29 = var31; +RET_LABEL30:(void)0; +} +} +{ +{ /* Inline location#Location#file (var29) on */ +var34 = var29->attrs[COLOR_location__Location___file].val; /* _file on */ +var32 = var34; +RET_LABEL33:(void)0; +} +} +var35 = 0; +var36 = 0; +var37 = 0; +var38 = 0; +{ +location__Location__init(var27, var32, var35, var36, var37, var38); /* Direct call location#Location#init on */ +} +{ +mmodule__MModule__init(var12, var14, var17, var26, var27); /* Direct call mmodule#MModule#init on */ +} +var_mainmodule = var12; +var39 = 1; +{ +{ /* Inline mmodule#MModule#is_fictive= (var_mainmodule,var39) on */ +var_mainmodule->attrs[COLOR_mmodule__MModule___is_fictive].s = var39; /* _is_fictive on */ +RET_LABEL40:(void)0; +} +} +{ +mmodule__MModule__set_imported_mmodules(var_mainmodule, var_mmodules); /* Direct call mmodule#MModule#set_imported_mmodules on */ +} +} +var = var_mainmodule; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method modelbuilder#ToolContext#make_main_module for (self: Object, Array[MModule]): MModule */ +val* VIRTUAL_modelbuilder__ToolContext__make_main_module(val* self, val* p0) { +val* var /* : MModule */; +val* var1 /* : MModule */; +var1 = modelbuilder__ToolContext__make_main_module(self, p0); +var = var1; RET_LABEL:; +return var; } -/* method modelbuilder#ToolContext#run_global_phases for (self: ToolContext, MModule) */ +/* method modelbuilder#ToolContext#run_global_phases for (self: ToolContext, Array[MModule]) */ void modelbuilder__ToolContext__run_global_phases(val* self, val* p0) { +val* var_mmodules /* var mmodules: Array[MModule] */; +val* var /* : MModule */; val* var_mainmodule /* var mainmodule: MModule */; -val* var /* : Sequence[Phase] */; -val* var1 /* : Iterator[nullable Object] */; -short int var2 /* : Bool */; -val* var3 /* : nullable Object */; +val* var1 /* : Sequence[Phase] */; +val* var_ /* var : Sequence[Phase] */; +val* var2 /* : Iterator[nullable Object] */; +val* var_3 /* var : IndexedIterator[Phase] */; +short int var4 /* : Bool */; +val* var5 /* : nullable Object */; val* var_phase /* var phase: Phase */; -var_mainmodule = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_phase__ToolContext__phases_list]))(self) /* phases_list on */; -var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_collection__Collection__iterator]))(var) /* iterator on */; +short int var6 /* : Bool */; +short int var8 /* : Bool */; +var_mmodules = p0; +{ +var = mixin__ToolContext__make_main_module(self, var_mmodules); +} +var_mainmodule = var; +{ +var1 = phase__ToolContext__phases_list(self); +} +var_ = var1; +{ +var2 = ((val* (*)(val*))(var_->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_) /* iterator on */; +} +var_3 = var2; 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_phase = var3; -((void (*)(val*, val*))(var_phase->class->vft[COLOR_modelbuilder__Phase__process_mainmodule]))(var_phase, var_mainmodule) /* process_mainmodule on */; -CONTINUE_label: (void)0; -((void (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__next]))(var1) /* next on */; +{ +var4 = ((short int (*)(val*))(var_3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_3) /* is_ok on */; +} +if (var4){ +{ +var5 = ((val* (*)(val*))(var_3->class->vft[COLOR_abstract_collection__Iterator__item]))(var_3) /* item on */; +} +var_phase = var5; +{ +{ /* Inline phase#Phase#disabled (var_phase) on */ +var8 = var_phase->attrs[COLOR_phase__Phase___disabled].s; /* _disabled on */ +var6 = var8; +RET_LABEL7:(void)0; +} +} +if (var6){ +goto BREAK_label; +} else { +} +{ +((void (*)(val*, val*, val*))(var_phase->class->vft[COLOR_modelbuilder__Phase__process_mainmodule]))(var_phase, var_mainmodule, var_mmodules) /* process_mainmodule on */; } BREAK_label: (void)0; +{ +((void (*)(val*))(var_3->class->vft[COLOR_abstract_collection__Iterator__next]))(var_3) /* next on */; +} +} else { +goto BREAK_label9; +} +} +BREAK_label9: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_3) on */ +RET_LABEL10:(void)0; +} +} RET_LABEL:; } -/* method modelbuilder#ToolContext#run_global_phases for (self: Object, MModule) */ +/* method modelbuilder#ToolContext#run_global_phases for (self: Object, Array[MModule]) */ void VIRTUAL_modelbuilder__ToolContext__run_global_phases(val* self, val* p0) { -modelbuilder__ToolContext__run_global_phases(self, p0); +modelbuilder__ToolContext__run_global_phases(self, p0); /* Direct call modelbuilder#ToolContext#run_global_phases on */ RET_LABEL:; } -/* method modelbuilder#Phase#process_mainmodule for (self: Phase, MModule) */ -void modelbuilder__Phase__process_mainmodule(val* self, val* p0) { +/* method modelbuilder#Phase#process_mainmodule for (self: Phase, MModule, SequenceRead[MModule]) */ +void modelbuilder__Phase__process_mainmodule(val* self, val* p0, val* p1) { val* var_mainmodule /* var mainmodule: MModule */; +val* var_given_mmodules /* var given_mmodules: SequenceRead[MModule] */; var_mainmodule = p0; +var_given_mmodules = p1; RET_LABEL:; } -/* method modelbuilder#Phase#process_mainmodule for (self: Object, MModule) */ -void VIRTUAL_modelbuilder__Phase__process_mainmodule(val* self, val* p0) { -modelbuilder__Phase__process_mainmodule(self, p0); +/* method modelbuilder#Phase#process_mainmodule for (self: Object, MModule, SequenceRead[MModule]) */ +void VIRTUAL_modelbuilder__Phase__process_mainmodule(val* self, val* p0, val* p1) { +val* var_mainmodule /* var mainmodule: MModule */; +val* var_given_mmodules /* var given_mmodules: SequenceRead[MModule] */; +{ /* Inline modelbuilder#Phase#process_mainmodule (self,p0,p1) on */ +var_mainmodule = p0; +var_given_mmodules = p1; +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method modelbuilder#ModelBuilder#model for (self: ModelBuilder): Model */ val* modelbuilder__ModelBuilder__model(val* self) { val* var /* : Model */; val* var1 /* : Model */; -var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___64dmodel].val; /* @model on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @model"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 73); +var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___model].val; /* _model on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 103); show_backtrace(1); } var = var1; @@ -238,29 +581,42 @@ return var; val* VIRTUAL_modelbuilder__ModelBuilder__model(val* self) { val* var /* : Model */; val* var1 /* : Model */; -var1 = modelbuilder__ModelBuilder__model(self); +val* var3 /* : Model */; +{ /* Inline modelbuilder#ModelBuilder#model (self) on */ +var3 = self->attrs[COLOR_modelbuilder__ModelBuilder___model].val; /* _model on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 103); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method modelbuilder#ModelBuilder#model= for (self: ModelBuilder, Model) */ void modelbuilder__ModelBuilder__model_61d(val* self, val* p0) { -self->attrs[COLOR_modelbuilder__ModelBuilder___64dmodel].val = p0; /* @model on */ +self->attrs[COLOR_modelbuilder__ModelBuilder___model].val = p0; /* _model on */ RET_LABEL:; } /* method modelbuilder#ModelBuilder#model= for (self: Object, Model) */ void VIRTUAL_modelbuilder__ModelBuilder__model_61d(val* self, val* p0) { -modelbuilder__ModelBuilder__model_61d(self, p0); +{ /* Inline modelbuilder#ModelBuilder#model= (self,p0) on */ +self->attrs[COLOR_modelbuilder__ModelBuilder___model].val = p0; /* _model on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method modelbuilder#ModelBuilder#toolcontext for (self: ModelBuilder): ToolContext */ val* modelbuilder__ModelBuilder__toolcontext(val* self) { val* var /* : ToolContext */; val* var1 /* : ToolContext */; -var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___64dtoolcontext].val; /* @toolcontext on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @toolcontext"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 76); +var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); show_backtrace(1); } var = var1; @@ -271,101 +627,267 @@ return var; val* VIRTUAL_modelbuilder__ModelBuilder__toolcontext(val* self) { val* var /* : ToolContext */; val* var1 /* : ToolContext */; -var1 = modelbuilder__ModelBuilder__toolcontext(self); +val* var3 /* : ToolContext */; +{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on */ +var3 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method modelbuilder#ModelBuilder#toolcontext= for (self: ModelBuilder, ToolContext) */ void modelbuilder__ModelBuilder__toolcontext_61d(val* self, val* p0) { -self->attrs[COLOR_modelbuilder__ModelBuilder___64dtoolcontext].val = p0; /* @toolcontext on */ +self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val = p0; /* _toolcontext on */ RET_LABEL:; } /* method modelbuilder#ModelBuilder#toolcontext= for (self: Object, ToolContext) */ void VIRTUAL_modelbuilder__ModelBuilder__toolcontext_61d(val* self, val* p0) { -modelbuilder__ModelBuilder__toolcontext_61d(self, p0); +{ /* Inline modelbuilder#ModelBuilder#toolcontext= (self,p0) on */ +self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val = p0; /* _toolcontext on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method modelbuilder#ModelBuilder#run_phases for (self: ModelBuilder) */ void modelbuilder__ModelBuilder__run_phases(val* self) { val* var /* : Model */; -val* var1 /* : Array[MModule] */; -val* var2 /* : Array[nullable Object] */; +val* var2 /* : Model */; +val* var3 /* : Array[MModule] */; +val* var5 /* : Array[MModule] */; +val* var6 /* : Array[nullable Object] */; val* var_mmodules /* var mmodules: Array[MModule] */; -val* var3 /* : Model */; -val* var4 /* : POSet[MModule] */; -val* var5 /* : Array[AModule] */; +val* var7 /* : Model */; +val* var9 /* : Model */; +val* var10 /* : POSet[MModule] */; +val* var12 /* : POSet[MModule] */; +val* var13 /* : Array[AModule] */; val* var_nmodules /* var nmodules: Array[AModule] */; -val* var6 /* : Iterator[nullable Object] */; -short int var7 /* : Bool */; -val* var8 /* : nullable Object */; +val* var_ /* var : Array[MModule] */; +val* var14 /* : ArrayIterator[nullable Object] */; +val* var_15 /* var : ArrayIterator[MModule] */; +short int var16 /* : Bool */; +val* var17 /* : nullable Object */; val* var_mm /* var mm: MModule */; -val* var9 /* : HashMap[MModule, AModule] */; -val* var10 /* : nullable Object */; -val* var11 /* : ToolContext */; -val* var12 /* : ToolContext */; -val* var13 /* : OptionBool */; -val* var14 /* : nullable Object */; -short int var15 /* : Bool */; -val* var16 /* : ToolContext */; +val* var18 /* : HashMap[MModule, AModule] */; +val* var20 /* : HashMap[MModule, AModule] */; +val* var21 /* : nullable Object */; +val* var23 /* : ToolContext */; +val* var25 /* : ToolContext */; +val* var26 /* : ToolContext */; +val* var28 /* : ToolContext */; +val* var29 /* : OptionBool */; +val* var31 /* : OptionBool */; +val* var32 /* : nullable Object */; +val* var34 /* : nullable Object */; +short int var35 /* : Bool */; +val* var36 /* : ToolContext */; +val* var38 /* : ToolContext */; static val* varonce; -val* var17 /* : String */; -char* var18 /* : NativeString */; -long var19 /* : Int */; -val* var20 /* : String */; -long var21 /* : Int */; -long var22 /* : Int */; -var = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(self) /* model on */; -var1 = ((val* (*)(val*))(var->class->vft[COLOR_mmodule__Model__mmodules]))(var) /* mmodules on */; -var2 = ((val* (*)(val*))(var1->class->vft[COLOR_array__Collection__to_a]))(var1) /* to_a on */; -var_mmodules = var2; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(self) /* model on */; -var4 = ((val* (*)(val*))(var3->class->vft[COLOR_mmodule__Model__mmodule_importation_hierarchy]))(var3) /* mmodule_importation_hierarchy on */; -((void (*)(val*, val*))(var4->class->vft[COLOR_sorter__AbstractSorter__sort]))(var4, var_mmodules) /* sort on */; -var5 = NEW_array__Array(&type_array__Arrayparser_nodes__AModule); -((void (*)(val*))(var5->class->vft[COLOR_array__Array__init]))(var5) /* init on */; -var_nmodules = var5; -var6 = ((val* (*)(val*))(var_mmodules->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mmodules) /* iterator on */; +val* var39 /* : String */; +char* var40 /* : NativeString */; +long var41 /* : Int */; +val* var42 /* : FlatString */; +long var43 /* : Int */; +long var44 /* : Int */; +{ +{ /* Inline modelbuilder#ModelBuilder#model (self) on */ +var2 = self->attrs[COLOR_modelbuilder__ModelBuilder___model].val; /* _model on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 103); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +{ /* Inline mmodule#Model#mmodules (var) on */ +var5 = var->attrs[COLOR_mmodule__Model___mmodules].val; /* _mmodules on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodules"); +PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 27); +show_backtrace(1); +} +var3 = var5; +RET_LABEL4:(void)0; +} +} +{ +var6 = array__Collection__to_a(var3); +} +var_mmodules = var6; +{ +{ /* Inline modelbuilder#ModelBuilder#model (self) on */ +var9 = self->attrs[COLOR_modelbuilder__ModelBuilder___model].val; /* _model on */ +if (unlikely(var9 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 103); +show_backtrace(1); +} +var7 = var9; +RET_LABEL8:(void)0; +} +} +{ +{ /* Inline mmodule#Model#mmodule_importation_hierarchy (var7) on */ +var12 = var7->attrs[COLOR_mmodule__Model___mmodule_importation_hierarchy].val; /* _mmodule_importation_hierarchy on */ +if (unlikely(var12 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule_importation_hierarchy"); +PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 36); +show_backtrace(1); +} +var10 = var12; +RET_LABEL11:(void)0; +} +} +{ +sorter__Comparator__sort(var10, var_mmodules); /* Direct call sorter#Comparator#sort on */ +} +var13 = NEW_array__Array(&type_array__Arrayparser_nodes__AModule); +{ +((void (*)(val*))(var13->class->vft[COLOR_kernel__Object__init]))(var13) /* init on */; +} +var_nmodules = var13; +var_ = var_mmodules; +{ +var14 = array__AbstractArrayRead__iterator(var_); +} +var_15 = var14; for(;;) { -var7 = ((short int (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var6) /* is_ok on */; -if(!var7) break; -var8 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__item]))(var6) /* item on */; -var_mm = var8; -var9 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__mmodule2nmodule]))(self) /* mmodule2nmodule on */; -var10 = ((val* (*)(val*, val*))(var9->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var9, var_mm) /* [] on */; -((void (*)(val*, val*))(var_nmodules->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_nmodules, var10) /* add on */; -CONTINUE_label: (void)0; -((void (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__next]))(var6) /* next on */; +{ +var16 = array__ArrayIterator__is_ok(var_15); +} +if (var16){ +{ +var17 = array__ArrayIterator__item(var_15); +} +var_mm = var17; +{ +{ /* Inline modelbuilder#ModelBuilder#mmodule2nmodule (self) on */ +var20 = self->attrs[COLOR_modelbuilder__ModelBuilder___mmodule2nmodule].val; /* _mmodule2nmodule on */ +if (unlikely(var20 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule2nmodule"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 728); +show_backtrace(1); +} +var18 = var20; +RET_LABEL19:(void)0; +} +} +{ +var21 = hash_collection__HashMap___91d_93d(var18, var_mm); +} +{ +array__Array__add(var_nmodules, var21); /* Direct call array#Array#add on */ +} +{ +array__ArrayIterator__next(var_15); /* Direct call array#ArrayIterator#next on */ +} +} else { +goto BREAK_label; +} } BREAK_label: (void)0; -var11 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on */; -((void (*)(val*, val*))(var11->class->vft[COLOR_phase__ToolContext__run_phases]))(var11, var_nmodules) /* run_phases on */; -var12 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on */; -var13 = ((val* (*)(val*))(var12->class->vft[COLOR_modelbuilder__ToolContext__opt_only_metamodel]))(var12) /* opt_only_metamodel on */; -var14 = ((val* (*)(val*))(var13->class->vft[COLOR_opts__Option__value]))(var13) /* value on */; -var15 = ((struct instance_kernel__Bool*)var14)->value; /* autounbox from nullable Object to Bool */; -if (var15){ -var16 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on */; +{ +{ /* Inline abstract_collection#Iterator#finish (var_15) on */ +RET_LABEL22:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on */ +var25 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var25 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var23 = var25; +RET_LABEL24:(void)0; +} +} +{ +phase__ToolContext__run_phases(var23, var_nmodules); /* Direct call phase#ToolContext#run_phases on */ +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on */ +var28 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var28 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var26 = var28; +RET_LABEL27:(void)0; +} +} +{ +{ /* Inline modelbuilder#ToolContext#opt_only_metamodel (var26) on */ +var31 = var26->attrs[COLOR_modelbuilder__ToolContext___opt_only_metamodel].val; /* _opt_only_metamodel on */ +if (unlikely(var31 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_only_metamodel"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 36); +show_backtrace(1); +} +var29 = var31; +RET_LABEL30:(void)0; +} +} +{ +{ /* Inline opts#Option#value (var29) on */ +var34 = var29->attrs[COLOR_opts__Option___value].val; /* _value on */ +var32 = var34; +RET_LABEL33:(void)0; +} +} +var35 = ((struct instance_kernel__Bool*)var32)->value; /* autounbox from nullable Object to Bool */; +if (var35){ +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on */ +var38 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var38 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var36 = var38; +RET_LABEL37:(void)0; +} +} if (varonce) { -var17 = varonce; +var39 = varonce; } else { -var18 = "*** ONLY METAMODEL"; -var19 = 18; -var20 = string__NativeString__to_s_with_length(var18, var19); -var17 = var20; -varonce = var17; +var40 = "*** ONLY METAMODEL"; +var41 = 18; +var42 = string__NativeString__to_s_with_length(var40, var41); +var39 = var42; +varonce = var39; +} +var43 = 1; +{ +toolcontext__ToolContext__info(var36, var39, var43); /* Direct call toolcontext#ToolContext#info on */ +} +var44 = 0; +{ +{ /* Inline kernel#Object#exit (self,var44) on */ +exit(var44); +RET_LABEL45:(void)0; +} } -var21 = 1; -((void (*)(val*, val*, long))(var16->class->vft[COLOR_toolcontext__ToolContext__info]))(var16, var17, var21) /* info on */; -var22 = 0; -((void (*)(val*, long))(self->class->vft[COLOR_kernel__Object__exit]))(self, var22) /* exit on */; } else { } RET_LABEL:; } /* method modelbuilder#ModelBuilder#run_phases for (self: Object) */ void VIRTUAL_modelbuilder__ModelBuilder__run_phases(val* self) { -modelbuilder__ModelBuilder__run_phases(self); +modelbuilder__ModelBuilder__run_phases(self); /* Direct call modelbuilder#ModelBuilder#run_phases on */ RET_LABEL:; } /* method modelbuilder#ModelBuilder#init for (self: ModelBuilder, Model, ToolContext) */ @@ -373,203 +895,265 @@ void modelbuilder__ModelBuilder__init(val* self, val* p0, val* p1) { val* var_model /* var model: Model */; val* var_toolcontext /* var toolcontext: ToolContext */; val* var /* : nullable ModelBuilder */; -val* var1 /* : null */; -short int var2 /* : Bool */; -val* var3 /* : Array[String] */; -val* var4 /* : OptionArray */; -val* var5 /* : nullable Object */; -static val* varonce; -val* var6 /* : String */; -char* var7 /* : NativeString */; -long var8 /* : Int */; -val* var9 /* : String */; -val* var10 /* : String */; -val* var_path_env /* var path_env: String */; +val* var4 /* : nullable ModelBuilder */; +val* var5 /* : null */; +short int var6 /* : Bool */; +short int var7 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var9 /* : Bool */; short int var11 /* : Bool */; -short int var12 /* : Bool */; val* var13 /* : Array[String] */; -char var14 /* : Char */; val* var15 /* : Array[String] */; -val* var16 /* : Pattern */; -static val* varonce17; -val* var18 /* : String */; -char* var19 /* : NativeString */; -long var20 /* : Int */; -val* var21 /* : String */; +val* var16 /* : OptionArray */; +val* var18 /* : OptionArray */; +val* var19 /* : nullable Object */; +val* var21 /* : nullable Object */; +static val* varonce; val* var22 /* : String */; -short int var23 /* : Bool */; -short int var24 /* : Bool */; -val* var25 /* : Array[Object] */; -long var26 /* : Int */; -val* var_ /* var : Array[Object] */; -static val* varonce27; -val* var28 /* : String */; -char* var29 /* : NativeString */; -long var30 /* : Int */; -val* var31 /* : String */; -static val* varonce32; -val* var33 /* : String */; -char* var34 /* : NativeString */; -long var35 /* : Int */; -val* var36 /* : String */; -val* var37 /* : String */; -val* var_libname /* var libname: String */; -short int var38 /* : Bool */; -val* var39 /* : Array[String] */; -val* var40 /* : Array[Object] */; -long var41 /* : Int */; -val* var_42 /* var : Array[Object] */; -static val* varonce43; -val* var44 /* : String */; -char* var45 /* : NativeString */; -long var46 /* : Int */; +char* var23 /* : NativeString */; +long var24 /* : Int */; +val* var25 /* : FlatString */; +val* var26 /* : String */; +val* var_path_env /* var path_env: String */; +short int var27 /* : Bool */; +short int var28 /* : Bool */; +val* var29 /* : Array[String] */; +val* var31 /* : Array[String] */; +char var32 /* : Char */; +val* var33 /* : Array[Text] */; +val* var34 /* : Pattern */; +val* var35 /* : nullable String */; +val* var37 /* : nullable String */; +val* var_nit_dir /* var nit_dir: nullable String */; +val* var38 /* : null */; +short int var39 /* : Bool */; +short int var40 /* : Bool */; +val* var_other42 /* var other: nullable Object */; +short int var43 /* : Bool */; +short int var44 /* : Bool */; +short int var45 /* : Bool */; +static val* varonce46; val* var47 /* : String */; -val* var48 /* : Sys */; -val* var49 /* : String */; -val* var50 /* : String */; -static val* varonce51; -val* var52 /* : String */; -char* var53 /* : NativeString */; -long var54 /* : Int */; -val* var55 /* : String */; -val* var56 /* : String */; -val* var_libname57 /* var libname: String */; -short int var58 /* : Bool */; -val* var59 /* : Array[String] */; -val* var60 /* : String */; +char* var48 /* : NativeString */; +long var49 /* : Int */; +val* var50 /* : FlatString */; +val* var51 /* : Array[Object] */; +long var52 /* : Int */; +val* var53 /* : NativeArray[Object] */; +val* var54 /* : String */; +val* var_libname /* var libname: String */; +short int var55 /* : Bool */; +val* var56 /* : Array[String] */; +val* var58 /* : Array[String] */; var_model = p0; var_toolcontext = p1; -((void (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model_61d]))(self, var_model) /* model= on */; -((void (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext_61d]))(self, var_toolcontext) /* toolcontext= on */; -var = ((val* (*)(val*))(var_toolcontext->class->vft[COLOR_modelbuilder__ToolContext__modelbuilder_real]))(var_toolcontext) /* modelbuilder_real on */; -var1 = NULL; +{ +{ /* Inline modelbuilder#ModelBuilder#model= (self,var_model) on */ +self->attrs[COLOR_modelbuilder__ModelBuilder___model].val = var_model; /* _model on */ +RET_LABEL1:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext= (self,var_toolcontext) on */ +self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val = var_toolcontext; /* _toolcontext on */ +RET_LABEL2:(void)0; +} +} +{ +{ /* Inline modelbuilder#ToolContext#modelbuilder_real (var_toolcontext) on */ +var4 = var_toolcontext->attrs[COLOR_modelbuilder__ToolContext___modelbuilder_real].val; /* _modelbuilder_real on */ +var = var4; +RET_LABEL3:(void)0; +} +} +var5 = NULL; if (var == NULL) { -var2 = 1; /* is null */ +var6 = 1; /* is null */ } else { -var2 = 0; /* arg is null but recv is not */ +var6 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var,var5) on */ +var_other = var5; +{ +{ /* Inline kernel#Object#is_same_instance (var,var_other) on */ +var11 = var == var_other; +var9 = var11; +goto RET_LABEL10; +RET_LABEL10:(void)0; +} +} +var7 = var9; +goto RET_LABEL8; +RET_LABEL8:(void)0; +} +var6 = var7; +} +if (unlikely(!var6)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 132); +show_backtrace(1); +} +{ +{ /* Inline modelbuilder#ToolContext#modelbuilder_real= (var_toolcontext,self) on */ +var_toolcontext->attrs[COLOR_modelbuilder__ToolContext___modelbuilder_real].val = self; /* _modelbuilder_real on */ +RET_LABEL12:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModelBuilder#paths (self) on */ +var15 = self->attrs[COLOR_modelbuilder__ModelBuilder___paths].val; /* _paths on */ +if (unlikely(var15 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _paths"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 300); +show_backtrace(1); +} +var13 = var15; +RET_LABEL14:(void)0; } -if (!var2) { -fprintf(stderr, "Runtime error: %s", "Assert failed"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 102); +} +{ +{ /* Inline modelbuilder#ToolContext#opt_path (var_toolcontext) on */ +var18 = var_toolcontext->attrs[COLOR_modelbuilder__ToolContext___opt_path].val; /* _opt_path on */ +if (unlikely(var18 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_path"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 33); show_backtrace(1); } -((void (*)(val*, val*))(var_toolcontext->class->vft[COLOR_modelbuilder__ToolContext__modelbuilder_real_61d]))(var_toolcontext, self) /* modelbuilder_real= on */; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__paths]))(self) /* paths on */; -var4 = ((val* (*)(val*))(var_toolcontext->class->vft[COLOR_modelbuilder__ToolContext__opt_path]))(var_toolcontext) /* opt_path on */; -var5 = ((val* (*)(val*))(var4->class->vft[COLOR_opts__Option__value]))(var4) /* value on */; -((void (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__Sequence__append]))(var3, var5) /* append on */; +var16 = var18; +RET_LABEL17:(void)0; +} +} +{ +{ /* Inline opts#Option#value (var16) on */ +var21 = var16->attrs[COLOR_opts__Option___value].val; /* _value on */ +var19 = var21; +RET_LABEL20:(void)0; +} +} +{ +abstract_collection__Sequence__append(var13, var19); /* Direct call abstract_collection#Sequence#append on */ +} if (varonce) { -var6 = varonce; +var22 = varonce; } else { -var7 = "NIT_PATH"; -var8 = 8; -var9 = string__NativeString__to_s_with_length(var7, var8); -var6 = var9; -varonce = var6; +var23 = "NIT_PATH"; +var24 = 8; +var25 = string__NativeString__to_s_with_length(var23, var24); +var22 = var25; +varonce = var22; } -var10 = ((val* (*)(val*))(var6->class->vft[COLOR_environ__String__environ]))(var6) /* environ on */; -var_path_env = var10; -var11 = ((short int (*)(val*))(var_path_env->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_path_env) /* is_empty on */; -var12 = !var11; -if (var12){ -var13 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__paths]))(self) /* paths on */; -var14 = ':'; -var16 = BOX_kernel__Char(var14); /* autobox from Char to Pattern */ -var15 = ((val* (*)(val*, val*))(var_path_env->class->vft[COLOR_string_search__String__split_with]))(var_path_env, var16) /* split_with on */; -((void (*)(val*, val*))(var13->class->vft[COLOR_abstract_collection__Sequence__append]))(var13, var15) /* append on */; -} else { +{ +var26 = environ__String__environ(var22); } -if (varonce17) { -var18 = varonce17; -} else { -var19 = "NIT_DIR"; -var20 = 7; -var21 = string__NativeString__to_s_with_length(var19, var20); -var18 = var21; -varonce17 = var18; +var_path_env = var26; +{ +var27 = string__Text__is_empty(var_path_env); } -var22 = ((val* (*)(val*))(var18->class->vft[COLOR_environ__String__environ]))(var18) /* environ on */; -var_path_env = var22; -var23 = ((short int (*)(val*))(var_path_env->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_path_env) /* is_empty on */; -var24 = !var23; -if (var24){ -var25 = NEW_array__Array(&type_array__Arraykernel__Object); -var26 = 3; -((void (*)(val*, long))(var25->class->vft[COLOR_array__Array__with_capacity]))(var25, var26) /* with_capacity on */; -var_ = var25; -if (varonce27) { -var28 = varonce27; -} else { -var29 = ""; -var30 = 0; -var31 = string__NativeString__to_s_with_length(var29, var30); -var28 = var31; -varonce27 = var28; +var28 = !var27; +if (var28){ +{ +{ /* Inline modelbuilder#ModelBuilder#paths (self) on */ +var31 = self->attrs[COLOR_modelbuilder__ModelBuilder___paths].val; /* _paths on */ +if (unlikely(var31 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _paths"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 300); +show_backtrace(1); } -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var28) /* add on */; -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var_path_env) /* add on */; -if (varonce32) { -var33 = varonce32; -} else { -var34 = "/lib"; -var35 = 4; -var36 = string__NativeString__to_s_with_length(var34, var35); -var33 = var36; -varonce32 = var33; +var29 = var31; +RET_LABEL30:(void)0; +} +} +var32 = ':'; +{ +var34 = BOX_kernel__Char(var32); /* autobox from Char to Pattern */ +var33 = string_search__Text__split_with(var_path_env, var34); +} +{ +abstract_collection__Sequence__append(var29, var33); /* Direct call abstract_collection#Sequence#append on */ } -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var33) /* add on */; -var37 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on */; -var_libname = var37; -var38 = ((short int (*)(val*))(var_libname->class->vft[COLOR_file__String__file_exists]))(var_libname) /* file_exists on */; -if (var38){ -var39 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__paths]))(self) /* paths on */; -((void (*)(val*, val*))(var39->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var39, var_libname) /* add on */; } else { } +{ +{ /* Inline toolcontext#ToolContext#nit_dir (var_toolcontext) on */ +var37 = var_toolcontext->attrs[COLOR_toolcontext__ToolContext___nit_dir].val; /* _nit_dir on */ +var35 = var37; +RET_LABEL36:(void)0; +} +} +var_nit_dir = var35; +var38 = NULL; +if (var_nit_dir == NULL) { +var39 = 0; /* is null */ } else { +var39 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_nit_dir,var38) on */ +var_other42 = var38; +{ +var44 = ((short int (*)(val*, val*))(var_nit_dir->class->vft[COLOR_kernel__Object___61d_61d]))(var_nit_dir, var_other42) /* == on */; +var43 = var44; +} +var45 = !var43; +var40 = var45; +goto RET_LABEL41; +RET_LABEL41:(void)0; } -var40 = NEW_array__Array(&type_array__Arraykernel__Object); -var41 = 3; -((void (*)(val*, long))(var40->class->vft[COLOR_array__Array__with_capacity]))(var40, var41) /* with_capacity on */; -var_42 = var40; -if (varonce43) { -var44 = varonce43; +var39 = var40; +} +if (var39){ +if (varonce46) { +var47 = varonce46; } else { -var45 = ""; -var46 = 0; -var47 = string__NativeString__to_s_with_length(var45, var46); -var44 = var47; -varonce43 = var44; +var48 = "/lib"; +var49 = 4; +var50 = string__NativeString__to_s_with_length(var48, var49); +var47 = var50; +varonce46 = var47; +} +var51 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var51 = array_instance Array[Object] */ +var52 = 2; +var53 = NEW_array__NativeArray(var52, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var53)->values[0] = (val*) var_nit_dir; +((struct instance_array__NativeArray*)var53)->values[1] = (val*) var47; +{ +((void (*)(val*, val*, long))(var51->class->vft[COLOR_array__Array__with_native]))(var51, var53, var52) /* with_native on */; +} +} +{ +var54 = ((val* (*)(val*))(var51->class->vft[COLOR_string__Object__to_s]))(var51) /* to_s on */; +} +var_libname = var54; +{ +var55 = file__String__file_exists(var_libname); +} +if (var55){ +{ +{ /* Inline modelbuilder#ModelBuilder#paths (self) on */ +var58 = self->attrs[COLOR_modelbuilder__ModelBuilder___paths].val; /* _paths on */ +if (unlikely(var58 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _paths"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 300); +show_backtrace(1); +} +var56 = var58; +RET_LABEL57:(void)0; +} +} +{ +array__Array__add(var56, var_libname); /* Direct call array#Array#add on */ } -((void (*)(val*, val*))(var_42->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_42, var44) /* add on */; -var48 = ((val* (*)(val*))(self->class->vft[COLOR_kernel__Object__sys]))(self) /* sys on */; -var49 = ((val* (*)(val*))(var48->class->vft[COLOR_string__Sys__program_name]))(var48) /* program_name on */; -var50 = ((val* (*)(val*))(var49->class->vft[COLOR_file__String__dirname]))(var49) /* dirname on */; -((void (*)(val*, val*))(var_42->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_42, var50) /* add on */; -if (varonce51) { -var52 = varonce51; } else { -var53 = "/../lib"; -var54 = 7; -var55 = string__NativeString__to_s_with_length(var53, var54); -var52 = var55; -varonce51 = var52; } -((void (*)(val*, val*))(var_42->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_42, var52) /* add on */; -var56 = ((val* (*)(val*))(var_42->class->vft[COLOR_string__Object__to_s]))(var_42) /* to_s on */; -var_libname57 = var56; -var58 = ((short int (*)(val*))(var_libname57->class->vft[COLOR_file__String__file_exists]))(var_libname57) /* file_exists on */; -if (var58){ -var59 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__paths]))(self) /* paths on */; -var60 = ((val* (*)(val*))(var_libname57->class->vft[COLOR_file__String__simplify_path]))(var_libname57) /* simplify_path on */; -((void (*)(val*, val*))(var59->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var59, var60) /* add on */; } else { } RET_LABEL:; } /* method modelbuilder#ModelBuilder#init for (self: Object, Model, ToolContext) */ void VIRTUAL_modelbuilder__ModelBuilder__init(val* self, val* p0, val* p1) { -modelbuilder__ModelBuilder__init(self, p0, p1); +modelbuilder__ModelBuilder__init(self, p0, p1); /* Direct call modelbuilder#ModelBuilder#init on */ RET_LABEL:; } /* method modelbuilder#ModelBuilder#parse for (self: ModelBuilder, Sequence[String]): Array[MModule] */ @@ -577,172 +1161,355 @@ val* modelbuilder__ModelBuilder__parse(val* self, val* p0) { val* var /* : Array[MModule] */; val* var_modules /* var modules: Sequence[String] */; long var1 /* : Int */; +long var3 /* : Int for extern */; long var_time0 /* var time0: Int */; -val* var2 /* : ToolContext */; +val* var4 /* : ToolContext */; +val* var6 /* : ToolContext */; static val* varonce; -val* var3 /* : String */; -char* var4 /* : NativeString */; -long var5 /* : Int */; -val* var6 /* : String */; -long var7 /* : Int */; -val* var8 /* : ArraySet[MModule] */; +val* var7 /* : String */; +char* var8 /* : NativeString */; +long var9 /* : Int */; +val* var10 /* : FlatString */; +long var11 /* : Int */; +val* var12 /* : ArraySet[MModule] */; val* var_mmodules /* var mmodules: ArraySet[MModule] */; -val* var9 /* : Iterator[nullable Object] */; -short int var10 /* : Bool */; -val* var11 /* : nullable Object */; +val* var_ /* var : Sequence[String] */; +val* var13 /* : Iterator[nullable Object] */; +val* var_14 /* var : IndexedIterator[String] */; +short int var15 /* : Bool */; +val* var16 /* : nullable Object */; val* var_a /* var a: String */; -val* var12 /* : nullable AModule */; +val* var17 /* : nullable AModule */; val* var_nmodule /* var nmodule: nullable AModule */; -val* var13 /* : null */; -short int var14 /* : Bool */; -val* var15 /* : nullable MModule */; -long var16 /* : Int */; +val* var18 /* : null */; +short int var19 /* : Bool */; +short int var20 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var22 /* : Bool */; +short int var24 /* : Bool */; +val* var25 /* : nullable MModule */; +val* var27 /* : nullable MModule */; +long var30 /* : Int */; +long var32 /* : Int for extern */; long var_time1 /* var time1: Int */; -val* var17 /* : ToolContext */; -static val* varonce18; -val* var19 /* : String */; -char* var20 /* : NativeString */; -long var21 /* : Int */; -val* var22 /* : String */; -long var23 /* : Int */; -long var25 /* : Int */; -static val* varonce26; -val* var27 /* : String */; -char* var28 /* : NativeString */; -long var29 /* : Int */; -val* var30 /* : String */; -val* var31 /* : Array[Object] */; -long var32 /* : Int */; -val* var33 /* : NativeArray[Object] */; -val* var34 /* : Object */; -val* var35 /* : String */; -long var36 /* : Int */; -val* var37 /* : ToolContext */; -val* var38 /* : ToolContext */; -val* var39 /* : OptionBool */; -val* var40 /* : nullable Object */; -short int var41 /* : Bool */; -val* var42 /* : ToolContext */; -static val* varonce43; -val* var44 /* : String */; -char* var45 /* : NativeString */; -long var46 /* : Int */; -val* var47 /* : String */; +val* var33 /* : ToolContext */; +val* var35 /* : ToolContext */; +static val* varonce36; +val* var37 /* : String */; +char* var38 /* : NativeString */; +long var39 /* : Int */; +val* var40 /* : FlatString */; +long var41 /* : Int */; +short int var43 /* : Bool */; +int cltype; +int idtype; +const char* var_class_name; +long var44 /* : Int */; +static val* varonce45; +val* var46 /* : String */; +char* var47 /* : NativeString */; long var48 /* : Int */; -long var49 /* : Int */; -val* var50 /* : Array[nullable Object] */; +val* var49 /* : FlatString */; +val* var50 /* : Array[Object] */; +long var51 /* : Int */; +val* var52 /* : NativeArray[Object] */; +val* var53 /* : Object */; +val* var54 /* : String */; +long var55 /* : Int */; +val* var56 /* : ToolContext */; +val* var58 /* : ToolContext */; +val* var59 /* : ToolContext */; +val* var61 /* : ToolContext */; +val* var62 /* : OptionBool */; +val* var64 /* : OptionBool */; +val* var65 /* : nullable Object */; +val* var67 /* : nullable Object */; +short int var68 /* : Bool */; +val* var69 /* : ToolContext */; +val* var71 /* : ToolContext */; +static val* varonce72; +val* var73 /* : String */; +char* var74 /* : NativeString */; +long var75 /* : Int */; +val* var76 /* : FlatString */; +long var77 /* : Int */; +long var78 /* : Int */; +val* var80 /* : Array[nullable Object] */; var_modules = p0; -var1 = ((long (*)(val*))(self->class->vft[COLOR_time__Object__get_time]))(self) /* get_time on */; +{ +{ /* Inline time#Object#get_time (self) on */ +var3 = kernel_Any_Any_get_time_0(self); +var1 = var3; +goto RET_LABEL2; +RET_LABEL2:(void)0; +} +} var_time0 = var1; -var2 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on */; +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on */ +var6 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var4 = var6; +RET_LABEL5:(void)0; +} +} if (varonce) { -var3 = varonce; -} else { -var4 = "*** PARSE ***"; -var5 = 13; -var6 = string__NativeString__to_s_with_length(var4, var5); -var3 = var6; -varonce = var3; -} -var7 = 1; -((void (*)(val*, val*, long))(var2->class->vft[COLOR_toolcontext__ToolContext__info]))(var2, var3, var7) /* info on */; -var8 = NEW_array__ArraySet(&type_array__ArraySetmmodule__MModule); -((void (*)(val*))(var8->class->vft[COLOR_array__ArraySet__init]))(var8) /* init on */; -var_mmodules = var8; -var9 = ((val* (*)(val*))(var_modules->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_modules) /* iterator on */; +var7 = varonce; +} else { +var8 = "*** PARSE ***"; +var9 = 13; +var10 = string__NativeString__to_s_with_length(var8, var9); +var7 = var10; +varonce = var7; +} +var11 = 1; +{ +toolcontext__ToolContext__info(var4, var7, var11); /* Direct call toolcontext#ToolContext#info on */ +} +var12 = NEW_array__ArraySet(&type_array__ArraySetmmodule__MModule); +{ +((void (*)(val*))(var12->class->vft[COLOR_kernel__Object__init]))(var12) /* init on */; +} +var_mmodules = var12; +var_ = var_modules; +{ +var13 = ((val* (*)(val*))(var_->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_) /* iterator on */; +} +var_14 = var13; for(;;) { -var10 = ((short int (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var9) /* is_ok on */; -if(!var10) break; -var11 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__item]))(var9) /* item on */; -var_a = var11; -var12 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__load_module]))(self, var_a) /* load_module on */; -var_nmodule = var12; -var13 = NULL; +{ +var15 = ((short int (*)(val*))(var_14->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_14) /* is_ok on */; +} +if (var15){ +{ +var16 = ((val* (*)(val*))(var_14->class->vft[COLOR_abstract_collection__Iterator__item]))(var_14) /* item on */; +} +var_a = var16; +{ +var17 = modelbuilder__ModelBuilder__load_module(self, var_a); +} +var_nmodule = var17; +var18 = NULL; if (var_nmodule == NULL) { -var14 = 1; /* is null */ +var19 = 1; /* is null */ } else { -var14 = 0; /* arg is null but recv is not */ +var19 = 0; /* arg is null but recv is not */ } -if (var14){ -goto CONTINUE_label; +if (0) { +{ /* Inline kernel#Object#== (var_nmodule,var18) on */ +var_other = var18; +{ +{ /* Inline kernel#Object#is_same_instance (var_nmodule,var_other) on */ +var24 = var_nmodule == var_other; +var22 = var24; +goto RET_LABEL23; +RET_LABEL23:(void)0; +} +} +var20 = var22; +goto RET_LABEL21; +RET_LABEL21:(void)0; +} +var19 = var20; +} +if (var19){ +goto BREAK_label; } else { } -var15 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var_nmodule) /* mmodule on */; -if (var15 == NULL) { -fprintf(stderr, "Runtime error: %s", "Cast failed"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 139); +{ +{ /* Inline modelbuilder#AModule#mmodule (var_nmodule) on */ +var27 = var_nmodule->attrs[COLOR_modelbuilder__AModule___mmodule].val; /* _mmodule on */ +var25 = var27; +RET_LABEL26:(void)0; +} +} +if (unlikely(var25 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Cast failed"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 166); show_backtrace(1); } -((void (*)(val*, val*))(var_mmodules->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_mmodules, var15) /* add on */; -CONTINUE_label: (void)0; -((void (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__next]))(var9) /* next on */; +{ +array__ArraySet__add(var_mmodules, var25); /* Direct call array#ArraySet#add on */ } BREAK_label: (void)0; -var16 = ((long (*)(val*))(self->class->vft[COLOR_time__Object__get_time]))(self) /* get_time on */; -var_time1 = var16; -var17 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on */; -if (varonce18) { -var19 = varonce18; -} else { -var20 = "*** END PARSE: "; -var21 = 15; -var22 = string__NativeString__to_s_with_length(var20, var21); -var19 = var22; -varonce18 = var19; -} -{ /* Inline kernel#Int#- (var_time1,var_time0) */ -var25 = var_time1 - var_time0; -var23 = var25; -goto RET_LABEL24; -RET_LABEL24:(void)0; +{ +((void (*)(val*))(var_14->class->vft[COLOR_abstract_collection__Iterator__next]))(var_14) /* next on */; } -if (varonce26) { -var27 = varonce26; } else { -var28 = " ***"; -var29 = 4; -var30 = string__NativeString__to_s_with_length(var28, var29); -var27 = var30; -varonce26 = var27; +goto BREAK_label28; } -var31 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var31 = array_instance Array[Object] */ -var32 = 3; -var33 = NEW_array__NativeArray(var32, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var33)->values[0] = (val*) var19; -var34 = BOX_kernel__Int(var23); /* autobox from Int to Object */ -((struct instance_array__NativeArray*)var33)->values[1] = (val*) var34; -((struct instance_array__NativeArray*)var33)->values[2] = (val*) var27; -((void (*)(val*, val*, long))(var31->class->vft[COLOR_array__Array__with_native]))(var31, var33, var32) /* with_native on */; -} -var35 = ((val* (*)(val*))(var31->class->vft[COLOR_string__Object__to_s]))(var31) /* to_s on */; -var36 = 2; -((void (*)(val*, val*, long))(var17->class->vft[COLOR_toolcontext__ToolContext__info]))(var17, var35, var36) /* info on */; -var37 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on */; -((void (*)(val*))(var37->class->vft[COLOR_toolcontext__ToolContext__check_errors]))(var37) /* check_errors on */; -var38 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on */; -var39 = ((val* (*)(val*))(var38->class->vft[COLOR_modelbuilder__ToolContext__opt_only_parse]))(var38) /* opt_only_parse on */; -var40 = ((val* (*)(val*))(var39->class->vft[COLOR_opts__Option__value]))(var39) /* value on */; -var41 = ((struct instance_kernel__Bool*)var40)->value; /* autounbox from nullable Object to Bool */; -if (var41){ -var42 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on */; -if (varonce43) { -var44 = varonce43; +} +BREAK_label28: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_14) on */ +RET_LABEL29:(void)0; +} +} +{ +{ /* Inline time#Object#get_time (self) on */ +var32 = kernel_Any_Any_get_time_0(self); +var30 = var32; +goto RET_LABEL31; +RET_LABEL31:(void)0; +} +} +var_time1 = var30; +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on */ +var35 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var35 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var33 = var35; +RET_LABEL34:(void)0; +} +} +if (varonce36) { +var37 = varonce36; +} else { +var38 = "*** END PARSE: "; +var39 = 15; +var40 = string__NativeString__to_s_with_length(var38, var39); +var37 = var40; +varonce36 = var37; +} +{ +{ /* Inline kernel#Int#- (var_time1,var_time0) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var43 = 1; /* easy isa OTHER*/ +if (unlikely(!var43)) { +var_class_name = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377); +show_backtrace(1); +} +var44 = var_time1 - var_time0; +var41 = var44; +goto RET_LABEL42; +RET_LABEL42:(void)0; +} +} +if (varonce45) { +var46 = varonce45; +} else { +var47 = " ***"; +var48 = 4; +var49 = string__NativeString__to_s_with_length(var47, var48); +var46 = var49; +varonce45 = var46; +} +var50 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var50 = array_instance Array[Object] */ +var51 = 3; +var52 = NEW_array__NativeArray(var51, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var52)->values[0] = (val*) var37; +var53 = BOX_kernel__Int(var41); /* autobox from Int to Object */ +((struct instance_array__NativeArray*)var52)->values[1] = (val*) var53; +((struct instance_array__NativeArray*)var52)->values[2] = (val*) var46; +{ +((void (*)(val*, val*, long))(var50->class->vft[COLOR_array__Array__with_native]))(var50, var52, var51) /* with_native on */; +} +} +{ +var54 = ((val* (*)(val*))(var50->class->vft[COLOR_string__Object__to_s]))(var50) /* to_s on */; +} +var55 = 2; +{ +toolcontext__ToolContext__info(var33, var54, var55); /* Direct call toolcontext#ToolContext#info on */ +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on */ +var58 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var58 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var56 = var58; +RET_LABEL57:(void)0; +} +} +{ +toolcontext__ToolContext__check_errors(var56); /* Direct call toolcontext#ToolContext#check_errors on */ +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on */ +var61 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var61 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var59 = var61; +RET_LABEL60:(void)0; +} +} +{ +{ /* Inline modelbuilder#ToolContext#opt_only_parse (var59) on */ +var64 = var59->attrs[COLOR_modelbuilder__ToolContext___opt_only_parse].val; /* _opt_only_parse on */ +if (unlikely(var64 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_only_parse"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 39); +show_backtrace(1); +} +var62 = var64; +RET_LABEL63:(void)0; +} +} +{ +{ /* Inline opts#Option#value (var62) on */ +var67 = var62->attrs[COLOR_opts__Option___value].val; /* _value on */ +var65 = var67; +RET_LABEL66:(void)0; +} +} +var68 = ((struct instance_kernel__Bool*)var65)->value; /* autounbox from nullable Object to Bool */; +if (var68){ +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on */ +var71 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var71 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var69 = var71; +RET_LABEL70:(void)0; +} +} +if (varonce72) { +var73 = varonce72; } else { -var45 = "*** ONLY PARSE..."; -var46 = 17; -var47 = string__NativeString__to_s_with_length(var45, var46); -var44 = var47; -varonce43 = var44; +var74 = "*** ONLY PARSE..."; +var75 = 17; +var76 = string__NativeString__to_s_with_length(var74, var75); +var73 = var76; +varonce72 = var73; +} +var77 = 1; +{ +toolcontext__ToolContext__info(var69, var73, var77); /* Direct call toolcontext#ToolContext#info on */ +} +var78 = 0; +{ +{ /* Inline kernel#Object#exit (self,var78) on */ +exit(var78); +RET_LABEL79:(void)0; +} } -var48 = 1; -((void (*)(val*, val*, long))(var42->class->vft[COLOR_toolcontext__ToolContext__info]))(var42, var44, var48) /* info on */; -var49 = 0; -((void (*)(val*, long))(self->class->vft[COLOR_kernel__Object__exit]))(self, var49) /* exit on */; } else { } -var50 = ((val* (*)(val*))(var_mmodules->class->vft[COLOR_array__Collection__to_a]))(var_mmodules) /* to_a on */; -var = var50; +{ +var80 = array__Collection__to_a(var_mmodules); +} +var = var80; goto RET_LABEL; RET_LABEL:; return var; @@ -763,151 +1530,273 @@ val* var_anode /* var anode: ANode */; val* var_mmodule /* var mmodule: MModule */; val* var_name /* var name: String */; val* var1 /* : Model */; -val* var2 /* : nullable Array[MClass] */; +val* var3 /* : Model */; +val* var4 /* : nullable Array[MClass] */; val* var_classes /* var classes: nullable Array[MClass] */; -val* var3 /* : null */; -short int var4 /* : Bool */; val* var5 /* : null */; -val* var6 /* : null */; +short int var6 /* : Bool */; +short int var7 /* : Bool */; +val* var8 /* : null */; +val* var9 /* : null */; val* var_res /* var res: nullable MClass */; -val* var7 /* : Iterator[nullable Object] */; -short int var8 /* : Bool */; -val* var9 /* : nullable Object */; -val* var_mclass /* var mclass: MClass */; -val* var10 /* : POSetElement[MModule] */; -val* var11 /* : MModule */; +val* var_ /* var : Array[MClass] */; +val* var10 /* : ArrayIterator[nullable Object] */; +val* var_11 /* var : ArrayIterator[MClass] */; short int var12 /* : Bool */; -short int var13 /* : Bool */; -val* var14 /* : MModule */; -val* var15 /* : MVisibility */; -short int var16 /* : Bool */; -short int var17 /* : Bool */; -val* var18 /* : null */; -short int var19 /* : Bool */; +val* var13 /* : nullable Object */; +val* var_mclass /* var mclass: MClass */; +val* var14 /* : POSetElement[MModule] */; +val* var16 /* : POSetElement[MModule] */; +val* var17 /* : MModule */; +val* var19 /* : MModule */; +short int var20 /* : Bool */; +short int var21 /* : Bool */; +val* var22 /* : MModule */; +val* var24 /* : MModule */; +val* var25 /* : MVisibility */; +val* var27 /* : MVisibility */; +short int var28 /* : Bool */; +short int var29 /* : Bool */; +val* var30 /* : null */; +short int var31 /* : Bool */; +short int var32 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var34 /* : Bool */; +short int var36 /* : Bool */; static val* varonce; -val* var20 /* : String */; -char* var21 /* : NativeString */; -long var22 /* : Int */; -val* var23 /* : String */; -static val* varonce24; -val* var25 /* : String */; -char* var26 /* : NativeString */; -long var27 /* : Int */; -val* var28 /* : String */; -val* var29 /* : String */; -static val* varonce30; -val* var31 /* : String */; -char* var32 /* : NativeString */; -long var33 /* : Int */; -val* var34 /* : String */; -val* var35 /* : String */; -val* var36 /* : Array[Object] */; -long var37 /* : Int */; -val* var38 /* : NativeArray[Object] */; -val* var39 /* : String */; -val* var40 /* : null */; +val* var37 /* : String */; +char* var38 /* : NativeString */; +long var39 /* : Int */; +val* var40 /* : FlatString */; +static val* varonce41; +val* var42 /* : String */; +char* var43 /* : NativeString */; +long var44 /* : Int */; +val* var45 /* : FlatString */; +val* var46 /* : String */; +static val* varonce47; +val* var48 /* : String */; +char* var49 /* : NativeString */; +long var50 /* : Int */; +val* var51 /* : FlatString */; +val* var52 /* : String */; +val* var53 /* : Array[Object] */; +long var54 /* : Int */; +val* var55 /* : NativeArray[Object] */; +val* var56 /* : String */; +val* var57 /* : null */; var_anode = p0; var_mmodule = p1; var_name = p2; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(self) /* model on */; -var2 = ((val* (*)(val*, val*))(var1->class->vft[COLOR_model__Model__get_mclasses_by_name]))(var1, var_name) /* get_mclasses_by_name on */; -var_classes = var2; -var3 = NULL; +{ +{ /* Inline modelbuilder#ModelBuilder#model (self) on */ +var3 = self->attrs[COLOR_modelbuilder__ModelBuilder___model].val; /* _model on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 103); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} +{ +var4 = model__Model__get_mclasses_by_name(var1, var_name); +} +var_classes = var4; +var5 = NULL; if (var_classes == NULL) { -var4 = 1; /* is null */ +var6 = 1; /* is null */ } else { -var4 = 0; /* arg is null but recv is not */ +var6 = 0; /* arg is null but recv is not */ } -if (var4){ -var5 = NULL; -var = var5; +if (0) { +var7 = array__Array___61d_61d(var_classes, var5); +var6 = var7; +} +if (var6){ +var8 = NULL; +var = var8; goto RET_LABEL; } else { } -var6 = NULL; -var_res = var6; -var7 = ((val* (*)(val*))(var_classes->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_classes) /* iterator on */; +var9 = NULL; +var_res = var9; +var_ = var_classes; +{ +var10 = array__AbstractArrayRead__iterator(var_); +} +var_11 = var10; for(;;) { -var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on */; -if(!var8) break; -var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on */; -var_mclass = var9; -var10 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__in_importation]))(var_mmodule) /* in_importation on */; -var11 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__intro_mmodule]))(var_mclass) /* intro_mmodule on */; -var12 = ((short int (*)(val*, val*))(var10->class->vft[COLOR_poset__POSetElement___60d_61d]))(var10, var11) /* <= on */; -var13 = !var12; -if (var13){ -goto CONTINUE_label; -} else { -} -var14 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__intro_mmodule]))(var_mclass) /* intro_mmodule on */; -var15 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__visibility]))(var_mclass) /* visibility on */; -var16 = ((short int (*)(val*, val*, val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__is_visible]))(var_mmodule, var14, var15) /* is_visible on */; -var17 = !var16; -if (var17){ -goto CONTINUE_label; +{ +var12 = array__ArrayIterator__is_ok(var_11); +} +if (var12){ +{ +var13 = array__ArrayIterator__item(var_11); +} +var_mclass = var13; +{ +{ /* Inline mmodule#MModule#in_importation (var_mmodule) on */ +var16 = var_mmodule->attrs[COLOR_mmodule__MModule___in_importation].val; /* _in_importation on */ +if (unlikely(var16 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation"); +PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 93); +show_backtrace(1); +} +var14 = var16; +RET_LABEL15:(void)0; +} +} +{ +{ /* Inline model#MClass#intro_mmodule (var_mclass) on */ +var19 = var_mclass->attrs[COLOR_model__MClass___intro_mmodule].val; /* _intro_mmodule on */ +if (unlikely(var19 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mmodule"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 347); +show_backtrace(1); +} +var17 = var19; +RET_LABEL18:(void)0; +} +} +{ +var20 = poset__POSetElement___60d_61d(var14, var17); +} +var21 = !var20; +if (var21){ +goto BREAK_label; } else { } -var18 = NULL; +{ +{ /* Inline model#MClass#intro_mmodule (var_mclass) on */ +var24 = var_mclass->attrs[COLOR_model__MClass___intro_mmodule].val; /* _intro_mmodule on */ +if (unlikely(var24 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mmodule"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 347); +show_backtrace(1); +} +var22 = var24; +RET_LABEL23:(void)0; +} +} +{ +{ /* Inline model#MClass#visibility (var_mclass) on */ +var27 = var_mclass->attrs[COLOR_model__MClass___visibility].val; /* _visibility on */ +if (unlikely(var27 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 375); +show_backtrace(1); +} +var25 = var27; +RET_LABEL26:(void)0; +} +} +{ +var28 = mmodule__MModule__is_visible(var_mmodule, var22, var25); +} +var29 = !var28; +if (var29){ +goto BREAK_label; +} else { +} +var30 = NULL; if (var_res == NULL) { -var19 = 1; /* is null */ +var31 = 1; /* is null */ } else { -var19 = 0; /* arg is null but recv is not */ +var31 = 0; /* arg is null but recv is not */ } -if (var19){ +if (0) { +{ /* Inline kernel#Object#== (var_res,var30) on */ +var_other = var30; +{ +{ /* Inline kernel#Object#is_same_instance (var_res,var_other) on */ +var36 = var_res == var_other; +var34 = var36; +goto RET_LABEL35; +RET_LABEL35:(void)0; +} +} +var32 = var34; +goto RET_LABEL33; +RET_LABEL33:(void)0; +} +var31 = var32; +} +if (var31){ var_res = var_mclass; } else { if (varonce) { -var20 = varonce; +var37 = varonce; } else { -var21 = "Ambigous class name \'"; -var22 = 21; -var23 = string__NativeString__to_s_with_length(var21, var22); -var20 = var23; -varonce = var20; +var38 = "Ambigous class name \'"; +var39 = 21; +var40 = string__NativeString__to_s_with_length(var38, var39); +var37 = var40; +varonce = var37; } -if (varonce24) { -var25 = varonce24; +if (varonce41) { +var42 = varonce41; } else { -var26 = "\'; conflict between "; -var27 = 20; -var28 = string__NativeString__to_s_with_length(var26, var27); -var25 = var28; -varonce24 = var25; +var43 = "\'; conflict between "; +var44 = 20; +var45 = string__NativeString__to_s_with_length(var43, var44); +var42 = var45; +varonce41 = var42; } -var29 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__full_name]))(var_mclass) /* full_name on */; -if (varonce30) { -var31 = varonce30; +{ +var46 = model__MClass__full_name(var_mclass); +} +if (varonce47) { +var48 = varonce47; } else { -var32 = " and "; -var33 = 5; -var34 = string__NativeString__to_s_with_length(var32, var33); -var31 = var34; -varonce30 = var31; +var49 = " and "; +var50 = 5; +var51 = string__NativeString__to_s_with_length(var49, var50); +var48 = var51; +varonce47 = var48; } -var35 = ((val* (*)(val*))(var_res->class->vft[COLOR_model__MClass__full_name]))(var_res) /* full_name on */; -var36 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var36 = array_instance Array[Object] */ -var37 = 6; -var38 = NEW_array__NativeArray(var37, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var38)->values[0] = (val*) var20; -((struct instance_array__NativeArray*)var38)->values[1] = (val*) var_name; -((struct instance_array__NativeArray*)var38)->values[2] = (val*) var25; -((struct instance_array__NativeArray*)var38)->values[3] = (val*) var29; -((struct instance_array__NativeArray*)var38)->values[4] = (val*) var31; -((struct instance_array__NativeArray*)var38)->values[5] = (val*) var35; -((void (*)(val*, val*, long))(var36->class->vft[COLOR_array__Array__with_native]))(var36, var38, var37) /* with_native on */; +{ +var52 = model__MClass__full_name(var_res); } -var39 = ((val* (*)(val*))(var36->class->vft[COLOR_string__Object__to_s]))(var36) /* to_s on */; -((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_anode, var39) /* error on */; -var40 = NULL; -var = var40; -goto RET_LABEL; +var53 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var53 = array_instance Array[Object] */ +var54 = 6; +var55 = NEW_array__NativeArray(var54, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var55)->values[0] = (val*) var37; +((struct instance_array__NativeArray*)var55)->values[1] = (val*) var_name; +((struct instance_array__NativeArray*)var55)->values[2] = (val*) var42; +((struct instance_array__NativeArray*)var55)->values[3] = (val*) var46; +((struct instance_array__NativeArray*)var55)->values[4] = (val*) var48; +((struct instance_array__NativeArray*)var55)->values[5] = (val*) var52; +{ +((void (*)(val*, val*, long))(var53->class->vft[COLOR_array__Array__with_native]))(var53, var55, var54) /* with_native on */; +} +} +{ +var56 = ((val* (*)(val*))(var53->class->vft[COLOR_string__Object__to_s]))(var53) /* to_s on */; +} +{ +modelbuilder__ModelBuilder__error(self, var_anode, var56); /* Direct call modelbuilder#ModelBuilder#error on */ } -CONTINUE_label: (void)0; -((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on */; +var57 = NULL; +var = var57; +goto RET_LABEL; } BREAK_label: (void)0; +{ +array__ArrayIterator__next(var_11); /* Direct call array#ArrayIterator#next on */ +} +} else { +goto BREAK_label58; +} +} +BREAK_label58: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_11) on */ +RET_LABEL59:(void)0; +} +} var = var_res; goto RET_LABEL; RET_LABEL:; @@ -930,293 +1819,978 @@ val* var_mmodule /* var mmodule: MModule */; val* var_mtype /* var mtype: MType */; val* var_name /* var name: String */; val* var1 /* : Model */; -val* var2 /* : nullable Array[MProperty] */; +val* var3 /* : Model */; +val* var4 /* : nullable Array[MProperty] */; val* var_props /* var props: nullable Array[MProperty] */; -val* var3 /* : null */; -short int var4 /* : Bool */; val* var5 /* : null */; -val* var6 /* : HashMap3[MModule, MType, String, nullable MProperty] */; -val* var7 /* : nullable Object */; -val* var_cache /* var cache: nullable MProperty */; +short int var6 /* : Bool */; +short int var7 /* : Bool */; val* var8 /* : null */; -short int var9 /* : Bool */; -val* var10 /* : null */; +val* var9 /* : HashMap3[MModule, MType, String, nullable MProperty] */; +val* var11 /* : HashMap3[MModule, MType, String, nullable MProperty] */; +val* var12 /* : nullable Object */; +val* var_cache /* var cache: nullable MProperty */; +val* var13 /* : null */; +short int var14 /* : Bool */; +short int var15 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var17 /* : Bool */; +short int var18 /* : Bool */; +short int var19 /* : Bool */; +val* var20 /* : null */; val* var_res /* var res: nullable MProperty */; -val* var11 /* : null */; +val* var21 /* : null */; val* var_ress /* var ress: nullable Array[MProperty] */; -val* var12 /* : Iterator[nullable Object] */; -short int var13 /* : Bool */; -val* var14 /* : nullable Object */; +val* var_ /* var : Array[MProperty] */; +val* var22 /* : ArrayIterator[nullable Object] */; +val* var_23 /* var : ArrayIterator[MProperty] */; +short int var24 /* : Bool */; +val* var25 /* : nullable Object */; val* var_mprop /* var mprop: MProperty */; -short int var15 /* : Bool */; -short int var16 /* : Bool */; -val* var17 /* : MClassDef */; -val* var18 /* : MModule */; -val* var19 /* : MVisibility */; -short int var20 /* : Bool */; -short int var21 /* : Bool */; -val* var22 /* : null */; -short int var23 /* : Bool */; -val* var24 /* : MClassDef */; -val* var25 /* : MClassType */; -val* var_restype /* var restype: MClassType */; -val* var26 /* : MClassDef */; -val* var27 /* : MClassType */; -val* var_mproptype /* var mproptype: MClassType */; -val* var28 /* : null */; -short int var29 /* : Bool */; -val* var30 /* : null */; -short int var31 /* : Bool */; -val* var32 /* : null */; -short int var33 /* : Bool */; -val* var34 /* : Array[MProperty] */; -val* var35 /* : null */; -short int var36 /* : Bool */; -val* var37 /* : MClassDef */; -val* var38 /* : MClassType */; -val* var_restype39 /* var restype: MClassType */; -val* var40 /* : Iterator[nullable Object] */; +short int var26 /* : Bool */; +short int var27 /* : Bool */; +val* var28 /* : MClassDef */; +val* var30 /* : MClassDef */; +val* var31 /* : MModule */; +val* var33 /* : MModule */; +val* var34 /* : MVisibility */; +val* var36 /* : MVisibility */; +short int var37 /* : Bool */; +short int var38 /* : Bool */; +short int var39 /* : Bool */; +short int var40 /* : Bool */; short int var41 /* : Bool */; -val* var42 /* : nullable Object */; -val* var_mprop43 /* var mprop: MProperty */; -val* var44 /* : MClassDef */; -val* var45 /* : MClassType */; -val* var_mproptype46 /* var mproptype: MClassType */; -val* var47 /* : null */; +int cltype; +int idtype; +short int var_42 /* var : Bool */; +short int var43 /* : Bool */; +short int var45 /* : Bool */; +short int var_46 /* var : Bool */; +short int var47 /* : Bool */; short int var48 /* : Bool */; -short int var49 /* : Bool */; +int cltype49; +int idtype50; +short int var51 /* : Bool */; +short int var_52 /* var : Bool */; +val* var53 /* : MClassDef */; +val* var55 /* : MClassDef */; +val* var56 /* : MClass */; +val* var58 /* : MClass */; +val* var59 /* : MClass */; +val* var61 /* : MClass */; +short int var62 /* : Bool */; +short int var63 /* : Bool */; +short int var65 /* : Bool */; +short int var66 /* : Bool */; +short int var67 /* : Bool */; +val* var68 /* : null */; +short int var69 /* : Bool */; +short int var70 /* : Bool */; +val* var_other72 /* var other: nullable Object */; +short int var73 /* : Bool */; +short int var75 /* : Bool */; +short int var76 /* : Bool */; +short int var77 /* : Bool */; +short int var78 /* : Bool */; +short int var79 /* : Bool */; +int cltype80; +int idtype81; +short int var_82 /* var : Bool */; +short int var83 /* : Bool */; +int cltype84; +int idtype85; +short int var_86 /* var : Bool */; +short int var87 /* : Bool */; +short int var89 /* : Bool */; +short int var_90 /* var : Bool */; +short int var91 /* : Bool */; +short int var93 /* : Bool */; +val* var94 /* : MClassDef */; +val* var96 /* : MClassDef */; +val* var97 /* : MClassType */; +val* var99 /* : MClassType */; +val* var_restype /* var restype: MClassType */; +val* var100 /* : MClassDef */; +val* var102 /* : MClassDef */; +val* var103 /* : MClassType */; +val* var105 /* : MClassType */; +val* var_mproptype /* var mproptype: MClassType */; +val* var106 /* : null */; +short int var107 /* : Bool */; +val* var108 /* : null */; +short int var109 /* : Bool */; +short int var110 /* : Bool */; +val* var111 /* : Array[MProperty] */; +short int var114 /* : Bool */; +short int var115 /* : Bool */; +val* var116 /* : null */; +short int var117 /* : Bool */; +short int var118 /* : Bool */; +short int var120 /* : Bool */; +short int var121 /* : Bool */; +short int var122 /* : Bool */; +short int var_123 /* var : Bool */; +short int var124 /* : Bool */; +int cltype125; +int idtype126; +short int var_127 /* var : Bool */; +short int var128 /* : Bool */; +short int var130 /* : Bool */; +val* var131 /* : MClassDef */; +val* var133 /* : MClassDef */; +val* var134 /* : MClassType */; +val* var136 /* : MClassType */; +val* var_restype137 /* var restype: MClassType */; +val* var138 /* : Array[MProperty] */; +val* var_ress2 /* var ress2: Array[MProperty] */; +val* var_139 /* var : Array[MProperty] */; +val* var140 /* : ArrayIterator[nullable Object] */; +val* var_141 /* var : ArrayIterator[MProperty] */; +short int var142 /* : Bool */; +val* var143 /* : nullable Object */; +val* var_mprop144 /* var mprop: MProperty */; +val* var145 /* : MClassDef */; +val* var147 /* : MClassDef */; +val* var148 /* : MClassType */; +val* var150 /* : MClassType */; +val* var_mproptype151 /* var mproptype: MClassType */; +val* var152 /* : null */; +short int var153 /* : Bool */; +short int var154 /* : Bool */; +short int var155 /* : Bool */; +short int var156 /* : Bool */; +int cltype157; +int idtype158; +short int var159 /* : Bool */; +short int var_160 /* var : Bool */; +short int var161 /* : Bool */; +short int var163 /* : Bool */; +short int var164 /* : Bool */; +short int var167 /* : Bool */; +val* var168 /* : null */; +val* var169 /* : null */; +short int var170 /* : Bool */; +short int var171 /* : Bool */; +short int var173 /* : Bool */; +short int var174 /* : Bool */; +short int var175 /* : Bool */; +long var176 /* : Int */; +long var178 /* : Int */; +long var179 /* : Int */; +short int var180 /* : Bool */; +short int var182 /* : Bool */; +int cltype183; +int idtype184; +const char* var_class_name; +short int var185 /* : Bool */; +val* var186 /* : Array[String] */; +val* var_s /* var s: Array[String] */; +val* var_187 /* var : Array[MProperty] */; +val* var188 /* : ArrayIterator[nullable Object] */; +val* var_189 /* var : ArrayIterator[MProperty] */; +short int var190 /* : Bool */; +val* var191 /* : nullable Object */; +val* var_mprop192 /* var mprop: MProperty */; +val* var193 /* : String */; static val* varonce; -val* var50 /* : String */; -char* var51 /* : NativeString */; -long var52 /* : Int */; -val* var53 /* : String */; -static val* varonce54; -val* var55 /* : String */; -char* var56 /* : NativeString */; -long var57 /* : Int */; -val* var58 /* : String */; -static val* varonce59; -val* var60 /* : String */; -char* var61 /* : NativeString */; -long var62 /* : Int */; -val* var63 /* : String */; -val* var64 /* : String */; -static val* varonce65; -val* var66 /* : String */; -char* var67 /* : NativeString */; -long var68 /* : Int */; -val* var69 /* : String */; -val* var70 /* : String */; -val* var71 /* : Array[Object] */; -long var72 /* : Int */; -val* var73 /* : NativeArray[Object] */; -val* var74 /* : String */; -val* var75 /* : null */; -val* var77 /* : HashMap3[MModule, MType, String, nullable MProperty] */; +val* var196 /* : String */; +char* var197 /* : NativeString */; +long var198 /* : Int */; +val* var199 /* : FlatString */; +static val* varonce200; +val* var201 /* : String */; +char* var202 /* : NativeString */; +long var203 /* : Int */; +val* var204 /* : FlatString */; +static val* varonce205; +val* var206 /* : String */; +char* var207 /* : NativeString */; +long var208 /* : Int */; +val* var209 /* : FlatString */; +static val* varonce210; +val* var211 /* : String */; +char* var212 /* : NativeString */; +long var213 /* : Int */; +val* var214 /* : FlatString */; +val* var215 /* : String */; +val* var216 /* : Array[Object] */; +long var217 /* : Int */; +val* var218 /* : NativeArray[Object] */; +val* var219 /* : String */; +val* var220 /* : HashMap3[MModule, MType, String, nullable MProperty] */; +val* var222 /* : HashMap3[MModule, MType, String, nullable MProperty] */; var_anode = p0; var_mmodule = p1; var_mtype = p2; var_name = p3; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(self) /* model on */; -var2 = ((val* (*)(val*, val*))(var1->class->vft[COLOR_model__Model__get_mproperties_by_name]))(var1, var_name) /* get_mproperties_by_name on */; -var_props = var2; -var3 = NULL; +{ +{ /* Inline modelbuilder#ModelBuilder#model (self) on */ +var3 = self->attrs[COLOR_modelbuilder__ModelBuilder___model].val; /* _model on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 103); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} +{ +var4 = model__Model__get_mproperties_by_name(var1, var_name); +} +var_props = var4; +var5 = NULL; if (var_props == NULL) { -var4 = 1; /* is null */ +var6 = 1; /* is null */ } else { -var4 = 0; /* arg is null but recv is not */ +var6 = 0; /* arg is null but recv is not */ } -if (var4){ -var5 = NULL; -var = var5; +if (0) { +var7 = array__Array___61d_61d(var_props, var5); +var6 = var7; +} +if (var6){ +var8 = NULL; +var = var8; goto RET_LABEL; } else { } -var6 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mproperty_by_name2_cache]))(self) /* try_get_mproperty_by_name2_cache on */; -var7 = ((val* (*)(val*, val*, val*, val*))(var6->class->vft[COLOR_more_collections__HashMap3___91d_93d]))(var6, var_mmodule, var_mtype, var_name) /* [] on */; -var_cache = var7; -var8 = NULL; +{ +{ /* Inline modelbuilder#ModelBuilder#try_get_mproperty_by_name2_cache (self) on */ +var11 = self->attrs[COLOR_modelbuilder__ModelBuilder___try_get_mproperty_by_name2_cache].val; /* _try_get_mproperty_by_name2_cache on */ +if (unlikely(var11 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _try_get_mproperty_by_name2_cache"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 291); +show_backtrace(1); +} +var9 = var11; +RET_LABEL10:(void)0; +} +} +{ +var12 = more_collections__HashMap3___91d_93d(var9, var_mmodule, var_mtype, var_name); +} +var_cache = var12; +var13 = NULL; if (var_cache == NULL) { -var9 = 0; /* is null */ +var14 = 0; /* is null */ } else { -var9 = 1; /* arg is null and recv is not */ +var14 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_cache,var13) on */ +var_other = var13; +{ +var18 = ((short int (*)(val*, val*))(var_cache->class->vft[COLOR_kernel__Object___61d_61d]))(var_cache, var_other) /* == on */; +var17 = var18; +} +var19 = !var17; +var15 = var19; +goto RET_LABEL16; +RET_LABEL16:(void)0; } -if (var9){ +var14 = var15; +} +if (var14){ var = var_cache; goto RET_LABEL; } else { } -var10 = NULL; -var_res = var10; -var11 = NULL; -var_ress = var11; -var12 = ((val* (*)(val*))(var_props->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_props) /* iterator on */; +var20 = NULL; +var_res = var20; +var21 = NULL; +var_ress = var21; +var_ = var_props; +{ +var22 = array__AbstractArrayRead__iterator(var_); +} +var_23 = var22; for(;;) { -var13 = ((short int (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var12) /* is_ok on */; -if(!var13) break; -var14 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__item]))(var12) /* item on */; -var_mprop = var14; -var15 = ((short int (*)(val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__has_mproperty]))(var_mtype, var_mmodule, var_mprop) /* has_mproperty on */; -var16 = !var15; -if (var16){ -goto CONTINUE_label; -} else { +{ +var24 = array__ArrayIterator__is_ok(var_23); } -var17 = ((val* (*)(val*))(var_mprop->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_mprop) /* intro_mclassdef on */; -var18 = ((val* (*)(val*))(var17->class->vft[COLOR_model__MClassDef__mmodule]))(var17) /* mmodule on */; -var19 = ((val* (*)(val*))(var_mprop->class->vft[COLOR_model__MProperty__visibility]))(var_mprop) /* visibility on */; -var20 = ((short int (*)(val*, val*, val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__is_visible]))(var_mmodule, var18, var19) /* is_visible on */; -var21 = !var20; -if (var21){ -goto CONTINUE_label; -} else { +if (var24){ +{ +var25 = array__ArrayIterator__item(var_23); } -var22 = NULL; -if (var_res == NULL) { -var23 = 1; /* is null */ -} else { -var23 = 0; /* arg is null but recv is not */ +var_mprop = var25; +{ +var26 = model__MType__has_mproperty(var_mtype, var_mmodule, var_mprop); } -if (var23){ -var_res = var_mprop; -} else { -var24 = ((val* (*)(val*))(var_res->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_res) /* intro_mclassdef on */; -var25 = ((val* (*)(val*))(var24->class->vft[COLOR_model__MClassDef__bound_mtype]))(var24) /* bound_mtype on */; -var_restype = var25; -var26 = ((val* (*)(val*))(var_mprop->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_mprop) /* intro_mclassdef on */; -var27 = ((val* (*)(val*))(var26->class->vft[COLOR_model__MClassDef__bound_mtype]))(var26) /* bound_mtype on */; -var_mproptype = var27; -var28 = NULL; -var29 = ((short int (*)(val*, val*, val*, val*))(var_restype->class->vft[COLOR_model__MType__is_subtype]))(var_restype, var_mmodule, var28, var_mproptype) /* is_subtype on */; -if (var29){ -} else { -var30 = NULL; -var31 = ((short int (*)(val*, val*, val*, val*))(var_mproptype->class->vft[COLOR_model__MType__is_subtype]))(var_mproptype, var_mmodule, var30, var_restype) /* is_subtype on */; -if (var31){ -var_res = var_mprop; -} else { -var32 = NULL; -if (var_ress == NULL) { -var33 = 1; /* is null */ +var27 = !var26; +if (var27){ +goto BREAK_label; } else { -var33 = 0; /* arg is null but recv is not */ } -if (var33){ -var34 = NEW_array__Array(&type_array__Arraymodel__MProperty); -((void (*)(val*))(var34->class->vft[COLOR_array__Array__init]))(var34) /* init on */; -var_ress = var34; -} else { +{ +{ /* Inline model#MProperty#intro_mclassdef (var_mprop) on */ +var30 = var_mprop->attrs[COLOR_model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on */ +if (unlikely(var30 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1615); +show_backtrace(1); } -((void (*)(val*, val*))(var_ress->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_ress, var_mprop) /* add on */; +var28 = var30; +RET_LABEL29:(void)0; } } +{ +{ /* Inline model#MClassDef#mmodule (var28) on */ +var33 = var28->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on */ +if (unlikely(var33 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489); +show_backtrace(1); } -CONTINUE_label: (void)0; -((void (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__next]))(var12) /* next on */; +var31 = var33; +RET_LABEL32:(void)0; } -BREAK_label: (void)0; -var35 = NULL; -if (var_ress == NULL) { -var36 = 0; /* is null */ -} else { -var36 = 1; /* arg is null and recv is not */ } -if (var36){ -if (var_res == NULL) { -fprintf(stderr, "Runtime error: %s", "Reciever is null"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 217); +{ +{ /* Inline model#MProperty#visibility (var_mprop) on */ +var36 = var_mprop->attrs[COLOR_model__MProperty___visibility].val; /* _visibility on */ +if (unlikely(var36 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1630); show_backtrace(1); -} else { -var37 = ((val* (*)(val*))(var_res->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_res) /* intro_mclassdef on */; } -var38 = ((val* (*)(val*))(var37->class->vft[COLOR_model__MClassDef__bound_mtype]))(var37) /* bound_mtype on */; -var_restype39 = var38; -var40 = ((val* (*)(val*))(var_ress->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_ress) /* iterator on */; -for(;;) { -var41 = ((short int (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var40) /* is_ok on */; -if(!var41) break; -var42 = ((val* (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__item]))(var40) /* item on */; -var_mprop43 = var42; -var44 = ((val* (*)(val*))(var_mprop43->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_mprop43) /* intro_mclassdef on */; -var45 = ((val* (*)(val*))(var44->class->vft[COLOR_model__MClassDef__bound_mtype]))(var44) /* bound_mtype on */; -var_mproptype46 = var45; -var47 = NULL; -var48 = ((short int (*)(val*, val*, val*, val*))(var_restype39->class->vft[COLOR_model__MType__is_subtype]))(var_restype39, var_mmodule, var47, var_mproptype46) /* is_subtype on */; -var49 = !var48; -if (var49){ -if (varonce) { -var50 = varonce; -} else { -var51 = "Ambigous property name \'"; -var52 = 24; -var53 = string__NativeString__to_s_with_length(var51, var52); -var50 = var53; -varonce = var50; +var34 = var36; +RET_LABEL35:(void)0; } -if (varonce54) { -var55 = varonce54; -} else { -var56 = "\' for "; -var57 = 6; -var58 = string__NativeString__to_s_with_length(var56, var57); -var55 = var58; -varonce54 = var55; } -if (varonce59) { -var60 = varonce59; +{ +var37 = mmodule__MModule__is_visible(var_mmodule, var31, var34); +} +var38 = !var37; +if (var38){ +goto BREAK_label; } else { -var61 = "; conflict between "; -var62 = 19; -var63 = string__NativeString__to_s_with_length(var61, var62); -var60 = var63; -varonce59 = var60; } -var64 = ((val* (*)(val*))(var_mprop43->class->vft[COLOR_model__MProperty__full_name]))(var_mprop43) /* full_name on */; -if (varonce65) { -var66 = varonce65; +/* isa MMethod */ +cltype = type_model__MMethod.color; +idtype = type_model__MMethod.id; +if(cltype >= var_mprop->type->table_size) { +var41 = 0; } else { -var67 = " and "; -var68 = 5; -var69 = string__NativeString__to_s_with_length(var67, var68); -var66 = var69; -varonce65 = var66; +var41 = var_mprop->type->type_table[cltype] == idtype; +} +var_42 = var41; +if (var41){ +{ +{ /* Inline model#MMethod#is_new (var_mprop) on */ +var45 = var_mprop->attrs[COLOR_model__MMethod___is_new].s; /* _is_new on */ +var43 = var45; +RET_LABEL44:(void)0; +} +} +var40 = var43; +} else { +var40 = var_42; +} +var_46 = var40; +if (var40){ +/* isa MClassType */ +cltype49 = type_model__MClassType.color; +idtype50 = type_model__MClassType.id; +if(cltype49 >= var_mtype->type->table_size) { +var48 = 0; +} else { +var48 = var_mtype->type->type_table[cltype49] == idtype50; +} +var51 = !var48; +var_52 = var51; +if (var51){ +var47 = var_52; +} else { +{ +{ /* Inline model#MProperty#intro_mclassdef (var_mprop) on */ +var55 = var_mprop->attrs[COLOR_model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on */ +if (unlikely(var55 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1615); +show_backtrace(1); +} +var53 = var55; +RET_LABEL54:(void)0; +} +} +{ +{ /* Inline model#MClassDef#mclass (var53) on */ +var58 = var53->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on */ +if (unlikely(var58 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 492); +show_backtrace(1); +} +var56 = var58; +RET_LABEL57:(void)0; +} +} +{ +{ /* Inline model#MClassType#mclass (var_mtype) on */ +var61 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on */ +if (unlikely(var61 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986); +show_backtrace(1); +} +var59 = var61; +RET_LABEL60:(void)0; +} +} +{ +{ /* Inline kernel#Object#!= (var56,var59) on */ +var_other = var59; +{ +var66 = ((short int (*)(val*, val*))(var56->class->vft[COLOR_kernel__Object___61d_61d]))(var56, var_other) /* == on */; +var65 = var66; +} +var67 = !var65; +var63 = var67; +goto RET_LABEL64; +RET_LABEL64:(void)0; +} +var62 = var63; +} +var47 = var62; +} +var39 = var47; +} else { +var39 = var_46; } +if (var39){ +goto BREAK_label; +} else { +} +var68 = NULL; if (var_res == NULL) { -fprintf(stderr, "Runtime error: %s", "Reciever is null"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 221); -show_backtrace(1); -} else { -var70 = ((val* (*)(val*))(var_res->class->vft[COLOR_model__MProperty__full_name]))(var_res) /* full_name on */; -} -var71 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var71 = array_instance Array[Object] */ -var72 = 8; -var73 = NEW_array__NativeArray(var72, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var73)->values[0] = (val*) var50; -((struct instance_array__NativeArray*)var73)->values[1] = (val*) var_name; -((struct instance_array__NativeArray*)var73)->values[2] = (val*) var55; -((struct instance_array__NativeArray*)var73)->values[3] = (val*) var_mtype; -((struct instance_array__NativeArray*)var73)->values[4] = (val*) var60; -((struct instance_array__NativeArray*)var73)->values[5] = (val*) var64; -((struct instance_array__NativeArray*)var73)->values[6] = (val*) var66; -((struct instance_array__NativeArray*)var73)->values[7] = (val*) var70; -((void (*)(val*, val*, long))(var71->class->vft[COLOR_array__Array__with_native]))(var71, var73, var72) /* with_native on */; -} -var74 = ((val* (*)(val*))(var71->class->vft[COLOR_string__Object__to_s]))(var71) /* to_s on */; -((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_anode, var74) /* error on */; -var75 = NULL; -var = var75; -goto RET_LABEL; +var69 = 1; /* is null */ +} else { +var69 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_res,var68) on */ +var_other72 = var68; +{ +{ /* Inline kernel#Object#is_same_instance (var_res,var_other72) on */ +var75 = var_res == var_other72; +var73 = var75; +goto RET_LABEL74; +RET_LABEL74:(void)0; +} +} +var70 = var73; +goto RET_LABEL71; +RET_LABEL71:(void)0; +} +var69 = var70; +} +if (var69){ +var_res = var_mprop; +goto BREAK_label; +} else { +} +/* isa MMethod */ +cltype80 = type_model__MMethod.color; +idtype81 = type_model__MMethod.id; +if(cltype80 >= var_res->type->table_size) { +var79 = 0; +} else { +var79 = var_res->type->type_table[cltype80] == idtype81; +} +var_82 = var79; +if (var79){ +/* isa MMethod */ +cltype84 = type_model__MMethod.color; +idtype85 = type_model__MMethod.id; +if(cltype84 >= var_mprop->type->table_size) { +var83 = 0; +} else { +var83 = var_mprop->type->type_table[cltype84] == idtype85; +} +var78 = var83; +} else { +var78 = var_82; +} +var_86 = var78; +if (var78){ +{ +{ /* Inline model#MMethod#is_init (var_res) on */ +var89 = var_res->attrs[COLOR_model__MMethod___is_init].s; /* _is_init on */ +var87 = var89; +RET_LABEL88:(void)0; +} +} +var77 = var87; +} else { +var77 = var_86; +} +var_90 = var77; +if (var77){ +{ +{ /* Inline model#MMethod#is_init (var_mprop) on */ +var93 = var_mprop->attrs[COLOR_model__MMethod___is_init].s; /* _is_init on */ +var91 = var93; +RET_LABEL92:(void)0; +} +} +var76 = var91; +} else { +var76 = var_90; +} +if (var76){ +{ +{ /* Inline model#MProperty#intro_mclassdef (var_res) on */ +var96 = var_res->attrs[COLOR_model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on */ +if (unlikely(var96 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1615); +show_backtrace(1); +} +var94 = var96; +RET_LABEL95:(void)0; +} +} +{ +{ /* Inline model#MClassDef#bound_mtype (var94) on */ +var99 = var94->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on */ +if (unlikely(var99 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495); +show_backtrace(1); +} +var97 = var99; +RET_LABEL98:(void)0; +} +} +var_restype = var97; +{ +{ /* Inline model#MProperty#intro_mclassdef (var_mprop) on */ +var102 = var_mprop->attrs[COLOR_model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on */ +if (unlikely(var102 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1615); +show_backtrace(1); +} +var100 = var102; +RET_LABEL101:(void)0; +} +} +{ +{ /* Inline model#MClassDef#bound_mtype (var100) on */ +var105 = var100->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on */ +if (unlikely(var105 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495); +show_backtrace(1); +} +var103 = var105; +RET_LABEL104:(void)0; +} +} +var_mproptype = var103; +var106 = NULL; +{ +var107 = model__MType__is_subtype(var_mproptype, var_mmodule, var106, var_restype); +} +if (var107){ +var_res = var_mprop; +goto BREAK_label; +} else { +} +} else { +} +var108 = NULL; +if (var_ress == NULL) { +var109 = 1; /* is null */ +} else { +var109 = 0; /* arg is null but recv is not */ +} +if (0) { +var110 = array__Array___61d_61d(var_ress, var108); +var109 = var110; +} +if (var109){ +var111 = NEW_array__Array(&type_array__Arraymodel__MProperty); +{ +((void (*)(val*))(var111->class->vft[COLOR_kernel__Object__init]))(var111) /* init on */; +} +var_ress = var111; +{ +array__Array__add(var_ress, var_res); /* Direct call array#Array#add on */ +} +} else { +} +{ +array__Array__add(var_ress, var_mprop); /* Direct call array#Array#add on */ +} +BREAK_label: (void)0; +{ +array__ArrayIterator__next(var_23); /* Direct call array#ArrayIterator#next on */ +} +} else { +goto BREAK_label112; +} +} +BREAK_label112: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_23) on */ +RET_LABEL113:(void)0; +} +} +var116 = NULL; +if (var_ress == NULL) { +var117 = 0; /* is null */ +} else { +var117 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_ress,var116) on */ +var_other = var116; +{ +var121 = ((short int (*)(val*, val*))(var_ress->class->vft[COLOR_kernel__Object___61d_61d]))(var_ress, var_other) /* == on */; +var120 = var121; +} +var122 = !var120; +var118 = var122; +goto RET_LABEL119; +RET_LABEL119:(void)0; +} +var117 = var118; +} +var_123 = var117; +if (var117){ +/* isa MMethod */ +cltype125 = type_model__MMethod.color; +idtype126 = type_model__MMethod.id; +if(var_res == NULL) { +var124 = 0; +} else { +if(cltype125 >= var_res->type->table_size) { +var124 = 0; +} else { +var124 = var_res->type->type_table[cltype125] == idtype126; +} +} +var115 = var124; +} else { +var115 = var_123; +} +var_127 = var115; +if (var115){ +{ +{ /* Inline model#MMethod#is_init (var_res) on */ +var130 = var_res->attrs[COLOR_model__MMethod___is_init].s; /* _is_init on */ +var128 = var130; +RET_LABEL129:(void)0; +} +} +var114 = var128; +} else { +var114 = var_127; +} +if (var114){ +{ +{ /* Inline model#MProperty#intro_mclassdef (var_res) on */ +var133 = var_res->attrs[COLOR_model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on */ +if (unlikely(var133 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1615); +show_backtrace(1); +} +var131 = var133; +RET_LABEL132:(void)0; +} +} +{ +{ /* Inline model#MClassDef#bound_mtype (var131) on */ +var136 = var131->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on */ +if (unlikely(var136 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495); +show_backtrace(1); +} +var134 = var136; +RET_LABEL135:(void)0; +} +} +var_restype137 = var134; +var138 = NEW_array__Array(&type_array__Arraymodel__MProperty); +{ +((void (*)(val*))(var138->class->vft[COLOR_kernel__Object__init]))(var138) /* init on */; +} +var_ress2 = var138; +var_139 = var_ress; +{ +var140 = array__AbstractArrayRead__iterator(var_139); +} +var_141 = var140; +for(;;) { +{ +var142 = array__ArrayIterator__is_ok(var_141); +} +if (var142){ +{ +var143 = array__ArrayIterator__item(var_141); +} +var_mprop144 = var143; +{ +{ /* Inline model#MProperty#intro_mclassdef (var_mprop144) on */ +var147 = var_mprop144->attrs[COLOR_model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on */ +if (unlikely(var147 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1615); +show_backtrace(1); +} +var145 = var147; +RET_LABEL146:(void)0; +} +} +{ +{ /* Inline model#MClassDef#bound_mtype (var145) on */ +var150 = var145->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on */ +if (unlikely(var150 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495); +show_backtrace(1); +} +var148 = var150; +RET_LABEL149:(void)0; +} +} +var_mproptype151 = var148; +var152 = NULL; +{ +var153 = model__MType__is_subtype(var_restype137, var_mmodule, var152, var_mproptype151); +} +var154 = !var153; +if (var154){ +{ +array__Array__add(var_ress2, var_mprop144); /* Direct call array#Array#add on */ +} +} else { +/* isa MMethod */ +cltype157 = type_model__MMethod.color; +idtype158 = type_model__MMethod.id; +if(cltype157 >= var_mprop144->type->table_size) { +var156 = 0; +} else { +var156 = var_mprop144->type->type_table[cltype157] == idtype158; +} +var159 = !var156; +var_160 = var159; +if (var159){ +var155 = var_160; +} else { +{ +{ /* Inline model#MMethod#is_init (var_mprop144) on */ +var163 = var_mprop144->attrs[COLOR_model__MMethod___is_init].s; /* _is_init on */ +var161 = var163; +RET_LABEL162:(void)0; +} +} +var164 = !var161; +var155 = var164; +} +if (var155){ +{ +array__Array__add(var_ress2, var_mprop144); /* Direct call array#Array#add on */ +} +} else { +} +} +{ +array__ArrayIterator__next(var_141); /* Direct call array#ArrayIterator#next on */ +} +} else { +goto BREAK_label165; +} +} +BREAK_label165: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_141) on */ +RET_LABEL166:(void)0; +} +} +{ +var167 = array__AbstractArrayRead__is_empty(var_ress2); +} +if (var167){ +var168 = NULL; +var_ress = var168; +} else { +var_ress = var_ress2; +{ +array__Array__add(var_ress, var_res); /* Direct call array#Array#add on */ +} +} } else { } -CONTINUE_label76: (void)0; -((void (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__next]))(var40) /* next on */; +var169 = NULL; +if (var_ress == NULL) { +var170 = 0; /* is null */ +} else { +var170 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_ress,var169) on */ +var_other = var169; +{ +var174 = ((short int (*)(val*, val*))(var_ress->class->vft[COLOR_kernel__Object___61d_61d]))(var_ress, var_other) /* == on */; +var173 = var174; +} +var175 = !var173; +var171 = var175; +goto RET_LABEL172; +RET_LABEL172:(void)0; +} +var170 = var171; +} +if (var170){ +{ +{ /* Inline array#AbstractArrayRead#length (var_ress) on */ +var178 = var_ress->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on */ +var176 = var178; +RET_LABEL177:(void)0; +} +} +var179 = 1; +{ +{ /* Inline kernel#Int#> (var176,var179) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var182 = 1; /* easy isa OTHER*/ +if (unlikely(!var182)) { +var_class_name = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373); +show_backtrace(1); +} +var185 = var176 > var179; +var180 = var185; +goto RET_LABEL181; +RET_LABEL181:(void)0; +} +} +if (unlikely(!var180)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 281); +show_backtrace(1); +} +var186 = NEW_array__Array(&type_array__Arraystring__String); +{ +((void (*)(val*))(var186->class->vft[COLOR_kernel__Object__init]))(var186) /* init on */; +} +var_s = var186; +var_187 = var_ress; +{ +var188 = array__AbstractArrayRead__iterator(var_187); +} +var_189 = var188; +for(;;) { +{ +var190 = array__ArrayIterator__is_ok(var_189); +} +if (var190){ +{ +var191 = array__ArrayIterator__item(var_189); +} +var_mprop192 = var191; +{ +var193 = model__MProperty__full_name(var_mprop192); +} +{ +array__Array__add(var_s, var193); /* Direct call array#Array#add on */ +} +{ +array__ArrayIterator__next(var_189); /* Direct call array#ArrayIterator#next on */ } -BREAK_label76: (void)0; } else { +goto BREAK_label194; +} +} +BREAK_label194: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_189) on */ +RET_LABEL195:(void)0; +} +} +if (varonce) { +var196 = varonce; +} else { +var197 = "Ambigous property name \'"; +var198 = 24; +var199 = string__NativeString__to_s_with_length(var197, var198); +var196 = var199; +varonce = var196; +} +if (varonce200) { +var201 = varonce200; +} else { +var202 = "\' for "; +var203 = 6; +var204 = string__NativeString__to_s_with_length(var202, var203); +var201 = var204; +varonce200 = var201; +} +if (varonce205) { +var206 = varonce205; +} else { +var207 = "; conflict between "; +var208 = 19; +var209 = string__NativeString__to_s_with_length(var207, var208); +var206 = var209; +varonce205 = var206; +} +if (varonce210) { +var211 = varonce210; +} else { +var212 = " and "; +var213 = 5; +var214 = string__NativeString__to_s_with_length(var212, var213); +var211 = var214; +varonce210 = var211; +} +{ +var215 = string__Collection__join(var_s, var211); +} +var216 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var216 = array_instance Array[Object] */ +var217 = 6; +var218 = NEW_array__NativeArray(var217, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var218)->values[0] = (val*) var196; +((struct instance_array__NativeArray*)var218)->values[1] = (val*) var_name; +((struct instance_array__NativeArray*)var218)->values[2] = (val*) var201; +((struct instance_array__NativeArray*)var218)->values[3] = (val*) var_mtype; +((struct instance_array__NativeArray*)var218)->values[4] = (val*) var206; +((struct instance_array__NativeArray*)var218)->values[5] = (val*) var215; +{ +((void (*)(val*, val*, long))(var216->class->vft[COLOR_array__Array__with_native]))(var216, var218, var217) /* with_native on */; +} +} +{ +var219 = ((val* (*)(val*))(var216->class->vft[COLOR_string__Object__to_s]))(var216) /* to_s on */; +} +{ +modelbuilder__ModelBuilder__error(self, var_anode, var219); /* Direct call modelbuilder#ModelBuilder#error on */ +} +} else { +} +{ +{ /* Inline modelbuilder#ModelBuilder#try_get_mproperty_by_name2_cache (self) on */ +var222 = self->attrs[COLOR_modelbuilder__ModelBuilder___try_get_mproperty_by_name2_cache].val; /* _try_get_mproperty_by_name2_cache on */ +if (unlikely(var222 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _try_get_mproperty_by_name2_cache"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 291); +show_backtrace(1); +} +var220 = var222; +RET_LABEL221:(void)0; +} +} +{ +more_collections__HashMap3___91d_93d_61d(var220, var_mmodule, var_mtype, var_name, var_res); /* Direct call more_collections#HashMap3#[]= on */ } -var77 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mproperty_by_name2_cache]))(self) /* try_get_mproperty_by_name2_cache on */; -((void (*)(val*, val*, val*, val*, val*))(var77->class->vft[COLOR_more_collections__HashMap3___91d_93d_61d]))(var77, var_mmodule, var_mtype, var_name, var_res) /* []= on */; var = var_res; goto RET_LABEL; RET_LABEL:; @@ -1235,10 +2809,10 @@ return var; val* modelbuilder__ModelBuilder__try_get_mproperty_by_name2_cache(val* self) { val* var /* : HashMap3[MModule, MType, String, nullable MProperty] */; val* var1 /* : HashMap3[MModule, MType, String, nullable MProperty] */; -var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___64dtry_get_mproperty_by_name2_cache].val; /* @try_get_mproperty_by_name2_cache on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @try_get_mproperty_by_name2_cache"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 231); +var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___try_get_mproperty_by_name2_cache].val; /* _try_get_mproperty_by_name2_cache on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _try_get_mproperty_by_name2_cache"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 291); show_backtrace(1); } var = var1; @@ -1249,20 +2823,20 @@ return var; val* VIRTUAL_modelbuilder__ModelBuilder__try_get_mproperty_by_name2_cache(val* self) { val* var /* : HashMap3[MModule, MType, String, nullable MProperty] */; val* var1 /* : HashMap3[MModule, MType, String, nullable MProperty] */; -var1 = modelbuilder__ModelBuilder__try_get_mproperty_by_name2_cache(self); -var = var1; -RET_LABEL:; -return var; +val* var3 /* : HashMap3[MModule, MType, String, nullable MProperty] */; +{ /* Inline modelbuilder#ModelBuilder#try_get_mproperty_by_name2_cache (self) on */ +var3 = self->attrs[COLOR_modelbuilder__ModelBuilder___try_get_mproperty_by_name2_cache].val; /* _try_get_mproperty_by_name2_cache on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _try_get_mproperty_by_name2_cache"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 291); +show_backtrace(1); } -/* method modelbuilder#ModelBuilder#try_get_mproperty_by_name2_cache= for (self: ModelBuilder, HashMap3[MModule, MType, String, nullable MProperty]) */ -void modelbuilder__ModelBuilder__try_get_mproperty_by_name2_cache_61d(val* self, val* p0) { -self->attrs[COLOR_modelbuilder__ModelBuilder___64dtry_get_mproperty_by_name2_cache].val = p0; /* @try_get_mproperty_by_name2_cache on */ -RET_LABEL:; +var1 = var3; +RET_LABEL2:(void)0; } -/* method modelbuilder#ModelBuilder#try_get_mproperty_by_name2_cache= for (self: Object, HashMap3[MModule, MType, String, nullable MProperty]) */ -void VIRTUAL_modelbuilder__ModelBuilder__try_get_mproperty_by_name2_cache_61d(val* self, val* p0) { -modelbuilder__ModelBuilder__try_get_mproperty_by_name2_cache_61d(self, p0); +var = var1; RET_LABEL:; +return var; } /* method modelbuilder#ModelBuilder#try_get_mproperty_by_name for (self: ModelBuilder, ANode, MClassDef, String): nullable MProperty */ val* modelbuilder__ModelBuilder__try_get_mproperty_by_name(val* self, val* p0, val* p1, val* p2) { @@ -1271,15 +2845,41 @@ val* var_anode /* var anode: ANode */; val* var_mclassdef /* var mclassdef: MClassDef */; val* var_name /* var name: String */; val* var1 /* : MModule */; -val* var2 /* : MClassType */; -val* var3 /* : nullable MProperty */; +val* var3 /* : MModule */; +val* var4 /* : MClassType */; +val* var6 /* : MClassType */; +val* var7 /* : nullable MProperty */; var_anode = p0; var_mclassdef = p1; var_name = p2; -var1 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mmodule]))(var_mclassdef) /* mmodule on */; -var2 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_mclassdef) /* bound_mtype on */; -var3 = ((val* (*)(val*, val*, val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mproperty_by_name2]))(self, var_anode, var1, var2, var_name) /* try_get_mproperty_by_name2 on */; -var = var3; +{ +{ /* Inline model#MClassDef#mmodule (var_mclassdef) on */ +var3 = var_mclassdef->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} +{ +{ /* Inline model#MClassDef#bound_mtype (var_mclassdef) on */ +var6 = var_mclassdef->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495); +show_backtrace(1); +} +var4 = var6; +RET_LABEL5:(void)0; +} +} +{ +var7 = modelbuilder__ModelBuilder__try_get_mproperty_by_name2(self, var_anode, var1, var4, var_name); +} +var = var7; goto RET_LABEL; RET_LABEL:; return var; @@ -1297,10 +2897,10 @@ return var; val* modelbuilder__ModelBuilder__paths(val* self) { val* var /* : Array[String] */; val* var1 /* : Array[String] */; -var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___64dpaths].val; /* @paths on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @paths"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 240); +var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___paths].val; /* _paths on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _paths"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 300); show_backtrace(1); } var = var1; @@ -1311,397 +2911,333 @@ return var; val* VIRTUAL_modelbuilder__ModelBuilder__paths(val* self) { val* var /* : Array[String] */; val* var1 /* : Array[String] */; -var1 = modelbuilder__ModelBuilder__paths(self); -var = var1; -RET_LABEL:; -return var; +val* var3 /* : Array[String] */; +{ /* Inline modelbuilder#ModelBuilder#paths (self) on */ +var3 = self->attrs[COLOR_modelbuilder__ModelBuilder___paths].val; /* _paths on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _paths"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 300); +show_backtrace(1); } -/* method modelbuilder#ModelBuilder#paths= for (self: ModelBuilder, Array[String]) */ -void modelbuilder__ModelBuilder__paths_61d(val* self, val* p0) { -self->attrs[COLOR_modelbuilder__ModelBuilder___64dpaths].val = p0; /* @paths on */ -RET_LABEL:; +var1 = var3; +RET_LABEL2:(void)0; } -/* method modelbuilder#ModelBuilder#paths= for (self: Object, Array[String]) */ -void VIRTUAL_modelbuilder__ModelBuilder__paths_61d(val* self, val* p0) { -modelbuilder__ModelBuilder__paths_61d(self, p0); +var = var1; RET_LABEL:; +return var; } -/* method modelbuilder#ModelBuilder#get_mmodule_by_name for (self: ModelBuilder, ANode, nullable MModule, String): nullable MModule */ -val* modelbuilder__ModelBuilder__get_mmodule_by_name(val* self, val* p0, val* p1, val* p2) { -val* var /* : nullable MModule */; +/* method modelbuilder#ModelBuilder#search_mmodule_by_name for (self: ModelBuilder, ANode, nullable MGroup, String): nullable ModulePath */ +val* modelbuilder__ModelBuilder__search_mmodule_by_name(val* self, val* p0, val* p1, val* p2) { +val* var /* : nullable ModulePath */; val* var_anode /* var anode: ANode */; -val* var_mmodule /* var mmodule: nullable MModule */; +val* var_mgroup /* var mgroup: nullable MGroup */; val* var_name /* var name: String */; -val* var1 /* : Array[String] */; -val* var_tries /* var tries: Array[String] */; -val* var2 /* : null */; +val* var_c /* var c: nullable MGroup */; +val* var1 /* : null */; +short int var2 /* : Bool */; short int var3 /* : Bool */; -val* var4 /* : nullable MGroup */; -val* var_mgroup /* var mgroup: nullable MGroup */; -val* var5 /* : null */; +val* var_other /* var other: nullable Object */; +short int var5 /* : Bool */; short int var6 /* : Bool */; -val* var7 /* : nullable String */; +short int var7 /* : Bool */; +val* var8 /* : nullable String */; +val* var10 /* : nullable String */; val* var_dirname /* var dirname: nullable String */; -val* var8 /* : null */; -short int var9 /* : Bool */; +val* var11 /* : null */; +short int var12 /* : Bool */; +short int var13 /* : Bool */; static val* varonce; -val* var10 /* : String */; -char* var11 /* : NativeString */; -long var12 /* : Int */; -val* var13 /* : String */; -short int var14 /* : Bool */; -static val* varonce15; -val* var16 /* : String */; -char* var17 /* : NativeString */; -long var18 /* : Int */; -val* var19 /* : String */; +val* var14 /* : String */; +char* var15 /* : NativeString */; +long var16 /* : Int */; +val* var17 /* : FlatString */; +short int var18 /* : Bool */; +static val* varonce19; val* var20 /* : String */; -val* var21 /* : String */; -static val* varonce22; -val* var23 /* : String */; -char* var24 /* : NativeString */; -long var25 /* : Int */; -val* var26 /* : String */; +char* var21 /* : NativeString */; +long var22 /* : Int */; +val* var23 /* : FlatString */; +val* var24 /* : String */; +val* var25 /* : String */; +static val* varonce26; val* var27 /* : String */; +char* var28 /* : NativeString */; +long var29 /* : Int */; +val* var30 /* : FlatString */; +val* var31 /* : String */; val* var_try_file /* var try_file: String */; -short int var28 /* : Bool */; -val* var29 /* : String */; -val* var30 /* : nullable AModule */; -val* var_res /* var res: nullable AModule */; -val* var31 /* : null */; short int var32 /* : Bool */; -val* var33 /* : null */; -val* var34 /* : nullable MModule */; -static val* varonce35; -val* var36 /* : String */; -char* var37 /* : NativeString */; -long var38 /* : Int */; -val* var39 /* : String */; -val* var40 /* : String */; -val* var41 /* : String */; +val* var33 /* : String */; +val* var34 /* : nullable ModulePath */; +val* var_res /* var res: nullable ModulePath */; +val* var35 /* : null */; +short int var36 /* : Bool */; +short int var37 /* : Bool */; +short int var39 /* : Bool */; +short int var40 /* : Bool */; +short int var41 /* : Bool */; static val* varonce42; val* var43 /* : String */; char* var44 /* : NativeString */; long var45 /* : Int */; -val* var46 /* : String */; +val* var46 /* : FlatString */; val* var47 /* : String */; val* var48 /* : String */; static val* varonce49; val* var50 /* : String */; char* var51 /* : NativeString */; long var52 /* : Int */; -val* var53 /* : String */; +val* var53 /* : FlatString */; val* var54 /* : String */; -short int var55 /* : Bool */; +val* var55 /* : String */; static val* varonce56; val* var57 /* : String */; char* var58 /* : NativeString */; long var59 /* : Int */; -val* var60 /* : String */; +val* var60 /* : FlatString */; val* var61 /* : String */; -val* var62 /* : String */; -val* var63 /* : nullable MGroup */; -val* var64 /* : String */; -val* var65 /* : nullable AModule */; -val* var_res66 /* var res: nullable AModule */; -val* var67 /* : null */; +short int var62 /* : Bool */; +val* var63 /* : String */; +val* var64 /* : nullable ModulePath */; +val* var_res65 /* var res: nullable ModulePath */; +val* var66 /* : null */; +short int var67 /* : Bool */; short int var68 /* : Bool */; -val* var69 /* : null */; -val* var70 /* : nullable MModule */; -val* var71 /* : nullable MGroup */; -val* var72 /* : Array[String] */; +short int var70 /* : Bool */; +short int var71 /* : Bool */; +short int var72 /* : Bool */; +val* var73 /* : nullable MGroup */; +val* var75 /* : nullable MGroup */; +val* var76 /* : Array[String] */; +val* var78 /* : Array[String] */; val* var_lookpaths /* var lookpaths: Array[String] */; -short int var73 /* : Bool */; -val* var74 /* : null */; -short int var75 /* : Bool */; -short int var_ /* var : Bool */; -val* var76 /* : nullable MGroup */; -val* var77 /* : null */; -short int var78 /* : Bool */; -val* var79 /* : nullable MGroup */; -val* var80 /* : MProject */; -val* var81 /* : nullable MGroup */; -val* var82 /* : nullable String */; -val* var_dirname83 /* var dirname: nullable String */; -val* var84 /* : null */; +val* var79 /* : null */; +short int var80 /* : Bool */; +short int var81 /* : Bool */; +short int var83 /* : Bool */; +short int var84 /* : Bool */; short int var85 /* : Bool */; -static val* varonce86; -val* var87 /* : String */; -char* var88 /* : NativeString */; -long var89 /* : Int */; -val* var90 /* : String */; -val* var91 /* : String */; -val* var92 /* : String */; -short int var93 /* : Bool */; -short int var94 /* : Bool */; -short int var95 /* : Bool */; -short int var_96 /* var : Bool */; +val* var86 /* : MProject */; +val* var88 /* : MProject */; +val* var89 /* : nullable MGroup */; +val* var91 /* : nullable MGroup */; +val* var92 /* : nullable String */; +val* var94 /* : nullable String */; +val* var_dirname95 /* var dirname: nullable String */; +val* var96 /* : null */; short int var97 /* : Bool */; -val* var98 /* : Array[nullable Object] */; -val* var99 /* : null */; -val* var_candidate /* var candidate: nullable String */; -val* var100 /* : Iterator[nullable Object] */; +short int var98 /* : Bool */; +short int var100 /* : Bool */; short int var101 /* : Bool */; -val* var102 /* : nullable Object */; -val* var_dirname103 /* var dirname: String */; -static val* varonce104; -val* var105 /* : String */; -char* var106 /* : NativeString */; -long var107 /* : Int */; +short int var102 /* : Bool */; +static val* varonce103; +val* var104 /* : String */; +char* var105 /* : NativeString */; +long var106 /* : Int */; +val* var107 /* : FlatString */; val* var108 /* : String */; val* var109 /* : String */; -val* var110 /* : String */; -static val* varonce111; -val* var112 /* : String */; -char* var113 /* : NativeString */; -long var114 /* : Int */; -val* var115 /* : String */; -val* var116 /* : String */; -val* var117 /* : String */; -val* var_try_file118 /* var try_file: String */; +short int var110 /* : Bool */; +short int var111 /* : Bool */; +short int var112 /* : Bool */; +short int var_ /* var : Bool */; +short int var113 /* : Bool */; +val* var114 /* : Array[nullable Object] */; +val* var115 /* : Location */; +val* var116 /* : nullable ModulePath */; +val* var_candidate /* var candidate: nullable ModulePath */; +val* var117 /* : null */; +short int var118 /* : Bool */; short int var119 /* : Bool */; -val* var120 /* : null */; -short int var121 /* : Bool */; +val* var_other121 /* var other: nullable Object */; short int var122 /* : Bool */; -val* var123 /* : String */; -val* var_abs_candidate /* var abs_candidate: String */; -val* var124 /* : String */; -val* var_abs_try_file /* var abs_try_file: String */; -short int var125 /* : Bool */; -static val* varonce126; -val* var127 /* : String */; -char* var128 /* : NativeString */; -long var129 /* : Int */; -val* var130 /* : String */; -static val* varonce131; -val* var132 /* : String */; -char* var133 /* : NativeString */; -long var134 /* : Int */; -val* var135 /* : String */; -static val* varonce136; -val* var137 /* : String */; -char* var138 /* : NativeString */; -long var139 /* : Int */; -val* var140 /* : String */; -val* var141 /* : Array[Object] */; -long var142 /* : Int */; -val* var143 /* : NativeArray[Object] */; +short int var124 /* : Bool */; +val* var125 /* : null */; +short int var126 /* : Bool */; +short int var127 /* : Bool */; +short int var129 /* : Bool */; +short int var130 /* : Bool */; +short int var131 /* : Bool */; +static val* varonce132; +val* var133 /* : String */; +char* var134 /* : NativeString */; +long var135 /* : Int */; +val* var136 /* : FlatString */; +static val* varonce137; +val* var138 /* : String */; +char* var139 /* : NativeString */; +long var140 /* : Int */; +val* var141 /* : FlatString */; +val* var142 /* : String */; val* var144 /* : String */; static val* varonce145; val* var146 /* : String */; char* var147 /* : NativeString */; long var148 /* : Int */; -val* var149 /* : String */; -val* var150 /* : String */; +val* var149 /* : FlatString */; +static val* varonce150; val* var151 /* : String */; -static val* varonce152; -val* var153 /* : String */; -char* var154 /* : NativeString */; -long var155 /* : Int */; -val* var156 /* : String */; -val* var157 /* : String */; -val* var158 /* : String */; -static val* varonce159; -val* var160 /* : String */; -char* var161 /* : NativeString */; -long var162 /* : Int */; -val* var163 /* : String */; -val* var164 /* : String */; -val* var165 /* : String */; -short int var166 /* : Bool */; -val* var167 /* : null */; -short int var168 /* : Bool */; -short int var169 /* : Bool */; -val* var170 /* : String */; -val* var_abs_candidate171 /* var abs_candidate: String */; -val* var172 /* : String */; -val* var_abs_try_file173 /* var abs_try_file: String */; -short int var174 /* : Bool */; -static val* varonce175; -val* var176 /* : String */; -char* var177 /* : NativeString */; -long var178 /* : Int */; +char* var152 /* : NativeString */; +long var153 /* : Int */; +val* var154 /* : FlatString */; +val* var155 /* : String */; +val* var156 /* : Array[Object] */; +long var157 /* : Int */; +val* var158 /* : NativeArray[Object] */; +val* var159 /* : String */; +static val* varonce160; +val* var161 /* : String */; +char* var162 /* : NativeString */; +long var163 /* : Int */; +val* var164 /* : FlatString */; +static val* varonce165; +val* var166 /* : String */; +char* var167 /* : NativeString */; +long var168 /* : Int */; +val* var169 /* : FlatString */; +static val* varonce170; +val* var171 /* : String */; +char* var172 /* : NativeString */; +long var173 /* : Int */; +val* var174 /* : FlatString */; +val* var175 /* : String */; +val* var176 /* : Array[Object] */; +long var177 /* : Int */; +val* var178 /* : NativeArray[Object] */; val* var179 /* : String */; -static val* varonce180; -val* var181 /* : String */; -char* var182 /* : NativeString */; -long var183 /* : Int */; -val* var184 /* : String */; -static val* varonce185; -val* var186 /* : String */; -char* var187 /* : NativeString */; -long var188 /* : Int */; -val* var189 /* : String */; -val* var190 /* : Array[Object] */; -long var191 /* : Int */; -val* var192 /* : NativeArray[Object] */; -val* var193 /* : String */; -val* var195 /* : null */; -short int var196 /* : Bool */; -val* var197 /* : null */; -short int var198 /* : Bool */; -static val* varonce199; -val* var200 /* : String */; -char* var201 /* : NativeString */; -long var202 /* : Int */; -val* var203 /* : String */; -static val* varonce204; -val* var205 /* : String */; -char* var206 /* : NativeString */; -long var207 /* : Int */; -val* var208 /* : String */; -static val* varonce209; -val* var210 /* : String */; -char* var211 /* : NativeString */; -long var212 /* : Int */; -val* var213 /* : String */; -static val* varonce214; -val* var215 /* : String */; -char* var216 /* : NativeString */; -long var217 /* : Int */; -val* var218 /* : String */; -val* var219 /* : String */; -val* var220 /* : Array[Object] */; -long var221 /* : Int */; -val* var222 /* : NativeArray[Object] */; -val* var223 /* : String */; -static val* varonce224; -val* var225 /* : String */; -char* var226 /* : NativeString */; -long var227 /* : Int */; -val* var228 /* : String */; -static val* varonce229; -val* var230 /* : String */; -char* var231 /* : NativeString */; -long var232 /* : Int */; -val* var233 /* : String */; -static val* varonce234; -val* var235 /* : String */; -char* var236 /* : NativeString */; -long var237 /* : Int */; -val* var238 /* : String */; -val* var239 /* : String */; -val* var240 /* : Array[Object] */; -long var241 /* : Int */; -val* var242 /* : NativeArray[Object] */; -val* var243 /* : String */; -val* var244 /* : null */; -val* var245 /* : nullable AModule */; -val* var_res246 /* var res: nullable AModule */; -val* var247 /* : null */; -short int var248 /* : Bool */; -val* var249 /* : null */; -val* var250 /* : nullable MModule */; +val* var180 /* : null */; var_anode = p0; -var_mmodule = p1; +var_mgroup = p1; var_name = p2; -var1 = NEW_array__Array(&type_array__Arraystring__String); -((void (*)(val*))(var1->class->vft[COLOR_array__Array__init]))(var1) /* init on */; -var_tries = var1; -var2 = NULL; -if (var_mmodule == NULL) { -var3 = 0; /* is null */ -} else { -var3 = 1; /* arg is null and recv is not */ -} -if (var3){ -var4 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__mgroup]))(var_mmodule) /* mgroup on */; -var_mgroup = var4; +var_c = var_mgroup; for(;;) { -var5 = NULL; -if (var_mgroup == NULL) { -var6 = 0; /* is null */ +var1 = NULL; +if (var_c == NULL) { +var2 = 0; /* is null */ } else { -var6 = 1; /* arg is null and recv is not */ +var2 = 1; /* arg is null and recv is not */ } -if (!var6) break; -var7 = ((val* (*)(val*))(var_mgroup->class->vft[COLOR_mproject__MGroup__filepath]))(var_mgroup) /* filepath on */; -var_dirname = var7; -var8 = NULL; +if (0) { +{ /* Inline kernel#Object#!= (var_c,var1) on */ +var_other = var1; +{ +var6 = ((short int (*)(val*, val*))(var_c->class->vft[COLOR_kernel__Object___61d_61d]))(var_c, var_other) /* == on */; +var5 = var6; +} +var7 = !var5; +var3 = var7; +goto RET_LABEL4; +RET_LABEL4:(void)0; +} +var2 = var3; +} +if (var2){ +{ +{ /* Inline mproject#MGroup#filepath (var_c) on */ +var10 = var_c->attrs[COLOR_mproject__MGroup___filepath].val; /* _filepath on */ +var8 = var10; +RET_LABEL9:(void)0; +} +} +var_dirname = var8; +var11 = NULL; if (var_dirname == NULL) { -var9 = 1; /* is null */ +var12 = 1; /* is null */ } else { -var9 = 0; /* arg is null but recv is not */ +var12 = 0; /* arg is null but recv is not */ } -if (var9){ +if (0) { +var13 = string__FlatString___61d_61d(var_dirname, var11); +var12 = var13; +} +if (var12){ goto BREAK_label; } else { } if (varonce) { -var10 = varonce; +var14 = varonce; } else { -var11 = ".nit"; -var12 = 4; -var13 = string__NativeString__to_s_with_length(var11, var12); -var10 = var13; -varonce = var10; +var15 = ".nit"; +var16 = 4; +var17 = string__NativeString__to_s_with_length(var15, var16); +var14 = var17; +varonce = var14; } -var14 = ((short int (*)(val*, val*))(var_dirname->class->vft[COLOR_string__AbstractString__has_suffix]))(var_dirname, var10) /* has_suffix on */; -if (var14){ +{ +var18 = string__Text__has_suffix(var_dirname, var14); +} +if (var18){ goto BREAK_label; } else { } -if (varonce15) { -var16 = varonce15; +if (varonce19) { +var20 = varonce19; } else { -var17 = "/"; -var18 = 1; -var19 = string__NativeString__to_s_with_length(var17, var18); -var16 = var19; -varonce15 = var16; +var21 = "/"; +var22 = 1; +var23 = string__NativeString__to_s_with_length(var21, var22); +var20 = var23; +varonce19 = var20; } -var20 = ((val* (*)(val*, val*))(var_dirname->class->vft[COLOR_string__String___43d]))(var_dirname, var16) /* + on */; -var21 = ((val* (*)(val*, val*))(var20->class->vft[COLOR_string__String___43d]))(var20, var_name) /* + on */; -if (varonce22) { -var23 = varonce22; -} else { -var24 = ".nit"; -var25 = 4; -var26 = string__NativeString__to_s_with_length(var24, var25); -var23 = var26; -varonce22 = var23; -} -var27 = ((val* (*)(val*, val*))(var21->class->vft[COLOR_string__String___43d]))(var21, var23) /* + on */; -var_try_file = var27; -((void (*)(val*, val*))(var_tries->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_tries, var_try_file) /* add on */; -var28 = ((short int (*)(val*))(var_try_file->class->vft[COLOR_file__String__file_exists]))(var_try_file) /* file_exists on */; -if (var28){ -var29 = ((val* (*)(val*))(var_try_file->class->vft[COLOR_file__String__simplify_path]))(var_try_file) /* simplify_path on */; -var30 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__load_module]))(self, var29) /* load_module on */; -var_res = var30; -var31 = NULL; -if (var_res == NULL) { -var32 = 1; /* is null */ +{ +var24 = string__FlatString___43d(var_dirname, var20); +} +{ +var25 = string__FlatString___43d(var24, var_name); +} +if (varonce26) { +var27 = varonce26; } else { -var32 = 0; /* arg is null but recv is not */ +var28 = ".nit"; +var29 = 4; +var30 = string__NativeString__to_s_with_length(var28, var29); +var27 = var30; +varonce26 = var27; +} +{ +var31 = string__FlatString___43d(var25, var27); +} +var_try_file = var31; +{ +var32 = file__String__file_exists(var_try_file); } if (var32){ -var33 = NULL; -var = var33; -goto RET_LABEL; +{ +var33 = file__String__simplify_path(var_try_file); +} +{ +var34 = modelbuilder__ModelBuilder__identify_file(self, var33); +} +var_res = var34; +var35 = NULL; +if (var_res == NULL) { +var36 = 0; /* is null */ } else { +var36 = 1; /* arg is null and recv is not */ } -var34 = ((val* (*)(val*))(var_res->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var_res) /* mmodule on */; -if (var34 == NULL) { -fprintf(stderr, "Runtime error: %s", "Cast failed"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 272); +if (0) { +{ /* Inline kernel#Object#!= (var_res,var35) on */ +var_other = var35; +{ +var40 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on */; +var39 = var40; +} +var41 = !var39; +var37 = var41; +goto RET_LABEL38; +RET_LABEL38:(void)0; +} +var36 = var37; +} +if (unlikely(!var36)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 322); show_backtrace(1); } -var = var34; +var = var_res; goto RET_LABEL; } else { } -if (varonce35) { -var36 = varonce35; -} else { -var37 = "/"; -var38 = 1; -var39 = string__NativeString__to_s_with_length(var37, var38); -var36 = var39; -varonce35 = var36; -} -var40 = ((val* (*)(val*, val*))(var_dirname->class->vft[COLOR_string__String___43d]))(var_dirname, var36) /* + on */; -var41 = ((val* (*)(val*, val*))(var40->class->vft[COLOR_string__String___43d]))(var40, var_name) /* + on */; if (varonce42) { var43 = varonce42; } else { @@ -1711,485 +3247,545 @@ var46 = string__NativeString__to_s_with_length(var44, var45); var43 = var46; varonce42 = var43; } -var47 = ((val* (*)(val*, val*))(var41->class->vft[COLOR_string__String___43d]))(var41, var43) /* + on */; -var48 = ((val* (*)(val*, val*))(var47->class->vft[COLOR_string__String___43d]))(var47, var_name) /* + on */; +{ +var47 = string__FlatString___43d(var_dirname, var43); +} +{ +var48 = string__FlatString___43d(var47, var_name); +} if (varonce49) { var50 = varonce49; } else { -var51 = ".nit"; -var52 = 4; +var51 = "/"; +var52 = 1; var53 = string__NativeString__to_s_with_length(var51, var52); var50 = var53; varonce49 = var50; } -var54 = ((val* (*)(val*, val*))(var48->class->vft[COLOR_string__String___43d]))(var48, var50) /* + on */; -var_try_file = var54; -var55 = ((short int (*)(val*))(var_try_file->class->vft[COLOR_file__String__file_exists]))(var_try_file) /* file_exists on */; -if (var55){ +{ +var54 = string__FlatString___43d(var48, var50); +} +{ +var55 = string__FlatString___43d(var54, var_name); +} if (varonce56) { var57 = varonce56; } else { -var58 = "/"; -var59 = 1; +var58 = ".nit"; +var59 = 4; var60 = string__NativeString__to_s_with_length(var58, var59); var57 = var60; varonce56 = var57; } -var61 = ((val* (*)(val*, val*))(var_dirname->class->vft[COLOR_string__String___43d]))(var_dirname, var57) /* + on */; -var62 = ((val* (*)(val*, val*))(var61->class->vft[COLOR_string__String___43d]))(var61, var_name) /* + on */; -var63 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__get_mgroup]))(self, var62) /* get_mgroup on */; -var_mgroup = var63; -var64 = ((val* (*)(val*))(var_try_file->class->vft[COLOR_file__String__simplify_path]))(var_try_file) /* simplify_path on */; -var65 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__load_module]))(self, var64) /* load_module on */; -var_res66 = var65; -var67 = NULL; -if (var_res66 == NULL) { -var68 = 1; /* is null */ -} else { -var68 = 0; /* arg is null but recv is not */ +{ +var61 = string__FlatString___43d(var55, var57); } -if (var68){ -var69 = NULL; -var = var69; -goto RET_LABEL; +var_try_file = var61; +{ +var62 = file__String__file_exists(var_try_file); +} +if (var62){ +{ +var63 = file__String__simplify_path(var_try_file); +} +{ +var64 = modelbuilder__ModelBuilder__identify_file(self, var63); +} +var_res65 = var64; +var66 = NULL; +if (var_res65 == NULL) { +var67 = 0; /* is null */ } else { +var67 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_res65,var66) on */ +var_other = var66; +{ +var71 = ((short int (*)(val*, val*))(var_res65->class->vft[COLOR_kernel__Object___61d_61d]))(var_res65, var_other) /* == on */; +var70 = var71; +} +var72 = !var70; +var68 = var72; +goto RET_LABEL69; +RET_LABEL69:(void)0; } -var70 = ((val* (*)(val*))(var_res66->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var_res66) /* mmodule on */; -if (var70 == NULL) { -fprintf(stderr, "Runtime error: %s", "Cast failed"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 281); +var67 = var68; +} +if (unlikely(!var67)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 330); show_backtrace(1); } -var = var70; +var = var_res65; goto RET_LABEL; } else { } -var71 = ((val* (*)(val*))(var_mgroup->class->vft[COLOR_mproject__MGroup__parent]))(var_mgroup) /* parent on */; -var_mgroup = var71; -CONTINUE_label: (void)0; +{ +{ /* Inline mproject#MGroup#parent (var_c) on */ +var75 = var_c->attrs[COLOR_mproject__MGroup___parent].val; /* _parent on */ +var73 = var75; +RET_LABEL74:(void)0; } -BREAK_label: (void)0; -} else { } -var72 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__paths]))(self) /* paths on */; -var_lookpaths = var72; -var74 = NULL; -if (var_mmodule == NULL) { -var75 = 0; /* is null */ +var_c = var73; } else { -var75 = 1; /* arg is null and recv is not */ +goto BREAK_label; } -var_ = var75; -if (var75){ -var76 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__mgroup]))(var_mmodule) /* mgroup on */; -var77 = NULL; -if (var76 == NULL) { -var78 = 0; /* is null */ -} else { -var78 = 1; /* arg is null and recv is not */ } -var73 = var78; -} else { -var73 = var_; +BREAK_label: (void)0; +{ +{ /* Inline modelbuilder#ModelBuilder#paths (self) on */ +var78 = self->attrs[COLOR_modelbuilder__ModelBuilder___paths].val; /* _paths on */ +if (unlikely(var78 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _paths"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 300); +show_backtrace(1); +} +var76 = var78; +RET_LABEL77:(void)0; } -if (var73){ -var79 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__mgroup]))(var_mmodule) /* mgroup on */; -if (var79 == NULL) { -fprintf(stderr, "Runtime error: %s", "Reciever is null"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 294); +} +var_lookpaths = var76; +var79 = NULL; +if (var_mgroup == NULL) { +var80 = 0; /* is null */ +} else { +var80 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_mgroup,var79) on */ +var_other = var79; +{ +var84 = ((short int (*)(val*, val*))(var_mgroup->class->vft[COLOR_kernel__Object___61d_61d]))(var_mgroup, var_other) /* == on */; +var83 = var84; +} +var85 = !var83; +var81 = var85; +goto RET_LABEL82; +RET_LABEL82:(void)0; +} +var80 = var81; +} +if (var80){ +{ +{ /* Inline mproject#MGroup#mproject (var_mgroup) on */ +var88 = var_mgroup->attrs[COLOR_mproject__MGroup___mproject].val; /* _mproject on */ +if (unlikely(var88 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproject"); +PRINT_ERROR(" (%s:%d)\n", "model/mproject.nit", 60); show_backtrace(1); -} else { -var80 = ((val* (*)(val*))(var79->class->vft[COLOR_mproject__MGroup__mproject]))(var79) /* mproject on */; } -var81 = ((val* (*)(val*))(var80->class->vft[COLOR_mproject__MProject__root]))(var80) /* root on */; -if (var81 == NULL) { -fprintf(stderr, "Runtime error: %s", "Reciever is null"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 294); +var86 = var88; +RET_LABEL87:(void)0; +} +} +{ +{ /* Inline mproject#MProject#root (var86) on */ +var91 = var86->attrs[COLOR_mproject__MProject___root].val; /* _root on */ +var89 = var91; +RET_LABEL90:(void)0; +} +} +if (var89 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 343); show_backtrace(1); } else { -var82 = ((val* (*)(val*))(var81->class->vft[COLOR_mproject__MGroup__filepath]))(var81) /* filepath on */; +{ /* Inline mproject#MGroup#filepath (var89) on */ +if (unlikely(var89 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "model/mproject.nit", 83); +show_backtrace(1); } -var_dirname83 = var82; -var84 = NULL; -if (var_dirname83 == NULL) { -var85 = 0; /* is null */ -} else { -var85 = 1; /* arg is null and recv is not */ +var94 = var89->attrs[COLOR_mproject__MGroup___filepath].val; /* _filepath on */ +var92 = var94; +RET_LABEL93:(void)0; } -if (var85){ -if (varonce86) { -var87 = varonce86; -} else { -var88 = ".."; -var89 = 2; -var90 = string__NativeString__to_s_with_length(var88, var89); -var87 = var90; -varonce86 = var87; } -var91 = ((val* (*)(val*, val*))(var_dirname83->class->vft[COLOR_file__String__join_path]))(var_dirname83, var87) /* join_path on */; -var92 = ((val* (*)(val*))(var91->class->vft[COLOR_file__String__simplify_path]))(var91) /* simplify_path on */; -var_dirname83 = var92; -var94 = ((short int (*)(val*, val*))(var_lookpaths->class->vft[COLOR_abstract_collection__Collection__has]))(var_lookpaths, var_dirname83) /* has on */; -var95 = !var94; -var_96 = var95; -if (var95){ -var97 = ((short int (*)(val*))(var_dirname83->class->vft[COLOR_file__String__file_exists]))(var_dirname83) /* file_exists on */; -var93 = var97; +var_dirname95 = var92; +var96 = NULL; +if (var_dirname95 == NULL) { +var97 = 0; /* is null */ } else { -var93 = var_96; +var97 = 1; /* arg is null and recv is not */ } -if (var93){ -var98 = ((val* (*)(val*))(var_lookpaths->class->vft[COLOR_array__Collection__to_a]))(var_lookpaths) /* to_a on */; -var_lookpaths = var98; -((void (*)(val*, val*))(var_lookpaths->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_lookpaths, var_dirname83) /* add on */; -} else { +if (0) { +{ /* Inline kernel#Object#!= (var_dirname95,var96) on */ +var_other = var96; +{ +var101 = ((short int (*)(val*, val*))(var_dirname95->class->vft[COLOR_kernel__Object___61d_61d]))(var_dirname95, var_other) /* == on */; +var100 = var101; } -} else { +var102 = !var100; +var98 = var102; +goto RET_LABEL99; +RET_LABEL99:(void)0; } -} else { +var97 = var98; } -var99 = NULL; -var_candidate = var99; -var100 = ((val* (*)(val*))(var_lookpaths->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_lookpaths) /* iterator on */; -for(;;) { -var101 = ((short int (*)(val*))(var100->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var100) /* is_ok on */; -if(!var101) break; -var102 = ((val* (*)(val*))(var100->class->vft[COLOR_abstract_collection__Iterator__item]))(var100) /* item on */; -var_dirname103 = var102; -if (varonce104) { -var105 = varonce104; -} else { -var106 = "/"; -var107 = 1; -var108 = string__NativeString__to_s_with_length(var106, var107); -var105 = var108; -varonce104 = var105; -} -var109 = ((val* (*)(val*, val*))(var_dirname103->class->vft[COLOR_string__String___43d]))(var_dirname103, var105) /* + on */; -var110 = ((val* (*)(val*, val*))(var109->class->vft[COLOR_string__String___43d]))(var109, var_name) /* + on */; -if (varonce111) { -var112 = varonce111; +if (var97){ +if (varonce103) { +var104 = varonce103; } else { -var113 = ".nit"; -var114 = 4; -var115 = string__NativeString__to_s_with_length(var113, var114); -var112 = var115; -varonce111 = var112; +var105 = ".."; +var106 = 2; +var107 = string__NativeString__to_s_with_length(var105, var106); +var104 = var107; +varonce103 = var104; } -var116 = ((val* (*)(val*, val*))(var110->class->vft[COLOR_string__String___43d]))(var110, var112) /* + on */; -var117 = ((val* (*)(val*))(var116->class->vft[COLOR_file__String__simplify_path]))(var116) /* simplify_path on */; -var_try_file118 = var117; -((void (*)(val*, val*))(var_tries->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_tries, var_try_file118) /* add on */; -var119 = ((short int (*)(val*))(var_try_file118->class->vft[COLOR_file__String__file_exists]))(var_try_file118) /* file_exists on */; -if (var119){ -var120 = NULL; -if (var_candidate == NULL) { -var121 = 1; /* is null */ -} else { -var121 = 0; /* arg is null but recv is not */ +{ +var108 = file__String__join_path(var_dirname95, var104); } -if (var121){ -var_candidate = var_try_file118; +{ +var109 = file__String__simplify_path(var108); +} +var_dirname95 = var109; +{ +var111 = array__AbstractArrayRead__has(var_lookpaths, var_dirname95); +} +var112 = !var111; +var_ = var112; +if (var112){ +{ +var113 = file__String__file_exists(var_dirname95); +} +var110 = var113; } else { -var122 = ((short int (*)(val*, val*))(var_candidate->class->vft[COLOR_kernel__Object___33d_61d]))(var_candidate, var_try_file118) /* != on */; -if (var122){ -var123 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__module_absolute_path]))(self, var_candidate) /* module_absolute_path on */; -var_abs_candidate = var123; -var124 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__module_absolute_path]))(self, var_try_file118) /* module_absolute_path on */; -var_abs_try_file = var124; -var125 = ((short int (*)(val*, val*))(var_abs_candidate->class->vft[COLOR_kernel__Object___33d_61d]))(var_abs_candidate, var_abs_try_file) /* != on */; -if (var125){ -if (varonce126) { -var127 = varonce126; +var110 = var_; +} +if (var110){ +{ +var114 = array__Collection__to_a(var_lookpaths); +} +var_lookpaths = var114; +{ +array__Array__add(var_lookpaths, var_dirname95); /* Direct call array#Array#add on */ +} } else { -var128 = "Error: conflicting module file for "; -var129 = 35; -var130 = string__NativeString__to_s_with_length(var128, var129); -var127 = var130; -varonce126 = var127; } -if (varonce131) { -var132 = varonce131; } else { -var133 = ": "; -var134 = 2; -var135 = string__NativeString__to_s_with_length(var133, var134); -var132 = var135; -varonce131 = var132; } -if (varonce136) { -var137 = varonce136; } else { -var138 = " "; -var139 = 1; -var140 = string__NativeString__to_s_with_length(var138, var139); -var137 = var140; -varonce136 = var137; } -var141 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var141 = array_instance Array[Object] */ -var142 = 6; -var143 = NEW_array__NativeArray(var142, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var143)->values[0] = (val*) var127; -((struct instance_array__NativeArray*)var143)->values[1] = (val*) var_name; -((struct instance_array__NativeArray*)var143)->values[2] = (val*) var132; -((struct instance_array__NativeArray*)var143)->values[3] = (val*) var_candidate; -((struct instance_array__NativeArray*)var143)->values[4] = (val*) var137; -((struct instance_array__NativeArray*)var143)->values[5] = (val*) var_try_file118; -((void (*)(val*, val*, long))(var141->class->vft[COLOR_array__Array__with_native]))(var141, var143, var142) /* with_native on */; +{ +var115 = ((val* (*)(val*))(var_anode->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_anode) /* hot_location on */; } -var144 = ((val* (*)(val*))(var141->class->vft[COLOR_string__Object__to_s]))(var141) /* to_s on */; -((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_anode, var144) /* error on */; -} else { +{ +var116 = modelbuilder__ModelBuilder__search_module_in_paths(self, var115, var_name, var_lookpaths); } +var_candidate = var116; +var117 = NULL; +if (var_candidate == NULL) { +var118 = 1; /* is null */ } else { +var118 = 0; /* arg is null but recv is not */ } +if (0) { +{ /* Inline kernel#Object#== (var_candidate,var117) on */ +var_other121 = var117; +{ +{ /* Inline kernel#Object#is_same_instance (var_candidate,var_other121) on */ +var124 = var_candidate == var_other121; +var122 = var124; +goto RET_LABEL123; +RET_LABEL123:(void)0; +} +} +var119 = var122; +goto RET_LABEL120; +RET_LABEL120:(void)0; +} +var118 = var119; +} +if (var118){ +var125 = NULL; +if (var_mgroup == NULL) { +var126 = 0; /* is null */ +} else { +var126 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_mgroup,var125) on */ +var_other = var125; +{ +var130 = ((short int (*)(val*, val*))(var_mgroup->class->vft[COLOR_kernel__Object___61d_61d]))(var_mgroup, var_other) /* == on */; +var129 = var130; +} +var131 = !var129; +var127 = var131; +goto RET_LABEL128; +RET_LABEL128:(void)0; +} +var126 = var127; +} +if (var126){ +if (varonce132) { +var133 = varonce132; +} else { +var134 = "Error: cannot find module "; +var135 = 26; +var136 = string__NativeString__to_s_with_length(var134, var135); +var133 = var136; +varonce132 = var133; +} +if (varonce137) { +var138 = varonce137; +} else { +var139 = " from "; +var140 = 6; +var141 = string__NativeString__to_s_with_length(var139, var140); +var138 = var141; +varonce137 = var138; +} +{ +{ /* Inline mproject#MGroup#name (var_mgroup) on */ +var144 = var_mgroup->attrs[COLOR_mproject__MGroup___name].val; /* _name on */ +if (unlikely(var144 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name"); +PRINT_ERROR(" (%s:%d)\n", "model/mproject.nit", 56); +show_backtrace(1); +} +var142 = var144; +RET_LABEL143:(void)0; } -} else { } if (varonce145) { var146 = varonce145; } else { -var147 = "/"; -var148 = 1; +var147 = ". tried "; +var148 = 8; var149 = string__NativeString__to_s_with_length(var147, var148); var146 = var149; varonce145 = var146; } -var150 = ((val* (*)(val*, val*))(var_dirname103->class->vft[COLOR_string__String___43d]))(var_dirname103, var146) /* + on */; -var151 = ((val* (*)(val*, val*))(var150->class->vft[COLOR_string__String___43d]))(var150, var_name) /* + on */; -if (varonce152) { -var153 = varonce152; -} else { -var154 = "/"; -var155 = 1; -var156 = string__NativeString__to_s_with_length(var154, var155); -var153 = var156; -varonce152 = var153; -} -var157 = ((val* (*)(val*, val*))(var151->class->vft[COLOR_string__String___43d]))(var151, var153) /* + on */; -var158 = ((val* (*)(val*, val*))(var157->class->vft[COLOR_string__String___43d]))(var157, var_name) /* + on */; -if (varonce159) { -var160 = varonce159; -} else { -var161 = ".nit"; -var162 = 4; -var163 = string__NativeString__to_s_with_length(var161, var162); -var160 = var163; -varonce159 = var160; -} -var164 = ((val* (*)(val*, val*))(var158->class->vft[COLOR_string__String___43d]))(var158, var160) /* + on */; -var165 = ((val* (*)(val*))(var164->class->vft[COLOR_file__String__simplify_path]))(var164) /* simplify_path on */; -var_try_file118 = var165; -var166 = ((short int (*)(val*))(var_try_file118->class->vft[COLOR_file__String__file_exists]))(var_try_file118) /* file_exists on */; -if (var166){ -var167 = NULL; -if (var_candidate == NULL) { -var168 = 1; /* is null */ +if (varonce150) { +var151 = varonce150; } else { -var168 = 0; /* arg is null but recv is not */ +var152 = ", "; +var153 = 2; +var154 = string__NativeString__to_s_with_length(var152, var153); +var151 = var154; +varonce150 = var151; +} +{ +var155 = string__Collection__join(var_lookpaths, var151); +} +var156 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var156 = array_instance Array[Object] */ +var157 = 6; +var158 = NEW_array__NativeArray(var157, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var158)->values[0] = (val*) var133; +((struct instance_array__NativeArray*)var158)->values[1] = (val*) var_name; +((struct instance_array__NativeArray*)var158)->values[2] = (val*) var138; +((struct instance_array__NativeArray*)var158)->values[3] = (val*) var142; +((struct instance_array__NativeArray*)var158)->values[4] = (val*) var146; +((struct instance_array__NativeArray*)var158)->values[5] = (val*) var155; +{ +((void (*)(val*, val*, long))(var156->class->vft[COLOR_array__Array__with_native]))(var156, var158, var157) /* with_native on */; +} +} +{ +var159 = ((val* (*)(val*))(var156->class->vft[COLOR_string__Object__to_s]))(var156) /* to_s on */; +} +{ +modelbuilder__ModelBuilder__error(self, var_anode, var159); /* Direct call modelbuilder#ModelBuilder#error on */ } -if (var168){ -var_candidate = var_try_file118; } else { -var169 = ((short int (*)(val*, val*))(var_candidate->class->vft[COLOR_kernel__Object___33d_61d]))(var_candidate, var_try_file118) /* != on */; -if (var169){ -var170 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__module_absolute_path]))(self, var_candidate) /* module_absolute_path on */; -var_abs_candidate171 = var170; -var172 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__module_absolute_path]))(self, var_try_file118) /* module_absolute_path on */; -var_abs_try_file173 = var172; -var174 = ((short int (*)(val*, val*))(var_abs_candidate171->class->vft[COLOR_kernel__Object___33d_61d]))(var_abs_candidate171, var_abs_try_file173) /* != on */; -if (var174){ -if (varonce175) { -var176 = varonce175; +if (varonce160) { +var161 = varonce160; } else { -var177 = "Error: conflicting module file for "; -var178 = 35; -var179 = string__NativeString__to_s_with_length(var177, var178); -var176 = var179; -varonce175 = var176; +var162 = "Error: cannot find module "; +var163 = 26; +var164 = string__NativeString__to_s_with_length(var162, var163); +var161 = var164; +varonce160 = var161; } -if (varonce180) { -var181 = varonce180; +if (varonce165) { +var166 = varonce165; } else { -var182 = ": "; -var183 = 2; -var184 = string__NativeString__to_s_with_length(var182, var183); -var181 = var184; -varonce180 = var181; +var167 = ". tried "; +var168 = 8; +var169 = string__NativeString__to_s_with_length(var167, var168); +var166 = var169; +varonce165 = var166; } -if (varonce185) { -var186 = varonce185; +if (varonce170) { +var171 = varonce170; } else { -var187 = " "; -var188 = 1; -var189 = string__NativeString__to_s_with_length(var187, var188); -var186 = var189; -varonce185 = var186; +var172 = ", "; +var173 = 2; +var174 = string__NativeString__to_s_with_length(var172, var173); +var171 = var174; +varonce170 = var171; } -var190 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var190 = array_instance Array[Object] */ -var191 = 6; -var192 = NEW_array__NativeArray(var191, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var192)->values[0] = (val*) var176; -((struct instance_array__NativeArray*)var192)->values[1] = (val*) var_name; -((struct instance_array__NativeArray*)var192)->values[2] = (val*) var181; -((struct instance_array__NativeArray*)var192)->values[3] = (val*) var_candidate; -((struct instance_array__NativeArray*)var192)->values[4] = (val*) var186; -((struct instance_array__NativeArray*)var192)->values[5] = (val*) var_try_file118; -((void (*)(val*, val*, long))(var190->class->vft[COLOR_array__Array__with_native]))(var190, var192, var191) /* with_native on */; +{ +var175 = string__Collection__join(var_lookpaths, var171); } -var193 = ((val* (*)(val*))(var190->class->vft[COLOR_string__Object__to_s]))(var190) /* to_s on */; -((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_anode, var193) /* error on */; -} else { +var176 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var176 = array_instance Array[Object] */ +var177 = 4; +var178 = NEW_array__NativeArray(var177, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var178)->values[0] = (val*) var161; +((struct instance_array__NativeArray*)var178)->values[1] = (val*) var_name; +((struct instance_array__NativeArray*)var178)->values[2] = (val*) var166; +((struct instance_array__NativeArray*)var178)->values[3] = (val*) var175; +{ +((void (*)(val*, val*, long))(var176->class->vft[COLOR_array__Array__with_native]))(var176, var178, var177) /* with_native on */; } -} else { } +{ +var179 = ((val* (*)(val*))(var176->class->vft[COLOR_string__Object__to_s]))(var176) /* to_s on */; +} +{ +modelbuilder__ModelBuilder__error(self, var_anode, var179); /* Direct call modelbuilder#ModelBuilder#error on */ } +} +var180 = NULL; +var = var180; +goto RET_LABEL; } else { } -CONTINUE_label194: (void)0; -((void (*)(val*))(var100->class->vft[COLOR_abstract_collection__Iterator__next]))(var100) /* next on */; +var = var_candidate; +goto RET_LABEL; +RET_LABEL:; +return var; } -BREAK_label194: (void)0; -var195 = NULL; -if (var_candidate == NULL) { -var196 = 1; /* is null */ +/* method modelbuilder#ModelBuilder#search_mmodule_by_name for (self: Object, ANode, nullable MGroup, String): nullable ModulePath */ +val* VIRTUAL_modelbuilder__ModelBuilder__search_mmodule_by_name(val* self, val* p0, val* p1, val* p2) { +val* var /* : nullable ModulePath */; +val* var1 /* : nullable ModulePath */; +var1 = modelbuilder__ModelBuilder__search_mmodule_by_name(self, p0, p1, p2); +var = var1; +RET_LABEL:; +return var; +} +/* method modelbuilder#ModelBuilder#get_mmodule_by_name for (self: ModelBuilder, ANode, nullable MGroup, String): nullable MModule */ +val* modelbuilder__ModelBuilder__get_mmodule_by_name(val* self, val* p0, val* p1, val* p2) { +val* var /* : nullable MModule */; +val* var_anode /* var anode: ANode */; +val* var_mgroup /* var mgroup: nullable MGroup */; +val* var_name /* var name: String */; +val* var1 /* : nullable ModulePath */; +val* var_path /* var path: nullable ModulePath */; +val* var2 /* : null */; +short int var3 /* : Bool */; +short int var4 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var6 /* : Bool */; +short int var8 /* : Bool */; +val* var9 /* : null */; +val* var10 /* : String */; +val* var12 /* : String */; +val* var13 /* : nullable AModule */; +val* var_res /* var res: nullable AModule */; +val* var14 /* : null */; +short int var15 /* : Bool */; +short int var16 /* : Bool */; +short int var18 /* : Bool */; +short int var20 /* : Bool */; +val* var21 /* : null */; +val* var22 /* : nullable MModule */; +val* var24 /* : nullable MModule */; +var_anode = p0; +var_mgroup = p1; +var_name = p2; +{ +var1 = modelbuilder__ModelBuilder__search_mmodule_by_name(self, var_anode, var_mgroup, var_name); +} +var_path = var1; +var2 = NULL; +if (var_path == NULL) { +var3 = 1; /* is null */ } else { -var196 = 0; /* arg is null but recv is not */ +var3 = 0; /* arg is null but recv is not */ } -if (var196){ -var197 = NULL; -if (var_mmodule == NULL) { -var198 = 0; /* is null */ -} else { -var198 = 1; /* arg is null and recv is not */ -} -if (var198){ -if (varonce199) { -var200 = varonce199; -} else { -var201 = "Error: cannot find module "; -var202 = 26; -var203 = string__NativeString__to_s_with_length(var201, var202); -var200 = var203; -varonce199 = var200; -} -if (varonce204) { -var205 = varonce204; -} else { -var206 = " from "; -var207 = 6; -var208 = string__NativeString__to_s_with_length(var206, var207); -var205 = var208; -varonce204 = var205; -} -if (varonce209) { -var210 = varonce209; -} else { -var211 = ". tried "; -var212 = 8; -var213 = string__NativeString__to_s_with_length(var211, var212); -var210 = var213; -varonce209 = var210; -} -if (varonce214) { -var215 = varonce214; -} else { -var216 = ", "; -var217 = 2; -var218 = string__NativeString__to_s_with_length(var216, var217); -var215 = var218; -varonce214 = var215; -} -var219 = ((val* (*)(val*, val*))(var_tries->class->vft[COLOR_string__Collection__join]))(var_tries, var215) /* join on */; -var220 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var220 = array_instance Array[Object] */ -var221 = 6; -var222 = NEW_array__NativeArray(var221, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var222)->values[0] = (val*) var200; -((struct instance_array__NativeArray*)var222)->values[1] = (val*) var_name; -((struct instance_array__NativeArray*)var222)->values[2] = (val*) var205; -((struct instance_array__NativeArray*)var222)->values[3] = (val*) var_mmodule; -((struct instance_array__NativeArray*)var222)->values[4] = (val*) var210; -((struct instance_array__NativeArray*)var222)->values[5] = (val*) var219; -((void (*)(val*, val*, long))(var220->class->vft[COLOR_array__Array__with_native]))(var220, var222, var221) /* with_native on */; -} -var223 = ((val* (*)(val*))(var220->class->vft[COLOR_string__Object__to_s]))(var220) /* to_s on */; -((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_anode, var223) /* error on */; -} else { -if (varonce224) { -var225 = varonce224; -} else { -var226 = "Error: cannot find module "; -var227 = 26; -var228 = string__NativeString__to_s_with_length(var226, var227); -var225 = var228; -varonce224 = var225; -} -if (varonce229) { -var230 = varonce229; -} else { -var231 = ". tried "; -var232 = 8; -var233 = string__NativeString__to_s_with_length(var231, var232); -var230 = var233; -varonce229 = var230; -} -if (varonce234) { -var235 = varonce234; -} else { -var236 = ", "; -var237 = 2; -var238 = string__NativeString__to_s_with_length(var236, var237); -var235 = var238; -varonce234 = var235; -} -var239 = ((val* (*)(val*, val*))(var_tries->class->vft[COLOR_string__Collection__join]))(var_tries, var235) /* join on */; -var240 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var240 = array_instance Array[Object] */ -var241 = 4; -var242 = NEW_array__NativeArray(var241, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var242)->values[0] = (val*) var225; -((struct instance_array__NativeArray*)var242)->values[1] = (val*) var_name; -((struct instance_array__NativeArray*)var242)->values[2] = (val*) var230; -((struct instance_array__NativeArray*)var242)->values[3] = (val*) var239; -((void (*)(val*, val*, long))(var240->class->vft[COLOR_array__Array__with_native]))(var240, var242, var241) /* with_native on */; -} -var243 = ((val* (*)(val*))(var240->class->vft[COLOR_string__Object__to_s]))(var240) /* to_s on */; -((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_anode, var243) /* error on */; -} -var244 = NULL; -var = var244; +if (0) { +{ /* Inline kernel#Object#== (var_path,var2) on */ +var_other = var2; +{ +{ /* Inline kernel#Object#is_same_instance (var_path,var_other) on */ +var8 = var_path == var_other; +var6 = var8; +goto RET_LABEL7; +RET_LABEL7:(void)0; +} +} +var4 = var6; +goto RET_LABEL5; +RET_LABEL5:(void)0; +} +var3 = var4; +} +if (var3){ +var9 = NULL; +var = var9; goto RET_LABEL; } else { } -var245 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__load_module]))(self, var_candidate) /* load_module on */; -var_res246 = var245; -var247 = NULL; -if (var_res246 == NULL) { -var248 = 1; /* is null */ +{ +{ /* Inline modelbuilder#ModulePath#filepath (var_path) on */ +var12 = var_path->attrs[COLOR_modelbuilder__ModulePath___filepath].val; /* _filepath on */ +if (unlikely(var12 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _filepath"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 773); +show_backtrace(1); +} +var10 = var12; +RET_LABEL11:(void)0; +} +} +{ +var13 = modelbuilder__ModelBuilder__load_module(self, var10); +} +var_res = var13; +var14 = NULL; +if (var_res == NULL) { +var15 = 1; /* is null */ } else { -var248 = 0; /* arg is null but recv is not */ +var15 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_res,var14) on */ +var_other = var14; +{ +{ /* Inline kernel#Object#is_same_instance (var_res,var_other) on */ +var20 = var_res == var_other; +var18 = var20; +goto RET_LABEL19; +RET_LABEL19:(void)0; } -if (var248){ -var249 = NULL; -var = var249; +} +var16 = var18; +goto RET_LABEL17; +RET_LABEL17:(void)0; +} +var15 = var16; +} +if (var15){ +var21 = NULL; +var = var21; goto RET_LABEL; } else { } -var250 = ((val* (*)(val*))(var_res246->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var_res246) /* mmodule on */; -if (var250 == NULL) { -fprintf(stderr, "Runtime error: %s", "Cast failed"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 344); +{ +{ /* Inline modelbuilder#AModule#mmodule (var_res) on */ +var24 = var_res->attrs[COLOR_modelbuilder__AModule___mmodule].val; /* _mmodule on */ +var22 = var24; +RET_LABEL23:(void)0; +} +} +if (unlikely(var22 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Cast failed"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 376); show_backtrace(1); } -var = var250; +var = var22; goto RET_LABEL; RET_LABEL:; return var; } -/* method modelbuilder#ModelBuilder#get_mmodule_by_name for (self: Object, ANode, nullable MModule, String): nullable MModule */ +/* method modelbuilder#ModelBuilder#get_mmodule_by_name for (self: Object, ANode, nullable MGroup, String): nullable MModule */ val* VIRTUAL_modelbuilder__ModelBuilder__get_mmodule_by_name(val* self, val* p0, val* p1, val* p2) { val* var /* : nullable MModule */; val* var1 /* : nullable MModule */; @@ -2198,210 +3794,271 @@ var = var1; RET_LABEL:; return var; } -/* method modelbuilder#ModelBuilder#identified_files for (self: ModelBuilder): HashMap[String, nullable ModulePath] */ -val* modelbuilder__ModelBuilder__identified_files(val* self) { -val* var /* : HashMap[String, nullable ModulePath] */; -val* var1 /* : HashMap[String, nullable ModulePath] */; -var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___64didentified_files].val; /* @identified_files on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @identified_files"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 347); -show_backtrace(1); -} -var = var1; -RET_LABEL:; -return var; -} -/* method modelbuilder#ModelBuilder#identified_files for (self: Object): HashMap[String, nullable ModulePath] */ -val* VIRTUAL_modelbuilder__ModelBuilder__identified_files(val* self) { -val* var /* : HashMap[String, nullable ModulePath] */; -val* var1 /* : HashMap[String, nullable ModulePath] */; -var1 = modelbuilder__ModelBuilder__identified_files(self); -var = var1; -RET_LABEL:; -return var; -} -/* method modelbuilder#ModelBuilder#identified_files= for (self: ModelBuilder, HashMap[String, nullable ModulePath]) */ -void modelbuilder__ModelBuilder__identified_files_61d(val* self, val* p0) { -self->attrs[COLOR_modelbuilder__ModelBuilder___64didentified_files].val = p0; /* @identified_files on */ -RET_LABEL:; -} -/* method modelbuilder#ModelBuilder#identified_files= for (self: Object, HashMap[String, nullable ModulePath]) */ -void VIRTUAL_modelbuilder__ModelBuilder__identified_files_61d(val* self, val* p0) { -modelbuilder__ModelBuilder__identified_files_61d(self, p0); -RET_LABEL:; -} -/* method modelbuilder#ModelBuilder#identify_file for (self: ModelBuilder, String): nullable ModulePath */ -val* modelbuilder__ModelBuilder__identify_file(val* self, val* p0) { +/* method modelbuilder#ModelBuilder#search_module_in_paths for (self: ModelBuilder, nullable Location, String, Collection[String]): nullable ModulePath */ +val* modelbuilder__ModelBuilder__search_module_in_paths(val* self, val* p0, val* p1, val* p2) { val* var /* : nullable ModulePath */; -val* var_path /* var path: String */; -short int var1 /* : Bool */; -short int var2 /* : Bool */; -val* var3 /* : ToolContext */; -val* var4 /* : null */; +val* var_location /* var location: nullable Location */; +val* var_name /* var name: String */; +val* var_lookpaths /* var lookpaths: Collection[String] */; +val* var1 /* : null */; +val* var_candidate /* var candidate: nullable String */; +val* var_ /* var : Collection[String] */; +val* var2 /* : Iterator[nullable Object] */; +val* var_3 /* var : Iterator[String] */; +short int var4 /* : Bool */; +val* var5 /* : nullable Object */; +val* var_dirname /* var dirname: String */; static val* varonce; -val* var5 /* : String */; -char* var6 /* : NativeString */; -long var7 /* : Int */; -val* var8 /* : String */; -static val* varonce9; +val* var6 /* : String */; +char* var7 /* : NativeString */; +long var8 /* : Int */; +val* var9 /* : FlatString */; val* var10 /* : String */; -char* var11 /* : NativeString */; -long var12 /* : Int */; +val* var11 /* : String */; +static val* varonce12; val* var13 /* : String */; -val* var14 /* : Array[Object] */; +char* var14 /* : NativeString */; long var15 /* : Int */; -val* var16 /* : NativeArray[Object] */; +val* var16 /* : FlatString */; val* var17 /* : String */; -val* var18 /* : null */; -static val* varonce19; -val* var20 /* : String */; -char* var21 /* : NativeString */; -long var22 /* : Int */; -val* var23 /* : String */; -val* var24 /* : String */; -val* var_pn /* var pn: String */; -val* var25 /* : String */; -val* var_rp /* var rp: String */; -val* var26 /* : HashMap[String, nullable ModulePath] */; +val* var18 /* : String */; +val* var_try_file /* var try_file: String */; +short int var19 /* : Bool */; +val* var20 /* : null */; +short int var21 /* : Bool */; +short int var22 /* : Bool */; +short int var23 /* : Bool */; +short int var24 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var26 /* : Bool */; short int var27 /* : Bool */; -val* var28 /* : HashMap[String, nullable ModulePath] */; -val* var29 /* : nullable Object */; -static val* varonce30; -val* var31 /* : String */; -char* var32 /* : NativeString */; -long var33 /* : Int */; -val* var34 /* : String */; -val* var35 /* : String */; -val* var36 /* : String */; -val* var_mgrouppath /* var mgrouppath: String */; -val* var37 /* : nullable MGroup */; -val* var_mgroup /* var mgroup: nullable MGroup */; -val* var38 /* : null */; -short int var39 /* : Bool */; -val* var40 /* : MProject */; -val* var41 /* : Model */; -val* var_mproject /* var mproject: MProject */; -val* var42 /* : MGroup */; -val* var43 /* : null */; -val* var44 /* : ToolContext */; +short int var28 /* : Bool */; +val* var29 /* : String */; +val* var_abs_candidate /* var abs_candidate: String */; +val* var30 /* : String */; +val* var_abs_try_file /* var abs_try_file: String */; +short int var31 /* : Bool */; +short int var32 /* : Bool */; +short int var34 /* : Bool */; +short int var35 /* : Bool */; +short int var36 /* : Bool */; +val* var37 /* : ToolContext */; +val* var39 /* : ToolContext */; +static val* varonce40; +val* var41 /* : String */; +char* var42 /* : NativeString */; +long var43 /* : Int */; +val* var44 /* : FlatString */; static val* varonce45; val* var46 /* : String */; char* var47 /* : NativeString */; long var48 /* : Int */; -val* var49 /* : String */; +val* var49 /* : FlatString */; static val* varonce50; val* var51 /* : String */; char* var52 /* : NativeString */; long var53 /* : Int */; -val* var54 /* : String */; +val* var54 /* : FlatString */; val* var55 /* : Array[Object] */; long var56 /* : Int */; val* var57 /* : NativeArray[Object] */; val* var58 /* : String */; -long var59 /* : Int */; -val* var60 /* : ModulePath */; -val* var_res /* var res: ModulePath */; -val* var61 /* : HashMap[String, nullable ModulePath] */; -var_path = p0; -var1 = ((short int (*)(val*))(var_path->class->vft[COLOR_file__String__file_exists]))(var_path) /* file_exists on */; -var2 = !var1; -if (var2){ -var3 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on */; -var4 = NULL; +static val* varonce59; +val* var60 /* : String */; +char* var61 /* : NativeString */; +long var62 /* : Int */; +val* var63 /* : FlatString */; +val* var64 /* : String */; +val* var65 /* : String */; +static val* varonce66; +val* var67 /* : String */; +char* var68 /* : NativeString */; +long var69 /* : Int */; +val* var70 /* : FlatString */; +val* var71 /* : String */; +val* var72 /* : String */; +static val* varonce73; +val* var74 /* : String */; +char* var75 /* : NativeString */; +long var76 /* : Int */; +val* var77 /* : FlatString */; +val* var78 /* : String */; +val* var79 /* : String */; +short int var80 /* : Bool */; +val* var81 /* : null */; +short int var82 /* : Bool */; +short int var83 /* : Bool */; +short int var84 /* : Bool */; +short int var85 /* : Bool */; +short int var87 /* : Bool */; +short int var88 /* : Bool */; +short int var89 /* : Bool */; +val* var90 /* : String */; +val* var_abs_candidate91 /* var abs_candidate: String */; +val* var92 /* : String */; +val* var_abs_try_file93 /* var abs_try_file: String */; +short int var94 /* : Bool */; +short int var95 /* : Bool */; +short int var97 /* : Bool */; +short int var98 /* : Bool */; +short int var99 /* : Bool */; +val* var100 /* : ToolContext */; +val* var102 /* : ToolContext */; +static val* varonce103; +val* var104 /* : String */; +char* var105 /* : NativeString */; +long var106 /* : Int */; +val* var107 /* : FlatString */; +static val* varonce108; +val* var109 /* : String */; +char* var110 /* : NativeString */; +long var111 /* : Int */; +val* var112 /* : FlatString */; +static val* varonce113; +val* var114 /* : String */; +char* var115 /* : NativeString */; +long var116 /* : Int */; +val* var117 /* : FlatString */; +val* var118 /* : Array[Object] */; +long var119 /* : Int */; +val* var120 /* : NativeArray[Object] */; +val* var121 /* : String */; +val* var123 /* : null */; +short int var124 /* : Bool */; +short int var125 /* : Bool */; +val* var126 /* : null */; +val* var127 /* : nullable ModulePath */; +var_location = p0; +var_name = p1; +var_lookpaths = p2; +var1 = NULL; +var_candidate = var1; +var_ = var_lookpaths; +{ +var2 = ((val* (*)(val*))(var_->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_) /* iterator on */; +} +var_3 = var2; +for(;;) { +{ +var4 = ((short int (*)(val*))(var_3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_3) /* is_ok on */; +} +if (var4){ +{ +var5 = ((val* (*)(val*))(var_3->class->vft[COLOR_abstract_collection__Iterator__item]))(var_3) /* item on */; +} +var_dirname = var5; if (varonce) { -var5 = varonce; +var6 = varonce; } else { -var6 = "Error: `"; -var7 = 8; -var8 = string__NativeString__to_s_with_length(var6, var7); -var5 = var8; -varonce = var5; +var7 = "/"; +var8 = 1; +var9 = string__NativeString__to_s_with_length(var7, var8); +var6 = var9; +varonce = var6; } -if (varonce9) { -var10 = varonce9; -} else { -var11 = "` does not exists"; -var12 = 17; -var13 = string__NativeString__to_s_with_length(var11, var12); -var10 = var13; -varonce9 = var10; -} -var14 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var14 = array_instance Array[Object] */ -var15 = 3; -var16 = NEW_array__NativeArray(var15, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var16)->values[0] = (val*) var5; -((struct instance_array__NativeArray*)var16)->values[1] = (val*) var_path; -((struct instance_array__NativeArray*)var16)->values[2] = (val*) var10; -((void (*)(val*, val*, long))(var14->class->vft[COLOR_array__Array__with_native]))(var14, var16, var15) /* with_native on */; -} -var17 = ((val* (*)(val*))(var14->class->vft[COLOR_string__Object__to_s]))(var14) /* to_s on */; -((void (*)(val*, val*, val*))(var3->class->vft[COLOR_toolcontext__ToolContext__error]))(var3, var4, var17) /* error on */; -var18 = NULL; -var = var18; -goto RET_LABEL; -} else { +{ +var10 = string__FlatString___43d(var_dirname, var6); } -if (varonce19) { -var20 = varonce19; +{ +var11 = string__FlatString___43d(var10, var_name); +} +if (varonce12) { +var13 = varonce12; } else { -var21 = ".nit"; -var22 = 4; -var23 = string__NativeString__to_s_with_length(var21, var22); -var20 = var23; -varonce19 = var20; +var14 = ".nit"; +var15 = 4; +var16 = string__NativeString__to_s_with_length(var14, var15); +var13 = var16; +varonce12 = var13; } -var24 = ((val* (*)(val*, val*))(var_path->class->vft[COLOR_file__String__basename]))(var_path, var20) /* basename on */; -var_pn = var24; -var25 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__module_absolute_path]))(self, var_path) /* module_absolute_path on */; -var_rp = var25; -var26 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__identified_files]))(self) /* identified_files on */; -var27 = ((short int (*)(val*, val*))(var26->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var26, var_rp) /* has_key on */; -if (var27){ -var28 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__identified_files]))(self) /* identified_files on */; -var29 = ((val* (*)(val*, val*))(var28->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var28, var_rp) /* [] on */; -var = var29; -goto RET_LABEL; +{ +var17 = string__FlatString___43d(var11, var13); +} +{ +var18 = file__String__simplify_path(var17); +} +var_try_file = var18; +{ +var19 = file__String__file_exists(var_try_file); +} +if (var19){ +var20 = NULL; +if (var_candidate == NULL) { +var21 = 1; /* is null */ } else { +var21 = 0; /* arg is null but recv is not */ +} +if (0) { +var22 = string__FlatString___61d_61d(var_candidate, var20); +var21 = var22; } -if (varonce30) { -var31 = varonce30; +if (var21){ +var_candidate = var_try_file; } else { -var32 = ".."; -var33 = 2; -var34 = string__NativeString__to_s_with_length(var32, var33); -var31 = var34; -varonce30 = var31; +{ +{ /* Inline kernel#Object#!= (var_candidate,var_try_file) on */ +var_other = var_try_file; +{ +var27 = ((short int (*)(val*, val*))(var_candidate->class->vft[COLOR_kernel__Object___61d_61d]))(var_candidate, var_other) /* == on */; +var26 = var27; } -var35 = ((val* (*)(val*, val*))(var_path->class->vft[COLOR_file__String__join_path]))(var_path, var31) /* join_path on */; -var36 = ((val* (*)(val*))(var35->class->vft[COLOR_file__String__simplify_path]))(var35) /* simplify_path on */; -var_mgrouppath = var36; -var37 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__get_mgroup]))(self, var_mgrouppath) /* get_mgroup on */; -var_mgroup = var37; -var38 = NULL; -if (var_mgroup == NULL) { -var39 = 1; /* is null */ +var28 = !var26; +var24 = var28; +goto RET_LABEL25; +RET_LABEL25:(void)0; +} +var23 = var24; +} +if (var23){ +{ +var29 = modelbuilder__ModelBuilder__module_absolute_path(self, var_candidate); +} +var_abs_candidate = var29; +{ +var30 = modelbuilder__ModelBuilder__module_absolute_path(self, var_try_file); +} +var_abs_try_file = var30; +{ +{ /* Inline kernel#Object#!= (var_abs_candidate,var_abs_try_file) on */ +var_other = var_abs_try_file; +{ +var35 = ((short int (*)(val*, val*))(var_abs_candidate->class->vft[COLOR_kernel__Object___61d_61d]))(var_abs_candidate, var_other) /* == on */; +var34 = var35; +} +var36 = !var34; +var32 = var36; +goto RET_LABEL33; +RET_LABEL33:(void)0; +} +var31 = var32; +} +if (var31){ +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on */ +var39 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var39 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var37 = var39; +RET_LABEL38:(void)0; +} +} +if (varonce40) { +var41 = varonce40; } else { -var39 = 0; /* arg is null but recv is not */ +var42 = "Error: conflicting module file for "; +var43 = 35; +var44 = string__NativeString__to_s_with_length(var42, var43); +var41 = var44; +varonce40 = var41; } -if (var39){ -var40 = NEW_mproject__MProject(&type_mproject__MProject); -var41 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(self) /* model on */; -((void (*)(val*, val*, val*))(var40->class->vft[COLOR_mproject__MProject__init]))(var40, var_pn, var41) /* init on */; -var_mproject = var40; -var42 = NEW_mproject__MGroup(&type_mproject__MGroup); -var43 = NULL; -((void (*)(val*, val*, val*, val*))(var42->class->vft[COLOR_mproject__MGroup__init]))(var42, var_pn, var_mproject, var43) /* init on */; -var_mgroup = var42; -((void (*)(val*, val*))(var_mgroup->class->vft[COLOR_mproject__MGroup__filepath_61d]))(var_mgroup, var_path) /* filepath= on */; -((void (*)(val*, val*))(var_mproject->class->vft[COLOR_mproject__MProject__root_61d]))(var_mproject, var_mgroup) /* root= on */; -var44 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on */; if (varonce45) { var46 = varonce45; } else { -var47 = "found project `"; -var48 = 15; +var47 = ": "; +var48 = 2; var49 = string__NativeString__to_s_with_length(var47, var48); var46 = var49; varonce45 = var46; @@ -2409,1115 +4066,3526 @@ varonce45 = var46; if (varonce50) { var51 = varonce50; } else { -var52 = "` at "; -var53 = 5; +var52 = " "; +var53 = 1; var54 = string__NativeString__to_s_with_length(var52, var53); var51 = var54; varonce50 = var51; } var55 = NEW_array__Array(&type_array__Arraykernel__Object); { /* var55 = array_instance Array[Object] */ -var56 = 4; +var56 = 6; var57 = NEW_array__NativeArray(var56, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var57)->values[0] = (val*) var46; -((struct instance_array__NativeArray*)var57)->values[1] = (val*) var_pn; -((struct instance_array__NativeArray*)var57)->values[2] = (val*) var51; -((struct instance_array__NativeArray*)var57)->values[3] = (val*) var_path; +((struct instance_array__NativeArray*)var57)->values[0] = (val*) var41; +((struct instance_array__NativeArray*)var57)->values[1] = (val*) var_name; +((struct instance_array__NativeArray*)var57)->values[2] = (val*) var46; +((struct instance_array__NativeArray*)var57)->values[3] = (val*) var_candidate; +((struct instance_array__NativeArray*)var57)->values[4] = (val*) var51; +((struct instance_array__NativeArray*)var57)->values[5] = (val*) var_try_file; +{ ((void (*)(val*, val*, long))(var55->class->vft[COLOR_array__Array__with_native]))(var55, var57, var56) /* with_native on */; } +} +{ var58 = ((val* (*)(val*))(var55->class->vft[COLOR_string__Object__to_s]))(var55) /* to_s on */; -var59 = 2; -((void (*)(val*, val*, long))(var44->class->vft[COLOR_toolcontext__ToolContext__info]))(var44, var58, var59) /* info on */; +} +{ +toolcontext__ToolContext__error(var37, var_location, var58); /* Direct call toolcontext#ToolContext#error on */ +} } else { } -var60 = NEW_modelbuilder__ModulePath(&type_modelbuilder__ModulePath); -((void (*)(val*, val*, val*, val*))(var60->class->vft[COLOR_modelbuilder__ModulePath__init]))(var60, var_pn, var_path, var_mgroup) /* init on */; -var_res = var60; -var61 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__identified_files]))(self) /* identified_files on */; -((void (*)(val*, val*, val*))(var61->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var61, var_rp, var_res) /* []= on */; -var = var_res; +} else { +} +} +} else { +} +if (varonce59) { +var60 = varonce59; +} else { +var61 = "/"; +var62 = 1; +var63 = string__NativeString__to_s_with_length(var61, var62); +var60 = var63; +varonce59 = var60; +} +{ +var64 = string__FlatString___43d(var_dirname, var60); +} +{ +var65 = string__FlatString___43d(var64, var_name); +} +if (varonce66) { +var67 = varonce66; +} else { +var68 = "/"; +var69 = 1; +var70 = string__NativeString__to_s_with_length(var68, var69); +var67 = var70; +varonce66 = var67; +} +{ +var71 = string__FlatString___43d(var65, var67); +} +{ +var72 = string__FlatString___43d(var71, var_name); +} +if (varonce73) { +var74 = varonce73; +} else { +var75 = ".nit"; +var76 = 4; +var77 = string__NativeString__to_s_with_length(var75, var76); +var74 = var77; +varonce73 = var74; +} +{ +var78 = string__FlatString___43d(var72, var74); +} +{ +var79 = file__String__simplify_path(var78); +} +var_try_file = var79; +{ +var80 = file__String__file_exists(var_try_file); +} +if (var80){ +var81 = NULL; +if (var_candidate == NULL) { +var82 = 1; /* is null */ +} else { +var82 = 0; /* arg is null but recv is not */ +} +if (0) { +var83 = string__FlatString___61d_61d(var_candidate, var81); +var82 = var83; +} +if (var82){ +var_candidate = var_try_file; +} else { +{ +{ /* Inline kernel#Object#!= (var_candidate,var_try_file) on */ +var_other = var_try_file; +{ +var88 = ((short int (*)(val*, val*))(var_candidate->class->vft[COLOR_kernel__Object___61d_61d]))(var_candidate, var_other) /* == on */; +var87 = var88; +} +var89 = !var87; +var85 = var89; +goto RET_LABEL86; +RET_LABEL86:(void)0; +} +var84 = var85; +} +if (var84){ +{ +var90 = modelbuilder__ModelBuilder__module_absolute_path(self, var_candidate); +} +var_abs_candidate91 = var90; +{ +var92 = modelbuilder__ModelBuilder__module_absolute_path(self, var_try_file); +} +var_abs_try_file93 = var92; +{ +{ /* Inline kernel#Object#!= (var_abs_candidate91,var_abs_try_file93) on */ +var_other = var_abs_try_file93; +{ +var98 = ((short int (*)(val*, val*))(var_abs_candidate91->class->vft[COLOR_kernel__Object___61d_61d]))(var_abs_candidate91, var_other) /* == on */; +var97 = var98; +} +var99 = !var97; +var95 = var99; +goto RET_LABEL96; +RET_LABEL96:(void)0; +} +var94 = var95; +} +if (var94){ +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on */ +var102 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var102 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var100 = var102; +RET_LABEL101:(void)0; +} +} +if (varonce103) { +var104 = varonce103; +} else { +var105 = "Error: conflicting module file for "; +var106 = 35; +var107 = string__NativeString__to_s_with_length(var105, var106); +var104 = var107; +varonce103 = var104; +} +if (varonce108) { +var109 = varonce108; +} else { +var110 = ": "; +var111 = 2; +var112 = string__NativeString__to_s_with_length(var110, var111); +var109 = var112; +varonce108 = var109; +} +if (varonce113) { +var114 = varonce113; +} else { +var115 = " "; +var116 = 1; +var117 = string__NativeString__to_s_with_length(var115, var116); +var114 = var117; +varonce113 = var114; +} +var118 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var118 = array_instance Array[Object] */ +var119 = 6; +var120 = NEW_array__NativeArray(var119, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var120)->values[0] = (val*) var104; +((struct instance_array__NativeArray*)var120)->values[1] = (val*) var_name; +((struct instance_array__NativeArray*)var120)->values[2] = (val*) var109; +((struct instance_array__NativeArray*)var120)->values[3] = (val*) var_candidate; +((struct instance_array__NativeArray*)var120)->values[4] = (val*) var114; +((struct instance_array__NativeArray*)var120)->values[5] = (val*) var_try_file; +{ +((void (*)(val*, val*, long))(var118->class->vft[COLOR_array__Array__with_native]))(var118, var120, var119) /* with_native on */; +} +} +{ +var121 = ((val* (*)(val*))(var118->class->vft[COLOR_string__Object__to_s]))(var118) /* to_s on */; +} +{ +toolcontext__ToolContext__error(var100, var_location, var121); /* Direct call toolcontext#ToolContext#error on */ +} +} else { +} +} else { +} +} +} else { +} +{ +((void (*)(val*))(var_3->class->vft[COLOR_abstract_collection__Iterator__next]))(var_3) /* next on */; +} +} else { +goto BREAK_label; +} +} +BREAK_label: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_3) on */ +RET_LABEL122:(void)0; +} +} +var123 = NULL; +if (var_candidate == NULL) { +var124 = 1; /* is null */ +} else { +var124 = 0; /* arg is null but recv is not */ +} +if (0) { +var125 = string__FlatString___61d_61d(var_candidate, var123); +var124 = var125; +} +if (var124){ +var126 = NULL; +var = var126; +goto RET_LABEL; +} else { +} +{ +var127 = modelbuilder__ModelBuilder__identify_file(self, var_candidate); +} +var = var127; goto RET_LABEL; RET_LABEL:; return var; } -/* method modelbuilder#ModelBuilder#identify_file for (self: Object, String): nullable ModulePath */ -val* VIRTUAL_modelbuilder__ModelBuilder__identify_file(val* self, val* p0) { +/* method modelbuilder#ModelBuilder#search_module_in_paths for (self: Object, nullable Location, String, Collection[String]): nullable ModulePath */ +val* VIRTUAL_modelbuilder__ModelBuilder__search_module_in_paths(val* self, val* p0, val* p1, val* p2) { val* var /* : nullable ModulePath */; val* var1 /* : nullable ModulePath */; -var1 = modelbuilder__ModelBuilder__identify_file(self, p0); +var1 = modelbuilder__ModelBuilder__search_module_in_paths(self, p0, p1, p2); var = var1; RET_LABEL:; return var; } -/* method modelbuilder#ModelBuilder#mgroups for (self: ModelBuilder): HashMap[String, nullable MGroup] */ -val* modelbuilder__ModelBuilder__mgroups(val* self) { -val* var /* : HashMap[String, nullable MGroup] */; -val* var1 /* : HashMap[String, nullable MGroup] */; -var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___64dmgroups].val; /* @mgroups on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mgroups"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 383); +/* method modelbuilder#ModelBuilder#identified_files for (self: ModelBuilder): HashMap[String, nullable ModulePath] */ +val* modelbuilder__ModelBuilder__identified_files(val* self) { +val* var /* : HashMap[String, nullable ModulePath] */; +val* var1 /* : HashMap[String, nullable ModulePath] */; +var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___identified_files].val; /* _identified_files on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _identified_files"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 416); show_backtrace(1); } var = var1; RET_LABEL:; return var; } -/* method modelbuilder#ModelBuilder#mgroups for (self: Object): HashMap[String, nullable MGroup] */ -val* VIRTUAL_modelbuilder__ModelBuilder__mgroups(val* self) { -val* var /* : HashMap[String, nullable MGroup] */; -val* var1 /* : HashMap[String, nullable MGroup] */; -var1 = modelbuilder__ModelBuilder__mgroups(self); -var = var1; -RET_LABEL:; -return var; +/* method modelbuilder#ModelBuilder#identified_files for (self: Object): HashMap[String, nullable ModulePath] */ +val* VIRTUAL_modelbuilder__ModelBuilder__identified_files(val* self) { +val* var /* : HashMap[String, nullable ModulePath] */; +val* var1 /* : HashMap[String, nullable ModulePath] */; +val* var3 /* : HashMap[String, nullable ModulePath] */; +{ /* Inline modelbuilder#ModelBuilder#identified_files (self) on */ +var3 = self->attrs[COLOR_modelbuilder__ModelBuilder___identified_files].val; /* _identified_files on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _identified_files"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 416); +show_backtrace(1); } -/* method modelbuilder#ModelBuilder#mgroups= for (self: ModelBuilder, HashMap[String, nullable MGroup]) */ -void modelbuilder__ModelBuilder__mgroups_61d(val* self, val* p0) { -self->attrs[COLOR_modelbuilder__ModelBuilder___64dmgroups].val = p0; /* @mgroups on */ -RET_LABEL:; +var1 = var3; +RET_LABEL2:(void)0; } -/* method modelbuilder#ModelBuilder#mgroups= for (self: Object, HashMap[String, nullable MGroup]) */ -void VIRTUAL_modelbuilder__ModelBuilder__mgroups_61d(val* self, val* p0) { -modelbuilder__ModelBuilder__mgroups_61d(self, p0); +var = var1; RET_LABEL:; +return var; } -/* method modelbuilder#ModelBuilder#get_mgroup for (self: ModelBuilder, String): nullable MGroup */ -val* modelbuilder__ModelBuilder__get_mgroup(val* self, val* p0) { -val* var /* : nullable MGroup */; -val* var_dirpath /* var dirpath: String */; -val* var1 /* : String */; -val* var_rdp /* var rdp: String */; -val* var2 /* : HashMap[String, nullable MGroup] */; -short int var3 /* : Bool */; -val* var4 /* : HashMap[String, nullable MGroup] */; -val* var5 /* : nullable Object */; +/* method modelbuilder#ModelBuilder#identify_file for (self: ModelBuilder, String): nullable ModulePath */ +val* modelbuilder__ModelBuilder__identify_file(val* self, val* p0) { +val* var /* : nullable ModulePath */; +val* var_path /* var path: String */; +val* var1 /* : nullable String */; static val* varonce; -val* var6 /* : String */; -char* var7 /* : NativeString */; -long var8 /* : Int */; -val* var9 /* : String */; -val* var10 /* : String */; -val* var_pn /* var pn: String */; -static val* varonce11; -val* var12 /* : String */; -char* var13 /* : NativeString */; -long var14 /* : Int */; -val* var15 /* : String */; -val* var16 /* : String */; -val* var17 /* : String */; -val* var18 /* : String */; -val* var_mp /* var mp: String */; +val* var2 /* : String */; +char* var3 /* : NativeString */; +long var4 /* : Int */; +val* var5 /* : FlatString */; +short int var6 /* : Bool */; +short int var7 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var9 /* : Bool */; +short int var10 /* : Bool */; +short int var11 /* : Bool */; +val* var12 /* : null */; +val* var13 /* : Array[String] */; +val* var15 /* : Array[String] */; +val* var16 /* : nullable ModulePath */; +val* var_res /* var res: nullable ModulePath */; +val* var17 /* : null */; +short int var18 /* : Bool */; short int var19 /* : Bool */; -short int var20 /* : Bool */; -val* var21 /* : null */; -static val* varonce22; -val* var23 /* : String */; -char* var24 /* : NativeString */; -long var25 /* : Int */; -val* var26 /* : String */; -val* var27 /* : String */; -val* var28 /* : String */; -val* var_parentpath /* var parentpath: String */; -val* var29 /* : nullable MGroup */; -val* var_parent /* var parent: nullable MGroup */; -val* var30 /* : null */; +short int var21 /* : Bool */; +short int var22 /* : Bool */; +short int var23 /* : Bool */; +val* var24 /* : null */; +val* var_candidate /* var candidate: nullable Object */; +short int var25 /* : Bool */; +val* var26 /* : nullable MGroup */; +val* var_mgroup /* var mgroup: nullable MGroup */; +val* var27 /* : null */; +short int var28 /* : Bool */; +short int var29 /* : Bool */; short int var31 /* : Bool */; -val* var32 /* : MProject */; -val* var33 /* : Model */; -val* var_mproject /* var mproject: MProject */; -val* var34 /* : MGroup */; -val* var35 /* : null */; -val* var_mgroup /* var mgroup: nullable Object */; -val* var36 /* : ToolContext */; -static val* varonce37; -val* var38 /* : String */; -char* var39 /* : NativeString */; -long var40 /* : Int */; +short int var32 /* : Bool */; +short int var33 /* : Bool */; +val* var34 /* : nullable String */; +val* var36 /* : nullable String */; +val* var37 /* : String */; +val* var39 /* : String */; +static val* varonce40; val* var41 /* : String */; -static val* varonce42; -val* var43 /* : String */; -char* var44 /* : NativeString */; -long var45 /* : Int */; +char* var42 /* : NativeString */; +long var43 /* : Int */; +val* var44 /* : FlatString */; +val* var45 /* : String */; val* var46 /* : String */; -val* var47 /* : Array[Object] */; -long var48 /* : Int */; -val* var49 /* : NativeArray[Object] */; -val* var50 /* : String */; -long var51 /* : Int */; -val* var52 /* : MGroup */; -val* var53 /* : MProject */; -val* var54 /* : ToolContext */; +val* var_owner_path /* var owner_path: String */; +short int var47 /* : Bool */; +val* var48 /* : null */; +short int var49 /* : Bool */; +short int var50 /* : Bool */; +val* var51 /* : ToolContext */; +val* var53 /* : ToolContext */; +val* var54 /* : null */; static val* varonce55; val* var56 /* : String */; char* var57 /* : NativeString */; long var58 /* : Int */; -val* var59 /* : String */; -val* var60 /* : String */; -static val* varonce61; -val* var62 /* : String */; -char* var63 /* : NativeString */; -long var64 /* : Int */; -val* var65 /* : String */; -val* var66 /* : Array[Object] */; -long var67 /* : Int */; -val* var68 /* : NativeArray[Object] */; -val* var69 /* : String */; -long var70 /* : Int */; -val* var71 /* : HashMap[String, nullable MGroup] */; -var_dirpath = p0; -var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__module_absolute_path]))(self, var_dirpath) /* module_absolute_path on */; -var_rdp = var1; -var2 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__mgroups]))(self) /* mgroups on */; -var3 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var2, var_rdp) /* has_key on */; -if (var3){ -var4 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__mgroups]))(self) /* mgroups on */; -var5 = ((val* (*)(val*, val*))(var4->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var4, var_rdp) /* [] on */; -var = var5; +val* var59 /* : FlatString */; +static val* varonce60; +val* var61 /* : String */; +char* var62 /* : NativeString */; +long var63 /* : Int */; +val* var64 /* : FlatString */; +val* var65 /* : Array[Object] */; +long var66 /* : Int */; +val* var67 /* : NativeArray[Object] */; +val* var68 /* : String */; +val* var69 /* : null */; +static val* varonce70; +val* var71 /* : String */; +char* var72 /* : NativeString */; +long var73 /* : Int */; +val* var74 /* : FlatString */; +val* var75 /* : String */; +val* var_pn /* var pn: String */; +val* var76 /* : String */; +val* var_rp /* var rp: String */; +val* var77 /* : HashMap[String, nullable ModulePath] */; +val* var79 /* : HashMap[String, nullable ModulePath] */; +short int var80 /* : Bool */; +val* var81 /* : HashMap[String, nullable ModulePath] */; +val* var83 /* : HashMap[String, nullable ModulePath] */; +val* var84 /* : nullable Object */; +static val* varonce85; +val* var86 /* : String */; +char* var87 /* : NativeString */; +long var88 /* : Int */; +val* var89 /* : FlatString */; +val* var90 /* : String */; +val* var91 /* : String */; +val* var_mgrouppath /* var mgrouppath: String */; +val* var92 /* : nullable MGroup */; +val* var_mgroup93 /* var mgroup: nullable MGroup */; +val* var94 /* : null */; +short int var95 /* : Bool */; +short int var96 /* : Bool */; +val* var_other98 /* var other: nullable Object */; +short int var99 /* : Bool */; +short int var101 /* : Bool */; +val* var102 /* : MProject */; +val* var103 /* : Model */; +val* var105 /* : Model */; +val* var_mproject /* var mproject: MProject */; +val* var106 /* : MGroup */; +val* var107 /* : null */; +val* var110 /* : ToolContext */; +val* var112 /* : ToolContext */; +static val* varonce113; +val* var114 /* : String */; +char* var115 /* : NativeString */; +long var116 /* : Int */; +val* var117 /* : FlatString */; +static val* varonce118; +val* var119 /* : String */; +char* var120 /* : NativeString */; +long var121 /* : Int */; +val* var122 /* : FlatString */; +val* var123 /* : Array[Object] */; +long var124 /* : Int */; +val* var125 /* : NativeArray[Object] */; +val* var126 /* : String */; +long var127 /* : Int */; +val* var128 /* : ModulePath */; +val* var_res129 /* var res: ModulePath */; +val* var130 /* : Array[ModulePath] */; +val* var132 /* : Array[ModulePath] */; +val* var133 /* : HashMap[String, nullable ModulePath] */; +val* var135 /* : HashMap[String, nullable ModulePath] */; +var_path = p0; +{ +var1 = file__String__file_extension(var_path); +} +if (varonce) { +var2 = varonce; +} else { +var3 = "nit"; +var4 = 3; +var5 = string__NativeString__to_s_with_length(var3, var4); +var2 = var5; +varonce = var2; +} +if (var1 == NULL) { +var6 = 1; /* cannot be null */ +} else { +{ /* Inline kernel#Object#!= (var1,var2) on */ +var_other = var2; +{ +var10 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_kernel__Object___61d_61d]))(var1, var_other) /* == on */; +var9 = var10; +} +var11 = !var9; +var7 = var11; +goto RET_LABEL8; +RET_LABEL8:(void)0; +} +var6 = var7; +} +if (var6){ +var12 = NULL; +{ +{ /* Inline modelbuilder#ModelBuilder#paths (self) on */ +var15 = self->attrs[COLOR_modelbuilder__ModelBuilder___paths].val; /* _paths on */ +if (unlikely(var15 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _paths"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 300); +show_backtrace(1); +} +var13 = var15; +RET_LABEL14:(void)0; +} +} +{ +var16 = modelbuilder__ModelBuilder__search_module_in_paths(self, var12, var_path, var13); +} +var_res = var16; +var17 = NULL; +if (var_res == NULL) { +var18 = 0; /* is null */ +} else { +var18 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_res,var17) on */ +var_other = var17; +{ +var22 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on */; +var21 = var22; +} +var23 = !var21; +var19 = var23; +goto RET_LABEL20; +RET_LABEL20:(void)0; +} +var18 = var19; +} +if (var18){ +var = var_res; +goto RET_LABEL; +} else { +} +var24 = NULL; +var_candidate = var24; +{ +var25 = file__String__file_exists(var_path); +} +if (var25){ +{ +var26 = modelbuilder__ModelBuilder__get_mgroup(self, var_path); +} +var_mgroup = var26; +var27 = NULL; +if (var_mgroup == NULL) { +var28 = 0; /* is null */ +} else { +var28 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_mgroup,var27) on */ +var_other = var27; +{ +var32 = ((short int (*)(val*, val*))(var_mgroup->class->vft[COLOR_kernel__Object___61d_61d]))(var_mgroup, var_other) /* == on */; +var31 = var32; +} +var33 = !var31; +var29 = var33; +goto RET_LABEL30; +RET_LABEL30:(void)0; +} +var28 = var29; +} +if (var28){ +{ +{ /* Inline mproject#MGroup#filepath (var_mgroup) on */ +var36 = var_mgroup->attrs[COLOR_mproject__MGroup___filepath].val; /* _filepath on */ +var34 = var36; +RET_LABEL35:(void)0; +} +} +{ +{ /* Inline mproject#MGroup#name (var_mgroup) on */ +var39 = var_mgroup->attrs[COLOR_mproject__MGroup___name].val; /* _name on */ +if (unlikely(var39 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name"); +PRINT_ERROR(" (%s:%d)\n", "model/mproject.nit", 56); +show_backtrace(1); +} +var37 = var39; +RET_LABEL38:(void)0; +} +} +if (varonce40) { +var41 = varonce40; +} else { +var42 = ".nit"; +var43 = 4; +var44 = string__NativeString__to_s_with_length(var42, var43); +var41 = var44; +varonce40 = var41; +} +{ +var45 = string__FlatString___43d(var37, var41); +} +if (var34 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 434); +show_backtrace(1); +} else { +var46 = file__String__join_path(var34, var45); +} +var_owner_path = var46; +{ +var47 = file__String__file_exists(var_owner_path); +} +if (var47){ +var_candidate = var_owner_path; +} else { +} +} else { +} +} else { +} +var48 = NULL; +if (var_candidate == NULL) { +var49 = 1; /* is null */ +} else { +var49 = 0; /* arg is null but recv is not */ +} +if (0) { +var50 = string__FlatString___61d_61d(var_candidate, var48); +var49 = var50; +} +if (var49){ +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on */ +var53 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var53 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var51 = var53; +RET_LABEL52:(void)0; +} +} +var54 = NULL; +if (varonce55) { +var56 = varonce55; +} else { +var57 = "Error: cannot find module `"; +var58 = 27; +var59 = string__NativeString__to_s_with_length(var57, var58); +var56 = var59; +varonce55 = var56; +} +if (varonce60) { +var61 = varonce60; +} else { +var62 = "`."; +var63 = 2; +var64 = string__NativeString__to_s_with_length(var62, var63); +var61 = var64; +varonce60 = var61; +} +var65 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var65 = array_instance Array[Object] */ +var66 = 3; +var67 = NEW_array__NativeArray(var66, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var67)->values[0] = (val*) var56; +((struct instance_array__NativeArray*)var67)->values[1] = (val*) var_path; +((struct instance_array__NativeArray*)var67)->values[2] = (val*) var61; +{ +((void (*)(val*, val*, long))(var65->class->vft[COLOR_array__Array__with_native]))(var65, var67, var66) /* with_native on */; +} +} +{ +var68 = ((val* (*)(val*))(var65->class->vft[COLOR_string__Object__to_s]))(var65) /* to_s on */; +} +{ +toolcontext__ToolContext__error(var51, var54, var68); /* Direct call toolcontext#ToolContext#error on */ +} +var69 = NULL; +var = var69; +goto RET_LABEL; +} else { +} +var_path = var_candidate; +} else { +} +if (varonce70) { +var71 = varonce70; +} else { +var72 = ".nit"; +var73 = 4; +var74 = string__NativeString__to_s_with_length(var72, var73); +var71 = var74; +varonce70 = var71; +} +{ +var75 = file__String__basename(var_path, var71); +} +var_pn = var75; +{ +var76 = modelbuilder__ModelBuilder__module_absolute_path(self, var_path); +} +var_rp = var76; +{ +{ /* Inline modelbuilder#ModelBuilder#identified_files (self) on */ +var79 = self->attrs[COLOR_modelbuilder__ModelBuilder___identified_files].val; /* _identified_files on */ +if (unlikely(var79 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _identified_files"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 416); +show_backtrace(1); +} +var77 = var79; +RET_LABEL78:(void)0; +} +} +{ +var80 = abstract_collection__MapRead__has_key(var77, var_rp); +} +if (var80){ +{ +{ /* Inline modelbuilder#ModelBuilder#identified_files (self) on */ +var83 = self->attrs[COLOR_modelbuilder__ModelBuilder___identified_files].val; /* _identified_files on */ +if (unlikely(var83 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _identified_files"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 416); +show_backtrace(1); +} +var81 = var83; +RET_LABEL82:(void)0; +} +} +{ +var84 = hash_collection__HashMap___91d_93d(var81, var_rp); +} +var = var84; goto RET_LABEL; } else { } -if (varonce) { -var6 = varonce; +if (varonce85) { +var86 = varonce85; +} else { +var87 = ".."; +var88 = 2; +var89 = string__NativeString__to_s_with_length(var87, var88); +var86 = var89; +varonce85 = var86; +} +{ +var90 = file__String__join_path(var_path, var86); +} +{ +var91 = file__String__simplify_path(var90); +} +var_mgrouppath = var91; +{ +var92 = modelbuilder__ModelBuilder__get_mgroup(self, var_mgrouppath); +} +var_mgroup93 = var92; +var94 = NULL; +if (var_mgroup93 == NULL) { +var95 = 1; /* is null */ +} else { +var95 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_mgroup93,var94) on */ +var_other98 = var94; +{ +{ /* Inline kernel#Object#is_same_instance (var_mgroup93,var_other98) on */ +var101 = var_mgroup93 == var_other98; +var99 = var101; +goto RET_LABEL100; +RET_LABEL100:(void)0; +} +} +var96 = var99; +goto RET_LABEL97; +RET_LABEL97:(void)0; +} +var95 = var96; +} +if (var95){ +var102 = NEW_mproject__MProject(&type_mproject__MProject); +{ +{ /* Inline modelbuilder#ModelBuilder#model (self) on */ +var105 = self->attrs[COLOR_modelbuilder__ModelBuilder___model].val; /* _model on */ +if (unlikely(var105 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 103); +show_backtrace(1); +} +var103 = var105; +RET_LABEL104:(void)0; +} +} +{ +mproject__MProject__init(var102, var_pn, var103); /* Direct call mproject#MProject#init on */ +} +var_mproject = var102; +var106 = NEW_mproject__MGroup(&type_mproject__MGroup); +var107 = NULL; +{ +mproject__MGroup__init(var106, var_pn, var_mproject, var107); /* Direct call mproject#MGroup#init on */ +} +var_mgroup93 = var106; +{ +{ /* Inline mproject#MGroup#filepath= (var_mgroup93,var_path) on */ +var_mgroup93->attrs[COLOR_mproject__MGroup___filepath].val = var_path; /* _filepath on */ +RET_LABEL108:(void)0; +} +} +{ +{ /* Inline mproject#MProject#root= (var_mproject,var_mgroup93) on */ +var_mproject->attrs[COLOR_mproject__MProject___root].val = var_mgroup93; /* _root on */ +RET_LABEL109:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on */ +var112 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var112 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var110 = var112; +RET_LABEL111:(void)0; +} +} +if (varonce113) { +var114 = varonce113; +} else { +var115 = "found project `"; +var116 = 15; +var117 = string__NativeString__to_s_with_length(var115, var116); +var114 = var117; +varonce113 = var114; +} +if (varonce118) { +var119 = varonce118; +} else { +var120 = "` at "; +var121 = 5; +var122 = string__NativeString__to_s_with_length(var120, var121); +var119 = var122; +varonce118 = var119; +} +var123 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var123 = array_instance Array[Object] */ +var124 = 4; +var125 = NEW_array__NativeArray(var124, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var125)->values[0] = (val*) var114; +((struct instance_array__NativeArray*)var125)->values[1] = (val*) var_pn; +((struct instance_array__NativeArray*)var125)->values[2] = (val*) var119; +((struct instance_array__NativeArray*)var125)->values[3] = (val*) var_path; +{ +((void (*)(val*, val*, long))(var123->class->vft[COLOR_array__Array__with_native]))(var123, var125, var124) /* with_native on */; +} +} +{ +var126 = ((val* (*)(val*))(var123->class->vft[COLOR_string__Object__to_s]))(var123) /* to_s on */; +} +var127 = 2; +{ +toolcontext__ToolContext__info(var110, var126, var127); /* Direct call toolcontext#ToolContext#info on */ +} +} else { +} +var128 = NEW_modelbuilder__ModulePath(&type_modelbuilder__ModulePath); +{ +((void (*)(val*, val*))(var128->class->vft[COLOR_modelbuilder__ModulePath__name_61d]))(var128, var_pn) /* name= on */; +} +{ +((void (*)(val*, val*))(var128->class->vft[COLOR_modelbuilder__ModulePath__filepath_61d]))(var128, var_path) /* filepath= on */; +} +{ +((void (*)(val*, val*))(var128->class->vft[COLOR_modelbuilder__ModulePath__mgroup_61d]))(var128, var_mgroup93) /* mgroup= on */; +} +{ +((void (*)(val*))(var128->class->vft[COLOR_kernel__Object__init]))(var128) /* init on */; +} +var_res129 = var128; +{ +{ /* Inline modelbuilder#MGroup#module_paths (var_mgroup93) on */ +var132 = var_mgroup93->attrs[COLOR_modelbuilder__MGroup___module_paths].val; /* _module_paths on */ +if (unlikely(var132 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _module_paths"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 786); +show_backtrace(1); +} +var130 = var132; +RET_LABEL131:(void)0; +} +} +{ +array__Array__add(var130, var_res129); /* Direct call array#Array#add on */ +} +{ +{ /* Inline modelbuilder#ModelBuilder#identified_files (self) on */ +var135 = self->attrs[COLOR_modelbuilder__ModelBuilder___identified_files].val; /* _identified_files on */ +if (unlikely(var135 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _identified_files"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 416); +show_backtrace(1); +} +var133 = var135; +RET_LABEL134:(void)0; +} +} +{ +hash_collection__HashMap___91d_93d_61d(var133, var_rp, var_res129); /* Direct call hash_collection#HashMap#[]= on */ +} +var = var_res129; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method modelbuilder#ModelBuilder#identify_file for (self: Object, String): nullable ModulePath */ +val* VIRTUAL_modelbuilder__ModelBuilder__identify_file(val* self, val* p0) { +val* var /* : nullable ModulePath */; +val* var1 /* : nullable ModulePath */; +var1 = modelbuilder__ModelBuilder__identify_file(self, p0); +var = var1; +RET_LABEL:; +return var; +} +/* method modelbuilder#ModelBuilder#mgroups for (self: ModelBuilder): HashMap[String, nullable MGroup] */ +val* modelbuilder__ModelBuilder__mgroups(val* self) { +val* var /* : HashMap[String, nullable MGroup] */; +val* var1 /* : HashMap[String, nullable MGroup] */; +var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___mgroups].val; /* _mgroups on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroups"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 471); +show_backtrace(1); +} +var = var1; +RET_LABEL:; +return var; +} +/* method modelbuilder#ModelBuilder#mgroups for (self: Object): HashMap[String, nullable MGroup] */ +val* VIRTUAL_modelbuilder__ModelBuilder__mgroups(val* self) { +val* var /* : HashMap[String, nullable MGroup] */; +val* var1 /* : HashMap[String, nullable MGroup] */; +val* var3 /* : HashMap[String, nullable MGroup] */; +{ /* Inline modelbuilder#ModelBuilder#mgroups (self) on */ +var3 = self->attrs[COLOR_modelbuilder__ModelBuilder___mgroups].val; /* _mgroups on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroups"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 471); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +var = var1; +RET_LABEL:; +return var; +} +/* method modelbuilder#ModelBuilder#get_mgroup for (self: ModelBuilder, String): nullable MGroup */ +val* modelbuilder__ModelBuilder__get_mgroup(val* self, val* p0) { +val* var /* : nullable MGroup */; +val* var_dirpath /* var dirpath: String */; +val* var1 /* : String */; +val* var_rdp /* var rdp: String */; +val* var2 /* : HashMap[String, nullable MGroup] */; +val* var4 /* : HashMap[String, nullable MGroup] */; +short int var5 /* : Bool */; +val* var6 /* : HashMap[String, nullable MGroup] */; +val* var8 /* : HashMap[String, nullable MGroup] */; +val* var9 /* : nullable Object */; +static val* varonce; +val* var10 /* : String */; +char* var11 /* : NativeString */; +long var12 /* : Int */; +val* var13 /* : FlatString */; +val* var14 /* : String */; +val* var_pn /* var pn: String */; +static val* varonce15; +val* var16 /* : String */; +char* var17 /* : NativeString */; +long var18 /* : Int */; +val* var19 /* : FlatString */; +val* var20 /* : String */; +val* var21 /* : String */; +val* var22 /* : String */; +val* var_mp /* var mp: String */; +val* var_dirpath2 /* var dirpath2: String */; +short int var23 /* : Bool */; +short int var24 /* : Bool */; +static val* varonce25; +val* var26 /* : String */; +char* var27 /* : NativeString */; +long var28 /* : Int */; +val* var29 /* : FlatString */; +short int var30 /* : Bool */; +short int var31 /* : Bool */; +val* var32 /* : String */; +static val* varonce33; +val* var34 /* : String */; +char* var35 /* : NativeString */; +long var36 /* : Int */; +val* var37 /* : FlatString */; +val* var38 /* : String */; +val* var39 /* : null */; +static val* varonce40; +val* var41 /* : String */; +char* var42 /* : NativeString */; +long var43 /* : Int */; +val* var44 /* : FlatString */; +val* var45 /* : String */; +val* var46 /* : String */; +val* var_parentpath /* var parentpath: String */; +val* var47 /* : nullable MGroup */; +val* var_parent /* var parent: nullable MGroup */; +val* var48 /* : null */; +short int var49 /* : Bool */; +short int var50 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var52 /* : Bool */; +short int var54 /* : Bool */; +val* var55 /* : MProject */; +val* var56 /* : Model */; +val* var58 /* : Model */; +val* var_mproject /* var mproject: MProject */; +val* var59 /* : MGroup */; +val* var60 /* : null */; +val* var_mgroup /* var mgroup: nullable Object */; +val* var62 /* : ToolContext */; +val* var64 /* : ToolContext */; +static val* varonce65; +val* var66 /* : String */; +char* var67 /* : NativeString */; +long var68 /* : Int */; +val* var69 /* : FlatString */; +static val* varonce70; +val* var71 /* : String */; +char* var72 /* : NativeString */; +long var73 /* : Int */; +val* var74 /* : FlatString */; +val* var75 /* : Array[Object] */; +long var76 /* : Int */; +val* var77 /* : NativeArray[Object] */; +val* var78 /* : String */; +long var79 /* : Int */; +val* var80 /* : MGroup */; +val* var81 /* : MProject */; +val* var83 /* : MProject */; +val* var84 /* : ToolContext */; +val* var86 /* : ToolContext */; +static val* varonce87; +val* var88 /* : String */; +char* var89 /* : NativeString */; +long var90 /* : Int */; +val* var91 /* : FlatString */; +val* var92 /* : String */; +static val* varonce93; +val* var94 /* : String */; +char* var95 /* : NativeString */; +long var96 /* : Int */; +val* var97 /* : FlatString */; +val* var98 /* : Array[Object] */; +long var99 /* : Int */; +val* var100 /* : NativeArray[Object] */; +val* var101 /* : String */; +long var102 /* : Int */; +static val* varonce103; +val* var104 /* : String */; +char* var105 /* : NativeString */; +long var106 /* : Int */; +val* var107 /* : FlatString */; +val* var108 /* : String */; +val* var_readme /* var readme: String */; +short int var109 /* : Bool */; +short int var110 /* : Bool */; +static val* varonce111; +val* var112 /* : String */; +char* var113 /* : NativeString */; +long var114 /* : Int */; +val* var115 /* : FlatString */; +val* var116 /* : String */; +short int var117 /* : Bool */; +val* var118 /* : MDoc */; +val* var_mdoc /* var mdoc: MDoc */; +val* var119 /* : IFStream */; +val* var_s /* var s: IFStream */; +short int var120 /* : Bool */; +short int var121 /* : Bool */; +val* var122 /* : Array[String] */; +val* var124 /* : Array[String] */; +val* var125 /* : String */; +val* var129 /* : HashMap[String, nullable MGroup] */; +val* var131 /* : HashMap[String, nullable MGroup] */; +var_dirpath = p0; +{ +var1 = modelbuilder__ModelBuilder__module_absolute_path(self, var_dirpath); +} +var_rdp = var1; +{ +{ /* Inline modelbuilder#ModelBuilder#mgroups (self) on */ +var4 = self->attrs[COLOR_modelbuilder__ModelBuilder___mgroups].val; /* _mgroups on */ +if (unlikely(var4 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroups"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 471); +show_backtrace(1); +} +var2 = var4; +RET_LABEL3:(void)0; +} +} +{ +var5 = abstract_collection__MapRead__has_key(var2, var_rdp); +} +if (var5){ +{ +{ /* Inline modelbuilder#ModelBuilder#mgroups (self) on */ +var8 = self->attrs[COLOR_modelbuilder__ModelBuilder___mgroups].val; /* _mgroups on */ +if (unlikely(var8 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroups"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 471); +show_backtrace(1); +} +var6 = var8; +RET_LABEL7:(void)0; +} +} +{ +var9 = hash_collection__HashMap___91d_93d(var6, var_rdp); +} +var = var9; +goto RET_LABEL; +} else { +} +if (varonce) { +var10 = varonce; +} else { +var11 = ".nit"; +var12 = 4; +var13 = string__NativeString__to_s_with_length(var11, var12); +var10 = var13; +varonce = var10; +} +{ +var14 = file__String__basename(var_rdp, var10); +} +var_pn = var14; +if (varonce15) { +var16 = varonce15; +} else { +var17 = ".nit"; +var18 = 4; +var19 = string__NativeString__to_s_with_length(var17, var18); +var16 = var19; +varonce15 = var16; +} +{ +var20 = string__FlatString___43d(var_pn, var16); +} +{ +var21 = file__String__join_path(var_dirpath, var20); +} +{ +var22 = file__String__simplify_path(var21); +} +var_mp = var22; +var_dirpath2 = var_dirpath; +{ +var23 = file__String__file_exists(var_mp); +} +var24 = !var23; +if (var24){ +if (varonce25) { +var26 = varonce25; +} else { +var27 = "src"; +var28 = 3; +var29 = string__NativeString__to_s_with_length(var27, var28); +var26 = var29; +varonce25 = var26; +} +{ +var31 = string__FlatString___61d_61d(var_pn, var26); +var30 = var31; +} +if (var30){ +{ +var32 = file__String__dirname(var_rdp); +} +var_dirpath2 = var32; +if (varonce33) { +var34 = varonce33; +} else { +var35 = ""; +var36 = 0; +var37 = string__NativeString__to_s_with_length(var35, var36); +var34 = var37; +varonce33 = var34; +} +{ +var38 = file__String__basename(var_dirpath2, var34); +} +var_pn = var38; +} else { +var39 = NULL; +var = var39; +goto RET_LABEL; +} +} else { +} +if (varonce40) { +var41 = varonce40; +} else { +var42 = ".."; +var43 = 2; +var44 = string__NativeString__to_s_with_length(var42, var43); +var41 = var44; +varonce40 = var41; +} +{ +var45 = file__String__join_path(var_dirpath, var41); +} +{ +var46 = file__String__simplify_path(var45); +} +var_parentpath = var46; +{ +var47 = modelbuilder__ModelBuilder__get_mgroup(self, var_parentpath); +} +var_parent = var47; +var48 = NULL; +if (var_parent == NULL) { +var49 = 1; /* is null */ +} else { +var49 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_parent,var48) on */ +var_other = var48; +{ +{ /* Inline kernel#Object#is_same_instance (var_parent,var_other) on */ +var54 = var_parent == var_other; +var52 = var54; +goto RET_LABEL53; +RET_LABEL53:(void)0; +} +} +var50 = var52; +goto RET_LABEL51; +RET_LABEL51:(void)0; +} +var49 = var50; +} +if (var49){ +var55 = NEW_mproject__MProject(&type_mproject__MProject); +{ +{ /* Inline modelbuilder#ModelBuilder#model (self) on */ +var58 = self->attrs[COLOR_modelbuilder__ModelBuilder___model].val; /* _model on */ +if (unlikely(var58 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 103); +show_backtrace(1); +} +var56 = var58; +RET_LABEL57:(void)0; +} +} +{ +mproject__MProject__init(var55, var_pn, var56); /* Direct call mproject#MProject#init on */ +} +var_mproject = var55; +var59 = NEW_mproject__MGroup(&type_mproject__MGroup); +var60 = NULL; +{ +mproject__MGroup__init(var59, var_pn, var_mproject, var60); /* Direct call mproject#MGroup#init on */ +} +var_mgroup = var59; +{ +{ /* Inline mproject#MProject#root= (var_mproject,var_mgroup) on */ +var_mproject->attrs[COLOR_mproject__MProject___root].val = var_mgroup; /* _root on */ +RET_LABEL61:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on */ +var64 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var64 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var62 = var64; +RET_LABEL63:(void)0; +} +} +if (varonce65) { +var66 = varonce65; +} else { +var67 = "found project `"; +var68 = 15; +var69 = string__NativeString__to_s_with_length(var67, var68); +var66 = var69; +varonce65 = var66; +} +if (varonce70) { +var71 = varonce70; +} else { +var72 = "` at "; +var73 = 5; +var74 = string__NativeString__to_s_with_length(var72, var73); +var71 = var74; +varonce70 = var71; +} +var75 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var75 = array_instance Array[Object] */ +var76 = 4; +var77 = NEW_array__NativeArray(var76, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var77)->values[0] = (val*) var66; +((struct instance_array__NativeArray*)var77)->values[1] = (val*) var_mproject; +((struct instance_array__NativeArray*)var77)->values[2] = (val*) var71; +((struct instance_array__NativeArray*)var77)->values[3] = (val*) var_dirpath; +{ +((void (*)(val*, val*, long))(var75->class->vft[COLOR_array__Array__with_native]))(var75, var77, var76) /* with_native on */; +} +} +{ +var78 = ((val* (*)(val*))(var75->class->vft[COLOR_string__Object__to_s]))(var75) /* to_s on */; +} +var79 = 2; +{ +toolcontext__ToolContext__info(var62, var78, var79); /* Direct call toolcontext#ToolContext#info on */ +} +} else { +var80 = NEW_mproject__MGroup(&type_mproject__MGroup); +{ +{ /* Inline mproject#MGroup#mproject (var_parent) on */ +var83 = var_parent->attrs[COLOR_mproject__MGroup___mproject].val; /* _mproject on */ +if (unlikely(var83 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproject"); +PRINT_ERROR(" (%s:%d)\n", "model/mproject.nit", 60); +show_backtrace(1); +} +var81 = var83; +RET_LABEL82:(void)0; +} +} +{ +mproject__MGroup__init(var80, var_pn, var81, var_parent); /* Direct call mproject#MGroup#init on */ +} +var_mgroup = var80; +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on */ +var86 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var86 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var84 = var86; +RET_LABEL85:(void)0; +} +} +if (varonce87) { +var88 = varonce87; +} else { +var89 = "found sub group `"; +var90 = 17; +var91 = string__NativeString__to_s_with_length(var89, var90); +var88 = var91; +varonce87 = var88; +} +{ +var92 = mproject__MGroup__full_name(var_mgroup); +} +if (varonce93) { +var94 = varonce93; +} else { +var95 = "` at "; +var96 = 5; +var97 = string__NativeString__to_s_with_length(var95, var96); +var94 = var97; +varonce93 = var94; +} +var98 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var98 = array_instance Array[Object] */ +var99 = 4; +var100 = NEW_array__NativeArray(var99, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var100)->values[0] = (val*) var88; +((struct instance_array__NativeArray*)var100)->values[1] = (val*) var92; +((struct instance_array__NativeArray*)var100)->values[2] = (val*) var94; +((struct instance_array__NativeArray*)var100)->values[3] = (val*) var_dirpath; +{ +((void (*)(val*, val*, long))(var98->class->vft[COLOR_array__Array__with_native]))(var98, var100, var99) /* with_native on */; +} +} +{ +var101 = ((val* (*)(val*))(var98->class->vft[COLOR_string__Object__to_s]))(var98) /* to_s on */; +} +var102 = 2; +{ +toolcontext__ToolContext__info(var84, var101, var102); /* Direct call toolcontext#ToolContext#info on */ +} +} +if (varonce103) { +var104 = varonce103; +} else { +var105 = "README.md"; +var106 = 9; +var107 = string__NativeString__to_s_with_length(var105, var106); +var104 = var107; +varonce103 = var104; +} +{ +var108 = file__String__join_path(var_dirpath2, var104); +} +var_readme = var108; +{ +var109 = file__String__file_exists(var_readme); +} +var110 = !var109; +if (var110){ +if (varonce111) { +var112 = varonce111; +} else { +var113 = "README"; +var114 = 6; +var115 = string__NativeString__to_s_with_length(var113, var114); +var112 = var115; +varonce111 = var112; +} +{ +var116 = file__String__join_path(var_dirpath2, var112); +} +var_readme = var116; +} else { +} +{ +var117 = file__String__file_exists(var_readme); +} +if (var117){ +var118 = NEW_mdoc__MDoc(&type_mdoc__MDoc); +{ +((void (*)(val*))(var118->class->vft[COLOR_kernel__Object__init]))(var118) /* init on */; +} +var_mdoc = var118; +var119 = NEW_file__IFStream(&type_file__IFStream); +{ +file__IFStream__open(var119, var_readme); /* Direct call file#IFStream#open on */ +} +var_s = var119; +for(;;) { +{ +var120 = stream__BufferedIStream__eof(var_s); +} +var121 = !var120; +if (var121){ +{ +{ /* Inline mdoc#MDoc#content (var_mdoc) on */ +var124 = var_mdoc->attrs[COLOR_mdoc__MDoc___content].val; /* _content on */ +if (unlikely(var124 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _content"); +PRINT_ERROR(" (%s:%d)\n", "model/mdoc.nit", 22); +show_backtrace(1); +} +var122 = var124; +RET_LABEL123:(void)0; +} +} +{ +var125 = stream__IStream__read_line(var_s); +} +{ +array__Array__add(var122, var125); /* Direct call array#Array#add on */ +} +} else { +goto BREAK_label; +} +} +BREAK_label: (void)0; +{ +{ /* Inline mdoc#MEntity#mdoc= (var_mgroup,var_mdoc) on */ +var_mgroup->attrs[COLOR_mdoc__MEntity___mdoc].val = var_mdoc; /* _mdoc on */ +RET_LABEL126:(void)0; +} +} +{ +{ /* Inline mdoc#MDoc#original_mentity= (var_mdoc,var_mgroup) on */ +var_mdoc->attrs[COLOR_mdoc__MDoc___original_mentity].val = var_mgroup; /* _original_mentity on */ +RET_LABEL127:(void)0; +} +} +} else { +} +{ +{ /* Inline mproject#MGroup#filepath= (var_mgroup,var_dirpath) on */ +var_mgroup->attrs[COLOR_mproject__MGroup___filepath].val = var_dirpath; /* _filepath on */ +RET_LABEL128:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModelBuilder#mgroups (self) on */ +var131 = self->attrs[COLOR_modelbuilder__ModelBuilder___mgroups].val; /* _mgroups on */ +if (unlikely(var131 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroups"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 471); +show_backtrace(1); +} +var129 = var131; +RET_LABEL130:(void)0; +} +} +{ +hash_collection__HashMap___91d_93d_61d(var129, var_rdp, var_mgroup); /* Direct call hash_collection#HashMap#[]= on */ +} +var = var_mgroup; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method modelbuilder#ModelBuilder#get_mgroup for (self: Object, String): nullable MGroup */ +val* VIRTUAL_modelbuilder__ModelBuilder__get_mgroup(val* self, val* p0) { +val* var /* : nullable MGroup */; +val* var1 /* : nullable MGroup */; +var1 = modelbuilder__ModelBuilder__get_mgroup(self, p0); +var = var1; +RET_LABEL:; +return var; +} +/* method modelbuilder#ModelBuilder#module_absolute_path for (self: ModelBuilder, String): String */ +val* modelbuilder__ModelBuilder__module_absolute_path(val* self, val* p0) { +val* var /* : String */; +val* var_path /* var path: String */; +val* var1 /* : String */; +val* var2 /* : String */; +val* var3 /* : String */; +var_path = p0; +{ +var1 = file__Object__getcwd(self); +} +{ +var2 = file__String__join_path(var1, var_path); +} +{ +var3 = file__String__simplify_path(var2); +} +var = var3; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method modelbuilder#ModelBuilder#module_absolute_path for (self: Object, String): String */ +val* VIRTUAL_modelbuilder__ModelBuilder__module_absolute_path(val* self, val* p0) { +val* var /* : String */; +val* var1 /* : String */; +var1 = modelbuilder__ModelBuilder__module_absolute_path(self, p0); +var = var1; +RET_LABEL:; +return var; +} +/* method modelbuilder#ModelBuilder#load_module_ast for (self: ModelBuilder, String): nullable AModule */ +val* modelbuilder__ModelBuilder__load_module_ast(val* self, val* p0) { +val* var /* : nullable AModule */; +val* var_filename /* var filename: String */; +val* var1 /* : nullable String */; +static val* varonce; +val* var2 /* : String */; +char* var3 /* : NativeString */; +long var4 /* : Int */; +val* var5 /* : FlatString */; +short int var6 /* : Bool */; +short int var7 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var9 /* : Bool */; +short int var10 /* : Bool */; +short int var11 /* : Bool */; +val* var12 /* : ToolContext */; +val* var14 /* : ToolContext */; +val* var15 /* : null */; +static val* varonce16; +val* var17 /* : String */; +char* var18 /* : NativeString */; +long var19 /* : Int */; +val* var20 /* : FlatString */; +static val* varonce21; +val* var22 /* : String */; +char* var23 /* : NativeString */; +long var24 /* : Int */; +val* var25 /* : FlatString */; +val* var26 /* : Array[Object] */; +long var27 /* : Int */; +val* var28 /* : NativeArray[Object] */; +val* var29 /* : String */; +val* var30 /* : null */; +short int var31 /* : Bool */; +short int var32 /* : Bool */; +val* var33 /* : ToolContext */; +val* var35 /* : ToolContext */; +val* var36 /* : null */; +static val* varonce37; +val* var38 /* : String */; +char* var39 /* : NativeString */; +long var40 /* : Int */; +val* var41 /* : FlatString */; +static val* varonce42; +val* var43 /* : String */; +char* var44 /* : NativeString */; +long var45 /* : Int */; +val* var46 /* : FlatString */; +val* var47 /* : Array[Object] */; +long var48 /* : Int */; +val* var49 /* : NativeArray[Object] */; +val* var50 /* : String */; +val* var51 /* : null */; +val* var52 /* : ToolContext */; +val* var54 /* : ToolContext */; +static val* varonce55; +val* var56 /* : String */; +char* var57 /* : NativeString */; +long var58 /* : Int */; +val* var59 /* : FlatString */; +val* var60 /* : Array[Object] */; +long var61 /* : Int */; +val* var62 /* : NativeArray[Object] */; +val* var63 /* : String */; +long var64 /* : Int */; +val* var65 /* : IFStream */; +val* var_file /* var file: IFStream */; +val* var66 /* : Lexer */; +val* var67 /* : SourceFile */; +val* var_lexer /* var lexer: Lexer */; +val* var68 /* : Parser */; +val* var_parser /* var parser: Parser */; +val* var69 /* : Start */; +val* var_tree /* var tree: Start */; +val* var70 /* : nullable AModule */; +val* var72 /* : nullable AModule */; +val* var_nmodule /* var nmodule: nullable AModule */; +val* var73 /* : null */; +short int var74 /* : Bool */; +short int var75 /* : Bool */; +val* var_other77 /* var other: nullable Object */; +short int var78 /* : Bool */; +short int var80 /* : Bool */; +val* var81 /* : EOF */; +val* var83 /* : EOF */; +val* var_neof /* var neof: EOF */; +short int var84 /* : Bool */; +int cltype; +int idtype; +val* var85 /* : String */; +val* var87 /* : String */; +val* var88 /* : null */; +var_filename = p0; +{ +var1 = file__String__file_extension(var_filename); +} +if (varonce) { +var2 = varonce; +} else { +var3 = "nit"; +var4 = 3; +var5 = string__NativeString__to_s_with_length(var3, var4); +var2 = var5; +varonce = var2; +} +if (var1 == NULL) { +var6 = 1; /* cannot be null */ +} else { +{ /* Inline kernel#Object#!= (var1,var2) on */ +var_other = var2; +{ +var10 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_kernel__Object___61d_61d]))(var1, var_other) /* == on */; +var9 = var10; +} +var11 = !var9; +var7 = var11; +goto RET_LABEL8; +RET_LABEL8:(void)0; +} +var6 = var7; +} +if (var6){ +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on */ +var14 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var14 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var12 = var14; +RET_LABEL13:(void)0; +} +} +var15 = NULL; +if (varonce16) { +var17 = varonce16; +} else { +var18 = "Error: file "; +var19 = 12; +var20 = string__NativeString__to_s_with_length(var18, var19); +var17 = var20; +varonce16 = var17; +} +if (varonce21) { +var22 = varonce21; +} else { +var23 = " is not a valid nit module."; +var24 = 27; +var25 = string__NativeString__to_s_with_length(var23, var24); +var22 = var25; +varonce21 = var22; +} +var26 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var26 = array_instance Array[Object] */ +var27 = 3; +var28 = NEW_array__NativeArray(var27, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var28)->values[0] = (val*) var17; +((struct instance_array__NativeArray*)var28)->values[1] = (val*) var_filename; +((struct instance_array__NativeArray*)var28)->values[2] = (val*) var22; +{ +((void (*)(val*, val*, long))(var26->class->vft[COLOR_array__Array__with_native]))(var26, var28, var27) /* with_native on */; +} +} +{ +var29 = ((val* (*)(val*))(var26->class->vft[COLOR_string__Object__to_s]))(var26) /* to_s on */; +} +{ +toolcontext__ToolContext__error(var12, var15, var29); /* Direct call toolcontext#ToolContext#error on */ +} +var30 = NULL; +var = var30; +goto RET_LABEL; +} else { +} +{ +var31 = file__String__file_exists(var_filename); +} +var32 = !var31; +if (var32){ +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on */ +var35 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var35 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var33 = var35; +RET_LABEL34:(void)0; +} +} +var36 = NULL; +if (varonce37) { +var38 = varonce37; +} else { +var39 = "Error: file "; +var40 = 12; +var41 = string__NativeString__to_s_with_length(var39, var40); +var38 = var41; +varonce37 = var38; +} +if (varonce42) { +var43 = varonce42; +} else { +var44 = " not found."; +var45 = 11; +var46 = string__NativeString__to_s_with_length(var44, var45); +var43 = var46; +varonce42 = var43; +} +var47 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var47 = array_instance Array[Object] */ +var48 = 3; +var49 = NEW_array__NativeArray(var48, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var49)->values[0] = (val*) var38; +((struct instance_array__NativeArray*)var49)->values[1] = (val*) var_filename; +((struct instance_array__NativeArray*)var49)->values[2] = (val*) var43; +{ +((void (*)(val*, val*, long))(var47->class->vft[COLOR_array__Array__with_native]))(var47, var49, var48) /* with_native on */; +} +} +{ +var50 = ((val* (*)(val*))(var47->class->vft[COLOR_string__Object__to_s]))(var47) /* to_s on */; +} +{ +toolcontext__ToolContext__error(var33, var36, var50); /* Direct call toolcontext#ToolContext#error on */ +} +var51 = NULL; +var = var51; +goto RET_LABEL; +} else { +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on */ +var54 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var54 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var52 = var54; +RET_LABEL53:(void)0; +} +} +if (varonce55) { +var56 = varonce55; +} else { +var57 = "load module "; +var58 = 12; +var59 = string__NativeString__to_s_with_length(var57, var58); +var56 = var59; +varonce55 = var56; +} +var60 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var60 = array_instance Array[Object] */ +var61 = 2; +var62 = NEW_array__NativeArray(var61, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var62)->values[0] = (val*) var56; +((struct instance_array__NativeArray*)var62)->values[1] = (val*) var_filename; +{ +((void (*)(val*, val*, long))(var60->class->vft[COLOR_array__Array__with_native]))(var60, var62, var61) /* with_native on */; +} +} +{ +var63 = ((val* (*)(val*))(var60->class->vft[COLOR_string__Object__to_s]))(var60) /* to_s on */; +} +var64 = 2; +{ +toolcontext__ToolContext__info(var52, var63, var64); /* Direct call toolcontext#ToolContext#info on */ +} +var65 = NEW_file__IFStream(&type_file__IFStream); +{ +file__IFStream__open(var65, var_filename); /* Direct call file#IFStream#open on */ +} +var_file = var65; +var66 = NEW_lexer_work__Lexer(&type_lexer_work__Lexer); +var67 = NEW_location__SourceFile(&type_location__SourceFile); +{ +location__SourceFile__init(var67, var_filename, var_file); /* Direct call location#SourceFile#init on */ +} +{ +lexer_work__Lexer__init(var66, var67); /* Direct call lexer_work#Lexer#init on */ +} +var_lexer = var66; +var68 = NEW_parser_work__Parser(&type_parser_work__Parser); +{ +parser_work__Parser__init(var68, var_lexer); /* Direct call parser_work#Parser#init on */ +} +var_parser = var68; +{ +var69 = parser_work__Parser__parse(var_parser); +} +var_tree = var69; +{ +file__IFStream__close(var_file); /* Direct call file#IFStream#close on */ +} +{ +{ /* Inline parser_nodes#Start#n_base (var_tree) on */ +var72 = var_tree->attrs[COLOR_parser_nodes__Start___n_base].val; /* _n_base on */ +var70 = var72; +RET_LABEL71:(void)0; +} +} +var_nmodule = var70; +var73 = NULL; +if (var_nmodule == NULL) { +var74 = 1; /* is null */ +} else { +var74 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_nmodule,var73) on */ +var_other77 = var73; +{ +{ /* Inline kernel#Object#is_same_instance (var_nmodule,var_other77) on */ +var80 = var_nmodule == var_other77; +var78 = var80; +goto RET_LABEL79; +RET_LABEL79:(void)0; +} +} +var75 = var78; +goto RET_LABEL76; +RET_LABEL76:(void)0; +} +var74 = var75; +} +if (var74){ +{ +{ /* Inline parser_nodes#Start#n_eof (var_tree) on */ +var83 = var_tree->attrs[COLOR_parser_nodes__Start___n_eof].val; /* _n_eof on */ +if (unlikely(var83 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_eof"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 2073); +show_backtrace(1); +} +var81 = var83; +RET_LABEL82:(void)0; +} +} +var_neof = var81; +/* isa AError */ +cltype = type_parser_nodes__AError.color; +idtype = type_parser_nodes__AError.id; +if(cltype >= var_neof->type->table_size) { +var84 = 0; +} else { +var84 = var_neof->type->type_table[cltype] == idtype; +} +if (unlikely(!var84)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 562); +show_backtrace(1); +} +{ +{ /* Inline lexer_work#AError#message (var_neof) on */ +var87 = var_neof->attrs[COLOR_lexer_work__AError___message].val; /* _message on */ +if (unlikely(var87 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _message"); +PRINT_ERROR(" (%s:%d)\n", "parser/lexer_work.nit", 50); +show_backtrace(1); +} +var85 = var87; +RET_LABEL86:(void)0; +} +} +{ +modelbuilder__ModelBuilder__error(self, var_neof, var85); /* Direct call modelbuilder#ModelBuilder#error on */ +} +var88 = NULL; +var = var88; +goto RET_LABEL; +} else { +} +var = var_nmodule; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method modelbuilder#ModelBuilder#load_module_ast for (self: Object, String): nullable AModule */ +val* VIRTUAL_modelbuilder__ModelBuilder__load_module_ast(val* self, val* p0) { +val* var /* : nullable AModule */; +val* var1 /* : nullable AModule */; +var1 = modelbuilder__ModelBuilder__load_module_ast(self, p0); +var = var1; +RET_LABEL:; +return var; +} +/* method modelbuilder#ModelBuilder#load_module for (self: ModelBuilder, String): nullable AModule */ +val* modelbuilder__ModelBuilder__load_module(val* self, val* p0) { +val* var /* : nullable AModule */; +val* var_filename /* var filename: String */; +val* var1 /* : nullable ModulePath */; +val* var_file /* var file: nullable ModulePath */; +val* var2 /* : null */; +short int var3 /* : Bool */; +short int var4 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var6 /* : Bool */; +short int var8 /* : Bool */; +val* var9 /* : null */; +val* var10 /* : nullable MModule */; +val* var12 /* : nullable MModule */; +val* var_mmodule /* var mmodule: nullable MModule */; +val* var13 /* : null */; +short int var14 /* : Bool */; +short int var15 /* : Bool */; +val* var_other17 /* var other: nullable Object */; +short int var18 /* : Bool */; +short int var19 /* : Bool */; +short int var20 /* : Bool */; +val* var21 /* : HashMap[MModule, AModule] */; +val* var23 /* : HashMap[MModule, AModule] */; +val* var24 /* : nullable Object */; +val* var25 /* : String */; +val* var27 /* : String */; +val* var28 /* : nullable AModule */; +val* var_nmodule /* var nmodule: nullable AModule */; +val* var29 /* : null */; +short int var30 /* : Bool */; +short int var31 /* : Bool */; +short int var33 /* : Bool */; +short int var35 /* : Bool */; +val* var36 /* : null */; +val* var37 /* : MGroup */; +val* var39 /* : MGroup */; +val* var40 /* : String */; +val* var42 /* : String */; +val* var43 /* : nullable MModule */; +val* var44 /* : null */; +short int var45 /* : Bool */; +short int var46 /* : Bool */; +short int var48 /* : Bool */; +short int var50 /* : Bool */; +val* var51 /* : null */; +var_filename = p0; +{ +var1 = modelbuilder__ModelBuilder__identify_file(self, var_filename); +} +var_file = var1; +var2 = NULL; +if (var_file == NULL) { +var3 = 1; /* is null */ +} else { +var3 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_file,var2) on */ +var_other = var2; +{ +{ /* Inline kernel#Object#is_same_instance (var_file,var_other) on */ +var8 = var_file == var_other; +var6 = var8; +goto RET_LABEL7; +RET_LABEL7:(void)0; +} +} +var4 = var6; +goto RET_LABEL5; +RET_LABEL5:(void)0; +} +var3 = var4; +} +if (var3){ +var9 = NULL; +var = var9; +goto RET_LABEL; +} else { +} +{ +{ /* Inline modelbuilder#ModulePath#mmodule (var_file) on */ +var12 = var_file->attrs[COLOR_modelbuilder__ModulePath___mmodule].val; /* _mmodule on */ +var10 = var12; +RET_LABEL11:(void)0; +} +} +var_mmodule = var10; +var13 = NULL; +if (var_mmodule == NULL) { +var14 = 0; /* is null */ +} else { +var14 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_mmodule,var13) on */ +var_other17 = var13; +{ +var19 = ((short int (*)(val*, val*))(var_mmodule->class->vft[COLOR_kernel__Object___61d_61d]))(var_mmodule, var_other17) /* == on */; +var18 = var19; +} +var20 = !var18; +var15 = var20; +goto RET_LABEL16; +RET_LABEL16:(void)0; +} +var14 = var15; +} +if (var14){ +{ +{ /* Inline modelbuilder#ModelBuilder#mmodule2nmodule (self) on */ +var23 = self->attrs[COLOR_modelbuilder__ModelBuilder___mmodule2nmodule].val; /* _mmodule2nmodule on */ +if (unlikely(var23 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule2nmodule"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 728); +show_backtrace(1); +} +var21 = var23; +RET_LABEL22:(void)0; +} +} +{ +var24 = hash_collection__HashMap___91d_93d(var21, var_mmodule); +} +var = var24; +goto RET_LABEL; +} else { +} +{ +{ /* Inline modelbuilder#ModulePath#filepath (var_file) on */ +var27 = var_file->attrs[COLOR_modelbuilder__ModulePath___filepath].val; /* _filepath on */ +if (unlikely(var27 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _filepath"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 773); +show_backtrace(1); +} +var25 = var27; +RET_LABEL26:(void)0; +} +} +{ +var28 = modelbuilder__ModelBuilder__load_module_ast(self, var25); +} +var_nmodule = var28; +var29 = NULL; +if (var_nmodule == NULL) { +var30 = 1; /* is null */ +} else { +var30 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_nmodule,var29) on */ +var_other = var29; +{ +{ /* Inline kernel#Object#is_same_instance (var_nmodule,var_other) on */ +var35 = var_nmodule == var_other; +var33 = var35; +goto RET_LABEL34; +RET_LABEL34:(void)0; +} +} +var31 = var33; +goto RET_LABEL32; +RET_LABEL32:(void)0; +} +var30 = var31; +} +if (var30){ +var36 = NULL; +var = var36; +goto RET_LABEL; +} else { +} +{ +{ /* Inline modelbuilder#ModulePath#mgroup (var_file) on */ +var39 = var_file->attrs[COLOR_modelbuilder__ModulePath___mgroup].val; /* _mgroup on */ +if (unlikely(var39 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroup"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 776); +show_backtrace(1); +} +var37 = var39; +RET_LABEL38:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModulePath#name (var_file) on */ +var42 = var_file->attrs[COLOR_modelbuilder__ModulePath___name].val; /* _name on */ +if (unlikely(var42 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 769); +show_backtrace(1); +} +var40 = var42; +RET_LABEL41:(void)0; +} +} +{ +var43 = modelbuilder__ModelBuilder__build_a_mmodule(self, var37, var40, var_nmodule); +} +var_mmodule = var43; +var44 = NULL; +if (var_mmodule == NULL) { +var45 = 1; /* is null */ +} else { +var45 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_mmodule,var44) on */ +var_other = var44; +{ +{ /* Inline kernel#Object#is_same_instance (var_mmodule,var_other) on */ +var50 = var_mmodule == var_other; +var48 = var50; +goto RET_LABEL49; +RET_LABEL49:(void)0; +} +} +var46 = var48; +goto RET_LABEL47; +RET_LABEL47:(void)0; +} +var45 = var46; +} +if (var45){ +var51 = NULL; +var = var51; +goto RET_LABEL; +} else { +} +{ +{ /* Inline modelbuilder#ModulePath#mmodule= (var_file,var_mmodule) on */ +var_file->attrs[COLOR_modelbuilder__ModulePath___mmodule].val = var_mmodule; /* _mmodule on */ +RET_LABEL52:(void)0; +} +} +{ +modelbuilder__ModelBuilder__build_module_importation(self, var_nmodule); /* Direct call modelbuilder#ModelBuilder#build_module_importation on */ +} +var = var_nmodule; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method modelbuilder#ModelBuilder#load_module for (self: Object, String): nullable AModule */ +val* VIRTUAL_modelbuilder__ModelBuilder__load_module(val* self, val* p0) { +val* var /* : nullable AModule */; +val* var1 /* : nullable AModule */; +var1 = modelbuilder__ModelBuilder__load_module(self, p0); +var = var1; +RET_LABEL:; +return var; +} +/* method modelbuilder#ModelBuilder#build_a_mmodule for (self: ModelBuilder, nullable MGroup, String, AModule): nullable MModule */ +val* modelbuilder__ModelBuilder__build_a_mmodule(val* self, val* p0, val* p1, val* p2) { +val* var /* : nullable MModule */; +val* var_mgroup /* var mgroup: nullable MGroup */; +val* var_mod_name /* var mod_name: String */; +val* var_nmodule /* var nmodule: AModule */; +val* var1 /* : nullable AModuledecl */; +val* var3 /* : nullable AModuledecl */; +val* var_decl /* var decl: nullable AModuledecl */; +val* var4 /* : null */; +short int var5 /* : Bool */; +short int var6 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var8 /* : Bool */; +short int var10 /* : Bool */; +val* var11 /* : AModuleName */; +val* var13 /* : AModuleName */; +val* var14 /* : TId */; +val* var16 /* : TId */; +val* var17 /* : String */; +val* var_decl_name /* var decl_name: String */; +short int var18 /* : Bool */; +short int var19 /* : Bool */; +val* var_other21 /* var other: nullable Object */; +short int var22 /* : Bool */; +short int var23 /* : Bool */; +short int var24 /* : Bool */; +val* var25 /* : AModuleName */; +val* var27 /* : AModuleName */; +static val* varonce; +val* var28 /* : String */; +char* var29 /* : NativeString */; +long var30 /* : Int */; +val* var31 /* : FlatString */; +static val* varonce32; +val* var33 /* : String */; +char* var34 /* : NativeString */; +long var35 /* : Int */; +val* var36 /* : FlatString */; +val* var37 /* : Array[Object] */; +long var38 /* : Int */; +val* var39 /* : NativeArray[Object] */; +val* var40 /* : String */; +val* var41 /* : MModule */; +val* var42 /* : Model */; +val* var44 /* : Model */; +val* var45 /* : Location */; +val* var47 /* : Location */; +val* var_mmodule /* var mmodule: MModule */; +val* var49 /* : Array[AModule] */; +val* var51 /* : Array[AModule] */; +val* var52 /* : HashMap[MModule, AModule] */; +val* var54 /* : HashMap[MModule, AModule] */; +val* var55 /* : null */; +short int var56 /* : Bool */; +short int var57 /* : Bool */; +short int var59 /* : Bool */; +short int var60 /* : Bool */; +short int var61 /* : Bool */; +val* var62 /* : nullable ADoc */; +val* var64 /* : nullable ADoc */; +val* var_ndoc /* var ndoc: nullable ADoc */; +val* var65 /* : null */; +short int var66 /* : Bool */; +short int var67 /* : Bool */; +short int var69 /* : Bool */; +short int var70 /* : Bool */; +short int var71 /* : Bool */; +val* var72 /* : MDoc */; +val* var_mdoc /* var mdoc: MDoc */; +static val* varonce75; +val* var76 /* : String */; +char* var77 /* : NativeString */; +long var78 /* : Int */; +val* var79 /* : FlatString */; +static val* varonce80; +val* var81 /* : String */; +char* var82 /* : NativeString */; +long var83 /* : Int */; +val* var84 /* : FlatString */; +static val* varonce85; +val* var86 /* : String */; +char* var87 /* : NativeString */; +long var88 /* : Int */; +val* var89 /* : FlatString */; +val* var90 /* : Array[Object] */; +long var91 /* : Int */; +val* var92 /* : NativeArray[Object] */; +val* var93 /* : String */; +var_mgroup = p0; +var_mod_name = p1; +var_nmodule = p2; +{ +{ /* Inline parser_nodes#AModule#n_moduledecl (var_nmodule) on */ +var3 = var_nmodule->attrs[COLOR_parser_nodes__AModule___n_moduledecl].val; /* _n_moduledecl on */ +var1 = var3; +RET_LABEL2:(void)0; +} +} +var_decl = var1; +var4 = NULL; +if (var_decl == NULL) { +var5 = 1; /* is null */ +} else { +var5 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_decl,var4) on */ +var_other = var4; +{ +{ /* Inline kernel#Object#is_same_instance (var_decl,var_other) on */ +var10 = var_decl == var_other; +var8 = var10; +goto RET_LABEL9; +RET_LABEL9:(void)0; +} +} +var6 = var8; +goto RET_LABEL7; +RET_LABEL7:(void)0; +} +var5 = var6; +} +if (var5){ +} else { +{ +{ /* Inline parser_nodes#AModuledecl#n_name (var_decl) on */ +var13 = var_decl->attrs[COLOR_parser_nodes__AModuledecl___n_name].val; /* _n_name on */ +if (unlikely(var13 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 869); +show_backtrace(1); +} +var11 = var13; +RET_LABEL12:(void)0; +} +} +{ +{ /* Inline parser_nodes#AModuleName#n_id (var11) on */ +var16 = var11->attrs[COLOR_parser_nodes__AModuleName___n_id].val; /* _n_id on */ +if (unlikely(var16 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1990); +show_backtrace(1); +} +var14 = var16; +RET_LABEL15:(void)0; +} +} +{ +var17 = lexer_work__Token__text(var14); +} +var_decl_name = var17; +{ +{ /* Inline kernel#Object#!= (var_decl_name,var_mod_name) on */ +var_other21 = var_mod_name; +{ +var23 = ((short int (*)(val*, val*))(var_decl_name->class->vft[COLOR_kernel__Object___61d_61d]))(var_decl_name, var_other21) /* == on */; +var22 = var23; +} +var24 = !var22; +var19 = var24; +goto RET_LABEL20; +RET_LABEL20:(void)0; +} +var18 = var19; +} +if (var18){ +{ +{ /* Inline parser_nodes#AModuledecl#n_name (var_decl) on */ +var27 = var_decl->attrs[COLOR_parser_nodes__AModuledecl___n_name].val; /* _n_name on */ +if (unlikely(var27 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 869); +show_backtrace(1); +} +var25 = var27; +RET_LABEL26:(void)0; +} +} +if (varonce) { +var28 = varonce; +} else { +var29 = "Error: module name missmatch; declared "; +var30 = 39; +var31 = string__NativeString__to_s_with_length(var29, var30); +var28 = var31; +varonce = var28; +} +if (varonce32) { +var33 = varonce32; +} else { +var34 = " file named "; +var35 = 12; +var36 = string__NativeString__to_s_with_length(var34, var35); +var33 = var36; +varonce32 = var33; +} +var37 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var37 = array_instance Array[Object] */ +var38 = 4; +var39 = NEW_array__NativeArray(var38, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var39)->values[0] = (val*) var28; +((struct instance_array__NativeArray*)var39)->values[1] = (val*) var_decl_name; +((struct instance_array__NativeArray*)var39)->values[2] = (val*) var33; +((struct instance_array__NativeArray*)var39)->values[3] = (val*) var_mod_name; +{ +((void (*)(val*, val*, long))(var37->class->vft[COLOR_array__Array__with_native]))(var37, var39, var38) /* with_native on */; +} +} +{ +var40 = ((val* (*)(val*))(var37->class->vft[COLOR_string__Object__to_s]))(var37) /* to_s on */; +} +{ +modelbuilder__ModelBuilder__error(self, var25, var40); /* Direct call modelbuilder#ModelBuilder#error on */ +} +} else { +} +} +var41 = NEW_mmodule__MModule(&type_mmodule__MModule); +{ +{ /* Inline modelbuilder#ModelBuilder#model (self) on */ +var44 = self->attrs[COLOR_modelbuilder__ModelBuilder___model].val; /* _model on */ +if (unlikely(var44 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 103); +show_backtrace(1); +} +var42 = var44; +RET_LABEL43:(void)0; +} +} +{ +{ /* Inline parser_nodes#ANode#location (var_nmodule) on */ +var47 = var_nmodule->attrs[COLOR_parser_nodes__ANode___location].val; /* _location on */ +if (unlikely(var47 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 23); +show_backtrace(1); +} +var45 = var47; +RET_LABEL46:(void)0; +} +} +{ +mmodule__MModule__init(var41, var42, var_mgroup, var_mod_name, var45); /* Direct call mmodule#MModule#init on */ +} +var_mmodule = var41; +{ +{ /* Inline modelbuilder#AModule#mmodule= (var_nmodule,var_mmodule) on */ +var_nmodule->attrs[COLOR_modelbuilder__AModule___mmodule].val = var_mmodule; /* _mmodule on */ +RET_LABEL48:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModelBuilder#nmodules (self) on */ +var51 = self->attrs[COLOR_modelbuilder__ModelBuilder___nmodules].val; /* _nmodules on */ +if (unlikely(var51 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _nmodules"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 725); +show_backtrace(1); +} +var49 = var51; +RET_LABEL50:(void)0; +} +} +{ +array__Array__add(var49, var_nmodule); /* Direct call array#Array#add on */ +} +{ +{ /* Inline modelbuilder#ModelBuilder#mmodule2nmodule (self) on */ +var54 = self->attrs[COLOR_modelbuilder__ModelBuilder___mmodule2nmodule].val; /* _mmodule2nmodule on */ +if (unlikely(var54 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule2nmodule"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 728); +show_backtrace(1); +} +var52 = var54; +RET_LABEL53:(void)0; +} +} +{ +hash_collection__HashMap___91d_93d_61d(var52, var_mmodule, var_nmodule); /* Direct call hash_collection#HashMap#[]= on */ +} +var55 = NULL; +if (var_decl == NULL) { +var56 = 0; /* is null */ +} else { +var56 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_decl,var55) on */ +var_other21 = var55; +{ +var60 = ((short int (*)(val*, val*))(var_decl->class->vft[COLOR_kernel__Object___61d_61d]))(var_decl, var_other21) /* == on */; +var59 = var60; +} +var61 = !var59; +var57 = var61; +goto RET_LABEL58; +RET_LABEL58:(void)0; +} +var56 = var57; +} +if (var56){ +{ +{ /* Inline parser_nodes#AModuledecl#n_doc (var_decl) on */ +var64 = var_decl->attrs[COLOR_parser_nodes__AModuledecl___n_doc].val; /* _n_doc on */ +var62 = var64; +RET_LABEL63:(void)0; +} +} +var_ndoc = var62; +var65 = NULL; +if (var_ndoc == NULL) { +var66 = 0; /* is null */ +} else { +var66 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_ndoc,var65) on */ +var_other21 = var65; +{ +var70 = ((short int (*)(val*, val*))(var_ndoc->class->vft[COLOR_kernel__Object___61d_61d]))(var_ndoc, var_other21) /* == on */; +var69 = var70; +} +var71 = !var69; +var67 = var71; +goto RET_LABEL68; +RET_LABEL68:(void)0; +} +var66 = var67; +} +if (var66){ +{ +var72 = modelbuilder__ADoc__to_mdoc(var_ndoc); +} +var_mdoc = var72; +{ +{ /* Inline mdoc#MEntity#mdoc= (var_mmodule,var_mdoc) on */ +var_mmodule->attrs[COLOR_mdoc__MEntity___mdoc].val = var_mdoc; /* _mdoc on */ +RET_LABEL73:(void)0; +} +} +{ +{ /* Inline mdoc#MDoc#original_mentity= (var_mdoc,var_mmodule) on */ +var_mdoc->attrs[COLOR_mdoc__MDoc___original_mentity].val = var_mmodule; /* _original_mentity on */ +RET_LABEL74:(void)0; +} +} +} else { +if (varonce75) { +var76 = varonce75; +} else { +var77 = "missing-doc"; +var78 = 11; +var79 = string__NativeString__to_s_with_length(var77, var78); +var76 = var79; +varonce75 = var76; +} +if (varonce80) { +var81 = varonce80; +} else { +var82 = "Documentation warning: Undocumented module `"; +var83 = 44; +var84 = string__NativeString__to_s_with_length(var82, var83); +var81 = var84; +varonce80 = var81; +} +if (varonce85) { +var86 = varonce85; +} else { +var87 = "`"; +var88 = 1; +var89 = string__NativeString__to_s_with_length(var87, var88); +var86 = var89; +varonce85 = var86; +} +var90 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var90 = array_instance Array[Object] */ +var91 = 3; +var92 = NEW_array__NativeArray(var91, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var92)->values[0] = (val*) var81; +((struct instance_array__NativeArray*)var92)->values[1] = (val*) var_mmodule; +((struct instance_array__NativeArray*)var92)->values[2] = (val*) var86; +{ +((void (*)(val*, val*, long))(var90->class->vft[COLOR_array__Array__with_native]))(var90, var92, var91) /* with_native on */; +} +} +{ +var93 = ((val* (*)(val*))(var90->class->vft[COLOR_string__Object__to_s]))(var90) /* to_s on */; +} +{ +modelbuilder__ModelBuilder__advice(self, var_decl, var76, var93); /* Direct call modelbuilder#ModelBuilder#advice on */ +} +} +} else { +} +var = var_mmodule; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method modelbuilder#ModelBuilder#build_a_mmodule for (self: Object, nullable MGroup, String, AModule): nullable MModule */ +val* VIRTUAL_modelbuilder__ModelBuilder__build_a_mmodule(val* self, val* p0, val* p1, val* p2) { +val* var /* : nullable MModule */; +val* var1 /* : nullable MModule */; +var1 = modelbuilder__ModelBuilder__build_a_mmodule(self, p0, p1, p2); +var = var1; +RET_LABEL:; +return var; +} +/* method modelbuilder#ModelBuilder#build_module_importation for (self: ModelBuilder, AModule) */ +void modelbuilder__ModelBuilder__build_module_importation(val* self, val* p0) { +val* var_nmodule /* var nmodule: AModule */; +short int var /* : Bool */; +short int var2 /* : Bool */; +short int var3 /* : Bool */; +val* var5 /* : nullable MModule */; +val* var7 /* : nullable MModule */; +val* var_mmodule /* var mmodule: MModule */; +short int var8 /* : Bool */; +short int var_stdimport /* var stdimport: Bool */; +val* var9 /* : Array[MModule] */; +val* var_imported_modules /* var imported_modules: Array[MModule] */; +val* var10 /* : ANodes[AImport] */; +val* var12 /* : ANodes[AImport] */; +val* var_ /* var : ANodes[AImport] */; +val* var13 /* : Iterator[ANode] */; +val* var_14 /* var : Iterator[AImport] */; +short int var15 /* : Bool */; +val* var16 /* : nullable Object */; +val* var_aimport /* var aimport: AImport */; +short int var17 /* : Bool */; +short int var18 /* : Bool */; +int cltype; +int idtype; +short int var19 /* : Bool */; +val* var20 /* : nullable MGroup */; +val* var22 /* : nullable MGroup */; +val* var_mgroup /* var mgroup: nullable MGroup */; +val* var23 /* : AModuleName */; +val* var25 /* : AModuleName */; +val* var26 /* : nullable TQuad */; +val* var28 /* : nullable TQuad */; +val* var29 /* : null */; +short int var30 /* : Bool */; +short int var31 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var33 /* : Bool */; +short int var34 /* : Bool */; +short int var35 /* : Bool */; +val* var36 /* : null */; +val* var37 /* : AModuleName */; +val* var39 /* : AModuleName */; +val* var40 /* : ANodes[TId] */; +val* var42 /* : ANodes[TId] */; +val* var_43 /* var : ANodes[TId] */; +val* var44 /* : Iterator[ANode] */; +val* var_45 /* var : Iterator[TId] */; +short int var46 /* : Bool */; +val* var47 /* : nullable Object */; +val* var_grp /* var grp: TId */; +val* var48 /* : String */; +val* var49 /* : nullable ModulePath */; +val* var_path /* var path: nullable ModulePath */; +val* var50 /* : null */; +short int var51 /* : Bool */; +short int var52 /* : Bool */; +val* var_other54 /* var other: nullable Object */; +short int var55 /* : Bool */; +short int var57 /* : Bool */; +val* var58 /* : MGroup */; +val* var60 /* : MGroup */; +val* var63 /* : AModuleName */; +val* var65 /* : AModuleName */; +val* var66 /* : TId */; +val* var68 /* : TId */; +val* var69 /* : String */; +val* var_mod_name /* var mod_name: String */; +val* var70 /* : AModuleName */; +val* var72 /* : AModuleName */; +val* var73 /* : nullable MModule */; +val* var_sup /* var sup: nullable MModule */; +val* var74 /* : null */; +short int var75 /* : Bool */; +short int var76 /* : Bool */; +short int var78 /* : Bool */; +short int var80 /* : Bool */; +val* var82 /* : AVisibility */; +val* var84 /* : AVisibility */; +val* var85 /* : MVisibility */; +val* var_mvisibility /* var mvisibility: MVisibility */; +val* var86 /* : MVisibility */; +short int var87 /* : Bool */; +short int var88 /* : Bool */; +short int var90 /* : Bool */; +short int var92 /* : Bool */; +val* var93 /* : AVisibility */; +val* var95 /* : AVisibility */; +static val* varonce; +val* var96 /* : String */; +char* var97 /* : NativeString */; +long var98 /* : Int */; +val* var99 /* : FlatString */; +short int var100 /* : Bool */; +short int var101 /* : Bool */; +short int var103 /* : Bool */; +short int var105 /* : Bool */; +val* var106 /* : AModuleName */; +val* var108 /* : AModuleName */; +static val* varonce109; +val* var110 /* : String */; +char* var111 /* : NativeString */; +long var112 /* : Int */; +val* var113 /* : FlatString */; +static val* varonce114; +val* var115 /* : String */; +char* var116 /* : NativeString */; +long var117 /* : Int */; +val* var118 /* : FlatString */; +val* var119 /* : Array[Object] */; +long var120 /* : Int */; +val* var121 /* : NativeArray[Object] */; +val* var122 /* : String */; +val* var123 /* : POSetElement[MModule] */; +val* var125 /* : POSetElement[MModule] */; +short int var126 /* : Bool */; +val* var127 /* : AModuleName */; +val* var129 /* : AModuleName */; +static val* varonce130; +val* var131 /* : String */; +char* var132 /* : NativeString */; +long var133 /* : Int */; +val* var134 /* : FlatString */; +static val* varonce135; +val* var136 /* : String */; +char* var137 /* : NativeString */; +long var138 /* : Int */; +val* var139 /* : FlatString */; +static val* varonce140; +val* var141 /* : String */; +char* var142 /* : NativeString */; +long var143 /* : Int */; +val* var144 /* : FlatString */; +val* var145 /* : Array[Object] */; +long var146 /* : Int */; +val* var147 /* : NativeArray[Object] */; +val* var148 /* : String */; +static val* varonce151; +val* var152 /* : String */; +char* var153 /* : NativeString */; +long var154 /* : Int */; +val* var155 /* : FlatString */; +val* var_mod_name156 /* var mod_name: String */; +val* var157 /* : null */; +val* var158 /* : nullable MModule */; +val* var_sup159 /* var sup: nullable MModule */; +val* var160 /* : null */; +short int var161 /* : Bool */; +short int var162 /* : Bool */; +short int var164 /* : Bool */; +short int var165 /* : Bool */; +short int var166 /* : Bool */; +val* var167 /* : MVisibility */; +val* var168 /* : ToolContext */; +val* var170 /* : ToolContext */; +static val* varonce171; +val* var172 /* : String */; +char* var173 /* : NativeString */; +long var174 /* : Int */; +val* var175 /* : FlatString */; +static val* varonce176; +val* var177 /* : String */; +char* var178 /* : NativeString */; +long var179 /* : Int */; +val* var180 /* : FlatString */; +val* var181 /* : String */; +val* var182 /* : Array[Object] */; +long var183 /* : Int */; +val* var184 /* : NativeArray[Object] */; +val* var185 /* : String */; +long var186 /* : Int */; +val* var187 /* : POSetElement[MModule] */; +val* var189 /* : POSetElement[MModule] */; +val* var190 /* : Collection[Object] */; +val* var_directs /* var directs: Collection[MModule] */; +val* var191 /* : ANodes[AImport] */; +val* var193 /* : ANodes[AImport] */; +val* var_194 /* var : ANodes[AImport] */; +val* var195 /* : Iterator[ANode] */; +val* var_196 /* var : Iterator[AImport] */; +short int var197 /* : Bool */; +val* var198 /* : nullable Object */; +val* var_nim /* var nim: AImport */; +short int var199 /* : Bool */; +int cltype200; +int idtype201; +short int var202 /* : Bool */; +val* var204 /* : nullable MModule */; +val* var206 /* : nullable MModule */; +val* var_im /* var im: nullable MModule */; +val* var207 /* : null */; +short int var208 /* : Bool */; +short int var209 /* : Bool */; +short int var211 /* : Bool */; +short int var213 /* : Bool */; +short int var214 /* : Bool */; +var_nmodule = p0; +{ +{ /* Inline modelbuilder#AModule#is_importation_done (var_nmodule) on */ +var2 = var_nmodule->attrs[COLOR_modelbuilder__AModule___is_importation_done].s; /* _is_importation_done on */ +var = var2; +RET_LABEL1:(void)0; +} +} +if (var){ +goto RET_LABEL; +} else { +} +var3 = 1; +{ +{ /* Inline modelbuilder#AModule#is_importation_done= (var_nmodule,var3) on */ +var_nmodule->attrs[COLOR_modelbuilder__AModule___is_importation_done].s = var3; /* _is_importation_done on */ +RET_LABEL4:(void)0; +} +} +{ +{ /* Inline modelbuilder#AModule#mmodule (var_nmodule) on */ +var7 = var_nmodule->attrs[COLOR_modelbuilder__AModule___mmodule].val; /* _mmodule on */ +var5 = var7; +RET_LABEL6:(void)0; +} +} +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Cast failed"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 667); +show_backtrace(1); +} +var_mmodule = var5; +var8 = 1; +var_stdimport = var8; +var9 = NEW_array__Array(&type_array__Arraymmodule__MModule); +{ +((void (*)(val*))(var9->class->vft[COLOR_kernel__Object__init]))(var9) /* init on */; +} +var_imported_modules = var9; +{ +{ /* Inline parser_nodes#AModule#n_imports (var_nmodule) on */ +var12 = var_nmodule->attrs[COLOR_parser_nodes__AModule___n_imports].val; /* _n_imports on */ +if (unlikely(var12 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_imports"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 857); +show_backtrace(1); +} +var10 = var12; +RET_LABEL11:(void)0; +} +} +var_ = var10; +{ +var13 = parser_nodes__ANodes__iterator(var_); +} +var_14 = var13; +for(;;) { +{ +var15 = ((short int (*)(val*))(var_14->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_14) /* is_ok on */; +} +if (var15){ +{ +var16 = ((val* (*)(val*))(var_14->class->vft[COLOR_abstract_collection__Iterator__item]))(var_14) /* item on */; +} +var_aimport = var16; +var17 = 0; +var_stdimport = var17; +/* isa AStdImport */ +cltype = type_parser_nodes__AStdImport.color; +idtype = type_parser_nodes__AStdImport.id; +if(cltype >= var_aimport->type->table_size) { +var18 = 0; +} else { +var18 = var_aimport->type->type_table[cltype] == idtype; +} +var19 = !var18; +if (var19){ +goto BREAK_label; +} else { +} +{ +{ /* Inline mmodule#MModule#mgroup (var_mmodule) on */ +var22 = var_mmodule->attrs[COLOR_mmodule__MModule___mgroup].val; /* _mgroup on */ +var20 = var22; +RET_LABEL21:(void)0; +} +} +var_mgroup = var20; +{ +{ /* Inline parser_nodes#AStdImport#n_name (var_aimport) on */ +var25 = var_aimport->attrs[COLOR_parser_nodes__AStdImport___n_name].val; /* _n_name on */ +if (unlikely(var25 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 882); +show_backtrace(1); +} +var23 = var25; +RET_LABEL24:(void)0; +} +} +{ +{ /* Inline parser_nodes#AModuleName#n_quad (var23) on */ +var28 = var23->attrs[COLOR_parser_nodes__AModuleName___n_quad].val; /* _n_quad on */ +var26 = var28; +RET_LABEL27:(void)0; +} +} +var29 = NULL; +if (var26 == NULL) { +var30 = 0; /* is null */ +} else { +var30 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var26,var29) on */ +var_other = var29; +{ +var34 = ((short int (*)(val*, val*))(var26->class->vft[COLOR_kernel__Object___61d_61d]))(var26, var_other) /* == on */; +var33 = var34; +} +var35 = !var33; +var31 = var35; +goto RET_LABEL32; +RET_LABEL32:(void)0; +} +var30 = var31; +} +if (var30){ +var36 = NULL; +var_mgroup = var36; +} else { +} +{ +{ /* Inline parser_nodes#AStdImport#n_name (var_aimport) on */ +var39 = var_aimport->attrs[COLOR_parser_nodes__AStdImport___n_name].val; /* _n_name on */ +if (unlikely(var39 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 882); +show_backtrace(1); +} +var37 = var39; +RET_LABEL38:(void)0; +} +} +{ +{ /* Inline parser_nodes#AModuleName#n_path (var37) on */ +var42 = var37->attrs[COLOR_parser_nodes__AModuleName___n_path].val; /* _n_path on */ +if (unlikely(var42 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_path"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1989); +show_backtrace(1); +} +var40 = var42; +RET_LABEL41:(void)0; +} +} +var_43 = var40; +{ +var44 = parser_nodes__ANodes__iterator(var_43); +} +var_45 = var44; +for(;;) { +{ +var46 = ((short int (*)(val*))(var_45->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_45) /* is_ok on */; +} +if (var46){ +{ +var47 = ((val* (*)(val*))(var_45->class->vft[COLOR_abstract_collection__Iterator__item]))(var_45) /* item on */; +} +var_grp = var47; +{ +var48 = lexer_work__Token__text(var_grp); +} +{ +var49 = modelbuilder__ModelBuilder__search_mmodule_by_name(self, var_grp, var_mgroup, var48); +} +var_path = var49; +var50 = NULL; +if (var_path == NULL) { +var51 = 1; /* is null */ +} else { +var51 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_path,var50) on */ +var_other54 = var50; +{ +{ /* Inline kernel#Object#is_same_instance (var_path,var_other54) on */ +var57 = var_path == var_other54; +var55 = var57; +goto RET_LABEL56; +RET_LABEL56:(void)0; +} +} +var52 = var55; +goto RET_LABEL53; +RET_LABEL53:(void)0; +} +var51 = var52; +} +if (var51){ +goto RET_LABEL; +} else { +} +{ +{ /* Inline modelbuilder#ModulePath#mgroup (var_path) on */ +var60 = var_path->attrs[COLOR_modelbuilder__ModulePath___mgroup].val; /* _mgroup on */ +if (unlikely(var60 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroup"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 776); +show_backtrace(1); +} +var58 = var60; +RET_LABEL59:(void)0; +} +} +var_mgroup = var58; +{ +((void (*)(val*))(var_45->class->vft[COLOR_abstract_collection__Iterator__next]))(var_45) /* next on */; +} +} else { +goto BREAK_label61; +} +} +BREAK_label61: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_45) on */ +RET_LABEL62:(void)0; +} +} +{ +{ /* Inline parser_nodes#AStdImport#n_name (var_aimport) on */ +var65 = var_aimport->attrs[COLOR_parser_nodes__AStdImport___n_name].val; /* _n_name on */ +if (unlikely(var65 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 882); +show_backtrace(1); +} +var63 = var65; +RET_LABEL64:(void)0; +} +} +{ +{ /* Inline parser_nodes#AModuleName#n_id (var63) on */ +var68 = var63->attrs[COLOR_parser_nodes__AModuleName___n_id].val; /* _n_id on */ +if (unlikely(var68 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1990); +show_backtrace(1); +} +var66 = var68; +RET_LABEL67:(void)0; +} +} +{ +var69 = lexer_work__Token__text(var66); +} +var_mod_name = var69; +{ +{ /* Inline parser_nodes#AStdImport#n_name (var_aimport) on */ +var72 = var_aimport->attrs[COLOR_parser_nodes__AStdImport___n_name].val; /* _n_name on */ +if (unlikely(var72 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 882); +show_backtrace(1); +} +var70 = var72; +RET_LABEL71:(void)0; +} +} +{ +var73 = modelbuilder__ModelBuilder__get_mmodule_by_name(self, var70, var_mgroup, var_mod_name); +} +var_sup = var73; +var74 = NULL; +if (var_sup == NULL) { +var75 = 1; /* is null */ } else { -var7 = ".nit"; -var8 = 4; -var9 = string__NativeString__to_s_with_length(var7, var8); -var6 = var9; -varonce = var6; +var75 = 0; /* arg is null but recv is not */ } -var10 = ((val* (*)(val*, val*))(var_rdp->class->vft[COLOR_file__String__basename]))(var_rdp, var6) /* basename on */; -var_pn = var10; -if (varonce11) { -var12 = varonce11; -} else { -var13 = ".nit"; -var14 = 4; -var15 = string__NativeString__to_s_with_length(var13, var14); -var12 = var15; -varonce11 = var12; -} -var16 = ((val* (*)(val*, val*))(var_pn->class->vft[COLOR_string__String___43d]))(var_pn, var12) /* + on */; -var17 = ((val* (*)(val*, val*))(var_dirpath->class->vft[COLOR_file__String__join_path]))(var_dirpath, var16) /* join_path on */; -var18 = ((val* (*)(val*))(var17->class->vft[COLOR_file__String__simplify_path]))(var17) /* simplify_path on */; -var_mp = var18; -var19 = ((short int (*)(val*))(var_mp->class->vft[COLOR_file__String__file_exists]))(var_mp) /* file_exists on */; -var20 = !var19; -if (var20){ -var21 = NULL; -var = var21; -goto RET_LABEL; -} else { +if (0) { +{ /* Inline kernel#Object#== (var_sup,var74) on */ +var_other54 = var74; +{ +{ /* Inline kernel#Object#is_same_instance (var_sup,var_other54) on */ +var80 = var_sup == var_other54; +var78 = var80; +goto RET_LABEL79; +RET_LABEL79:(void)0; } -if (varonce22) { -var23 = varonce22; -} else { -var24 = ".."; -var25 = 2; -var26 = string__NativeString__to_s_with_length(var24, var25); -var23 = var26; -varonce22 = var23; } -var27 = ((val* (*)(val*, val*))(var_dirpath->class->vft[COLOR_file__String__join_path]))(var_dirpath, var23) /* join_path on */; -var28 = ((val* (*)(val*))(var27->class->vft[COLOR_file__String__simplify_path]))(var27) /* simplify_path on */; -var_parentpath = var28; -var29 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__get_mgroup]))(self, var_parentpath) /* get_mgroup on */; -var_parent = var29; -var30 = NULL; -if (var_parent == NULL) { -var31 = 1; /* is null */ -} else { -var31 = 0; /* arg is null but recv is not */ +var76 = var78; +goto RET_LABEL77; +RET_LABEL77:(void)0; } -if (var31){ -var32 = NEW_mproject__MProject(&type_mproject__MProject); -var33 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(self) /* model on */; -((void (*)(val*, val*, val*))(var32->class->vft[COLOR_mproject__MProject__init]))(var32, var_pn, var33) /* init on */; -var_mproject = var32; -var34 = NEW_mproject__MGroup(&type_mproject__MGroup); -var35 = NULL; -((void (*)(val*, val*, val*, val*))(var34->class->vft[COLOR_mproject__MGroup__init]))(var34, var_pn, var_mproject, var35) /* init on */; -var_mgroup = var34; -((void (*)(val*, val*))(var_mproject->class->vft[COLOR_mproject__MProject__root_61d]))(var_mproject, var_mgroup) /* root= on */; -var36 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on */; -if (varonce37) { -var38 = varonce37; -} else { -var39 = "found project `"; -var40 = 15; -var41 = string__NativeString__to_s_with_length(var39, var40); -var38 = var41; -varonce37 = var38; +var75 = var76; } -if (varonce42) { -var43 = varonce42; +if (var75){ +goto BREAK_label; } else { -var44 = "` at "; -var45 = 5; -var46 = string__NativeString__to_s_with_length(var44, var45); -var43 = var46; -varonce42 = var43; } -var47 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var47 = array_instance Array[Object] */ -var48 = 4; -var49 = NEW_array__NativeArray(var48, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var49)->values[0] = (val*) var38; -((struct instance_array__NativeArray*)var49)->values[1] = (val*) var_mproject; -((struct instance_array__NativeArray*)var49)->values[2] = (val*) var43; -((struct instance_array__NativeArray*)var49)->values[3] = (val*) var_dirpath; -((void (*)(val*, val*, long))(var47->class->vft[COLOR_array__Array__with_native]))(var47, var49, var48) /* with_native on */; +{ +{ /* Inline modelbuilder#AStdImport#mmodule= (var_aimport,var_sup) on */ +var_aimport->attrs[COLOR_modelbuilder__AStdImport___mmodule].val = var_sup; /* _mmodule on */ +RET_LABEL81:(void)0; } -var50 = ((val* (*)(val*))(var47->class->vft[COLOR_string__Object__to_s]))(var47) /* to_s on */; -var51 = 2; -((void (*)(val*, val*, long))(var36->class->vft[COLOR_toolcontext__ToolContext__info]))(var36, var50, var51) /* info on */; -} else { -var52 = NEW_mproject__MGroup(&type_mproject__MGroup); -var53 = ((val* (*)(val*))(var_parent->class->vft[COLOR_mproject__MGroup__mproject]))(var_parent) /* mproject on */; -((void (*)(val*, val*, val*, val*))(var52->class->vft[COLOR_mproject__MGroup__init]))(var52, var_pn, var53, var_parent) /* init on */; -var_mgroup = var52; -var54 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on */; -if (varonce55) { -var56 = varonce55; -} else { -var57 = "found sub group `"; -var58 = 17; -var59 = string__NativeString__to_s_with_length(var57, var58); -var56 = var59; -varonce55 = var56; } -var60 = ((val* (*)(val*))(var_mgroup->class->vft[COLOR_mproject__MGroup__full_name]))(var_mgroup) /* full_name on */; -if (varonce61) { -var62 = varonce61; -} else { -var63 = "` at "; -var64 = 5; -var65 = string__NativeString__to_s_with_length(var63, var64); -var62 = var65; -varonce61 = var62; -} -var66 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var66 = array_instance Array[Object] */ -var67 = 4; -var68 = NEW_array__NativeArray(var67, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var68)->values[0] = (val*) var56; -((struct instance_array__NativeArray*)var68)->values[1] = (val*) var60; -((struct instance_array__NativeArray*)var68)->values[2] = (val*) var62; -((struct instance_array__NativeArray*)var68)->values[3] = (val*) var_dirpath; -((void (*)(val*, val*, long))(var66->class->vft[COLOR_array__Array__with_native]))(var66, var68, var67) /* with_native on */; -} -var69 = ((val* (*)(val*))(var66->class->vft[COLOR_string__Object__to_s]))(var66) /* to_s on */; -var70 = 2; -((void (*)(val*, val*, long))(var54->class->vft[COLOR_toolcontext__ToolContext__info]))(var54, var69, var70) /* info on */; -} -((void (*)(val*, val*))(var_mgroup->class->vft[COLOR_mproject__MGroup__filepath_61d]))(var_mgroup, var_dirpath) /* filepath= on */; -var71 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__mgroups]))(self) /* mgroups on */; -((void (*)(val*, val*, val*))(var71->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var71, var_rdp, var_mgroup) /* []= on */; -var = var_mgroup; -goto RET_LABEL; -RET_LABEL:; -return var; +{ +array__Array__add(var_imported_modules, var_sup); /* Direct call array#Array#add on */ } -/* method modelbuilder#ModelBuilder#get_mgroup for (self: Object, String): nullable MGroup */ -val* VIRTUAL_modelbuilder__ModelBuilder__get_mgroup(val* self, val* p0) { -val* var /* : nullable MGroup */; -val* var1 /* : nullable MGroup */; -var1 = modelbuilder__ModelBuilder__get_mgroup(self, p0); -var = var1; -RET_LABEL:; -return var; +{ +{ /* Inline parser_nodes#AStdImport#n_visibility (var_aimport) on */ +var84 = var_aimport->attrs[COLOR_parser_nodes__AStdImport___n_visibility].val; /* _n_visibility on */ +if (unlikely(var84 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_visibility"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 880); +show_backtrace(1); } -/* method modelbuilder#ModelBuilder#module_absolute_path for (self: ModelBuilder, String): String */ -val* modelbuilder__ModelBuilder__module_absolute_path(val* self, val* p0) { -val* var /* : String */; -val* var_path /* var path: String */; -val* var1 /* : String */; -val* var2 /* : String */; -val* var3 /* : String */; -var_path = p0; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_file__Object__getcwd]))(self) /* getcwd on */; -var2 = ((val* (*)(val*, val*))(var1->class->vft[COLOR_file__String__join_path]))(var1, var_path) /* join_path on */; -var3 = ((val* (*)(val*))(var2->class->vft[COLOR_file__String__simplify_path]))(var2) /* simplify_path on */; -var = var3; -goto RET_LABEL; -RET_LABEL:; -return var; +var82 = var84; +RET_LABEL83:(void)0; +} +} +{ +var85 = ((val* (*)(val*))(var82->class->vft[COLOR_modelbuilder__AVisibility__mvisibility]))(var82) /* mvisibility on */; +} +var_mvisibility = var85; +{ +var86 = model_base__Object__protected_visibility(self); +} +{ +{ /* Inline kernel#Object#== (var_mvisibility,var86) on */ +var_other54 = var86; +{ +{ /* Inline kernel#Object#is_same_instance (var_mvisibility,var_other54) on */ +var92 = var_mvisibility == var_other54; +var90 = var92; +goto RET_LABEL91; +RET_LABEL91:(void)0; +} +} +var88 = var90; +goto RET_LABEL89; +RET_LABEL89:(void)0; +} +var87 = var88; +} +if (var87){ +{ +{ /* Inline parser_nodes#AStdImport#n_visibility (var_aimport) on */ +var95 = var_aimport->attrs[COLOR_parser_nodes__AStdImport___n_visibility].val; /* _n_visibility on */ +if (unlikely(var95 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_visibility"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 880); +show_backtrace(1); +} +var93 = var95; +RET_LABEL94:(void)0; } -/* method modelbuilder#ModelBuilder#module_absolute_path for (self: Object, String): String */ -val* VIRTUAL_modelbuilder__ModelBuilder__module_absolute_path(val* self, val* p0) { -val* var /* : String */; -val* var1 /* : String */; -var1 = modelbuilder__ModelBuilder__module_absolute_path(self, p0); -var = var1; -RET_LABEL:; -return var; } -/* method modelbuilder#ModelBuilder#load_module_ast for (self: ModelBuilder, String): nullable AModule */ -val* modelbuilder__ModelBuilder__load_module_ast(val* self, val* p0) { -val* var /* : nullable AModule */; -val* var_filename /* var filename: String */; -val* var1 /* : nullable String */; -static val* varonce; -val* var2 /* : String */; -char* var3 /* : NativeString */; -long var4 /* : Int */; -val* var5 /* : String */; -short int var6 /* : Bool */; -val* var7 /* : ToolContext */; -val* var8 /* : null */; -static val* varonce9; -val* var10 /* : String */; -char* var11 /* : NativeString */; -long var12 /* : Int */; -val* var13 /* : String */; -static val* varonce14; -val* var15 /* : String */; -char* var16 /* : NativeString */; -long var17 /* : Int */; -val* var18 /* : String */; -val* var19 /* : Array[Object] */; -long var20 /* : Int */; -val* var21 /* : NativeArray[Object] */; -val* var22 /* : String */; -val* var23 /* : null */; -short int var24 /* : Bool */; -short int var25 /* : Bool */; -val* var26 /* : ToolContext */; -val* var27 /* : null */; -static val* varonce28; -val* var29 /* : String */; -char* var30 /* : NativeString */; -long var31 /* : Int */; -val* var32 /* : String */; -static val* varonce33; -val* var34 /* : String */; -char* var35 /* : NativeString */; -long var36 /* : Int */; -val* var37 /* : String */; -val* var38 /* : Array[Object] */; -long var39 /* : Int */; -val* var40 /* : NativeArray[Object] */; -val* var41 /* : String */; -val* var42 /* : null */; -val* var43 /* : ToolContext */; -static val* varonce44; -val* var45 /* : String */; -char* var46 /* : NativeString */; -long var47 /* : Int */; -val* var48 /* : String */; -val* var49 /* : Array[Object] */; -long var50 /* : Int */; -val* var51 /* : NativeArray[Object] */; -val* var52 /* : String */; -long var53 /* : Int */; -val* var54 /* : IFStream */; -val* var_file /* var file: IFStream */; -val* var55 /* : Lexer */; -val* var56 /* : SourceFile */; -val* var_lexer /* var lexer: Lexer */; -val* var57 /* : Parser */; -val* var_parser /* var parser: Parser */; -val* var58 /* : Start */; -val* var_tree /* var tree: Start */; -static val* varonce59; -val* var60 /* : String */; -char* var61 /* : NativeString */; -long var62 /* : Int */; -val* var63 /* : String */; -val* var64 /* : String */; -val* var_mod_name /* var mod_name: String */; -val* var65 /* : nullable AModule */; -val* var_nmodule /* var nmodule: nullable AModule */; -val* var66 /* : null */; -short int var67 /* : Bool */; -val* var68 /* : EOF */; -val* var_neof /* var neof: EOF */; -short int var69 /* : Bool */; -int cltype; -int idtype; -val* var70 /* : String */; -val* var71 /* : null */; -var_filename = p0; -var1 = ((val* (*)(val*))(var_filename->class->vft[COLOR_file__String__file_extension]))(var_filename) /* file_extension on */; if (varonce) { -var2 = varonce; +var96 = varonce; } else { -var3 = "nit"; -var4 = 3; -var5 = string__NativeString__to_s_with_length(var3, var4); -var2 = var5; -varonce = var2; +var97 = "Error: only properties can be protected."; +var98 = 40; +var99 = string__NativeString__to_s_with_length(var97, var98); +var96 = var99; +varonce = var96; } -if (var1 == NULL) { -var6 = 1; /* cannot be null */ -} else { -var6 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_kernel__Object___33d_61d]))(var1, var2) /* != on */; +{ +modelbuilder__ModelBuilder__error(self, var93, var96); /* Direct call modelbuilder#ModelBuilder#error on */ } -if (var6){ -var7 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on */; -var8 = NULL; -if (varonce9) { -var10 = varonce9; -} else { -var11 = "Error: file "; -var12 = 12; -var13 = string__NativeString__to_s_with_length(var11, var12); -var10 = var13; -varonce9 = var10; -} -if (varonce14) { -var15 = varonce14; -} else { -var16 = " is not a valid nit module."; -var17 = 27; -var18 = string__NativeString__to_s_with_length(var16, var17); -var15 = var18; -varonce14 = var15; -} -var19 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var19 = array_instance Array[Object] */ -var20 = 3; -var21 = NEW_array__NativeArray(var20, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var21)->values[0] = (val*) var10; -((struct instance_array__NativeArray*)var21)->values[1] = (val*) var_filename; -((struct instance_array__NativeArray*)var21)->values[2] = (val*) var15; -((void (*)(val*, val*, long))(var19->class->vft[COLOR_array__Array__with_native]))(var19, var21, var20) /* with_native on */; -} -var22 = ((val* (*)(val*))(var19->class->vft[COLOR_string__Object__to_s]))(var19) /* to_s on */; -((void (*)(val*, val*, val*))(var7->class->vft[COLOR_toolcontext__ToolContext__error]))(var7, var8, var22) /* error on */; -var23 = NULL; -var = var23; goto RET_LABEL; } else { } -var24 = ((short int (*)(val*))(var_filename->class->vft[COLOR_file__String__file_exists]))(var_filename) /* file_exists on */; -var25 = !var24; -if (var25){ -var26 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on */; -var27 = NULL; -if (varonce28) { -var29 = varonce28; +{ +{ /* Inline kernel#Object#== (var_sup,var_mmodule) on */ +var_other54 = var_mmodule; +{ +{ /* Inline kernel#Object#is_same_instance (var_sup,var_other54) on */ +var105 = var_sup == var_other54; +var103 = var105; +goto RET_LABEL104; +RET_LABEL104:(void)0; +} +} +var101 = var103; +goto RET_LABEL102; +RET_LABEL102:(void)0; +} +var100 = var101; +} +if (var100){ +{ +{ /* Inline parser_nodes#AStdImport#n_name (var_aimport) on */ +var108 = var_aimport->attrs[COLOR_parser_nodes__AStdImport___n_name].val; /* _n_name on */ +if (unlikely(var108 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 882); +show_backtrace(1); +} +var106 = var108; +RET_LABEL107:(void)0; +} +} +if (varonce109) { +var110 = varonce109; } else { -var30 = "Error: file "; -var31 = 12; -var32 = string__NativeString__to_s_with_length(var30, var31); -var29 = var32; -varonce28 = var29; +var111 = "Error: Dependency loop in module "; +var112 = 33; +var113 = string__NativeString__to_s_with_length(var111, var112); +var110 = var113; +varonce109 = var110; } -if (varonce33) { -var34 = varonce33; +if (varonce114) { +var115 = varonce114; } else { -var35 = " not found."; -var36 = 11; -var37 = string__NativeString__to_s_with_length(var35, var36); -var34 = var37; -varonce33 = var34; +var116 = "."; +var117 = 1; +var118 = string__NativeString__to_s_with_length(var116, var117); +var115 = var118; +varonce114 = var115; +} +var119 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var119 = array_instance Array[Object] */ +var120 = 3; +var121 = NEW_array__NativeArray(var120, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var121)->values[0] = (val*) var110; +((struct instance_array__NativeArray*)var121)->values[1] = (val*) var_mmodule; +((struct instance_array__NativeArray*)var121)->values[2] = (val*) var115; +{ +((void (*)(val*, val*, long))(var119->class->vft[COLOR_array__Array__with_native]))(var119, var121, var120) /* with_native on */; +} +} +{ +var122 = ((val* (*)(val*))(var119->class->vft[COLOR_string__Object__to_s]))(var119) /* to_s on */; +} +{ +modelbuilder__ModelBuilder__error(self, var106, var122); /* Direct call modelbuilder#ModelBuilder#error on */ } -var38 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var38 = array_instance Array[Object] */ -var39 = 3; -var40 = NEW_array__NativeArray(var39, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var40)->values[0] = (val*) var29; -((struct instance_array__NativeArray*)var40)->values[1] = (val*) var_filename; -((struct instance_array__NativeArray*)var40)->values[2] = (val*) var34; -((void (*)(val*, val*, long))(var38->class->vft[COLOR_array__Array__with_native]))(var38, var40, var39) /* with_native on */; -} -var41 = ((val* (*)(val*))(var38->class->vft[COLOR_string__Object__to_s]))(var38) /* to_s on */; -((void (*)(val*, val*, val*))(var26->class->vft[COLOR_toolcontext__ToolContext__error]))(var26, var27, var41) /* error on */; -var42 = NULL; -var = var42; -goto RET_LABEL; } else { } -var43 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on */; -if (varonce44) { -var45 = varonce44; -} else { -var46 = "load module "; -var47 = 12; -var48 = string__NativeString__to_s_with_length(var46, var47); -var45 = var48; -varonce44 = var45; -} -var49 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var49 = array_instance Array[Object] */ -var50 = 2; -var51 = NEW_array__NativeArray(var50, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var51)->values[0] = (val*) var45; -((struct instance_array__NativeArray*)var51)->values[1] = (val*) var_filename; -((void (*)(val*, val*, long))(var49->class->vft[COLOR_array__Array__with_native]))(var49, var51, var50) /* with_native on */; -} -var52 = ((val* (*)(val*))(var49->class->vft[COLOR_string__Object__to_s]))(var49) /* to_s on */; -var53 = 2; -((void (*)(val*, val*, long))(var43->class->vft[COLOR_toolcontext__ToolContext__info]))(var43, var52, var53) /* info on */; -var54 = NEW_file__IFStream(&type_file__IFStream); -((void (*)(val*, val*))(var54->class->vft[COLOR_file__IFStream__open]))(var54, var_filename) /* open on */; -var_file = var54; -var55 = NEW_lexer__Lexer(&type_lexer__Lexer); -var56 = NEW_location__SourceFile(&type_location__SourceFile); -((void (*)(val*, val*, val*))(var56->class->vft[COLOR_location__SourceFile__init]))(var56, var_filename, var_file) /* init on */; -((void (*)(val*, val*))(var55->class->vft[COLOR_lexer__Lexer__init]))(var55, var56) /* init on */; -var_lexer = var55; -var57 = NEW_parser__Parser(&type_parser__Parser); -((void (*)(val*, val*))(var57->class->vft[COLOR_parser__Parser__init]))(var57, var_lexer) /* init on */; -var_parser = var57; -var58 = ((val* (*)(val*))(var_parser->class->vft[COLOR_parser__Parser__parse]))(var_parser) /* parse on */; -var_tree = var58; -((void (*)(val*))(var_file->class->vft[COLOR_stream__IOS__close]))(var_file) /* close on */; -if (varonce59) { -var60 = varonce59; +{ +{ /* Inline mmodule#MModule#in_importation (var_sup) on */ +var125 = var_sup->attrs[COLOR_mmodule__MModule___in_importation].val; /* _in_importation on */ +if (unlikely(var125 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation"); +PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 93); +show_backtrace(1); +} +var123 = var125; +RET_LABEL124:(void)0; +} +} +{ +var126 = poset__POSetElement___60d(var123, var_mmodule); +} +if (var126){ +{ +{ /* Inline parser_nodes#AStdImport#n_name (var_aimport) on */ +var129 = var_aimport->attrs[COLOR_parser_nodes__AStdImport___n_name].val; /* _n_name on */ +if (unlikely(var129 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 882); +show_backtrace(1); +} +var127 = var129; +RET_LABEL128:(void)0; +} +} +if (varonce130) { +var131 = varonce130; } else { -var61 = ".nit"; -var62 = 4; -var63 = string__NativeString__to_s_with_length(var61, var62); -var60 = var63; -varonce59 = var60; +var132 = "Error: Dependency loop between modules "; +var133 = 39; +var134 = string__NativeString__to_s_with_length(var132, var133); +var131 = var134; +varonce130 = var131; } -var64 = ((val* (*)(val*, val*))(var_filename->class->vft[COLOR_file__String__basename]))(var_filename, var60) /* basename on */; -var_mod_name = var64; -var65 = ((val* (*)(val*))(var_tree->class->vft[COLOR_parser_nodes__Start__n_base]))(var_tree) /* n_base on */; -var_nmodule = var65; -var66 = NULL; -if (var_nmodule == NULL) { -var67 = 1; /* is null */ +if (varonce135) { +var136 = varonce135; } else { -var67 = 0; /* arg is null but recv is not */ +var137 = " and "; +var138 = 5; +var139 = string__NativeString__to_s_with_length(var137, var138); +var136 = var139; +varonce135 = var136; } -if (var67){ -var68 = ((val* (*)(val*))(var_tree->class->vft[COLOR_parser_nodes__Start__n_eof]))(var_tree) /* n_eof on */; -var_neof = var68; -/* isa AError */ -cltype = type_parser_nodes__AError.color; -idtype = type_parser_nodes__AError.id; -if(cltype >= var_neof->type->table_size) { -var69 = 0; +if (varonce140) { +var141 = varonce140; } else { -var69 = var_neof->type->type_table[cltype] == idtype; +var142 = "."; +var143 = 1; +var144 = string__NativeString__to_s_with_length(var142, var143); +var141 = var144; +varonce140 = var141; +} +var145 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var145 = array_instance Array[Object] */ +var146 = 5; +var147 = NEW_array__NativeArray(var146, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var147)->values[0] = (val*) var131; +((struct instance_array__NativeArray*)var147)->values[1] = (val*) var_mmodule; +((struct instance_array__NativeArray*)var147)->values[2] = (val*) var136; +((struct instance_array__NativeArray*)var147)->values[3] = (val*) var_sup; +((struct instance_array__NativeArray*)var147)->values[4] = (val*) var141; +{ +((void (*)(val*, val*, long))(var145->class->vft[COLOR_array__Array__with_native]))(var145, var147, var146) /* with_native on */; } -if (!var69) { -fprintf(stderr, "Runtime error: %s", "Assert failed"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 453); -show_backtrace(1); } -var70 = ((val* (*)(val*))(var_neof->class->vft[COLOR_lexer__AError__message]))(var_neof) /* message on */; -((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_neof, var70) /* error on */; -var71 = NULL; -var = var71; +{ +var148 = ((val* (*)(val*))(var145->class->vft[COLOR_string__Object__to_s]))(var145) /* to_s on */; +} +{ +modelbuilder__ModelBuilder__error(self, var127, var148); /* Direct call modelbuilder#ModelBuilder#error on */ +} goto RET_LABEL; } else { } -var = var_nmodule; -goto RET_LABEL; -RET_LABEL:; -return var; +{ +mmodule__MModule__set_visibility_for(var_mmodule, var_sup, var_mvisibility); /* Direct call mmodule#MModule#set_visibility_for on */ } -/* method modelbuilder#ModelBuilder#load_module_ast for (self: Object, String): nullable AModule */ -val* VIRTUAL_modelbuilder__ModelBuilder__load_module_ast(val* self, val* p0) { -val* var /* : nullable AModule */; -val* var1 /* : nullable AModule */; -var1 = modelbuilder__ModelBuilder__load_module_ast(self, p0); -var = var1; -RET_LABEL:; -return var; +BREAK_label: (void)0; +{ +((void (*)(val*))(var_14->class->vft[COLOR_abstract_collection__Iterator__next]))(var_14) /* next on */; } -/* method modelbuilder#ModelBuilder#load_module for (self: ModelBuilder, String): nullable AModule */ -val* modelbuilder__ModelBuilder__load_module(val* self, val* p0) { -val* var /* : nullable AModule */; -val* var_filename /* var filename: String */; -val* var1 /* : nullable ModulePath */; -val* var_file /* var file: nullable ModulePath */; -val* var2 /* : null */; -short int var3 /* : Bool */; -val* var4 /* : null */; -val* var5 /* : nullable MModule */; -val* var_mmodule /* var mmodule: nullable MModule */; -val* var6 /* : null */; -short int var7 /* : Bool */; -val* var8 /* : HashMap[MModule, AModule] */; -val* var9 /* : nullable Object */; -val* var10 /* : nullable AModule */; -val* var_nmodule /* var nmodule: nullable AModule */; -val* var11 /* : null */; -short int var12 /* : Bool */; -val* var13 /* : null */; -val* var14 /* : MGroup */; -val* var15 /* : String */; -val* var16 /* : nullable MModule */; -val* var17 /* : null */; -short int var18 /* : Bool */; -val* var19 /* : null */; -var_filename = p0; -var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__identify_file]))(self, var_filename) /* identify_file on */; -var_file = var1; -var2 = NULL; -if (var_file == NULL) { -var3 = 1; /* is null */ } else { -var3 = 0; /* arg is null but recv is not */ +goto BREAK_label149; } -if (var3){ -var4 = NULL; -var = var4; -goto RET_LABEL; +} +BREAK_label149: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_14) on */ +RET_LABEL150:(void)0; +} +} +if (var_stdimport){ +if (varonce151) { +var152 = varonce151; } else { +var153 = "standard"; +var154 = 8; +var155 = string__NativeString__to_s_with_length(var153, var154); +var152 = var155; +varonce151 = var152; +} +var_mod_name156 = var152; +var157 = NULL; +{ +var158 = modelbuilder__ModelBuilder__get_mmodule_by_name(self, var_nmodule, var157, var_mod_name156); +} +var_sup159 = var158; +var160 = NULL; +if (var_sup159 == NULL) { +var161 = 0; /* is null */ +} else { +var161 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_sup159,var160) on */ +var_other = var160; +{ +var165 = ((short int (*)(val*, val*))(var_sup159->class->vft[COLOR_kernel__Object___61d_61d]))(var_sup159, var_other) /* == on */; +var164 = var165; +} +var166 = !var164; +var162 = var166; +goto RET_LABEL163; +RET_LABEL163:(void)0; +} +var161 = var162; +} +if (var161){ +{ +array__Array__add(var_imported_modules, var_sup159); /* Direct call array#Array#add on */ +} +{ +var167 = model_base__Object__public_visibility(self); } -var5 = ((val* (*)(val*))(var_file->class->vft[COLOR_modelbuilder__ModulePath__mmodule]))(var_file) /* mmodule on */; -var_mmodule = var5; -var6 = NULL; -if (var_mmodule == NULL) { -var7 = 0; /* is null */ -} else { -var7 = 1; /* arg is null and recv is not */ +{ +mmodule__MModule__set_visibility_for(var_mmodule, var_sup159, var167); /* Direct call mmodule#MModule#set_visibility_for on */ } -if (var7){ -var8 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__mmodule2nmodule]))(self) /* mmodule2nmodule on */; -var9 = ((val* (*)(val*, val*))(var8->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var8, var_mmodule) /* [] on */; -var = var9; -goto RET_LABEL; } else { } -var10 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__load_module_ast]))(self, var_filename) /* load_module_ast on */; -var_nmodule = var10; -var11 = NULL; -if (var_nmodule == NULL) { -var12 = 1; /* is null */ } else { -var12 = 0; /* arg is null but recv is not */ } -if (var12){ -var13 = NULL; -var = var13; -goto RET_LABEL; -} else { +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on */ +var170 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var170 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); } -var14 = ((val* (*)(val*))(var_file->class->vft[COLOR_modelbuilder__ModulePath__mgroup]))(var_file) /* mgroup on */; -var15 = ((val* (*)(val*))(var_file->class->vft[COLOR_modelbuilder__ModulePath__name]))(var_file) /* name on */; -var16 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__build_a_mmodule]))(self, var14, var15, var_nmodule) /* build_a_mmodule on */; -var_mmodule = var16; -var17 = NULL; -if (var_mmodule == NULL) { -var18 = 1; /* is null */ +var168 = var170; +RET_LABEL169:(void)0; +} +} +if (varonce171) { +var172 = varonce171; } else { -var18 = 0; /* arg is null but recv is not */ +var173 = " imports "; +var174 = 9; +var175 = string__NativeString__to_s_with_length(var173, var174); +var172 = var175; +varonce171 = var172; } -if (var18){ -var19 = NULL; -var = var19; -goto RET_LABEL; +if (varonce176) { +var177 = varonce176; } else { +var178 = ", "; +var179 = 2; +var180 = string__NativeString__to_s_with_length(var178, var179); +var177 = var180; +varonce176 = var177; } -((void (*)(val*, val*))(var_file->class->vft[COLOR_modelbuilder__ModulePath__mmodule_61d]))(var_file, var_mmodule) /* mmodule= on */; -var = var_nmodule; -goto RET_LABEL; -RET_LABEL:; -return var; +{ +var181 = string__Collection__join(var_imported_modules, var177); } -/* method modelbuilder#ModelBuilder#load_module for (self: Object, String): nullable AModule */ -val* VIRTUAL_modelbuilder__ModelBuilder__load_module(val* self, val* p0) { -val* var /* : nullable AModule */; -val* var1 /* : nullable AModule */; -var1 = modelbuilder__ModelBuilder__load_module(self, p0); -var = var1; -RET_LABEL:; -return var; +var182 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var182 = array_instance Array[Object] */ +var183 = 3; +var184 = NEW_array__NativeArray(var183, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var184)->values[0] = (val*) var_mmodule; +((struct instance_array__NativeArray*)var184)->values[1] = (val*) var172; +((struct instance_array__NativeArray*)var184)->values[2] = (val*) var181; +{ +((void (*)(val*, val*, long))(var182->class->vft[COLOR_array__Array__with_native]))(var182, var184, var183) /* with_native on */; } -/* method modelbuilder#ModelBuilder#load_rt_module for (self: ModelBuilder, MModule, AModule, String): nullable AModule */ -val* modelbuilder__ModelBuilder__load_rt_module(val* self, val* p0, val* p1, val* p2) { -val* var /* : nullable AModule */; -val* var_parent /* var parent: MModule */; -val* var_nmodule /* var nmodule: AModule */; -val* var_mod_name /* var mod_name: String */; -val* var1 /* : MModule */; -val* var2 /* : Model */; -val* var3 /* : nullable MGroup */; -val* var4 /* : Location */; -val* var_mmodule /* var mmodule: MModule */; -val* var5 /* : Array[AModule] */; -val* var6 /* : HashMap[MModule, AModule] */; -val* var7 /* : Array[MModule] */; -val* var_imported_modules /* var imported_modules: Array[MModule] */; -val* var8 /* : MVisibility */; -var_parent = p0; -var_nmodule = p1; -var_mod_name = p2; -var1 = NEW_mmodule__MModule(&type_mmodule__MModule); -var2 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(self) /* model on */; -var3 = ((val* (*)(val*))(var_parent->class->vft[COLOR_mmodule__MModule__mgroup]))(var_parent) /* mgroup on */; -var4 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__ANode__location]))(var_nmodule) /* location on */; -((void (*)(val*, val*, val*, val*, val*))(var1->class->vft[COLOR_mmodule__MModule__init]))(var1, var2, var3, var_mod_name, var4) /* init on */; -var_mmodule = var1; -((void (*)(val*, val*))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__mmodule_61d]))(var_nmodule, var_mmodule) /* mmodule= on */; -var5 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__nmodules]))(self) /* nmodules on */; -((void (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var5, var_nmodule) /* add on */; -var6 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__mmodule2nmodule]))(self) /* mmodule2nmodule on */; -((void (*)(val*, val*, val*))(var6->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var6, var_mmodule, var_nmodule) /* []= on */; -var7 = NEW_array__Array(&type_array__Arraymmodule__MModule); -((void (*)(val*))(var7->class->vft[COLOR_array__Array__init]))(var7) /* init on */; -var_imported_modules = var7; -((void (*)(val*, val*))(var_imported_modules->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_imported_modules, var_parent) /* add on */; -var8 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__intrude_visibility]))(self) /* intrude_visibility on */; -((void (*)(val*, val*, val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__set_visibility_for]))(var_mmodule, var_parent, var8) /* set_visibility_for on */; -((void (*)(val*, val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__set_imported_mmodules]))(var_mmodule, var_imported_modules) /* set_imported_mmodules on */; -var = var_nmodule; -goto RET_LABEL; -RET_LABEL:; -return var; } -/* method modelbuilder#ModelBuilder#load_rt_module for (self: Object, MModule, AModule, String): nullable AModule */ -val* VIRTUAL_modelbuilder__ModelBuilder__load_rt_module(val* self, val* p0, val* p1, val* p2) { -val* var /* : nullable AModule */; -val* var1 /* : nullable AModule */; -var1 = modelbuilder__ModelBuilder__load_rt_module(self, p0, p1, p2); -var = var1; -RET_LABEL:; -return var; +{ +var185 = ((val* (*)(val*))(var182->class->vft[COLOR_string__Object__to_s]))(var182) /* to_s on */; } -/* method modelbuilder#ModelBuilder#build_a_mmodule for (self: ModelBuilder, nullable MGroup, String, AModule): nullable MModule */ -val* modelbuilder__ModelBuilder__build_a_mmodule(val* self, val* p0, val* p1, val* p2) { -val* var /* : nullable MModule */; -val* var_mgroup /* var mgroup: nullable MGroup */; -val* var_mod_name /* var mod_name: String */; -val* var_nmodule /* var nmodule: AModule */; -val* var1 /* : nullable AModuledecl */; -val* var_decl /* var decl: nullable AModuledecl */; -val* var2 /* : null */; -short int var3 /* : Bool */; -val* var4 /* : AModuleName */; -val* var5 /* : TId */; -val* var6 /* : String */; -val* var_decl_name /* var decl_name: String */; -short int var7 /* : Bool */; -val* var8 /* : AModuleName */; -static val* varonce; -val* var9 /* : String */; -char* var10 /* : NativeString */; -long var11 /* : Int */; -val* var12 /* : String */; -static val* varonce13; -val* var14 /* : String */; -char* var15 /* : NativeString */; -long var16 /* : Int */; -val* var17 /* : String */; -val* var18 /* : Array[Object] */; -long var19 /* : Int */; -val* var20 /* : NativeArray[Object] */; -val* var21 /* : String */; -val* var22 /* : MModule */; -val* var23 /* : Model */; -val* var24 /* : Location */; -val* var_mmodule /* var mmodule: MModule */; -val* var25 /* : Array[AModule] */; -val* var26 /* : HashMap[MModule, AModule] */; -var_mgroup = p0; -var_mod_name = p1; -var_nmodule = p2; -var1 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__AModule__n_moduledecl]))(var_nmodule) /* n_moduledecl on */; -var_decl = var1; -var2 = NULL; -if (var_decl == NULL) { -var3 = 1; /* is null */ -} else { -var3 = 0; /* arg is null but recv is not */ +var186 = 3; +{ +toolcontext__ToolContext__info(var168, var185, var186); /* Direct call toolcontext#ToolContext#info on */ } -if (var3){ -} else { -var4 = ((val* (*)(val*))(var_decl->class->vft[COLOR_parser_nodes__AModuledecl__n_name]))(var_decl) /* n_name on */; -var5 = ((val* (*)(val*))(var4->class->vft[COLOR_parser_nodes__AModuleName__n_id]))(var4) /* n_id on */; -var6 = ((val* (*)(val*))(var5->class->vft[COLOR_parser_nodes__Token__text]))(var5) /* text on */; -var_decl_name = var6; -var7 = ((short int (*)(val*, val*))(var_decl_name->class->vft[COLOR_kernel__Object___33d_61d]))(var_decl_name, var_mod_name) /* != on */; -if (var7){ -var8 = ((val* (*)(val*))(var_decl->class->vft[COLOR_parser_nodes__AModuledecl__n_name]))(var_decl) /* n_name on */; -if (varonce) { -var9 = varonce; -} else { -var10 = "Error: module name missmatch; declared "; -var11 = 39; -var12 = string__NativeString__to_s_with_length(var10, var11); -var9 = var12; -varonce = var9; +{ +mmodule__MModule__set_imported_mmodules(var_mmodule, var_imported_modules); /* Direct call mmodule#MModule#set_imported_mmodules on */ } -if (varonce13) { -var14 = varonce13; -} else { -var15 = " file named "; -var16 = 12; -var17 = string__NativeString__to_s_with_length(var15, var16); -var14 = var17; -varonce13 = var14; -} -var18 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var18 = array_instance Array[Object] */ -var19 = 4; -var20 = NEW_array__NativeArray(var19, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var20)->values[0] = (val*) var9; -((struct instance_array__NativeArray*)var20)->values[1] = (val*) var_decl_name; -((struct instance_array__NativeArray*)var20)->values[2] = (val*) var14; -((struct instance_array__NativeArray*)var20)->values[3] = (val*) var_mod_name; -((void (*)(val*, val*, long))(var18->class->vft[COLOR_array__Array__with_native]))(var18, var20, var19) /* with_native on */; -} -var21 = ((val* (*)(val*))(var18->class->vft[COLOR_string__Object__to_s]))(var18) /* to_s on */; -((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var8, var21) /* error on */; -} else { -} -} -var22 = NEW_mmodule__MModule(&type_mmodule__MModule); -var23 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(self) /* model on */; -var24 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__ANode__location]))(var_nmodule) /* location on */; -((void (*)(val*, val*, val*, val*, val*))(var22->class->vft[COLOR_mmodule__MModule__init]))(var22, var23, var_mgroup, var_mod_name, var24) /* init on */; -var_mmodule = var22; -((void (*)(val*, val*))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__mmodule_61d]))(var_nmodule, var_mmodule) /* mmodule= on */; -var25 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__nmodules]))(self) /* nmodules on */; -((void (*)(val*, val*))(var25->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var25, var_nmodule) /* add on */; -var26 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__mmodule2nmodule]))(self) /* mmodule2nmodule on */; -((void (*)(val*, val*, val*))(var26->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var26, var_mmodule, var_nmodule) /* []= on */; -((void (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__build_module_importation]))(self, var_nmodule) /* build_module_importation on */; -var = var_mmodule; -goto RET_LABEL; -RET_LABEL:; -return var; +{ +{ /* Inline mmodule#MModule#in_importation (var_mmodule) on */ +var189 = var_mmodule->attrs[COLOR_mmodule__MModule___in_importation].val; /* _in_importation on */ +if (unlikely(var189 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation"); +PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 93); +show_backtrace(1); } -/* method modelbuilder#ModelBuilder#build_a_mmodule for (self: Object, nullable MGroup, String, AModule): nullable MModule */ -val* VIRTUAL_modelbuilder__ModelBuilder__build_a_mmodule(val* self, val* p0, val* p1, val* p2) { -val* var /* : nullable MModule */; -val* var1 /* : nullable MModule */; -var1 = modelbuilder__ModelBuilder__build_a_mmodule(self, p0, p1, p2); -var = var1; -RET_LABEL:; -return var; +var187 = var189; +RET_LABEL188:(void)0; } -/* method modelbuilder#ModelBuilder#build_module_importation for (self: ModelBuilder, AModule) */ -void modelbuilder__ModelBuilder__build_module_importation(val* self, val* p0) { -val* var_nmodule /* var nmodule: AModule */; -short int var /* : Bool */; -short int var1 /* : Bool */; -val* var2 /* : nullable MModule */; -val* var_mmodule /* var mmodule: MModule */; -short int var3 /* : Bool */; -short int var_stdimport /* var stdimport: Bool */; -val* var4 /* : Array[MModule] */; -val* var_imported_modules /* var imported_modules: Array[MModule] */; -val* var5 /* : ANodes[AImport] */; -val* var6 /* : Iterator[nullable Object] */; -short int var7 /* : Bool */; -val* var8 /* : nullable Object */; -val* var_aimport /* var aimport: AImport */; -short int var9 /* : Bool */; -short int var10 /* : Bool */; -int cltype; -int idtype; -short int var11 /* : Bool */; -val* var12 /* : AModuleName */; -val* var13 /* : TId */; -val* var14 /* : String */; -val* var_mod_name /* var mod_name: String */; -val* var15 /* : AModuleName */; -val* var16 /* : nullable MModule */; -val* var_sup /* var sup: nullable MModule */; -val* var17 /* : null */; -short int var18 /* : Bool */; -val* var19 /* : AVisibility */; -val* var20 /* : MVisibility */; -val* var_mvisibility /* var mvisibility: MVisibility */; -val* var21 /* : MVisibility */; -short int var22 /* : Bool */; -val* var23 /* : AVisibility */; -static val* varonce; -val* var24 /* : String */; -char* var25 /* : NativeString */; -long var26 /* : Int */; -val* var27 /* : String */; -static val* varonce28; -val* var29 /* : String */; -char* var30 /* : NativeString */; -long var31 /* : Int */; -val* var32 /* : String */; -val* var_mod_name33 /* var mod_name: String */; -val* var34 /* : null */; -val* var35 /* : nullable MModule */; -val* var_sup36 /* var sup: nullable MModule */; -val* var37 /* : null */; -short int var38 /* : Bool */; -val* var39 /* : MVisibility */; -val* var40 /* : ToolContext */; -static val* varonce41; -val* var42 /* : String */; -char* var43 /* : NativeString */; -long var44 /* : Int */; -val* var45 /* : String */; -static val* varonce46; -val* var47 /* : String */; -char* var48 /* : NativeString */; -long var49 /* : Int */; -val* var50 /* : String */; -val* var51 /* : String */; -val* var52 /* : Array[Object] */; -long var53 /* : Int */; -val* var54 /* : NativeArray[Object] */; -val* var55 /* : String */; -long var56 /* : Int */; -var_nmodule = p0; -var = ((short int (*)(val*))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__is_importation_done]))(var_nmodule) /* is_importation_done on */; -if (var){ -goto RET_LABEL; -} else { } -var1 = 1; -((void (*)(val*, short int))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__is_importation_done_61d]))(var_nmodule, var1) /* is_importation_done= on */; -var2 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var_nmodule) /* mmodule on */; -if (var2 == NULL) { -fprintf(stderr, "Runtime error: %s", "Cast failed"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 540); +{ +var190 = poset__POSetElement__direct_greaters(var187); +} +var_directs = var190; +{ +{ /* Inline parser_nodes#AModule#n_imports (var_nmodule) on */ +var193 = var_nmodule->attrs[COLOR_parser_nodes__AModule___n_imports].val; /* _n_imports on */ +if (unlikely(var193 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_imports"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 857); show_backtrace(1); } -var_mmodule = var2; -var3 = 1; -var_stdimport = var3; -var4 = NEW_array__Array(&type_array__Arraymmodule__MModule); -((void (*)(val*))(var4->class->vft[COLOR_array__Array__init]))(var4) /* init on */; -var_imported_modules = var4; -var5 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__AModule__n_imports]))(var_nmodule) /* n_imports on */; -var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Collection__iterator]))(var5) /* iterator on */; +var191 = var193; +RET_LABEL192:(void)0; +} +} +var_194 = var191; +{ +var195 = parser_nodes__ANodes__iterator(var_194); +} +var_196 = var195; for(;;) { -var7 = ((short int (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var6) /* is_ok on */; -if(!var7) break; -var8 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__item]))(var6) /* item on */; -var_aimport = var8; -var9 = 0; -var_stdimport = var9; -/* isa AStdImport */ -cltype = type_parser_nodes__AStdImport.color; -idtype = type_parser_nodes__AStdImport.id; -if(cltype >= var_aimport->type->table_size) { -var10 = 0; -} else { -var10 = var_aimport->type->type_table[cltype] == idtype; +{ +var197 = ((short int (*)(val*))(var_196->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_196) /* is_ok on */; } -var11 = !var10; -if (var11){ -goto CONTINUE_label; -} else { +if (var197){ +{ +var198 = ((val* (*)(val*))(var_196->class->vft[COLOR_abstract_collection__Iterator__item]))(var_196) /* item on */; } -var12 = ((val* (*)(val*))(var_aimport->class->vft[COLOR_parser_nodes__AStdImport__n_name]))(var_aimport) /* n_name on */; -var13 = ((val* (*)(val*))(var12->class->vft[COLOR_parser_nodes__AModuleName__n_id]))(var12) /* n_id on */; -var14 = ((val* (*)(val*))(var13->class->vft[COLOR_parser_nodes__Token__text]))(var13) /* text on */; -var_mod_name = var14; -var15 = ((val* (*)(val*))(var_aimport->class->vft[COLOR_parser_nodes__AStdImport__n_name]))(var_aimport) /* n_name on */; -var16 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__get_mmodule_by_name]))(self, var15, var_mmodule, var_mod_name) /* get_mmodule_by_name on */; -var_sup = var16; -var17 = NULL; -if (var_sup == NULL) { -var18 = 1; /* is null */ +var_nim = var198; +/* isa AStdImport */ +cltype200 = type_parser_nodes__AStdImport.color; +idtype201 = type_parser_nodes__AStdImport.id; +if(cltype200 >= var_nim->type->table_size) { +var199 = 0; } else { -var18 = 0; /* arg is null but recv is not */ +var199 = var_nim->type->type_table[cltype200] == idtype201; } -if (var18){ -goto CONTINUE_label; -} else { -} -((void (*)(val*, val*))(var_aimport->class->vft[COLOR_modelbuilder__AStdImport__mmodule_61d]))(var_aimport, var_sup) /* mmodule= on */; -((void (*)(val*, val*))(var_imported_modules->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_imported_modules, var_sup) /* add on */; -var19 = ((val* (*)(val*))(var_aimport->class->vft[COLOR_parser_nodes__AStdImport__n_visibility]))(var_aimport) /* n_visibility on */; -var20 = ((val* (*)(val*))(var19->class->vft[COLOR_modelbuilder__AVisibility__mvisibility]))(var19) /* mvisibility on */; -var_mvisibility = var20; -var21 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__protected_visibility]))(self) /* protected_visibility on */; -var22 = ((short int (*)(val*, val*))(var_mvisibility->class->vft[COLOR_kernel__Object___61d_61d]))(var_mvisibility, var21) /* == on */; -if (var22){ -var23 = ((val* (*)(val*))(var_aimport->class->vft[COLOR_parser_nodes__AStdImport__n_visibility]))(var_aimport) /* n_visibility on */; -if (varonce) { -var24 = varonce; +var202 = !var199; +if (var202){ +goto BREAK_label203; } else { -var25 = "Error: only properties can be protected."; -var26 = 40; -var27 = string__NativeString__to_s_with_length(var25, var26); -var24 = var27; -varonce = var24; } -((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var23, var24) /* error on */; -goto RET_LABEL; -} else { +{ +{ /* Inline modelbuilder#AStdImport#mmodule (var_nim) on */ +var206 = var_nim->attrs[COLOR_modelbuilder__AStdImport___mmodule].val; /* _mmodule on */ +var204 = var206; +RET_LABEL205:(void)0; } -((void (*)(val*, val*, val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__set_visibility_for]))(var_mmodule, var_sup, var_mvisibility) /* set_visibility_for on */; -CONTINUE_label: (void)0; -((void (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__next]))(var6) /* next on */; } -BREAK_label: (void)0; -if (var_stdimport){ -if (varonce28) { -var29 = varonce28; +var_im = var204; +var207 = NULL; +if (var_im == NULL) { +var208 = 1; /* is null */ } else { -var30 = "standard"; -var31 = 8; -var32 = string__NativeString__to_s_with_length(var30, var31); -var29 = var32; -varonce28 = var29; +var208 = 0; /* arg is null but recv is not */ } -var_mod_name33 = var29; -var34 = NULL; -var35 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__get_mmodule_by_name]))(self, var_nmodule, var34, var_mod_name33) /* get_mmodule_by_name on */; -var_sup36 = var35; -var37 = NULL; -if (var_sup36 == NULL) { -var38 = 0; /* is null */ -} else { -var38 = 1; /* arg is null and recv is not */ +if (0) { +{ /* Inline kernel#Object#== (var_im,var207) on */ +var_other54 = var207; +{ +{ /* Inline kernel#Object#is_same_instance (var_im,var_other54) on */ +var213 = var_im == var_other54; +var211 = var213; +goto RET_LABEL212; +RET_LABEL212:(void)0; } -if (var38){ -((void (*)(val*, val*))(var_imported_modules->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_imported_modules, var_sup36) /* add on */; -var39 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__public_visibility]))(self) /* public_visibility on */; -((void (*)(val*, val*, val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__set_visibility_for]))(var_mmodule, var_sup36, var39) /* set_visibility_for on */; -} else { } +var209 = var211; +goto RET_LABEL210; +RET_LABEL210:(void)0; +} +var208 = var209; +} +if (var208){ +goto BREAK_label203; } else { } -var40 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on */; -if (varonce41) { -var42 = varonce41; +{ +var214 = ((short int (*)(val*, val*))(var_directs->class->vft[COLOR_abstract_collection__Collection__has]))(var_directs, var_im) /* has on */; +} +if (var214){ +goto BREAK_label203; } else { -var43 = " imports "; -var44 = 9; -var45 = string__NativeString__to_s_with_length(var43, var44); -var42 = var45; -varonce41 = var42; } -if (varonce46) { -var47 = varonce46; +BREAK_label203: (void)0; +{ +((void (*)(val*))(var_196->class->vft[COLOR_abstract_collection__Iterator__next]))(var_196) /* next on */; +} } else { -var48 = ", "; -var49 = 2; -var50 = string__NativeString__to_s_with_length(var48, var49); -var47 = var50; -varonce46 = var47; +goto BREAK_label215; +} +} +BREAK_label215: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_196) on */ +RET_LABEL216:(void)0; } -var51 = ((val* (*)(val*, val*))(var_imported_modules->class->vft[COLOR_string__Collection__join]))(var_imported_modules, var47) /* join on */; -var52 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var52 = array_instance Array[Object] */ -var53 = 3; -var54 = NEW_array__NativeArray(var53, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var54)->values[0] = (val*) var_mmodule; -((struct instance_array__NativeArray*)var54)->values[1] = (val*) var42; -((struct instance_array__NativeArray*)var54)->values[2] = (val*) var51; -((void (*)(val*, val*, long))(var52->class->vft[COLOR_array__Array__with_native]))(var52, var54, var53) /* with_native on */; } -var55 = ((val* (*)(val*))(var52->class->vft[COLOR_string__Object__to_s]))(var52) /* to_s on */; -var56 = 3; -((void (*)(val*, val*, long))(var40->class->vft[COLOR_toolcontext__ToolContext__info]))(var40, var55, var56) /* info on */; -((void (*)(val*, val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__set_imported_mmodules]))(var_mmodule, var_imported_modules) /* set_imported_mmodules on */; RET_LABEL:; } /* method modelbuilder#ModelBuilder#build_module_importation for (self: Object, AModule) */ void VIRTUAL_modelbuilder__ModelBuilder__build_module_importation(val* self, val* p0) { -modelbuilder__ModelBuilder__build_module_importation(self, p0); +modelbuilder__ModelBuilder__build_module_importation(self, p0); /* Direct call modelbuilder#ModelBuilder#build_module_importation on */ RET_LABEL:; } /* method modelbuilder#ModelBuilder#nmodules for (self: ModelBuilder): Array[AModule] */ val* modelbuilder__ModelBuilder__nmodules(val* self) { val* var /* : Array[AModule] */; val* var1 /* : Array[AModule] */; -var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___64dnmodules].val; /* @nmodules on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @nmodules"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 572); +var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___nmodules].val; /* _nmodules on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _nmodules"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 725); show_backtrace(1); } var = var1; @@ -3528,29 +7596,29 @@ return var; val* VIRTUAL_modelbuilder__ModelBuilder__nmodules(val* self) { val* var /* : Array[AModule] */; val* var1 /* : Array[AModule] */; -var1 = modelbuilder__ModelBuilder__nmodules(self); -var = var1; -RET_LABEL:; -return var; +val* var3 /* : Array[AModule] */; +{ /* Inline modelbuilder#ModelBuilder#nmodules (self) on */ +var3 = self->attrs[COLOR_modelbuilder__ModelBuilder___nmodules].val; /* _nmodules on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _nmodules"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 725); +show_backtrace(1); } -/* method modelbuilder#ModelBuilder#nmodules= for (self: ModelBuilder, Array[AModule]) */ -void modelbuilder__ModelBuilder__nmodules_61d(val* self, val* p0) { -self->attrs[COLOR_modelbuilder__ModelBuilder___64dnmodules].val = p0; /* @nmodules on */ -RET_LABEL:; +var1 = var3; +RET_LABEL2:(void)0; } -/* method modelbuilder#ModelBuilder#nmodules= for (self: Object, Array[AModule]) */ -void VIRTUAL_modelbuilder__ModelBuilder__nmodules_61d(val* self, val* p0) { -modelbuilder__ModelBuilder__nmodules_61d(self, p0); +var = var1; RET_LABEL:; +return var; } /* method modelbuilder#ModelBuilder#mmodule2nmodule for (self: ModelBuilder): HashMap[MModule, AModule] */ val* modelbuilder__ModelBuilder__mmodule2nmodule(val* self) { val* var /* : HashMap[MModule, AModule] */; val* var1 /* : HashMap[MModule, AModule] */; -var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___64dmmodule2nmodule].val; /* @mmodule2nmodule on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mmodule2nmodule"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 575); +var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___mmodule2nmodule].val; /* _mmodule2nmodule on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule2nmodule"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 728); show_backtrace(1); } var = var1; @@ -3561,61 +7629,131 @@ return var; val* VIRTUAL_modelbuilder__ModelBuilder__mmodule2nmodule(val* self) { val* var /* : HashMap[MModule, AModule] */; val* var1 /* : HashMap[MModule, AModule] */; -var1 = modelbuilder__ModelBuilder__mmodule2nmodule(self); -var = var1; -RET_LABEL:; -return var; +val* var3 /* : HashMap[MModule, AModule] */; +{ /* Inline modelbuilder#ModelBuilder#mmodule2nmodule (self) on */ +var3 = self->attrs[COLOR_modelbuilder__ModelBuilder___mmodule2nmodule].val; /* _mmodule2nmodule on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule2nmodule"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 728); +show_backtrace(1); } -/* method modelbuilder#ModelBuilder#mmodule2nmodule= for (self: ModelBuilder, HashMap[MModule, AModule]) */ -void modelbuilder__ModelBuilder__mmodule2nmodule_61d(val* self, val* p0) { -self->attrs[COLOR_modelbuilder__ModelBuilder___64dmmodule2nmodule].val = p0; /* @mmodule2nmodule on */ -RET_LABEL:; +var1 = var3; +RET_LABEL2:(void)0; } -/* method modelbuilder#ModelBuilder#mmodule2nmodule= for (self: Object, HashMap[MModule, AModule]) */ -void VIRTUAL_modelbuilder__ModelBuilder__mmodule2nmodule_61d(val* self, val* p0) { -modelbuilder__ModelBuilder__mmodule2nmodule_61d(self, p0); +var = var1; RET_LABEL:; +return var; } /* method modelbuilder#ModelBuilder#error for (self: ModelBuilder, ANode, String) */ void modelbuilder__ModelBuilder__error(val* self, val* p0, val* p1) { val* var_n /* var n: ANode */; val* var_text /* var text: String */; val* var /* : ToolContext */; -val* var1 /* : Location */; +val* var2 /* : ToolContext */; +val* var3 /* : Location */; var_n = p0; var_text = p1; -var = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on */; -var1 = ((val* (*)(val*))(var_n->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_n) /* hot_location on */; -((void (*)(val*, val*, val*))(var->class->vft[COLOR_toolcontext__ToolContext__error]))(var, var1, var_text) /* error on */; +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on */ +var2 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +var3 = ((val* (*)(val*))(var_n->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_n) /* hot_location on */; +} +{ +toolcontext__ToolContext__error(var, var3, var_text); /* Direct call toolcontext#ToolContext#error on */ +} RET_LABEL:; } /* method modelbuilder#ModelBuilder#error for (self: Object, ANode, String) */ void VIRTUAL_modelbuilder__ModelBuilder__error(val* self, val* p0, val* p1) { -modelbuilder__ModelBuilder__error(self, p0, p1); +modelbuilder__ModelBuilder__error(self, p0, p1); /* Direct call modelbuilder#ModelBuilder#error on */ RET_LABEL:; } -/* method modelbuilder#ModelBuilder#warning for (self: ModelBuilder, ANode, String) */ -void modelbuilder__ModelBuilder__warning(val* self, val* p0, val* p1) { +/* method modelbuilder#ModelBuilder#warning for (self: ModelBuilder, ANode, String, String) */ +void modelbuilder__ModelBuilder__warning(val* self, val* p0, val* p1, val* p2) { val* var_n /* var n: ANode */; +val* var_tag /* var tag: String */; val* var_text /* var text: String */; val* var /* : ToolContext */; -val* var1 /* : Location */; +val* var2 /* : ToolContext */; +val* var3 /* : Location */; var_n = p0; -var_text = p1; -var = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on */; -var1 = ((val* (*)(val*))(var_n->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_n) /* hot_location on */; -((void (*)(val*, val*, val*))(var->class->vft[COLOR_toolcontext__ToolContext__warning]))(var, var1, var_text) /* warning on */; +var_tag = p1; +var_text = p2; +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on */ +var2 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +var3 = ((val* (*)(val*))(var_n->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_n) /* hot_location on */; +} +{ +toolcontext__ToolContext__warning(var, var3, var_tag, var_text); /* Direct call toolcontext#ToolContext#warning on */ +} +RET_LABEL:; +} +/* method modelbuilder#ModelBuilder#warning for (self: Object, ANode, String, String) */ +void VIRTUAL_modelbuilder__ModelBuilder__warning(val* self, val* p0, val* p1, val* p2) { +modelbuilder__ModelBuilder__warning(self, p0, p1, p2); /* Direct call modelbuilder#ModelBuilder#warning on */ +RET_LABEL:; +} +/* method modelbuilder#ModelBuilder#advice for (self: ModelBuilder, ANode, String, String) */ +void modelbuilder__ModelBuilder__advice(val* self, val* p0, val* p1, val* p2) { +val* var_n /* var n: ANode */; +val* var_tag /* var tag: String */; +val* var_text /* var text: String */; +val* var /* : ToolContext */; +val* var2 /* : ToolContext */; +val* var3 /* : Location */; +var_n = p0; +var_tag = p1; +var_text = p2; +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on */ +var2 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +var3 = ((val* (*)(val*))(var_n->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_n) /* hot_location on */; +} +{ +toolcontext__ToolContext__advice(var, var3, var_tag, var_text); /* Direct call toolcontext#ToolContext#advice on */ +} RET_LABEL:; } -/* method modelbuilder#ModelBuilder#warning for (self: Object, ANode, String) */ -void VIRTUAL_modelbuilder__ModelBuilder__warning(val* self, val* p0, val* p1) { -modelbuilder__ModelBuilder__warning(self, p0, p1); +/* method modelbuilder#ModelBuilder#advice for (self: Object, ANode, String, String) */ +void VIRTUAL_modelbuilder__ModelBuilder__advice(val* self, val* p0, val* p1, val* p2) { +modelbuilder__ModelBuilder__advice(self, p0, p1, p2); /* Direct call modelbuilder#ModelBuilder#advice on */ RET_LABEL:; } -/* method modelbuilder#ModelBuilder#force_get_primitive_method for (self: ModelBuilder, ANode, String, MClass, MModule): MMethod */ +/* method modelbuilder#ModelBuilder#force_get_primitive_method for (self: ModelBuilder, nullable ANode, String, MClass, MModule): MMethod */ val* modelbuilder__ModelBuilder__force_get_primitive_method(val* self, val* p0, val* p1, val* p2, val* p3) { val* var /* : MMethod */; -val* var_n /* var n: ANode */; +val* var_n /* var n: nullable ANode */; val* var_name /* var name: String */; val* var_recv /* var recv: MClass */; val* var_mmodule /* var mmodule: MModule */; @@ -3623,32 +7761,48 @@ val* var1 /* : nullable MMethod */; val* var_res /* var res: nullable MMethod */; val* var2 /* : null */; short int var3 /* : Bool */; -val* var4 /* : ToolContext */; -val* var5 /* : Location */; -static val* varonce; -val* var6 /* : String */; -char* var7 /* : NativeString */; -long var8 /* : Int */; -val* var9 /* : String */; -static val* varonce10; -val* var11 /* : String */; -char* var12 /* : NativeString */; -long var13 /* : Int */; -val* var14 /* : String */; -static val* varonce15; -val* var16 /* : String */; -char* var17 /* : NativeString */; -long var18 /* : Int */; -val* var19 /* : String */; -val* var20 /* : Array[Object] */; -long var21 /* : Int */; -val* var22 /* : NativeArray[Object] */; -val* var23 /* : String */; +short int var4 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var6 /* : Bool */; +short int var8 /* : Bool */; +val* var9 /* : null */; +val* var_l /* var l: nullable Object */; +val* var10 /* : null */; +short int var11 /* : Bool */; +short int var12 /* : Bool */; +val* var_other14 /* var other: nullable Object */; +short int var15 /* : Bool */; +short int var16 /* : Bool */; +short int var17 /* : Bool */; +val* var18 /* : Location */; +val* var19 /* : ToolContext */; +val* var21 /* : ToolContext */; +static val* varonce; +val* var22 /* : String */; +char* var23 /* : NativeString */; +long var24 /* : Int */; +val* var25 /* : FlatString */; +static val* varonce26; +val* var27 /* : String */; +char* var28 /* : NativeString */; +long var29 /* : Int */; +val* var30 /* : FlatString */; +static val* varonce31; +val* var32 /* : String */; +char* var33 /* : NativeString */; +long var34 /* : Int */; +val* var35 /* : FlatString */; +val* var36 /* : Array[Object] */; +long var37 /* : Int */; +val* var38 /* : NativeArray[Object] */; +val* var39 /* : String */; var_n = p0; var_name = p1; var_recv = p2; var_mmodule = p3; -var1 = ((val* (*)(val*, val*, val*))(var_mmodule->class->vft[COLOR_model__MModule__try_get_primitive_method]))(var_mmodule, var_name, var_recv) /* try_get_primitive_method on */; +{ +var1 = model__MModule__try_get_primitive_method(var_mmodule, var_name, var_recv); +} var_res = var1; var2 = NULL; if (var_res == NULL) { @@ -3656,51 +7810,113 @@ var3 = 1; /* is null */ } else { var3 = 0; /* arg is null but recv is not */ } +if (0) { +{ /* Inline kernel#Object#== (var_res,var2) on */ +var_other = var2; +{ +{ /* Inline kernel#Object#is_same_instance (var_res,var_other) on */ +var8 = var_res == var_other; +var6 = var8; +goto RET_LABEL7; +RET_LABEL7:(void)0; +} +} +var4 = var6; +goto RET_LABEL5; +RET_LABEL5:(void)0; +} +var3 = var4; +} if (var3){ -var4 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on */; -var5 = ((val* (*)(val*))(var_n->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_n) /* hot_location on */; +var9 = NULL; +var_l = var9; +var10 = NULL; +if (var_n == NULL) { +var11 = 0; /* is null */ +} else { +var11 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_n,var10) on */ +var_other14 = var10; +{ +var16 = ((short int (*)(val*, val*))(var_n->class->vft[COLOR_kernel__Object___61d_61d]))(var_n, var_other14) /* == on */; +var15 = var16; +} +var17 = !var15; +var12 = var17; +goto RET_LABEL13; +RET_LABEL13:(void)0; +} +var11 = var12; +} +if (var11){ +{ +var18 = ((val* (*)(val*))(var_n->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_n) /* hot_location on */; +} +var_l = var18; +} else { +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on */ +var21 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var21 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var19 = var21; +RET_LABEL20:(void)0; +} +} if (varonce) { -var6 = varonce; +var22 = varonce; } else { -var7 = "Fatal Error: "; -var8 = 13; -var9 = string__NativeString__to_s_with_length(var7, var8); -var6 = var9; -varonce = var6; +var23 = "Fatal Error: "; +var24 = 13; +var25 = string__NativeString__to_s_with_length(var23, var24); +var22 = var25; +varonce = var22; } -if (varonce10) { -var11 = varonce10; +if (varonce26) { +var27 = varonce26; } else { -var12 = " must have a property named "; -var13 = 28; -var14 = string__NativeString__to_s_with_length(var12, var13); -var11 = var14; -varonce10 = var11; +var28 = " must have a property named "; +var29 = 28; +var30 = string__NativeString__to_s_with_length(var28, var29); +var27 = var30; +varonce26 = var27; } -if (varonce15) { -var16 = varonce15; +if (varonce31) { +var32 = varonce31; } else { -var17 = "."; -var18 = 1; -var19 = string__NativeString__to_s_with_length(var17, var18); -var16 = var19; -varonce15 = var16; +var33 = "."; +var34 = 1; +var35 = string__NativeString__to_s_with_length(var33, var34); +var32 = var35; +varonce31 = var32; +} +var36 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var36 = array_instance Array[Object] */ +var37 = 5; +var38 = NEW_array__NativeArray(var37, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var38)->values[0] = (val*) var22; +((struct instance_array__NativeArray*)var38)->values[1] = (val*) var_recv; +((struct instance_array__NativeArray*)var38)->values[2] = (val*) var27; +((struct instance_array__NativeArray*)var38)->values[3] = (val*) var_name; +((struct instance_array__NativeArray*)var38)->values[4] = (val*) var32; +{ +((void (*)(val*, val*, long))(var36->class->vft[COLOR_array__Array__with_native]))(var36, var38, var37) /* with_native on */; +} } -var20 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var20 = array_instance Array[Object] */ -var21 = 5; -var22 = NEW_array__NativeArray(var21, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var22)->values[0] = (val*) var6; -((struct instance_array__NativeArray*)var22)->values[1] = (val*) var_recv; -((struct instance_array__NativeArray*)var22)->values[2] = (val*) var11; -((struct instance_array__NativeArray*)var22)->values[3] = (val*) var_name; -((struct instance_array__NativeArray*)var22)->values[4] = (val*) var16; -((void (*)(val*, val*, long))(var20->class->vft[COLOR_array__Array__with_native]))(var20, var22, var21) /* with_native on */; +{ +var39 = ((val* (*)(val*))(var36->class->vft[COLOR_string__Object__to_s]))(var36) /* to_s on */; +} +{ +toolcontext__ToolContext__fatal_error(var19, var_l, var39); /* Direct call toolcontext#ToolContext#fatal_error on */ } -var23 = ((val* (*)(val*))(var20->class->vft[COLOR_string__Object__to_s]))(var20) /* to_s on */; -((void (*)(val*, val*, val*))(var4->class->vft[COLOR_toolcontext__ToolContext__fatal_error]))(var4, var5, var23) /* fatal_error on */; -fprintf(stderr, "Runtime error: %s", "Aborted"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 599); +PRINT_ERROR("Runtime error: %s", "Aborted"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 761); show_backtrace(1); } else { } @@ -3709,7 +7925,7 @@ goto RET_LABEL; RET_LABEL:; return var; } -/* method modelbuilder#ModelBuilder#force_get_primitive_method for (self: Object, ANode, String, MClass, MModule): MMethod */ +/* method modelbuilder#ModelBuilder#force_get_primitive_method for (self: Object, nullable ANode, String, MClass, MModule): MMethod */ val* VIRTUAL_modelbuilder__ModelBuilder__force_get_primitive_method(val* self, val* p0, val* p1, val* p2, val* p3) { val* var /* : MMethod */; val* var1 /* : MMethod */; @@ -3722,10 +7938,10 @@ return var; val* modelbuilder__ModulePath__name(val* self) { val* var /* : String */; val* var1 /* : String */; -var1 = self->attrs[COLOR_modelbuilder__ModulePath___64dname].val; /* @name on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @name"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 607); +var1 = self->attrs[COLOR_modelbuilder__ModulePath___name].val; /* _name on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 769); show_backtrace(1); } var = var1; @@ -3736,29 +7952,42 @@ return var; val* VIRTUAL_modelbuilder__ModulePath__name(val* self) { val* var /* : String */; val* var1 /* : String */; -var1 = modelbuilder__ModulePath__name(self); +val* var3 /* : String */; +{ /* Inline modelbuilder#ModulePath#name (self) on */ +var3 = self->attrs[COLOR_modelbuilder__ModulePath___name].val; /* _name on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 769); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method modelbuilder#ModulePath#name= for (self: ModulePath, String) */ void modelbuilder__ModulePath__name_61d(val* self, val* p0) { -self->attrs[COLOR_modelbuilder__ModulePath___64dname].val = p0; /* @name on */ +self->attrs[COLOR_modelbuilder__ModulePath___name].val = p0; /* _name on */ RET_LABEL:; } /* method modelbuilder#ModulePath#name= for (self: Object, String) */ void VIRTUAL_modelbuilder__ModulePath__name_61d(val* self, val* p0) { -modelbuilder__ModulePath__name_61d(self, p0); +{ /* Inline modelbuilder#ModulePath#name= (self,p0) on */ +self->attrs[COLOR_modelbuilder__ModulePath___name].val = p0; /* _name on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method modelbuilder#ModulePath#filepath for (self: ModulePath): String */ val* modelbuilder__ModulePath__filepath(val* self) { val* var /* : String */; val* var1 /* : String */; -var1 = self->attrs[COLOR_modelbuilder__ModulePath___64dfilepath].val; /* @filepath on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @filepath"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 611); +var1 = self->attrs[COLOR_modelbuilder__ModulePath___filepath].val; /* _filepath on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _filepath"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 773); show_backtrace(1); } var = var1; @@ -3769,29 +7998,42 @@ return var; val* VIRTUAL_modelbuilder__ModulePath__filepath(val* self) { val* var /* : String */; val* var1 /* : String */; -var1 = modelbuilder__ModulePath__filepath(self); +val* var3 /* : String */; +{ /* Inline modelbuilder#ModulePath#filepath (self) on */ +var3 = self->attrs[COLOR_modelbuilder__ModulePath___filepath].val; /* _filepath on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _filepath"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 773); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method modelbuilder#ModulePath#filepath= for (self: ModulePath, String) */ void modelbuilder__ModulePath__filepath_61d(val* self, val* p0) { -self->attrs[COLOR_modelbuilder__ModulePath___64dfilepath].val = p0; /* @filepath on */ +self->attrs[COLOR_modelbuilder__ModulePath___filepath].val = p0; /* _filepath on */ RET_LABEL:; } /* method modelbuilder#ModulePath#filepath= for (self: Object, String) */ void VIRTUAL_modelbuilder__ModulePath__filepath_61d(val* self, val* p0) { -modelbuilder__ModulePath__filepath_61d(self, p0); +{ /* Inline modelbuilder#ModulePath#filepath= (self,p0) on */ +self->attrs[COLOR_modelbuilder__ModulePath___filepath].val = p0; /* _filepath on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method modelbuilder#ModulePath#mgroup for (self: ModulePath): MGroup */ val* modelbuilder__ModulePath__mgroup(val* self) { val* var /* : MGroup */; val* var1 /* : MGroup */; -var1 = self->attrs[COLOR_modelbuilder__ModulePath___64dmgroup].val; /* @mgroup on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mgroup"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 614); +var1 = self->attrs[COLOR_modelbuilder__ModulePath___mgroup].val; /* _mgroup on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroup"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 776); show_backtrace(1); } var = var1; @@ -3802,26 +8044,39 @@ return var; val* VIRTUAL_modelbuilder__ModulePath__mgroup(val* self) { val* var /* : MGroup */; val* var1 /* : MGroup */; -var1 = modelbuilder__ModulePath__mgroup(self); +val* var3 /* : MGroup */; +{ /* Inline modelbuilder#ModulePath#mgroup (self) on */ +var3 = self->attrs[COLOR_modelbuilder__ModulePath___mgroup].val; /* _mgroup on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroup"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 776); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method modelbuilder#ModulePath#mgroup= for (self: ModulePath, MGroup) */ void modelbuilder__ModulePath__mgroup_61d(val* self, val* p0) { -self->attrs[COLOR_modelbuilder__ModulePath___64dmgroup].val = p0; /* @mgroup on */ +self->attrs[COLOR_modelbuilder__ModulePath___mgroup].val = p0; /* _mgroup on */ RET_LABEL:; } /* method modelbuilder#ModulePath#mgroup= for (self: Object, MGroup) */ void VIRTUAL_modelbuilder__ModulePath__mgroup_61d(val* self, val* p0) { -modelbuilder__ModulePath__mgroup_61d(self, p0); +{ /* Inline modelbuilder#ModulePath#mgroup= (self,p0) on */ +self->attrs[COLOR_modelbuilder__ModulePath___mgroup].val = p0; /* _mgroup on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method modelbuilder#ModulePath#mmodule for (self: ModulePath): nullable MModule */ val* modelbuilder__ModulePath__mmodule(val* self) { val* var /* : nullable MModule */; val* var1 /* : nullable MModule */; -var1 = self->attrs[COLOR_modelbuilder__ModulePath___64dmmodule].val; /* @mmodule on */ +var1 = self->attrs[COLOR_modelbuilder__ModulePath___mmodule].val; /* _mmodule on */ var = var1; RET_LABEL:; return var; @@ -3830,26 +8085,46 @@ return var; val* VIRTUAL_modelbuilder__ModulePath__mmodule(val* self) { val* var /* : nullable MModule */; val* var1 /* : nullable MModule */; -var1 = modelbuilder__ModulePath__mmodule(self); +val* var3 /* : nullable MModule */; +{ /* Inline modelbuilder#ModulePath#mmodule (self) on */ +var3 = self->attrs[COLOR_modelbuilder__ModulePath___mmodule].val; /* _mmodule on */ +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method modelbuilder#ModulePath#mmodule= for (self: ModulePath, nullable MModule) */ void modelbuilder__ModulePath__mmodule_61d(val* self, val* p0) { -self->attrs[COLOR_modelbuilder__ModulePath___64dmmodule].val = p0; /* @mmodule on */ +self->attrs[COLOR_modelbuilder__ModulePath___mmodule].val = p0; /* _mmodule on */ RET_LABEL:; } /* method modelbuilder#ModulePath#mmodule= for (self: Object, nullable MModule) */ void VIRTUAL_modelbuilder__ModulePath__mmodule_61d(val* self, val* p0) { -modelbuilder__ModulePath__mmodule_61d(self, p0); +{ /* Inline modelbuilder#ModulePath#mmodule= (self,p0) on */ +self->attrs[COLOR_modelbuilder__ModulePath___mmodule].val = p0; /* _mmodule on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method modelbuilder#ModulePath#to_s for (self: ModulePath): String */ val* modelbuilder__ModulePath__to_s(val* self) { val* var /* : String */; val* var1 /* : String */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModulePath__filepath]))(self) /* filepath on */; +val* var3 /* : String */; +{ +{ /* Inline modelbuilder#ModulePath#filepath (self) on */ +var3 = self->attrs[COLOR_modelbuilder__ModulePath___filepath].val; /* _filepath on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _filepath"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 773); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} var = var1; goto RET_LABEL; RET_LABEL:; @@ -3864,23 +8139,61 @@ var = var1; RET_LABEL:; return var; } -/* method modelbuilder#ModulePath#init for (self: ModulePath, String, String, MGroup) */ -void modelbuilder__ModulePath__init(val* self, val* p0, val* p1, val* p2) { -self->attrs[COLOR_modelbuilder__ModulePath___64dname].val = p0; /* @name on */ -self->attrs[COLOR_modelbuilder__ModulePath___64dfilepath].val = p1; /* @filepath on */ -self->attrs[COLOR_modelbuilder__ModulePath___64dmgroup].val = p2; /* @mgroup on */ +/* method modelbuilder#ModulePath#init for (self: ModulePath) */ +void modelbuilder__ModulePath__init(val* self) { +{ +((void (*)(val*))(self->class->vft[COLOR_modelbuilder__ModulePath__init]))(self) /* init on */; +} +RET_LABEL:; +} +/* method modelbuilder#ModulePath#init for (self: Object) */ +void VIRTUAL_modelbuilder__ModulePath__init(val* self) { +{ /* Inline modelbuilder#ModulePath#init (self) on */ +{ +((void (*)(val*))(self->class->vft[COLOR_modelbuilder__ModulePath__init]))(self) /* init on */; +} +RET_LABEL1:(void)0; +} +RET_LABEL:; +} +/* method modelbuilder#MGroup#module_paths for (self: MGroup): Array[ModulePath] */ +val* modelbuilder__MGroup__module_paths(val* self) { +val* var /* : Array[ModulePath] */; +val* var1 /* : Array[ModulePath] */; +var1 = self->attrs[COLOR_modelbuilder__MGroup___module_paths].val; /* _module_paths on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _module_paths"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 786); +show_backtrace(1); +} +var = var1; RET_LABEL:; +return var; +} +/* method modelbuilder#MGroup#module_paths for (self: Object): Array[ModulePath] */ +val* VIRTUAL_modelbuilder__MGroup__module_paths(val* self) { +val* var /* : Array[ModulePath] */; +val* var1 /* : Array[ModulePath] */; +val* var3 /* : Array[ModulePath] */; +{ /* Inline modelbuilder#MGroup#module_paths (self) on */ +var3 = self->attrs[COLOR_modelbuilder__MGroup___module_paths].val; /* _module_paths on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _module_paths"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 786); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; } -/* method modelbuilder#ModulePath#init for (self: Object, String, String, MGroup) */ -void VIRTUAL_modelbuilder__ModulePath__init(val* self, val* p0, val* p1, val* p2) { -modelbuilder__ModulePath__init(self, p0, p1, p2); +var = var1; RET_LABEL:; +return var; } /* method modelbuilder#AStdImport#mmodule for (self: AStdImport): nullable MModule */ val* modelbuilder__AStdImport__mmodule(val* self) { val* var /* : nullable MModule */; val* var1 /* : nullable MModule */; -var1 = self->attrs[COLOR_modelbuilder__AStdImport___64dmmodule].val; /* @mmodule on */ +var1 = self->attrs[COLOR_modelbuilder__AStdImport___mmodule].val; /* _mmodule on */ var = var1; RET_LABEL:; return var; @@ -3889,26 +8202,34 @@ return var; val* VIRTUAL_modelbuilder__AStdImport__mmodule(val* self) { val* var /* : nullable MModule */; val* var1 /* : nullable MModule */; -var1 = modelbuilder__AStdImport__mmodule(self); +val* var3 /* : nullable MModule */; +{ /* Inline modelbuilder#AStdImport#mmodule (self) on */ +var3 = self->attrs[COLOR_modelbuilder__AStdImport___mmodule].val; /* _mmodule on */ +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method modelbuilder#AStdImport#mmodule= for (self: AStdImport, nullable MModule) */ void modelbuilder__AStdImport__mmodule_61d(val* self, val* p0) { -self->attrs[COLOR_modelbuilder__AStdImport___64dmmodule].val = p0; /* @mmodule on */ +self->attrs[COLOR_modelbuilder__AStdImport___mmodule].val = p0; /* _mmodule on */ RET_LABEL:; } /* method modelbuilder#AStdImport#mmodule= for (self: Object, nullable MModule) */ void VIRTUAL_modelbuilder__AStdImport__mmodule_61d(val* self, val* p0) { -modelbuilder__AStdImport__mmodule_61d(self, p0); +{ /* Inline modelbuilder#AStdImport#mmodule= (self,p0) on */ +self->attrs[COLOR_modelbuilder__AStdImport___mmodule].val = p0; /* _mmodule on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method modelbuilder#AModule#mmodule for (self: AModule): nullable MModule */ val* modelbuilder__AModule__mmodule(val* self) { val* var /* : nullable MModule */; val* var1 /* : nullable MModule */; -var1 = self->attrs[COLOR_modelbuilder__AModule___64dmmodule].val; /* @mmodule on */ +var1 = self->attrs[COLOR_modelbuilder__AModule___mmodule].val; /* _mmodule on */ var = var1; RET_LABEL:; return var; @@ -3917,26 +8238,34 @@ return var; val* VIRTUAL_modelbuilder__AModule__mmodule(val* self) { val* var /* : nullable MModule */; val* var1 /* : nullable MModule */; -var1 = modelbuilder__AModule__mmodule(self); +val* var3 /* : nullable MModule */; +{ /* Inline modelbuilder#AModule#mmodule (self) on */ +var3 = self->attrs[COLOR_modelbuilder__AModule___mmodule].val; /* _mmodule on */ +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method modelbuilder#AModule#mmodule= for (self: AModule, nullable MModule) */ void modelbuilder__AModule__mmodule_61d(val* self, val* p0) { -self->attrs[COLOR_modelbuilder__AModule___64dmmodule].val = p0; /* @mmodule on */ +self->attrs[COLOR_modelbuilder__AModule___mmodule].val = p0; /* _mmodule on */ RET_LABEL:; } /* method modelbuilder#AModule#mmodule= for (self: Object, nullable MModule) */ void VIRTUAL_modelbuilder__AModule__mmodule_61d(val* self, val* p0) { -modelbuilder__AModule__mmodule_61d(self, p0); +{ /* Inline modelbuilder#AModule#mmodule= (self,p0) on */ +self->attrs[COLOR_modelbuilder__AModule___mmodule].val = p0; /* _mmodule on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method modelbuilder#AModule#is_importation_done for (self: AModule): Bool */ short int modelbuilder__AModule__is_importation_done(val* self) { short int var /* : Bool */; short int var1 /* : Bool */; -var1 = self->attrs[COLOR_modelbuilder__AModule___64dis_importation_done].s; /* @is_importation_done on */ +var1 = self->attrs[COLOR_modelbuilder__AModule___is_importation_done].s; /* _is_importation_done on */ var = var1; RET_LABEL:; return var; @@ -3945,46 +8274,36 @@ return var; short int VIRTUAL_modelbuilder__AModule__is_importation_done(val* self) { short int var /* : Bool */; short int var1 /* : Bool */; -var1 = modelbuilder__AModule__is_importation_done(self); +short int var3 /* : Bool */; +{ /* Inline modelbuilder#AModule#is_importation_done (self) on */ +var3 = self->attrs[COLOR_modelbuilder__AModule___is_importation_done].s; /* _is_importation_done on */ +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method modelbuilder#AModule#is_importation_done= for (self: AModule, Bool) */ void modelbuilder__AModule__is_importation_done_61d(val* self, short int p0) { -self->attrs[COLOR_modelbuilder__AModule___64dis_importation_done].s = p0; /* @is_importation_done on */ +self->attrs[COLOR_modelbuilder__AModule___is_importation_done].s = p0; /* _is_importation_done on */ RET_LABEL:; } /* method modelbuilder#AModule#is_importation_done= for (self: Object, Bool) */ void VIRTUAL_modelbuilder__AModule__is_importation_done_61d(val* self, short int p0) { -modelbuilder__AModule__is_importation_done_61d(self, p0); -RET_LABEL:; -} -/* method modelbuilder#AVisibility#mvisibility for (self: AVisibility): MVisibility */ -val* modelbuilder__AVisibility__mvisibility(val* self) { -val* var /* : MVisibility */; -const char* var_class_name; -var_class_name = self == NULL ? "null" : self->type->name; -fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "mvisibility", var_class_name); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 637); -show_backtrace(1); -RET_LABEL:; -return var; +{ /* Inline modelbuilder#AModule#is_importation_done= (self,p0) on */ +self->attrs[COLOR_modelbuilder__AModule___is_importation_done].s = p0; /* _is_importation_done on */ +RET_LABEL1:(void)0; } -/* method modelbuilder#AVisibility#mvisibility for (self: Object): MVisibility */ -val* VIRTUAL_modelbuilder__AVisibility__mvisibility(val* self) { -val* var /* : MVisibility */; -val* var1 /* : MVisibility */; -var1 = modelbuilder__AVisibility__mvisibility(self); -var = var1; RET_LABEL:; -return var; } /* method modelbuilder#AIntrudeVisibility#mvisibility for (self: AIntrudeVisibility): MVisibility */ val* modelbuilder__AIntrudeVisibility__mvisibility(val* self) { val* var /* : MVisibility */; val* var1 /* : MVisibility */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__intrude_visibility]))(self) /* intrude_visibility on */; +{ +var1 = model_base__Object__intrude_visibility(self); +} var = var1; goto RET_LABEL; RET_LABEL:; @@ -4003,7 +8322,9 @@ return var; val* modelbuilder__APublicVisibility__mvisibility(val* self) { val* var /* : MVisibility */; val* var1 /* : MVisibility */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__public_visibility]))(self) /* public_visibility on */; +{ +var1 = model_base__Object__public_visibility(self); +} var = var1; goto RET_LABEL; RET_LABEL:; @@ -4022,7 +8343,9 @@ return var; val* modelbuilder__AProtectedVisibility__mvisibility(val* self) { val* var /* : MVisibility */; val* var1 /* : MVisibility */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__protected_visibility]))(self) /* protected_visibility on */; +{ +var1 = model_base__Object__protected_visibility(self); +} var = var1; goto RET_LABEL; RET_LABEL:; @@ -4041,7 +8364,9 @@ return var; val* modelbuilder__APrivateVisibility__mvisibility(val* self) { val* var /* : MVisibility */; val* var1 /* : MVisibility */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__private_visibility]))(self) /* private_visibility on */; +{ +var1 = model_base__Object__private_visibility(self); +} var = var1; goto RET_LABEL; RET_LABEL:; @@ -4056,3 +8381,432 @@ var = var1; RET_LABEL:; return var; } +/* method modelbuilder#ADoc#mdoc_cache for (self: ADoc): nullable MDoc */ +val* modelbuilder__ADoc__mdoc_cache(val* self) { +val* var /* : nullable MDoc */; +val* var1 /* : nullable MDoc */; +var1 = self->attrs[COLOR_modelbuilder__ADoc___mdoc_cache].val; /* _mdoc_cache on */ +var = var1; +RET_LABEL:; +return var; +} +/* method modelbuilder#ADoc#mdoc_cache for (self: Object): nullable MDoc */ +val* VIRTUAL_modelbuilder__ADoc__mdoc_cache(val* self) { +val* var /* : nullable MDoc */; +val* var1 /* : nullable MDoc */; +val* var3 /* : nullable MDoc */; +{ /* Inline modelbuilder#ADoc#mdoc_cache (self) on */ +var3 = self->attrs[COLOR_modelbuilder__ADoc___mdoc_cache].val; /* _mdoc_cache on */ +var1 = var3; +RET_LABEL2:(void)0; +} +var = var1; +RET_LABEL:; +return var; +} +/* method modelbuilder#ADoc#mdoc_cache= for (self: ADoc, nullable MDoc) */ +void modelbuilder__ADoc__mdoc_cache_61d(val* self, val* p0) { +self->attrs[COLOR_modelbuilder__ADoc___mdoc_cache].val = p0; /* _mdoc_cache on */ +RET_LABEL:; +} +/* method modelbuilder#ADoc#mdoc_cache= for (self: Object, nullable MDoc) */ +void VIRTUAL_modelbuilder__ADoc__mdoc_cache_61d(val* self, val* p0) { +{ /* Inline modelbuilder#ADoc#mdoc_cache= (self,p0) on */ +self->attrs[COLOR_modelbuilder__ADoc___mdoc_cache].val = p0; /* _mdoc_cache on */ +RET_LABEL1:(void)0; +} +RET_LABEL:; +} +/* method modelbuilder#ADoc#to_mdoc for (self: ADoc): MDoc */ +val* modelbuilder__ADoc__to_mdoc(val* self) { +val* var /* : MDoc */; +val* var1 /* : nullable MDoc */; +val* var3 /* : nullable MDoc */; +val* var_res /* var res: nullable MDoc */; +val* var4 /* : null */; +short int var5 /* : Bool */; +short int var6 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var8 /* : Bool */; +short int var9 /* : Bool */; +short int var10 /* : Bool */; +val* var11 /* : MDoc */; +val* var12 /* : ANodes[TComment] */; +val* var14 /* : ANodes[TComment] */; +val* var_ /* var : ANodes[TComment] */; +val* var15 /* : Iterator[ANode] */; +val* var_16 /* var : Iterator[TComment] */; +short int var17 /* : Bool */; +val* var18 /* : nullable Object */; +val* var_c /* var c: TComment */; +val* var19 /* : String */; +val* var_text /* var text: String */; +long var20 /* : Int */; +long var22 /* : Int */; +long var23 /* : Int */; +short int var24 /* : Bool */; +short int var26 /* : Bool */; +int cltype; +int idtype; +const char* var_class_name; +short int var27 /* : Bool */; +val* var28 /* : Array[String] */; +val* var30 /* : Array[String] */; +static val* varonce; +val* var31 /* : String */; +char* var32 /* : NativeString */; +long var33 /* : Int */; +val* var34 /* : FlatString */; +val* var35 /* : SequenceRead[Char] */; +val* var37 /* : SequenceRead[Char] */; +long var38 /* : Int */; +val* var39 /* : nullable Object */; +char var40 /* : Char */; +short int var41 /* : Bool */; +short int var42 /* : Bool */; +short int var44 /* : Bool */; +char var45 /* : Char */; +val* var46 /* : SequenceRead[Char] */; +val* var48 /* : SequenceRead[Char] */; +long var49 /* : Int */; +val* var50 /* : nullable Object */; +char var51 /* : Char */; +short int var52 /* : Bool */; +short int var53 /* : Bool */; +short int var55 /* : Bool */; +char var56 /* : Char */; +long var57 /* : Int */; +val* var58 /* : Text */; +long var59 /* : Int */; +val* var60 /* : Text */; +val* var61 /* : SequenceRead[Char] */; +val* var63 /* : SequenceRead[Char] */; +val* var64 /* : nullable Object */; +char var65 /* : Char */; +short int var66 /* : Bool */; +short int var67 /* : Bool */; +short int var69 /* : Bool */; +char var70 /* : Char */; +long var71 /* : Int */; +long var72 /* : Int */; +long var74 /* : Int */; +long var75 /* : Int */; +long var76 /* : Int */; +short int var78 /* : Bool */; +int cltype79; +int idtype80; +const char* var_class_name81; +long var82 /* : Int */; +val* var83 /* : String */; +val* var84 /* : Array[String] */; +val* var86 /* : Array[String] */; +{ +{ /* Inline modelbuilder#ADoc#mdoc_cache (self) on */ +var3 = self->attrs[COLOR_modelbuilder__ADoc___mdoc_cache].val; /* _mdoc_cache on */ +var1 = var3; +RET_LABEL2:(void)0; +} +} +var_res = var1; +var4 = NULL; +if (var_res == NULL) { +var5 = 0; /* is null */ +} else { +var5 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_res,var4) on */ +var_other = var4; +{ +var9 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on */; +var8 = var9; +} +var10 = !var8; +var6 = var10; +goto RET_LABEL7; +RET_LABEL7:(void)0; +} +var5 = var6; +} +if (var5){ +var = var_res; +goto RET_LABEL; +} else { +} +var11 = NEW_mdoc__MDoc(&type_mdoc__MDoc); +{ +((void (*)(val*))(var11->class->vft[COLOR_kernel__Object__init]))(var11) /* init on */; +} +var_res = var11; +{ +{ /* Inline parser_nodes#ADoc#n_comment (self) on */ +var14 = self->attrs[COLOR_parser_nodes__ADoc___n_comment].val; /* _n_comment on */ +if (unlikely(var14 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_comment"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 2019); +show_backtrace(1); +} +var12 = var14; +RET_LABEL13:(void)0; +} +} +var_ = var12; +{ +var15 = parser_nodes__ANodes__iterator(var_); +} +var_16 = var15; +for(;;) { +{ +var17 = ((short int (*)(val*))(var_16->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_16) /* is_ok on */; +} +if (var17){ +{ +var18 = ((val* (*)(val*))(var_16->class->vft[COLOR_abstract_collection__Iterator__item]))(var_16) /* item on */; +} +var_c = var18; +{ +var19 = lexer_work__Token__text(var_c); +} +var_text = var19; +{ +{ /* Inline string#FlatText#length (var_text) on */ +var22 = var_text->attrs[COLOR_string__FlatText___length].l; /* _length on */ +var20 = var22; +RET_LABEL21:(void)0; +} +} +var23 = 2; +{ +{ /* Inline kernel#Int#< (var20,var23) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var26 = 1; /* easy isa OTHER*/ +if (unlikely(!var26)) { +var_class_name = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371); +show_backtrace(1); +} +var27 = var20 < var23; +var24 = var27; +goto RET_LABEL25; +RET_LABEL25:(void)0; +} +} +if (var24){ +{ +{ /* Inline mdoc#MDoc#content (var_res) on */ +var30 = var_res->attrs[COLOR_mdoc__MDoc___content].val; /* _content on */ +if (unlikely(var30 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _content"); +PRINT_ERROR(" (%s:%d)\n", "model/mdoc.nit", 22); +show_backtrace(1); +} +var28 = var30; +RET_LABEL29:(void)0; +} +} +if (varonce) { +var31 = varonce; +} else { +var32 = ""; +var33 = 0; +var34 = string__NativeString__to_s_with_length(var32, var33); +var31 = var34; +varonce = var31; +} +{ +array__Array__add(var28, var31); /* Direct call array#Array#add on */ +} +goto BREAK_label; +} else { +} +{ +{ /* Inline string#FlatString#chars (var_text) on */ +var37 = var_text->attrs[COLOR_string__FlatString___chars].val; /* _chars on */ +if (unlikely(var37 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _chars"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/string.nit", 939); +show_backtrace(1); +} +var35 = var37; +RET_LABEL36:(void)0; +} +} +var38 = 0; +{ +var39 = ((val* (*)(val*, long))(var35->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var35, var38) /* [] on */; +} +var40 = '#'; +{ +{ /* Inline kernel#Char#== (var39,var40) on */ +var44 = (var39 != NULL) && (var39->class == &class_kernel__Char); +if (var44) { +var45 = ((struct instance_kernel__Char*)var39)->value; /* autounbox from nullable Object to Char */; +var44 = (var45 == var40); +} +var42 = var44; +goto RET_LABEL43; +RET_LABEL43:(void)0; +} +var41 = var42; +} +if (unlikely(!var41)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 832); +show_backtrace(1); +} +{ +{ /* Inline string#FlatString#chars (var_text) on */ +var48 = var_text->attrs[COLOR_string__FlatString___chars].val; /* _chars on */ +if (unlikely(var48 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _chars"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/string.nit", 939); +show_backtrace(1); +} +var46 = var48; +RET_LABEL47:(void)0; +} +} +var49 = 1; +{ +var50 = ((val* (*)(val*, long))(var46->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var46, var49) /* [] on */; +} +var51 = ' '; +{ +{ /* Inline kernel#Char#== (var50,var51) on */ +var55 = (var50 != NULL) && (var50->class == &class_kernel__Char); +if (var55) { +var56 = ((struct instance_kernel__Char*)var50)->value; /* autounbox from nullable Object to Char */; +var55 = (var56 == var51); +} +var53 = var55; +goto RET_LABEL54; +RET_LABEL54:(void)0; +} +var52 = var53; +} +if (var52){ +var57 = 2; +{ +var58 = string__Text__substring_from(var_text, var57); +} +var_text = var58; +} else { +var59 = 1; +{ +var60 = string__Text__substring_from(var_text, var59); +} +var_text = var60; +} +{ +{ /* Inline string#FlatString#chars (var_text) on */ +var63 = var_text->attrs[COLOR_string__FlatString___chars].val; /* _chars on */ +if (unlikely(var63 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _chars"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/string.nit", 939); +show_backtrace(1); +} +var61 = var63; +RET_LABEL62:(void)0; +} +} +{ +var64 = ((val* (*)(val*))(var61->class->vft[COLOR_abstract_collection__SequenceRead__last]))(var61) /* last on */; +} +var65 = '\n'; +{ +{ /* Inline kernel#Char#== (var64,var65) on */ +var69 = (var64 != NULL) && (var64->class == &class_kernel__Char); +if (var69) { +var70 = ((struct instance_kernel__Char*)var64)->value; /* autounbox from nullable Object to Char */; +var69 = (var70 == var65); +} +var67 = var69; +goto RET_LABEL68; +RET_LABEL68:(void)0; +} +var66 = var67; +} +if (var66){ +var71 = 0; +{ +{ /* Inline string#FlatText#length (var_text) on */ +var74 = var_text->attrs[COLOR_string__FlatText___length].l; /* _length on */ +var72 = var74; +RET_LABEL73:(void)0; +} +} +var75 = 1; +{ +{ /* Inline kernel#Int#- (var72,var75) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var78 = 1; /* easy isa OTHER*/ +if (unlikely(!var78)) { +var_class_name81 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name81); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377); +show_backtrace(1); +} +var82 = var72 - var75; +var76 = var82; +goto RET_LABEL77; +RET_LABEL77:(void)0; +} +} +{ +var83 = string__FlatString__substring(var_text, var71, var76); +} +var_text = var83; +} else { +} +{ +{ /* Inline mdoc#MDoc#content (var_res) on */ +var86 = var_res->attrs[COLOR_mdoc__MDoc___content].val; /* _content on */ +if (unlikely(var86 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _content"); +PRINT_ERROR(" (%s:%d)\n", "model/mdoc.nit", 22); +show_backtrace(1); +} +var84 = var86; +RET_LABEL85:(void)0; +} +} +{ +array__Array__add(var84, var_text); /* Direct call array#Array#add on */ +} +BREAK_label: (void)0; +{ +((void (*)(val*))(var_16->class->vft[COLOR_abstract_collection__Iterator__next]))(var_16) /* next on */; +} +} else { +goto BREAK_label87; +} +} +BREAK_label87: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_16) on */ +RET_LABEL88:(void)0; +} +} +{ +{ /* Inline modelbuilder#ADoc#mdoc_cache= (self,var_res) on */ +self->attrs[COLOR_modelbuilder__ADoc___mdoc_cache].val = var_res; /* _mdoc_cache on */ +RET_LABEL89:(void)0; +} +} +var = var_res; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method modelbuilder#ADoc#to_mdoc for (self: Object): MDoc */ +val* VIRTUAL_modelbuilder__ADoc__to_mdoc(val* self) { +val* var /* : MDoc */; +val* var1 /* : MDoc */; +var1 = modelbuilder__ADoc__to_mdoc(self); +var = var1; +RET_LABEL:; +return var; +}