X-Git-Url: http://nitlanguage.org diff --git a/c_src/modelbuilder.sep.1.c b/c_src/modelbuilder.sep.1.c index 4b1f57c..d6ad91c 100644 --- a/c_src/modelbuilder.sep.1.c +++ b/c_src/modelbuilder.sep.1.c @@ -7,7 +7,7 @@ var1 = self->attrs[COLOR_modelbuilder__ToolContext___64dopt_path].val; /* @opt_p if (var1 == NULL) { fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_path"); fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 37); -exit(1); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -40,7 +40,7 @@ var1 = self->attrs[COLOR_modelbuilder__ToolContext___64dopt_only_metamodel].val; if (var1 == NULL) { fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_only_metamodel"); fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 40); -exit(1); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -73,7 +73,7 @@ var1 = self->attrs[COLOR_modelbuilder__ToolContext___64dopt_only_parse].val; /* if (var1 == NULL) { fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_only_parse"); fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 43); -exit(1); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -120,7 +120,6 @@ var6 = NEW_array__NativeArray(var5, &type_array__NativeArrayopts__Option); ((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 */; -CHECK_NEW_array__Array(var4); } ((void (*)(val*, val*))(var->class->vft[COLOR_opts__OptionContext__add_option]))(var, var4) /* add_option on */; RET_LABEL:; @@ -138,7 +137,7 @@ var1 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ToolContext__model if (var1 == NULL) { fprintf(stderr, "Runtime error: %s", "Cast failed"); fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 52); -exit(1); +show_backtrace(1); } var = var1; goto RET_LABEL; @@ -182,6 +181,45 @@ void VIRTUAL_modelbuilder__ToolContext__modelbuilder_real_61d(val* self, val* p0 modelbuilder__ToolContext__modelbuilder_real_61d(self, p0); RET_LABEL:; } +/* method modelbuilder#ToolContext#run_global_phases for (self: ToolContext, MModule) */ +void modelbuilder__ToolContext__run_global_phases(val* self, val* p0) { +val* var_mainmodule /* var mainmodule: MModule */; +val* var /* : Sequence[Phase] */; +val* var1 /* : Iterator[nullable Object] */; +short int var2 /* : Bool */; +val* var3 /* : 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 */; +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 */; +} +BREAK_label: (void)0; +RET_LABEL:; +} +/* method modelbuilder#ToolContext#run_global_phases for (self: Object, MModule) */ +void VIRTUAL_modelbuilder__ToolContext__run_global_phases(val* self, val* p0) { +modelbuilder__ToolContext__run_global_phases(self, p0); +RET_LABEL:; +} +/* method modelbuilder#Phase#process_mainmodule for (self: Phase, MModule) */ +void modelbuilder__Phase__process_mainmodule(val* self, val* p0) { +val* var_mainmodule /* var mainmodule: MModule */; +var_mainmodule = p0; +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); +RET_LABEL:; +} /* method modelbuilder#ModelBuilder#model for (self: ModelBuilder): Model */ val* modelbuilder__ModelBuilder__model(val* self) { val* var /* : Model */; @@ -189,8 +227,8 @@ 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", 59); -exit(1); +fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 73); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -222,8 +260,8 @@ 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", 62); -exit(1); +fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 76); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -278,15 +316,14 @@ 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_model_base__Model__mmodules]))(var) /* mmodules 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_model_base__Model__mmodule_importation_hierarchy]))(var3) /* mmodule_importation_hierarchy 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 */; -CHECK_NEW_array__Array(var5); var_nmodules = var5; var6 = ((val* (*)(val*))(var_mmodules->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mmodules) /* iterator on */; for(;;) { @@ -413,8 +450,8 @@ var2 = 0; /* arg is null but recv is not */ } if (!var2) { fprintf(stderr, "Runtime error: %s", "Assert failed"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 88); -exit(1); +fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 102); +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 */; @@ -459,7 +496,6 @@ 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 */; -CHECK_NEW_array__Array(var25); var_ = var25; if (varonce27) { var28 = varonce27; @@ -495,7 +531,6 @@ var39 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__pat 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 */; -CHECK_NEW_array__Array(var40); var_42 = var40; if (varonce43) { var44 = varonce43; @@ -550,52 +585,52 @@ char* var4 /* : NativeString */; long var5 /* : Int */; val* var6 /* : String */; long var7 /* : Int */; -val* var8 /* : Array[MModule] */; -val* var_mmodules /* var mmodules: Array[MModule] */; +val* var8 /* : ArraySet[MModule] */; +val* var_mmodules /* var mmodules: ArraySet[MModule] */; val* var9 /* : Iterator[nullable Object] */; short int var10 /* : Bool */; val* var11 /* : nullable Object */; val* var_a /* var a: String */; -val* var12 /* : null */; -val* var13 /* : nullable AModule */; +val* var12 /* : nullable AModule */; val* var_nmodule /* var nmodule: nullable AModule */; -val* var14 /* : null */; -short int var15 /* : Bool */; -val* var16 /* : nullable MModule */; -long var17 /* : Int */; +val* var13 /* : null */; +short int var14 /* : Bool */; +val* var15 /* : nullable MModule */; +long var16 /* : Int */; long var_time1 /* var time1: Int */; -val* var18 /* : ToolContext */; -static val* varonce19; -val* var20 /* : String */; -char* var21 /* : NativeString */; -long var22 /* : Int */; -val* var23 /* : String */; -long var24 /* : Int */; -long var26 /* : Int */; -static val* varonce27; -val* var28 /* : String */; -char* var29 /* : NativeString */; -long var30 /* : Int */; -val* var31 /* : String */; -val* var32 /* : Array[Object] */; -long var33 /* : Int */; -val* var34 /* : NativeArray[Object] */; -val* var35 /* : Object */; -val* var36 /* : String */; -long var37 /* : 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 /* : ToolContext */; -val* var40 /* : OptionBool */; -val* var41 /* : nullable Object */; -short int var42 /* : Bool */; -val* var43 /* : ToolContext */; -static val* varonce44; -val* var45 /* : String */; -char* var46 /* : NativeString */; -long var47 /* : Int */; -val* var48 /* : String */; +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 */; +long var48 /* : Int */; long var49 /* : Int */; -long var50 /* : Int */; +val* var50 /* : Array[nullable Object] */; var_modules = p0; var1 = ((long (*)(val*))(self->class->vft[COLOR_time__Object__get_time]))(self) /* get_time on */; var_time0 = var1; @@ -611,9 +646,8 @@ varonce = var3; } var7 = 1; ((void (*)(val*, val*, long))(var2->class->vft[COLOR_toolcontext__ToolContext__info]))(var2, var3, var7) /* info on */; -var8 = NEW_array__Array(&type_array__Arraymodel_base__MModule); -((void (*)(val*))(var8->class->vft[COLOR_array__Array__init]))(var8) /* init on */; -CHECK_NEW_array__Array(var8); +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 */; for(;;) { @@ -621,95 +655,94 @@ var10 = ((short int (*)(val*))(var9->class->vft[COLOR_abstract_collection__Itera if(!var10) break; var11 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__item]))(var9) /* item on */; var_a = var11; -var12 = NULL; -var13 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__load_module]))(self, var12, var_a) /* load_module on */; -var_nmodule = var13; -var14 = NULL; +var12 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__load_module]))(self, var_a) /* load_module on */; +var_nmodule = var12; +var13 = NULL; if (var_nmodule == NULL) { -var15 = 1; /* is null */ +var14 = 1; /* is null */ } else { -var15 = 0; /* arg is null but recv is not */ +var14 = 0; /* arg is null but recv is not */ } -if (var15){ +if (var14){ goto CONTINUE_label; } else { } -var16 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var_nmodule) /* mmodule on */; -if (var16 == NULL) { +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", 125); -exit(1); +fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 139); +show_backtrace(1); } -((void (*)(val*, val*))(var_mmodules->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_mmodules, var16) /* add on */; +((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 */; } BREAK_label: (void)0; -var17 = ((long (*)(val*))(self->class->vft[COLOR_time__Object__get_time]))(self) /* get_time on */; -var_time1 = var17; -var18 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on */; -if (varonce19) { -var20 = varonce19; -} else { -var21 = "*** END PARSE: "; -var22 = 15; -var23 = string__NativeString__to_s_with_length(var21, var22); -var20 = var23; -varonce19 = var20; +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) */ -var26 = var_time1 - var_time0; -var24 = var26; -goto RET_LABEL25; -RET_LABEL25:(void)0; -} -if (varonce27) { -var28 = varonce27; -} else { -var29 = " ***"; -var30 = 4; -var31 = string__NativeString__to_s_with_length(var29, var30); -var28 = var31; -varonce27 = var28; -} -var32 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var32 = array_instance Array[Object] */ -var33 = 3; -var34 = NEW_array__NativeArray(var33, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var34)->values[0] = (val*) var20; -var35 = BOX_kernel__Int(var24); /* autobox from Int to Object */ -((struct instance_array__NativeArray*)var34)->values[1] = (val*) var35; -((struct instance_array__NativeArray*)var34)->values[2] = (val*) var28; -((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on */; -CHECK_NEW_array__Array(var32); -} -var36 = ((val* (*)(val*))(var32->class->vft[COLOR_string__Object__to_s]))(var32) /* to_s on */; -var37 = 2; -((void (*)(val*, val*, long))(var18->class->vft[COLOR_toolcontext__ToolContext__info]))(var18, var36, var37) /* info on */; +var25 = var_time1 - var_time0; +var23 = var25; +goto RET_LABEL24; +RET_LABEL24:(void)0; +} +if (varonce26) { +var27 = varonce26; +} else { +var28 = " ***"; +var29 = 4; +var30 = string__NativeString__to_s_with_length(var28, var29); +var27 = var30; +varonce26 = var27; +} +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 */; -((void (*)(val*))(var38->class->vft[COLOR_toolcontext__ToolContext__check_errors]))(var38) /* check_errors on */; -var39 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on */; -var40 = ((val* (*)(val*))(var39->class->vft[COLOR_modelbuilder__ToolContext__opt_only_parse]))(var39) /* opt_only_parse on */; -var41 = ((val* (*)(val*))(var40->class->vft[COLOR_opts__Option__value]))(var40) /* value on */; -var42 = ((struct instance_kernel__Bool*)var41)->value; /* autounbox from nullable Object to Bool */; -if (var42){ -var43 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on */; -if (varonce44) { -var45 = varonce44; +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; } else { -var46 = "*** ONLY PARSE..."; -var47 = 17; -var48 = string__NativeString__to_s_with_length(var46, var47); -var45 = var48; -varonce44 = var45; +var45 = "*** ONLY PARSE..."; +var46 = 17; +var47 = string__NativeString__to_s_with_length(var45, var46); +var44 = var47; +varonce43 = var44; } -var49 = 1; -((void (*)(val*, val*, long))(var43->class->vft[COLOR_toolcontext__ToolContext__info]))(var43, var45, var49) /* info on */; -var50 = 0; -((void (*)(val*, long))(self->class->vft[COLOR_kernel__Object__exit]))(self, var50) /* exit on */; +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 { } -var = var_mmodules; +var50 = ((val* (*)(val*))(var_mmodules->class->vft[COLOR_array__Collection__to_a]))(var_mmodules) /* to_a on */; +var = var50; goto RET_LABEL; RET_LABEL:; return var; @@ -799,7 +832,7 @@ var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterat 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_model_base__MModule__in_importation]))(var_mmodule) /* in_importation on */; +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; @@ -809,7 +842,7 @@ goto CONTINUE_label; } 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_model_base__MModule__is_visible]))(var_mmodule, var14, var15) /* is_visible 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; @@ -864,7 +897,6 @@ var38 = NEW_array__NativeArray(var37, &type_array__NativeArraykernel__Object); ((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 */; -CHECK_NEW_array__Array(var36); } 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 */; @@ -1033,7 +1065,7 @@ goto CONTINUE_label; 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_model_base__MModule__is_visible]))(var_mmodule, var18, var19) /* is_visible 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; @@ -1072,7 +1104,6 @@ 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 */; -CHECK_NEW_array__Array(var34); var_ress = var34; } else { } @@ -1092,9 +1123,9 @@ 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", 203); -exit(1); +fprintf(stderr, "Runtime error: %s", "Receiver is null"); +fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 217); +show_backtrace(1); } else { var37 = ((val* (*)(val*))(var_res->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_res) /* intro_mclassdef on */; } @@ -1151,9 +1182,9 @@ var66 = var69; varonce65 = var66; } if (var_res == NULL) { -fprintf(stderr, "Runtime error: %s", "Reciever is null"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 207); -exit(1); +fprintf(stderr, "Runtime error: %s", "Receiver 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 */; } @@ -1170,7 +1201,6 @@ var73 = NEW_array__NativeArray(var72, &type_array__NativeArraykernel__Object); ((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 */; -CHECK_NEW_array__Array(var71); } 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 */; @@ -1208,8 +1238,8 @@ 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", 217); -exit(1); +fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 231); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -1270,8 +1300,8 @@ 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", 226); -exit(1); +fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 240); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -1302,125 +1332,125 @@ val* var /* : nullable MModule */; val* var_anode /* var anode: ANode */; val* var_mmodule /* var mmodule: nullable MModule */; val* var_name /* var name: String */; -val* var_origmmodule /* var origmmodule: nullable MModule */; -val* var1 /* : Model */; -val* var2 /* : nullable Array[MModule] */; -val* var_modules /* var modules: nullable Array[MModule] */; -val* var3 /* : Array[String] */; +val* var1 /* : Array[String] */; val* var_tries /* var tries: Array[String] */; -val* var_lastmodule /* var lastmodule: nullable MModule */; -val* var4 /* : null */; -short int var5 /* : Bool */; -val* var6 /* : Location */; -val* var7 /* : nullable SourceFile */; -val* var8 /* : String */; -val* var9 /* : String */; -val* var_dirname /* var dirname: String */; +val* var2 /* : null */; +short int var3 /* : Bool */; +val* var4 /* : nullable MGroup */; +val* var_mgroup /* var mgroup: nullable MGroup */; +val* var5 /* : null */; +short int var6 /* : Bool */; +val* var7 /* : nullable String */; +val* var_dirname /* var dirname: nullable String */; +val* var8 /* : null */; +short int var9 /* : Bool */; static val* varonce; val* var10 /* : String */; char* var11 /* : NativeString */; long var12 /* : Int */; val* var13 /* : String */; -val* var14 /* : String */; -val* var15 /* : String */; -short int var16 /* : Bool */; -val* var17 /* : nullable MModule */; -val* var_owner /* var owner: nullable MModule */; -val* var18 /* : null */; -short int var19 /* : Bool */; -val* var20 /* : Iterator[nullable Object] */; -short int var21 /* : Bool */; -val* var22 /* : nullable Object */; -val* var_candidate /* var candidate: MModule */; -val* var23 /* : nullable MModule */; -short int var24 /* : Bool */; -static val* varonce25; +short int var14 /* : Bool */; +static val* varonce15; +val* var16 /* : String */; +char* var17 /* : NativeString */; +long var18 /* : Int */; +val* var19 /* : String */; +val* var20 /* : String */; +val* var21 /* : String */; +static val* varonce22; +val* var23 /* : String */; +char* var24 /* : NativeString */; +long var25 /* : Int */; val* var26 /* : String */; -char* var27 /* : NativeString */; -long var28 /* : Int */; +val* var27 /* : String */; +val* var_try_file /* var try_file: String */; +short int var28 /* : Bool */; val* var29 /* : String */; -val* var30 /* : String */; -val* var31 /* : String */; -static val* varonce32; -val* var33 /* : String */; -char* var34 /* : NativeString */; -long var35 /* : Int */; +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 */; -val* var37 /* : String */; -val* var_try_file /* var try_file: String */; -short int var38 /* : Bool */; +char* var37 /* : NativeString */; +long var38 /* : Int */; val* var39 /* : String */; -val* var40 /* : nullable AModule */; -val* var_res /* var res: nullable AModule */; -val* var41 /* : null */; -short int var42 /* : Bool */; -val* var43 /* : null */; -val* var44 /* : nullable MModule */; -static val* varonce45; +val* var40 /* : String */; +val* var41 /* : String */; +static val* varonce42; +val* var43 /* : String */; +char* var44 /* : NativeString */; +long var45 /* : Int */; val* var46 /* : String */; -char* var47 /* : NativeString */; -long var48 /* : Int */; -val* var49 /* : String */; +val* var47 /* : String */; +val* var48 /* : String */; +static val* varonce49; val* var50 /* : String */; -val* var51 /* : String */; -static val* varonce52; +char* var51 /* : NativeString */; +long var52 /* : Int */; val* var53 /* : String */; -char* var54 /* : NativeString */; -long var55 /* : Int */; -val* var56 /* : String */; +val* var54 /* : String */; +short int var55 /* : Bool */; +static val* varonce56; val* var57 /* : String */; -val* var58 /* : String */; -static val* varonce59; +char* var58 /* : NativeString */; +long var59 /* : Int */; val* var60 /* : String */; -char* var61 /* : NativeString */; -long var62 /* : Int */; -val* var63 /* : String */; +val* var61 /* : String */; +val* var62 /* : String */; +val* var63 /* : nullable MGroup */; val* var64 /* : String */; -short int var65 /* : Bool */; -val* var66 /* : String */; -val* var67 /* : nullable AModule */; -val* var_res68 /* var res: nullable AModule */; +val* var65 /* : nullable AModule */; +val* var_res66 /* var res: nullable AModule */; +val* var67 /* : null */; +short int var68 /* : Bool */; val* var69 /* : null */; -short int var70 /* : Bool */; -val* var71 /* : null */; -val* var72 /* : nullable MModule */; -val* var73 /* : nullable MModule */; -val* var75 /* : null */; -short int var76 /* : Bool */; -val* var77 /* : Iterator[nullable Object] */; -short int var78 /* : Bool */; -val* var79 /* : nullable Object */; -val* var_candidate80 /* var candidate: MModule */; -val* var81 /* : nullable MModule */; -val* var82 /* : null */; -short int var83 /* : Bool */; -val* var85 /* : Array[String] */; +val* var70 /* : nullable MModule */; +val* var71 /* : nullable MGroup */; +val* var72 /* : Array[String] */; val* var_lookpaths /* var lookpaths: Array[String] */; -val* var86 /* : null */; -short int var87 /* : Bool */; -val* var88 /* : Location */; -val* var89 /* : nullable SourceFile */; +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 */; +short int var85 /* : Bool */; +static val* varonce86; +val* var87 /* : String */; +char* var88 /* : NativeString */; +long var89 /* : Int */; val* var90 /* : String */; val* var91 /* : String */; -val* var_dirname92 /* var dirname: String */; -static val* varonce93; -val* var94 /* : String */; -char* var95 /* : NativeString */; -long var96 /* : Int */; -val* var97 /* : String */; -val* var98 /* : String */; -val* var99 /* : String */; -short int var100 /* : Bool */; -val* var101 /* : String */; -short int var102 /* : Bool */; -short int var103 /* : Bool */; -val* var104 /* : Array[nullable Object] */; -val* var105 /* : null */; -val* var_candidate106 /* var candidate: nullable String */; -val* var107 /* : Iterator[nullable Object] */; -short int var108 /* : Bool */; -val* var109 /* : nullable Object */; -val* var_dirname110 /* var dirname: String */; +val* var92 /* : String */; +short int var93 /* : Bool */; +short int var94 /* : Bool */; +short int var95 /* : Bool */; +short int var_96 /* var : Bool */; +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 var101 /* : Bool */; +val* var102 /* : nullable Object */; +val* var_dirname103 /* var dirname: String */; +static val* varonce104; +val* var105 /* : String */; +char* var106 /* : NativeString */; +long var107 /* : Int */; +val* var108 /* : String */; +val* var109 /* : String */; +val* var110 /* : String */; static val* varonce111; val* var112 /* : String */; char* var113 /* : NativeString */; @@ -1428,41 +1458,41 @@ long var114 /* : Int */; val* var115 /* : String */; val* var116 /* : String */; val* var117 /* : String */; -static val* varonce118; -val* var119 /* : String */; -char* var120 /* : NativeString */; -long var121 /* : Int */; -val* var122 /* : String */; +val* var_try_file118 /* var try_file: String */; +short int var119 /* : Bool */; +val* var120 /* : null */; +short int var121 /* : Bool */; +short int var122 /* : Bool */; val* var123 /* : String */; -val* var124 /* : String */; -val* var_try_file125 /* var try_file: String */; -short int var126 /* : Bool */; -val* var127 /* : null */; -short int var128 /* : Bool */; -short int var129 /* : Bool */; -val* var130 /* : String */; val* var_abs_candidate /* var abs_candidate: String */; -val* var131 /* : String */; +val* var124 /* : String */; val* var_abs_try_file /* var abs_try_file: String */; -short int var132 /* : Bool */; -static val* varonce133; -val* var134 /* : String */; -char* var135 /* : NativeString */; -long var136 /* : Int */; +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 */; -static val* varonce138; -val* var139 /* : String */; -char* var140 /* : NativeString */; -long var141 /* : Int */; -val* var142 /* : String */; -static val* varonce143; +char* var138 /* : NativeString */; +long var139 /* : Int */; +val* var140 /* : String */; +val* var141 /* : Array[Object] */; +long var142 /* : Int */; +val* var143 /* : NativeArray[Object] */; val* var144 /* : String */; -char* var145 /* : NativeString */; -long var146 /* : Int */; -val* var147 /* : String */; -val* var148 /* : Array[Object] */; -long var149 /* : Int */; -val* var150 /* : NativeArray[Object] */; +static val* varonce145; +val* var146 /* : String */; +char* var147 /* : NativeString */; +long var148 /* : Int */; +val* var149 /* : String */; +val* var150 /* : String */; val* var151 /* : String */; static val* varonce152; val* var153 /* : String */; @@ -1478,711 +1508,683 @@ long var162 /* : Int */; val* var163 /* : String */; val* var164 /* : String */; val* var165 /* : String */; -static val* varonce166; -val* var167 /* : String */; -char* var168 /* : NativeString */; -long var169 /* : Int */; +short int var166 /* : Bool */; +val* var167 /* : null */; +short int var168 /* : Bool */; +short int var169 /* : Bool */; val* var170 /* : String */; -val* var171 /* : String */; +val* var_abs_candidate171 /* var abs_candidate: String */; val* var172 /* : String */; -short int var173 /* : Bool */; -val* var174 /* : null */; -short int var175 /* : Bool */; -short int var176 /* : Bool */; -val* var177 /* : String */; -val* var_abs_candidate178 /* var abs_candidate: 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 */; val* var179 /* : String */; -val* var_abs_try_file180 /* var abs_try_file: String */; -short int var181 /* : Bool */; -static val* varonce182; -val* var183 /* : String */; -char* var184 /* : NativeString */; -long var185 /* : Int */; +static val* varonce180; +val* var181 /* : String */; +char* var182 /* : NativeString */; +long var183 /* : Int */; +val* var184 /* : String */; +static val* varonce185; val* var186 /* : String */; -static val* varonce187; -val* var188 /* : String */; -char* var189 /* : NativeString */; -long var190 /* : Int */; -val* var191 /* : String */; -static val* varonce192; +char* var187 /* : NativeString */; +long var188 /* : Int */; +val* var189 /* : String */; +val* var190 /* : Array[Object] */; +long var191 /* : Int */; +val* var192 /* : NativeArray[Object] */; val* var193 /* : String */; -char* var194 /* : NativeString */; -long var195 /* : Int */; -val* var196 /* : String */; -val* var197 /* : Array[Object] */; -long var198 /* : Int */; -val* var199 /* : NativeArray[Object] */; +val* var195 /* : null */; +short int var196 /* : Bool */; +val* var197 /* : null */; +short int var198 /* : Bool */; +static val* varonce199; val* var200 /* : String */; -val* var202 /* : null */; -short int var203 /* : Bool */; -val* var204 /* : null */; -short int var205 /* : Bool */; -static val* varonce206; -val* var207 /* : String */; -char* var208 /* : NativeString */; -long var209 /* : Int */; +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 */; -static val* varonce211; -val* var212 /* : String */; -char* var213 /* : NativeString */; -long var214 /* : Int */; +char* var211 /* : NativeString */; +long var212 /* : Int */; +val* var213 /* : String */; +static val* varonce214; val* var215 /* : String */; -static val* varonce216; -val* var217 /* : String */; -char* var218 /* : NativeString */; -long var219 /* : Int */; -val* var220 /* : String */; -static val* varonce221; -val* var222 /* : String */; -char* var223 /* : NativeString */; -long var224 /* : Int */; +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 */; -val* var226 /* : String */; -val* var227 /* : Array[Object] */; -long var228 /* : Int */; -val* var229 /* : NativeArray[Object] */; +char* var226 /* : NativeString */; +long var227 /* : Int */; +val* var228 /* : String */; +static val* varonce229; val* var230 /* : String */; -static val* varonce231; -val* var232 /* : String */; -char* var233 /* : NativeString */; -long var234 /* : Int */; +char* var231 /* : NativeString */; +long var232 /* : Int */; +val* var233 /* : String */; +static val* varonce234; val* var235 /* : String */; -static val* varonce236; -val* var237 /* : String */; -char* var238 /* : NativeString */; -long var239 /* : Int */; -val* var240 /* : String */; -static val* varonce241; -val* var242 /* : String */; -char* var243 /* : NativeString */; -long var244 /* : Int */; -val* var245 /* : String */; -val* var246 /* : String */; -val* var247 /* : Array[Object] */; -long var248 /* : Int */; -val* var249 /* : NativeArray[Object] */; -val* var250 /* : String */; -val* var251 /* : null */; -val* var252 /* : nullable AModule */; -val* var_res253 /* var res: nullable AModule */; -val* var254 /* : null */; -short int var255 /* : Bool */; -val* var256 /* : null */; -val* var257 /* : nullable MModule */; +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 */; var_anode = p0; var_mmodule = p1; var_name = p2; -var_origmmodule = var_mmodule; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(self) /* model on */; -var2 = ((val* (*)(val*, val*))(var1->class->vft[COLOR_model_base__Model__get_mmodules_by_name]))(var1, var_name) /* get_mmodules_by_name on */; -var_modules = var2; -var3 = NEW_array__Array(&type_array__Arraystring__String); -((void (*)(val*))(var3->class->vft[COLOR_array__Array__init]))(var3) /* init on */; -CHECK_NEW_array__Array(var3); -var_tries = var3; -var_lastmodule = var_mmodule; -for(;;) { -var4 = NULL; +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) { -var5 = 0; /* is 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; +for(;;) { +var5 = NULL; +if (var_mgroup == NULL) { +var6 = 0; /* is null */ +} else { +var6 = 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 (var_dirname == NULL) { +var9 = 1; /* is null */ } else { -var5 = 1; /* arg is null and recv is not */ +var9 = 0; /* arg is null but recv is not */ } -if (!var5) break; -var6 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model_base__MModule__location]))(var_mmodule) /* location on */; -var7 = ((val* (*)(val*))(var6->class->vft[COLOR_location__Location__file]))(var6) /* file on */; -if (var7 == NULL) { -fprintf(stderr, "Runtime error: %s", "Reciever is null"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 248); -exit(1); +if (var9){ +goto BREAK_label; } else { -var8 = ((val* (*)(val*))(var7->class->vft[COLOR_location__SourceFile__filename]))(var7) /* filename on */; } -var9 = ((val* (*)(val*))(var8->class->vft[COLOR_file__String__dirname]))(var8) /* dirname on */; -var_dirname = var9; if (varonce) { var10 = varonce; } else { -var11 = ""; -var12 = 0; +var11 = ".nit"; +var12 = 4; var13 = string__NativeString__to_s_with_length(var11, var12); var10 = var13; varonce = var10; } -var14 = ((val* (*)(val*, val*))(var_dirname->class->vft[COLOR_file__String__basename]))(var_dirname, var10) /* basename on */; -var15 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model_base__MModule__name]))(var_mmodule) /* name on */; -var16 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_kernel__Object___33d_61d]))(var14, var15) /* != on */; -if (var16){ -var17 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model_base__MModule__direct_owner]))(var_mmodule) /* direct_owner on */; -var_owner = var17; -} else { -var_owner = var_mmodule; -} -var18 = NULL; -if (var_modules == NULL) { -var19 = 0; /* is null */ -} else { -var19 = 1; /* arg is null and recv is not */ -} -if (var19){ -var20 = ((val* (*)(val*))(var_modules->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_modules) /* iterator on */; -for(;;) { -var21 = ((short int (*)(val*))(var20->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var20) /* is_ok on */; -if(!var21) break; -var22 = ((val* (*)(val*))(var20->class->vft[COLOR_abstract_collection__Iterator__item]))(var20) /* item on */; -var_candidate = var22; -var23 = ((val* (*)(val*))(var_candidate->class->vft[COLOR_model_base__MModule__direct_owner]))(var_candidate) /* direct_owner on */; -if (var23 == NULL) { -var24 = (var_owner == NULL); -} else { -var24 = ((short int (*)(val*, val*))(var23->class->vft[COLOR_kernel__Object___61d_61d]))(var23, var_owner) /* == on */; -} -if (var24){ -var = var_candidate; -goto RET_LABEL; -} else { -} -CONTINUE_label: (void)0; -((void (*)(val*))(var20->class->vft[COLOR_abstract_collection__Iterator__next]))(var20) /* next on */; -} -BREAK_label: (void)0; +var14 = ((short int (*)(val*, val*))(var_dirname->class->vft[COLOR_string__AbstractString__has_suffix]))(var_dirname, var10) /* has_suffix on */; +if (var14){ +goto BREAK_label; } else { } -if (varonce25) { -var26 = varonce25; +if (varonce15) { +var16 = varonce15; } else { -var27 = "/"; -var28 = 1; -var29 = string__NativeString__to_s_with_length(var27, var28); -var26 = var29; -varonce25 = var26; +var17 = "/"; +var18 = 1; +var19 = string__NativeString__to_s_with_length(var17, var18); +var16 = var19; +varonce15 = var16; } -var30 = ((val* (*)(val*, val*))(var_dirname->class->vft[COLOR_string__String___43d]))(var_dirname, var26) /* + on */; -var31 = ((val* (*)(val*, val*))(var30->class->vft[COLOR_string__String___43d]))(var30, var_name) /* + on */; -if (varonce32) { -var33 = varonce32; +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 { -var34 = ".nit"; -var35 = 4; -var36 = string__NativeString__to_s_with_length(var34, var35); -var33 = var36; -varonce32 = var33; +var24 = ".nit"; +var25 = 4; +var26 = string__NativeString__to_s_with_length(var24, var25); +var23 = var26; +varonce22 = var23; } -var37 = ((val* (*)(val*, val*))(var31->class->vft[COLOR_string__String___43d]))(var31, var33) /* + on */; -var_try_file = var37; +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 */; -var38 = ((short int (*)(val*))(var_try_file->class->vft[COLOR_file__String__file_exists]))(var_try_file) /* file_exists on */; -if (var38){ -var39 = ((val* (*)(val*))(var_try_file->class->vft[COLOR_file__String__simplify_path]))(var_try_file) /* simplify_path on */; -var40 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__load_module]))(self, var_owner, var39) /* load_module on */; -var_res = var40; -var41 = NULL; +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) { -var42 = 1; /* is null */ +var32 = 1; /* is null */ } else { -var42 = 0; /* arg is null but recv is not */ +var32 = 0; /* arg is null but recv is not */ } -if (var42){ -var43 = NULL; -var = var43; +if (var32){ +var33 = NULL; +var = var33; goto RET_LABEL; } else { } -var44 = ((val* (*)(val*))(var_res->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var_res) /* mmodule on */; -if (var44 == NULL) { +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", 273); -exit(1); +fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 272); +show_backtrace(1); } -var = var44; +var = var34; goto RET_LABEL; } else { } -if (varonce45) { -var46 = varonce45; +if (varonce35) { +var36 = varonce35; } else { -var47 = "/"; -var48 = 1; -var49 = string__NativeString__to_s_with_length(var47, var48); -var46 = var49; -varonce45 = var46; +var37 = "/"; +var38 = 1; +var39 = string__NativeString__to_s_with_length(var37, var38); +var36 = var39; +varonce35 = var36; } -var50 = ((val* (*)(val*, val*))(var_dirname->class->vft[COLOR_string__String___43d]))(var_dirname, var46) /* + on */; -var51 = ((val* (*)(val*, val*))(var50->class->vft[COLOR_string__String___43d]))(var50, var_name) /* + on */; -if (varonce52) { -var53 = varonce52; +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 { -var54 = "/"; -var55 = 1; -var56 = string__NativeString__to_s_with_length(var54, var55); -var53 = var56; -varonce52 = var53; +var44 = "/"; +var45 = 1; +var46 = string__NativeString__to_s_with_length(var44, var45); +var43 = var46; +varonce42 = var43; } -var57 = ((val* (*)(val*, val*))(var51->class->vft[COLOR_string__String___43d]))(var51, var53) /* + on */; -var58 = ((val* (*)(val*, val*))(var57->class->vft[COLOR_string__String___43d]))(var57, var_name) /* + on */; -if (varonce59) { -var60 = varonce59; +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 */; +if (varonce49) { +var50 = varonce49; } else { -var61 = ".nit"; -var62 = 4; -var63 = string__NativeString__to_s_with_length(var61, var62); -var60 = var63; -varonce59 = var60; -} -var64 = ((val* (*)(val*, val*))(var58->class->vft[COLOR_string__String___43d]))(var58, var60) /* + on */; -var_try_file = var64; -var65 = ((short int (*)(val*))(var_try_file->class->vft[COLOR_file__String__file_exists]))(var_try_file) /* file_exists on */; -if (var65){ -var66 = ((val* (*)(val*))(var_try_file->class->vft[COLOR_file__String__simplify_path]))(var_try_file) /* simplify_path on */; -var67 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__load_module]))(self, var_owner, var66) /* load_module on */; -var_res68 = var67; +var51 = ".nit"; +var52 = 4; +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){ +if (varonce56) { +var57 = varonce56; +} else { +var58 = "/"; +var59 = 1; +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 */ +} +if (var68){ var69 = NULL; -if (var_res68 == NULL) { -var70 = 1; /* is null */ -} else { -var70 = 0; /* arg is null but recv is not */ -} -if (var70){ -var71 = NULL; -var = var71; +var = var69; goto RET_LABEL; } else { } -var72 = ((val* (*)(val*))(var_res68->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var_res68) /* mmodule on */; -if (var72 == NULL) { +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); -exit(1); +show_backtrace(1); } -var = var72; +var = var70; goto RET_LABEL; } else { } -var_lastmodule = var_mmodule; -var73 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model_base__MModule__direct_owner]))(var_mmodule) /* direct_owner on */; -var_mmodule = var73; -CONTINUE_label74: (void)0; +var71 = ((val* (*)(val*))(var_mgroup->class->vft[COLOR_mproject__MGroup__parent]))(var_mgroup) /* parent on */; +var_mgroup = var71; +CONTINUE_label: (void)0; } -BREAK_label74: (void)0; -var75 = NULL; -if (var_modules == NULL) { -var76 = 0; /* is null */ +BREAK_label: (void)0; } else { -var76 = 1; /* arg is null and recv is not */ } -if (var76){ -var77 = ((val* (*)(val*))(var_modules->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_modules) /* iterator on */; -for(;;) { -var78 = ((short int (*)(val*))(var77->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var77) /* is_ok on */; -if(!var78) break; -var79 = ((val* (*)(val*))(var77->class->vft[COLOR_abstract_collection__Iterator__item]))(var77) /* item on */; -var_candidate80 = var79; -var81 = ((val* (*)(val*))(var_candidate80->class->vft[COLOR_model_base__MModule__direct_owner]))(var_candidate80) /* direct_owner on */; -var82 = NULL; -if (var81 == NULL) { -var83 = 1; /* is null */ +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 */ } else { -var83 = 0; /* arg is null but recv is not */ +var75 = 1; /* arg is null and recv is not */ } -if (var83){ -var = var_candidate80; -goto RET_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_; } -CONTINUE_label84: (void)0; -((void (*)(val*))(var77->class->vft[COLOR_abstract_collection__Iterator__next]))(var77) /* next on */; +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", "Receiver is null"); +fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 294); +show_backtrace(1); +} else { +var80 = ((val* (*)(val*))(var79->class->vft[COLOR_mproject__MGroup__mproject]))(var79) /* mproject on */; } -BREAK_label84: (void)0; +var81 = ((val* (*)(val*))(var80->class->vft[COLOR_mproject__MProject__root]))(var80) /* root on */; +if (var81 == NULL) { +fprintf(stderr, "Runtime error: %s", "Receiver is null"); +fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 294); +show_backtrace(1); } else { +var82 = ((val* (*)(val*))(var81->class->vft[COLOR_mproject__MGroup__filepath]))(var81) /* filepath on */; } -var85 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__paths]))(self) /* paths on */; -var_lookpaths = var85; -var86 = NULL; -if (var_lastmodule == NULL) { -var87 = 0; /* is null */ +var_dirname83 = var82; +var84 = NULL; +if (var_dirname83 == NULL) { +var85 = 0; /* is null */ } else { -var87 = 1; /* arg is null and recv is not */ +var85 = 1; /* arg is null and recv is not */ } -if (var87){ -var88 = ((val* (*)(val*))(var_lastmodule->class->vft[COLOR_model_base__MModule__location]))(var_lastmodule) /* location on */; -var89 = ((val* (*)(val*))(var88->class->vft[COLOR_location__Location__file]))(var88) /* file on */; -if (var89 == NULL) { -fprintf(stderr, "Runtime error: %s", "Reciever is null"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 301); -exit(1); +if (var85){ +if (varonce86) { +var87 = varonce86; } else { -var90 = ((val* (*)(val*))(var89->class->vft[COLOR_location__SourceFile__filename]))(var89) /* filename on */; +var88 = ".."; +var89 = 2; +var90 = string__NativeString__to_s_with_length(var88, var89); +var87 = var90; +varonce86 = var87; } -var91 = ((val* (*)(val*))(var90->class->vft[COLOR_file__String__dirname]))(var90) /* dirname on */; -var_dirname92 = var91; -if (varonce93) { -var94 = varonce93; +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; } else { -var95 = ""; -var96 = 0; -var97 = string__NativeString__to_s_with_length(var95, var96); -var94 = var97; -varonce93 = var94; +var93 = var_96; } -var98 = ((val* (*)(val*, val*))(var_dirname92->class->vft[COLOR_file__String__basename]))(var_dirname92, var94) /* basename on */; -var99 = ((val* (*)(val*))(var_lastmodule->class->vft[COLOR_model_base__MModule__name]))(var_lastmodule) /* name on */; -var100 = ((short int (*)(val*, val*))(var98->class->vft[COLOR_kernel__Object___61d_61d]))(var98, var99) /* == on */; -if (var100){ -var101 = ((val* (*)(val*))(var_dirname92->class->vft[COLOR_file__String__dirname]))(var_dirname92) /* dirname on */; -var_dirname92 = var101; +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 { } -var102 = ((short int (*)(val*, val*))(var_lookpaths->class->vft[COLOR_abstract_collection__Collection__has]))(var_lookpaths, var_dirname92) /* has on */; -var103 = !var102; -if (var103){ -var104 = ((val* (*)(val*))(var_lookpaths->class->vft[COLOR_array__Collection__to_a]))(var_lookpaths) /* to_a on */; -var_lookpaths = var104; -((void (*)(val*, val*))(var_lookpaths->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_lookpaths, var_dirname92) /* add on */; } else { } } else { } -var105 = NULL; -var_candidate106 = var105; -var107 = ((val* (*)(val*))(var_lookpaths->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_lookpaths) /* iterator on */; +var99 = NULL; +var_candidate = var99; +var100 = ((val* (*)(val*))(var_lookpaths->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_lookpaths) /* iterator on */; for(;;) { -var108 = ((short int (*)(val*))(var107->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var107) /* is_ok on */; -if(!var108) break; -var109 = ((val* (*)(val*))(var107->class->vft[COLOR_abstract_collection__Iterator__item]))(var107) /* item on */; -var_dirname110 = var109; +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; } else { -var113 = "/"; -var114 = 1; +var113 = ".nit"; +var114 = 4; var115 = string__NativeString__to_s_with_length(var113, var114); var112 = var115; varonce111 = var112; } -var116 = ((val* (*)(val*, val*))(var_dirname110->class->vft[COLOR_string__String___43d]))(var_dirname110, var112) /* + on */; -var117 = ((val* (*)(val*, val*))(var116->class->vft[COLOR_string__String___43d]))(var116, var_name) /* + on */; -if (varonce118) { -var119 = varonce118; -} else { -var120 = ".nit"; -var121 = 4; -var122 = string__NativeString__to_s_with_length(var120, var121); -var119 = var122; -varonce118 = var119; -} -var123 = ((val* (*)(val*, val*))(var117->class->vft[COLOR_string__String___43d]))(var117, var119) /* + on */; -var124 = ((val* (*)(val*))(var123->class->vft[COLOR_file__String__simplify_path]))(var123) /* simplify_path on */; -var_try_file125 = var124; -((void (*)(val*, val*))(var_tries->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_tries, var_try_file125) /* add on */; -var126 = ((short int (*)(val*))(var_try_file125->class->vft[COLOR_file__String__file_exists]))(var_try_file125) /* file_exists on */; -if (var126){ -var127 = NULL; -if (var_candidate106 == NULL) { -var128 = 1; /* is null */ -} else { -var128 = 0; /* arg is null but recv is not */ -} -if (var128){ -var_candidate106 = var_try_file125; -} else { -var129 = ((short int (*)(val*, val*))(var_candidate106->class->vft[COLOR_kernel__Object___33d_61d]))(var_candidate106, var_try_file125) /* != on */; -if (var129){ -var130 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__module_absolute_path]))(self, var_candidate106) /* module_absolute_path on */; -var_abs_candidate = var130; -var131 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__module_absolute_path]))(self, var_try_file125) /* module_absolute_path on */; -var_abs_try_file = var131; -var132 = ((short int (*)(val*, val*))(var_abs_candidate->class->vft[COLOR_kernel__Object___33d_61d]))(var_abs_candidate, var_abs_try_file) /* != on */; -if (var132){ -if (varonce133) { -var134 = varonce133; -} else { -var135 = "Error: conflicting module file for "; -var136 = 35; -var137 = string__NativeString__to_s_with_length(var135, var136); -var134 = var137; -varonce133 = var134; -} -if (varonce138) { -var139 = varonce138; -} else { -var140 = ": "; -var141 = 2; -var142 = string__NativeString__to_s_with_length(var140, var141); -var139 = var142; -varonce138 = var139; -} -if (varonce143) { -var144 = varonce143; -} else { -var145 = " "; -var146 = 1; -var147 = string__NativeString__to_s_with_length(var145, var146); -var144 = var147; -varonce143 = var144; -} -var148 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var148 = array_instance Array[Object] */ -var149 = 6; -var150 = NEW_array__NativeArray(var149, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var150)->values[0] = (val*) var134; -((struct instance_array__NativeArray*)var150)->values[1] = (val*) var_name; -((struct instance_array__NativeArray*)var150)->values[2] = (val*) var139; -((struct instance_array__NativeArray*)var150)->values[3] = (val*) var_candidate106; -((struct instance_array__NativeArray*)var150)->values[4] = (val*) var144; -((struct instance_array__NativeArray*)var150)->values[5] = (val*) var_try_file125; -((void (*)(val*, val*, long))(var148->class->vft[COLOR_array__Array__with_native]))(var148, var150, var149) /* with_native on */; -CHECK_NEW_array__Array(var148); -} -var151 = ((val* (*)(val*))(var148->class->vft[COLOR_string__Object__to_s]))(var148) /* to_s on */; -((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_anode, var151) /* error on */; +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 */ } +if (var121){ +var_candidate = var_try_file118; } 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; +} 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; } -if (varonce152) { -var153 = varonce152; +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 */; +} +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 { -var154 = "/"; -var155 = 1; -var156 = string__NativeString__to_s_with_length(var154, var155); +} +} else { +} +} +} else { +} +if (varonce145) { +var146 = varonce145; +} else { +var147 = "/"; +var148 = 1; +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*))(var_dirname110->class->vft[COLOR_string__String___43d]))(var_dirname110, var153) /* + on */; +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 = "/"; -var162 = 1; +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*, val*))(var164->class->vft[COLOR_string__String___43d]))(var164, var_name) /* + on */; -if (varonce166) { -var167 = varonce166; -} else { -var168 = ".nit"; -var169 = 4; -var170 = string__NativeString__to_s_with_length(var168, var169); -var167 = var170; -varonce166 = var167; -} -var171 = ((val* (*)(val*, val*))(var165->class->vft[COLOR_string__String___43d]))(var165, var167) /* + on */; -var172 = ((val* (*)(val*))(var171->class->vft[COLOR_file__String__simplify_path]))(var171) /* simplify_path on */; -var_try_file125 = var172; -var173 = ((short int (*)(val*))(var_try_file125->class->vft[COLOR_file__String__file_exists]))(var_try_file125) /* file_exists on */; -if (var173){ -var174 = NULL; -if (var_candidate106 == NULL) { -var175 = 1; /* is null */ -} else { -var175 = 0; /* arg is null but recv is not */ -} -if (var175){ -var_candidate106 = var_try_file125; -} else { -var176 = ((short int (*)(val*, val*))(var_candidate106->class->vft[COLOR_kernel__Object___33d_61d]))(var_candidate106, var_try_file125) /* != on */; -if (var176){ -var177 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__module_absolute_path]))(self, var_candidate106) /* module_absolute_path on */; -var_abs_candidate178 = var177; -var179 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__module_absolute_path]))(self, var_try_file125) /* module_absolute_path on */; -var_abs_try_file180 = var179; -var181 = ((short int (*)(val*, val*))(var_abs_candidate178->class->vft[COLOR_kernel__Object___33d_61d]))(var_abs_candidate178, var_abs_try_file180) /* != on */; -if (var181){ -if (varonce182) { -var183 = varonce182; -} else { -var184 = "Error: conflicting module file for "; -var185 = 35; -var186 = string__NativeString__to_s_with_length(var184, var185); -var183 = var186; -varonce182 = var183; -} -if (varonce187) { -var188 = varonce187; -} else { -var189 = ": "; -var190 = 2; -var191 = string__NativeString__to_s_with_length(var189, var190); -var188 = var191; -varonce187 = var188; -} -if (varonce192) { -var193 = varonce192; -} else { -var194 = " "; -var195 = 1; -var196 = string__NativeString__to_s_with_length(var194, var195); -var193 = var196; -varonce192 = var193; -} -var197 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var197 = array_instance Array[Object] */ -var198 = 6; -var199 = NEW_array__NativeArray(var198, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var199)->values[0] = (val*) var183; -((struct instance_array__NativeArray*)var199)->values[1] = (val*) var_name; -((struct instance_array__NativeArray*)var199)->values[2] = (val*) var188; -((struct instance_array__NativeArray*)var199)->values[3] = (val*) var_candidate106; -((struct instance_array__NativeArray*)var199)->values[4] = (val*) var193; -((struct instance_array__NativeArray*)var199)->values[5] = (val*) var_try_file125; -((void (*)(val*, val*, long))(var197->class->vft[COLOR_array__Array__with_native]))(var197, var199, var198) /* with_native on */; -CHECK_NEW_array__Array(var197); -} -var200 = ((val* (*)(val*))(var197->class->vft[COLOR_string__Object__to_s]))(var197) /* to_s on */; -((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_anode, var200) /* error on */; -} else { -} -} else { -} -} -} else { -} -CONTINUE_label201: (void)0; -((void (*)(val*))(var107->class->vft[COLOR_abstract_collection__Iterator__next]))(var107) /* next on */; -} -BREAK_label201: (void)0; -var202 = NULL; -if (var_candidate106 == NULL) { -var203 = 1; /* is null */ -} else { -var203 = 0; /* arg is null but recv is not */ -} -if (var203){ -var204 = NULL; -if (var_origmmodule == NULL) { -var205 = 0; /* is null */ -} else { -var205 = 1; /* arg is null and recv is not */ -} -if (var205){ -if (varonce206) { -var207 = varonce206; -} else { -var208 = "Error: cannot find module "; -var209 = 26; -var210 = string__NativeString__to_s_with_length(var208, var209); -var207 = var210; -varonce206 = var207; -} -if (varonce211) { -var212 = varonce211; -} else { -var213 = " from "; -var214 = 6; -var215 = string__NativeString__to_s_with_length(var213, var214); -var212 = var215; -varonce211 = var212; -} -if (varonce216) { -var217 = varonce216; -} else { -var218 = ". tried "; -var219 = 8; -var220 = string__NativeString__to_s_with_length(var218, var219); -var217 = var220; -varonce216 = var217; -} -if (varonce221) { -var222 = varonce221; -} else { -var223 = ", "; -var224 = 2; -var225 = string__NativeString__to_s_with_length(var223, var224); -var222 = var225; -varonce221 = var222; -} -var226 = ((val* (*)(val*, val*))(var_tries->class->vft[COLOR_string__Collection__join]))(var_tries, var222) /* join on */; -var227 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var227 = array_instance Array[Object] */ -var228 = 6; -var229 = NEW_array__NativeArray(var228, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var229)->values[0] = (val*) var207; -((struct instance_array__NativeArray*)var229)->values[1] = (val*) var_name; -((struct instance_array__NativeArray*)var229)->values[2] = (val*) var212; -((struct instance_array__NativeArray*)var229)->values[3] = (val*) var_origmmodule; -((struct instance_array__NativeArray*)var229)->values[4] = (val*) var217; -((struct instance_array__NativeArray*)var229)->values[5] = (val*) var226; -((void (*)(val*, val*, long))(var227->class->vft[COLOR_array__Array__with_native]))(var227, var229, var228) /* with_native on */; -CHECK_NEW_array__Array(var227); -} -var230 = ((val* (*)(val*))(var227->class->vft[COLOR_string__Object__to_s]))(var227) /* to_s on */; -((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_anode, var230) /* error on */; -} else { -if (varonce231) { -var232 = varonce231; -} else { -var233 = "Error: cannot find module "; -var234 = 26; -var235 = string__NativeString__to_s_with_length(var233, var234); -var232 = var235; -varonce231 = var232; -} -if (varonce236) { -var237 = varonce236; -} else { -var238 = ". tried "; -var239 = 8; -var240 = string__NativeString__to_s_with_length(var238, var239); -var237 = var240; -varonce236 = var237; +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 */ +} else { +var168 = 0; /* arg is null but recv is not */ +} +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; +} else { +var177 = "Error: conflicting module file for "; +var178 = 35; +var179 = string__NativeString__to_s_with_length(var177, var178); +var176 = var179; +varonce175 = var176; +} +if (varonce180) { +var181 = varonce180; +} else { +var182 = ": "; +var183 = 2; +var184 = string__NativeString__to_s_with_length(var182, var183); +var181 = var184; +varonce180 = var181; } -if (varonce241) { -var242 = varonce241; -} else { -var243 = ", "; -var244 = 2; -var245 = string__NativeString__to_s_with_length(var243, var244); -var242 = var245; -varonce241 = var242; -} -var246 = ((val* (*)(val*, val*))(var_tries->class->vft[COLOR_string__Collection__join]))(var_tries, var242) /* join on */; -var247 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var247 = array_instance Array[Object] */ -var248 = 4; -var249 = NEW_array__NativeArray(var248, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var249)->values[0] = (val*) var232; -((struct instance_array__NativeArray*)var249)->values[1] = (val*) var_name; -((struct instance_array__NativeArray*)var249)->values[2] = (val*) var237; -((struct instance_array__NativeArray*)var249)->values[3] = (val*) var246; -((void (*)(val*, val*, long))(var247->class->vft[COLOR_array__Array__with_native]))(var247, var249, var248) /* with_native on */; -CHECK_NEW_array__Array(var247); -} -var250 = ((val* (*)(val*))(var247->class->vft[COLOR_string__Object__to_s]))(var247) /* to_s on */; -((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_anode, var250) /* error on */; -} -var251 = NULL; -var = var251; +if (varonce185) { +var186 = varonce185; +} else { +var187 = " "; +var188 = 1; +var189 = string__NativeString__to_s_with_length(var187, var188); +var186 = var189; +varonce185 = var186; +} +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 */; +} +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 { +} +} else { +} +} +} else { +} +CONTINUE_label194: (void)0; +((void (*)(val*))(var100->class->vft[COLOR_abstract_collection__Iterator__next]))(var100) /* next on */; +} +BREAK_label194: (void)0; +var195 = NULL; +if (var_candidate == NULL) { +var196 = 1; /* is null */ +} else { +var196 = 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; goto RET_LABEL; } else { } -var252 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__load_module]))(self, var_mmodule, var_candidate106) /* load_module on */; -var_res253 = var252; -var254 = NULL; -if (var_res253 == NULL) { -var255 = 1; /* is null */ +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 */ } else { -var255 = 0; /* arg is null but recv is not */ +var248 = 0; /* arg is null but recv is not */ } -if (var255){ -var256 = NULL; -var = var256; +if (var248){ +var249 = NULL; +var = var249; goto RET_LABEL; } else { } -var257 = ((val* (*)(val*))(var_res253->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var_res253) /* mmodule on */; -if (var257 == NULL) { +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", 351); -exit(1); +fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 344); +show_backtrace(1); } -var = var257; +var = var250; goto RET_LABEL; RET_LABEL:; return var; @@ -2196,89 +2198,563 @@ 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 */; +/* 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) { +val* var /* : nullable ModulePath */; val* var_path /* var path: String */; +short int var1 /* : Bool */; +short int var2 /* : Bool */; +val* var3 /* : ToolContext */; +val* var4 /* : null */; static val* varonce; -val* var1 /* : String */; -char* var2 /* : NativeString */; -long var3 /* : Int */; -val* var4 /* : String */; -short int var5 /* : Bool */; -val* var6 /* : String */; -val* var7 /* : String */; +val* var5 /* : String */; +char* var6 /* : NativeString */; +long var7 /* : Int */; val* var8 /* : String */; +static val* varonce9; +val* var10 /* : String */; +char* var11 /* : NativeString */; +long var12 /* : Int */; +val* var13 /* : String */; +val* var14 /* : Array[Object] */; +long var15 /* : Int */; +val* var16 /* : NativeArray[Object] */; +val* 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] */; +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 */; +static val* varonce45; +val* var46 /* : String */; +char* var47 /* : NativeString */; +long var48 /* : Int */; +val* var49 /* : String */; +static val* varonce50; +val* var51 /* : String */; +char* var52 /* : NativeString */; +long var53 /* : Int */; +val* var54 /* : String */; +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; if (varonce) { -var1 = varonce; -} else { -var2 = ".."; -var3 = 2; -var4 = string__NativeString__to_s_with_length(var2, var3); -var1 = var4; -varonce = var1; -} -var5 = ((short int (*)(val*, val*))(var_path->class->vft[COLOR_string__AbstractString__has_prefix]))(var_path, var1) /* has_prefix on */; -if (var5){ -var6 = ((val* (*)(val*))(self->class->vft[COLOR_file__Object__getcwd]))(self) /* getcwd on */; -var7 = ((val* (*)(val*, val*))(var6->class->vft[COLOR_file__String__join_path]))(var6, var_path) /* join_path on */; -var8 = ((val* (*)(val*))(var7->class->vft[COLOR_file__String__simplify_path]))(var7) /* simplify_path on */; -var = var8; +var5 = varonce; +} else { +var6 = "Error: `"; +var7 = 8; +var8 = string__NativeString__to_s_with_length(var6, var7); +var5 = var8; +varonce = var5; +} +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 { } -var = var_path; +if (varonce19) { +var20 = varonce19; +} else { +var21 = ".nit"; +var22 = 4; +var23 = string__NativeString__to_s_with_length(var21, var22); +var20 = var23; +varonce19 = var20; +} +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; +} else { +} +if (varonce30) { +var31 = varonce30; +} else { +var32 = ".."; +var33 = 2; +var34 = string__NativeString__to_s_with_length(var32, var33); +var31 = var34; +varonce30 = var31; +} +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 */ +} else { +var39 = 0; /* arg is null but recv is not */ +} +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; +var49 = string__NativeString__to_s_with_length(var47, var48); +var46 = var49; +varonce45 = var46; +} +if (varonce50) { +var51 = varonce50; +} else { +var52 = "` at "; +var53 = 5; +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; +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; +((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 */; +} 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; 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); +/* 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#loaded_nmodules for (self: ModelBuilder): HashMap[String, AModule] */ -val* modelbuilder__ModelBuilder__loaded_nmodules(val* self) { -val* var /* : HashMap[String, AModule] */; -val* var1 /* : HashMap[String, AModule] */; -var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___64dloaded_nmodules].val; /* @loaded_nmodules on */ +/* 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 @loaded_nmodules"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 362); -exit(1); +fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mgroups"); +fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 383); +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#loaded_nmodules for (self: Object): HashMap[String, AModule] */ -val* VIRTUAL_modelbuilder__ModelBuilder__loaded_nmodules(val* self) { -val* var /* : HashMap[String, AModule] */; -val* var1 /* : HashMap[String, AModule] */; -var1 = modelbuilder__ModelBuilder__loaded_nmodules(self); +/* 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:; +} +/* 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); +RET_LABEL:; +} +/* 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 */; +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 */; +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 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 */; +val* var41 /* : String */; +static val* varonce42; +val* var43 /* : String */; +char* var44 /* : NativeString */; +long var45 /* : Int */; +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 */; +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; +goto RET_LABEL; +} else { +} +if (varonce) { +var6 = varonce; +} else { +var7 = ".nit"; +var8 = 4; +var9 = string__NativeString__to_s_with_length(var7, var8); +var6 = var9; +varonce = var6; +} +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 (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 */ +} +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; +} +if (varonce42) { +var43 = varonce42; +} 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 */; +} +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; +} +/* 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#loaded_nmodules= for (self: ModelBuilder, HashMap[String, AModule]) */ -void modelbuilder__ModelBuilder__loaded_nmodules_61d(val* self, val* p0) { -self->attrs[COLOR_modelbuilder__ModelBuilder___64dloaded_nmodules].val = p0; /* @loaded_nmodules on */ +/* 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; } -/* method modelbuilder#ModelBuilder#loaded_nmodules= for (self: Object, HashMap[String, AModule]) */ -void VIRTUAL_modelbuilder__ModelBuilder__loaded_nmodules_61d(val* self, val* p0) { -modelbuilder__ModelBuilder__loaded_nmodules_61d(self, p0); +/* 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 for (self: ModelBuilder, nullable MModule, String): nullable AModule */ -val* modelbuilder__ModelBuilder__load_module(val* self, val* p0, val* p1) { +/* 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_owner /* var owner: nullable MModule */; val* var_filename /* var filename: String */; val* var1 /* : nullable String */; static val* varonce; @@ -2323,99 +2799,45 @@ long var39 /* : Int */; val* var40 /* : NativeArray[Object] */; val* var41 /* : String */; val* var42 /* : null */; -val* var43 /* : String */; -val* var_module_path /* var module_path: String */; -val* var44 /* : HashMap[String, AModule] */; -val* var45 /* : Collection[Object] */; -short int var46 /* : Bool */; -val* var47 /* : HashMap[String, AModule] */; -val* var48 /* : nullable Object */; -val* var49 /* : String */; -val* var50 /* : null */; -short int var51 /* : Bool */; +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 */; -static val* varonce53; -val* var54 /* : String */; -char* var55 /* : NativeString */; -long var56 /* : Int */; -val* var57 /* : String */; -val* var_x /* var x: String */; -val* var58 /* : ToolContext */; +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 */; -static val* varonce64; -val* var65 /* : String */; -char* var66 /* : NativeString */; -long var67 /* : Int */; -val* var68 /* : String */; -val* var69 /* : Array[Object] */; -long var70 /* : Int */; -val* var71 /* : NativeArray[Object] */; -val* var72 /* : String */; -long var73 /* : Int */; -val* var74 /* : IFStream */; -val* var_file /* var file: IFStream */; -val* var75 /* : Lexer */; -val* var76 /* : SourceFile */; -val* var_lexer /* var lexer: Lexer */; -val* var77 /* : Parser */; -val* var_parser /* var parser: Parser */; -val* var78 /* : Start */; -val* var_tree /* var tree: Start */; -val* var79 /* : nullable AModule */; +val* var64 /* : String */; +val* var_mod_name /* var mod_name: String */; +val* var65 /* : nullable AModule */; val* var_nmodule /* var nmodule: nullable AModule */; -val* var80 /* : null */; -short int var81 /* : Bool */; -val* var82 /* : EOF */; +val* var66 /* : null */; +short int var67 /* : Bool */; +val* var68 /* : EOF */; val* var_neof /* var neof: EOF */; -short int var83 /* : Bool */; +short int var69 /* : Bool */; int cltype; int idtype; -val* var84 /* : String */; -val* var85 /* : null */; -static val* varonce86; -val* var87 /* : String */; -char* var88 /* : NativeString */; -long var89 /* : Int */; -val* var90 /* : String */; -val* var91 /* : String */; -val* var_mod_name /* var mod_name: String */; -val* var92 /* : nullable AModuledecl */; -val* var_decl /* var decl: nullable AModuledecl */; -val* var93 /* : null */; -short int var94 /* : Bool */; -val* var95 /* : AModuleName */; -val* var96 /* : TId */; -val* var97 /* : String */; -val* var_decl_name /* var decl_name: String */; -short int var98 /* : Bool */; -val* var99 /* : AModuleName */; -static val* varonce100; -val* var101 /* : String */; -char* var102 /* : NativeString */; -long var103 /* : Int */; -val* var104 /* : String */; -static val* varonce105; -val* var106 /* : String */; -char* var107 /* : NativeString */; -long var108 /* : Int */; -val* var109 /* : String */; -val* var110 /* : Array[Object] */; -long var111 /* : Int */; -val* var112 /* : NativeArray[Object] */; -val* var113 /* : String */; -val* var114 /* : MModule */; -val* var115 /* : Model */; -val* var116 /* : Location */; -val* var_mmodule /* var mmodule: MModule */; -val* var117 /* : Array[AModule] */; -val* var118 /* : HashMap[MModule, AModule] */; -val* var119 /* : HashMap[String, AModule] */; -var_owner = p0; -var_filename = p1; +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; @@ -2460,7 +2882,6 @@ var21 = NEW_array__NativeArray(var20, &type_array__NativeArraykernel__Object); ((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 */; -CHECK_NEW_array__Array(var19); } 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 */; @@ -2500,7 +2921,6 @@ var40 = NEW_array__NativeArray(var39, &type_array__NativeArraykernel__Object); ((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 */; -CHECK_NEW_array__Array(var38); } 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 */; @@ -2509,208 +2929,359 @@ var = var42; goto RET_LABEL; } else { } -var43 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__module_absolute_path]))(self, var_filename) /* module_absolute_path on */; -var_module_path = var43; -var44 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__loaded_nmodules]))(self) /* loaded_nmodules on */; -var45 = ((val* (*)(val*))(var44->class->vft[COLOR_abstract_collection__MapRead__keys]))(var44) /* keys on */; -var46 = ((short int (*)(val*, val*))(var45->class->vft[COLOR_abstract_collection__Collection__has]))(var45, var_module_path) /* has on */; -if (var46){ -var47 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__loaded_nmodules]))(self) /* loaded_nmodules on */; -var48 = ((val* (*)(val*, val*))(var47->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var47, var_module_path) /* [] on */; -var = var48; +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; +} else { +var61 = ".nit"; +var62 = 4; +var63 = string__NativeString__to_s_with_length(var61, var62); +var60 = var63; +varonce59 = var60; +} +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 */ +} else { +var67 = 0; /* arg is null but recv is not */ +} +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; +} else { +var69 = var_neof->type->type_table[cltype] == idtype; +} +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; +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 */; +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 */ +} +if (var3){ +var4 = NULL; +var = var4; goto RET_LABEL; } else { } -var50 = NULL; -if (var_owner == NULL) { -var51 = 0; /* is null */ -} else { -var51 = 1; /* arg is null and recv is not */ -} -if (var51){ -var52 = ((val* (*)(val*))(var_owner->class->vft[COLOR_string__Object__to_s]))(var_owner) /* to_s on */; -var49 = var52; -} else { -if (varonce53) { -var54 = varonce53; +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 { -var55 = "."; -var56 = 1; -var57 = string__NativeString__to_s_with_length(var55, var56); -var54 = var57; -varonce53 = var54; -} -var49 = var54; +var7 = 1; /* arg is null and recv is not */ } -var_x = var49; -var58 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on */; -if (varonce59) { -var60 = varonce59; +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 { -var61 = "load module "; -var62 = 12; -var63 = string__NativeString__to_s_with_length(var61, var62); -var60 = var63; -varonce59 = var60; } -if (varonce64) { -var65 = varonce64; -} else { -var66 = " in "; -var67 = 4; -var68 = string__NativeString__to_s_with_length(var66, var67); -var65 = var68; -varonce64 = var65; -} -var69 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var69 = array_instance Array[Object] */ -var70 = 4; -var71 = NEW_array__NativeArray(var70, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var71)->values[0] = (val*) var60; -((struct instance_array__NativeArray*)var71)->values[1] = (val*) var_filename; -((struct instance_array__NativeArray*)var71)->values[2] = (val*) var65; -((struct instance_array__NativeArray*)var71)->values[3] = (val*) var_x; -((void (*)(val*, val*, long))(var69->class->vft[COLOR_array__Array__with_native]))(var69, var71, var70) /* with_native on */; -CHECK_NEW_array__Array(var69); -} -var72 = ((val* (*)(val*))(var69->class->vft[COLOR_string__Object__to_s]))(var69) /* to_s on */; -var73 = 2; -((void (*)(val*, val*, long))(var58->class->vft[COLOR_toolcontext__ToolContext__info]))(var58, var72, var73) /* info on */; -var74 = NEW_file__IFStream(&type_file__IFStream); -((void (*)(val*, val*))(var74->class->vft[COLOR_file__IFStream__open]))(var74, var_filename) /* open on */; -CHECK_NEW_file__IFStream(var74); -var_file = var74; -var75 = NEW_lexer__Lexer(&type_lexer__Lexer); -var76 = NEW_location__SourceFile(&type_location__SourceFile); -((void (*)(val*, val*, val*))(var76->class->vft[COLOR_location__SourceFile__init]))(var76, var_filename, var_file) /* init on */; -CHECK_NEW_location__SourceFile(var76); -((void (*)(val*, val*))(var75->class->vft[COLOR_lexer__Lexer__init]))(var75, var76) /* init on */; -CHECK_NEW_lexer__Lexer(var75); -var_lexer = var75; -var77 = NEW_parser__Parser(&type_parser__Parser); -((void (*)(val*, val*))(var77->class->vft[COLOR_parser__Parser__init]))(var77, var_lexer) /* init on */; -CHECK_NEW_parser__Parser(var77); -var_parser = var77; -var78 = ((val* (*)(val*))(var_parser->class->vft[COLOR_parser__Parser__parse]))(var_parser) /* parse on */; -var_tree = var78; -((void (*)(val*))(var_file->class->vft[COLOR_stream__IOS__close]))(var_file) /* close on */; -var79 = ((val* (*)(val*))(var_tree->class->vft[COLOR_parser_nodes__Start__n_base]))(var_tree) /* n_base on */; -var_nmodule = var79; -var80 = NULL; +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) { -var81 = 1; /* is null */ +var12 = 1; /* is null */ } else { -var81 = 0; /* arg is null but recv is not */ +var12 = 0; /* arg is null but recv is not */ } -if (var81){ -var82 = ((val* (*)(val*))(var_tree->class->vft[COLOR_parser_nodes__Start__n_eof]))(var_tree) /* n_eof on */; -var_neof = var82; -/* isa AError */ -cltype = type_parser_nodes__AError.color; -idtype = type_parser_nodes__AError.id; -if(cltype >= var_neof->type->table_size) { -var83 = 0; +if (var12){ +var13 = NULL; +var = var13; +goto RET_LABEL; } else { -var83 = var_neof->type->type_table[cltype] == idtype; -} -if (!var83) { -fprintf(stderr, "Runtime error: %s", "Assert failed"); -fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 398); -exit(1); } -var84 = ((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, var84) /* error on */; -var85 = NULL; -var = var85; -goto RET_LABEL; +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 */ } else { +var18 = 0; /* arg is null but recv is not */ } -if (varonce86) { -var87 = varonce86; +if (var18){ +var19 = NULL; +var = var19; +goto RET_LABEL; } else { -var88 = ".nit"; -var89 = 4; -var90 = string__NativeString__to_s_with_length(var88, var89); -var87 = var90; -varonce86 = var87; } -var91 = ((val* (*)(val*, val*))(var_filename->class->vft[COLOR_file__String__basename]))(var_filename, var87) /* basename on */; -var_mod_name = var91; -var92 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__AModule__n_moduledecl]))(var_nmodule) /* n_moduledecl on */; -var_decl = var92; -var93 = NULL; -if (var_decl == NULL) { -var94 = 1; /* is null */ -} else { -var94 = 0; /* arg is null but recv is not */ -} -if (var94){ -} else { -var95 = ((val* (*)(val*))(var_decl->class->vft[COLOR_parser_nodes__AModuledecl__n_name]))(var_decl) /* n_name on */; -var96 = ((val* (*)(val*))(var95->class->vft[COLOR_parser_nodes__AModuleName__n_id]))(var95) /* n_id on */; -var97 = ((val* (*)(val*))(var96->class->vft[COLOR_parser_nodes__Token__text]))(var96) /* text on */; -var_decl_name = var97; -var98 = ((short int (*)(val*, val*))(var_decl_name->class->vft[COLOR_kernel__Object___33d_61d]))(var_decl_name, var_mod_name) /* != on */; -if (var98){ -var99 = ((val* (*)(val*))(var_decl->class->vft[COLOR_parser_nodes__AModuledecl__n_name]))(var_decl) /* n_name on */; -if (varonce100) { -var101 = varonce100; -} else { -var102 = "Error: module name missmatch; declared "; -var103 = 39; -var104 = string__NativeString__to_s_with_length(var102, var103); -var101 = var104; -varonce100 = var101; -} -if (varonce105) { -var106 = varonce105; -} else { -var107 = " file named "; -var108 = 12; -var109 = string__NativeString__to_s_with_length(var107, var108); -var106 = var109; -varonce105 = var106; -} -var110 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var110 = array_instance Array[Object] */ -var111 = 4; -var112 = NEW_array__NativeArray(var111, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var112)->values[0] = (val*) var101; -((struct instance_array__NativeArray*)var112)->values[1] = (val*) var_decl_name; -((struct instance_array__NativeArray*)var112)->values[2] = (val*) var106; -((struct instance_array__NativeArray*)var112)->values[3] = (val*) var_mod_name; -((void (*)(val*, val*, long))(var110->class->vft[COLOR_array__Array__with_native]))(var110, var112, var111) /* with_native on */; -CHECK_NEW_array__Array(var110); -} -var113 = ((val* (*)(val*))(var110->class->vft[COLOR_string__Object__to_s]))(var110) /* to_s on */; -((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var99, var113) /* error on */; -} else { -} -} -var114 = NEW_model_base__MModule(&type_model_base__MModule); -var115 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(self) /* model on */; -var116 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__ANode__location]))(var_nmodule) /* location on */; -((void (*)(val*, val*, val*, val*, val*))(var114->class->vft[COLOR_model_base__MModule__init]))(var114, var115, var_owner, var_mod_name, var116) /* init on */; -CHECK_NEW_model_base__MModule(var114); -var_mmodule = var114; -((void (*)(val*, val*))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__mmodule_61d]))(var_nmodule, var_mmodule) /* mmodule= on */; -var117 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__nmodules]))(self) /* nmodules on */; -((void (*)(val*, val*))(var117->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var117, var_nmodule) /* add on */; -var118 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__mmodule2nmodule]))(self) /* mmodule2nmodule on */; -((void (*)(val*, val*, val*))(var118->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var118, var_mmodule, var_nmodule) /* []= on */; -var119 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__loaded_nmodules]))(self) /* loaded_nmodules on */; -((void (*)(val*, val*, val*))(var119->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var119, var_module_path, var_nmodule) /* []= on */; +((void (*)(val*, val*))(var_file->class->vft[COLOR_modelbuilder__ModulePath__mmodule_61d]))(var_file, var_mmodule) /* mmodule= on */; ((void (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__build_module_importation]))(self, var_nmodule) /* build_module_importation on */; var = var_nmodule; goto RET_LABEL; RET_LABEL:; return var; } -/* method modelbuilder#ModelBuilder#load_module for (self: Object, nullable MModule, String): nullable AModule */ -val* VIRTUAL_modelbuilder__ModelBuilder__load_module(val* self, val* p0, val* p1) { +/* 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#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_module(self, p0, p1); +var1 = modelbuilder__ModelBuilder__load_rt_module(self, p0, p1, p2); +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* 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 */ +} +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; +} +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 */; +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; @@ -2756,35 +3327,73 @@ 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 */; +short int var28 /* : Bool */; +val* var29 /* : AModuleName */; +static val* varonce30; +val* var31 /* : String */; +char* var32 /* : NativeString */; +long var33 /* : Int */; +val* var34 /* : String */; +static val* varonce35; +val* var36 /* : String */; +char* var37 /* : NativeString */; +long var38 /* : Int */; +val* var39 /* : String */; +val* var40 /* : Array[Object] */; +long var41 /* : Int */; +val* var42 /* : NativeArray[Object] */; +val* var43 /* : String */; +val* var44 /* : POSetElement[MModule] */; +short int var45 /* : Bool */; +val* var46 /* : AModuleName */; +static val* varonce47; +val* var48 /* : String */; +char* var49 /* : NativeString */; +long var50 /* : Int */; val* var51 /* : String */; -val* var52 /* : Array[Object] */; -long var53 /* : Int */; -val* var54 /* : NativeArray[Object] */; -val* var55 /* : String */; -long var56 /* : Int */; +static val* varonce52; +val* var53 /* : String */; +char* var54 /* : NativeString */; +long var55 /* : Int */; +val* var56 /* : String */; +static val* varonce57; +val* var58 /* : String */; +char* var59 /* : NativeString */; +long var60 /* : Int */; +val* var61 /* : String */; +val* var62 /* : Array[Object] */; +long var63 /* : Int */; +val* var64 /* : NativeArray[Object] */; +val* var65 /* : String */; +static val* varonce66; +val* var67 /* : String */; +char* var68 /* : NativeString */; +long var69 /* : Int */; +val* var70 /* : String */; +val* var_mod_name71 /* var mod_name: String */; +val* var72 /* : null */; +val* var73 /* : nullable MModule */; +val* var_sup74 /* var sup: nullable MModule */; +val* var75 /* : null */; +short int var76 /* : Bool */; +val* var77 /* : MVisibility */; +val* var78 /* : ToolContext */; +static val* varonce79; +val* var80 /* : String */; +char* var81 /* : NativeString */; +long var82 /* : Int */; +val* var83 /* : String */; +static val* varonce84; +val* var85 /* : String */; +char* var86 /* : NativeString */; +long var87 /* : Int */; +val* var88 /* : String */; +val* var89 /* : String */; +val* var90 /* : Array[Object] */; +long var91 /* : Int */; +val* var92 /* : NativeArray[Object] */; +val* var93 /* : String */; +long var94 /* : 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){ @@ -2796,15 +3405,14 @@ var1 = 1; 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", 432); -exit(1); +fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 540); +show_backtrace(1); } var_mmodule = var2; var3 = 1; var_stdimport = var3; -var4 = NEW_array__Array(&type_array__Arraymodel_base__MModule); +var4 = NEW_array__Array(&type_array__Arraymmodule__MModule); ((void (*)(val*))(var4->class->vft[COLOR_array__Array__init]))(var4) /* init on */; -CHECK_NEW_array__Array(var4); 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 */; @@ -2867,73 +3475,153 @@ varonce = var24; goto RET_LABEL; } else { } -((void (*)(val*, val*, val*))(var_mmodule->class->vft[COLOR_model_base__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; +var28 = ((short int (*)(val*, val*))(var_sup->class->vft[COLOR_kernel__Object___61d_61d]))(var_sup, var_mmodule) /* == on */; +if (var28){ +var29 = ((val* (*)(val*))(var_aimport->class->vft[COLOR_parser_nodes__AStdImport__n_name]))(var_aimport) /* n_name on */; +if (varonce30) { +var31 = varonce30; } else { -var30 = "standard"; -var31 = 8; -var32 = string__NativeString__to_s_with_length(var30, var31); -var29 = var32; -varonce28 = var29; +var32 = "Error: Dependency loop in module "; +var33 = 33; +var34 = string__NativeString__to_s_with_length(var32, var33); +var31 = var34; +varonce30 = var31; } -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 */ +if (varonce35) { +var36 = varonce35; } else { -var38 = 1; /* arg is null and recv is not */ +var37 = "."; +var38 = 1; +var39 = string__NativeString__to_s_with_length(var37, var38); +var36 = var39; +varonce35 = var36; } -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_model_base__MModule__set_visibility_for]))(var_mmodule, var_sup36, var39) /* set_visibility_for on */; +var40 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var40 = array_instance Array[Object] */ +var41 = 3; +var42 = NEW_array__NativeArray(var41, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var42)->values[0] = (val*) var31; +((struct instance_array__NativeArray*)var42)->values[1] = (val*) var_mmodule; +((struct instance_array__NativeArray*)var42)->values[2] = (val*) var36; +((void (*)(val*, val*, long))(var40->class->vft[COLOR_array__Array__with_native]))(var40, var42, var41) /* with_native on */; +} +var43 = ((val* (*)(val*))(var40->class->vft[COLOR_string__Object__to_s]))(var40) /* to_s on */; +((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var29, var43) /* error on */; } else { } +var44 = ((val* (*)(val*))(var_sup->class->vft[COLOR_mmodule__MModule__in_importation]))(var_sup) /* in_importation on */; +var45 = ((short int (*)(val*, val*))(var44->class->vft[COLOR_poset__POSetElement___60d]))(var44, var_mmodule) /* < on */; +if (var45){ +var46 = ((val* (*)(val*))(var_aimport->class->vft[COLOR_parser_nodes__AStdImport__n_name]))(var_aimport) /* n_name on */; +if (varonce47) { +var48 = varonce47; } else { +var49 = "Error: Dependency loop between modules "; +var50 = 39; +var51 = string__NativeString__to_s_with_length(var49, var50); +var48 = var51; +varonce47 = var48; } -var40 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on */; -if (varonce41) { -var42 = varonce41; +if (varonce52) { +var53 = varonce52; } else { -var43 = " imports "; -var44 = 9; -var45 = string__NativeString__to_s_with_length(var43, var44); -var42 = var45; -varonce41 = var42; +var54 = " and "; +var55 = 5; +var56 = string__NativeString__to_s_with_length(var54, var55); +var53 = var56; +varonce52 = var53; } -if (varonce46) { -var47 = varonce46; +if (varonce57) { +var58 = varonce57; +} else { +var59 = "."; +var60 = 1; +var61 = string__NativeString__to_s_with_length(var59, var60); +var58 = var61; +varonce57 = var58; +} +var62 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var62 = array_instance Array[Object] */ +var63 = 5; +var64 = NEW_array__NativeArray(var63, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var64)->values[0] = (val*) var48; +((struct instance_array__NativeArray*)var64)->values[1] = (val*) var_mmodule; +((struct instance_array__NativeArray*)var64)->values[2] = (val*) var53; +((struct instance_array__NativeArray*)var64)->values[3] = (val*) var_sup; +((struct instance_array__NativeArray*)var64)->values[4] = (val*) var58; +((void (*)(val*, val*, long))(var62->class->vft[COLOR_array__Array__with_native]))(var62, var64, var63) /* with_native on */; +} +var65 = ((val* (*)(val*))(var62->class->vft[COLOR_string__Object__to_s]))(var62) /* to_s on */; +((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var46, var65) /* error on */; +goto RET_LABEL; } else { -var48 = ", "; -var49 = 2; -var50 = string__NativeString__to_s_with_length(var48, var49); -var47 = var50; -varonce46 = var47; } -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 */; -CHECK_NEW_array__Array(var52); +((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 (varonce66) { +var67 = varonce66; +} else { +var68 = "standard"; +var69 = 8; +var70 = string__NativeString__to_s_with_length(var68, var69); +var67 = var70; +varonce66 = var67; +} +var_mod_name71 = var67; +var72 = NULL; +var73 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__get_mmodule_by_name]))(self, var_nmodule, var72, var_mod_name71) /* get_mmodule_by_name on */; +var_sup74 = var73; +var75 = NULL; +if (var_sup74 == NULL) { +var76 = 0; /* is null */ +} else { +var76 = 1; /* arg is null and recv is not */ } -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_model_base__MModule__set_imported_mmodules]))(var_mmodule, var_imported_modules) /* set_imported_mmodules on */; +if (var76){ +((void (*)(val*, val*))(var_imported_modules->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_imported_modules, var_sup74) /* add on */; +var77 = ((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_sup74, var77) /* set_visibility_for on */; +} else { +} +} else { +} +var78 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on */; +if (varonce79) { +var80 = varonce79; +} else { +var81 = " imports "; +var82 = 9; +var83 = string__NativeString__to_s_with_length(var81, var82); +var80 = var83; +varonce79 = var80; +} +if (varonce84) { +var85 = varonce84; +} else { +var86 = ", "; +var87 = 2; +var88 = string__NativeString__to_s_with_length(var86, var87); +var85 = var88; +varonce84 = var85; +} +var89 = ((val* (*)(val*, val*))(var_imported_modules->class->vft[COLOR_string__Collection__join]))(var_imported_modules, var85) /* join on */; +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*) var_mmodule; +((struct instance_array__NativeArray*)var92)->values[1] = (val*) var80; +((struct instance_array__NativeArray*)var92)->values[2] = (val*) var89; +((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 */; +var94 = 3; +((void (*)(val*, val*, long))(var78->class->vft[COLOR_toolcontext__ToolContext__info]))(var78, var93, var94) /* 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) */ @@ -2948,8 +3636,8 @@ 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", 464); -exit(1); +fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 579); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -2981,8 +3669,8 @@ 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", 467); -exit(1); +fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 582); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -3127,13 +3815,12 @@ var22 = NEW_array__NativeArray(var21, &type_array__NativeArraykernel__Object); ((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 */; -CHECK_NEW_array__Array(var20); } 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", 491); -exit(1); +fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 606); +show_backtrace(1); } else { } var = var_res; @@ -3150,6 +3837,164 @@ var = var1; RET_LABEL:; return var; } +/* method modelbuilder#ModulePath#name for (self: ModulePath): String */ +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", 614); +show_backtrace(1); +} +var = var1; +RET_LABEL:; +return var; +} +/* method modelbuilder#ModulePath#name for (self: Object): String */ +val* VIRTUAL_modelbuilder__ModulePath__name(val* self) { +val* var /* : String */; +val* var1 /* : String */; +var1 = modelbuilder__ModulePath__name(self); +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 */ +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); +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", 618); +show_backtrace(1); +} +var = var1; +RET_LABEL:; +return var; +} +/* method modelbuilder#ModulePath#filepath for (self: Object): String */ +val* VIRTUAL_modelbuilder__ModulePath__filepath(val* self) { +val* var /* : String */; +val* var1 /* : String */; +var1 = modelbuilder__ModulePath__filepath(self); +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 */ +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); +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", 621); +show_backtrace(1); +} +var = var1; +RET_LABEL:; +return var; +} +/* method modelbuilder#ModulePath#mgroup for (self: Object): MGroup */ +val* VIRTUAL_modelbuilder__ModulePath__mgroup(val* self) { +val* var /* : MGroup */; +val* var1 /* : MGroup */; +var1 = modelbuilder__ModulePath__mgroup(self); +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 */ +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); +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 */ +var = var1; +RET_LABEL:; +return var; +} +/* method modelbuilder#ModulePath#mmodule for (self: Object): nullable MModule */ +val* VIRTUAL_modelbuilder__ModulePath__mmodule(val* self) { +val* var /* : nullable MModule */; +val* var1 /* : nullable MModule */; +var1 = modelbuilder__ModulePath__mmodule(self); +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 */ +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); +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 */; +var = var1; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method modelbuilder#ModulePath#to_s for (self: Object): String */ +val* VIRTUAL_modelbuilder__ModulePath__to_s(val* self) { +val* var /* : String */; +val* var1 /* : String */; +var1 = modelbuilder__ModulePath__to_s(self); +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 */ +RET_LABEL:; +} +/* 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); +RET_LABEL:; +} /* method modelbuilder#AStdImport#mmodule for (self: AStdImport): nullable MModule */ val* modelbuilder__AStdImport__mmodule(val* self) { val* var /* : nullable MModule */; @@ -3240,8 +4085,8 @@ 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", 510); -exit(1); +fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 644); +show_backtrace(1); RET_LABEL:; return var; }