Merge: Pep8analysis Web Version
[nit.git] / c_src / typing.sep.2.c
1 #include "typing.sep.0.h"
2 /* method typing#ASuperExpr#process_superinit for (self: ASuperExpr, TypeVisitor) */
3 void typing__ASuperExpr__process_superinit(val* self, val* p0) {
4 val* var_v /* var v: TypeVisitor */;
5 val* var /* : AClassdef */;
6 val* var1 /* : nullable MClassDef */;
7 val* var2 /* : MClassType */;
8 val* var_recvtype /* var recvtype: MClassType */;
9 val* var3 /* : MPropDef */;
10 val* var_mpropdef /* var mpropdef: MPropDef */;
11 short int var4 /* : Bool */;
12 int cltype;
13 int idtype;
14 val* var5 /* : MProperty */;
15 val* var_mproperty /* var mproperty: MMethod */;
16 val* var6 /* : null */;
17 val* var_superprop /* var superprop: nullable MMethodDef */;
18 val* var7 /* : AClassdef */;
19 val* var8 /* : nullable MClassDef */;
20 val* var9 /* : Array[MClassType] */;
21 val* var10 /* : Iterator[nullable Object] */;
22 short int var11 /* : Bool */;
23 val* var12 /* : nullable Object */;
24 val* var_msupertype /* var msupertype: MClassType */;
25 val* var13 /* : MModule */;
26 val* var14 /* : MType */;
27 val* var15 /* : ModelBuilder */;
28 val* var16 /* : ToolContext */;
29 long var17 /* : Int */;
30 long var_errcount /* var errcount: Int */;
31 val* var18 /* : String */;
32 val* var19 /* : nullable MProperty */;
33 short int var20 /* : Bool */;
34 int cltype21;
35 int idtype22;
36 const char* var_class_name;
37 val* var_candidate /* var candidate: nullable MMethod */;
38 val* var23 /* : null */;
39 short int var24 /* : Bool */;
40 val* var25 /* : ModelBuilder */;
41 val* var26 /* : ToolContext */;
42 long var27 /* : Int */;
43 short int var28 /* : Bool */;
44 short int var30 /* : Bool */;
45 int cltype31;
46 int idtype32;
47 const char* var_class_name33;
48 short int var34 /* : Bool */;
49 short int var35 /* : Bool */;
50 val* var36 /* : null */;
51 short int var37 /* : Bool */;
52 short int var_ /* var : Bool */;
53 val* var38 /* : MProperty */;
54 short int var39 /* : Bool */;
55 static val* varonce;
56 val* var40 /* : String */;
57 char* var41 /* : NativeString */;
58 long var42 /* : Int */;
59 val* var43 /* : String */;
60 static val* varonce44;
61 val* var45 /* : String */;
62 char* var46 /* : NativeString */;
63 long var47 /* : Int */;
64 val* var48 /* : String */;
65 val* var49 /* : String */;
66 static val* varonce50;
67 val* var51 /* : String */;
68 char* var52 /* : NativeString */;
69 long var53 /* : Int */;
70 val* var54 /* : String */;
71 val* var55 /* : MProperty */;
72 val* var56 /* : String */;
73 val* var57 /* : Array[Object] */;
74 long var58 /* : Int */;
75 val* var59 /* : NativeArray[Object] */;
76 val* var60 /* : String */;
77 val* var61 /* : MModule */;
78 val* var62 /* : Array[MPropDef] */;
79 val* var_candidatedefs /* var candidatedefs: Array[MMethodDef] */;
80 val* var63 /* : null */;
81 short int var64 /* : Bool */;
82 val* var65 /* : nullable Object */;
83 short int var66 /* : Bool */;
84 long var67 /* : Int */;
85 long var68 /* : Int */;
86 short int var69 /* : Bool */;
87 short int var71 /* : Bool */;
88 int cltype72;
89 int idtype73;
90 const char* var_class_name74;
91 short int var75 /* : Bool */;
92 static val* varonce76;
93 val* var77 /* : String */;
94 char* var78 /* : NativeString */;
95 long var79 /* : Int */;
96 val* var80 /* : String */;
97 static val* varonce81;
98 val* var82 /* : String */;
99 char* var83 /* : NativeString */;
100 long var84 /* : Int */;
101 val* var85 /* : String */;
102 static val* varonce86;
103 val* var87 /* : String */;
104 char* var88 /* : NativeString */;
105 long var89 /* : Int */;
106 val* var90 /* : String */;
107 static val* varonce91;
108 val* var92 /* : String */;
109 char* var93 /* : NativeString */;
110 long var94 /* : Int */;
111 val* var95 /* : String */;
112 val* var96 /* : String */;
113 val* var97 /* : Array[Object] */;
114 long var98 /* : Int */;
115 val* var99 /* : NativeArray[Object] */;
116 val* var100 /* : String */;
117 val* var101 /* : nullable Object */;
118 val* var102 /* : null */;
119 short int var103 /* : Bool */;
120 static val* varonce104;
121 val* var105 /* : String */;
122 char* var106 /* : NativeString */;
123 long var107 /* : Int */;
124 val* var108 /* : String */;
125 static val* varonce109;
126 val* var110 /* : String */;
127 char* var111 /* : NativeString */;
128 long var112 /* : Int */;
129 val* var113 /* : String */;
130 val* var114 /* : Array[Object] */;
131 long var115 /* : Int */;
132 val* var116 /* : NativeArray[Object] */;
133 val* var117 /* : String */;
134 short int var118 /* : Bool */;
135 val* var119 /* : MSignature */;
136 val* var_msignature /* var msignature: MSignature */;
137 val* var120 /* : CallSite */;
138 short int var121 /* : Bool */;
139 val* var122 /* : MProperty */;
140 short int var123 /* : Bool */;
141 val* var_callsite /* var callsite: CallSite */;
142 val* var124 /* : AExprs */;
143 val* var125 /* : Array[AExpr] */;
144 val* var_args /* var args: Array[AExpr] */;
145 long var126 /* : Int */;
146 long var127 /* : Int */;
147 short int var128 /* : Bool */;
148 short int var130 /* : Bool */;
149 int cltype131;
150 int idtype132;
151 const char* var_class_name133;
152 short int var134 /* : Bool */;
153 short int var135 /* : Bool */;
154 val* var136 /* : nullable MSignature */;
155 long var137 /* : Int */;
156 long var138 /* : Int */;
157 short int var139 /* : Bool */;
158 short int var141 /* : Bool */;
159 int cltype142;
160 int idtype143;
161 const char* var_class_name144;
162 short int var145 /* : Bool */;
163 static val* varonce146;
164 val* var147 /* : String */;
165 char* var148 /* : NativeString */;
166 long var149 /* : Int */;
167 val* var150 /* : String */;
168 val* var151 /* : nullable MSignature */;
169 long var152 /* : Int */;
170 static val* varonce153;
171 val* var154 /* : String */;
172 char* var155 /* : NativeString */;
173 long var156 /* : Int */;
174 val* var157 /* : String */;
175 long var158 /* : Int */;
176 static val* varonce159;
177 val* var160 /* : String */;
178 char* var161 /* : NativeString */;
179 long var162 /* : Int */;
180 val* var163 /* : String */;
181 val* var164 /* : Array[Object] */;
182 long var165 /* : Int */;
183 val* var166 /* : NativeArray[Object] */;
184 val* var167 /* : Object */;
185 val* var168 /* : Object */;
186 val* var169 /* : String */;
187 long var170 /* : Int */;
188 long var_i /* var i: Int */;
189 val* var171 /* : Array[MParameter] */;
190 val* var172 /* : Iterator[nullable Object] */;
191 short int var173 /* : Bool */;
192 val* var174 /* : nullable Object */;
193 val* var_sp /* var sp: MParameter */;
194 val* var175 /* : nullable MSignature */;
195 val* var176 /* : Array[MParameter] */;
196 val* var177 /* : nullable Object */;
197 val* var_p /* var p: MParameter */;
198 val* var178 /* : MType */;
199 val* var179 /* : MType */;
200 short int var180 /* : Bool */;
201 short int var181 /* : Bool */;
202 static val* varonce182;
203 val* var183 /* : String */;
204 char* var184 /* : NativeString */;
205 long var185 /* : Int */;
206 val* var186 /* : String */;
207 static val* varonce187;
208 val* var188 /* : String */;
209 char* var189 /* : NativeString */;
210 long var190 /* : Int */;
211 val* var191 /* : String */;
212 val* var192 /* : MType */;
213 static val* varonce193;
214 val* var194 /* : String */;
215 char* var195 /* : NativeString */;
216 long var196 /* : Int */;
217 val* var197 /* : String */;
218 val* var198 /* : String */;
219 static val* varonce199;
220 val* var200 /* : String */;
221 char* var201 /* : NativeString */;
222 long var202 /* : Int */;
223 val* var203 /* : String */;
224 val* var204 /* : MType */;
225 static val* varonce205;
226 val* var206 /* : String */;
227 char* var207 /* : NativeString */;
228 long var208 /* : Int */;
229 val* var209 /* : String */;
230 val* var210 /* : Array[Object] */;
231 long var211 /* : Int */;
232 val* var212 /* : NativeArray[Object] */;
233 val* var213 /* : Object */;
234 val* var214 /* : String */;
235 long var215 /* : Int */;
236 long var216 /* : Int */;
237 long var218 /* : Int */;
238 short int var220 /* : Bool */;
239 var_v = p0;
240 var = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(var_v) /* nclassdef on <var_v:TypeVisitor>*/;
241 var1 = ((val* (*)(val*))(var->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var) /* mclassdef on <var:AClassdef>*/;
242 if (var1 == NULL) {
243 fprintf(stderr, "Runtime error: %s", "Receiver is null");
244 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1460);
245 show_backtrace(1);
246 } else {
247 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MClassDef__bound_mtype]))(var1) /* bound_mtype on <var1:nullable MClassDef>*/;
248 }
249 var_recvtype = var2;
250 var3 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mpropdef]))(var_v) /* mpropdef on <var_v:TypeVisitor>*/;
251 var_mpropdef = var3;
252 /* <var_mpropdef:MPropDef> isa MMethodDef */
253 cltype = type_model__MMethodDef.color;
254 idtype = type_model__MMethodDef.id;
255 if(cltype >= var_mpropdef->type->table_size) {
256 var4 = 0;
257 } else {
258 var4 = var_mpropdef->type->type_table[cltype] == idtype;
259 }
260 if (!var4) {
261 fprintf(stderr, "Runtime error: %s", "Assert failed");
262 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1462);
263 show_backtrace(1);
264 }
265 var5 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mpropdef) /* mproperty on <var_mpropdef:MPropDef(MMethodDef)>*/;
266 var_mproperty = var5;
267 var6 = NULL;
268 var_superprop = var6;
269 var7 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(var_v) /* nclassdef on <var_v:TypeVisitor>*/;
270 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var7) /* mclassdef on <var7:AClassdef>*/;
271 if (var8 == NULL) {
272 fprintf(stderr, "Runtime error: %s", "Receiver is null");
273 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1465);
274 show_backtrace(1);
275 } else {
276 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_model__MClassDef__supertypes]))(var8) /* supertypes on <var8:nullable MClassDef>*/;
277 }
278 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Collection__iterator]))(var9) /* iterator on <var9:Array[MClassType]>*/;
279 for(;;) {
280 var11 = ((short int (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var10) /* is_ok on <var10:Iterator[nullable Object]>*/;
281 if(!var11) break;
282 var12 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__item]))(var10) /* item on <var10:Iterator[nullable Object]>*/;
283 var_msupertype = var12;
284 var13 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
285 var14 = ((val* (*)(val*, val*, val*))(var_msupertype->class->vft[COLOR_model__MType__anchor_to]))(var_msupertype, var13, var_recvtype) /* anchor_to on <var_msupertype:MClassType>*/;
286 var_msupertype = var14;
287 var15 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(var_v) /* modelbuilder on <var_v:TypeVisitor>*/;
288 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var15) /* toolcontext on <var15:ModelBuilder>*/;
289 var17 = ((long (*)(val*))(var16->class->vft[COLOR_toolcontext__ToolContext__error_count]))(var16) /* error_count on <var16:ToolContext>*/;
290 var_errcount = var17;
291 var18 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__name]))(var_mproperty) /* name on <var_mproperty:MMethod>*/;
292 var19 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__try_get_mproperty_by_name2]))(var_v, self, var_msupertype, var18) /* try_get_mproperty_by_name2 on <var_v:TypeVisitor>*/;
293 /* <var19:nullable MProperty> isa nullable MMethod */
294 cltype21 = type_nullable_model__MMethod.color;
295 idtype22 = type_nullable_model__MMethod.id;
296 if(var19 == NULL) {
297 var20 = 1;
298 } else {
299 if(cltype21 >= var19->type->table_size) {
300 var20 = 0;
301 } else {
302 var20 = var19->type->type_table[cltype21] == idtype22;
303 }
304 }
305 if (!var20) {
306 var_class_name = var19 == NULL ? "null" : var19->type->name;
307 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MMethod", var_class_name);
308 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1468);
309 show_backtrace(1);
310 }
311 var_candidate = var19;
312 var23 = NULL;
313 if (var_candidate == NULL) {
314 var24 = 1; /* is null */
315 } else {
316 var24 = 0; /* arg is null but recv is not */
317 }
318 if (var24){
319 var25 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(var_v) /* modelbuilder on <var_v:TypeVisitor>*/;
320 var26 = ((val* (*)(val*))(var25->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var25) /* toolcontext on <var25:ModelBuilder>*/;
321 var27 = ((long (*)(val*))(var26->class->vft[COLOR_toolcontext__ToolContext__error_count]))(var26) /* error_count on <var26:ToolContext>*/;
322 { /* Inline kernel#Int#> (var27,var_errcount) */
323 /* Covariant cast for argument 0 (i) <var_errcount:Int> isa OTHER */
324 /* <var_errcount:Int> isa OTHER */
325 var30 = 1; /* easy <var_errcount:Int> isa OTHER*/
326 if (!var30) {
327 var_class_name33 = type_kernel__Int.name;
328 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name33);
329 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
330 show_backtrace(1);
331 }
332 var34 = var27 > var_errcount;
333 var28 = var34;
334 goto RET_LABEL29;
335 RET_LABEL29:(void)0;
336 }
337 if (var28){
338 goto RET_LABEL;
339 } else {
340 }
341 goto CONTINUE_label;
342 } else {
343 }
344 var36 = NULL;
345 if (var_superprop == NULL) {
346 var37 = 0; /* is null */
347 } else {
348 var37 = 1; /* arg is null and recv is not */
349 }
350 var_ = var37;
351 if (var37){
352 var38 = ((val* (*)(val*))(var_superprop->class->vft[COLOR_model__MPropDef__mproperty]))(var_superprop) /* mproperty on <var_superprop:nullable MMethodDef(MMethodDef)>*/;
353 var39 = ((short int (*)(val*, val*))(var38->class->vft[COLOR_kernel__Object___33d_61d]))(var38, var_candidate) /* != on <var38:MProperty(MMethod)>*/;
354 var35 = var39;
355 } else {
356 var35 = var_;
357 }
358 if (var35){
359 if (varonce) {
360 var40 = varonce;
361 } else {
362 var41 = "Error: conflicting super constructor to call for ";
363 var42 = 49;
364 var43 = string__NativeString__to_s_with_length(var41, var42);
365 var40 = var43;
366 varonce = var40;
367 }
368 if (varonce44) {
369 var45 = varonce44;
370 } else {
371 var46 = ": ";
372 var47 = 2;
373 var48 = string__NativeString__to_s_with_length(var46, var47);
374 var45 = var48;
375 varonce44 = var45;
376 }
377 var49 = ((val* (*)(val*))(var_candidate->class->vft[COLOR_model__MProperty__full_name]))(var_candidate) /* full_name on <var_candidate:nullable MMethod(MMethod)>*/;
378 if (varonce50) {
379 var51 = varonce50;
380 } else {
381 var52 = ", ";
382 var53 = 2;
383 var54 = string__NativeString__to_s_with_length(var52, var53);
384 var51 = var54;
385 varonce50 = var51;
386 }
387 var55 = ((val* (*)(val*))(var_superprop->class->vft[COLOR_model__MPropDef__mproperty]))(var_superprop) /* mproperty on <var_superprop:nullable MMethodDef(MMethodDef)>*/;
388 var56 = ((val* (*)(val*))(var55->class->vft[COLOR_model__MProperty__full_name]))(var55) /* full_name on <var55:MProperty(MMethod)>*/;
389 var57 = NEW_array__Array(&type_array__Arraykernel__Object);
390 { /* var57 = array_instance Array[Object] */
391 var58 = 6;
392 var59 = NEW_array__NativeArray(var58, &type_array__NativeArraykernel__Object);
393 ((struct instance_array__NativeArray*)var59)->values[0] = (val*) var40;
394 ((struct instance_array__NativeArray*)var59)->values[1] = (val*) var_mproperty;
395 ((struct instance_array__NativeArray*)var59)->values[2] = (val*) var45;
396 ((struct instance_array__NativeArray*)var59)->values[3] = (val*) var49;
397 ((struct instance_array__NativeArray*)var59)->values[4] = (val*) var51;
398 ((struct instance_array__NativeArray*)var59)->values[5] = (val*) var56;
399 ((void (*)(val*, val*, long))(var57->class->vft[COLOR_array__Array__with_native]))(var57, var59, var58) /* with_native on <var57:Array[Object]>*/;
400 }
401 var60 = ((val* (*)(val*))(var57->class->vft[COLOR_string__Object__to_s]))(var57) /* to_s on <var57:Array[Object]>*/;
402 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var60) /* error on <var_v:TypeVisitor>*/;
403 goto RET_LABEL;
404 } else {
405 }
406 var61 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
407 var62 = ((val* (*)(val*, val*, val*))(var_candidate->class->vft[COLOR_model__MProperty__lookup_definitions]))(var_candidate, var61, var_recvtype) /* lookup_definitions on <var_candidate:nullable MMethod(MMethod)>*/;
408 var_candidatedefs = var62;
409 var63 = NULL;
410 if (var_superprop == NULL) {
411 var64 = 0; /* is null */
412 } else {
413 var64 = 1; /* arg is null and recv is not */
414 }
415 if (var64){
416 var65 = ((val* (*)(val*))(var_candidatedefs->class->vft[COLOR_abstract_collection__Collection__first]))(var_candidatedefs) /* first on <var_candidatedefs:Array[MMethodDef]>*/;
417 var66 = ((short int (*)(val*, val*))(var_superprop->class->vft[COLOR_kernel__Object___61d_61d]))(var_superprop, var65) /* == on <var_superprop:nullable MMethodDef(MMethodDef)>*/;
418 if (var66){
419 goto CONTINUE_label;
420 } else {
421 }
422 ((void (*)(val*, val*))(var_candidatedefs->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_candidatedefs, var_superprop) /* add on <var_candidatedefs:Array[MMethodDef]>*/;
423 } else {
424 }
425 var67 = ((long (*)(val*))(var_candidatedefs->class->vft[COLOR_abstract_collection__Collection__length]))(var_candidatedefs) /* length on <var_candidatedefs:Array[MMethodDef]>*/;
426 var68 = 1;
427 { /* Inline kernel#Int#> (var67,var68) */
428 /* Covariant cast for argument 0 (i) <var68:Int> isa OTHER */
429 /* <var68:Int> isa OTHER */
430 var71 = 1; /* easy <var68:Int> isa OTHER*/
431 if (!var71) {
432 var_class_name74 = type_kernel__Int.name;
433 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name74);
434 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
435 show_backtrace(1);
436 }
437 var75 = var67 > var68;
438 var69 = var75;
439 goto RET_LABEL70;
440 RET_LABEL70:(void)0;
441 }
442 if (var69){
443 if (varonce76) {
444 var77 = varonce76;
445 } else {
446 var78 = "Error: confliting property definitions for property ";
447 var79 = 52;
448 var80 = string__NativeString__to_s_with_length(var78, var79);
449 var77 = var80;
450 varonce76 = var77;
451 }
452 if (varonce81) {
453 var82 = varonce81;
454 } else {
455 var83 = " in ";
456 var84 = 4;
457 var85 = string__NativeString__to_s_with_length(var83, var84);
458 var82 = var85;
459 varonce81 = var82;
460 }
461 if (varonce86) {
462 var87 = varonce86;
463 } else {
464 var88 = ": ";
465 var89 = 2;
466 var90 = string__NativeString__to_s_with_length(var88, var89);
467 var87 = var90;
468 varonce86 = var87;
469 }
470 if (varonce91) {
471 var92 = varonce91;
472 } else {
473 var93 = ", ";
474 var94 = 2;
475 var95 = string__NativeString__to_s_with_length(var93, var94);
476 var92 = var95;
477 varonce91 = var92;
478 }
479 var96 = ((val* (*)(val*, val*))(var_candidatedefs->class->vft[COLOR_string__Collection__join]))(var_candidatedefs, var92) /* join on <var_candidatedefs:Array[MMethodDef]>*/;
480 var97 = NEW_array__Array(&type_array__Arraykernel__Object);
481 { /* var97 = array_instance Array[Object] */
482 var98 = 6;
483 var99 = NEW_array__NativeArray(var98, &type_array__NativeArraykernel__Object);
484 ((struct instance_array__NativeArray*)var99)->values[0] = (val*) var77;
485 ((struct instance_array__NativeArray*)var99)->values[1] = (val*) var_mproperty;
486 ((struct instance_array__NativeArray*)var99)->values[2] = (val*) var82;
487 ((struct instance_array__NativeArray*)var99)->values[3] = (val*) var_recvtype;
488 ((struct instance_array__NativeArray*)var99)->values[4] = (val*) var87;
489 ((struct instance_array__NativeArray*)var99)->values[5] = (val*) var96;
490 ((void (*)(val*, val*, long))(var97->class->vft[COLOR_array__Array__with_native]))(var97, var99, var98) /* with_native on <var97:Array[Object]>*/;
491 }
492 var100 = ((val* (*)(val*))(var97->class->vft[COLOR_string__Object__to_s]))(var97) /* to_s on <var97:Array[Object]>*/;
493 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var100) /* error on <var_v:TypeVisitor>*/;
494 goto RET_LABEL;
495 } else {
496 }
497 var101 = ((val* (*)(val*))(var_candidatedefs->class->vft[COLOR_abstract_collection__Collection__first]))(var_candidatedefs) /* first on <var_candidatedefs:Array[MMethodDef]>*/;
498 var_superprop = var101;
499 CONTINUE_label: (void)0;
500 ((void (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__next]))(var10) /* next on <var10:Iterator[nullable Object]>*/;
501 }
502 BREAK_label: (void)0;
503 var102 = NULL;
504 if (var_superprop == NULL) {
505 var103 = 1; /* is null */
506 } else {
507 var103 = 0; /* arg is null but recv is not */
508 }
509 if (var103){
510 if (varonce104) {
511 var105 = varonce104;
512 } else {
513 var106 = "Error: No super method to call for ";
514 var107 = 35;
515 var108 = string__NativeString__to_s_with_length(var106, var107);
516 var105 = var108;
517 varonce104 = var105;
518 }
519 if (varonce109) {
520 var110 = varonce109;
521 } else {
522 var111 = ".";
523 var112 = 1;
524 var113 = string__NativeString__to_s_with_length(var111, var112);
525 var110 = var113;
526 varonce109 = var110;
527 }
528 var114 = NEW_array__Array(&type_array__Arraykernel__Object);
529 { /* var114 = array_instance Array[Object] */
530 var115 = 3;
531 var116 = NEW_array__NativeArray(var115, &type_array__NativeArraykernel__Object);
532 ((struct instance_array__NativeArray*)var116)->values[0] = (val*) var105;
533 ((struct instance_array__NativeArray*)var116)->values[1] = (val*) var_mproperty;
534 ((struct instance_array__NativeArray*)var116)->values[2] = (val*) var110;
535 ((void (*)(val*, val*, long))(var114->class->vft[COLOR_array__Array__with_native]))(var114, var116, var115) /* with_native on <var114:Array[Object]>*/;
536 }
537 var117 = ((val* (*)(val*))(var114->class->vft[COLOR_string__Object__to_s]))(var114) /* to_s on <var114:Array[Object]>*/;
538 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var117) /* error on <var_v:TypeVisitor>*/;
539 goto RET_LABEL;
540 } else {
541 }
542 var118 = 1;
543 var119 = ((val* (*)(val*, val*, val*, short int))(var_v->class->vft[COLOR_typing__TypeVisitor__resolve_signature_for]))(var_v, var_superprop, var_recvtype, var118) /* resolve_signature_for on <var_v:TypeVisitor>*/;
544 var_msignature = var119;
545 var120 = NEW_typing__CallSite(&type_typing__CallSite);
546 var121 = 1;
547 var122 = ((val* (*)(val*))(var_superprop->class->vft[COLOR_model__MPropDef__mproperty]))(var_superprop) /* mproperty on <var_superprop:nullable MMethodDef(MMethodDef)>*/;
548 var123 = 0;
549 ((void (*)(val*, val*, val*, short int, val*, val*, val*, short int))(var120->class->vft[COLOR_typing__CallSite__init]))(var120, self, var_recvtype, var121, var122, var_superprop, var_msignature, var123) /* init on <var120:CallSite>*/;
550 var_callsite = var120;
551 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASuperExpr__callsite_61d]))(self, var_callsite) /* callsite= on <self:ASuperExpr>*/;
552 var124 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASuperExpr__n_args]))(self) /* n_args on <self:ASuperExpr>*/;
553 var125 = ((val* (*)(val*))(var124->class->vft[COLOR_typing__AExprs__to_a]))(var124) /* to_a on <var124:AExprs>*/;
554 var_args = var125;
555 var126 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[AExpr]>*/;
556 var127 = 0;
557 { /* Inline kernel#Int#> (var126,var127) */
558 /* Covariant cast for argument 0 (i) <var127:Int> isa OTHER */
559 /* <var127:Int> isa OTHER */
560 var130 = 1; /* easy <var127:Int> isa OTHER*/
561 if (!var130) {
562 var_class_name133 = type_kernel__Int.name;
563 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name133);
564 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
565 show_backtrace(1);
566 }
567 var134 = var126 > var127;
568 var128 = var134;
569 goto RET_LABEL129;
570 RET_LABEL129:(void)0;
571 }
572 if (var128){
573 var135 = ((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:CallSite>*/;
574 var135;
575 } else {
576 var136 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mpropdef) /* msignature on <var_mpropdef:MPropDef(MMethodDef)>*/;
577 if (var136 == NULL) {
578 fprintf(stderr, "Runtime error: %s", "Receiver is null");
579 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1502);
580 show_backtrace(1);
581 } else {
582 var137 = ((long (*)(val*))(var136->class->vft[COLOR_model__MSignature__arity]))(var136) /* arity on <var136:nullable MSignature>*/;
583 }
584 var138 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
585 { /* Inline kernel#Int#< (var137,var138) */
586 /* Covariant cast for argument 0 (i) <var138:Int> isa OTHER */
587 /* <var138:Int> isa OTHER */
588 var141 = 1; /* easy <var138:Int> isa OTHER*/
589 if (!var141) {
590 var_class_name144 = type_kernel__Int.name;
591 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name144);
592 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
593 show_backtrace(1);
594 }
595 var145 = var137 < var138;
596 var139 = var145;
597 goto RET_LABEL140;
598 RET_LABEL140:(void)0;
599 }
600 if (var139){
601 if (varonce146) {
602 var147 = varonce146;
603 } else {
604 var148 = "Error: Not enough implicit arguments to pass. Got ";
605 var149 = 50;
606 var150 = string__NativeString__to_s_with_length(var148, var149);
607 var147 = var150;
608 varonce146 = var147;
609 }
610 var151 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mpropdef) /* msignature on <var_mpropdef:MPropDef(MMethodDef)>*/;
611 if (var151 == NULL) {
612 fprintf(stderr, "Runtime error: %s", "Receiver is null");
613 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1503);
614 show_backtrace(1);
615 } else {
616 var152 = ((long (*)(val*))(var151->class->vft[COLOR_model__MSignature__arity]))(var151) /* arity on <var151:nullable MSignature>*/;
617 }
618 if (varonce153) {
619 var154 = varonce153;
620 } else {
621 var155 = ", expected at least ";
622 var156 = 20;
623 var157 = string__NativeString__to_s_with_length(var155, var156);
624 var154 = var157;
625 varonce153 = var154;
626 }
627 var158 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
628 if (varonce159) {
629 var160 = varonce159;
630 } else {
631 var161 = ". Signature is ";
632 var162 = 15;
633 var163 = string__NativeString__to_s_with_length(var161, var162);
634 var160 = var163;
635 varonce159 = var160;
636 }
637 var164 = NEW_array__Array(&type_array__Arraykernel__Object);
638 { /* var164 = array_instance Array[Object] */
639 var165 = 6;
640 var166 = NEW_array__NativeArray(var165, &type_array__NativeArraykernel__Object);
641 ((struct instance_array__NativeArray*)var166)->values[0] = (val*) var147;
642 var167 = BOX_kernel__Int(var152); /* autobox from Int to Object */
643 ((struct instance_array__NativeArray*)var166)->values[1] = (val*) var167;
644 ((struct instance_array__NativeArray*)var166)->values[2] = (val*) var154;
645 var168 = BOX_kernel__Int(var158); /* autobox from Int to Object */
646 ((struct instance_array__NativeArray*)var166)->values[3] = (val*) var168;
647 ((struct instance_array__NativeArray*)var166)->values[4] = (val*) var160;
648 ((struct instance_array__NativeArray*)var166)->values[5] = (val*) var_msignature;
649 ((void (*)(val*, val*, long))(var164->class->vft[COLOR_array__Array__with_native]))(var164, var166, var165) /* with_native on <var164:Array[Object]>*/;
650 }
651 var169 = ((val* (*)(val*))(var164->class->vft[COLOR_string__Object__to_s]))(var164) /* to_s on <var164:Array[Object]>*/;
652 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var169) /* error on <var_v:TypeVisitor>*/;
653 goto RET_LABEL;
654 } else {
655 }
656 var170 = 0;
657 var_i = var170;
658 var171 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
659 var172 = ((val* (*)(val*))(var171->class->vft[COLOR_abstract_collection__Collection__iterator]))(var171) /* iterator on <var171:Array[MParameter]>*/;
660 for(;;) {
661 var173 = ((short int (*)(val*))(var172->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var172) /* is_ok on <var172:Iterator[nullable Object]>*/;
662 if(!var173) break;
663 var174 = ((val* (*)(val*))(var172->class->vft[COLOR_abstract_collection__Iterator__item]))(var172) /* item on <var172:Iterator[nullable Object]>*/;
664 var_sp = var174;
665 var175 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mpropdef) /* msignature on <var_mpropdef:MPropDef(MMethodDef)>*/;
666 if (var175 == NULL) {
667 fprintf(stderr, "Runtime error: %s", "Receiver is null");
668 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1509);
669 show_backtrace(1);
670 } else {
671 var176 = ((val* (*)(val*))(var175->class->vft[COLOR_model__MSignature__mparameters]))(var175) /* mparameters on <var175:nullable MSignature>*/;
672 }
673 var177 = ((val* (*)(val*, long))(var176->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var176, var_i) /* [] on <var176:Array[MParameter]>*/;
674 var_p = var177;
675 var178 = ((val* (*)(val*))(var_p->class->vft[COLOR_model__MParameter__mtype]))(var_p) /* mtype on <var_p:MParameter>*/;
676 var179 = ((val* (*)(val*))(var_sp->class->vft[COLOR_model__MParameter__mtype]))(var_sp) /* mtype on <var_sp:MParameter>*/;
677 var180 = ((short int (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__is_subtype]))(var_v, var178, var179) /* is_subtype on <var_v:TypeVisitor>*/;
678 var181 = !var180;
679 if (var181){
680 if (varonce182) {
681 var183 = varonce182;
682 } else {
683 var184 = "Type error: expected argument #";
684 var185 = 31;
685 var186 = string__NativeString__to_s_with_length(var184, var185);
686 var183 = var186;
687 varonce182 = var183;
688 }
689 if (varonce187) {
690 var188 = varonce187;
691 } else {
692 var189 = " of type ";
693 var190 = 9;
694 var191 = string__NativeString__to_s_with_length(var189, var190);
695 var188 = var191;
696 varonce187 = var188;
697 }
698 var192 = ((val* (*)(val*))(var_sp->class->vft[COLOR_model__MParameter__mtype]))(var_sp) /* mtype on <var_sp:MParameter>*/;
699 if (varonce193) {
700 var194 = varonce193;
701 } else {
702 var195 = ", got implicit argument ";
703 var196 = 24;
704 var197 = string__NativeString__to_s_with_length(var195, var196);
705 var194 = var197;
706 varonce193 = var194;
707 }
708 var198 = ((val* (*)(val*))(var_p->class->vft[COLOR_model__MParameter__name]))(var_p) /* name on <var_p:MParameter>*/;
709 if (varonce199) {
710 var200 = varonce199;
711 } else {
712 var201 = " of type ";
713 var202 = 9;
714 var203 = string__NativeString__to_s_with_length(var201, var202);
715 var200 = var203;
716 varonce199 = var200;
717 }
718 var204 = ((val* (*)(val*))(var_p->class->vft[COLOR_model__MParameter__mtype]))(var_p) /* mtype on <var_p:MParameter>*/;
719 if (varonce205) {
720 var206 = varonce205;
721 } else {
722 var207 = ". Signature is ";
723 var208 = 15;
724 var209 = string__NativeString__to_s_with_length(var207, var208);
725 var206 = var209;
726 varonce205 = var206;
727 }
728 var210 = NEW_array__Array(&type_array__Arraykernel__Object);
729 { /* var210 = array_instance Array[Object] */
730 var211 = 10;
731 var212 = NEW_array__NativeArray(var211, &type_array__NativeArraykernel__Object);
732 ((struct instance_array__NativeArray*)var212)->values[0] = (val*) var183;
733 var213 = BOX_kernel__Int(var_i); /* autobox from Int to Object */
734 ((struct instance_array__NativeArray*)var212)->values[1] = (val*) var213;
735 ((struct instance_array__NativeArray*)var212)->values[2] = (val*) var188;
736 ((struct instance_array__NativeArray*)var212)->values[3] = (val*) var192;
737 ((struct instance_array__NativeArray*)var212)->values[4] = (val*) var194;
738 ((struct instance_array__NativeArray*)var212)->values[5] = (val*) var198;
739 ((struct instance_array__NativeArray*)var212)->values[6] = (val*) var200;
740 ((struct instance_array__NativeArray*)var212)->values[7] = (val*) var204;
741 ((struct instance_array__NativeArray*)var212)->values[8] = (val*) var206;
742 ((struct instance_array__NativeArray*)var212)->values[9] = (val*) var_msignature;
743 ((void (*)(val*, val*, long))(var210->class->vft[COLOR_array__Array__with_native]))(var210, var212, var211) /* with_native on <var210:Array[Object]>*/;
744 }
745 var214 = ((val* (*)(val*))(var210->class->vft[COLOR_string__Object__to_s]))(var210) /* to_s on <var210:Array[Object]>*/;
746 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var214) /* error on <var_v:TypeVisitor>*/;
747 goto RET_LABEL;
748 } else {
749 }
750 var215 = 1;
751 { /* Inline kernel#Int#+ (var_i,var215) */
752 var218 = var_i + var215;
753 var216 = var218;
754 goto RET_LABEL217;
755 RET_LABEL217:(void)0;
756 }
757 var_i = var216;
758 CONTINUE_label219: (void)0;
759 ((void (*)(val*))(var172->class->vft[COLOR_abstract_collection__Iterator__next]))(var172) /* next on <var172:Iterator[nullable Object]>*/;
760 }
761 BREAK_label219: (void)0;
762 }
763 var220 = 1;
764 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var220) /* is_typed= on <self:ASuperExpr>*/;
765 RET_LABEL:;
766 }
767 /* method typing#ASuperExpr#process_superinit for (self: Object, TypeVisitor) */
768 void VIRTUAL_typing__ASuperExpr__process_superinit(val* self, val* p0) {
769 typing__ASuperExpr__process_superinit(self, p0);
770 RET_LABEL:;
771 }
772 /* method typing#ANewExpr#callsite for (self: ANewExpr): nullable CallSite */
773 val* typing__ANewExpr__callsite(val* self) {
774 val* var /* : nullable CallSite */;
775 val* var1 /* : nullable CallSite */;
776 var1 = self->attrs[COLOR_typing__ANewExpr___64dcallsite].val; /* @callsite on <self:ANewExpr> */
777 var = var1;
778 RET_LABEL:;
779 return var;
780 }
781 /* method typing#ANewExpr#callsite for (self: Object): nullable CallSite */
782 val* VIRTUAL_typing__ANewExpr__callsite(val* self) {
783 val* var /* : nullable CallSite */;
784 val* var1 /* : nullable CallSite */;
785 var1 = typing__ANewExpr__callsite(self);
786 var = var1;
787 RET_LABEL:;
788 return var;
789 }
790 /* method typing#ANewExpr#callsite= for (self: ANewExpr, nullable CallSite) */
791 void typing__ANewExpr__callsite_61d(val* self, val* p0) {
792 self->attrs[COLOR_typing__ANewExpr___64dcallsite].val = p0; /* @callsite on <self:ANewExpr> */
793 RET_LABEL:;
794 }
795 /* method typing#ANewExpr#callsite= for (self: Object, nullable CallSite) */
796 void VIRTUAL_typing__ANewExpr__callsite_61d(val* self, val* p0) {
797 typing__ANewExpr__callsite_61d(self, p0);
798 RET_LABEL:;
799 }
800 /* method typing#ANewExpr#accept_typing for (self: ANewExpr, TypeVisitor) */
801 void typing__ANewExpr__accept_typing(val* self, val* p0) {
802 val* var_v /* var v: TypeVisitor */;
803 val* var /* : AType */;
804 val* var1 /* : nullable MType */;
805 val* var_recvtype /* var recvtype: nullable MType */;
806 val* var2 /* : null */;
807 short int var3 /* : Bool */;
808 short int var4 /* : Bool */;
809 int cltype;
810 int idtype;
811 short int var5 /* : Bool */;
812 short int var6 /* : Bool */;
813 int cltype7;
814 int idtype8;
815 static val* varonce;
816 val* var9 /* : String */;
817 char* var10 /* : NativeString */;
818 long var11 /* : Int */;
819 val* var12 /* : String */;
820 static val* varonce13;
821 val* var14 /* : String */;
822 char* var15 /* : NativeString */;
823 long var16 /* : Int */;
824 val* var17 /* : String */;
825 val* var18 /* : Array[Object] */;
826 long var19 /* : Int */;
827 val* var20 /* : NativeArray[Object] */;
828 val* var21 /* : String */;
829 static val* varonce22;
830 val* var23 /* : String */;
831 char* var24 /* : NativeString */;
832 long var25 /* : Int */;
833 val* var26 /* : String */;
834 static val* varonce27;
835 val* var28 /* : String */;
836 char* var29 /* : NativeString */;
837 long var30 /* : Int */;
838 val* var31 /* : String */;
839 val* var32 /* : Array[Object] */;
840 long var33 /* : Int */;
841 val* var34 /* : NativeArray[Object] */;
842 val* var35 /* : String */;
843 val* var36 /* : MClass */;
844 val* var37 /* : MClassKind */;
845 val* var38 /* : MClassKind */;
846 short int var39 /* : Bool */;
847 static val* varonce40;
848 val* var41 /* : String */;
849 char* var42 /* : NativeString */;
850 long var43 /* : Int */;
851 val* var44 /* : String */;
852 static val* varonce45;
853 val* var46 /* : String */;
854 char* var47 /* : NativeString */;
855 long var48 /* : Int */;
856 val* var49 /* : String */;
857 val* var50 /* : Array[Object] */;
858 long var51 /* : Int */;
859 val* var52 /* : NativeArray[Object] */;
860 val* var53 /* : String */;
861 val* var54 /* : MClass */;
862 val* var55 /* : MClassKind */;
863 val* var56 /* : MClassKind */;
864 short int var57 /* : Bool */;
865 static val* varonce58;
866 val* var59 /* : String */;
867 char* var60 /* : NativeString */;
868 long var61 /* : Int */;
869 val* var62 /* : String */;
870 static val* varonce63;
871 val* var64 /* : String */;
872 char* var65 /* : NativeString */;
873 long var66 /* : Int */;
874 val* var67 /* : String */;
875 val* var68 /* : Array[Object] */;
876 long var69 /* : Int */;
877 val* var70 /* : NativeArray[Object] */;
878 val* var71 /* : String */;
879 val* var72 /* : nullable TId */;
880 val* var_nid /* var nid: nullable TId */;
881 val* var73 /* : null */;
882 short int var74 /* : Bool */;
883 val* var75 /* : String */;
884 val* var_name /* var name: String */;
885 static val* varonce76;
886 val* var77 /* : String */;
887 char* var78 /* : NativeString */;
888 long var79 /* : Int */;
889 val* var80 /* : String */;
890 short int var81 /* : Bool */;
891 val* var82 /* : nullable CallSite */;
892 val* var_callsite /* var callsite: nullable CallSite */;
893 val* var83 /* : null */;
894 short int var84 /* : Bool */;
895 val* var85 /* : MMethod */;
896 val* var86 /* : MClass */;
897 short int var87 /* : Bool */;
898 short int var88 /* : Bool */;
899 static val* varonce89;
900 val* var90 /* : String */;
901 char* var91 /* : NativeString */;
902 long var92 /* : Int */;
903 val* var93 /* : String */;
904 static val* varonce94;
905 val* var95 /* : String */;
906 char* var96 /* : NativeString */;
907 long var97 /* : Int */;
908 val* var98 /* : String */;
909 val* var99 /* : Array[Object] */;
910 long var100 /* : Int */;
911 val* var101 /* : NativeArray[Object] */;
912 val* var102 /* : String */;
913 val* var103 /* : AExprs */;
914 val* var104 /* : Array[AExpr] */;
915 val* var_args /* var args: Array[AExpr] */;
916 short int var105 /* : Bool */;
917 var_v = p0;
918 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANewExpr__n_type]))(self) /* n_type on <self:ANewExpr>*/;
919 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__resolve_mtype]))(var_v, var) /* resolve_mtype on <var_v:TypeVisitor>*/;
920 var_recvtype = var1;
921 var2 = NULL;
922 if (var_recvtype == NULL) {
923 var3 = 1; /* is null */
924 } else {
925 var3 = 0; /* arg is null but recv is not */
926 }
927 if (var3){
928 goto RET_LABEL;
929 } else {
930 }
931 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var_recvtype) /* mtype= on <self:ANewExpr>*/;
932 /* <var_recvtype:nullable MType(MType)> isa MClassType */
933 cltype = type_model__MClassType.color;
934 idtype = type_model__MClassType.id;
935 if(cltype >= var_recvtype->type->table_size) {
936 var4 = 0;
937 } else {
938 var4 = var_recvtype->type->type_table[cltype] == idtype;
939 }
940 var5 = !var4;
941 if (var5){
942 /* <var_recvtype:nullable MType(MType)> isa MNullableType */
943 cltype7 = type_model__MNullableType.color;
944 idtype8 = type_model__MNullableType.id;
945 if(cltype7 >= var_recvtype->type->table_size) {
946 var6 = 0;
947 } else {
948 var6 = var_recvtype->type->type_table[cltype7] == idtype8;
949 }
950 if (var6){
951 if (varonce) {
952 var9 = varonce;
953 } else {
954 var10 = "Type error: cannot instantiate the nullable type ";
955 var11 = 49;
956 var12 = string__NativeString__to_s_with_length(var10, var11);
957 var9 = var12;
958 varonce = var9;
959 }
960 if (varonce13) {
961 var14 = varonce13;
962 } else {
963 var15 = ".";
964 var16 = 1;
965 var17 = string__NativeString__to_s_with_length(var15, var16);
966 var14 = var17;
967 varonce13 = var14;
968 }
969 var18 = NEW_array__Array(&type_array__Arraykernel__Object);
970 { /* var18 = array_instance Array[Object] */
971 var19 = 3;
972 var20 = NEW_array__NativeArray(var19, &type_array__NativeArraykernel__Object);
973 ((struct instance_array__NativeArray*)var20)->values[0] = (val*) var9;
974 ((struct instance_array__NativeArray*)var20)->values[1] = (val*) var_recvtype;
975 ((struct instance_array__NativeArray*)var20)->values[2] = (val*) var14;
976 ((void (*)(val*, val*, long))(var18->class->vft[COLOR_array__Array__with_native]))(var18, var20, var19) /* with_native on <var18:Array[Object]>*/;
977 }
978 var21 = ((val* (*)(val*))(var18->class->vft[COLOR_string__Object__to_s]))(var18) /* to_s on <var18:Array[Object]>*/;
979 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var21) /* error on <var_v:TypeVisitor>*/;
980 goto RET_LABEL;
981 } else {
982 if (varonce22) {
983 var23 = varonce22;
984 } else {
985 var24 = "Type error: cannot instantiate the formal type ";
986 var25 = 47;
987 var26 = string__NativeString__to_s_with_length(var24, var25);
988 var23 = var26;
989 varonce22 = var23;
990 }
991 if (varonce27) {
992 var28 = varonce27;
993 } else {
994 var29 = ".";
995 var30 = 1;
996 var31 = string__NativeString__to_s_with_length(var29, var30);
997 var28 = var31;
998 varonce27 = var28;
999 }
1000 var32 = NEW_array__Array(&type_array__Arraykernel__Object);
1001 { /* var32 = array_instance Array[Object] */
1002 var33 = 3;
1003 var34 = NEW_array__NativeArray(var33, &type_array__NativeArraykernel__Object);
1004 ((struct instance_array__NativeArray*)var34)->values[0] = (val*) var23;
1005 ((struct instance_array__NativeArray*)var34)->values[1] = (val*) var_recvtype;
1006 ((struct instance_array__NativeArray*)var34)->values[2] = (val*) var28;
1007 ((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[Object]>*/;
1008 }
1009 var35 = ((val* (*)(val*))(var32->class->vft[COLOR_string__Object__to_s]))(var32) /* to_s on <var32:Array[Object]>*/;
1010 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var35) /* error on <var_v:TypeVisitor>*/;
1011 goto RET_LABEL;
1012 }
1013 } else {
1014 var36 = ((val* (*)(val*))(var_recvtype->class->vft[COLOR_model__MClassType__mclass]))(var_recvtype) /* mclass on <var_recvtype:nullable MType(MClassType)>*/;
1015 var37 = ((val* (*)(val*))(var36->class->vft[COLOR_model__MClass__kind]))(var36) /* kind on <var36:MClass>*/;
1016 var38 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__abstract_kind]))(self) /* abstract_kind on <self:ANewExpr>*/;
1017 var39 = ((short int (*)(val*, val*))(var37->class->vft[COLOR_kernel__Object___61d_61d]))(var37, var38) /* == on <var37:MClassKind>*/;
1018 if (var39){
1019 if (varonce40) {
1020 var41 = varonce40;
1021 } else {
1022 var42 = "Cannot instantiate abstract class ";
1023 var43 = 34;
1024 var44 = string__NativeString__to_s_with_length(var42, var43);
1025 var41 = var44;
1026 varonce40 = var41;
1027 }
1028 if (varonce45) {
1029 var46 = varonce45;
1030 } else {
1031 var47 = ".";
1032 var48 = 1;
1033 var49 = string__NativeString__to_s_with_length(var47, var48);
1034 var46 = var49;
1035 varonce45 = var46;
1036 }
1037 var50 = NEW_array__Array(&type_array__Arraykernel__Object);
1038 { /* var50 = array_instance Array[Object] */
1039 var51 = 3;
1040 var52 = NEW_array__NativeArray(var51, &type_array__NativeArraykernel__Object);
1041 ((struct instance_array__NativeArray*)var52)->values[0] = (val*) var41;
1042 ((struct instance_array__NativeArray*)var52)->values[1] = (val*) var_recvtype;
1043 ((struct instance_array__NativeArray*)var52)->values[2] = (val*) var46;
1044 ((void (*)(val*, val*, long))(var50->class->vft[COLOR_array__Array__with_native]))(var50, var52, var51) /* with_native on <var50:Array[Object]>*/;
1045 }
1046 var53 = ((val* (*)(val*))(var50->class->vft[COLOR_string__Object__to_s]))(var50) /* to_s on <var50:Array[Object]>*/;
1047 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var53) /* error on <var_v:TypeVisitor>*/;
1048 goto RET_LABEL;
1049 } else {
1050 var54 = ((val* (*)(val*))(var_recvtype->class->vft[COLOR_model__MClassType__mclass]))(var_recvtype) /* mclass on <var_recvtype:nullable MType(MClassType)>*/;
1051 var55 = ((val* (*)(val*))(var54->class->vft[COLOR_model__MClass__kind]))(var54) /* kind on <var54:MClass>*/;
1052 var56 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__interface_kind]))(self) /* interface_kind on <self:ANewExpr>*/;
1053 var57 = ((short int (*)(val*, val*))(var55->class->vft[COLOR_kernel__Object___61d_61d]))(var55, var56) /* == on <var55:MClassKind>*/;
1054 if (var57){
1055 if (varonce58) {
1056 var59 = varonce58;
1057 } else {
1058 var60 = "Cannot instantiate interface ";
1059 var61 = 29;
1060 var62 = string__NativeString__to_s_with_length(var60, var61);
1061 var59 = var62;
1062 varonce58 = var59;
1063 }
1064 if (varonce63) {
1065 var64 = varonce63;
1066 } else {
1067 var65 = ".";
1068 var66 = 1;
1069 var67 = string__NativeString__to_s_with_length(var65, var66);
1070 var64 = var67;
1071 varonce63 = var64;
1072 }
1073 var68 = NEW_array__Array(&type_array__Arraykernel__Object);
1074 { /* var68 = array_instance Array[Object] */
1075 var69 = 3;
1076 var70 = NEW_array__NativeArray(var69, &type_array__NativeArraykernel__Object);
1077 ((struct instance_array__NativeArray*)var70)->values[0] = (val*) var59;
1078 ((struct instance_array__NativeArray*)var70)->values[1] = (val*) var_recvtype;
1079 ((struct instance_array__NativeArray*)var70)->values[2] = (val*) var64;
1080 ((void (*)(val*, val*, long))(var68->class->vft[COLOR_array__Array__with_native]))(var68, var70, var69) /* with_native on <var68:Array[Object]>*/;
1081 }
1082 var71 = ((val* (*)(val*))(var68->class->vft[COLOR_string__Object__to_s]))(var68) /* to_s on <var68:Array[Object]>*/;
1083 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var71) /* error on <var_v:TypeVisitor>*/;
1084 goto RET_LABEL;
1085 } else {
1086 }
1087 }
1088 }
1089 var72 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANewExpr__n_id]))(self) /* n_id on <self:ANewExpr>*/;
1090 var_nid = var72;
1091 var73 = NULL;
1092 if (var_nid == NULL) {
1093 var74 = 0; /* is null */
1094 } else {
1095 var74 = 1; /* arg is null and recv is not */
1096 }
1097 if (var74){
1098 var75 = ((val* (*)(val*))(var_nid->class->vft[COLOR_parser_nodes__Token__text]))(var_nid) /* text on <var_nid:nullable TId(TId)>*/;
1099 var_name = var75;
1100 } else {
1101 if (varonce76) {
1102 var77 = varonce76;
1103 } else {
1104 var78 = "init";
1105 var79 = 4;
1106 var80 = string__NativeString__to_s_with_length(var78, var79);
1107 var77 = var80;
1108 varonce76 = var77;
1109 }
1110 var_name = var77;
1111 }
1112 var81 = 0;
1113 var82 = ((val* (*)(val*, val*, val*, val*, short int))(var_v->class->vft[COLOR_typing__TypeVisitor__get_method]))(var_v, self, var_recvtype, var_name, var81) /* get_method on <var_v:TypeVisitor>*/;
1114 var_callsite = var82;
1115 var83 = NULL;
1116 if (var_callsite == NULL) {
1117 var84 = 1; /* is null */
1118 } else {
1119 var84 = 0; /* arg is null but recv is not */
1120 }
1121 if (var84){
1122 goto RET_LABEL;
1123 } else {
1124 }
1125 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ANewExpr__callsite_61d]))(self, var_callsite) /* callsite= on <self:ANewExpr>*/;
1126 var85 = ((val* (*)(val*))(var_callsite->class->vft[COLOR_typing__CallSite__mproperty]))(var_callsite) /* mproperty on <var_callsite:nullable CallSite(CallSite)>*/;
1127 var86 = ((val* (*)(val*))(var_recvtype->class->vft[COLOR_model__MClassType__mclass]))(var_recvtype) /* mclass on <var_recvtype:nullable MType(MClassType)>*/;
1128 var87 = ((short int (*)(val*, val*))(var85->class->vft[COLOR_model__MMethod__is_init_for]))(var85, var86) /* is_init_for on <var85:MMethod>*/;
1129 var88 = !var87;
1130 if (var88){
1131 if (varonce89) {
1132 var90 = varonce89;
1133 } else {
1134 var91 = "Error: ";
1135 var92 = 7;
1136 var93 = string__NativeString__to_s_with_length(var91, var92);
1137 var90 = var93;
1138 varonce89 = var90;
1139 }
1140 if (varonce94) {
1141 var95 = varonce94;
1142 } else {
1143 var96 = " is not a constructor.";
1144 var97 = 22;
1145 var98 = string__NativeString__to_s_with_length(var96, var97);
1146 var95 = var98;
1147 varonce94 = var95;
1148 }
1149 var99 = NEW_array__Array(&type_array__Arraykernel__Object);
1150 { /* var99 = array_instance Array[Object] */
1151 var100 = 3;
1152 var101 = NEW_array__NativeArray(var100, &type_array__NativeArraykernel__Object);
1153 ((struct instance_array__NativeArray*)var101)->values[0] = (val*) var90;
1154 ((struct instance_array__NativeArray*)var101)->values[1] = (val*) var_name;
1155 ((struct instance_array__NativeArray*)var101)->values[2] = (val*) var95;
1156 ((void (*)(val*, val*, long))(var99->class->vft[COLOR_array__Array__with_native]))(var99, var101, var100) /* with_native on <var99:Array[Object]>*/;
1157 }
1158 var102 = ((val* (*)(val*))(var99->class->vft[COLOR_string__Object__to_s]))(var99) /* to_s on <var99:Array[Object]>*/;
1159 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var102) /* error on <var_v:TypeVisitor>*/;
1160 goto RET_LABEL;
1161 } else {
1162 }
1163 var103 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANewExpr__n_args]))(self) /* n_args on <self:ANewExpr>*/;
1164 var104 = ((val* (*)(val*))(var103->class->vft[COLOR_typing__AExprs__to_a]))(var103) /* to_a on <var103:AExprs>*/;
1165 var_args = var104;
1166 var105 = ((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)>*/;
1167 var105;
1168 RET_LABEL:;
1169 }
1170 /* method typing#ANewExpr#accept_typing for (self: Object, TypeVisitor) */
1171 void VIRTUAL_typing__ANewExpr__accept_typing(val* self, val* p0) {
1172 typing__ANewExpr__accept_typing(self, p0);
1173 RET_LABEL:;
1174 }
1175 /* method typing#AAttrFormExpr#mproperty for (self: AAttrFormExpr): nullable MAttribute */
1176 val* typing__AAttrFormExpr__mproperty(val* self) {
1177 val* var /* : nullable MAttribute */;
1178 val* var1 /* : nullable MAttribute */;
1179 var1 = self->attrs[COLOR_typing__AAttrFormExpr___64dmproperty].val; /* @mproperty on <self:AAttrFormExpr> */
1180 var = var1;
1181 RET_LABEL:;
1182 return var;
1183 }
1184 /* method typing#AAttrFormExpr#mproperty for (self: Object): nullable MAttribute */
1185 val* VIRTUAL_typing__AAttrFormExpr__mproperty(val* self) {
1186 val* var /* : nullable MAttribute */;
1187 val* var1 /* : nullable MAttribute */;
1188 var1 = typing__AAttrFormExpr__mproperty(self);
1189 var = var1;
1190 RET_LABEL:;
1191 return var;
1192 }
1193 /* method typing#AAttrFormExpr#mproperty= for (self: AAttrFormExpr, nullable MAttribute) */
1194 void typing__AAttrFormExpr__mproperty_61d(val* self, val* p0) {
1195 self->attrs[COLOR_typing__AAttrFormExpr___64dmproperty].val = p0; /* @mproperty on <self:AAttrFormExpr> */
1196 RET_LABEL:;
1197 }
1198 /* method typing#AAttrFormExpr#mproperty= for (self: Object, nullable MAttribute) */
1199 void VIRTUAL_typing__AAttrFormExpr__mproperty_61d(val* self, val* p0) {
1200 typing__AAttrFormExpr__mproperty_61d(self, p0);
1201 RET_LABEL:;
1202 }
1203 /* method typing#AAttrFormExpr#attr_type for (self: AAttrFormExpr): nullable MType */
1204 val* typing__AAttrFormExpr__attr_type(val* self) {
1205 val* var /* : nullable MType */;
1206 val* var1 /* : nullable MType */;
1207 var1 = self->attrs[COLOR_typing__AAttrFormExpr___64dattr_type].val; /* @attr_type on <self:AAttrFormExpr> */
1208 var = var1;
1209 RET_LABEL:;
1210 return var;
1211 }
1212 /* method typing#AAttrFormExpr#attr_type for (self: Object): nullable MType */
1213 val* VIRTUAL_typing__AAttrFormExpr__attr_type(val* self) {
1214 val* var /* : nullable MType */;
1215 val* var1 /* : nullable MType */;
1216 var1 = typing__AAttrFormExpr__attr_type(self);
1217 var = var1;
1218 RET_LABEL:;
1219 return var;
1220 }
1221 /* method typing#AAttrFormExpr#attr_type= for (self: AAttrFormExpr, nullable MType) */
1222 void typing__AAttrFormExpr__attr_type_61d(val* self, val* p0) {
1223 self->attrs[COLOR_typing__AAttrFormExpr___64dattr_type].val = p0; /* @attr_type on <self:AAttrFormExpr> */
1224 RET_LABEL:;
1225 }
1226 /* method typing#AAttrFormExpr#attr_type= for (self: Object, nullable MType) */
1227 void VIRTUAL_typing__AAttrFormExpr__attr_type_61d(val* self, val* p0) {
1228 typing__AAttrFormExpr__attr_type_61d(self, p0);
1229 RET_LABEL:;
1230 }
1231 /* method typing#AAttrFormExpr#resolve_property for (self: AAttrFormExpr, TypeVisitor) */
1232 void typing__AAttrFormExpr__resolve_property(val* self, val* p0) {
1233 val* var_v /* var v: TypeVisitor */;
1234 val* var /* : AExpr */;
1235 val* var1 /* : nullable MType */;
1236 val* var_recvtype /* var recvtype: nullable MType */;
1237 val* var2 /* : null */;
1238 short int var3 /* : Bool */;
1239 val* var4 /* : TAttrid */;
1240 val* var5 /* : String */;
1241 val* var_name /* var name: String */;
1242 short int var6 /* : Bool */;
1243 int cltype;
1244 int idtype;
1245 static val* varonce;
1246 val* var7 /* : String */;
1247 char* var8 /* : NativeString */;
1248 long var9 /* : Int */;
1249 val* var10 /* : String */;
1250 static val* varonce11;
1251 val* var12 /* : String */;
1252 char* var13 /* : NativeString */;
1253 long var14 /* : Int */;
1254 val* var15 /* : String */;
1255 val* var16 /* : Array[Object] */;
1256 long var17 /* : Int */;
1257 val* var18 /* : NativeArray[Object] */;
1258 val* var19 /* : String */;
1259 val* var20 /* : MType */;
1260 val* var_unsafe_type /* var unsafe_type: MType */;
1261 val* var21 /* : nullable MProperty */;
1262 val* var_mproperty /* var mproperty: nullable MProperty */;
1263 val* var22 /* : null */;
1264 short int var23 /* : Bool */;
1265 val* var24 /* : ModelBuilder */;
1266 static val* varonce25;
1267 val* var26 /* : String */;
1268 char* var27 /* : NativeString */;
1269 long var28 /* : Int */;
1270 val* var29 /* : String */;
1271 static val* varonce30;
1272 val* var31 /* : String */;
1273 char* var32 /* : NativeString */;
1274 long var33 /* : Int */;
1275 val* var34 /* : String */;
1276 static val* varonce35;
1277 val* var36 /* : String */;
1278 char* var37 /* : NativeString */;
1279 long var38 /* : Int */;
1280 val* var39 /* : String */;
1281 val* var40 /* : Array[Object] */;
1282 long var41 /* : Int */;
1283 val* var42 /* : NativeArray[Object] */;
1284 val* var43 /* : String */;
1285 short int var44 /* : Bool */;
1286 int cltype45;
1287 int idtype46;
1288 val* var47 /* : MModule */;
1289 val* var48 /* : Array[MPropDef] */;
1290 val* var_mpropdefs /* var mpropdefs: Array[MAttributeDef] */;
1291 long var49 /* : Int */;
1292 long var50 /* : Int */;
1293 short int var51 /* : Bool */;
1294 short int var53 /* : Bool */;
1295 val* var54 /* : nullable Object */;
1296 val* var_mpropdef /* var mpropdef: MAttributeDef */;
1297 val* var55 /* : nullable MType */;
1298 val* var_attr_type /* var attr_type: MType */;
1299 val* var56 /* : AExpr */;
1300 short int var57 /* : Bool */;
1301 int cltype58;
1302 int idtype59;
1303 val* var60 /* : MType */;
1304 var_v = p0;
1305 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrFormExpr__n_expr]))(self) /* n_expr on <self:AAttrFormExpr>*/;
1306 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
1307 var_recvtype = var1;
1308 var2 = NULL;
1309 if (var_recvtype == NULL) {
1310 var3 = 1; /* is null */
1311 } else {
1312 var3 = 0; /* arg is null but recv is not */
1313 }
1314 if (var3){
1315 goto RET_LABEL;
1316 } else {
1317 }
1318 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrFormExpr__n_id]))(self) /* n_id on <self:AAttrFormExpr>*/;
1319 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_parser_nodes__Token__text]))(var4) /* text on <var4:TAttrid>*/;
1320 var_name = var5;
1321 /* <var_recvtype:nullable MType(MType)> isa MNullType */
1322 cltype = type_model__MNullType.color;
1323 idtype = type_model__MNullType.id;
1324 if(cltype >= var_recvtype->type->table_size) {
1325 var6 = 0;
1326 } else {
1327 var6 = var_recvtype->type->type_table[cltype] == idtype;
1328 }
1329 if (var6){
1330 if (varonce) {
1331 var7 = varonce;
1332 } else {
1333 var8 = "Error: Attribute \'";
1334 var9 = 18;
1335 var10 = string__NativeString__to_s_with_length(var8, var9);
1336 var7 = var10;
1337 varonce = var7;
1338 }
1339 if (varonce11) {
1340 var12 = varonce11;
1341 } else {
1342 var13 = "\' access on \'null\'.";
1343 var14 = 19;
1344 var15 = string__NativeString__to_s_with_length(var13, var14);
1345 var12 = var15;
1346 varonce11 = var12;
1347 }
1348 var16 = NEW_array__Array(&type_array__Arraykernel__Object);
1349 { /* var16 = array_instance Array[Object] */
1350 var17 = 3;
1351 var18 = NEW_array__NativeArray(var17, &type_array__NativeArraykernel__Object);
1352 ((struct instance_array__NativeArray*)var18)->values[0] = (val*) var7;
1353 ((struct instance_array__NativeArray*)var18)->values[1] = (val*) var_name;
1354 ((struct instance_array__NativeArray*)var18)->values[2] = (val*) var12;
1355 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[Object]>*/;
1356 }
1357 var19 = ((val* (*)(val*))(var16->class->vft[COLOR_string__Object__to_s]))(var16) /* to_s on <var16:Array[Object]>*/;
1358 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var19) /* error on <var_v:TypeVisitor>*/;
1359 goto RET_LABEL;
1360 } else {
1361 }
1362 var20 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__anchor_to]))(var_v, var_recvtype) /* anchor_to on <var_v:TypeVisitor>*/;
1363 var_unsafe_type = var20;
1364 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>*/;
1365 var_mproperty = var21;
1366 var22 = NULL;
1367 if (var_mproperty == NULL) {
1368 var23 = 1; /* is null */
1369 } else {
1370 var23 = 0; /* arg is null but recv is not */
1371 }
1372 if (var23){
1373 var24 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(var_v) /* modelbuilder on <var_v:TypeVisitor>*/;
1374 if (varonce25) {
1375 var26 = varonce25;
1376 } else {
1377 var27 = "Error: Attribute ";
1378 var28 = 17;
1379 var29 = string__NativeString__to_s_with_length(var27, var28);
1380 var26 = var29;
1381 varonce25 = var26;
1382 }
1383 if (varonce30) {
1384 var31 = varonce30;
1385 } else {
1386 var32 = " doesn\'t exists in ";
1387 var33 = 19;
1388 var34 = string__NativeString__to_s_with_length(var32, var33);
1389 var31 = var34;
1390 varonce30 = var31;
1391 }
1392 if (varonce35) {
1393 var36 = varonce35;
1394 } else {
1395 var37 = ".";
1396 var38 = 1;
1397 var39 = string__NativeString__to_s_with_length(var37, var38);
1398 var36 = var39;
1399 varonce35 = var36;
1400 }
1401 var40 = NEW_array__Array(&type_array__Arraykernel__Object);
1402 { /* var40 = array_instance Array[Object] */
1403 var41 = 5;
1404 var42 = NEW_array__NativeArray(var41, &type_array__NativeArraykernel__Object);
1405 ((struct instance_array__NativeArray*)var42)->values[0] = (val*) var26;
1406 ((struct instance_array__NativeArray*)var42)->values[1] = (val*) var_name;
1407 ((struct instance_array__NativeArray*)var42)->values[2] = (val*) var31;
1408 ((struct instance_array__NativeArray*)var42)->values[3] = (val*) var_recvtype;
1409 ((struct instance_array__NativeArray*)var42)->values[4] = (val*) var36;
1410 ((void (*)(val*, val*, long))(var40->class->vft[COLOR_array__Array__with_native]))(var40, var42, var41) /* with_native on <var40:Array[Object]>*/;
1411 }
1412 var43 = ((val* (*)(val*))(var40->class->vft[COLOR_string__Object__to_s]))(var40) /* to_s on <var40:Array[Object]>*/;
1413 ((void (*)(val*, val*, val*))(var24->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var24, self, var43) /* error on <var24:ModelBuilder>*/;
1414 goto RET_LABEL;
1415 } else {
1416 }
1417 /* <var_mproperty:nullable MProperty(MProperty)> isa MAttribute */
1418 cltype45 = type_model__MAttribute.color;
1419 idtype46 = type_model__MAttribute.id;
1420 if(cltype45 >= var_mproperty->type->table_size) {
1421 var44 = 0;
1422 } else {
1423 var44 = var_mproperty->type->type_table[cltype45] == idtype46;
1424 }
1425 if (!var44) {
1426 fprintf(stderr, "Runtime error: %s", "Assert failed");
1427 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1600);
1428 show_backtrace(1);
1429 }
1430 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AAttrFormExpr__mproperty_61d]))(self, var_mproperty) /* mproperty= on <self:AAttrFormExpr>*/;
1431 var47 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
1432 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)>*/;
1433 var_mpropdefs = var48;
1434 var49 = ((long (*)(val*))(var_mpropdefs->class->vft[COLOR_abstract_collection__Collection__length]))(var_mpropdefs) /* length on <var_mpropdefs:Array[MAttributeDef]>*/;
1435 var50 = 1;
1436 { /* Inline kernel#Int#== (var49,var50) */
1437 var53 = var49 == var50;
1438 var51 = var53;
1439 goto RET_LABEL52;
1440 RET_LABEL52:(void)0;
1441 }
1442 if (!var51) {
1443 fprintf(stderr, "Runtime error: %s", "Assert failed");
1444 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1604);
1445 show_backtrace(1);
1446 }
1447 var54 = ((val* (*)(val*))(var_mpropdefs->class->vft[COLOR_abstract_collection__Collection__first]))(var_mpropdefs) /* first on <var_mpropdefs:Array[MAttributeDef]>*/;
1448 var_mpropdef = var54;
1449 var55 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MAttributeDef__static_mtype]))(var_mpropdef) /* static_mtype on <var_mpropdef:MAttributeDef>*/;
1450 if (var55 == NULL) {
1451 fprintf(stderr, "Runtime error: %s", "Cast failed");
1452 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1606);
1453 show_backtrace(1);
1454 }
1455 var_attr_type = var55;
1456 var56 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrFormExpr__n_expr]))(self) /* n_expr on <self:AAttrFormExpr>*/;
1457 /* <var56:AExpr> isa ASelfExpr */
1458 cltype58 = type_parser_nodes__ASelfExpr.color;
1459 idtype59 = type_parser_nodes__ASelfExpr.id;
1460 if(cltype58 >= var56->type->table_size) {
1461 var57 = 0;
1462 } else {
1463 var57 = var56->type->type_table[cltype58] == idtype59;
1464 }
1465 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>*/;
1466 var_attr_type = var60;
1467 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AAttrFormExpr__attr_type_61d]))(self, var_attr_type) /* attr_type= on <self:AAttrFormExpr>*/;
1468 RET_LABEL:;
1469 }
1470 /* method typing#AAttrFormExpr#resolve_property for (self: Object, TypeVisitor) */
1471 void VIRTUAL_typing__AAttrFormExpr__resolve_property(val* self, val* p0) {
1472 typing__AAttrFormExpr__resolve_property(self, p0);
1473 RET_LABEL:;
1474 }
1475 /* method typing#AAttrExpr#accept_typing for (self: AAttrExpr, TypeVisitor) */
1476 void typing__AAttrExpr__accept_typing(val* self, val* p0) {
1477 val* var_v /* var v: TypeVisitor */;
1478 val* var /* : nullable MType */;
1479 var_v = p0;
1480 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AAttrFormExpr__resolve_property]))(self, var_v) /* resolve_property on <self:AAttrExpr>*/;
1481 var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AAttrFormExpr__attr_type]))(self) /* attr_type on <self:AAttrExpr>*/;
1482 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var) /* mtype= on <self:AAttrExpr>*/;
1483 RET_LABEL:;
1484 }
1485 /* method typing#AAttrExpr#accept_typing for (self: Object, TypeVisitor) */
1486 void VIRTUAL_typing__AAttrExpr__accept_typing(val* self, val* p0) {
1487 typing__AAttrExpr__accept_typing(self, p0);
1488 RET_LABEL:;
1489 }
1490 /* method typing#AAttrAssignExpr#accept_typing for (self: AAttrAssignExpr, TypeVisitor) */
1491 void typing__AAttrAssignExpr__accept_typing(val* self, val* p0) {
1492 val* var_v /* var v: TypeVisitor */;
1493 val* var /* : nullable MType */;
1494 val* var_mtype /* var mtype: nullable MType */;
1495 val* var1 /* : AExpr */;
1496 val* var2 /* : nullable MType */;
1497 short int var3 /* : Bool */;
1498 var_v = p0;
1499 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AAttrFormExpr__resolve_property]))(self, var_v) /* resolve_property on <self:AAttrAssignExpr>*/;
1500 var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AAttrFormExpr__attr_type]))(self) /* attr_type on <self:AAttrAssignExpr>*/;
1501 var_mtype = var;
1502 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssignFormExpr__n_value]))(self) /* n_value on <self:AAttrAssignExpr>*/;
1503 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>*/;
1504 var2;
1505 var3 = 1;
1506 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var3) /* is_typed= on <self:AAttrAssignExpr>*/;
1507 RET_LABEL:;
1508 }
1509 /* method typing#AAttrAssignExpr#accept_typing for (self: Object, TypeVisitor) */
1510 void VIRTUAL_typing__AAttrAssignExpr__accept_typing(val* self, val* p0) {
1511 typing__AAttrAssignExpr__accept_typing(self, p0);
1512 RET_LABEL:;
1513 }
1514 /* method typing#AAttrReassignExpr#accept_typing for (self: AAttrReassignExpr, TypeVisitor) */
1515 void typing__AAttrReassignExpr__accept_typing(val* self, val* p0) {
1516 val* var_v /* var v: TypeVisitor */;
1517 val* var /* : nullable MType */;
1518 val* var_mtype /* var mtype: nullable MType */;
1519 val* var1 /* : null */;
1520 short int var2 /* : Bool */;
1521 val* var3 /* : nullable MType */;
1522 short int var4 /* : Bool */;
1523 var_v = p0;
1524 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AAttrFormExpr__resolve_property]))(self, var_v) /* resolve_property on <self:AAttrReassignExpr>*/;
1525 var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AAttrFormExpr__attr_type]))(self) /* attr_type on <self:AAttrReassignExpr>*/;
1526 var_mtype = var;
1527 var1 = NULL;
1528 if (var_mtype == NULL) {
1529 var2 = 1; /* is null */
1530 } else {
1531 var2 = 0; /* arg is null but recv is not */
1532 }
1533 if (var2){
1534 goto RET_LABEL;
1535 } else {
1536 }
1537 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>*/;
1538 var3;
1539 var4 = 1;
1540 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var4) /* is_typed= on <self:AAttrReassignExpr>*/;
1541 RET_LABEL:;
1542 }
1543 /* method typing#AAttrReassignExpr#accept_typing for (self: Object, TypeVisitor) */
1544 void VIRTUAL_typing__AAttrReassignExpr__accept_typing(val* self, val* p0) {
1545 typing__AAttrReassignExpr__accept_typing(self, p0);
1546 RET_LABEL:;
1547 }
1548 /* method typing#AIssetAttrExpr#accept_typing for (self: AIssetAttrExpr, TypeVisitor) */
1549 void typing__AIssetAttrExpr__accept_typing(val* self, val* p0) {
1550 val* var_v /* var v: TypeVisitor */;
1551 val* var /* : nullable MType */;
1552 val* var_mtype /* var mtype: nullable MType */;
1553 val* var1 /* : null */;
1554 short int var2 /* : Bool */;
1555 val* var3 /* : AExpr */;
1556 val* var4 /* : nullable MType */;
1557 val* var_recvtype /* var recvtype: MType */;
1558 short int var5 /* : Bool */;
1559 val* var6 /* : MType */;
1560 val* var_bound /* var bound: MType */;
1561 short int var7 /* : Bool */;
1562 int cltype;
1563 int idtype;
1564 static val* varonce;
1565 val* var8 /* : String */;
1566 char* var9 /* : NativeString */;
1567 long var10 /* : Int */;
1568 val* var11 /* : String */;
1569 val* var12 /* : nullable MType */;
1570 var_v = p0;
1571 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AAttrFormExpr__resolve_property]))(self, var_v) /* resolve_property on <self:AIssetAttrExpr>*/;
1572 var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AAttrFormExpr__attr_type]))(self) /* attr_type on <self:AIssetAttrExpr>*/;
1573 var_mtype = var;
1574 var1 = NULL;
1575 if (var_mtype == NULL) {
1576 var2 = 1; /* is null */
1577 } else {
1578 var2 = 0; /* arg is null but recv is not */
1579 }
1580 if (var2){
1581 goto RET_LABEL;
1582 } else {
1583 }
1584 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrFormExpr__n_expr]))(self) /* n_expr on <self:AIssetAttrExpr>*/;
1585 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_typing__AExpr__mtype]))(var3) /* mtype on <var3:AExpr>*/;
1586 if (var4 == NULL) {
1587 fprintf(stderr, "Runtime error: %s", "Cast failed");
1588 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1652);
1589 show_backtrace(1);
1590 }
1591 var_recvtype = var4;
1592 var5 = 0;
1593 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>*/;
1594 var_bound = var6;
1595 /* <var_bound:MType> isa MNullableType */
1596 cltype = type_model__MNullableType.color;
1597 idtype = type_model__MNullableType.id;
1598 if(cltype >= var_bound->type->table_size) {
1599 var7 = 0;
1600 } else {
1601 var7 = var_bound->type->type_table[cltype] == idtype;
1602 }
1603 if (var7){
1604 if (varonce) {
1605 var8 = varonce;
1606 } else {
1607 var9 = "Error: isset on a nullable attribute.";
1608 var10 = 37;
1609 var11 = string__NativeString__to_s_with_length(var9, var10);
1610 var8 = var11;
1611 varonce = var8;
1612 }
1613 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var8) /* error on <var_v:TypeVisitor>*/;
1614 } else {
1615 }
1616 var12 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
1617 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var12) /* mtype= on <self:AIssetAttrExpr>*/;
1618 RET_LABEL:;
1619 }
1620 /* method typing#AIssetAttrExpr#accept_typing for (self: Object, TypeVisitor) */
1621 void VIRTUAL_typing__AIssetAttrExpr__accept_typing(val* self, val* p0) {
1622 typing__AIssetAttrExpr__accept_typing(self, p0);
1623 RET_LABEL:;
1624 }
1625 /* method typing#ADebugTypeExpr#accept_typing for (self: ADebugTypeExpr, TypeVisitor) */
1626 void typing__ADebugTypeExpr__accept_typing(val* self, val* p0) {
1627 val* var_v /* var v: TypeVisitor */;
1628 val* var /* : AExpr */;
1629 val* var1 /* : nullable MType */;
1630 val* var_expr /* var expr: nullable MType */;
1631 val* var2 /* : null */;
1632 short int var3 /* : Bool */;
1633 val* var4 /* : MType */;
1634 val* var_unsafe /* var unsafe: MType */;
1635 val* var5 /* : AType */;
1636 val* var_ntype /* var ntype: AType */;
1637 val* var6 /* : nullable MType */;
1638 val* var_mtype /* var mtype: nullable MType */;
1639 short int var7 /* : Bool */;
1640 val* var8 /* : null */;
1641 short int var9 /* : Bool */;
1642 short int var_ /* var : Bool */;
1643 short int var10 /* : Bool */;
1644 val* var11 /* : MType */;
1645 val* var_umtype /* var umtype: MType */;
1646 val* var12 /* : ModelBuilder */;
1647 static val* varonce;
1648 val* var13 /* : String */;
1649 char* var14 /* : NativeString */;
1650 long var15 /* : Int */;
1651 val* var16 /* : String */;
1652 static val* varonce17;
1653 val* var18 /* : String */;
1654 char* var19 /* : NativeString */;
1655 long var20 /* : Int */;
1656 val* var21 /* : String */;
1657 static val* varonce22;
1658 val* var23 /* : String */;
1659 char* var24 /* : NativeString */;
1660 long var25 /* : Int */;
1661 val* var26 /* : String */;
1662 static val* varonce27;
1663 val* var28 /* : String */;
1664 char* var29 /* : NativeString */;
1665 long var30 /* : Int */;
1666 val* var31 /* : String */;
1667 static val* varonce32;
1668 val* var33 /* : String */;
1669 char* var34 /* : NativeString */;
1670 long var35 /* : Int */;
1671 val* var36 /* : String */;
1672 val* var37 /* : Array[Object] */;
1673 long var38 /* : Int */;
1674 val* var39 /* : NativeArray[Object] */;
1675 val* var40 /* : String */;
1676 short int var41 /* : Bool */;
1677 var_v = p0;
1678 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ADebugTypeExpr__n_expr]))(self) /* n_expr on <self:ADebugTypeExpr>*/;
1679 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
1680 var_expr = var1;
1681 var2 = NULL;
1682 if (var_expr == NULL) {
1683 var3 = 1; /* is null */
1684 } else {
1685 var3 = 0; /* arg is null but recv is not */
1686 }
1687 if (var3){
1688 goto RET_LABEL;
1689 } else {
1690 }
1691 var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__anchor_to]))(var_v, var_expr) /* anchor_to on <var_v:TypeVisitor>*/;
1692 var_unsafe = var4;
1693 var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ADebugTypeExpr__n_type]))(self) /* n_type on <self:ADebugTypeExpr>*/;
1694 var_ntype = var5;
1695 var6 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__resolve_mtype]))(var_v, var_ntype) /* resolve_mtype on <var_v:TypeVisitor>*/;
1696 var_mtype = var6;
1697 var8 = NULL;
1698 if (var_mtype == NULL) {
1699 var9 = 0; /* is null */
1700 } else {
1701 var9 = 1; /* arg is null and recv is not */
1702 }
1703 var_ = var9;
1704 if (var9){
1705 var10 = ((short int (*)(val*, val*))(var_mtype->class->vft[COLOR_kernel__Object___33d_61d]))(var_mtype, var_expr) /* != on <var_mtype:nullable MType(MType)>*/;
1706 var7 = var10;
1707 } else {
1708 var7 = var_;
1709 }
1710 if (var7){
1711 var11 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__anchor_to]))(var_v, var_mtype) /* anchor_to on <var_v:TypeVisitor>*/;
1712 var_umtype = var11;
1713 var12 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(var_v) /* modelbuilder on <var_v:TypeVisitor>*/;
1714 if (varonce) {
1715 var13 = varonce;
1716 } else {
1717 var14 = "Found type ";
1718 var15 = 11;
1719 var16 = string__NativeString__to_s_with_length(var14, var15);
1720 var13 = var16;
1721 varonce = var13;
1722 }
1723 if (varonce17) {
1724 var18 = varonce17;
1725 } else {
1726 var19 = " (-> ";
1727 var20 = 5;
1728 var21 = string__NativeString__to_s_with_length(var19, var20);
1729 var18 = var21;
1730 varonce17 = var18;
1731 }
1732 if (varonce22) {
1733 var23 = varonce22;
1734 } else {
1735 var24 = "), expected ";
1736 var25 = 12;
1737 var26 = string__NativeString__to_s_with_length(var24, var25);
1738 var23 = var26;
1739 varonce22 = var23;
1740 }
1741 if (varonce27) {
1742 var28 = varonce27;
1743 } else {
1744 var29 = " (-> ";
1745 var30 = 5;
1746 var31 = string__NativeString__to_s_with_length(var29, var30);
1747 var28 = var31;
1748 varonce27 = var28;
1749 }
1750 if (varonce32) {
1751 var33 = varonce32;
1752 } else {
1753 var34 = ")";
1754 var35 = 1;
1755 var36 = string__NativeString__to_s_with_length(var34, var35);
1756 var33 = var36;
1757 varonce32 = var33;
1758 }
1759 var37 = NEW_array__Array(&type_array__Arraykernel__Object);
1760 { /* var37 = array_instance Array[Object] */
1761 var38 = 9;
1762 var39 = NEW_array__NativeArray(var38, &type_array__NativeArraykernel__Object);
1763 ((struct instance_array__NativeArray*)var39)->values[0] = (val*) var13;
1764 ((struct instance_array__NativeArray*)var39)->values[1] = (val*) var_expr;
1765 ((struct instance_array__NativeArray*)var39)->values[2] = (val*) var18;
1766 ((struct instance_array__NativeArray*)var39)->values[3] = (val*) var_unsafe;
1767 ((struct instance_array__NativeArray*)var39)->values[4] = (val*) var23;
1768 ((struct instance_array__NativeArray*)var39)->values[5] = (val*) var_mtype;
1769 ((struct instance_array__NativeArray*)var39)->values[6] = (val*) var28;
1770 ((struct instance_array__NativeArray*)var39)->values[7] = (val*) var_umtype;
1771 ((struct instance_array__NativeArray*)var39)->values[8] = (val*) var33;
1772 ((void (*)(val*, val*, long))(var37->class->vft[COLOR_array__Array__with_native]))(var37, var39, var38) /* with_native on <var37:Array[Object]>*/;
1773 }
1774 var40 = ((val* (*)(val*))(var37->class->vft[COLOR_string__Object__to_s]))(var37) /* to_s on <var37:Array[Object]>*/;
1775 ((void (*)(val*, val*, val*))(var12->class->vft[COLOR_modelbuilder__ModelBuilder__warning]))(var12, self, var40) /* warning on <var12:ModelBuilder>*/;
1776 } else {
1777 }
1778 var41 = 1;
1779 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var41) /* is_typed= on <self:ADebugTypeExpr>*/;
1780 RET_LABEL:;
1781 }
1782 /* method typing#ADebugTypeExpr#accept_typing for (self: Object, TypeVisitor) */
1783 void VIRTUAL_typing__ADebugTypeExpr__accept_typing(val* self, val* p0) {
1784 typing__ADebugTypeExpr__accept_typing(self, p0);
1785 RET_LABEL:;
1786 }