c_src: update
[nit.git] / c_src / astvalidation.sep.1.c
index 3a72335..968ae99 100644 (file)
@@ -3,30 +3,60 @@
 void astvalidation__ASTValidationVisitor__visit(val* self, val* p0) {
 val* var_node /* var node: ANode */;
 val* var /* : List[ANode] */;
-val* var1 /* : List[ANode] */;
-val* var2 /* : nullable Object */;
+val* var2 /* : List[ANode] */;
+val* var3 /* : List[ANode] */;
+val* var5 /* : List[ANode] */;
+val* var6 /* : nullable Object */;
 var_node = p0;
-var = ((val* (*)(val*))(self->class->vft[COLOR_astvalidation__ASTValidationVisitor__path]))(self) /* path on <self:ASTValidationVisitor>*/;
-((void (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__Sequence__unshift]))(var, var_node) /* unshift on <var:List[ANode]>*/;
+{
+{ /* Inline astvalidation#ASTValidationVisitor#path (self) on <self:ASTValidationVisitor> */
+var2 = self->attrs[COLOR_astvalidation__ASTValidationVisitor___path].val; /* _path on <self:ASTValidationVisitor> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
+PRINT_ERROR(" (%s:%d)\n", "src/astvalidation.nit", 30);
+show_backtrace(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+{
+list__List__unshift(var, var_node); /* Direct call list#List#unshift on <var:List[ANode]>*/
+}
+{
 ((void (*)(val*, val*))(var_node->class->vft[COLOR_astvalidation__ANode__accept_ast_validation]))(var_node, self) /* accept_ast_validation on <var_node:ANode>*/;
-var1 = ((val* (*)(val*))(self->class->vft[COLOR_astvalidation__ASTValidationVisitor__path]))(self) /* path on <self:ASTValidationVisitor>*/;
-var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Sequence__shift]))(var1) /* shift on <var1:List[ANode]>*/;
-var2;
+}
+{
+{ /* Inline astvalidation#ASTValidationVisitor#path (self) on <self:ASTValidationVisitor> */
+var5 = self->attrs[COLOR_astvalidation__ASTValidationVisitor___path].val; /* _path on <self:ASTValidationVisitor> */
+if (unlikely(var5 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
+PRINT_ERROR(" (%s:%d)\n", "src/astvalidation.nit", 30);
+show_backtrace(1);
+}
+var3 = var5;
+RET_LABEL4:(void)0;
+}
+}
+{
+var6 = list__List__shift(var3);
+}
+var6;
 RET_LABEL:;
 }
 /* method astvalidation#ASTValidationVisitor#visit for (self: Object, ANode) */
 void VIRTUAL_astvalidation__ASTValidationVisitor__visit(val* self, val* p0) {
-astvalidation__ASTValidationVisitor__visit(self, p0);
+astvalidation__ASTValidationVisitor__visit(self, p0); /* Direct call astvalidation#ASTValidationVisitor#visit on <self:Object(ASTValidationVisitor)>*/
 RET_LABEL:;
 }
 /* method astvalidation#ASTValidationVisitor#path for (self: ASTValidationVisitor): List[ANode] */
 val* astvalidation__ASTValidationVisitor__path(val* self) {
 val* var /* : List[ANode] */;
 val* var1 /* : List[ANode] */;
-var1 = self->attrs[COLOR_astvalidation__ASTValidationVisitor___64dpath].val; /* @path on <self:ASTValidationVisitor> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @path");
-fprintf(stderr, " (%s:%d)\n", "src/astvalidation.nit", 30);
+var1 = self->attrs[COLOR_astvalidation__ASTValidationVisitor___path].val; /* _path on <self:ASTValidationVisitor> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
+PRINT_ERROR(" (%s:%d)\n", "src/astvalidation.nit", 30);
 show_backtrace(1);
 }
 var = var1;
@@ -37,29 +67,29 @@ return var;
 val* VIRTUAL_astvalidation__ASTValidationVisitor__path(val* self) {
 val* var /* : List[ANode] */;
 val* var1 /* : List[ANode] */;
-var1 = astvalidation__ASTValidationVisitor__path(self);
-var = var1;
-RET_LABEL:;
-return var;
+val* var3 /* : List[ANode] */;
+{ /* Inline astvalidation#ASTValidationVisitor#path (self) on <self:Object(ASTValidationVisitor)> */
+var3 = self->attrs[COLOR_astvalidation__ASTValidationVisitor___path].val; /* _path on <self:Object(ASTValidationVisitor)> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
+PRINT_ERROR(" (%s:%d)\n", "src/astvalidation.nit", 30);
+show_backtrace(1);
 }
-/* method astvalidation#ASTValidationVisitor#path= for (self: ASTValidationVisitor, List[ANode]) */
-void astvalidation__ASTValidationVisitor__path_61d(val* self, val* p0) {
-self->attrs[COLOR_astvalidation__ASTValidationVisitor___64dpath].val = p0; /* @path on <self:ASTValidationVisitor> */
-RET_LABEL:;
+var1 = var3;
+RET_LABEL2:(void)0;
 }
-/* method astvalidation#ASTValidationVisitor#path= for (self: Object, List[ANode]) */
-void VIRTUAL_astvalidation__ASTValidationVisitor__path_61d(val* self, val* p0) {
-astvalidation__ASTValidationVisitor__path_61d(self, p0);
+var = var1;
 RET_LABEL:;
+return var;
 }
 /* method astvalidation#ASTValidationVisitor#seen for (self: ASTValidationVisitor): HashSet[ANode] */
 val* astvalidation__ASTValidationVisitor__seen(val* self) {
 val* var /* : HashSet[ANode] */;
 val* var1 /* : HashSet[ANode] */;
-var1 = self->attrs[COLOR_astvalidation__ASTValidationVisitor___64dseen].val; /* @seen on <self:ASTValidationVisitor> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @seen");
-fprintf(stderr, " (%s:%d)\n", "src/astvalidation.nit", 31);
+var1 = self->attrs[COLOR_astvalidation__ASTValidationVisitor___seen].val; /* _seen on <self:ASTValidationVisitor> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _seen");
+PRINT_ERROR(" (%s:%d)\n", "src/astvalidation.nit", 31);
 show_backtrace(1);
 }
 var = var1;
@@ -70,194 +100,320 @@ return var;
 val* VIRTUAL_astvalidation__ASTValidationVisitor__seen(val* self) {
 val* var /* : HashSet[ANode] */;
 val* var1 /* : HashSet[ANode] */;
-var1 = astvalidation__ASTValidationVisitor__seen(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method astvalidation#ASTValidationVisitor#seen= for (self: ASTValidationVisitor, HashSet[ANode]) */
-void astvalidation__ASTValidationVisitor__seen_61d(val* self, val* p0) {
-self->attrs[COLOR_astvalidation__ASTValidationVisitor___64dseen].val = p0; /* @seen on <self:ASTValidationVisitor> */
-RET_LABEL:;
+val* var3 /* : HashSet[ANode] */;
+{ /* Inline astvalidation#ASTValidationVisitor#seen (self) on <self:Object(ASTValidationVisitor)> */
+var3 = self->attrs[COLOR_astvalidation__ASTValidationVisitor___seen].val; /* _seen on <self:Object(ASTValidationVisitor)> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _seen");
+PRINT_ERROR(" (%s:%d)\n", "src/astvalidation.nit", 31);
+show_backtrace(1);
 }
-/* method astvalidation#ASTValidationVisitor#seen= for (self: Object, HashSet[ANode]) */
-void VIRTUAL_astvalidation__ASTValidationVisitor__seen_61d(val* self, val* p0) {
-astvalidation__ASTValidationVisitor__seen_61d(self, p0);
-RET_LABEL:;
+var1 = var3;
+RET_LABEL2:(void)0;
 }
-/* method astvalidation#ASTValidationVisitor#init for (self: ASTValidationVisitor) */
-void astvalidation__ASTValidationVisitor__init(val* self) {
-((void (*)(val*))(self->class->vft[COLOR_parser_nodes__Visitor__init]))(self) /* init on <self:ASTValidationVisitor>*/;
-RET_LABEL:;
-}
-/* method astvalidation#ASTValidationVisitor#init for (self: Object) */
-void VIRTUAL_astvalidation__ASTValidationVisitor__init(val* self) {
-astvalidation__ASTValidationVisitor__init(self);
+var = var1;
 RET_LABEL:;
+return var;
 }
 /* method astvalidation#ANode#accept_ast_validation for (self: ANode, ASTValidationVisitor) */
 void 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* var1 /* : List[ANode] */;
-long var2 /* : Int */;
-long var3 /* : Int */;
-short int var4 /* : Bool */;
-short int var6 /* : Bool */;
+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 var7 /* : Bool */;
-val* var8 /* : List[ANode] */;
-long var9 /* : Int */;
-val* var10 /* : nullable Object */;
+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* var11 /* : null */;
-short int var12 /* : Bool */;
-short int var13 /* : Bool */;
+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 */;
+short int var26 /* : Bool */;
+val* var_other28 /* var other: nullable Object */;
+short int var29 /* : Bool */;
+short int var30 /* : Bool */;
+short int var31 /* : Bool */;
 static val* varonce;
-val* var14 /* : String */;
-char* var15 /* : NativeString */;
-long var16 /* : Int */;
-val* var17 /* : String */;
-static val* varonce18;
-val* var19 /* : String */;
-char* var20 /* : NativeString */;
-long var21 /* : Int */;
-val* var22 /* : String */;
-val* var23 /* : Array[Object] */;
-long var24 /* : Int */;
-val* var25 /* : NativeArray[Object] */;
-val* var26 /* : String */;
-val* var27 /* : HashSet[ANode] */;
-short int var28 /* : Bool */;
-static val* varonce29;
-val* var30 /* : String */;
-char* var31 /* : NativeString */;
-long var32 /* : Int */;
 val* var33 /* : String */;
-val* var34 /* : HashSet[ANode] */;
-val* var35 /* : nullable Location */;
-val* var36 /* : null */;
-short int var37 /* : Bool */;
-val* var38 /* : nullable ANode */;
-val* var39 /* : Location */;
+char* var34 /* : NativeString */;
+long var35 /* : Int */;
+val* var36 /* : FlatString */;
+static val* varonce37;
+val* var38 /* : String */;
+char* var39 /* : NativeString */;
+long var40 /* : Int */;
+val* var41 /* : FlatString */;
+val* var42 /* : Array[Object] */;
+long var43 /* : Int */;
+val* var44 /* : NativeArray[Object] */;
+val* var45 /* : String */;
+val* var46 /* : HashSet[ANode] */;
+val* var48 /* : HashSet[ANode] */;
+short int var49 /* : Bool */;
+static val* varonce50;
+val* var51 /* : String */;
+char* var52 /* : NativeString */;
+long var53 /* : Int */;
+val* var54 /* : FlatString */;
+val* var55 /* : HashSet[ANode] */;
+val* var57 /* : HashSet[ANode] */;
+val* var58 /* : nullable Location */;
+val* var59 /* : null */;
+short int var60 /* : Bool */;
+short int var61 /* : Bool */;
+val* var62 /* : nullable ANode */;
+val* var64 /* : nullable ANode */;
+val* var65 /* : Location */;
 var_v = p0;
-var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__parent]))(self) /* parent on <self:ANode>*/;
+{
+{ /* Inline parser_nodes#ANode#parent (self) on <self:ANode> */
+var2 = self->attrs[COLOR_parser_nodes__ANode___parent].val; /* _parent on <self:ANode> */
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
 var_parent = var;
-var1 = ((val* (*)(val*))(var_v->class->vft[COLOR_astvalidation__ASTValidationVisitor__path]))(var_v) /* path on <var_v:ASTValidationVisitor>*/;
-var2 = ((long (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__length]))(var1) /* length on <var1:List[ANode]>*/;
-var3 = 1;
-{ /* Inline kernel#Int#> (var2,var3) */
-/* Covariant cast for argument 0 (i) <var3:Int> isa OTHER */
-/* <var3:Int> isa OTHER */
-var6 = 1; /* easy <var3:Int> isa OTHER*/
-if (!var6) {
+{
+{ /* Inline astvalidation#ASTValidationVisitor#path (var_v) on <var_v:ASTValidationVisitor> */
+var5 = var_v->attrs[COLOR_astvalidation__ASTValidationVisitor___path].val; /* _path on <var_v:ASTValidationVisitor> */
+if (unlikely(var5 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
+PRINT_ERROR(" (%s:%d)\n", "src/astvalidation.nit", 30);
+show_backtrace(1);
+}
+var3 = var5;
+RET_LABEL4:(void)0;
+}
+}
+{
+var6 = list__List__length(var3);
+}
+var7 = 1;
+{
+{ /* Inline kernel#Int#> (var6,var7) on <var6:Int> */
+/* Covariant cast for argument 0 (i) <var7:Int> isa OTHER */
+/* <var7:Int> isa OTHER */
+var10 = 1; /* easy <var7:Int> isa OTHER*/
+if (unlikely(!var10)) {
 var_class_name = type_kernel__Int.name;
-fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 327);
 show_backtrace(1);
 }
-var7 = var2 > var3;
-var4 = var7;
-goto RET_LABEL5;
-RET_LABEL5:(void)0;
+var11 = var6 > var7;
+var8 = var11;
+goto RET_LABEL9;
+RET_LABEL9:(void)0;
+}
+}
+if (var8){
+{
+{ /* Inline astvalidation#ASTValidationVisitor#path (var_v) on <var_v:ASTValidationVisitor> */
+var14 = var_v->attrs[COLOR_astvalidation__ASTValidationVisitor___path].val; /* _path on <var_v:ASTValidationVisitor> */
+if (unlikely(var14 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
+PRINT_ERROR(" (%s:%d)\n", "src/astvalidation.nit", 30);
+show_backtrace(1);
+}
+var12 = var14;
+RET_LABEL13:(void)0;
 }
-if (var4){
-var8 = ((val* (*)(val*))(var_v->class->vft[COLOR_astvalidation__ASTValidationVisitor__path]))(var_v) /* path on <var_v:ASTValidationVisitor>*/;
-var9 = 1;
-var10 = ((val* (*)(val*, long))(var8->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var8, var9) /* [] on <var8:List[ANode]>*/;
-var_path_parent = var10;
-var11 = NULL;
+}
+var15 = 1;
+{
+var16 = list__List___91d_93d(var12, var15);
+}
+var_path_parent = var16;
+var17 = NULL;
 if (var_parent == NULL) {
-var12 = 1; /* is null */
+var18 = 1; /* is null */
 } else {
-var12 = 0; /* arg is null but recv is not */
+var18 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_parent,var17) on <var_parent:nullable ANode> */
+var_other = var17;
+{
+{ /* Inline kernel#Object#is_same_instance (var_parent,var_other) on <var_parent:nullable ANode(ANode)> */
+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:ANode> */
+self->attrs[COLOR_parser_nodes__ANode___parent].val = var_path_parent; /* _parent on <self:ANode> */
+RET_LABEL24:(void)0;
+}
 }
-if (var12){
-((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(self, var_path_parent) /* parent= on <self:ANode>*/;
 } else {
-var13 = ((short int (*)(val*, val*))(var_parent->class->vft[COLOR_kernel__Object___33d_61d]))(var_parent, var_path_parent) /* != on <var_parent:nullable ANode(ANode)>*/;
-if (var13){
-((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(self, var_path_parent) /* parent= on <self:ANode>*/;
+{
+{ /* Inline kernel#Object#!= (var_parent,var_path_parent) on <var_parent:nullable ANode(ANode)> */
+var_other28 = var_path_parent;
+{
+var30 = ((short int (*)(val*, val*))(var_parent->class->vft[COLOR_kernel__Object___61d_61d]))(var_parent, var_other28) /* == on <var_parent:nullable ANode(ANode)>*/;
+var29 = var30;
+}
+var31 = !var29;
+var26 = var31;
+goto RET_LABEL27;
+RET_LABEL27:(void)0;
+}
+var25 = var26;
+}
+if (var25){
+{
+{ /* Inline parser_nodes#ANode#parent= (self,var_path_parent) on <self:ANode> */
+self->attrs[COLOR_parser_nodes__ANode___parent].val = var_path_parent; /* _parent on <self:ANode> */
+RET_LABEL32:(void)0;
+}
+}
 if (varonce) {
-var14 = varonce;
+var33 = varonce;
 } else {
-var15 = "PARENT: expected parent: ";
-var16 = 25;
-var17 = string__NativeString__to_s_with_length(var15, var16);
-var14 = var17;
-varonce = var14;
-}
-if (varonce18) {
-var19 = varonce18;
+var34 = "PARENT: expected parent: ";
+var35 = 25;
+var36 = string__NativeString__to_s_with_length(var34, var35);
+var33 = var36;
+varonce = var33;
+}
+if (varonce37) {
+var38 = varonce37;
 } else {
-var20 = ", got ";
-var21 = 6;
-var22 = string__NativeString__to_s_with_length(var20, var21);
-var19 = var22;
-varonce18 = var19;
-}
-var23 = NEW_array__Array(&type_array__Arraykernel__Object);
-{ /* var23 = array_instance Array[Object] */
-var24 = 4;
-var25 = NEW_array__NativeArray(var24, &type_array__NativeArraykernel__Object);
-((struct instance_array__NativeArray*)var25)->values[0] = (val*) var14;
-((struct instance_array__NativeArray*)var25)->values[1] = (val*) var_path_parent;
-((struct instance_array__NativeArray*)var25)->values[2] = (val*) var19;
-((struct instance_array__NativeArray*)var25)->values[3] = (val*) var_parent;
-((void (*)(val*, val*, long))(var23->class->vft[COLOR_array__Array__with_native]))(var23, var25, var24) /* with_native on <var23:Array[Object]>*/;
-}
-var26 = ((val* (*)(val*))(var23->class->vft[COLOR_string__Object__to_s]))(var23) /* to_s on <var23:Array[Object]>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__debug]))(self, var26) /* debug on <self:ANode>*/;
+var39 = ", got ";
+var40 = 6;
+var41 = string__NativeString__to_s_with_length(var39, var40);
+var38 = var41;
+varonce37 = var38;
+}
+var42 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var42 = array_instance Array[Object] */
+var43 = 4;
+var44 = NEW_array__NativeArray(var43, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var44)->values[0] = (val*) var33;
+((struct instance_array__NativeArray*)var44)->values[1] = (val*) var_path_parent;
+((struct instance_array__NativeArray*)var44)->values[2] = (val*) var38;
+((struct instance_array__NativeArray*)var44)->values[3] = (val*) var_parent;
+{
+((void (*)(val*, val*, long))(var42->class->vft[COLOR_array__Array__with_native]))(var42, var44, var43) /* with_native on <var42:Array[Object]>*/;
+}
+}
+{
+var45 = ((val* (*)(val*))(var42->class->vft[COLOR_string__Object__to_s]))(var42) /* to_s on <var42:Array[Object]>*/;
+}
+{
+parser_nodes__ANode__debug(self, var45); /* Direct call parser_nodes#ANode#debug on <self:ANode>*/
+}
 } else {
 }
 }
 } else {
 }
-var27 = ((val* (*)(val*))(var_v->class->vft[COLOR_astvalidation__ASTValidationVisitor__seen]))(var_v) /* seen on <var_v:ASTValidationVisitor>*/;
-var28 = ((short int (*)(val*, val*))(var27->class->vft[COLOR_abstract_collection__Collection__has]))(var27, self) /* has on <var27:HashSet[ANode]>*/;
-if (var28){
-if (varonce29) {
-var30 = varonce29;
+{
+{ /* Inline astvalidation#ASTValidationVisitor#seen (var_v) on <var_v:ASTValidationVisitor> */
+var48 = var_v->attrs[COLOR_astvalidation__ASTValidationVisitor___seen].val; /* _seen on <var_v:ASTValidationVisitor> */
+if (unlikely(var48 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _seen");
+PRINT_ERROR(" (%s:%d)\n", "src/astvalidation.nit", 31);
+show_backtrace(1);
+}
+var46 = var48;
+RET_LABEL47:(void)0;
+}
+}
+{
+var49 = hash_collection__HashSet__has(var46, self);
+}
+if (var49){
+if (varonce50) {
+var51 = varonce50;
 } else {
-var31 = "DUPLICATE: already seen node. NOTATREE";
-var32 = 38;
-var33 = string__NativeString__to_s_with_length(var31, var32);
-var30 = var33;
-varonce29 = var30;
+var52 = "DUPLICATE: already seen node. NOTATREE";
+var53 = 38;
+var54 = string__NativeString__to_s_with_length(var52, var53);
+var51 = var54;
+varonce50 = var51;
+}
+{
+parser_nodes__ANode__debug(self, var51); /* Direct call parser_nodes#ANode#debug on <self:ANode>*/
 }
-((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__debug]))(self, var30) /* debug on <self:ANode>*/;
 } else {
 }
-var34 = ((val* (*)(val*))(var_v->class->vft[COLOR_astvalidation__ASTValidationVisitor__seen]))(var_v) /* seen on <var_v:ASTValidationVisitor>*/;
-((void (*)(val*, val*))(var34->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var34, self) /* add on <var34:HashSet[ANode]>*/;
-var35 = self->attrs[COLOR_parser_nodes__ANode___location].val; /* _location on <self:ANode> */
-var36 = NULL;
-if (var35 == NULL) {
-var37 = 1; /* is null */
+{
+{ /* Inline astvalidation#ASTValidationVisitor#seen (var_v) on <var_v:ASTValidationVisitor> */
+var57 = var_v->attrs[COLOR_astvalidation__ASTValidationVisitor___seen].val; /* _seen on <var_v:ASTValidationVisitor> */
+if (unlikely(var57 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _seen");
+PRINT_ERROR(" (%s:%d)\n", "src/astvalidation.nit", 31);
+show_backtrace(1);
+}
+var55 = var57;
+RET_LABEL56:(void)0;
+}
+}
+{
+hash_collection__HashSet__add(var55, self); /* Direct call hash_collection#HashSet#add on <var55:HashSet[ANode]>*/
+}
+var58 = self->attrs[COLOR_parser_nodes__ANode___location].val; /* _location on <self:ANode> */
+var59 = NULL;
+if (var58 == NULL) {
+var60 = 1; /* is null */
 } else {
-var37 = 0; /* arg is null but recv is not */
+var60 = 0; /* arg is null but recv is not */
 }
-if (var37){
-var38 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__parent]))(self) /* parent on <self:ANode>*/;
-if (var38 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/astvalidation.nit", 57);
+if (0) {
+var61 = location__Location___61d_61d(var58, var59);
+var60 = var61;
+}
+if (var60){
+{
+{ /* Inline parser_nodes#ANode#parent (self) on <self:ANode> */
+var64 = self->attrs[COLOR_parser_nodes__ANode___parent].val; /* _parent on <self:ANode> */
+var62 = var64;
+RET_LABEL63:(void)0;
+}
+}
+if (var62 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "src/astvalidation.nit", 57);
 show_backtrace(1);
 } else {
-var39 = ((val* (*)(val*))(var38->class->vft[COLOR_parser_nodes__ANode__location]))(var38) /* location on <var38:nullable ANode>*/;
+var65 = parser_nodes__ANode__location(var62);
 }
-self->attrs[COLOR_parser_nodes__ANode___location].val = var39; /* _location on <self:ANode> */
+self->attrs[COLOR_parser_nodes__ANode___location].val = var65; /* _location on <self:ANode> */
 } else {
 }
+{
 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__visit_all]))(self, var_v) /* visit_all on <self:ANode>*/;
+}
 RET_LABEL:;
 }
 /* method astvalidation#ANode#accept_ast_validation for (self: Object, ASTValidationVisitor) */
 void VIRTUAL_astvalidation__ANode__accept_ast_validation(val* self, val* p0) {
-astvalidation__ANode__accept_ast_validation(self, p0);
+astvalidation__ANode__accept_ast_validation(self, p0); /* Direct call astvalidation#ANode#accept_ast_validation on <self:Object(ANode)>*/
 RET_LABEL:;
 }
 /* method astvalidation#AAnnotations#accept_ast_validation for (self: AAnnotations, ASTValidationVisitor) */
@@ -268,7 +424,11 @@ RET_LABEL:;
 }
 /* method astvalidation#AAnnotations#accept_ast_validation for (self: Object, ASTValidationVisitor) */
 void VIRTUAL_astvalidation__AAnnotations__accept_ast_validation(val* self, val* p0) {
-astvalidation__AAnnotations__accept_ast_validation(self, p0);
+val* var_v /* var v: ASTValidationVisitor */;
+{ /* Inline astvalidation#AAnnotations#accept_ast_validation (self,p0) on <self:Object(AAnnotations)> */
+var_v = p0;
+RET_LABEL1:(void)0;
+}
 RET_LABEL:;
 }
 /* method astvalidation#AExpr#accept_ast_validation for (self: AExpr, ASTValidationVisitor) */
@@ -278,49 +438,83 @@ short int var /* : Bool */;
 val* var1 /* : nullable MType */;
 val* var2 /* : null */;
 short int var3 /* : Bool */;
-short int var_ /* var : Bool */;
 short int var4 /* : Bool */;
-short int var5 /* : 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* var6 /* : String */;
-char* var7 /* : NativeString */;
-long var8 /* : Int */;
-val* var9 /* : String */;
+val* var13 /* : String */;
+char* var14 /* : NativeString */;
+long var15 /* : Int */;
+val* var16 /* : FlatString */;
 var_v = p0;
+{
 ((void (*)(val*, val*))(self->class->vft[COLOR_astvalidation__AExpr__accept_ast_validation]))(self, p0) /* accept_ast_validation on <self:AExpr>*/;
+}
+{
 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AExpr>*/;
+}
 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 <var1:nullable MType> */
+var_other = var2;
+{
+{ /* Inline kernel#Object#is_same_instance (var1,var_other) on <var1:nullable MType(MType)> */
+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){
-var4 = ((short int (*)(val*))(self->class->vft[COLOR_typing__AExpr__is_typed]))(self) /* is_typed on <self:AExpr>*/;
-var5 = !var4;
-var = var5;
+{
+{ /* Inline typing#AExpr#is_typed (self) on <self:AExpr> */
+var11 = self->attrs[COLOR_typing__AExpr___is_typed].s; /* _is_typed on <self:AExpr> */
+var9 = var11;
+RET_LABEL10:(void)0;
+}
+}
+var12 = !var9;
+var = var12;
 } else {
 var = var_;
 }
 if (var){
 if (varonce) {
-var6 = varonce;
+var13 = varonce;
 } else {
-var7 = "TYPING: untyped expression";
-var8 = 26;
-var9 = string__NativeString__to_s_with_length(var7, var8);
-var6 = var9;
-varonce = var6;
+var14 = "TYPING: untyped expression";
+var15 = 26;
+var16 = string__NativeString__to_s_with_length(var14, var15);
+var13 = var16;
+varonce = var13;
+}
+{
+parser_nodes__ANode__debug(self, var13); /* Direct call parser_nodes#ANode#debug on <self:AExpr>*/
 }
-((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__debug]))(self, var6) /* debug on <self:AExpr>*/;
 } else {
 }
 RET_LABEL:;
 }
 /* method astvalidation#AExpr#accept_ast_validation for (self: Object, ASTValidationVisitor) */
 void VIRTUAL_astvalidation__AExpr__accept_ast_validation(val* self, val* p0) {
-astvalidation__AExpr__accept_ast_validation(self, p0);
+astvalidation__AExpr__accept_ast_validation(self, p0); /* Direct call astvalidation#AExpr#accept_ast_validation on <self:Object(AExpr)>*/
 RET_LABEL:;
 }
 /* method astvalidation#APlaceholderExpr#accept_ast_validation for (self: APlaceholderExpr, ASTValidationVisitor) */
@@ -330,9 +524,11 @@ static val* varonce;
 val* var /* : String */;
 char* var1 /* : NativeString */;
 long var2 /* : Int */;
-val* var3 /* : String */;
+val* var3 /* : FlatString */;
 var_v = p0;
+{
 ((void (*)(val*, val*))(self->class->vft[COLOR_astvalidation__APlaceholderExpr__accept_ast_validation]))(self, p0) /* accept_ast_validation on <self:APlaceholderExpr>*/;
+}
 if (varonce) {
 var = varonce;
 } else {
@@ -342,11 +538,13 @@ var3 = string__NativeString__to_s_with_length(var1, var2);
 var = var3;
 varonce = var;
 }
-((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__debug]))(self, var) /* debug on <self:APlaceholderExpr>*/;
+{
+parser_nodes__ANode__debug(self, var); /* Direct call parser_nodes#ANode#debug on <self:APlaceholderExpr>*/
+}
 RET_LABEL:;
 }
 /* method astvalidation#APlaceholderExpr#accept_ast_validation for (self: Object, ASTValidationVisitor) */
 void VIRTUAL_astvalidation__APlaceholderExpr__accept_ast_validation(val* self, val* p0) {
-astvalidation__APlaceholderExpr__accept_ast_validation(self, p0);
+astvalidation__APlaceholderExpr__accept_ast_validation(self, p0); /* Direct call astvalidation#APlaceholderExpr#accept_ast_validation on <self:Object(APlaceholderExpr)>*/
 RET_LABEL:;
 }