X-Git-Url: http://nitlanguage.org diff --git a/c_src/nit__extern_classes.sep.1.c b/c_src/nit__extern_classes.sep.1.c new file mode 100644 index 0000000..3a850d9 --- /dev/null +++ b/c_src/nit__extern_classes.sep.1.c @@ -0,0 +1,863 @@ +#include "nit__extern_classes.sep.0.h" +/* method extern_classes#ToolContext#extern_classes_typing_phase_ast for (self: ToolContext): Phase */ +val* nit__extern_classes___ToolContext___extern_classes_typing_phase_ast(val* self) { +val* var /* : Phase */; +val* var1 /* : Phase */; +var1 = self->attrs[COLOR_nit__extern_classes__ToolContext___extern_classes_typing_phase_ast].val; /* _extern_classes_typing_phase_ast on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _extern_classes_typing_phase_ast"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__extern_classes, 24); +fatal_exit(1); +} +var = var1; +RET_LABEL:; +return var; +} +/* method extern_classes#ExternClassesTypingPhaseAst#process_nclassdef for (self: ExternClassesTypingPhaseAst, AClassdef) */ +void nit__extern_classes___nit__extern_classes__ExternClassesTypingPhaseAst___nit__phase__Phase__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* var4 /* : nullable AExternCodeBlock */; +val* var_code_block /* var code_block: nullable AExternCodeBlock */; +short int var5 /* : Bool */; +short int var6 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var8 /* : Bool */; +short int var10 /* : Bool */; +val* var11 /* : nullable TKwredef */; +val* var13 /* : nullable TKwredef */; +short int var14 /* : Bool */; +short int var15 /* : Bool */; +val* var_other17 /* var other: nullable Object */; +short int var18 /* : Bool */; +short int var19 /* : Bool */; +val* var20 /* : ToolContext */; +val* var22 /* : ToolContext */; +val* var23 /* : Location */; +val* var25 /* : Location */; +static val* varonce; +val* var26 /* : String */; +char* var27 /* : NativeString */; +val* var28 /* : FlatString */; +val* var29 /* : Message */; +val* var30 /* : nullable FFILanguage */; +val* var32 /* : nullable FFILanguage */; +val* var33 /* : ForeignType */; +val* var_ftype /* var ftype: ForeignType */; +val* var34 /* : nullable MClassDef */; +val* var36 /* : nullable MClassDef */; +val* var38 /* : nullable MClassDef */; +val* var40 /* : nullable MClassDef */; +var_nclassdef = p0; +/* isa AStdClassdef */ +cltype = type_nit__AStdClassdef.color; +idtype = type_nit__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 { +} +{ +{ /* Inline parser_nodes#AStdClassdef#n_extern_code_block (var_nclassdef) on */ +var4 = var_nclassdef->attrs[COLOR_nit__parser_nodes__AStdClassdef___n_extern_code_block].val; /* _n_extern_code_block on */ +var2 = var4; +RET_LABEL3:(void)0; +} +} +var_code_block = var2; +if (var_code_block == NULL) { +var5 = 1; /* is null */ +} else { +var5 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_code_block,((val*)NULL)) on */ +var_other = ((val*)NULL); +{ +{ /* Inline kernel#Object#is_same_instance (var_code_block,var_other) on */ +var10 = var_code_block == var_other; +var8 = var10; +goto RET_LABEL9; +RET_LABEL9:(void)0; +} +} +var6 = var8; +goto RET_LABEL7; +RET_LABEL7:(void)0; +} +var5 = var6; +} +if (var5){ +goto RET_LABEL; +} else { +} +{ +{ /* Inline parser_nodes#ADefinition#n_kwredef (var_nclassdef) on */ +var13 = var_nclassdef->attrs[COLOR_nit__parser_nodes__ADefinition___n_kwredef].val; /* _n_kwredef on */ +var11 = var13; +RET_LABEL12:(void)0; +} +} +if (var11 == NULL) { +var14 = 0; /* is null */ +} else { +var14 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var11,((val*)NULL)) on */ +var_other17 = ((val*)NULL); +{ +var18 = ((short int(*)(val* self, val* p0))(var11->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var11, var_other17); /* == on */ +} +var19 = !var18; +var15 = var19; +goto RET_LABEL16; +RET_LABEL16:(void)0; +} +var14 = var15; +} +if (var14){ +{ +{ /* Inline phase#Phase#toolcontext (self) on */ +var22 = self->attrs[COLOR_nit__phase__Phase___toolcontext].val; /* _toolcontext on */ +if (unlikely(var22 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 200); +fatal_exit(1); +} +var20 = var22; +RET_LABEL21:(void)0; +} +} +{ +{ /* Inline parser_nodes#ANode#location (var_nclassdef) on */ +var25 = var_nclassdef->attrs[COLOR_nit__parser_nodes__ANode___location].val; /* _location on */ +if (unlikely(var25 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 24); +fatal_exit(1); +} +var23 = var25; +RET_LABEL24:(void)0; +} +} +if (likely(varonce!=NULL)) { +var26 = varonce; +} else { +var27 = "FFI Error: only the introduction of a class can declare an extern type."; +var28 = standard___standard__NativeString___to_s_with_length(var27, 71l); +var26 = var28; +varonce = var26; +} +{ +var29 = nit___nit__ToolContext___error(var20, var23, var26); +} +goto RET_LABEL; +} else { +} +{ +{ /* Inline light_ffi_base#AExternCodeBlock#language (var_code_block) on */ +var32 = var_code_block->attrs[COLOR_nit__light_ffi_base__AExternCodeBlock___language].val; /* _language on */ +var30 = var32; +RET_LABEL31:(void)0; +} +} +if (var30 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__extern_classes, 47); +fatal_exit(1); +} else { +var33 = nit___nit__CLanguage___nit__light_ffi_base__FFILanguage__get_ftype(var30, var_code_block, var_nclassdef); +} +var_ftype = var33; +{ +{ /* Inline modelize_class#AClassdef#mclassdef (var_nclassdef) on */ +var36 = var_nclassdef->attrs[COLOR_nit__modelize_class__AClassdef___mclassdef].val; /* _mclassdef on */ +var34 = var36; +RET_LABEL35:(void)0; +} +} +if (var34 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__extern_classes, 48); +fatal_exit(1); +} else { +{ /* Inline extern_classes#MClassDef#ftype_cache= (var34,var_ftype) on */ +if (unlikely(var34 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__extern_classes, 54); +fatal_exit(1); +} +var34->attrs[COLOR_nit__extern_classes__MClassDef___ftype_cache].val = var_ftype; /* _ftype_cache on */ +RET_LABEL37:(void)0; +} +} +{ +{ /* Inline modelize_class#AClassdef#mclassdef (var_nclassdef) on */ +var40 = var_nclassdef->attrs[COLOR_nit__modelize_class__AClassdef___mclassdef].val; /* _mclassdef on */ +var38 = var40; +RET_LABEL39:(void)0; +} +} +if (var38 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__extern_classes, 49); +fatal_exit(1); +} else { +{ /* Inline extern_classes#MClassDef#ftype_computed= (var38,1) on */ +if (unlikely(var38 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__extern_classes, 55); +fatal_exit(1); +} +var38->attrs[COLOR_nit__extern_classes__MClassDef___ftype_computed].s = 1; /* _ftype_computed on */ +RET_LABEL41:(void)0; +} +} +RET_LABEL:; +} +/* method extern_classes#MClassDef#ftype_cache for (self: MClassDef): nullable ForeignType */ +val* nit__extern_classes___MClassDef___ftype_cache(val* self) { +val* var /* : nullable ForeignType */; +val* var1 /* : nullable ForeignType */; +var1 = self->attrs[COLOR_nit__extern_classes__MClassDef___ftype_cache].val; /* _ftype_cache on */ +var = var1; +RET_LABEL:; +return var; +} +/* method extern_classes#MClassDef#ftype_cache= for (self: MClassDef, nullable ForeignType) */ +void nit__extern_classes___MClassDef___ftype_cache_61d(val* self, val* p0) { +self->attrs[COLOR_nit__extern_classes__MClassDef___ftype_cache].val = p0; /* _ftype_cache on */ +RET_LABEL:; +} +/* method extern_classes#MClassDef#ftype_computed= for (self: MClassDef, Bool) */ +void nit__extern_classes___MClassDef___ftype_computed_61d(val* self, short int p0) { +self->attrs[COLOR_nit__extern_classes__MClassDef___ftype_computed].s = p0; /* _ftype_computed on */ +RET_LABEL:; +} +/* method extern_classes#MClassDef#ftype for (self: MClassDef): nullable ForeignType */ +val* nit__extern_classes___MClassDef___ftype(val* self) { +val* var /* : nullable ForeignType */; +val* var1 /* : nullable ForeignType */; +val* var3 /* : nullable ForeignType */; +{ +{ /* Inline extern_classes#MClassDef#ftype_cache (self) on */ +var3 = self->attrs[COLOR_nit__extern_classes__MClassDef___ftype_cache].val; /* _ftype_cache on */ +var1 = var3; +RET_LABEL2:(void)0; +} +} +var = var1; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method extern_classes#ExternClassesTypingPhaseModel#process_nclassdef for (self: ExternClassesTypingPhaseModel, AClassdef) */ +void nit__extern_classes___nit__extern_classes__ExternClassesTypingPhaseModel___nit__phase__Phase__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* var4 /* : nullable MClassDef */; +val* var_mclassdef /* var mclassdef: nullable MClassDef */; +short int var5 /* : Bool */; +short int var6 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var8 /* : Bool */; +short int var10 /* : Bool */; +val* var11 /* : MClass */; +val* var13 /* : MClass */; +val* var_mclass /* var mclass: MClass */; +short int var14 /* : Bool */; +short int var15 /* : Bool */; +val* var16 /* : MClassKind */; +val* var18 /* : MClassKind */; +val* var19 /* : Sys */; +val* var20 /* : MClassKind */; +short int var21 /* : Bool */; +val* var_other23 /* var other: nullable Object */; +short int var24 /* : Bool */; +short int var25 /* : Bool */; +val* var26 /* : nullable ForeignType */; +var_nclassdef = p0; +/* isa AStdClassdef */ +cltype = type_nit__AStdClassdef.color; +idtype = type_nit__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 { +} +{ +{ /* Inline modelize_class#AClassdef#mclassdef (var_nclassdef) on */ +var4 = var_nclassdef->attrs[COLOR_nit__modelize_class__AClassdef___mclassdef].val; /* _mclassdef on */ +var2 = var4; +RET_LABEL3:(void)0; +} +} +var_mclassdef = var2; +if (var_mclassdef == NULL) { +var5 = 1; /* is null */ +} else { +var5 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_mclassdef,((val*)NULL)) on */ +var_other = ((val*)NULL); +{ +{ /* Inline kernel#Object#is_same_instance (var_mclassdef,var_other) on */ +var10 = var_mclassdef == var_other; +var8 = var10; +goto RET_LABEL9; +RET_LABEL9:(void)0; +} +} +var6 = var8; +goto RET_LABEL7; +RET_LABEL7:(void)0; +} +var5 = var6; +} +if (var5){ +goto RET_LABEL; +} else { +} +{ +{ /* Inline model#MClassDef#mclass (var_mclassdef) on */ +var13 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on */ +if (unlikely(var13 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 553); +fatal_exit(1); +} +var11 = var13; +RET_LABEL12:(void)0; +} +} +var_mclass = var11; +{ +var14 = nit___nit__MClassDef___is_intro(var_mclassdef); +} +var15 = !var14; +if (var15){ +goto RET_LABEL; +} else { +} +{ +{ /* Inline model#MClass#kind (var_mclass) on */ +var18 = var_mclass->attrs[COLOR_nit__model__MClass___kind].val; /* _kind on */ +if (unlikely(var18 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 436); +fatal_exit(1); +} +var16 = var18; +RET_LABEL17:(void)0; +} +} +var19 = glob_sys; +{ +var20 = nit__model___standard__Sys___extern_kind(var19); +} +{ +{ /* Inline kernel#Object#!= (var16,var20) on */ +var_other23 = var20; +{ +var24 = ((short int(*)(val* self, val* p0))(var16->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var16, var_other23); /* == on */ +} +var25 = !var24; +var21 = var25; +goto RET_LABEL22; +RET_LABEL22:(void)0; +} +} +if (var21){ +goto RET_LABEL; +} else { +} +{ +var26 = nit__extern_classes___MClass___compute_ftype(var_mclass, self); +} +RET_LABEL:; +} +/* method extern_classes#MClass#ftype_cache for (self: MClass): nullable ForeignType */ +val* nit__extern_classes___MClass___ftype_cache(val* self) { +val* var /* : nullable ForeignType */; +val* var1 /* : nullable ForeignType */; +var1 = self->attrs[COLOR_nit__extern_classes__MClass___ftype_cache].val; /* _ftype_cache on */ +var = var1; +RET_LABEL:; +return var; +} +/* method extern_classes#MClass#ftype_cache= for (self: MClass, nullable ForeignType) */ +void nit__extern_classes___MClass___ftype_cache_61d(val* self, val* p0) { +self->attrs[COLOR_nit__extern_classes__MClass___ftype_cache].val = p0; /* _ftype_cache on */ +RET_LABEL:; +} +/* method extern_classes#MClass#ftype_computed for (self: MClass): Bool */ +short int nit__extern_classes___MClass___ftype_computed(val* self) { +short int var /* : Bool */; +short int var1 /* : Bool */; +var1 = self->attrs[COLOR_nit__extern_classes__MClass___ftype_computed].s; /* _ftype_computed on */ +var = var1; +RET_LABEL:; +return var; +} +/* method extern_classes#MClass#ftype_computed= for (self: MClass, Bool) */ +void nit__extern_classes___MClass___ftype_computed_61d(val* self, short int p0) { +self->attrs[COLOR_nit__extern_classes__MClass___ftype_computed].s = p0; /* _ftype_computed on */ +RET_LABEL:; +} +/* method extern_classes#MClass#ctype for (self: MClass): nullable String */ +val* nit__extern_classes___MClass___ctype(val* self) { +val* var /* : nullable String */; +val* var1 /* : nullable ForeignType */; +val* var3 /* : nullable ForeignType */; +val* var4 /* : String */; +{ +{ /* Inline extern_classes#MClass#ftype_cache (self) on */ +var3 = self->attrs[COLOR_nit__extern_classes__MClass___ftype_cache].val; /* _ftype_cache on */ +var1 = var3; +RET_LABEL2:(void)0; +} +} +if (var1 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__extern_classes, 91); +fatal_exit(1); +} else { +var4 = ((val*(*)(val* self))(var1->class->vft[COLOR_nit__light_ffi_base__ForeignType__ctype]))(var1); /* ctype on */ +} +var = var4; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method extern_classes#MClass#compute_ftype for (self: MClass, ExternClassesTypingPhaseModel): nullable ForeignType */ +val* nit__extern_classes___MClass___compute_ftype(val* self, val* p0) { +val* var /* : nullable ForeignType */; +val* var_v /* var v: ExternClassesTypingPhaseModel */; +short int var1 /* : Bool */; +short int var3 /* : Bool */; +val* var4 /* : nullable ForeignType */; +val* var6 /* : nullable ForeignType */; +val* var7 /* : MClassKind */; +val* var9 /* : MClassKind */; +val* var10 /* : Sys */; +val* var11 /* : MClassKind */; +short int var12 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var14 /* : Bool */; +short int var15 /* : Bool */; +val* var16 /* : String */; +val* var18 /* : String */; +static val* varonce; +val* var19 /* : String */; +char* var20 /* : NativeString */; +val* var21 /* : FlatString */; +short int var22 /* : Bool */; +val* var23 /* : ForeignType */; +val* var26 /* : nullable ForeignType */; +val* var28 /* : nullable ForeignType */; +val* var29 /* : MClassDef */; +val* var31 /* : MClassDef */; +val* var32 /* : nullable ForeignType */; +val* var_ftype /* var ftype: nullable ForeignType */; +short int var33 /* : Bool */; +short int var34 /* : Bool */; +val* var_other36 /* var other: nullable Object */; +short int var37 /* : Bool */; +short int var39 /* : Bool */; +val* var_ftype_b /* var ftype_b: nullable ForeignType */; +val* var40 /* : MClassDef */; +val* var42 /* : MClassDef */; +val* var43 /* : MModule */; +val* var45 /* : MModule */; +val* var46 /* : POSetElement[MClass] */; +val* var47 /* : Collection[nullable Object] */; +val* var_ /* var : Collection[MClass] */; +val* var48 /* : Iterator[nullable Object] */; +val* var_49 /* var : Iterator[MClass] */; +short int var50 /* : Bool */; +val* var51 /* : nullable Object */; +val* var_s /* var s: MClass */; +val* var52 /* : nullable ForeignType */; +val* var_super_ftype /* var super_ftype: nullable ForeignType */; +short int var53 /* : Bool */; +short int var54 /* : Bool */; +short int var56 /* : Bool */; +short int var57 /* : Bool */; +short int var58 /* : Bool */; +short int var59 /* : Bool */; +short int var61 /* : Bool */; +short int var63 /* : Bool */; +short int var64 /* : Bool */; +short int var66 /* : Bool */; +short int var67 /* : Bool */; +val* var68 /* : ToolContext */; +val* var70 /* : ToolContext */; +val* var72 /* : NativeArray[String] */; +static val* varonce71; +static val* varonce73; +val* var74 /* : String */; +char* var75 /* : NativeString */; +val* var76 /* : FlatString */; +static val* varonce77; +val* var78 /* : String */; +char* var79 /* : NativeString */; +val* var80 /* : FlatString */; +val* var81 /* : String */; +val* var82 /* : String */; +val* var83 /* : Message */; +var_v = p0; +{ +{ /* Inline extern_classes#MClass#ftype_computed (self) on */ +var3 = self->attrs[COLOR_nit__extern_classes__MClass___ftype_computed].s; /* _ftype_computed on */ +var1 = var3; +RET_LABEL2:(void)0; +} +} +if (var1){ +{ +{ /* Inline extern_classes#MClass#ftype_cache (self) on */ +var6 = self->attrs[COLOR_nit__extern_classes__MClass___ftype_cache].val; /* _ftype_cache on */ +var4 = var6; +RET_LABEL5:(void)0; +} +} +var = var4; +goto RET_LABEL; +} else { +} +{ +{ /* Inline model#MClass#kind (self) on */ +var9 = self->attrs[COLOR_nit__model__MClass___kind].val; /* _kind on */ +if (unlikely(var9 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 436); +fatal_exit(1); +} +var7 = var9; +RET_LABEL8:(void)0; +} +} +var10 = glob_sys; +{ +var11 = nit__model___standard__Sys___extern_kind(var10); +} +{ +{ /* Inline kernel#Object#!= (var7,var11) on */ +var_other = var11; +{ +var14 = ((short int(*)(val* self, val* p0))(var7->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var7, var_other); /* == on */ +} +var15 = !var14; +var12 = var15; +goto RET_LABEL13; +RET_LABEL13:(void)0; +} +} +if (var12){ +var = ((val*)NULL); +goto RET_LABEL; +} else { +} +{ +{ /* Inline model#MClass#name (self) on */ +var18 = self->attrs[COLOR_nit__model__MClass___name].val; /* _name on */ +if (unlikely(var18 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 362); +fatal_exit(1); +} +var16 = var18; +RET_LABEL17:(void)0; +} +} +if (likely(varonce!=NULL)) { +var19 = varonce; +} else { +var20 = "Pointer"; +var21 = standard___standard__NativeString___to_s_with_length(var20, 7l); +var19 = var21; +varonce = var19; +} +{ +var22 = ((short int(*)(val* self, val* p0))(var16->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var16, var19); /* == on */ +} +if (var22){ +var23 = NEW_nit__ForeignType(&type_nit__ForeignType); +{ +((void(*)(val* self))(var23->class->vft[COLOR_standard__kernel__Object__init]))(var23); /* init on */ +} +{ +{ /* Inline extern_classes#MClass#ftype_cache= (self,var23) on */ +self->attrs[COLOR_nit__extern_classes__MClass___ftype_cache].val = var23; /* _ftype_cache on */ +RET_LABEL24:(void)0; +} +} +{ +{ /* Inline extern_classes#MClass#ftype_computed= (self,1) on */ +self->attrs[COLOR_nit__extern_classes__MClass___ftype_computed].s = 1; /* _ftype_computed on */ +RET_LABEL25:(void)0; +} +} +{ +{ /* Inline extern_classes#MClass#ftype_cache (self) on */ +var28 = self->attrs[COLOR_nit__extern_classes__MClass___ftype_cache].val; /* _ftype_cache on */ +var26 = var28; +RET_LABEL27:(void)0; +} +} +var = var26; +goto RET_LABEL; +} else { +} +{ +{ /* Inline model#MClass#intro (self) on */ +var31 = self->attrs[COLOR_nit__model__MClass___intro].val; /* _intro on */ +if (unlikely(var31 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 460); +fatal_exit(1); +} +var29 = var31; +RET_LABEL30:(void)0; +} +} +{ +var32 = nit__extern_classes___MClassDef___ftype(var29); +} +var_ftype = var32; +if (var_ftype == NULL) { +var33 = 1; /* is null */ +} else { +var33 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_ftype,((val*)NULL)) on */ +var_other36 = ((val*)NULL); +{ +{ /* Inline kernel#Object#is_same_instance (var_ftype,var_other36) on */ +var39 = var_ftype == var_other36; +var37 = var39; +goto RET_LABEL38; +RET_LABEL38:(void)0; +} +} +var34 = var37; +goto RET_LABEL35; +RET_LABEL35:(void)0; +} +var33 = var34; +} +if (var33){ +var_ftype_b = ((val*)NULL); +{ +{ /* Inline model#MClass#intro (self) on */ +var42 = self->attrs[COLOR_nit__model__MClass___intro].val; /* _intro on */ +if (unlikely(var42 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 460); +fatal_exit(1); +} +var40 = var42; +RET_LABEL41:(void)0; +} +} +{ +{ /* Inline model#MClassDef#mmodule (var40) on */ +var45 = var40->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on */ +if (unlikely(var45 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 550); +fatal_exit(1); +} +var43 = var45; +RET_LABEL44:(void)0; +} +} +{ +var46 = nit___nit__MClass___in_hierarchy(self, var43); +} +{ +var47 = poset___poset__POSetElement___direct_greaters(var46); +} +var_ = var47; +{ +var48 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_); /* iterator on */ +} +var_49 = var48; +for(;;) { +{ +var50 = ((short int(*)(val* self))((((long)var_49&3)?class_info[((long)var_49&3)]:var_49->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_49); /* is_ok on */ +} +if (var50){ +{ +var51 = ((val*(*)(val* self))((((long)var_49&3)?class_info[((long)var_49&3)]:var_49->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_49); /* item on */ +} +var_s = var51; +{ +var52 = nit__extern_classes___MClass___compute_ftype(var_s, var_v); +} +var_super_ftype = var52; +if (var_super_ftype == NULL) { +var53 = 0; /* is null */ +} else { +var53 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_super_ftype,((val*)NULL)) on */ +var_other = ((val*)NULL); +{ +var56 = ((short int(*)(val* self, val* p0))(var_super_ftype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_super_ftype, var_other); /* == on */ +} +var57 = !var56; +var54 = var57; +goto RET_LABEL55; +RET_LABEL55:(void)0; +} +var53 = var54; +} +if (var53){ +if (var_ftype_b == NULL) { +var58 = 1; /* is null */ +} else { +var58 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_ftype_b,((val*)NULL)) on */ +var_other36 = ((val*)NULL); +{ +{ /* Inline kernel#Object#is_same_instance (var_ftype_b,var_other36) on */ +var63 = var_ftype_b == var_other36; +var61 = var63; +goto RET_LABEL62; +RET_LABEL62:(void)0; +} +} +var59 = var61; +goto RET_LABEL60; +RET_LABEL60:(void)0; +} +var58 = var59; +} +if (var58){ +var_ftype_b = var_super_ftype; +goto BREAK_label; +} else { +{ +{ /* Inline kernel#Object#!= (var_super_ftype,var_ftype_b) on */ +var_other = var_ftype_b; +{ +var66 = ((short int(*)(val* self, val* p0))(var_super_ftype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_super_ftype, var_other); /* == on */ +} +var67 = !var66; +var64 = var67; +goto RET_LABEL65; +RET_LABEL65:(void)0; +} +} +if (var64){ +{ +{ /* Inline phase#Phase#toolcontext (var_v) on */ +var70 = var_v->attrs[COLOR_nit__phase__Phase___toolcontext].val; /* _toolcontext on */ +if (unlikely(var70 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 200); +fatal_exit(1); +} +var68 = var70; +RET_LABEL69:(void)0; +} +} +if (unlikely(varonce71==NULL)) { +var72 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String); +if (likely(varonce73!=NULL)) { +var74 = varonce73; +} else { +var75 = "FFI Error: extern type conflict in `"; +var76 = standard___standard__NativeString___to_s_with_length(var75, 36l); +var74 = var76; +varonce73 = var74; +} +((struct instance_standard__NativeArray*)var72)->values[0]=var74; +if (likely(varonce77!=NULL)) { +var78 = varonce77; +} else { +var79 = "`."; +var80 = standard___standard__NativeString___to_s_with_length(var79, 2l); +var78 = var80; +varonce77 = var78; +} +((struct instance_standard__NativeArray*)var72)->values[2]=var78; +} else { +var72 = varonce71; +varonce71 = NULL; +} +{ +var81 = ((val*(*)(val* self))(self->class->vft[COLOR_standard__string__Object__to_s]))(self); /* to_s on */ +} +((struct instance_standard__NativeArray*)var72)->values[1]=var81; +{ +var82 = ((val*(*)(val* self))(var72->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var72); /* native_to_s on */ +} +varonce71 = var72; +{ +var83 = nit___nit__ToolContext___error(var68, ((val*)NULL), var82); +} +var = ((val*)NULL); +goto RET_LABEL; +} else { +} +} +} else { +} +BREAK_label: (void)0; +{ +((void(*)(val* self))((((long)var_49&3)?class_info[((long)var_49&3)]:var_49->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_49); /* next on */ +} +} else { +goto BREAK_label84; +} +} +BREAK_label84: (void)0; +{ +((void(*)(val* self))((((long)var_49&3)?class_info[((long)var_49&3)]:var_49->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_49); /* finish on */ +} +var_ftype = var_ftype_b; +} else { +} +{ +{ /* Inline extern_classes#MClass#ftype_cache= (self,var_ftype) on */ +self->attrs[COLOR_nit__extern_classes__MClass___ftype_cache].val = var_ftype; /* _ftype_cache on */ +RET_LABEL85:(void)0; +} +} +{ +{ /* Inline extern_classes#MClass#ftype_computed= (self,1) on */ +self->attrs[COLOR_nit__extern_classes__MClass___ftype_computed].s = 1; /* _ftype_computed on */ +RET_LABEL86:(void)0; +} +} +var = var_ftype; +goto RET_LABEL; +RET_LABEL:; +return var; +}