X-Git-Url: http://nitlanguage.org diff --git a/c_src/extern_classes.sep.1.c b/c_src/extern_classes.sep.1.c new file mode 100644 index 0000000..56851a9 --- /dev/null +++ b/c_src/extern_classes.sep.1.c @@ -0,0 +1,612 @@ +#include "extern_classes.sep.0.h" +/* method extern_classes#ToolContext#extern_classes_typing_phase_ast for (self: ToolContext): Phase */ +val* extern_classes__ToolContext__extern_classes_typing_phase_ast(val* self) { +val* var /* : Phase */; +val* var1 /* : Phase */; +var1 = self->attrs[COLOR_extern_classes__ToolContext___64dextern_classes_typing_phase_ast].val; /* @extern_classes_typing_phase_ast on */ +if (var1 == NULL) { +fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @extern_classes_typing_phase_ast"); +fprintf(stderr, " (%s:%d)\n", "src/common_ffi/extern_classes.nit", 23); +show_backtrace(1); +} +var = var1; +RET_LABEL:; +return var; +} +/* method extern_classes#ToolContext#extern_classes_typing_phase_ast for (self: Object): Phase */ +val* VIRTUAL_extern_classes__ToolContext__extern_classes_typing_phase_ast(val* self) { +val* var /* : Phase */; +val* var1 /* : Phase */; +var1 = extern_classes__ToolContext__extern_classes_typing_phase_ast(self); +var = var1; +RET_LABEL:; +return var; +} +/* method extern_classes#ToolContext#extern_classes_typing_phase_ast= for (self: ToolContext, Phase) */ +void extern_classes__ToolContext__extern_classes_typing_phase_ast_61d(val* self, val* p0) { +self->attrs[COLOR_extern_classes__ToolContext___64dextern_classes_typing_phase_ast].val = p0; /* @extern_classes_typing_phase_ast on */ +RET_LABEL:; +} +/* method extern_classes#ToolContext#extern_classes_typing_phase_ast= for (self: Object, Phase) */ +void VIRTUAL_extern_classes__ToolContext__extern_classes_typing_phase_ast_61d(val* self, val* p0) { +extern_classes__ToolContext__extern_classes_typing_phase_ast_61d(self, p0); +RET_LABEL:; +} +/* method extern_classes#ToolContext#extern_classes_typing_phase_model for (self: ToolContext): Phase */ +val* extern_classes__ToolContext__extern_classes_typing_phase_model(val* self) { +val* var /* : Phase */; +val* var1 /* : Phase */; +var1 = self->attrs[COLOR_extern_classes__ToolContext___64dextern_classes_typing_phase_model].val; /* @extern_classes_typing_phase_model on */ +if (var1 == NULL) { +fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @extern_classes_typing_phase_model"); +fprintf(stderr, " (%s:%d)\n", "src/common_ffi/extern_classes.nit", 25); +show_backtrace(1); +} +var = var1; +RET_LABEL:; +return var; +} +/* method extern_classes#ToolContext#extern_classes_typing_phase_model for (self: Object): Phase */ +val* VIRTUAL_extern_classes__ToolContext__extern_classes_typing_phase_model(val* self) { +val* var /* : Phase */; +val* var1 /* : Phase */; +var1 = extern_classes__ToolContext__extern_classes_typing_phase_model(self); +var = var1; +RET_LABEL:; +return var; +} +/* method extern_classes#ToolContext#extern_classes_typing_phase_model= for (self: ToolContext, Phase) */ +void extern_classes__ToolContext__extern_classes_typing_phase_model_61d(val* self, val* p0) { +self->attrs[COLOR_extern_classes__ToolContext___64dextern_classes_typing_phase_model].val = p0; /* @extern_classes_typing_phase_model on */ +RET_LABEL:; +} +/* method extern_classes#ToolContext#extern_classes_typing_phase_model= for (self: Object, Phase) */ +void VIRTUAL_extern_classes__ToolContext__extern_classes_typing_phase_model_61d(val* self, val* p0) { +extern_classes__ToolContext__extern_classes_typing_phase_model_61d(self, p0); +RET_LABEL:; +} +/* method extern_classes#ExternClassesTypingPhaseAst#process_nclassdef for (self: ExternClassesTypingPhaseAst, AClassdef) */ +void extern_classes__ExternClassesTypingPhaseAst__process_nclassdef(val* self, val* p0) { +val* var_nclassdef /* var nclassdef: AClassdef */; +short int var /* : Bool */; +int cltype; +int idtype; +short int var1 /* : Bool */; +val* var2 /* : nullable AExternCodeBlock */; +val* var_code_block /* var code_block: nullable AExternCodeBlock */; +val* var3 /* : null */; +short int var4 /* : Bool */; +val* var5 /* : nullable TKwredef */; +val* var6 /* : null */; +short int var7 /* : Bool */; +val* var8 /* : ToolContext */; +val* var9 /* : Location */; +static val* varonce; +val* var10 /* : String */; +char* var11 /* : NativeString */; +long var12 /* : Int */; +val* var13 /* : String */; +val* var14 /* : nullable FFILanguage */; +val* var15 /* : ForeignType */; +val* var_ftype /* var ftype: ForeignType */; +short int var16 /* : Bool */; +var_nclassdef = p0; +/* isa AStdClassdef */ +cltype = type_parser_nodes__AStdClassdef.color; +idtype = type_parser_nodes__AStdClassdef.id; +if(cltype >= var_nclassdef->type->table_size) { +var = 0; +} else { +var = var_nclassdef->type->type_table[cltype] == idtype; +} +var1 = !var; +if (var1){ +goto RET_LABEL; +} else { +} +var2 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__AStdClassdef__n_extern_code_block]))(var_nclassdef) /* n_extern_code_block on */; +var_code_block = var2; +var3 = NULL; +if (var_code_block == NULL) { +var4 = 1; /* is null */ +} else { +var4 = 0; /* arg is null but recv is not */ +} +if (var4){ +goto RET_LABEL; +} else { +} +var5 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__AStdClassdef__n_kwredef]))(var_nclassdef) /* n_kwredef on */; +var6 = NULL; +if (var5 == NULL) { +var7 = 0; /* is null */ +} else { +var7 = 1; /* arg is null and recv is not */ +} +if (var7){ +var8 = ((val* (*)(val*))(self->class->vft[COLOR_phase__Phase__toolcontext]))(self) /* toolcontext on */; +var9 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__ANode__location]))(var_nclassdef) /* location on */; +if (varonce) { +var10 = varonce; +} else { +var11 = "Only the introduction of a class can specify an extern type."; +var12 = 60; +var13 = string__NativeString__to_s_with_length(var11, var12); +var10 = var13; +varonce = var10; +} +((void (*)(val*, val*, val*))(var8->class->vft[COLOR_toolcontext__ToolContext__error]))(var8, var9, var10) /* error on */; +goto RET_LABEL; +} else { +} +var14 = ((val* (*)(val*))(var_code_block->class->vft[COLOR_ffi_base__AExternCodeBlock__language]))(var_code_block) /* language on */; +if (var14 == NULL) { +fprintf(stderr, "Runtime error: %s", "Receiver is null"); +fprintf(stderr, " (%s:%d)\n", "src/common_ffi/extern_classes.nit", 45); +show_backtrace(1); +} else { +var15 = ((val* (*)(val*, val*, val*))(var14->class->vft[COLOR_ffi_base__FFILanguage__get_ftype]))(var14, var_code_block, var_nclassdef) /* get_ftype on */; +} +var_ftype = var15; +((void (*)(val*, val*))(var_nclassdef->class->vft[COLOR_extern_classes__AClassdef__ftype_cache_61d]))(var_nclassdef, var_ftype) /* ftype_cache= on */; +var16 = 1; +((void (*)(val*, short int))(var_nclassdef->class->vft[COLOR_extern_classes__AClassdef__ftype_computed_61d]))(var_nclassdef, var16) /* ftype_computed= on */; +RET_LABEL:; +} +/* method extern_classes#ExternClassesTypingPhaseAst#process_nclassdef for (self: Object, AClassdef) */ +void VIRTUAL_extern_classes__ExternClassesTypingPhaseAst__process_nclassdef(val* self, val* p0) { +extern_classes__ExternClassesTypingPhaseAst__process_nclassdef(self, p0); +RET_LABEL:; +} +/* method extern_classes#AClassdef#ftype_cache for (self: AClassdef): nullable ForeignType */ +val* extern_classes__AClassdef__ftype_cache(val* self) { +val* var /* : nullable ForeignType */; +val* var1 /* : nullable ForeignType */; +var1 = self->attrs[COLOR_extern_classes__AClassdef___64dftype_cache].val; /* @ftype_cache on */ +var = var1; +RET_LABEL:; +return var; +} +/* method extern_classes#AClassdef#ftype_cache for (self: Object): nullable ForeignType */ +val* VIRTUAL_extern_classes__AClassdef__ftype_cache(val* self) { +val* var /* : nullable ForeignType */; +val* var1 /* : nullable ForeignType */; +var1 = extern_classes__AClassdef__ftype_cache(self); +var = var1; +RET_LABEL:; +return var; +} +/* method extern_classes#AClassdef#ftype_cache= for (self: AClassdef, nullable ForeignType) */ +void extern_classes__AClassdef__ftype_cache_61d(val* self, val* p0) { +self->attrs[COLOR_extern_classes__AClassdef___64dftype_cache].val = p0; /* @ftype_cache on */ +RET_LABEL:; +} +/* method extern_classes#AClassdef#ftype_cache= for (self: Object, nullable ForeignType) */ +void VIRTUAL_extern_classes__AClassdef__ftype_cache_61d(val* self, val* p0) { +extern_classes__AClassdef__ftype_cache_61d(self, p0); +RET_LABEL:; +} +/* method extern_classes#AClassdef#ftype_computed for (self: AClassdef): Bool */ +short int extern_classes__AClassdef__ftype_computed(val* self) { +short int var /* : Bool */; +short int var1 /* : Bool */; +var1 = self->attrs[COLOR_extern_classes__AClassdef___64dftype_computed].s; /* @ftype_computed on */ +var = var1; +RET_LABEL:; +return var; +} +/* method extern_classes#AClassdef#ftype_computed for (self: Object): Bool */ +short int VIRTUAL_extern_classes__AClassdef__ftype_computed(val* self) { +short int var /* : Bool */; +short int var1 /* : Bool */; +var1 = extern_classes__AClassdef__ftype_computed(self); +var = var1; +RET_LABEL:; +return var; +} +/* method extern_classes#AClassdef#ftype_computed= for (self: AClassdef, Bool) */ +void extern_classes__AClassdef__ftype_computed_61d(val* self, short int p0) { +self->attrs[COLOR_extern_classes__AClassdef___64dftype_computed].s = p0; /* @ftype_computed on */ +RET_LABEL:; +} +/* method extern_classes#AClassdef#ftype_computed= for (self: Object, Bool) */ +void VIRTUAL_extern_classes__AClassdef__ftype_computed_61d(val* self, short int p0) { +extern_classes__AClassdef__ftype_computed_61d(self, p0); +RET_LABEL:; +} +/* method extern_classes#AClassdef#ftype for (self: AClassdef): nullable ForeignType */ +val* extern_classes__AClassdef__ftype(val* self) { +val* var /* : nullable ForeignType */; +val* var1 /* : nullable ForeignType */; +var1 = ((val* (*)(val*))(self->class->vft[COLOR_extern_classes__AClassdef__ftype_cache]))(self) /* ftype_cache on */; +var = var1; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method extern_classes#AClassdef#ftype for (self: Object): nullable ForeignType */ +val* VIRTUAL_extern_classes__AClassdef__ftype(val* self) { +val* var /* : nullable ForeignType */; +val* var1 /* : nullable ForeignType */; +var1 = extern_classes__AClassdef__ftype(self); +var = var1; +RET_LABEL:; +return var; +} +/* method extern_classes#ExternClassesTypingPhaseModel#process_nclassdef for (self: ExternClassesTypingPhaseModel, AClassdef) */ +void extern_classes__ExternClassesTypingPhaseModel__process_nclassdef(val* self, val* p0) { +val* var_nclassdef /* var nclassdef: AClassdef */; +short int var /* : Bool */; +int cltype; +int idtype; +short int var1 /* : Bool */; +val* var2 /* : nullable MClassDef */; +val* var_mclassdef /* var mclassdef: nullable MClassDef */; +val* var3 /* : nullable MClass */; +val* var_mclass /* var mclass: nullable MClass */; +val* var4 /* : MClassDef */; +short int var5 /* : Bool */; +val* var6 /* : MClassKind */; +val* var7 /* : MClassKind */; +short int var8 /* : Bool */; +val* var9 /* : nullable ForeignType */; +var_nclassdef = p0; +/* isa AStdClassdef */ +cltype = type_parser_nodes__AStdClassdef.color; +idtype = type_parser_nodes__AStdClassdef.id; +if(cltype >= var_nclassdef->type->table_size) { +var = 0; +} else { +var = var_nclassdef->type->type_table[cltype] == idtype; +} +var1 = !var; +if (var1){ +goto RET_LABEL; +} else { +} +var2 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on */; +var_mclassdef = var2; +var3 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclass]))(var_nclassdef) /* mclass on */; +var_mclass = var3; +if (var_mclass == NULL) { +fprintf(stderr, "Runtime error: %s", "Receiver is null"); +fprintf(stderr, " (%s:%d)\n", "src/common_ffi/extern_classes.nit", 73); +show_backtrace(1); +} else { +var4 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__intro]))(var_mclass) /* intro on */; +} +var5 = ((short int (*)(val*, val*))(var4->class->vft[COLOR_kernel__Object___33d_61d]))(var4, var_mclassdef) /* != on */; +if (var5){ +goto RET_LABEL; +} else { +} +if (var_mclass == NULL) { +fprintf(stderr, "Runtime error: %s", "Receiver is null"); +fprintf(stderr, " (%s:%d)\n", "src/common_ffi/extern_classes.nit", 75); +show_backtrace(1); +} else { +var6 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__kind]))(var_mclass) /* kind on */; +} +var7 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__extern_kind]))(self) /* extern_kind on */; +var8 = ((short int (*)(val*, val*))(var6->class->vft[COLOR_kernel__Object___33d_61d]))(var6, var7) /* != on */; +if (var8){ +goto RET_LABEL; +} else { +} +if (var_mclass == NULL) { +fprintf(stderr, "Runtime error: %s", "Receiver is null"); +fprintf(stderr, " (%s:%d)\n", "src/common_ffi/extern_classes.nit", 77); +show_backtrace(1); +} else { +var9 = ((val* (*)(val*, val*))(var_mclass->class->vft[COLOR_extern_classes__MClass__compute_ftype]))(var_mclass, self) /* compute_ftype on */; +} +var9; +RET_LABEL:; +} +/* method extern_classes#ExternClassesTypingPhaseModel#process_nclassdef for (self: Object, AClassdef) */ +void VIRTUAL_extern_classes__ExternClassesTypingPhaseModel__process_nclassdef(val* self, val* p0) { +extern_classes__ExternClassesTypingPhaseModel__process_nclassdef(self, p0); +RET_LABEL:; +} +/* method extern_classes#MClass#ftype_cache for (self: MClass): nullable ForeignType */ +val* extern_classes__MClass__ftype_cache(val* self) { +val* var /* : nullable ForeignType */; +val* var1 /* : nullable ForeignType */; +var1 = self->attrs[COLOR_extern_classes__MClass___64dftype_cache].val; /* @ftype_cache on */ +var = var1; +RET_LABEL:; +return var; +} +/* method extern_classes#MClass#ftype_cache for (self: Object): nullable ForeignType */ +val* VIRTUAL_extern_classes__MClass__ftype_cache(val* self) { +val* var /* : nullable ForeignType */; +val* var1 /* : nullable ForeignType */; +var1 = extern_classes__MClass__ftype_cache(self); +var = var1; +RET_LABEL:; +return var; +} +/* method extern_classes#MClass#ftype_cache= for (self: MClass, nullable ForeignType) */ +void extern_classes__MClass__ftype_cache_61d(val* self, val* p0) { +self->attrs[COLOR_extern_classes__MClass___64dftype_cache].val = p0; /* @ftype_cache on */ +RET_LABEL:; +} +/* method extern_classes#MClass#ftype_cache= for (self: Object, nullable ForeignType) */ +void VIRTUAL_extern_classes__MClass__ftype_cache_61d(val* self, val* p0) { +extern_classes__MClass__ftype_cache_61d(self, p0); +RET_LABEL:; +} +/* method extern_classes#MClass#ftype_computed for (self: MClass): Bool */ +short int extern_classes__MClass__ftype_computed(val* self) { +short int var /* : Bool */; +short int var1 /* : Bool */; +var1 = self->attrs[COLOR_extern_classes__MClass___64dftype_computed].s; /* @ftype_computed on */ +var = var1; +RET_LABEL:; +return var; +} +/* method extern_classes#MClass#ftype_computed for (self: Object): Bool */ +short int VIRTUAL_extern_classes__MClass__ftype_computed(val* self) { +short int var /* : Bool */; +short int var1 /* : Bool */; +var1 = extern_classes__MClass__ftype_computed(self); +var = var1; +RET_LABEL:; +return var; +} +/* method extern_classes#MClass#ftype_computed= for (self: MClass, Bool) */ +void extern_classes__MClass__ftype_computed_61d(val* self, short int p0) { +self->attrs[COLOR_extern_classes__MClass___64dftype_computed].s = p0; /* @ftype_computed on */ +RET_LABEL:; +} +/* method extern_classes#MClass#ftype_computed= for (self: Object, Bool) */ +void VIRTUAL_extern_classes__MClass__ftype_computed_61d(val* self, short int p0) { +extern_classes__MClass__ftype_computed_61d(self, p0); +RET_LABEL:; +} +/* method extern_classes#MClass#ftype for (self: MClass): nullable ForeignType */ +val* extern_classes__MClass__ftype(val* self) { +val* var /* : nullable ForeignType */; +val* var1 /* : nullable ForeignType */; +var1 = ((val* (*)(val*))(self->class->vft[COLOR_extern_classes__MClass__ftype_cache]))(self) /* ftype_cache on */; +var = var1; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method extern_classes#MClass#ftype for (self: Object): nullable ForeignType */ +val* VIRTUAL_extern_classes__MClass__ftype(val* self) { +val* var /* : nullable ForeignType */; +val* var1 /* : nullable ForeignType */; +var1 = extern_classes__MClass__ftype(self); +var = var1; +RET_LABEL:; +return var; +} +/* method extern_classes#MClass#ctype for (self: MClass): nullable String */ +val* extern_classes__MClass__ctype(val* self) { +val* var /* : nullable String */; +val* var1 /* : nullable ForeignType */; +val* var2 /* : String */; +var1 = ((val* (*)(val*))(self->class->vft[COLOR_extern_classes__MClass__ftype_cache]))(self) /* ftype_cache on */; +if (var1 == NULL) { +fprintf(stderr, "Runtime error: %s", "Receiver is null"); +fprintf(stderr, " (%s:%d)\n", "src/common_ffi/extern_classes.nit", 88); +show_backtrace(1); +} else { +var2 = ((val* (*)(val*))(var1->class->vft[COLOR_ffi_base__ForeignType__ctype]))(var1) /* ctype on */; +} +var = var2; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method extern_classes#MClass#ctype for (self: Object): nullable String */ +val* VIRTUAL_extern_classes__MClass__ctype(val* self) { +val* var /* : nullable String */; +val* var1 /* : nullable String */; +var1 = extern_classes__MClass__ctype(self); +var = var1; +RET_LABEL:; +return var; +} +/* method extern_classes#MClass#compute_ftype for (self: MClass, ExternClassesTypingPhaseModel): nullable ForeignType */ +val* extern_classes__MClass__compute_ftype(val* self, val* p0) { +val* var /* : nullable ForeignType */; +val* var_v /* var v: ExternClassesTypingPhaseModel */; +short int var1 /* : Bool */; +val* var2 /* : nullable ForeignType */; +val* var3 /* : MClassKind */; +val* var4 /* : MClassKind */; +short int var5 /* : Bool */; +val* var6 /* : null */; +val* var7 /* : String */; +static val* varonce; +val* var8 /* : String */; +char* var9 /* : NativeString */; +long var10 /* : Int */; +val* var11 /* : String */; +short int var12 /* : Bool */; +val* var13 /* : ForeignType */; +short int var14 /* : Bool */; +val* var15 /* : nullable ForeignType */; +val* var16 /* : ToolContext */; +val* var17 /* : ModelBuilder */; +val* var18 /* : HashMap[MClassDef, AClassdef] */; +val* var19 /* : MClassDef */; +val* var20 /* : nullable Object */; +val* var_intro_nclassdef /* var intro_nclassdef: AClassdef */; +val* var21 /* : nullable ForeignType */; +val* var_ftype /* var ftype: nullable ForeignType */; +val* var22 /* : null */; +short int var23 /* : Bool */; +val* var24 /* : null */; +val* var_ftype_b /* var ftype_b: nullable ForeignType */; +val* var25 /* : MClassDef */; +val* var26 /* : MModule */; +val* var27 /* : POSetElement[MClass] */; +val* var28 /* : Collection[Object] */; +val* var29 /* : Iterator[nullable Object] */; +short int var30 /* : Bool */; +val* var31 /* : nullable Object */; +val* var_s /* var s: MClass */; +val* var32 /* : nullable ForeignType */; +val* var_super_ftype /* var super_ftype: nullable ForeignType */; +val* var33 /* : null */; +short int var34 /* : Bool */; +val* var35 /* : null */; +short int var36 /* : Bool */; +short int var37 /* : Bool */; +val* var38 /* : ToolContext */; +val* var39 /* : null */; +static val* varonce40; +val* var41 /* : String */; +char* var42 /* : NativeString */; +long var43 /* : Int */; +val* var44 /* : String */; +val* var45 /* : Array[Object] */; +long var46 /* : Int */; +val* var47 /* : NativeArray[Object] */; +val* var48 /* : String */; +val* var49 /* : null */; +short int var50 /* : Bool */; +var_v = p0; +var1 = ((short int (*)(val*))(self->class->vft[COLOR_extern_classes__MClass__ftype_computed]))(self) /* ftype_computed on */; +if (var1){ +var2 = ((val* (*)(val*))(self->class->vft[COLOR_extern_classes__MClass__ftype_cache]))(self) /* ftype_cache on */; +var = var2; +goto RET_LABEL; +} else { +} +var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__kind]))(self) /* kind on */; +var4 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__extern_kind]))(self) /* extern_kind on */; +var5 = ((short int (*)(val*, val*))(var3->class->vft[COLOR_kernel__Object___33d_61d]))(var3, var4) /* != on */; +if (var5){ +var6 = NULL; +var = var6; +goto RET_LABEL; +} else { +} +var7 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__name]))(self) /* name on */; +if (varonce) { +var8 = varonce; +} else { +var9 = "Pointer"; +var10 = 7; +var11 = string__NativeString__to_s_with_length(var9, var10); +var8 = var11; +varonce = var8; +} +var12 = ((short int (*)(val*, val*))(var7->class->vft[COLOR_kernel__Object___61d_61d]))(var7, var8) /* == on */; +if (var12){ +var13 = NEW_ffi_base__ForeignType(&type_ffi_base__ForeignType); +((void (*)(val*))(var13->class->vft[COLOR_ffi_base__ForeignType__init]))(var13) /* init on */; +((void (*)(val*, val*))(self->class->vft[COLOR_extern_classes__MClass__ftype_cache_61d]))(self, var13) /* ftype_cache= on */; +var14 = 1; +((void (*)(val*, short int))(self->class->vft[COLOR_extern_classes__MClass__ftype_computed_61d]))(self, var14) /* ftype_computed= on */; +var15 = ((val* (*)(val*))(self->class->vft[COLOR_extern_classes__MClass__ftype_cache]))(self) /* ftype_cache on */; +var = var15; +goto RET_LABEL; +} else { +} +var16 = ((val* (*)(val*))(var_v->class->vft[COLOR_phase__Phase__toolcontext]))(var_v) /* toolcontext on */; +var17 = ((val* (*)(val*))(var16->class->vft[COLOR_modelbuilder__ToolContext__modelbuilder]))(var16) /* modelbuilder on */; +var18 = ((val* (*)(val*))(var17->class->vft[COLOR_modelize_class__ModelBuilder__mclassdef2nclassdef]))(var17) /* mclassdef2nclassdef on */; +var19 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__intro]))(self) /* intro on */; +var20 = ((val* (*)(val*, val*))(var18->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var18, var19) /* [] on */; +var_intro_nclassdef = var20; +var21 = ((val* (*)(val*))(var_intro_nclassdef->class->vft[COLOR_extern_classes__AClassdef__ftype]))(var_intro_nclassdef) /* ftype on */; +var_ftype = var21; +var22 = NULL; +if (var_ftype == NULL) { +var23 = 1; /* is null */ +} else { +var23 = 0; /* arg is null but recv is not */ +} +if (var23){ +var24 = NULL; +var_ftype_b = var24; +var25 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__intro]))(self) /* intro on */; +var26 = ((val* (*)(val*))(var25->class->vft[COLOR_model__MClassDef__mmodule]))(var25) /* mmodule on */; +var27 = ((val* (*)(val*, val*))(self->class->vft[COLOR_model__MClass__in_hierarchy]))(self, var26) /* in_hierarchy on */; +var28 = ((val* (*)(val*))(var27->class->vft[COLOR_poset__POSetElement__direct_greaters]))(var27) /* direct_greaters on */; +var29 = ((val* (*)(val*))(var28->class->vft[COLOR_abstract_collection__Collection__iterator]))(var28) /* iterator on */; +for(;;) { +var30 = ((short int (*)(val*))(var29->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var29) /* is_ok on */; +if(!var30) break; +var31 = ((val* (*)(val*))(var29->class->vft[COLOR_abstract_collection__Iterator__item]))(var29) /* item on */; +var_s = var31; +var32 = ((val* (*)(val*, val*))(var_s->class->vft[COLOR_extern_classes__MClass__compute_ftype]))(var_s, var_v) /* compute_ftype on */; +var_super_ftype = var32; +var33 = NULL; +if (var_super_ftype == NULL) { +var34 = 0; /* is null */ +} else { +var34 = 1; /* arg is null and recv is not */ +} +if (var34){ +var35 = NULL; +if (var_ftype_b == NULL) { +var36 = 1; /* is null */ +} else { +var36 = 0; /* arg is null but recv is not */ +} +if (var36){ +var_ftype_b = var_super_ftype; +goto CONTINUE_label; +} else { +var37 = ((short int (*)(val*, val*))(var_super_ftype->class->vft[COLOR_kernel__Object___33d_61d]))(var_super_ftype, var_ftype_b) /* != on */; +if (var37){ +var38 = ((val* (*)(val*))(var_v->class->vft[COLOR_phase__Phase__toolcontext]))(var_v) /* toolcontext on */; +var39 = NULL; +if (varonce40) { +var41 = varonce40; +} else { +var42 = "Extern type conflict in "; +var43 = 24; +var44 = string__NativeString__to_s_with_length(var42, var43); +var41 = var44; +varonce40 = var41; +} +var45 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var45 = array_instance Array[Object] */ +var46 = 2; +var47 = NEW_array__NativeArray(var46, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var47)->values[0] = (val*) var41; +((struct instance_array__NativeArray*)var47)->values[1] = (val*) self; +((void (*)(val*, val*, long))(var45->class->vft[COLOR_array__Array__with_native]))(var45, var47, var46) /* with_native on */; +} +var48 = ((val* (*)(val*))(var45->class->vft[COLOR_string__Object__to_s]))(var45) /* to_s on */; +((void (*)(val*, val*, val*))(var38->class->vft[COLOR_toolcontext__ToolContext__error]))(var38, var39, var48) /* error on */; +var49 = NULL; +var = var49; +goto RET_LABEL; +} else { +} +} +} else { +} +CONTINUE_label: (void)0; +((void (*)(val*))(var29->class->vft[COLOR_abstract_collection__Iterator__next]))(var29) /* next on */; +} +BREAK_label: (void)0; +var_ftype = var_ftype_b; +} else { +} +((void (*)(val*, val*))(self->class->vft[COLOR_extern_classes__MClass__ftype_cache_61d]))(self, var_ftype) /* ftype_cache= on */; +var50 = 1; +((void (*)(val*, short int))(self->class->vft[COLOR_extern_classes__MClass__ftype_computed_61d]))(self, var50) /* ftype_computed= on */; +var = var_ftype; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method extern_classes#MClass#compute_ftype for (self: Object, ExternClassesTypingPhaseModel): nullable ForeignType */ +val* VIRTUAL_extern_classes__MClass__compute_ftype(val* self, val* p0) { +val* var /* : nullable ForeignType */; +val* var1 /* : nullable ForeignType */; +var1 = extern_classes__MClass__compute_ftype(self, p0); +var = var1; +RET_LABEL:; +return var; +}