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