README: document nit_env.sh
[nit.git] / c_src / nit__astvalidation.sep.1.c
1 #include "nit__astvalidation.sep.0.h"
2 /* method astvalidation#ASTValidationVisitor#visit for (self: ASTValidationVisitor, ANode) */
3 void nit___nit__ASTValidationVisitor___nit__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_nit__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): List[ANode] */
12 val* nit___nit__ASTValidationVisitor___path(val* self) {
13 val* var /* : List[ANode] */;
14 val* var1 /* : List[ANode] */;
15 var1 = self->attrs[COLOR_nit__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_nit__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* nit___nit__ASTValidationVisitor___seen(val* self) {
27 val* var /* : HashSet[ANode] */;
28 val* var1 /* : HashSet[ANode] */;
29 var1 = self->attrs[COLOR_nit__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_nit__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 nit__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 /* : List[ANode] */;
46 val* var5 /* : List[ANode] */;
47 val* var_path /* var path: List[ANode] */;
48 long var6 /* : Int */;
49 short int var7 /* : Bool */;
50 short int var9 /* : Bool */;
51 int cltype;
52 int idtype;
53 const char* var_class_name;
54 short int var10 /* : Bool */;
55 val* var11 /* : List[ANode] */;
56 val* var13 /* : List[ANode] */;
57 val* var14 /* : nullable Object */;
58 val* var_path_parent /* var path_parent: ANode */;
59 short int var15 /* : Bool */;
60 short int var16 /* : Bool */;
61 val* var_other /* var other: nullable Object */;
62 short int var18 /* : Bool */;
63 short int var20 /* : Bool */;
64 val* var22 /* : HashSet[ANode] */;
65 val* var24 /* : HashSet[ANode] */;
66 short int var25 /* : Bool */;
67 val* var_other27 /* var other: nullable Object */;
68 short int var28 /* : Bool */;
69 short int var29 /* : Bool */;
70 val* var31 /* : HashSet[ANode] */;
71 val* var33 /* : HashSet[ANode] */;
72 short int var34 /* : Bool */;
73 val* var35 /* : NativeArray[String] */;
74 static val* varonce;
75 static val* varonce36;
76 val* var37 /* : String */;
77 char* var38 /* : NativeString */;
78 val* var39 /* : FlatString */;
79 static val* varonce40;
80 val* var41 /* : String */;
81 char* var42 /* : NativeString */;
82 val* var43 /* : FlatString */;
83 static val* varonce44;
84 val* var45 /* : String */;
85 char* var46 /* : NativeString */;
86 val* var47 /* : FlatString */;
87 val* var48 /* : String */;
88 val* var49 /* : String */;
89 val* var50 /* : String */;
90 val* var51 /* : HashSet[ANode] */;
91 val* var53 /* : HashSet[ANode] */;
92 val* var55 /* : NativeArray[String] */;
93 static val* varonce54;
94 static val* varonce56;
95 val* var57 /* : String */;
96 char* var58 /* : NativeString */;
97 val* var59 /* : FlatString */;
98 static val* varonce60;
99 val* var61 /* : String */;
100 char* var62 /* : NativeString */;
101 val* var63 /* : FlatString */;
102 val* var64 /* : String */;
103 val* var65 /* : String */;
104 val* var66 /* : String */;
105 short int var67 /* : Bool */;
106 short int var68 /* : Bool */;
107 val* var69 /* : nullable ANode */;
108 val* var71 /* : nullable ANode */;
109 val* var72 /* : Location */;
110 val* var74 /* : Location */;
111 val* var75 /* : nullable Object */;
112 var_v = p0;
113 {
114 { /* Inline parser_nodes#ANode#parent (self) on <self:ANode> */
115 var2 = self->attrs[COLOR_nit__parser_nodes__ANode___parent].val; /* _parent on <self:ANode> */
116 var = var2;
117 RET_LABEL1:(void)0;
118 }
119 }
120 var_parent = var;
121 {
122 { /* Inline astvalidation#ASTValidationVisitor#path (var_v) on <var_v:ASTValidationVisitor> */
123 var5 = var_v->attrs[COLOR_nit__astvalidation__ASTValidationVisitor___path].val; /* _path on <var_v:ASTValidationVisitor> */
124 if (unlikely(var5 == NULL)) {
125 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
126 PRINT_ERROR(" (%s:%d)\n", FILE_nit__astvalidation, 27);
127 fatal_exit(1);
128 }
129 var3 = var5;
130 RET_LABEL4:(void)0;
131 }
132 }
133 var_path = var3;
134 {
135 var6 = standard___standard__List___standard__abstract_collection__Collection__length(var_path);
136 }
137 {
138 { /* Inline kernel#Int#> (var6,0l) on <var6:Int> */
139 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
140 /* <0l:Int> isa OTHER */
141 var9 = 1; /* easy <0l:Int> isa OTHER*/
142 if (unlikely(!var9)) {
143 var_class_name = type_standard__Int.name;
144 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
145 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 536);
146 fatal_exit(1);
147 }
148 var10 = var6 > 0l;
149 var7 = var10;
150 goto RET_LABEL8;
151 RET_LABEL8:(void)0;
152 }
153 }
154 if (var7){
155 {
156 { /* Inline astvalidation#ASTValidationVisitor#path (var_v) on <var_v:ASTValidationVisitor> */
157 var13 = var_v->attrs[COLOR_nit__astvalidation__ASTValidationVisitor___path].val; /* _path on <var_v:ASTValidationVisitor> */
158 if (unlikely(var13 == NULL)) {
159 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _path");
160 PRINT_ERROR(" (%s:%d)\n", FILE_nit__astvalidation, 27);
161 fatal_exit(1);
162 }
163 var11 = var13;
164 RET_LABEL12:(void)0;
165 }
166 }
167 {
168 var14 = standard___standard__List___standard__abstract_collection__Collection__first(var11);
169 }
170 var_path_parent = var14;
171 if (var_parent == NULL) {
172 var15 = 1; /* is null */
173 } else {
174 var15 = 0; /* arg is null but recv is not */
175 }
176 if (0) {
177 { /* Inline kernel#Object#== (var_parent,((val*)NULL)) on <var_parent:nullable ANode> */
178 var_other = ((val*)NULL);
179 {
180 { /* Inline kernel#Object#is_same_instance (var_parent,var_other) on <var_parent:nullable ANode(ANode)> */
181 var20 = var_parent == var_other;
182 var18 = var20;
183 goto RET_LABEL19;
184 RET_LABEL19:(void)0;
185 }
186 }
187 var16 = var18;
188 goto RET_LABEL17;
189 RET_LABEL17:(void)0;
190 }
191 var15 = var16;
192 }
193 if (var15){
194 {
195 { /* Inline parser_nodes#ANode#parent= (self,var_path_parent) on <self:ANode> */
196 self->attrs[COLOR_nit__parser_nodes__ANode___parent].val = var_path_parent; /* _parent on <self:ANode> */
197 RET_LABEL21:(void)0;
198 }
199 }
200 {
201 { /* Inline astvalidation#ASTValidationVisitor#seen (var_v) on <var_v:ASTValidationVisitor> */
202 var24 = var_v->attrs[COLOR_nit__astvalidation__ASTValidationVisitor___seen].val; /* _seen on <var_v:ASTValidationVisitor> */
203 if (unlikely(var24 == NULL)) {
204 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _seen");
205 PRINT_ERROR(" (%s:%d)\n", FILE_nit__astvalidation, 28);
206 fatal_exit(1);
207 }
208 var22 = var24;
209 RET_LABEL23:(void)0;
210 }
211 }
212 {
213 standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var22, self); /* Direct call hash_collection#HashSet#add on <var22:HashSet[ANode]>*/
214 }
215 } else {
216 {
217 { /* Inline kernel#Object#!= (var_parent,var_path_parent) on <var_parent:nullable ANode(ANode)> */
218 var_other27 = var_path_parent;
219 {
220 var28 = ((short int(*)(val* self, val* p0))(var_parent->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_parent, var_other27); /* == on <var_parent:nullable ANode(ANode)>*/
221 }
222 var29 = !var28;
223 var25 = var29;
224 goto RET_LABEL26;
225 RET_LABEL26:(void)0;
226 }
227 }
228 if (var25){
229 {
230 { /* Inline parser_nodes#ANode#parent= (self,var_path_parent) on <self:ANode> */
231 self->attrs[COLOR_nit__parser_nodes__ANode___parent].val = var_path_parent; /* _parent on <self:ANode> */
232 RET_LABEL30:(void)0;
233 }
234 }
235 {
236 { /* Inline astvalidation#ASTValidationVisitor#seen (var_v) on <var_v:ASTValidationVisitor> */
237 var33 = var_v->attrs[COLOR_nit__astvalidation__ASTValidationVisitor___seen].val; /* _seen on <var_v:ASTValidationVisitor> */
238 if (unlikely(var33 == NULL)) {
239 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _seen");
240 PRINT_ERROR(" (%s:%d)\n", FILE_nit__astvalidation, 28);
241 fatal_exit(1);
242 }
243 var31 = var33;
244 RET_LABEL32:(void)0;
245 }
246 }
247 {
248 var34 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var31, self);
249 }
250 if (var34){
251 if (unlikely(varonce==NULL)) {
252 var35 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
253 if (likely(varonce36!=NULL)) {
254 var37 = varonce36;
255 } else {
256 var38 = "DUPLICATE (NOTATREE): already seen node with parent ";
257 var39 = standard___standard__NativeString___to_s_with_length(var38, 52l);
258 var37 = var39;
259 varonce36 = var37;
260 }
261 ((struct instance_standard__NativeArray*)var35)->values[0]=var37;
262 if (likely(varonce40!=NULL)) {
263 var41 = varonce40;
264 } else {
265 var42 = " now with ";
266 var43 = standard___standard__NativeString___to_s_with_length(var42, 10l);
267 var41 = var43;
268 varonce40 = var41;
269 }
270 ((struct instance_standard__NativeArray*)var35)->values[2]=var41;
271 if (likely(varonce44!=NULL)) {
272 var45 = varonce44;
273 } else {
274 var46 = ".";
275 var47 = standard___standard__NativeString___to_s_with_length(var46, 1l);
276 var45 = var47;
277 varonce44 = var45;
278 }
279 ((struct instance_standard__NativeArray*)var35)->values[4]=var45;
280 } else {
281 var35 = varonce;
282 varonce = NULL;
283 }
284 {
285 var48 = ((val*(*)(val* self))(var_parent->class->vft[COLOR_standard__string__Object__to_s]))(var_parent); /* to_s on <var_parent:nullable ANode(ANode)>*/
286 }
287 ((struct instance_standard__NativeArray*)var35)->values[1]=var48;
288 {
289 var49 = ((val*(*)(val* self))(var_path_parent->class->vft[COLOR_standard__string__Object__to_s]))(var_path_parent); /* to_s on <var_path_parent:ANode>*/
290 }
291 ((struct instance_standard__NativeArray*)var35)->values[3]=var49;
292 {
293 var50 = ((val*(*)(val* self))(var35->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var35); /* native_to_s on <var35:NativeArray[String]>*/
294 }
295 varonce = var35;
296 {
297 nit___nit__ANode___debug(self, var50); /* Direct call parser_nodes#ANode#debug on <self:ANode>*/
298 }
299 } else {
300 {
301 { /* Inline astvalidation#ASTValidationVisitor#seen (var_v) on <var_v:ASTValidationVisitor> */
302 var53 = var_v->attrs[COLOR_nit__astvalidation__ASTValidationVisitor___seen].val; /* _seen on <var_v:ASTValidationVisitor> */
303 if (unlikely(var53 == NULL)) {
304 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _seen");
305 PRINT_ERROR(" (%s:%d)\n", FILE_nit__astvalidation, 28);
306 fatal_exit(1);
307 }
308 var51 = var53;
309 RET_LABEL52:(void)0;
310 }
311 }
312 {
313 standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var51, self); /* Direct call hash_collection#HashSet#add on <var51:HashSet[ANode]>*/
314 }
315 if (unlikely(varonce54==NULL)) {
316 var55 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
317 if (likely(varonce56!=NULL)) {
318 var57 = varonce56;
319 } else {
320 var58 = "PARENT: expected parent: ";
321 var59 = standard___standard__NativeString___to_s_with_length(var58, 25l);
322 var57 = var59;
323 varonce56 = var57;
324 }
325 ((struct instance_standard__NativeArray*)var55)->values[0]=var57;
326 if (likely(varonce60!=NULL)) {
327 var61 = varonce60;
328 } else {
329 var62 = ", got ";
330 var63 = standard___standard__NativeString___to_s_with_length(var62, 6l);
331 var61 = var63;
332 varonce60 = var61;
333 }
334 ((struct instance_standard__NativeArray*)var55)->values[2]=var61;
335 } else {
336 var55 = varonce54;
337 varonce54 = NULL;
338 }
339 {
340 var64 = ((val*(*)(val* self))(var_path_parent->class->vft[COLOR_standard__string__Object__to_s]))(var_path_parent); /* to_s on <var_path_parent:ANode>*/
341 }
342 ((struct instance_standard__NativeArray*)var55)->values[1]=var64;
343 {
344 var65 = ((val*(*)(val* self))(var_parent->class->vft[COLOR_standard__string__Object__to_s]))(var_parent); /* to_s on <var_parent:nullable ANode(ANode)>*/
345 }
346 ((struct instance_standard__NativeArray*)var55)->values[3]=var65;
347 {
348 var66 = ((val*(*)(val* self))(var55->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var55); /* native_to_s on <var55:NativeArray[String]>*/
349 }
350 varonce54 = var55;
351 {
352 nit___nit__ANode___debug(self, var66); /* Direct call parser_nodes#ANode#debug on <self:ANode>*/
353 }
354 }
355 } else {
356 }
357 }
358 } else {
359 }
360 var67 = self->attrs[COLOR_nit__parser_nodes__ANode___location].val != NULL; /* _location on <self:ANode> */
361 var68 = !var67;
362 if (var68){
363 {
364 { /* Inline parser_nodes#ANode#parent (self) on <self:ANode> */
365 var71 = self->attrs[COLOR_nit__parser_nodes__ANode___parent].val; /* _parent on <self:ANode> */
366 var69 = var71;
367 RET_LABEL70:(void)0;
368 }
369 }
370 if (var69 == NULL) {
371 PRINT_ERROR("Runtime error: %s", "Receiver is null");
372 PRINT_ERROR(" (%s:%d)\n", FILE_nit__astvalidation, 56);
373 fatal_exit(1);
374 } else {
375 { /* Inline parser_nodes#ANode#location (var69) on <var69:nullable ANode> */
376 if (unlikely(var69 == NULL)) {
377 PRINT_ERROR("Runtime error: %s", "Receiver is null");
378 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 24);
379 fatal_exit(1);
380 }
381 var74 = var69->attrs[COLOR_nit__parser_nodes__ANode___location].val; /* _location on <var69:nullable ANode> */
382 if (unlikely(var74 == NULL)) {
383 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
384 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 24);
385 fatal_exit(1);
386 }
387 var72 = var74;
388 RET_LABEL73:(void)0;
389 }
390 }
391 self->attrs[COLOR_nit__parser_nodes__ANode___location].val = var72; /* _location on <self:ANode> */
392 } else {
393 }
394 {
395 standard___standard__List___standard__abstract_collection__Sequence__unshift(var_path, self); /* Direct call list#List#unshift on <var_path:List[ANode]>*/
396 }
397 {
398 ((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__parser_nodes__ANode__visit_all]))(self, var_v); /* visit_all on <self:ANode>*/
399 }
400 {
401 var75 = standard___standard__List___standard__abstract_collection__Sequence__shift(var_path);
402 }
403 RET_LABEL:;
404 }
405 /* method astvalidation#AAnnotation#accept_ast_validation for (self: AAnnotation, ASTValidationVisitor) */
406 void nit__astvalidation___AAnnotation___ANode__accept_ast_validation(val* self, val* p0) {
407 val* var_v /* var v: ASTValidationVisitor */;
408 var_v = p0;
409 RET_LABEL:;
410 }
411 /* method astvalidation#AExpr#accept_ast_validation for (self: AExpr, ASTValidationVisitor) */
412 void nit__astvalidation___AExpr___ANode__accept_ast_validation(val* self, val* p0) {
413 val* var_v /* var v: ASTValidationVisitor */;
414 short int var /* : Bool */;
415 val* var1 /* : nullable MType */;
416 short int var2 /* : Bool */;
417 short int var3 /* : Bool */;
418 val* var_other /* var other: nullable Object */;
419 short int var5 /* : Bool */;
420 short int var7 /* : Bool */;
421 short int var_ /* var : Bool */;
422 short int var8 /* : Bool */;
423 short int var10 /* : Bool */;
424 short int var11 /* : Bool */;
425 var_v = p0;
426 {
427 ((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__astvalidation___AExpr___ANode__accept_ast_validation]))(self, p0); /* accept_ast_validation on <self:AExpr>*/
428 }
429 {
430 var1 = ((val*(*)(val* self))(self->class->vft[COLOR_nit__typing__AExpr__mtype]))(self); /* mtype on <self:AExpr>*/
431 }
432 if (var1 == NULL) {
433 var2 = 1; /* is null */
434 } else {
435 var2 = 0; /* arg is null but recv is not */
436 }
437 if (0) {
438 { /* Inline kernel#Object#== (var1,((val*)NULL)) on <var1:nullable MType> */
439 var_other = ((val*)NULL);
440 {
441 { /* Inline kernel#Object#is_same_instance (var1,var_other) on <var1:nullable MType(MType)> */
442 var7 = var1 == var_other;
443 var5 = var7;
444 goto RET_LABEL6;
445 RET_LABEL6:(void)0;
446 }
447 }
448 var3 = var5;
449 goto RET_LABEL4;
450 RET_LABEL4:(void)0;
451 }
452 var2 = var3;
453 }
454 var_ = var2;
455 if (var2){
456 {
457 { /* Inline typing#AExpr#is_typed (self) on <self:AExpr> */
458 var10 = self->attrs[COLOR_nit__typing__AExpr___is_typed].s; /* _is_typed on <self:AExpr> */
459 var8 = var10;
460 RET_LABEL9:(void)0;
461 }
462 }
463 var11 = !var8;
464 var = var11;
465 } else {
466 var = var_;
467 }
468 if (var){
469 } else {
470 }
471 RET_LABEL:;
472 }
473 /* method astvalidation#APlaceholderExpr#accept_ast_validation for (self: APlaceholderExpr, ASTValidationVisitor) */
474 void nit__astvalidation___APlaceholderExpr___ANode__accept_ast_validation(val* self, val* p0) {
475 val* var_v /* var v: ASTValidationVisitor */;
476 static val* varonce;
477 val* var /* : String */;
478 char* var1 /* : NativeString */;
479 val* var2 /* : FlatString */;
480 var_v = p0;
481 {
482 ((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__astvalidation___APlaceholderExpr___ANode__accept_ast_validation]))(self, p0); /* accept_ast_validation on <self:APlaceholderExpr>*/
483 }
484 if (likely(varonce!=NULL)) {
485 var = varonce;
486 } else {
487 var1 = "PARENT: remaining placeholder";
488 var2 = standard___standard__NativeString___to_s_with_length(var1, 29l);
489 var = var2;
490 varonce = var;
491 }
492 {
493 nit___nit__ANode___debug(self, var); /* Direct call parser_nodes#ANode#debug on <self:APlaceholderExpr>*/
494 }
495 RET_LABEL:;
496 }