X-Git-Url: http://nitlanguage.org diff --git a/c_src/nit__astvalidation.sep.1.c b/c_src/nit__astvalidation.sep.1.c new file mode 100644 index 0000000..210c9d6 --- /dev/null +++ b/c_src/nit__astvalidation.sep.1.c @@ -0,0 +1,482 @@ +#include "nit__astvalidation.sep.0.h" +/* method astvalidation#ASTValidationVisitor#visit for (self: ASTValidationVisitor, ANode) */ +void nit___nit__ASTValidationVisitor___nit__parser_nodes__Visitor__visit(val* self, val* p0) { +val* var_node /* var node: ANode */; +val* var /* : List[ANode] */; +val* var2 /* : List[ANode] */; +val* var3 /* : List[ANode] */; +val* var5 /* : List[ANode] */; +val* var6 /* : nullable Object */; +var_node = p0; +{ +{ /* Inline astvalidation#ASTValidationVisitor#path (self) on */ +var2 = self->attrs[COLOR_nit__astvalidation__ASTValidationVisitor___path].val; /* _path on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__astvalidation, 29); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +standard___standard__List___standard__abstract_collection__Sequence__unshift(var, var_node); /* Direct call list#List#unshift on */ +} +{ +((void (*)(val* self, val* p0))(var_node->class->vft[COLOR_nit__astvalidation__ANode__accept_ast_validation]))(var_node, self) /* accept_ast_validation on */; +} +{ +{ /* Inline astvalidation#ASTValidationVisitor#path (self) on */ +var5 = self->attrs[COLOR_nit__astvalidation__ASTValidationVisitor___path].val; /* _path on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__astvalidation, 29); +show_backtrace(1); +} +var3 = var5; +RET_LABEL4:(void)0; +} +} +{ +var6 = standard___standard__List___standard__abstract_collection__Sequence__shift(var3); +} +RET_LABEL:; +} +/* method astvalidation#ASTValidationVisitor#path for (self: ASTValidationVisitor): List[ANode] */ +val* nit___nit__ASTValidationVisitor___path(val* self) { +val* var /* : List[ANode] */; +val* var1 /* : List[ANode] */; +var1 = self->attrs[COLOR_nit__astvalidation__ASTValidationVisitor___path].val; /* _path on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__astvalidation, 29); +show_backtrace(1); +} +var = var1; +RET_LABEL:; +return var; +} +/* method astvalidation#ASTValidationVisitor#seen for (self: ASTValidationVisitor): HashSet[ANode] */ +val* nit___nit__ASTValidationVisitor___seen(val* self) { +val* var /* : HashSet[ANode] */; +val* var1 /* : HashSet[ANode] */; +var1 = self->attrs[COLOR_nit__astvalidation__ASTValidationVisitor___seen].val; /* _seen on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _seen"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__astvalidation, 30); +show_backtrace(1); +} +var = var1; +RET_LABEL:; +return var; +} +/* method astvalidation#ANode#accept_ast_validation for (self: ANode, ASTValidationVisitor) */ +void nit__astvalidation___ANode___accept_ast_validation(val* self, val* p0) { +val* var_v /* var v: ASTValidationVisitor */; +val* var /* : nullable ANode */; +val* var2 /* : nullable ANode */; +val* var_parent /* var parent: nullable ANode */; +val* var3 /* : List[ANode] */; +val* var5 /* : List[ANode] */; +long var6 /* : Int */; +long var7 /* : Int */; +short int var8 /* : Bool */; +short int var10 /* : Bool */; +int cltype; +int idtype; +const char* var_class_name; +short int var11 /* : Bool */; +val* var12 /* : List[ANode] */; +val* var14 /* : List[ANode] */; +long var15 /* : Int */; +val* var16 /* : nullable Object */; +val* var_path_parent /* var path_parent: ANode */; +val* var17 /* : null */; +short int var18 /* : Bool */; +short int var19 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var21 /* : Bool */; +short int var23 /* : Bool */; +short int var25 /* : Bool */; +val* var_other27 /* var other: nullable Object */; +short int var28 /* : Bool */; +short int var29 /* : Bool */; +static val* varonce; +val* var31 /* : String */; +char* var32 /* : NativeString */; +long var33 /* : Int */; +val* var34 /* : FlatString */; +static val* varonce35; +val* var36 /* : String */; +char* var37 /* : NativeString */; +long var38 /* : Int */; +val* var39 /* : FlatString */; +val* var40 /* : Array[Object] */; +long var41 /* : Int */; +val* var42 /* : NativeArray[Object] */; +val* var43 /* : String */; +val* var44 /* : HashSet[ANode] */; +val* var46 /* : HashSet[ANode] */; +short int var47 /* : Bool */; +static val* varonce48; +val* var49 /* : String */; +char* var50 /* : NativeString */; +long var51 /* : Int */; +val* var52 /* : FlatString */; +val* var53 /* : HashSet[ANode] */; +val* var55 /* : HashSet[ANode] */; +short int var56 /* : Bool */; +short int var57 /* : Bool */; +val* var58 /* : nullable ANode */; +val* var60 /* : nullable ANode */; +val* var61 /* : Location */; +val* var63 /* : Location */; +var_v = p0; +{ +{ /* Inline parser_nodes#ANode#parent (self) on */ +var2 = self->attrs[COLOR_nit__parser_nodes__ANode___parent].val; /* _parent on */ +var = var2; +RET_LABEL1:(void)0; +} +} +var_parent = var; +{ +{ /* Inline astvalidation#ASTValidationVisitor#path (var_v) on */ +var5 = var_v->attrs[COLOR_nit__astvalidation__ASTValidationVisitor___path].val; /* _path on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__astvalidation, 29); +show_backtrace(1); +} +var3 = var5; +RET_LABEL4:(void)0; +} +} +{ +var6 = standard___standard__List___standard__abstract_collection__Collection__length(var3); +} +var7 = 1; +{ +{ /* Inline kernel#Int#> (var6,var7) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var10 = 1; /* easy isa OTHER*/ +if (unlikely(!var10)) { +var_class_name = type_standard__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 412); +show_backtrace(1); +} +var11 = var6 > var7; +var8 = var11; +goto RET_LABEL9; +RET_LABEL9:(void)0; +} +} +if (var8){ +{ +{ /* Inline astvalidation#ASTValidationVisitor#path (var_v) on */ +var14 = var_v->attrs[COLOR_nit__astvalidation__ASTValidationVisitor___path].val; /* _path on */ +if (unlikely(var14 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__astvalidation, 29); +show_backtrace(1); +} +var12 = var14; +RET_LABEL13:(void)0; +} +} +var15 = 1; +{ +var16 = standard___standard__List___standard__abstract_collection__SequenceRead___91d_93d(var12, var15); +} +var_path_parent = var16; +var17 = NULL; +if (var_parent == NULL) { +var18 = 1; /* is null */ +} else { +var18 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_parent,var17) on */ +var_other = var17; +{ +{ /* Inline kernel#Object#is_same_instance (var_parent,var_other) on */ +var23 = var_parent == var_other; +var21 = var23; +goto RET_LABEL22; +RET_LABEL22:(void)0; +} +} +var19 = var21; +goto RET_LABEL20; +RET_LABEL20:(void)0; +} +var18 = var19; +} +if (var18){ +{ +{ /* Inline parser_nodes#ANode#parent= (self,var_path_parent) on */ +self->attrs[COLOR_nit__parser_nodes__ANode___parent].val = var_path_parent; /* _parent on */ +RET_LABEL24:(void)0; +} +} +} else { +{ +{ /* Inline kernel#Object#!= (var_parent,var_path_parent) on */ +var_other27 = var_path_parent; +{ +var28 = ((short int (*)(val* self, val* p0))(var_parent->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_parent, var_other27) /* == on */; +} +var29 = !var28; +var25 = var29; +goto RET_LABEL26; +RET_LABEL26:(void)0; +} +} +if (var25){ +{ +{ /* Inline parser_nodes#ANode#parent= (self,var_path_parent) on */ +self->attrs[COLOR_nit__parser_nodes__ANode___parent].val = var_path_parent; /* _parent on */ +RET_LABEL30:(void)0; +} +} +if (varonce) { +var31 = varonce; +} else { +var32 = "PARENT: expected parent: "; +var33 = 25; +var34 = standard___standard__NativeString___to_s_with_length(var32, var33); +var31 = var34; +varonce = var31; +} +if (varonce35) { +var36 = varonce35; +} else { +var37 = ", got "; +var38 = 6; +var39 = standard___standard__NativeString___to_s_with_length(var37, var38); +var36 = var39; +varonce35 = var36; +} +var40 = NEW_standard__Array(&type_standard__Array__standard__Object); +{ /* var40 = array_instance Array[Object] */ +var41 = 4; +var42 = NEW_standard__NativeArray(var41, &type_standard__NativeArray__standard__Object); +((struct instance_standard__NativeArray*)var42)->values[0] = (val*) var31; +((struct instance_standard__NativeArray*)var42)->values[1] = (val*) var_path_parent; +((struct instance_standard__NativeArray*)var42)->values[2] = (val*) var36; +((struct instance_standard__NativeArray*)var42)->values[3] = (val*) var_parent; +{ +((void (*)(val* self, val* p0, long p1))(var40->class->vft[COLOR_standard__array__Array__with_native]))(var40, var42, var41) /* with_native on */; +} +} +{ +var43 = ((val* (*)(val* self))(var40->class->vft[COLOR_standard__string__Object__to_s]))(var40) /* to_s on */; +} +{ +nit___nit__ANode___debug(self, var43); /* Direct call parser_nodes#ANode#debug on */ +} +} else { +} +} +} else { +} +{ +{ /* Inline astvalidation#ASTValidationVisitor#seen (var_v) on */ +var46 = var_v->attrs[COLOR_nit__astvalidation__ASTValidationVisitor___seen].val; /* _seen on */ +if (unlikely(var46 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _seen"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__astvalidation, 30); +show_backtrace(1); +} +var44 = var46; +RET_LABEL45:(void)0; +} +} +{ +var47 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var44, self); +} +if (var47){ +if (varonce48) { +var49 = varonce48; +} else { +var50 = "DUPLICATE: already seen node. NOTATREE"; +var51 = 38; +var52 = standard___standard__NativeString___to_s_with_length(var50, var51); +var49 = var52; +varonce48 = var49; +} +{ +nit___nit__ANode___debug(self, var49); /* Direct call parser_nodes#ANode#debug on */ +} +} else { +} +{ +{ /* Inline astvalidation#ASTValidationVisitor#seen (var_v) on */ +var55 = var_v->attrs[COLOR_nit__astvalidation__ASTValidationVisitor___seen].val; /* _seen on */ +if (unlikely(var55 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _seen"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__astvalidation, 30); +show_backtrace(1); +} +var53 = var55; +RET_LABEL54:(void)0; +} +} +{ +standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var53, self); /* Direct call hash_collection#HashSet#add on */ +} +var56 = self->attrs[COLOR_nit__parser_nodes__ANode___location].val != NULL; /* _location on */ +var57 = !var56; +if (var57){ +{ +{ /* Inline parser_nodes#ANode#parent (self) on */ +var60 = self->attrs[COLOR_nit__parser_nodes__ANode___parent].val; /* _parent on */ +var58 = var60; +RET_LABEL59:(void)0; +} +} +if (var58 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__astvalidation, 56); +show_backtrace(1); +} else { +{ /* Inline parser_nodes#ANode#location (var58) on */ +if (unlikely(var58 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 23); +show_backtrace(1); +} +var63 = var58->attrs[COLOR_nit__parser_nodes__ANode___location].val; /* _location on */ +if (unlikely(var63 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 23); +show_backtrace(1); +} +var61 = var63; +RET_LABEL62:(void)0; +} +} +self->attrs[COLOR_nit__parser_nodes__ANode___location].val = var61; /* _location on */ +} else { +} +{ +((void (*)(val* self, val* p0))(self->class->vft[COLOR_nit__parser_nodes__ANode__visit_all]))(self, var_v) /* visit_all on */; +} +RET_LABEL:; +} +/* method astvalidation#AAnnotations#accept_ast_validation for (self: AAnnotations, ASTValidationVisitor) */ +void nit__astvalidation___AAnnotations___ANode__accept_ast_validation(val* self, val* p0) { +val* var_v /* var v: ASTValidationVisitor */; +var_v = p0; +RET_LABEL:; +} +/* method astvalidation#AExpr#accept_ast_validation for (self: AExpr, ASTValidationVisitor) */ +void nit__astvalidation___AExpr___ANode__accept_ast_validation(val* self, val* p0) { +val* var_v /* var v: ASTValidationVisitor */; +short int var /* : Bool */; +val* var1 /* : nullable MType */; +val* var2 /* : null */; +short int var3 /* : Bool */; +short int var4 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var6 /* : Bool */; +short int var8 /* : Bool */; +short int var_ /* var : Bool */; +short int var9 /* : Bool */; +short int var11 /* : Bool */; +short int var12 /* : Bool */; +static val* varonce; +val* var13 /* : String */; +char* var14 /* : NativeString */; +long var15 /* : Int */; +val* var16 /* : FlatString */; +var_v = p0; +{ +((void (*)(val* self, val* p0))(self->class->vft[COLOR_nit__astvalidation___AExpr___ANode__accept_ast_validation]))(self, p0) /* accept_ast_validation on */; +} +{ +var1 = ((val* (*)(val* self))(self->class->vft[COLOR_nit__typing__AExpr__mtype]))(self) /* mtype on */; +} +var2 = NULL; +if (var1 == NULL) { +var3 = 1; /* is null */ +} else { +var3 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var1,var2) on */ +var_other = var2; +{ +{ /* Inline kernel#Object#is_same_instance (var1,var_other) on */ +var8 = var1 == var_other; +var6 = var8; +goto RET_LABEL7; +RET_LABEL7:(void)0; +} +} +var4 = var6; +goto RET_LABEL5; +RET_LABEL5:(void)0; +} +var3 = var4; +} +var_ = var3; +if (var3){ +{ +{ /* Inline typing#AExpr#is_typed (self) on */ +var11 = self->attrs[COLOR_nit__typing__AExpr___is_typed].s; /* _is_typed on */ +var9 = var11; +RET_LABEL10:(void)0; +} +} +var12 = !var9; +var = var12; +} else { +var = var_; +} +if (var){ +if (varonce) { +var13 = varonce; +} else { +var14 = "TYPING: untyped expression"; +var15 = 26; +var16 = standard___standard__NativeString___to_s_with_length(var14, var15); +var13 = var16; +varonce = var13; +} +{ +nit___nit__ANode___debug(self, var13); /* Direct call parser_nodes#ANode#debug on */ +} +} else { +} +RET_LABEL:; +} +/* method astvalidation#APlaceholderExpr#accept_ast_validation for (self: APlaceholderExpr, ASTValidationVisitor) */ +void nit__astvalidation___APlaceholderExpr___ANode__accept_ast_validation(val* self, val* p0) { +val* var_v /* var v: ASTValidationVisitor */; +static val* varonce; +val* var /* : String */; +char* var1 /* : NativeString */; +long var2 /* : Int */; +val* var3 /* : FlatString */; +var_v = p0; +{ +((void (*)(val* self, val* p0))(self->class->vft[COLOR_nit__astvalidation___APlaceholderExpr___ANode__accept_ast_validation]))(self, p0) /* accept_ast_validation on */; +} +if (varonce) { +var = varonce; +} else { +var1 = "PARENT: remaining placeholder"; +var2 = 29; +var3 = standard___standard__NativeString___to_s_with_length(var1, var2); +var = var3; +varonce = var; +} +{ +nit___nit__ANode___debug(self, var); /* Direct call parser_nodes#ANode#debug on */ +} +RET_LABEL:; +}