tests: add engine `nitg-sg` for --semi-global
[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 show_backtrace(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 show_backtrace(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", 267);
160 show_backtrace(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 }
212 var26 = ((val* (*)(val*))(var23->class->vft[COLOR_string__Object__to_s]))(var23) /* to_s on <var23:Array[Object]>*/;
213 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__debug]))(self, var26) /* debug on <self:ANode>*/;
214 } else {
215 }
216 }
217 } else {
218 }
219 var27 = ((val* (*)(val*))(var_v->class->vft[COLOR_astvalidation__ASTValidationVisitor__seen]))(var_v) /* seen on <var_v:ASTValidationVisitor>*/;
220 var28 = ((short int (*)(val*, val*))(var27->class->vft[COLOR_abstract_collection__Collection__has]))(var27, self) /* has on <var27:HashSet[ANode]>*/;
221 if (var28){
222 if (varonce29) {
223 var30 = varonce29;
224 } else {
225 var31 = "DUPLICATE: already seen node. NOTATREE";
226 var32 = 38;
227 var33 = string__NativeString__to_s_with_length(var31, var32);
228 var30 = var33;
229 varonce29 = var30;
230 }
231 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__debug]))(self, var30) /* debug on <self:ANode>*/;
232 } else {
233 }
234 var34 = ((val* (*)(val*))(var_v->class->vft[COLOR_astvalidation__ASTValidationVisitor__seen]))(var_v) /* seen on <var_v:ASTValidationVisitor>*/;
235 ((void (*)(val*, val*))(var34->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var34, self) /* add on <var34:HashSet[ANode]>*/;
236 var35 = self->attrs[COLOR_parser_nodes__ANode___location].val; /* _location on <self:ANode> */
237 var36 = NULL;
238 if (var35 == NULL) {
239 var37 = 1; /* is null */
240 } else {
241 var37 = 0; /* arg is null but recv is not */
242 }
243 if (var37){
244 var38 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__parent]))(self) /* parent on <self:ANode>*/;
245 if (var38 == NULL) {
246 fprintf(stderr, "Runtime error: %s", "Receiver is null");
247 fprintf(stderr, " (%s:%d)\n", "src/astvalidation.nit", 57);
248 show_backtrace(1);
249 } else {
250 var39 = ((val* (*)(val*))(var38->class->vft[COLOR_parser_nodes__ANode__location]))(var38) /* location on <var38:nullable ANode>*/;
251 }
252 self->attrs[COLOR_parser_nodes__ANode___location].val = var39; /* _location on <self:ANode> */
253 } else {
254 }
255 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__visit_all]))(self, var_v) /* visit_all on <self:ANode>*/;
256 RET_LABEL:;
257 }
258 /* method astvalidation#ANode#accept_ast_validation for (self: Object, ASTValidationVisitor) */
259 void VIRTUAL_astvalidation__ANode__accept_ast_validation(val* self, val* p0) {
260 astvalidation__ANode__accept_ast_validation(self, p0);
261 RET_LABEL:;
262 }
263 /* method astvalidation#AAnnotations#accept_ast_validation for (self: AAnnotations, ASTValidationVisitor) */
264 void astvalidation__AAnnotations__accept_ast_validation(val* self, val* p0) {
265 val* var_v /* var v: ASTValidationVisitor */;
266 var_v = p0;
267 RET_LABEL:;
268 }
269 /* method astvalidation#AAnnotations#accept_ast_validation for (self: Object, ASTValidationVisitor) */
270 void VIRTUAL_astvalidation__AAnnotations__accept_ast_validation(val* self, val* p0) {
271 astvalidation__AAnnotations__accept_ast_validation(self, p0);
272 RET_LABEL:;
273 }
274 /* method astvalidation#AExpr#accept_ast_validation for (self: AExpr, ASTValidationVisitor) */
275 void astvalidation__AExpr__accept_ast_validation(val* self, val* p0) {
276 val* var_v /* var v: ASTValidationVisitor */;
277 short int var /* : Bool */;
278 val* var1 /* : nullable MType */;
279 val* var2 /* : null */;
280 short int var3 /* : Bool */;
281 short int var_ /* var : Bool */;
282 short int var4 /* : Bool */;
283 short int var5 /* : Bool */;
284 static val* varonce;
285 val* var6 /* : String */;
286 char* var7 /* : NativeString */;
287 long var8 /* : Int */;
288 val* var9 /* : String */;
289 var_v = p0;
290 ((void (*)(val*, val*))(self->class->vft[COLOR_astvalidation__AExpr__accept_ast_validation]))(self, p0) /* accept_ast_validation on <self:AExpr>*/;
291 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AExpr>*/;
292 var2 = NULL;
293 if (var1 == NULL) {
294 var3 = 1; /* is null */
295 } else {
296 var3 = 0; /* arg is null but recv is not */
297 }
298 var_ = var3;
299 if (var3){
300 var4 = ((short int (*)(val*))(self->class->vft[COLOR_typing__AExpr__is_typed]))(self) /* is_typed on <self:AExpr>*/;
301 var5 = !var4;
302 var = var5;
303 } else {
304 var = var_;
305 }
306 if (var){
307 if (varonce) {
308 var6 = varonce;
309 } else {
310 var7 = "TYPING: untyped expression";
311 var8 = 26;
312 var9 = string__NativeString__to_s_with_length(var7, var8);
313 var6 = var9;
314 varonce = var6;
315 }
316 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__debug]))(self, var6) /* debug on <self:AExpr>*/;
317 } else {
318 }
319 RET_LABEL:;
320 }
321 /* method astvalidation#AExpr#accept_ast_validation for (self: Object, ASTValidationVisitor) */
322 void VIRTUAL_astvalidation__AExpr__accept_ast_validation(val* self, val* p0) {
323 astvalidation__AExpr__accept_ast_validation(self, p0);
324 RET_LABEL:;
325 }
326 /* method astvalidation#APlaceholderExpr#accept_ast_validation for (self: APlaceholderExpr, ASTValidationVisitor) */
327 void astvalidation__APlaceholderExpr__accept_ast_validation(val* self, val* p0) {
328 val* var_v /* var v: ASTValidationVisitor */;
329 static val* varonce;
330 val* var /* : String */;
331 char* var1 /* : NativeString */;
332 long var2 /* : Int */;
333 val* var3 /* : String */;
334 var_v = p0;
335 ((void (*)(val*, val*))(self->class->vft[COLOR_astvalidation__APlaceholderExpr__accept_ast_validation]))(self, p0) /* accept_ast_validation on <self:APlaceholderExpr>*/;
336 if (varonce) {
337 var = varonce;
338 } else {
339 var1 = "PARENT: remaining placeholder";
340 var2 = 29;
341 var3 = string__NativeString__to_s_with_length(var1, var2);
342 var = var3;
343 varonce = var;
344 }
345 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__debug]))(self, var) /* debug on <self:APlaceholderExpr>*/;
346 RET_LABEL:;
347 }
348 /* method astvalidation#APlaceholderExpr#accept_ast_validation for (self: Object, ASTValidationVisitor) */
349 void VIRTUAL_astvalidation__APlaceholderExpr__accept_ast_validation(val* self, val* p0) {
350 astvalidation__APlaceholderExpr__accept_ast_validation(self, p0);
351 RET_LABEL:;
352 }