nitg-s: fix abstract methods in extern classes and add test
[nit.git] / c_src / typing.sep.2.c
1 #include "typing.sep.0.h"
2 /* method typing#ANewExpr#accept_typing for (self: ANewExpr, TypeVisitor) */
3 void typing__ANewExpr__accept_typing(val* self, val* p0) {
4 val* var_v /* var v: TypeVisitor */;
5 val* var /* : AType */;
6 val* var1 /* : nullable MType */;
7 val* var_recvtype /* var recvtype: nullable MType */;
8 val* var2 /* : null */;
9 short int var3 /* : Bool */;
10 short int var4 /* : Bool */;
11 int cltype;
12 int idtype;
13 short int var5 /* : Bool */;
14 short int var6 /* : Bool */;
15 int cltype7;
16 int idtype8;
17 static val* varonce;
18 val* var9 /* : String */;
19 char* var10 /* : NativeString */;
20 long var11 /* : Int */;
21 val* var12 /* : String */;
22 static val* varonce13;
23 val* var14 /* : String */;
24 char* var15 /* : NativeString */;
25 long var16 /* : Int */;
26 val* var17 /* : String */;
27 val* var18 /* : Array[Object] */;
28 long var19 /* : Int */;
29 val* var20 /* : NativeArray[Object] */;
30 val* var21 /* : String */;
31 static val* varonce22;
32 val* var23 /* : String */;
33 char* var24 /* : NativeString */;
34 long var25 /* : Int */;
35 val* var26 /* : String */;
36 static val* varonce27;
37 val* var28 /* : String */;
38 char* var29 /* : NativeString */;
39 long var30 /* : Int */;
40 val* var31 /* : String */;
41 val* var32 /* : Array[Object] */;
42 long var33 /* : Int */;
43 val* var34 /* : NativeArray[Object] */;
44 val* var35 /* : String */;
45 val* var36 /* : nullable TId */;
46 val* var_nid /* var nid: nullable TId */;
47 val* var37 /* : null */;
48 short int var38 /* : Bool */;
49 val* var39 /* : String */;
50 val* var_name /* var name: String */;
51 static val* varonce40;
52 val* var41 /* : String */;
53 char* var42 /* : NativeString */;
54 long var43 /* : Int */;
55 val* var44 /* : String */;
56 short int var45 /* : Bool */;
57 val* var46 /* : nullable CallSite */;
58 val* var_callsite /* var callsite: nullable CallSite */;
59 val* var47 /* : null */;
60 short int var48 /* : Bool */;
61 val* var49 /* : MMethod */;
62 val* var50 /* : MClass */;
63 short int var51 /* : Bool */;
64 short int var52 /* : Bool */;
65 static val* varonce53;
66 val* var54 /* : String */;
67 char* var55 /* : NativeString */;
68 long var56 /* : Int */;
69 val* var57 /* : String */;
70 static val* varonce58;
71 val* var59 /* : String */;
72 char* var60 /* : NativeString */;
73 long var61 /* : Int */;
74 val* var62 /* : String */;
75 val* var63 /* : Array[Object] */;
76 long var64 /* : Int */;
77 val* var65 /* : NativeArray[Object] */;
78 val* var66 /* : String */;
79 val* var67 /* : AExprs */;
80 val* var68 /* : Array[AExpr] */;
81 val* var_args /* var args: Array[AExpr] */;
82 short int var69 /* : Bool */;
83 var_v = p0;
84 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANewExpr__n_type]))(self) /* n_type on <self:ANewExpr>*/;
85 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__resolve_mtype]))(var_v, var) /* resolve_mtype on <var_v:TypeVisitor>*/;
86 var_recvtype = var1;
87 var2 = NULL;
88 if (var_recvtype == NULL) {
89 var3 = 1; /* is null */
90 } else {
91 var3 = 0; /* arg is null but recv is not */
92 }
93 if (var3){
94 goto RET_LABEL;
95 } else {
96 }
97 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var_recvtype) /* mtype= on <self:ANewExpr>*/;
98 /* <var_recvtype:nullable MType(MType)> isa MClassType */
99 cltype = type_model__MClassType.color;
100 idtype = type_model__MClassType.id;
101 if(cltype >= var_recvtype->type->table_size) {
102 var4 = 0;
103 } else {
104 var4 = var_recvtype->type->type_table[cltype] == idtype;
105 }
106 var5 = !var4;
107 if (var5){
108 /* <var_recvtype:nullable MType(MType)> isa MNullableType */
109 cltype7 = type_model__MNullableType.color;
110 idtype8 = type_model__MNullableType.id;
111 if(cltype7 >= var_recvtype->type->table_size) {
112 var6 = 0;
113 } else {
114 var6 = var_recvtype->type->type_table[cltype7] == idtype8;
115 }
116 if (var6){
117 if (varonce) {
118 var9 = varonce;
119 } else {
120 var10 = "Type error: cannot instantiate the nullable type ";
121 var11 = 49;
122 var12 = string__NativeString__to_s_with_length(var10, var11);
123 var9 = var12;
124 varonce = var9;
125 }
126 if (varonce13) {
127 var14 = varonce13;
128 } else {
129 var15 = ".";
130 var16 = 1;
131 var17 = string__NativeString__to_s_with_length(var15, var16);
132 var14 = var17;
133 varonce13 = var14;
134 }
135 var18 = NEW_array__Array(&type_array__Arraykernel__Object);
136 { /* var18 = array_instance Array[Object] */
137 var19 = 3;
138 var20 = NEW_array__NativeArray(var19, &type_array__NativeArraykernel__Object);
139 ((struct instance_array__NativeArray*)var20)->values[0] = (val*) var9;
140 ((struct instance_array__NativeArray*)var20)->values[1] = (val*) var_recvtype;
141 ((struct instance_array__NativeArray*)var20)->values[2] = (val*) var14;
142 ((void (*)(val*, val*, long))(var18->class->vft[COLOR_array__Array__with_native]))(var18, var20, var19) /* with_native on <var18:Array[Object]>*/;
143 CHECK_NEW_array__Array(var18);
144 }
145 var21 = ((val* (*)(val*))(var18->class->vft[COLOR_string__Object__to_s]))(var18) /* to_s on <var18:Array[Object]>*/;
146 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var21) /* error on <var_v:TypeVisitor>*/;
147 goto RET_LABEL;
148 } else {
149 if (varonce22) {
150 var23 = varonce22;
151 } else {
152 var24 = "Type error: cannot instantiate the formal type ";
153 var25 = 47;
154 var26 = string__NativeString__to_s_with_length(var24, var25);
155 var23 = var26;
156 varonce22 = var23;
157 }
158 if (varonce27) {
159 var28 = varonce27;
160 } else {
161 var29 = ".";
162 var30 = 1;
163 var31 = string__NativeString__to_s_with_length(var29, var30);
164 var28 = var31;
165 varonce27 = var28;
166 }
167 var32 = NEW_array__Array(&type_array__Arraykernel__Object);
168 { /* var32 = array_instance Array[Object] */
169 var33 = 3;
170 var34 = NEW_array__NativeArray(var33, &type_array__NativeArraykernel__Object);
171 ((struct instance_array__NativeArray*)var34)->values[0] = (val*) var23;
172 ((struct instance_array__NativeArray*)var34)->values[1] = (val*) var_recvtype;
173 ((struct instance_array__NativeArray*)var34)->values[2] = (val*) var28;
174 ((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[Object]>*/;
175 CHECK_NEW_array__Array(var32);
176 }
177 var35 = ((val* (*)(val*))(var32->class->vft[COLOR_string__Object__to_s]))(var32) /* to_s on <var32:Array[Object]>*/;
178 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var35) /* error on <var_v:TypeVisitor>*/;
179 goto RET_LABEL;
180 }
181 } else {
182 }
183 var36 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANewExpr__n_id]))(self) /* n_id on <self:ANewExpr>*/;
184 var_nid = var36;
185 var37 = NULL;
186 if (var_nid == NULL) {
187 var38 = 0; /* is null */
188 } else {
189 var38 = 1; /* arg is null and recv is not */
190 }
191 if (var38){
192 var39 = ((val* (*)(val*))(var_nid->class->vft[COLOR_parser_nodes__Token__text]))(var_nid) /* text on <var_nid:nullable TId(TId)>*/;
193 var_name = var39;
194 } else {
195 if (varonce40) {
196 var41 = varonce40;
197 } else {
198 var42 = "init";
199 var43 = 4;
200 var44 = string__NativeString__to_s_with_length(var42, var43);
201 var41 = var44;
202 varonce40 = var41;
203 }
204 var_name = var41;
205 }
206 var45 = 0;
207 var46 = ((val* (*)(val*, val*, val*, val*, short int))(var_v->class->vft[COLOR_typing__TypeVisitor__get_method]))(var_v, self, var_recvtype, var_name, var45) /* get_method on <var_v:TypeVisitor>*/;
208 var_callsite = var46;
209 var47 = NULL;
210 if (var_callsite == NULL) {
211 var48 = 1; /* is null */
212 } else {
213 var48 = 0; /* arg is null but recv is not */
214 }
215 if (var48){
216 goto RET_LABEL;
217 } else {
218 }
219 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ANewExpr__callsite_61d]))(self, var_callsite) /* callsite= on <self:ANewExpr>*/;
220 var49 = ((val* (*)(val*))(var_callsite->class->vft[COLOR_typing__CallSite__mproperty]))(var_callsite) /* mproperty on <var_callsite:nullable CallSite(CallSite)>*/;
221 var50 = ((val* (*)(val*))(var_recvtype->class->vft[COLOR_model__MClassType__mclass]))(var_recvtype) /* mclass on <var_recvtype:nullable MType(MClassType)>*/;
222 var51 = ((short int (*)(val*, val*))(var49->class->vft[COLOR_model__MMethod__is_init_for]))(var49, var50) /* is_init_for on <var49:MMethod>*/;
223 var52 = !var51;
224 if (var52){
225 if (varonce53) {
226 var54 = varonce53;
227 } else {
228 var55 = "Error: ";
229 var56 = 7;
230 var57 = string__NativeString__to_s_with_length(var55, var56);
231 var54 = var57;
232 varonce53 = var54;
233 }
234 if (varonce58) {
235 var59 = varonce58;
236 } else {
237 var60 = " is not a constructor.";
238 var61 = 22;
239 var62 = string__NativeString__to_s_with_length(var60, var61);
240 var59 = var62;
241 varonce58 = var59;
242 }
243 var63 = NEW_array__Array(&type_array__Arraykernel__Object);
244 { /* var63 = array_instance Array[Object] */
245 var64 = 3;
246 var65 = NEW_array__NativeArray(var64, &type_array__NativeArraykernel__Object);
247 ((struct instance_array__NativeArray*)var65)->values[0] = (val*) var54;
248 ((struct instance_array__NativeArray*)var65)->values[1] = (val*) var_name;
249 ((struct instance_array__NativeArray*)var65)->values[2] = (val*) var59;
250 ((void (*)(val*, val*, long))(var63->class->vft[COLOR_array__Array__with_native]))(var63, var65, var64) /* with_native on <var63:Array[Object]>*/;
251 CHECK_NEW_array__Array(var63);
252 }
253 var66 = ((val* (*)(val*))(var63->class->vft[COLOR_string__Object__to_s]))(var63) /* to_s on <var63:Array[Object]>*/;
254 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var66) /* error on <var_v:TypeVisitor>*/;
255 goto RET_LABEL;
256 } else {
257 }
258 var67 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANewExpr__n_args]))(self) /* n_args on <self:ANewExpr>*/;
259 var68 = ((val* (*)(val*))(var67->class->vft[COLOR_typing__AExprs__to_a]))(var67) /* to_a on <var67:AExprs>*/;
260 var_args = var68;
261 var69 = ((short int (*)(val*, val*, val*))(var_callsite->class->vft[COLOR_typing__CallSite__check_signature]))(var_callsite, var_v, var_args) /* check_signature on <var_callsite:nullable CallSite(CallSite)>*/;
262 var69;
263 RET_LABEL:;
264 }
265 /* method typing#ANewExpr#accept_typing for (self: Object, TypeVisitor) */
266 void VIRTUAL_typing__ANewExpr__accept_typing(val* self, val* p0) {
267 typing__ANewExpr__accept_typing(self, p0);
268 RET_LABEL:;
269 }
270 /* method typing#AAttrFormExpr#mproperty for (self: AAttrFormExpr): nullable MAttribute */
271 val* typing__AAttrFormExpr__mproperty(val* self) {
272 val* var /* : nullable MAttribute */;
273 val* var1 /* : nullable MAttribute */;
274 var1 = self->attrs[COLOR_typing__AAttrFormExpr___64dmproperty].val; /* @mproperty on <self:AAttrFormExpr> */
275 var = var1;
276 RET_LABEL:;
277 return var;
278 }
279 /* method typing#AAttrFormExpr#mproperty for (self: Object): nullable MAttribute */
280 val* VIRTUAL_typing__AAttrFormExpr__mproperty(val* self) {
281 val* var /* : nullable MAttribute */;
282 val* var1 /* : nullable MAttribute */;
283 var1 = typing__AAttrFormExpr__mproperty(self);
284 var = var1;
285 RET_LABEL:;
286 return var;
287 }
288 /* method typing#AAttrFormExpr#mproperty= for (self: AAttrFormExpr, nullable MAttribute) */
289 void typing__AAttrFormExpr__mproperty_61d(val* self, val* p0) {
290 self->attrs[COLOR_typing__AAttrFormExpr___64dmproperty].val = p0; /* @mproperty on <self:AAttrFormExpr> */
291 RET_LABEL:;
292 }
293 /* method typing#AAttrFormExpr#mproperty= for (self: Object, nullable MAttribute) */
294 void VIRTUAL_typing__AAttrFormExpr__mproperty_61d(val* self, val* p0) {
295 typing__AAttrFormExpr__mproperty_61d(self, p0);
296 RET_LABEL:;
297 }
298 /* method typing#AAttrFormExpr#attr_type for (self: AAttrFormExpr): nullable MType */
299 val* typing__AAttrFormExpr__attr_type(val* self) {
300 val* var /* : nullable MType */;
301 val* var1 /* : nullable MType */;
302 var1 = self->attrs[COLOR_typing__AAttrFormExpr___64dattr_type].val; /* @attr_type on <self:AAttrFormExpr> */
303 var = var1;
304 RET_LABEL:;
305 return var;
306 }
307 /* method typing#AAttrFormExpr#attr_type for (self: Object): nullable MType */
308 val* VIRTUAL_typing__AAttrFormExpr__attr_type(val* self) {
309 val* var /* : nullable MType */;
310 val* var1 /* : nullable MType */;
311 var1 = typing__AAttrFormExpr__attr_type(self);
312 var = var1;
313 RET_LABEL:;
314 return var;
315 }
316 /* method typing#AAttrFormExpr#attr_type= for (self: AAttrFormExpr, nullable MType) */
317 void typing__AAttrFormExpr__attr_type_61d(val* self, val* p0) {
318 self->attrs[COLOR_typing__AAttrFormExpr___64dattr_type].val = p0; /* @attr_type on <self:AAttrFormExpr> */
319 RET_LABEL:;
320 }
321 /* method typing#AAttrFormExpr#attr_type= for (self: Object, nullable MType) */
322 void VIRTUAL_typing__AAttrFormExpr__attr_type_61d(val* self, val* p0) {
323 typing__AAttrFormExpr__attr_type_61d(self, p0);
324 RET_LABEL:;
325 }
326 /* method typing#AAttrFormExpr#resolve_property for (self: AAttrFormExpr, TypeVisitor) */
327 void typing__AAttrFormExpr__resolve_property(val* self, val* p0) {
328 val* var_v /* var v: TypeVisitor */;
329 val* var /* : AExpr */;
330 val* var1 /* : nullable MType */;
331 val* var_recvtype /* var recvtype: nullable MType */;
332 val* var2 /* : null */;
333 short int var3 /* : Bool */;
334 val* var4 /* : TAttrid */;
335 val* var5 /* : String */;
336 val* var_name /* var name: String */;
337 short int var6 /* : Bool */;
338 int cltype;
339 int idtype;
340 static val* varonce;
341 val* var7 /* : String */;
342 char* var8 /* : NativeString */;
343 long var9 /* : Int */;
344 val* var10 /* : String */;
345 static val* varonce11;
346 val* var12 /* : String */;
347 char* var13 /* : NativeString */;
348 long var14 /* : Int */;
349 val* var15 /* : String */;
350 val* var16 /* : Array[Object] */;
351 long var17 /* : Int */;
352 val* var18 /* : NativeArray[Object] */;
353 val* var19 /* : String */;
354 val* var20 /* : MType */;
355 val* var_unsafe_type /* var unsafe_type: MType */;
356 val* var21 /* : nullable MProperty */;
357 val* var_mproperty /* var mproperty: nullable MProperty */;
358 val* var22 /* : null */;
359 short int var23 /* : Bool */;
360 val* var24 /* : ModelBuilder */;
361 static val* varonce25;
362 val* var26 /* : String */;
363 char* var27 /* : NativeString */;
364 long var28 /* : Int */;
365 val* var29 /* : String */;
366 static val* varonce30;
367 val* var31 /* : String */;
368 char* var32 /* : NativeString */;
369 long var33 /* : Int */;
370 val* var34 /* : String */;
371 static val* varonce35;
372 val* var36 /* : String */;
373 char* var37 /* : NativeString */;
374 long var38 /* : Int */;
375 val* var39 /* : String */;
376 val* var40 /* : Array[Object] */;
377 long var41 /* : Int */;
378 val* var42 /* : NativeArray[Object] */;
379 val* var43 /* : String */;
380 short int var44 /* : Bool */;
381 int cltype45;
382 int idtype46;
383 val* var47 /* : MModule */;
384 val* var48 /* : Array[MPropDef] */;
385 val* var_mpropdefs /* var mpropdefs: Array[MAttributeDef] */;
386 long var49 /* : Int */;
387 long var50 /* : Int */;
388 short int var51 /* : Bool */;
389 short int var53 /* : Bool */;
390 val* var54 /* : nullable Object */;
391 val* var_mpropdef /* var mpropdef: MAttributeDef */;
392 val* var55 /* : nullable MType */;
393 val* var_attr_type /* var attr_type: MType */;
394 val* var56 /* : AExpr */;
395 short int var57 /* : Bool */;
396 int cltype58;
397 int idtype59;
398 val* var60 /* : MType */;
399 var_v = p0;
400 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrFormExpr__n_expr]))(self) /* n_expr on <self:AAttrFormExpr>*/;
401 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
402 var_recvtype = var1;
403 var2 = NULL;
404 if (var_recvtype == NULL) {
405 var3 = 1; /* is null */
406 } else {
407 var3 = 0; /* arg is null but recv is not */
408 }
409 if (var3){
410 goto RET_LABEL;
411 } else {
412 }
413 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrFormExpr__n_id]))(self) /* n_id on <self:AAttrFormExpr>*/;
414 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_parser_nodes__Token__text]))(var4) /* text on <var4:TAttrid>*/;
415 var_name = var5;
416 /* <var_recvtype:nullable MType(MType)> isa MNullType */
417 cltype = type_model__MNullType.color;
418 idtype = type_model__MNullType.id;
419 if(cltype >= var_recvtype->type->table_size) {
420 var6 = 0;
421 } else {
422 var6 = var_recvtype->type->type_table[cltype] == idtype;
423 }
424 if (var6){
425 if (varonce) {
426 var7 = varonce;
427 } else {
428 var8 = "Error: Attribute \'";
429 var9 = 18;
430 var10 = string__NativeString__to_s_with_length(var8, var9);
431 var7 = var10;
432 varonce = var7;
433 }
434 if (varonce11) {
435 var12 = varonce11;
436 } else {
437 var13 = "\' access on \'null\'.";
438 var14 = 19;
439 var15 = string__NativeString__to_s_with_length(var13, var14);
440 var12 = var15;
441 varonce11 = var12;
442 }
443 var16 = NEW_array__Array(&type_array__Arraykernel__Object);
444 { /* var16 = array_instance Array[Object] */
445 var17 = 3;
446 var18 = NEW_array__NativeArray(var17, &type_array__NativeArraykernel__Object);
447 ((struct instance_array__NativeArray*)var18)->values[0] = (val*) var7;
448 ((struct instance_array__NativeArray*)var18)->values[1] = (val*) var_name;
449 ((struct instance_array__NativeArray*)var18)->values[2] = (val*) var12;
450 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[Object]>*/;
451 CHECK_NEW_array__Array(var16);
452 }
453 var19 = ((val* (*)(val*))(var16->class->vft[COLOR_string__Object__to_s]))(var16) /* to_s on <var16:Array[Object]>*/;
454 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var19) /* error on <var_v:TypeVisitor>*/;
455 goto RET_LABEL;
456 } else {
457 }
458 var20 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__anchor_to]))(var_v, var_recvtype) /* anchor_to on <var_v:TypeVisitor>*/;
459 var_unsafe_type = var20;
460 var21 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__try_get_mproperty_by_name2]))(var_v, self, var_unsafe_type, var_name) /* try_get_mproperty_by_name2 on <var_v:TypeVisitor>*/;
461 var_mproperty = var21;
462 var22 = NULL;
463 if (var_mproperty == NULL) {
464 var23 = 1; /* is null */
465 } else {
466 var23 = 0; /* arg is null but recv is not */
467 }
468 if (var23){
469 var24 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(var_v) /* modelbuilder on <var_v:TypeVisitor>*/;
470 if (varonce25) {
471 var26 = varonce25;
472 } else {
473 var27 = "Error: Attribute ";
474 var28 = 17;
475 var29 = string__NativeString__to_s_with_length(var27, var28);
476 var26 = var29;
477 varonce25 = var26;
478 }
479 if (varonce30) {
480 var31 = varonce30;
481 } else {
482 var32 = " doesn\'t exists in ";
483 var33 = 19;
484 var34 = string__NativeString__to_s_with_length(var32, var33);
485 var31 = var34;
486 varonce30 = var31;
487 }
488 if (varonce35) {
489 var36 = varonce35;
490 } else {
491 var37 = ".";
492 var38 = 1;
493 var39 = string__NativeString__to_s_with_length(var37, var38);
494 var36 = var39;
495 varonce35 = var36;
496 }
497 var40 = NEW_array__Array(&type_array__Arraykernel__Object);
498 { /* var40 = array_instance Array[Object] */
499 var41 = 5;
500 var42 = NEW_array__NativeArray(var41, &type_array__NativeArraykernel__Object);
501 ((struct instance_array__NativeArray*)var42)->values[0] = (val*) var26;
502 ((struct instance_array__NativeArray*)var42)->values[1] = (val*) var_name;
503 ((struct instance_array__NativeArray*)var42)->values[2] = (val*) var31;
504 ((struct instance_array__NativeArray*)var42)->values[3] = (val*) var_recvtype;
505 ((struct instance_array__NativeArray*)var42)->values[4] = (val*) var36;
506 ((void (*)(val*, val*, long))(var40->class->vft[COLOR_array__Array__with_native]))(var40, var42, var41) /* with_native on <var40:Array[Object]>*/;
507 CHECK_NEW_array__Array(var40);
508 }
509 var43 = ((val* (*)(val*))(var40->class->vft[COLOR_string__Object__to_s]))(var40) /* to_s on <var40:Array[Object]>*/;
510 ((void (*)(val*, val*, val*))(var24->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var24, self, var43) /* error on <var24:ModelBuilder>*/;
511 goto RET_LABEL;
512 } else {
513 }
514 /* <var_mproperty:nullable MProperty(MProperty)> isa MAttribute */
515 cltype45 = type_model__MAttribute.color;
516 idtype46 = type_model__MAttribute.id;
517 if(cltype45 >= var_mproperty->type->table_size) {
518 var44 = 0;
519 } else {
520 var44 = var_mproperty->type->type_table[cltype45] == idtype46;
521 }
522 if (!var44) {
523 fprintf(stderr, "Runtime error: %s", "Assert failed");
524 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1579);
525 exit(1);
526 }
527 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AAttrFormExpr__mproperty_61d]))(self, var_mproperty) /* mproperty= on <self:AAttrFormExpr>*/;
528 var47 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
529 var48 = ((val* (*)(val*, val*, val*))(var_mproperty->class->vft[COLOR_model__MProperty__lookup_definitions]))(var_mproperty, var47, var_unsafe_type) /* lookup_definitions on <var_mproperty:nullable MProperty(MAttribute)>*/;
530 var_mpropdefs = var48;
531 var49 = ((long (*)(val*))(var_mpropdefs->class->vft[COLOR_abstract_collection__Collection__length]))(var_mpropdefs) /* length on <var_mpropdefs:Array[MAttributeDef]>*/;
532 var50 = 1;
533 { /* Inline kernel#Int#== (var49,var50) */
534 var53 = var49 == var50;
535 var51 = var53;
536 goto RET_LABEL52;
537 RET_LABEL52:(void)0;
538 }
539 if (!var51) {
540 fprintf(stderr, "Runtime error: %s", "Assert failed");
541 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1583);
542 exit(1);
543 }
544 var54 = ((val* (*)(val*))(var_mpropdefs->class->vft[COLOR_abstract_collection__Collection__first]))(var_mpropdefs) /* first on <var_mpropdefs:Array[MAttributeDef]>*/;
545 var_mpropdef = var54;
546 var55 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MAttributeDef__static_mtype]))(var_mpropdef) /* static_mtype on <var_mpropdef:MAttributeDef>*/;
547 if (var55 == NULL) {
548 fprintf(stderr, "Runtime error: %s", "Cast failed");
549 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1585);
550 exit(1);
551 }
552 var_attr_type = var55;
553 var56 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrFormExpr__n_expr]))(self) /* n_expr on <self:AAttrFormExpr>*/;
554 /* <var56:AExpr> isa ASelfExpr */
555 cltype58 = type_parser_nodes__ASelfExpr.color;
556 idtype59 = type_parser_nodes__ASelfExpr.id;
557 if(cltype58 >= var56->type->table_size) {
558 var57 = 0;
559 } else {
560 var57 = var56->type->type_table[cltype58] == idtype59;
561 }
562 var60 = ((val* (*)(val*, val*, val*, short int))(var_v->class->vft[COLOR_typing__TypeVisitor__resolve_for]))(var_v, var_attr_type, var_recvtype, var57) /* resolve_for on <var_v:TypeVisitor>*/;
563 var_attr_type = var60;
564 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AAttrFormExpr__attr_type_61d]))(self, var_attr_type) /* attr_type= on <self:AAttrFormExpr>*/;
565 RET_LABEL:;
566 }
567 /* method typing#AAttrFormExpr#resolve_property for (self: Object, TypeVisitor) */
568 void VIRTUAL_typing__AAttrFormExpr__resolve_property(val* self, val* p0) {
569 typing__AAttrFormExpr__resolve_property(self, p0);
570 RET_LABEL:;
571 }
572 /* method typing#AAttrExpr#accept_typing for (self: AAttrExpr, TypeVisitor) */
573 void typing__AAttrExpr__accept_typing(val* self, val* p0) {
574 val* var_v /* var v: TypeVisitor */;
575 val* var /* : nullable MType */;
576 var_v = p0;
577 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AAttrFormExpr__resolve_property]))(self, var_v) /* resolve_property on <self:AAttrExpr>*/;
578 var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AAttrFormExpr__attr_type]))(self) /* attr_type on <self:AAttrExpr>*/;
579 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var) /* mtype= on <self:AAttrExpr>*/;
580 RET_LABEL:;
581 }
582 /* method typing#AAttrExpr#accept_typing for (self: Object, TypeVisitor) */
583 void VIRTUAL_typing__AAttrExpr__accept_typing(val* self, val* p0) {
584 typing__AAttrExpr__accept_typing(self, p0);
585 RET_LABEL:;
586 }
587 /* method typing#AAttrAssignExpr#accept_typing for (self: AAttrAssignExpr, TypeVisitor) */
588 void typing__AAttrAssignExpr__accept_typing(val* self, val* p0) {
589 val* var_v /* var v: TypeVisitor */;
590 val* var /* : nullable MType */;
591 val* var_mtype /* var mtype: nullable MType */;
592 val* var1 /* : AExpr */;
593 val* var2 /* : nullable MType */;
594 short int var3 /* : Bool */;
595 var_v = p0;
596 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AAttrFormExpr__resolve_property]))(self, var_v) /* resolve_property on <self:AAttrAssignExpr>*/;
597 var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AAttrFormExpr__attr_type]))(self) /* attr_type on <self:AAttrAssignExpr>*/;
598 var_mtype = var;
599 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssignFormExpr__n_value]))(self) /* n_value on <self:AAttrAssignExpr>*/;
600 var2 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_subtype]))(var_v, var1, var_mtype) /* visit_expr_subtype on <var_v:TypeVisitor>*/;
601 var2;
602 var3 = 1;
603 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var3) /* is_typed= on <self:AAttrAssignExpr>*/;
604 RET_LABEL:;
605 }
606 /* method typing#AAttrAssignExpr#accept_typing for (self: Object, TypeVisitor) */
607 void VIRTUAL_typing__AAttrAssignExpr__accept_typing(val* self, val* p0) {
608 typing__AAttrAssignExpr__accept_typing(self, p0);
609 RET_LABEL:;
610 }
611 /* method typing#AAttrReassignExpr#accept_typing for (self: AAttrReassignExpr, TypeVisitor) */
612 void typing__AAttrReassignExpr__accept_typing(val* self, val* p0) {
613 val* var_v /* var v: TypeVisitor */;
614 val* var /* : nullable MType */;
615 val* var_mtype /* var mtype: nullable MType */;
616 val* var1 /* : null */;
617 short int var2 /* : Bool */;
618 val* var3 /* : nullable MType */;
619 short int var4 /* : Bool */;
620 var_v = p0;
621 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AAttrFormExpr__resolve_property]))(self, var_v) /* resolve_property on <self:AAttrReassignExpr>*/;
622 var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AAttrFormExpr__attr_type]))(self) /* attr_type on <self:AAttrReassignExpr>*/;
623 var_mtype = var;
624 var1 = NULL;
625 if (var_mtype == NULL) {
626 var2 = 1; /* is null */
627 } else {
628 var2 = 0; /* arg is null but recv is not */
629 }
630 if (var2){
631 goto RET_LABEL;
632 } else {
633 }
634 var3 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_typing__AReassignFormExpr__resolve_reassignment]))(self, var_v, var_mtype, var_mtype) /* resolve_reassignment on <self:AAttrReassignExpr>*/;
635 var3;
636 var4 = 1;
637 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var4) /* is_typed= on <self:AAttrReassignExpr>*/;
638 RET_LABEL:;
639 }
640 /* method typing#AAttrReassignExpr#accept_typing for (self: Object, TypeVisitor) */
641 void VIRTUAL_typing__AAttrReassignExpr__accept_typing(val* self, val* p0) {
642 typing__AAttrReassignExpr__accept_typing(self, p0);
643 RET_LABEL:;
644 }
645 /* method typing#AIssetAttrExpr#accept_typing for (self: AIssetAttrExpr, TypeVisitor) */
646 void typing__AIssetAttrExpr__accept_typing(val* self, val* p0) {
647 val* var_v /* var v: TypeVisitor */;
648 val* var /* : nullable MType */;
649 val* var_mtype /* var mtype: nullable MType */;
650 val* var1 /* : null */;
651 short int var2 /* : Bool */;
652 val* var3 /* : AExpr */;
653 val* var4 /* : nullable MType */;
654 val* var_recvtype /* var recvtype: MType */;
655 short int var5 /* : Bool */;
656 val* var6 /* : MType */;
657 val* var_bound /* var bound: MType */;
658 short int var7 /* : Bool */;
659 int cltype;
660 int idtype;
661 static val* varonce;
662 val* var8 /* : String */;
663 char* var9 /* : NativeString */;
664 long var10 /* : Int */;
665 val* var11 /* : String */;
666 val* var12 /* : nullable MType */;
667 var_v = p0;
668 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AAttrFormExpr__resolve_property]))(self, var_v) /* resolve_property on <self:AIssetAttrExpr>*/;
669 var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AAttrFormExpr__attr_type]))(self) /* attr_type on <self:AIssetAttrExpr>*/;
670 var_mtype = var;
671 var1 = NULL;
672 if (var_mtype == NULL) {
673 var2 = 1; /* is null */
674 } else {
675 var2 = 0; /* arg is null but recv is not */
676 }
677 if (var2){
678 goto RET_LABEL;
679 } else {
680 }
681 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrFormExpr__n_expr]))(self) /* n_expr on <self:AIssetAttrExpr>*/;
682 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_typing__AExpr__mtype]))(var3) /* mtype on <var3:AExpr>*/;
683 if (var4 == NULL) {
684 fprintf(stderr, "Runtime error: %s", "Cast failed");
685 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1631);
686 exit(1);
687 }
688 var_recvtype = var4;
689 var5 = 0;
690 var6 = ((val* (*)(val*, val*, val*, short int))(var_v->class->vft[COLOR_typing__TypeVisitor__resolve_for]))(var_v, var_mtype, var_recvtype, var5) /* resolve_for on <var_v:TypeVisitor>*/;
691 var_bound = var6;
692 /* <var_bound:MType> isa MNullableType */
693 cltype = type_model__MNullableType.color;
694 idtype = type_model__MNullableType.id;
695 if(cltype >= var_bound->type->table_size) {
696 var7 = 0;
697 } else {
698 var7 = var_bound->type->type_table[cltype] == idtype;
699 }
700 if (var7){
701 if (varonce) {
702 var8 = varonce;
703 } else {
704 var9 = "Error: isset on a nullable attribute.";
705 var10 = 37;
706 var11 = string__NativeString__to_s_with_length(var9, var10);
707 var8 = var11;
708 varonce = var8;
709 }
710 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var8) /* error on <var_v:TypeVisitor>*/;
711 } else {
712 }
713 var12 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
714 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var12) /* mtype= on <self:AIssetAttrExpr>*/;
715 RET_LABEL:;
716 }
717 /* method typing#AIssetAttrExpr#accept_typing for (self: Object, TypeVisitor) */
718 void VIRTUAL_typing__AIssetAttrExpr__accept_typing(val* self, val* p0) {
719 typing__AIssetAttrExpr__accept_typing(self, p0);
720 RET_LABEL:;
721 }
722 /* method typing#ADebugTypeExpr#accept_typing for (self: ADebugTypeExpr, TypeVisitor) */
723 void typing__ADebugTypeExpr__accept_typing(val* self, val* p0) {
724 val* var_v /* var v: TypeVisitor */;
725 val* var /* : AExpr */;
726 val* var1 /* : nullable MType */;
727 val* var_expr /* var expr: nullable MType */;
728 val* var2 /* : null */;
729 short int var3 /* : Bool */;
730 val* var4 /* : MType */;
731 val* var_unsafe /* var unsafe: MType */;
732 val* var5 /* : AType */;
733 val* var_ntype /* var ntype: AType */;
734 val* var6 /* : nullable MType */;
735 val* var_mtype /* var mtype: nullable MType */;
736 short int var7 /* : Bool */;
737 val* var8 /* : null */;
738 short int var9 /* : Bool */;
739 short int var_ /* var : Bool */;
740 short int var10 /* : Bool */;
741 val* var11 /* : MType */;
742 val* var_umtype /* var umtype: MType */;
743 val* var12 /* : ModelBuilder */;
744 static val* varonce;
745 val* var13 /* : String */;
746 char* var14 /* : NativeString */;
747 long var15 /* : Int */;
748 val* var16 /* : String */;
749 static val* varonce17;
750 val* var18 /* : String */;
751 char* var19 /* : NativeString */;
752 long var20 /* : Int */;
753 val* var21 /* : String */;
754 static val* varonce22;
755 val* var23 /* : String */;
756 char* var24 /* : NativeString */;
757 long var25 /* : Int */;
758 val* var26 /* : String */;
759 static val* varonce27;
760 val* var28 /* : String */;
761 char* var29 /* : NativeString */;
762 long var30 /* : Int */;
763 val* var31 /* : String */;
764 static val* varonce32;
765 val* var33 /* : String */;
766 char* var34 /* : NativeString */;
767 long var35 /* : Int */;
768 val* var36 /* : String */;
769 val* var37 /* : Array[Object] */;
770 long var38 /* : Int */;
771 val* var39 /* : NativeArray[Object] */;
772 val* var40 /* : String */;
773 short int var41 /* : Bool */;
774 var_v = p0;
775 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ADebugTypeExpr__n_expr]))(self) /* n_expr on <self:ADebugTypeExpr>*/;
776 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
777 var_expr = var1;
778 var2 = NULL;
779 if (var_expr == NULL) {
780 var3 = 1; /* is null */
781 } else {
782 var3 = 0; /* arg is null but recv is not */
783 }
784 if (var3){
785 goto RET_LABEL;
786 } else {
787 }
788 var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__anchor_to]))(var_v, var_expr) /* anchor_to on <var_v:TypeVisitor>*/;
789 var_unsafe = var4;
790 var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ADebugTypeExpr__n_type]))(self) /* n_type on <self:ADebugTypeExpr>*/;
791 var_ntype = var5;
792 var6 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__resolve_mtype]))(var_v, var_ntype) /* resolve_mtype on <var_v:TypeVisitor>*/;
793 var_mtype = var6;
794 var8 = NULL;
795 if (var_mtype == NULL) {
796 var9 = 0; /* is null */
797 } else {
798 var9 = 1; /* arg is null and recv is not */
799 }
800 var_ = var9;
801 if (var9){
802 var10 = ((short int (*)(val*, val*))(var_mtype->class->vft[COLOR_kernel__Object___33d_61d]))(var_mtype, var_expr) /* != on <var_mtype:nullable MType(MType)>*/;
803 var7 = var10;
804 } else {
805 var7 = var_;
806 }
807 if (var7){
808 var11 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__anchor_to]))(var_v, var_mtype) /* anchor_to on <var_v:TypeVisitor>*/;
809 var_umtype = var11;
810 var12 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(var_v) /* modelbuilder on <var_v:TypeVisitor>*/;
811 if (varonce) {
812 var13 = varonce;
813 } else {
814 var14 = "Found type ";
815 var15 = 11;
816 var16 = string__NativeString__to_s_with_length(var14, var15);
817 var13 = var16;
818 varonce = var13;
819 }
820 if (varonce17) {
821 var18 = varonce17;
822 } else {
823 var19 = " (-> ";
824 var20 = 5;
825 var21 = string__NativeString__to_s_with_length(var19, var20);
826 var18 = var21;
827 varonce17 = var18;
828 }
829 if (varonce22) {
830 var23 = varonce22;
831 } else {
832 var24 = "), expected ";
833 var25 = 12;
834 var26 = string__NativeString__to_s_with_length(var24, var25);
835 var23 = var26;
836 varonce22 = var23;
837 }
838 if (varonce27) {
839 var28 = varonce27;
840 } else {
841 var29 = " (-> ";
842 var30 = 5;
843 var31 = string__NativeString__to_s_with_length(var29, var30);
844 var28 = var31;
845 varonce27 = var28;
846 }
847 if (varonce32) {
848 var33 = varonce32;
849 } else {
850 var34 = ")";
851 var35 = 1;
852 var36 = string__NativeString__to_s_with_length(var34, var35);
853 var33 = var36;
854 varonce32 = var33;
855 }
856 var37 = NEW_array__Array(&type_array__Arraykernel__Object);
857 { /* var37 = array_instance Array[Object] */
858 var38 = 9;
859 var39 = NEW_array__NativeArray(var38, &type_array__NativeArraykernel__Object);
860 ((struct instance_array__NativeArray*)var39)->values[0] = (val*) var13;
861 ((struct instance_array__NativeArray*)var39)->values[1] = (val*) var_expr;
862 ((struct instance_array__NativeArray*)var39)->values[2] = (val*) var18;
863 ((struct instance_array__NativeArray*)var39)->values[3] = (val*) var_unsafe;
864 ((struct instance_array__NativeArray*)var39)->values[4] = (val*) var23;
865 ((struct instance_array__NativeArray*)var39)->values[5] = (val*) var_mtype;
866 ((struct instance_array__NativeArray*)var39)->values[6] = (val*) var28;
867 ((struct instance_array__NativeArray*)var39)->values[7] = (val*) var_umtype;
868 ((struct instance_array__NativeArray*)var39)->values[8] = (val*) var33;
869 ((void (*)(val*, val*, long))(var37->class->vft[COLOR_array__Array__with_native]))(var37, var39, var38) /* with_native on <var37:Array[Object]>*/;
870 CHECK_NEW_array__Array(var37);
871 }
872 var40 = ((val* (*)(val*))(var37->class->vft[COLOR_string__Object__to_s]))(var37) /* to_s on <var37:Array[Object]>*/;
873 ((void (*)(val*, val*, val*))(var12->class->vft[COLOR_modelbuilder__ModelBuilder__warning]))(var12, self, var40) /* warning on <var12:ModelBuilder>*/;
874 } else {
875 }
876 var41 = 1;
877 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var41) /* is_typed= on <self:ADebugTypeExpr>*/;
878 RET_LABEL:;
879 }
880 /* method typing#ADebugTypeExpr#accept_typing for (self: Object, TypeVisitor) */
881 void VIRTUAL_typing__ADebugTypeExpr__accept_typing(val* self, val* p0) {
882 typing__ADebugTypeExpr__accept_typing(self, p0);
883 RET_LABEL:;
884 }