c_src: regenerate
[nit.git] / c_src / nitc__astvalidation.sep.1.c
1 #include "nitc__astvalidation.sep.0.h"
2 /* method astvalidation#ASTValidationVisitor#visit for (self: ASTValidationVisitor, ANode) */
3 void nitc___nitc__ASTValidationVisitor___nitc__parser_nodes__Visitor__visit(val* self, val* p0) {
4 val* var_node /* var node: ANode */;
5 var_node = p0;
6 {
7 ((void(*)(val* self, val* p0))(var_node->class->vft[COLOR_nitc__astvalidation__ANode__accept_ast_validation]))(var_node, self); /* accept_ast_validation on <var_node:ANode>*/
8 }
9 RET_LABEL:;
10 }
11 /* method astvalidation#ASTValidationVisitor#path for (self: ASTValidationVisitor): CircularArray[ANode] */
12 val* nitc___nitc__ASTValidationVisitor___path(val* self) {
13 val* var /* : CircularArray[ANode] */;
14 val* var1 /* : CircularArray[ANode] */;
15 var1 = self->attrs[COLOR_nitc__astvalidation__ASTValidationVisitor___path].val; /* _path on <self:ASTValidationVisitor> */
16 if (unlikely(var1 == NULL)) {
17 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
18 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__astvalidation, 27);
19 fatal_exit(1);
20 }
21 var = var1;
22 RET_LABEL:;
23 return var;
24 }
25 /* method astvalidation#ASTValidationVisitor#seen for (self: ASTValidationVisitor): HashSet[ANode] */
26 val* nitc___nitc__ASTValidationVisitor___seen(val* self) {
27 val* var /* : HashSet[ANode] */;
28 val* var1 /* : HashSet[ANode] */;
29 var1 = self->attrs[COLOR_nitc__astvalidation__ASTValidationVisitor___seen].val; /* _seen on <self:ASTValidationVisitor> */
30 if (unlikely(var1 == NULL)) {
31 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _seen");
32 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__astvalidation, 28);
33 fatal_exit(1);
34 }
35 var = var1;
36 RET_LABEL:;
37 return var;
38 }
39 /* method astvalidation#ANode#accept_ast_validation for (self: ANode, ASTValidationVisitor) */
40 void nitc__astvalidation___ANode___accept_ast_validation(val* self, val* p0) {
41 val* var_v /* var v: ASTValidationVisitor */;
42 val* var /* : nullable ANode */;
43 val* var2 /* : nullable ANode */;
44 val* var_parent /* var parent: nullable ANode */;
45 val* var3 /* : CircularArray[ANode] */;
46 val* var5 /* : CircularArray[ANode] */;
47 val* var_path /* var path: CircularArray[ANode] */;
48 long var6 /* : Int */;
49 long var8 /* : Int */;
50 short int var9 /* : Bool */;
51 short int var11 /* : Bool */;
52 int cltype;
53 int idtype;
54 const char* var_class_name;
55 short int var12 /* : Bool */;
56 val* var13 /* : CircularArray[ANode] */;
57 val* var15 /* : CircularArray[ANode] */;
58 val* var16 /* : nullable Object */;
59 val* var_path_parent /* var path_parent: ANode */;
60 short int var17 /* : Bool */;
61 short int var18 /* : Bool */;
62 val* var_other /* var other: nullable Object */;
63 short int var20 /* : Bool */;
64 short int var22 /* : Bool */;
65 val* var24 /* : HashSet[ANode] */;
66 val* var26 /* : HashSet[ANode] */;
67 short int var27 /* : Bool */;
68 val* var_other29 /* var other: nullable Object */;
69 short int var30 /* : Bool */;
70 short int var31 /* : Bool */;
71 val* var33 /* : HashSet[ANode] */;
72 val* var35 /* : HashSet[ANode] */;
73 short int var36 /* : Bool */;
74 val* var37 /* : NativeArray[String] */;
75 static val* varonce;
76 static val* varonce38;
77 val* var39 /* : String */;
78 char* var40 /* : NativeString */;
79 val* var41 /* : String */;
80 static val* varonce42;
81 val* var43 /* : String */;
82 char* var44 /* : NativeString */;
83 val* var45 /* : String */;
84 static val* varonce46;
85 val* var47 /* : String */;
86 char* var48 /* : NativeString */;
87 val* var49 /* : String */;
88 val* var50 /* : String */;
89 val* var51 /* : String */;
90 val* var52 /* : String */;
91 val* var53 /* : HashSet[ANode] */;
92 val* var55 /* : HashSet[ANode] */;
93 val* var57 /* : NativeArray[String] */;
94 static val* varonce56;
95 static val* varonce58;
96 val* var59 /* : String */;
97 char* var60 /* : NativeString */;
98 val* var61 /* : String */;
99 static val* varonce62;
100 val* var63 /* : String */;
101 char* var64 /* : NativeString */;
102 val* var65 /* : String */;
103 val* var66 /* : String */;
104 val* var67 /* : String */;
105 val* var68 /* : String */;
106 short int var69 /* : Bool */;
107 short int var70 /* : Bool */;
108 val* var71 /* : nullable ANode */;
109 val* var73 /* : nullable ANode */;
110 val* var74 /* : Location */;
111 val* var76 /* : Location */;
112 val* var77 /* : nullable Object */;
113 var_v = p0;
114 {
115 { /* Inline parser_nodes#ANode#parent (self) on <self:ANode> */
116 var2 = self->attrs[COLOR_nitc__parser_nodes__ANode___parent].val; /* _parent on <self:ANode> */
117 var = var2;
118 RET_LABEL1:(void)0;
119 }
120 }
121 var_parent = var;
122 {
123 { /* Inline astvalidation#ASTValidationVisitor#path (var_v) on <var_v:ASTValidationVisitor> */
124 var5 = var_v->attrs[COLOR_nitc__astvalidation__ASTValidationVisitor___path].val; /* _path on <var_v:ASTValidationVisitor> */
125 if (unlikely(var5 == NULL)) {
126 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
127 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__astvalidation, 27);
128 fatal_exit(1);
129 }
130 var3 = var5;
131 RET_LABEL4:(void)0;
132 }
133 }
134 var_path = var3;
135 {
136 { /* Inline circular_array#CircularArray#length (var_path) on <var_path:CircularArray[ANode]> */
137 var8 = var_path->attrs[COLOR_core__circular_array__CircularArray___length].l; /* _length on <var_path:CircularArray[ANode]> */
138 var6 = var8;
139 RET_LABEL7:(void)0;
140 }
141 }
142 {
143 { /* Inline kernel#Int#> (var6,0l) on <var6:Int> */
144 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
145 /* <0l:Int> isa OTHER */
146 var11 = 1; /* easy <0l:Int> isa OTHER*/
147 if (unlikely(!var11)) {
148 var_class_name = type_core__Int.name;
149 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
150 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
151 fatal_exit(1);
152 }
153 var12 = var6 > 0l;
154 var9 = var12;
155 goto RET_LABEL10;
156 RET_LABEL10:(void)0;
157 }
158 }
159 if (var9){
160 {
161 { /* Inline astvalidation#ASTValidationVisitor#path (var_v) on <var_v:ASTValidationVisitor> */
162 var15 = var_v->attrs[COLOR_nitc__astvalidation__ASTValidationVisitor___path].val; /* _path on <var_v:ASTValidationVisitor> */
163 if (unlikely(var15 == NULL)) {
164 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
165 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__astvalidation, 27);
166 fatal_exit(1);
167 }
168 var13 = var15;
169 RET_LABEL14:(void)0;
170 }
171 }
172 {
173 var16 = core___core__SequenceRead___Collection__first(var13);
174 }
175 var_path_parent = var16;
176 if (var_parent == NULL) {
177 var17 = 1; /* is null */
178 } else {
179 var17 = 0; /* arg is null but recv is not */
180 }
181 if (0) {
182 { /* Inline kernel#Object#== (var_parent,((val*)NULL)) on <var_parent:nullable ANode> */
183 var_other = ((val*)NULL);
184 {
185 { /* Inline kernel#Object#is_same_instance (var_parent,var_other) on <var_parent:nullable ANode(ANode)> */
186 var22 = var_parent == var_other;
187 var20 = var22;
188 goto RET_LABEL21;
189 RET_LABEL21:(void)0;
190 }
191 }
192 var18 = var20;
193 goto RET_LABEL19;
194 RET_LABEL19:(void)0;
195 }
196 var17 = var18;
197 }
198 if (var17){
199 {
200 { /* Inline parser_nodes#ANode#parent= (self,var_path_parent) on <self:ANode> */
201 self->attrs[COLOR_nitc__parser_nodes__ANode___parent].val = var_path_parent; /* _parent on <self:ANode> */
202 RET_LABEL23:(void)0;
203 }
204 }
205 {
206 { /* Inline astvalidation#ASTValidationVisitor#seen (var_v) on <var_v:ASTValidationVisitor> */
207 var26 = var_v->attrs[COLOR_nitc__astvalidation__ASTValidationVisitor___seen].val; /* _seen on <var_v:ASTValidationVisitor> */
208 if (unlikely(var26 == NULL)) {
209 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _seen");
210 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__astvalidation, 28);
211 fatal_exit(1);
212 }
213 var24 = var26;
214 RET_LABEL25:(void)0;
215 }
216 }
217 {
218 core___core__HashSet___core__abstract_collection__SimpleCollection__add(var24, self); /* Direct call hash_collection#HashSet#add on <var24:HashSet[ANode]>*/
219 }
220 } else {
221 {
222 { /* Inline kernel#Object#!= (var_parent,var_path_parent) on <var_parent:nullable ANode(ANode)> */
223 var_other29 = var_path_parent;
224 {
225 var30 = ((short int(*)(val* self, val* p0))(var_parent->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_parent, var_other29); /* == on <var_parent:nullable ANode(ANode)>*/
226 }
227 var31 = !var30;
228 var27 = var31;
229 goto RET_LABEL28;
230 RET_LABEL28:(void)0;
231 }
232 }
233 if (var27){
234 {
235 { /* Inline parser_nodes#ANode#parent= (self,var_path_parent) on <self:ANode> */
236 self->attrs[COLOR_nitc__parser_nodes__ANode___parent].val = var_path_parent; /* _parent on <self:ANode> */
237 RET_LABEL32:(void)0;
238 }
239 }
240 {
241 { /* Inline astvalidation#ASTValidationVisitor#seen (var_v) on <var_v:ASTValidationVisitor> */
242 var35 = var_v->attrs[COLOR_nitc__astvalidation__ASTValidationVisitor___seen].val; /* _seen on <var_v:ASTValidationVisitor> */
243 if (unlikely(var35 == NULL)) {
244 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _seen");
245 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__astvalidation, 28);
246 fatal_exit(1);
247 }
248 var33 = var35;
249 RET_LABEL34:(void)0;
250 }
251 }
252 {
253 var36 = core___core__HashSet___core__abstract_collection__Collection__has(var33, self);
254 }
255 if (var36){
256 if (unlikely(varonce==NULL)) {
257 var37 = NEW_core__NativeArray(5l, &type_core__NativeArray__core__String);
258 if (likely(varonce38!=NULL)) {
259 var39 = varonce38;
260 } else {
261 var40 = "DUPLICATE (NOTATREE): already seen node with parent ";
262 var41 = core__flat___NativeString___to_s_full(var40, 52l, 52l);
263 var39 = var41;
264 varonce38 = var39;
265 }
266 ((struct instance_core__NativeArray*)var37)->values[0]=var39;
267 if (likely(varonce42!=NULL)) {
268 var43 = varonce42;
269 } else {
270 var44 = " now with ";
271 var45 = core__flat___NativeString___to_s_full(var44, 10l, 10l);
272 var43 = var45;
273 varonce42 = var43;
274 }
275 ((struct instance_core__NativeArray*)var37)->values[2]=var43;
276 if (likely(varonce46!=NULL)) {
277 var47 = varonce46;
278 } else {
279 var48 = ".";
280 var49 = core__flat___NativeString___to_s_full(var48, 1l, 1l);
281 var47 = var49;
282 varonce46 = var47;
283 }
284 ((struct instance_core__NativeArray*)var37)->values[4]=var47;
285 } else {
286 var37 = varonce;
287 varonce = NULL;
288 }
289 {
290 var50 = ((val*(*)(val* self))(var_parent->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_parent); /* to_s on <var_parent:nullable ANode(ANode)>*/
291 }
292 ((struct instance_core__NativeArray*)var37)->values[1]=var50;
293 {
294 var51 = ((val*(*)(val* self))(var_path_parent->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_path_parent); /* to_s on <var_path_parent:ANode>*/
295 }
296 ((struct instance_core__NativeArray*)var37)->values[3]=var51;
297 {
298 var52 = ((val*(*)(val* self))(var37->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var37); /* native_to_s on <var37:NativeArray[String]>*/
299 }
300 varonce = var37;
301 {
302 nitc___nitc__ANode___debug(self, var52); /* Direct call parser_nodes#ANode#debug on <self:ANode>*/
303 }
304 } else {
305 {
306 { /* Inline astvalidation#ASTValidationVisitor#seen (var_v) on <var_v:ASTValidationVisitor> */
307 var55 = var_v->attrs[COLOR_nitc__astvalidation__ASTValidationVisitor___seen].val; /* _seen on <var_v:ASTValidationVisitor> */
308 if (unlikely(var55 == NULL)) {
309 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _seen");
310 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__astvalidation, 28);
311 fatal_exit(1);
312 }
313 var53 = var55;
314 RET_LABEL54:(void)0;
315 }
316 }
317 {
318 core___core__HashSet___core__abstract_collection__SimpleCollection__add(var53, self); /* Direct call hash_collection#HashSet#add on <var53:HashSet[ANode]>*/
319 }
320 if (unlikely(varonce56==NULL)) {
321 var57 = NEW_core__NativeArray(4l, &type_core__NativeArray__core__String);
322 if (likely(varonce58!=NULL)) {
323 var59 = varonce58;
324 } else {
325 var60 = "PARENT: expected parent: ";
326 var61 = core__flat___NativeString___to_s_full(var60, 25l, 25l);
327 var59 = var61;
328 varonce58 = var59;
329 }
330 ((struct instance_core__NativeArray*)var57)->values[0]=var59;
331 if (likely(varonce62!=NULL)) {
332 var63 = varonce62;
333 } else {
334 var64 = ", got ";
335 var65 = core__flat___NativeString___to_s_full(var64, 6l, 6l);
336 var63 = var65;
337 varonce62 = var63;
338 }
339 ((struct instance_core__NativeArray*)var57)->values[2]=var63;
340 } else {
341 var57 = varonce56;
342 varonce56 = NULL;
343 }
344 {
345 var66 = ((val*(*)(val* self))(var_path_parent->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_path_parent); /* to_s on <var_path_parent:ANode>*/
346 }
347 ((struct instance_core__NativeArray*)var57)->values[1]=var66;
348 {
349 var67 = ((val*(*)(val* self))(var_parent->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_parent); /* to_s on <var_parent:nullable ANode(ANode)>*/
350 }
351 ((struct instance_core__NativeArray*)var57)->values[3]=var67;
352 {
353 var68 = ((val*(*)(val* self))(var57->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var57); /* native_to_s on <var57:NativeArray[String]>*/
354 }
355 varonce56 = var57;
356 {
357 nitc___nitc__ANode___debug(self, var68); /* Direct call parser_nodes#ANode#debug on <self:ANode>*/
358 }
359 }
360 } else {
361 }
362 }
363 } else {
364 }
365 var69 = self->attrs[COLOR_nitc__parser_nodes__ANode___location].val != NULL; /* _location on <self:ANode> */
366 var70 = !var69;
367 if (var70){
368 {
369 { /* Inline parser_nodes#ANode#parent (self) on <self:ANode> */
370 var73 = self->attrs[COLOR_nitc__parser_nodes__ANode___parent].val; /* _parent on <self:ANode> */
371 var71 = var73;
372 RET_LABEL72:(void)0;
373 }
374 }
375 if (var71 == NULL) {
376 PRINT_ERROR("Runtime error: %s", "Receiver is null");
377 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__astvalidation, 68);
378 fatal_exit(1);
379 } else {
380 { /* Inline parser_nodes#ANode#location (var71) on <var71:nullable ANode> */
381 if (unlikely(var71 == NULL)) {
382 PRINT_ERROR("Runtime error: %s", "Receiver is null");
383 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 24);
384 fatal_exit(1);
385 }
386 var76 = var71->attrs[COLOR_nitc__parser_nodes__ANode___location].val; /* _location on <var71:nullable ANode> */
387 if (unlikely(var76 == NULL)) {
388 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
389 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 24);
390 fatal_exit(1);
391 }
392 var74 = var76;
393 RET_LABEL75:(void)0;
394 }
395 }
396 self->attrs[COLOR_nitc__parser_nodes__ANode___location].val = var74; /* _location on <self:ANode> */
397 } else {
398 }
399 {
400 core___core__CircularArray___core__abstract_collection__Sequence__unshift(var_path, self); /* Direct call circular_array#CircularArray#unshift on <var_path:CircularArray[ANode]>*/
401 }
402 {
403 ((void(*)(val* self, val* p0))(self->class->vft[COLOR_nitc__parser_nodes__ANode__visit_all]))(self, var_v); /* visit_all on <self:ANode>*/
404 }
405 {
406 var77 = core___core__CircularArray___core__abstract_collection__Sequence__shift(var_path);
407 }
408 RET_LABEL:;
409 }
410 /* method astvalidation#AAnnotation#accept_ast_validation for (self: AAnnotation, ASTValidationVisitor) */
411 void nitc__astvalidation___AAnnotation___ANode__accept_ast_validation(val* self, val* p0) {
412 val* var_v /* var v: ASTValidationVisitor */;
413 var_v = p0;
414 RET_LABEL:;
415 }
416 /* method astvalidation#AExpr#accept_ast_validation for (self: AExpr, ASTValidationVisitor) */
417 void nitc__astvalidation___AExpr___ANode__accept_ast_validation(val* self, val* p0) {
418 val* var_v /* var v: ASTValidationVisitor */;
419 short int var /* : Bool */;
420 val* var1 /* : nullable MType */;
421 short int var2 /* : Bool */;
422 short int var3 /* : Bool */;
423 val* var_other /* var other: nullable Object */;
424 short int var5 /* : Bool */;
425 short int var7 /* : Bool */;
426 short int var_ /* var : Bool */;
427 short int var8 /* : Bool */;
428 short int var10 /* : Bool */;
429 short int var11 /* : Bool */;
430 var_v = p0;
431 {
432 ((void(*)(val* self, val* p0))(self->class->vft[COLOR_nitc__astvalidation___AExpr___ANode__accept_ast_validation]))(self, p0); /* accept_ast_validation on <self:AExpr>*/
433 }
434 {
435 var1 = ((val*(*)(val* self))(self->class->vft[COLOR_nitc__typing__AExpr__mtype]))(self); /* mtype on <self:AExpr>*/
436 }
437 if (var1 == NULL) {
438 var2 = 1; /* is null */
439 } else {
440 var2 = 0; /* arg is null but recv is not */
441 }
442 if (0) {
443 { /* Inline kernel#Object#== (var1,((val*)NULL)) on <var1:nullable MType> */
444 var_other = ((val*)NULL);
445 {
446 { /* Inline kernel#Object#is_same_instance (var1,var_other) on <var1:nullable MType(MType)> */
447 var7 = var1 == var_other;
448 var5 = var7;
449 goto RET_LABEL6;
450 RET_LABEL6:(void)0;
451 }
452 }
453 var3 = var5;
454 goto RET_LABEL4;
455 RET_LABEL4:(void)0;
456 }
457 var2 = var3;
458 }
459 var_ = var2;
460 if (var2){
461 {
462 { /* Inline typing#AExpr#is_typed (self) on <self:AExpr> */
463 var10 = self->attrs[COLOR_nitc__typing__AExpr___is_typed].s; /* _is_typed on <self:AExpr> */
464 var8 = var10;
465 RET_LABEL9:(void)0;
466 }
467 }
468 var11 = !var8;
469 var = var11;
470 } else {
471 var = var_;
472 }
473 if (var){
474 } else {
475 }
476 RET_LABEL:;
477 }
478 /* method astvalidation#APlaceholderExpr#accept_ast_validation for (self: APlaceholderExpr, ASTValidationVisitor) */
479 void nitc__astvalidation___APlaceholderExpr___ANode__accept_ast_validation(val* self, val* p0) {
480 val* var_v /* var v: ASTValidationVisitor */;
481 static val* varonce;
482 val* var /* : String */;
483 char* var1 /* : NativeString */;
484 val* var2 /* : String */;
485 var_v = p0;
486 {
487 ((void(*)(val* self, val* p0))(self->class->vft[COLOR_nitc__astvalidation___APlaceholderExpr___ANode__accept_ast_validation]))(self, p0); /* accept_ast_validation on <self:APlaceholderExpr>*/
488 }
489 if (likely(varonce!=NULL)) {
490 var = varonce;
491 } else {
492 var1 = "PARENT: remaining placeholder";
493 var2 = core__flat___NativeString___to_s_full(var1, 29l, 29l);
494 var = var2;
495 varonce = var;
496 }
497 {
498 nitc___nitc__ANode___debug(self, var); /* Direct call parser_nodes#ANode#debug on <self:APlaceholderExpr>*/
499 }
500 RET_LABEL:;
501 }