tools: move run_global_phases/process_mainmodule into modelbuilder
[nit.git] / c_src / astvalidation.sep.1.c
1 #include "astvalidation.sep.0.h"
2 /* method astvalidation#ASTValidationVisitor#visit for (self: ASTValidationVisitor, ANode) */
3 void astvalidation__ASTValidationVisitor__visit(val* self, val* p0) {
4 val* var_node /* var node: ANode */;
5 val* var /* : List[ANode] */;
6 val* var1 /* : List[ANode] */;
7 val* var2 /* : nullable Object */;
8 var_node = p0;
9 var = ((val* (*)(val*))(self->class->vft[COLOR_astvalidation__ASTValidationVisitor__path]))(self) /* path on <self:ASTValidationVisitor>*/;
10 ((void (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__Sequence__unshift]))(var, var_node) /* unshift on <var:List[ANode]>*/;
11 ((void (*)(val*, val*))(var_node->class->vft[COLOR_astvalidation__ANode__accept_ast_validation]))(var_node, self) /* accept_ast_validation on <var_node:ANode>*/;
12 var1 = ((val* (*)(val*))(self->class->vft[COLOR_astvalidation__ASTValidationVisitor__path]))(self) /* path on <self:ASTValidationVisitor>*/;
13 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Sequence__shift]))(var1) /* shift on <var1:List[ANode]>*/;
14 var2;
15 RET_LABEL:;
16 }
17 /* method astvalidation#ASTValidationVisitor#visit for (self: Object, ANode) */
18 void VIRTUAL_astvalidation__ASTValidationVisitor__visit(val* self, val* p0) {
19 astvalidation__ASTValidationVisitor__visit(self, p0);
20 RET_LABEL:;
21 }
22 /* method astvalidation#ASTValidationVisitor#path for (self: ASTValidationVisitor): List[ANode] */
23 val* astvalidation__ASTValidationVisitor__path(val* self) {
24 val* var /* : List[ANode] */;
25 val* var1 /* : List[ANode] */;
26 var1 = self->attrs[COLOR_astvalidation__ASTValidationVisitor___64dpath].val; /* @path on <self:ASTValidationVisitor> */
27 if (var1 == NULL) {
28 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @path");
29 fprintf(stderr, " (%s:%d)\n", "src/astvalidation.nit", 30);
30 exit(1);
31 }
32 var = var1;
33 RET_LABEL:;
34 return var;
35 }
36 /* method astvalidation#ASTValidationVisitor#path for (self: Object): List[ANode] */
37 val* VIRTUAL_astvalidation__ASTValidationVisitor__path(val* self) {
38 val* var /* : List[ANode] */;
39 val* var1 /* : List[ANode] */;
40 var1 = astvalidation__ASTValidationVisitor__path(self);
41 var = var1;
42 RET_LABEL:;
43 return var;
44 }
45 /* method astvalidation#ASTValidationVisitor#path= for (self: ASTValidationVisitor, List[ANode]) */
46 void astvalidation__ASTValidationVisitor__path_61d(val* self, val* p0) {
47 self->attrs[COLOR_astvalidation__ASTValidationVisitor___64dpath].val = p0; /* @path on <self:ASTValidationVisitor> */
48 RET_LABEL:;
49 }
50 /* method astvalidation#ASTValidationVisitor#path= for (self: Object, List[ANode]) */
51 void VIRTUAL_astvalidation__ASTValidationVisitor__path_61d(val* self, val* p0) {
52 astvalidation__ASTValidationVisitor__path_61d(self, p0);
53 RET_LABEL:;
54 }
55 /* method astvalidation#ASTValidationVisitor#seen for (self: ASTValidationVisitor): HashSet[ANode] */
56 val* astvalidation__ASTValidationVisitor__seen(val* self) {
57 val* var /* : HashSet[ANode] */;
58 val* var1 /* : HashSet[ANode] */;
59 var1 = self->attrs[COLOR_astvalidation__ASTValidationVisitor___64dseen].val; /* @seen on <self:ASTValidationVisitor> */
60 if (var1 == NULL) {
61 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @seen");
62 fprintf(stderr, " (%s:%d)\n", "src/astvalidation.nit", 31);
63 exit(1);
64 }
65 var = var1;
66 RET_LABEL:;
67 return var;
68 }
69 /* method astvalidation#ASTValidationVisitor#seen for (self: Object): HashSet[ANode] */
70 val* VIRTUAL_astvalidation__ASTValidationVisitor__seen(val* self) {
71 val* var /* : HashSet[ANode] */;
72 val* var1 /* : HashSet[ANode] */;
73 var1 = astvalidation__ASTValidationVisitor__seen(self);
74 var = var1;
75 RET_LABEL:;
76 return var;
77 }
78 /* method astvalidation#ASTValidationVisitor#seen= for (self: ASTValidationVisitor, HashSet[ANode]) */
79 void astvalidation__ASTValidationVisitor__seen_61d(val* self, val* p0) {
80 self->attrs[COLOR_astvalidation__ASTValidationVisitor___64dseen].val = p0; /* @seen on <self:ASTValidationVisitor> */
81 RET_LABEL:;
82 }
83 /* method astvalidation#ASTValidationVisitor#seen= for (self: Object, HashSet[ANode]) */
84 void VIRTUAL_astvalidation__ASTValidationVisitor__seen_61d(val* self, val* p0) {
85 astvalidation__ASTValidationVisitor__seen_61d(self, p0);
86 RET_LABEL:;
87 }
88 /* method astvalidation#ASTValidationVisitor#init for (self: ASTValidationVisitor) */
89 void astvalidation__ASTValidationVisitor__init(val* self) {
90 ((void (*)(val*))(self->class->vft[COLOR_parser_nodes__Visitor__init]))(self) /* init on <self:ASTValidationVisitor>*/;
91 RET_LABEL:;
92 }
93 /* method astvalidation#ASTValidationVisitor#init for (self: Object) */
94 void VIRTUAL_astvalidation__ASTValidationVisitor__init(val* self) {
95 astvalidation__ASTValidationVisitor__init(self);
96 RET_LABEL:;
97 }
98 /* method astvalidation#ANode#accept_ast_validation for (self: ANode, ASTValidationVisitor) */
99 void astvalidation__ANode__accept_ast_validation(val* self, val* p0) {
100 val* var_v /* var v: ASTValidationVisitor */;
101 val* var /* : nullable ANode */;
102 val* var_parent /* var parent: nullable ANode */;
103 val* var1 /* : List[ANode] */;
104 long var2 /* : Int */;
105 long var3 /* : Int */;
106 short int var4 /* : Bool */;
107 short int var6 /* : Bool */;
108 int cltype;
109 int idtype;
110 const char* var_class_name;
111 short int var7 /* : Bool */;
112 val* var8 /* : List[ANode] */;
113 long var9 /* : Int */;
114 val* var10 /* : nullable Object */;
115 val* var_path_parent /* var path_parent: ANode */;
116 val* var11 /* : null */;
117 short int var12 /* : Bool */;
118 short int var13 /* : Bool */;
119 static val* varonce;
120 val* var14 /* : String */;
121 char* var15 /* : NativeString */;
122 long var16 /* : Int */;
123 val* var17 /* : String */;
124 static val* varonce18;
125 val* var19 /* : String */;
126 char* var20 /* : NativeString */;
127 long var21 /* : Int */;
128 val* var22 /* : String */;
129 val* var23 /* : Array[Object] */;
130 long var24 /* : Int */;
131 val* var25 /* : NativeArray[Object] */;
132 val* var26 /* : String */;
133 val* var27 /* : HashSet[ANode] */;
134 short int var28 /* : Bool */;
135 static val* varonce29;
136 val* var30 /* : String */;
137 char* var31 /* : NativeString */;
138 long var32 /* : Int */;
139 val* var33 /* : String */;
140 val* var34 /* : HashSet[ANode] */;
141 val* var35 /* : nullable Location */;
142 val* var36 /* : null */;
143 short int var37 /* : Bool */;
144 val* var38 /* : nullable ANode */;
145 val* var39 /* : Location */;
146 var_v = p0;
147 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__parent]))(self) /* parent on <self:ANode>*/;
148 var_parent = var;
149 var1 = ((val* (*)(val*))(var_v->class->vft[COLOR_astvalidation__ASTValidationVisitor__path]))(var_v) /* path on <var_v:ASTValidationVisitor>*/;
150 var2 = ((long (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__length]))(var1) /* length on <var1:List[ANode]>*/;
151 var3 = 1;
152 { /* Inline kernel#Int#> (var2,var3) */
153 /* Covariant cast for argument 0 (i) <var3:Int> isa OTHER */
154 /* <var3:Int> isa OTHER */
155 var6 = 1; /* easy <var3:Int> isa OTHER*/
156 if (!var6) {
157 var_class_name = type_kernel__Int.name;
158 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
159 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
160 exit(1);
161 }
162 var7 = var2 > var3;
163 var4 = var7;
164 goto RET_LABEL5;
165 RET_LABEL5:(void)0;
166 }
167 if (var4){
168 var8 = ((val* (*)(val*))(var_v->class->vft[COLOR_astvalidation__ASTValidationVisitor__path]))(var_v) /* path on <var_v:ASTValidationVisitor>*/;
169 var9 = 1;
170 var10 = ((val* (*)(val*, long))(var8->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var8, var9) /* [] on <var8:List[ANode]>*/;
171 var_path_parent = var10;
172 var11 = NULL;
173 if (var_parent == NULL) {
174 var12 = 1; /* is null */
175 } else {
176 var12 = 0; /* arg is null but recv is not */
177 }
178 if (var12){
179 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(self, var_path_parent) /* parent= on <self:ANode>*/;
180 } else {
181 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)>*/;
182 if (var13){
183 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(self, var_path_parent) /* parent= on <self:ANode>*/;
184 if (varonce) {
185 var14 = varonce;
186 } else {
187 var15 = "PARENT: expected parent: ";
188 var16 = 25;
189 var17 = string__NativeString__to_s_with_length(var15, var16);
190 var14 = var17;
191 varonce = var14;
192 }
193 if (varonce18) {
194 var19 = varonce18;
195 } else {
196 var20 = ", got ";
197 var21 = 6;
198 var22 = string__NativeString__to_s_with_length(var20, var21);
199 var19 = var22;
200 varonce18 = var19;
201 }
202 var23 = NEW_array__Array(&type_array__Arraykernel__Object);
203 { /* var23 = array_instance Array[Object] */
204 var24 = 4;
205 var25 = NEW_array__NativeArray(var24, &type_array__NativeArraykernel__Object);
206 ((struct instance_array__NativeArray*)var25)->values[0] = (val*) var14;
207 ((struct instance_array__NativeArray*)var25)->values[1] = (val*) var_path_parent;
208 ((struct instance_array__NativeArray*)var25)->values[2] = (val*) var19;
209 ((struct instance_array__NativeArray*)var25)->values[3] = (val*) var_parent;
210 ((void (*)(val*, val*, long))(var23->class->vft[COLOR_array__Array__with_native]))(var23, var25, var24) /* with_native on <var23:Array[Object]>*/;
211 CHECK_NEW_array__Array(var23);
212 }
213 var26 = ((val* (*)(val*))(var23->class->vft[COLOR_string__Object__to_s]))(var23) /* to_s on <var23:Array[Object]>*/;
214 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__debug]))(self, var26) /* debug on <self:ANode>*/;
215 } else {
216 }
217 }
218 } else {
219 }
220 var27 = ((val* (*)(val*))(var_v->class->vft[COLOR_astvalidation__ASTValidationVisitor__seen]))(var_v) /* seen on <var_v:ASTValidationVisitor>*/;
221 var28 = ((short int (*)(val*, val*))(var27->class->vft[COLOR_abstract_collection__Collection__has]))(var27, self) /* has on <var27:HashSet[ANode]>*/;
222 if (var28){
223 if (varonce29) {
224 var30 = varonce29;
225 } else {
226 var31 = "DUPLICATE: already seen node. NOTATREE";
227 var32 = 38;
228 var33 = string__NativeString__to_s_with_length(var31, var32);
229 var30 = var33;
230 varonce29 = var30;
231 }
232 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__debug]))(self, var30) /* debug on <self:ANode>*/;
233 } else {
234 }
235 var34 = ((val* (*)(val*))(var_v->class->vft[COLOR_astvalidation__ASTValidationVisitor__seen]))(var_v) /* seen on <var_v:ASTValidationVisitor>*/;
236 ((void (*)(val*, val*))(var34->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var34, self) /* add on <var34:HashSet[ANode]>*/;
237 var35 = self->attrs[COLOR_parser_nodes__ANode___location].val; /* _location on <self:ANode> */
238 var36 = NULL;
239 if (var35 == NULL) {
240 var37 = 1; /* is null */
241 } else {
242 var37 = 0; /* arg is null but recv is not */
243 }
244 if (var37){
245 var38 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__parent]))(self) /* parent on <self:ANode>*/;
246 if (var38 == NULL) {
247 fprintf(stderr, "Runtime error: %s", "Reciever is null");
248 fprintf(stderr, " (%s:%d)\n", "src/astvalidation.nit", 57);
249 exit(1);
250 } else {
251 var39 = ((val* (*)(val*))(var38->class->vft[COLOR_parser_nodes__ANode__location]))(var38) /* location on <var38:nullable ANode>*/;
252 }
253 self->attrs[COLOR_parser_nodes__ANode___location].val = var39; /* _location on <self:ANode> */
254 } else {
255 }
256 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__visit_all]))(self, var_v) /* visit_all on <self:ANode>*/;
257 RET_LABEL:;
258 }
259 /* method astvalidation#ANode#accept_ast_validation for (self: Object, ASTValidationVisitor) */
260 void VIRTUAL_astvalidation__ANode__accept_ast_validation(val* self, val* p0) {
261 astvalidation__ANode__accept_ast_validation(self, p0);
262 RET_LABEL:;
263 }
264 /* method astvalidation#AAnnotations#accept_ast_validation for (self: AAnnotations, ASTValidationVisitor) */
265 void astvalidation__AAnnotations__accept_ast_validation(val* self, val* p0) {
266 val* var_v /* var v: ASTValidationVisitor */;
267 var_v = p0;
268 RET_LABEL:;
269 }
270 /* method astvalidation#AAnnotations#accept_ast_validation for (self: Object, ASTValidationVisitor) */
271 void VIRTUAL_astvalidation__AAnnotations__accept_ast_validation(val* self, val* p0) {
272 astvalidation__AAnnotations__accept_ast_validation(self, p0);
273 RET_LABEL:;
274 }
275 /* method astvalidation#AExpr#accept_ast_validation for (self: AExpr, ASTValidationVisitor) */
276 void astvalidation__AExpr__accept_ast_validation(val* self, val* p0) {
277 val* var_v /* var v: ASTValidationVisitor */;
278 short int var /* : Bool */;
279 val* var1 /* : nullable MType */;
280 val* var2 /* : null */;
281 short int var3 /* : Bool */;
282 short int var_ /* var : Bool */;
283 short int var4 /* : Bool */;
284 short int var5 /* : Bool */;
285 static val* varonce;
286 val* var6 /* : String */;
287 char* var7 /* : NativeString */;
288 long var8 /* : Int */;
289 val* var9 /* : String */;
290 var_v = p0;
291 ((void (*)(val*, val*))(self->class->vft[COLOR_astvalidation__AExpr__accept_ast_validation]))(self, p0) /* accept_ast_validation on <self:AExpr>*/;
292 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AExpr>*/;
293 var2 = NULL;
294 if (var1 == NULL) {
295 var3 = 1; /* is null */
296 } else {
297 var3 = 0; /* arg is null but recv is not */
298 }
299 var_ = var3;
300 if (var3){
301 var4 = ((short int (*)(val*))(self->class->vft[COLOR_typing__AExpr__is_typed]))(self) /* is_typed on <self:AExpr>*/;
302 var5 = !var4;
303 var = var5;
304 } else {
305 var = var_;
306 }
307 if (var){
308 if (varonce) {
309 var6 = varonce;
310 } else {
311 var7 = "TYPING: untyped expression";
312 var8 = 26;
313 var9 = string__NativeString__to_s_with_length(var7, var8);
314 var6 = var9;
315 varonce = var6;
316 }
317 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__debug]))(self, var6) /* debug on <self:AExpr>*/;
318 } else {
319 }
320 RET_LABEL:;
321 }
322 /* method astvalidation#AExpr#accept_ast_validation for (self: Object, ASTValidationVisitor) */
323 void VIRTUAL_astvalidation__AExpr__accept_ast_validation(val* self, val* p0) {
324 astvalidation__AExpr__accept_ast_validation(self, p0);
325 RET_LABEL:;
326 }
327 /* method astvalidation#APlaceholderExpr#accept_ast_validation for (self: APlaceholderExpr, ASTValidationVisitor) */
328 void astvalidation__APlaceholderExpr__accept_ast_validation(val* self, val* p0) {
329 val* var_v /* var v: ASTValidationVisitor */;
330 static val* varonce;
331 val* var /* : String */;
332 char* var1 /* : NativeString */;
333 long var2 /* : Int */;
334 val* var3 /* : String */;
335 var_v = p0;
336 ((void (*)(val*, val*))(self->class->vft[COLOR_astvalidation__APlaceholderExpr__accept_ast_validation]))(self, p0) /* accept_ast_validation on <self:APlaceholderExpr>*/;
337 if (varonce) {
338 var = varonce;
339 } else {
340 var1 = "PARENT: remaining placeholder";
341 var2 = 29;
342 var3 = string__NativeString__to_s_with_length(var1, var2);
343 var = var3;
344 varonce = var;
345 }
346 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__debug]))(self, var) /* debug on <self:APlaceholderExpr>*/;
347 RET_LABEL:;
348 }
349 /* method astvalidation#APlaceholderExpr#accept_ast_validation for (self: Object, ASTValidationVisitor) */
350 void VIRTUAL_astvalidation__APlaceholderExpr__accept_ast_validation(val* self, val* p0) {
351 astvalidation__APlaceholderExpr__accept_ast_validation(self, p0);
352 RET_LABEL:;
353 }