Merge branch 'killclosures' into killnitc
[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 (%s:%d)\n", "Assert failed", "src/typing.nit", 1602);
524 exit(1);
525 }
526 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AAttrFormExpr__mproperty_61d]))(self, var_mproperty) /* mproperty= on <self:AAttrFormExpr>*/;
527 var47 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
528 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)>*/;
529 var_mpropdefs = var48;
530 var49 = ((long (*)(val*))(var_mpropdefs->class->vft[COLOR_abstract_collection__Collection__length]))(var_mpropdefs) /* length on <var_mpropdefs:Array[MAttributeDef]>*/;
531 var50 = 1;
532 { /* Inline kernel#Int#== (var49,var50) */
533 var53 = var49 == var50;
534 var51 = var53;
535 goto RET_LABEL52;
536 RET_LABEL52:(void)0;
537 }
538 if (!var51) {
539 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/typing.nit", 1606);
540 exit(1);
541 }
542 var54 = ((val* (*)(val*))(var_mpropdefs->class->vft[COLOR_abstract_collection__Collection__first]))(var_mpropdefs) /* first on <var_mpropdefs:Array[MAttributeDef]>*/;
543 var_mpropdef = var54;
544 var55 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MAttributeDef__static_mtype]))(var_mpropdef) /* static_mtype on <var_mpropdef:MAttributeDef>*/;
545 if (var55 == NULL) {
546 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/typing.nit", 1608);
547 exit(1);
548 }
549 var_attr_type = var55;
550 var56 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrFormExpr__n_expr]))(self) /* n_expr on <self:AAttrFormExpr>*/;
551 /* <var56:AExpr> isa ASelfExpr */
552 cltype58 = type_parser_nodes__ASelfExpr.color;
553 idtype59 = type_parser_nodes__ASelfExpr.id;
554 if(cltype58 >= var56->type->table_size) {
555 var57 = 0;
556 } else {
557 var57 = var56->type->type_table[cltype58] == idtype59;
558 }
559 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>*/;
560 var_attr_type = var60;
561 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AAttrFormExpr__attr_type_61d]))(self, var_attr_type) /* attr_type= on <self:AAttrFormExpr>*/;
562 RET_LABEL:;
563 }
564 /* method typing#AAttrFormExpr#resolve_property for (self: Object, TypeVisitor) */
565 void VIRTUAL_typing__AAttrFormExpr__resolve_property(val* self, val* p0) {
566 typing__AAttrFormExpr__resolve_property(self, p0);
567 RET_LABEL:;
568 }
569 /* method typing#AAttrExpr#accept_typing for (self: AAttrExpr, TypeVisitor) */
570 void typing__AAttrExpr__accept_typing(val* self, val* p0) {
571 val* var_v /* var v: TypeVisitor */;
572 val* var /* : nullable MType */;
573 var_v = p0;
574 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AAttrFormExpr__resolve_property]))(self, var_v) /* resolve_property on <self:AAttrExpr>*/;
575 var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AAttrFormExpr__attr_type]))(self) /* attr_type on <self:AAttrExpr>*/;
576 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var) /* mtype= on <self:AAttrExpr>*/;
577 RET_LABEL:;
578 }
579 /* method typing#AAttrExpr#accept_typing for (self: Object, TypeVisitor) */
580 void VIRTUAL_typing__AAttrExpr__accept_typing(val* self, val* p0) {
581 typing__AAttrExpr__accept_typing(self, p0);
582 RET_LABEL:;
583 }
584 /* method typing#AAttrAssignExpr#accept_typing for (self: AAttrAssignExpr, TypeVisitor) */
585 void typing__AAttrAssignExpr__accept_typing(val* self, val* p0) {
586 val* var_v /* var v: TypeVisitor */;
587 val* var /* : nullable MType */;
588 val* var_mtype /* var mtype: nullable MType */;
589 val* var1 /* : AExpr */;
590 val* var2 /* : nullable MType */;
591 short int var3 /* : Bool */;
592 var_v = p0;
593 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AAttrFormExpr__resolve_property]))(self, var_v) /* resolve_property on <self:AAttrAssignExpr>*/;
594 var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AAttrFormExpr__attr_type]))(self) /* attr_type on <self:AAttrAssignExpr>*/;
595 var_mtype = var;
596 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssignFormExpr__n_value]))(self) /* n_value on <self:AAttrAssignExpr>*/;
597 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>*/;
598 var2;
599 var3 = 1;
600 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var3) /* is_typed= on <self:AAttrAssignExpr>*/;
601 RET_LABEL:;
602 }
603 /* method typing#AAttrAssignExpr#accept_typing for (self: Object, TypeVisitor) */
604 void VIRTUAL_typing__AAttrAssignExpr__accept_typing(val* self, val* p0) {
605 typing__AAttrAssignExpr__accept_typing(self, p0);
606 RET_LABEL:;
607 }
608 /* method typing#AAttrReassignExpr#accept_typing for (self: AAttrReassignExpr, TypeVisitor) */
609 void typing__AAttrReassignExpr__accept_typing(val* self, val* p0) {
610 val* var_v /* var v: TypeVisitor */;
611 val* var /* : nullable MType */;
612 val* var_mtype /* var mtype: nullable MType */;
613 val* var1 /* : null */;
614 short int var2 /* : Bool */;
615 val* var3 /* : nullable MType */;
616 short int var4 /* : Bool */;
617 var_v = p0;
618 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AAttrFormExpr__resolve_property]))(self, var_v) /* resolve_property on <self:AAttrReassignExpr>*/;
619 var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AAttrFormExpr__attr_type]))(self) /* attr_type on <self:AAttrReassignExpr>*/;
620 var_mtype = var;
621 var1 = NULL;
622 if (var_mtype == NULL) {
623 var2 = 1; /* is null */
624 } else {
625 var2 = 0; /* arg is null but recv is not */
626 }
627 if (var2){
628 goto RET_LABEL;
629 } else {
630 }
631 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>*/;
632 var3;
633 var4 = 1;
634 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var4) /* is_typed= on <self:AAttrReassignExpr>*/;
635 RET_LABEL:;
636 }
637 /* method typing#AAttrReassignExpr#accept_typing for (self: Object, TypeVisitor) */
638 void VIRTUAL_typing__AAttrReassignExpr__accept_typing(val* self, val* p0) {
639 typing__AAttrReassignExpr__accept_typing(self, p0);
640 RET_LABEL:;
641 }
642 /* method typing#AIssetAttrExpr#accept_typing for (self: AIssetAttrExpr, TypeVisitor) */
643 void typing__AIssetAttrExpr__accept_typing(val* self, val* p0) {
644 val* var_v /* var v: TypeVisitor */;
645 val* var /* : nullable MType */;
646 val* var_mtype /* var mtype: nullable MType */;
647 val* var1 /* : null */;
648 short int var2 /* : Bool */;
649 val* var3 /* : AExpr */;
650 val* var4 /* : nullable MType */;
651 val* var_recvtype /* var recvtype: MType */;
652 short int var5 /* : Bool */;
653 val* var6 /* : MType */;
654 val* var_bound /* var bound: MType */;
655 short int var7 /* : Bool */;
656 int cltype;
657 int idtype;
658 static val* varonce;
659 val* var8 /* : String */;
660 char* var9 /* : NativeString */;
661 long var10 /* : Int */;
662 val* var11 /* : String */;
663 val* var12 /* : nullable MType */;
664 var_v = p0;
665 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AAttrFormExpr__resolve_property]))(self, var_v) /* resolve_property on <self:AIssetAttrExpr>*/;
666 var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AAttrFormExpr__attr_type]))(self) /* attr_type on <self:AIssetAttrExpr>*/;
667 var_mtype = var;
668 var1 = NULL;
669 if (var_mtype == NULL) {
670 var2 = 1; /* is null */
671 } else {
672 var2 = 0; /* arg is null but recv is not */
673 }
674 if (var2){
675 goto RET_LABEL;
676 } else {
677 }
678 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrFormExpr__n_expr]))(self) /* n_expr on <self:AIssetAttrExpr>*/;
679 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_typing__AExpr__mtype]))(var3) /* mtype on <var3:AExpr>*/;
680 if (var4 == NULL) {
681 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/typing.nit", 1654);
682 exit(1);
683 }
684 var_recvtype = var4;
685 var5 = 0;
686 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>*/;
687 var_bound = var6;
688 /* <var_bound:MType> isa MNullableType */
689 cltype = type_model__MNullableType.color;
690 idtype = type_model__MNullableType.id;
691 if(cltype >= var_bound->type->table_size) {
692 var7 = 0;
693 } else {
694 var7 = var_bound->type->type_table[cltype] == idtype;
695 }
696 if (var7){
697 if (varonce) {
698 var8 = varonce;
699 } else {
700 var9 = "Error: isset on a nullable attribute.";
701 var10 = 37;
702 var11 = string__NativeString__to_s_with_length(var9, var10);
703 var8 = var11;
704 varonce = var8;
705 }
706 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var8) /* error on <var_v:TypeVisitor>*/;
707 } else {
708 }
709 var12 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
710 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var12) /* mtype= on <self:AIssetAttrExpr>*/;
711 RET_LABEL:;
712 }
713 /* method typing#AIssetAttrExpr#accept_typing for (self: Object, TypeVisitor) */
714 void VIRTUAL_typing__AIssetAttrExpr__accept_typing(val* self, val* p0) {
715 typing__AIssetAttrExpr__accept_typing(self, p0);
716 RET_LABEL:;
717 }
718 /* method typing#AClosureCallExpr#accept_typing for (self: AClosureCallExpr, TypeVisitor) */
719 void typing__AClosureCallExpr__accept_typing(val* self, val* p0) {
720 val* var_v /* var v: TypeVisitor */;
721 val* var /* : nullable ClosureVariable */;
722 val* var_variable /* var variable: nullable ClosureVariable */;
723 val* var1 /* : null */;
724 short int var2 /* : Bool */;
725 val* var3 /* : AClassdef */;
726 val* var4 /* : nullable MClassDef */;
727 val* var5 /* : MClassType */;
728 val* var_recvtype /* var recvtype: MClassType */;
729 val* var6 /* : nullable MType */;
730 val* var_msignature /* var msignature: MType */;
731 short int var7 /* : Bool */;
732 val* var8 /* : MType */;
733 short int var9 /* : Bool */;
734 int cltype;
735 int idtype;
736 val* var10 /* : AExprs */;
737 val* var11 /* : Array[AExpr] */;
738 val* var_args /* var args: Array[AExpr] */;
739 val* var12 /* : String */;
740 short int var13 /* : Bool */;
741 short int var14 /* : Bool */;
742 val* var15 /* : nullable MType */;
743 var_v = p0;
744 var = ((val* (*)(val*))(self->class->vft[COLOR_scope__AClosureCallExpr__variable]))(self) /* variable on <self:AClosureCallExpr>*/;
745 var_variable = var;
746 var1 = NULL;
747 if (var_variable == NULL) {
748 var2 = 1; /* is null */
749 } else {
750 var2 = 0; /* arg is null but recv is not */
751 }
752 if (var2){
753 goto RET_LABEL;
754 } else {
755 }
756 var3 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(var_v) /* nclassdef on <var_v:TypeVisitor>*/;
757 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var3) /* mclassdef on <var3:AClassdef>*/;
758 if (var4 == NULL) {
759 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 1671);
760 exit(1);
761 } else {
762 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_model__MClassDef__bound_mtype]))(var4) /* bound_mtype on <var4:nullable MClassDef>*/;
763 }
764 var_recvtype = var5;
765 var6 = ((val* (*)(val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type]))(var_variable) /* declared_type on <var_variable:nullable ClosureVariable(ClosureVariable)>*/;
766 if (var6 == NULL) {
767 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/typing.nit", 1672);
768 exit(1);
769 }
770 var_msignature = var6;
771 var7 = 0;
772 var8 = ((val* (*)(val*, val*, val*, short int))(var_v->class->vft[COLOR_typing__TypeVisitor__resolve_for]))(var_v, var_msignature, var_recvtype, var7) /* resolve_for on <var_v:TypeVisitor>*/;
773 /* <var8:MType> isa MSignature */
774 cltype = type_model__MSignature.color;
775 idtype = type_model__MSignature.id;
776 if(cltype >= var8->type->table_size) {
777 var9 = 0;
778 } else {
779 var9 = var8->type->type_table[cltype] == idtype;
780 }
781 if (!var9) {
782 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/typing.nit", 1673);
783 exit(1);
784 }
785 var_msignature = var8;
786 var10 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AClosureCallExpr__n_args]))(self) /* n_args on <self:AClosureCallExpr>*/;
787 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_typing__AExprs__to_a]))(var10) /* to_a on <var10:AExprs>*/;
788 var_args = var11;
789 var12 = ((val* (*)(val*))(var_variable->class->vft[COLOR_scope__Variable__name]))(var_variable) /* name on <var_variable:nullable ClosureVariable(ClosureVariable)>*/;
790 var13 = ((short int (*)(val*, val*, val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__check_signature]))(var_v, self, var_args, var12, var_msignature) /* check_signature on <var_v:TypeVisitor>*/;
791 var13;
792 var14 = 1;
793 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var14) /* is_typed= on <self:AClosureCallExpr>*/;
794 var15 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:MType(MSignature)>*/;
795 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var15) /* mtype= on <self:AClosureCallExpr>*/;
796 RET_LABEL:;
797 }
798 /* method typing#AClosureCallExpr#accept_typing for (self: Object, TypeVisitor) */
799 void VIRTUAL_typing__AClosureCallExpr__accept_typing(val* self, val* p0) {
800 typing__AClosureCallExpr__accept_typing(self, p0);
801 RET_LABEL:;
802 }
803 /* method typing#AClosureDef#mclosure for (self: AClosureDef): nullable MParameter */
804 val* typing__AClosureDef__mclosure(val* self) {
805 val* var /* : nullable MParameter */;
806 val* var1 /* : nullable MParameter */;
807 var1 = self->attrs[COLOR_typing__AClosureDef___64dmclosure].val; /* @mclosure on <self:AClosureDef> */
808 var = var1;
809 RET_LABEL:;
810 return var;
811 }
812 /* method typing#AClosureDef#mclosure for (self: Object): nullable MParameter */
813 val* VIRTUAL_typing__AClosureDef__mclosure(val* self) {
814 val* var /* : nullable MParameter */;
815 val* var1 /* : nullable MParameter */;
816 var1 = typing__AClosureDef__mclosure(self);
817 var = var1;
818 RET_LABEL:;
819 return var;
820 }
821 /* method typing#AClosureDef#mclosure= for (self: AClosureDef, nullable MParameter) */
822 void typing__AClosureDef__mclosure_61d(val* self, val* p0) {
823 self->attrs[COLOR_typing__AClosureDef___64dmclosure].val = p0; /* @mclosure on <self:AClosureDef> */
824 RET_LABEL:;
825 }
826 /* method typing#AClosureDef#mclosure= for (self: Object, nullable MParameter) */
827 void VIRTUAL_typing__AClosureDef__mclosure_61d(val* self, val* p0) {
828 typing__AClosureDef__mclosure_61d(self, p0);
829 RET_LABEL:;
830 }
831 /* method typing#AClosureDef#accept_typing for (self: AClosureDef, TypeVisitor, MParameter) */
832 void typing__AClosureDef__accept_typing(val* self, val* p0, val* p1) {
833 val* var_v /* var v: TypeVisitor */;
834 val* var_mparameter /* var mparameter: MParameter */;
835 val* var /* : nullable Array[Variable] */;
836 val* var_variables /* var variables: nullable Array[Variable] */;
837 val* var1 /* : null */;
838 short int var2 /* : Bool */;
839 val* var3 /* : MType */;
840 short int var4 /* : Bool */;
841 int cltype;
842 int idtype;
843 val* var_msignature /* var msignature: MSignature */;
844 long var5 /* : Int */;
845 long var6 /* : Int */;
846 short int var7 /* : Bool */;
847 short int var9 /* : Bool */;
848 short int var10 /* : Bool */;
849 static val* varonce;
850 val* var11 /* : String */;
851 char* var12 /* : NativeString */;
852 long var13 /* : Int */;
853 val* var14 /* : String */;
854 val* var15 /* : String */;
855 static val* varonce16;
856 val* var17 /* : String */;
857 char* var18 /* : NativeString */;
858 long var19 /* : Int */;
859 val* var20 /* : String */;
860 long var21 /* : Int */;
861 static val* varonce22;
862 val* var23 /* : String */;
863 char* var24 /* : NativeString */;
864 long var25 /* : Int */;
865 val* var26 /* : String */;
866 long var27 /* : Int */;
867 static val* varonce28;
868 val* var29 /* : String */;
869 char* var30 /* : NativeString */;
870 long var31 /* : Int */;
871 val* var32 /* : String */;
872 val* var33 /* : Array[Object] */;
873 long var34 /* : Int */;
874 val* var35 /* : NativeArray[Object] */;
875 val* var36 /* : Object */;
876 val* var37 /* : Object */;
877 val* var38 /* : String */;
878 val* var39 /* : Range[Int] */;
879 long var40 /* : Int */;
880 long var41 /* : Int */;
881 val* var42 /* : Discrete */;
882 val* var43 /* : Discrete */;
883 val* var44 /* : Iterator[nullable Object] */;
884 short int var45 /* : Bool */;
885 val* var46 /* : nullable Object */;
886 long var_i /* var i: Int */;
887 long var47 /* : Int */;
888 val* var48 /* : nullable Object */;
889 val* var49 /* : Array[MParameter] */;
890 val* var50 /* : nullable Object */;
891 val* var51 /* : MType */;
892 val* var52 /* : nullable AExpr */;
893 var_v = p0;
894 var_mparameter = p1;
895 var = ((val* (*)(val*))(self->class->vft[COLOR_scope__AClosureDef__variables]))(self) /* variables on <self:AClosureDef>*/;
896 var_variables = var;
897 var1 = NULL;
898 if (var_variables == NULL) {
899 var2 = 1; /* is null */
900 } else {
901 var2 = 0; /* arg is null but recv is not */
902 }
903 if (var2){
904 goto RET_LABEL;
905 } else {
906 }
907 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AClosureDef__mclosure_61d]))(self, var_mparameter) /* mclosure= on <self:AClosureDef>*/;
908 var3 = ((val* (*)(val*))(var_mparameter->class->vft[COLOR_model__MParameter__mtype]))(var_mparameter) /* mtype on <var_mparameter:MParameter>*/;
909 /* <var3:MType> isa MSignature */
910 cltype = type_model__MSignature.color;
911 idtype = type_model__MSignature.id;
912 if(cltype >= var3->type->table_size) {
913 var4 = 0;
914 } else {
915 var4 = var3->type->type_table[cltype] == idtype;
916 }
917 if (!var4) {
918 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/typing.nit", 1692);
919 exit(1);
920 }
921 var_msignature = var3;
922 var5 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
923 var6 = ((long (*)(val*))(var_variables->class->vft[COLOR_abstract_collection__Collection__length]))(var_variables) /* length on <var_variables:nullable Array[Variable](Array[Variable])>*/;
924 { /* Inline kernel#Int#!= (var5,var6) */
925 var9 = var5 == var6;
926 var10 = !var9;
927 var7 = var10;
928 goto RET_LABEL8;
929 RET_LABEL8:(void)0;
930 }
931 if (var7){
932 if (varonce) {
933 var11 = varonce;
934 } else {
935 var12 = "Type error: closure ";
936 var13 = 20;
937 var14 = string__NativeString__to_s_with_length(var12, var13);
938 var11 = var14;
939 varonce = var11;
940 }
941 var15 = ((val* (*)(val*))(var_mparameter->class->vft[COLOR_model__MParameter__name]))(var_mparameter) /* name on <var_mparameter:MParameter>*/;
942 if (varonce16) {
943 var17 = varonce16;
944 } else {
945 var18 = " expects ";
946 var19 = 9;
947 var20 = string__NativeString__to_s_with_length(var18, var19);
948 var17 = var20;
949 varonce16 = var17;
950 }
951 var21 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
952 if (varonce22) {
953 var23 = varonce22;
954 } else {
955 var24 = " parameters, ";
956 var25 = 13;
957 var26 = string__NativeString__to_s_with_length(var24, var25);
958 var23 = var26;
959 varonce22 = var23;
960 }
961 var27 = ((long (*)(val*))(var_variables->class->vft[COLOR_abstract_collection__Collection__length]))(var_variables) /* length on <var_variables:nullable Array[Variable](Array[Variable])>*/;
962 if (varonce28) {
963 var29 = varonce28;
964 } else {
965 var30 = " given";
966 var31 = 6;
967 var32 = string__NativeString__to_s_with_length(var30, var31);
968 var29 = var32;
969 varonce28 = var29;
970 }
971 var33 = NEW_array__Array(&type_array__Arraykernel__Object);
972 { /* var33 = array_instance Array[Object] */
973 var34 = 7;
974 var35 = NEW_array__NativeArray(var34, &type_array__NativeArraykernel__Object);
975 ((struct instance_array__NativeArray*)var35)->values[0] = (val*) var11;
976 ((struct instance_array__NativeArray*)var35)->values[1] = (val*) var15;
977 ((struct instance_array__NativeArray*)var35)->values[2] = (val*) var17;
978 var36 = BOX_kernel__Int(var21); /* autobox from Int to Object */
979 ((struct instance_array__NativeArray*)var35)->values[3] = (val*) var36;
980 ((struct instance_array__NativeArray*)var35)->values[4] = (val*) var23;
981 var37 = BOX_kernel__Int(var27); /* autobox from Int to Object */
982 ((struct instance_array__NativeArray*)var35)->values[5] = (val*) var37;
983 ((struct instance_array__NativeArray*)var35)->values[6] = (val*) var29;
984 ((void (*)(val*, val*, long))(var33->class->vft[COLOR_array__Array__with_native]))(var33, var35, var34) /* with_native on <var33:Array[Object]>*/;
985 CHECK_NEW_array__Array(var33);
986 }
987 var38 = ((val* (*)(val*))(var33->class->vft[COLOR_string__Object__to_s]))(var33) /* to_s on <var33:Array[Object]>*/;
988 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var38) /* error on <var_v:TypeVisitor>*/;
989 goto RET_LABEL;
990 } else {
991 }
992 var39 = NEW_range__Range(&type_range__Rangekernel__Int);
993 var40 = 0;
994 var41 = ((long (*)(val*))(var_variables->class->vft[COLOR_abstract_collection__Collection__length]))(var_variables) /* length on <var_variables:nullable Array[Variable](Array[Variable])>*/;
995 var42 = BOX_kernel__Int(var40); /* autobox from Int to Discrete */
996 var43 = BOX_kernel__Int(var41); /* autobox from Int to Discrete */
997 ((void (*)(val*, val*, val*))(var39->class->vft[COLOR_range__Range__without_last]))(var39, var42, var43) /* without_last on <var39:Range[Int]>*/;
998 CHECK_NEW_range__Range(var39);
999 var44 = ((val* (*)(val*))(var39->class->vft[COLOR_abstract_collection__Collection__iterator]))(var39) /* iterator on <var39:Range[Int]>*/;
1000 for(;;) {
1001 var45 = ((short int (*)(val*))(var44->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var44) /* is_ok on <var44:Iterator[nullable Object]>*/;
1002 if(!var45) break;
1003 var46 = ((val* (*)(val*))(var44->class->vft[COLOR_abstract_collection__Iterator__item]))(var44) /* item on <var44:Iterator[nullable Object]>*/;
1004 var47 = ((struct instance_kernel__Int*)var46)->value; /* autounbox from nullable Object to Int */;
1005 var_i = var47;
1006 var48 = ((val* (*)(val*, long))(var_variables->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_variables, var_i) /* [] on <var_variables:nullable Array[Variable](Array[Variable])>*/;
1007 var49 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
1008 var50 = ((val* (*)(val*, long))(var49->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var49, var_i) /* [] on <var49:Array[MParameter]>*/;
1009 var51 = ((val* (*)(val*))(var50->class->vft[COLOR_model__MParameter__mtype]))(var50) /* mtype on <var50:nullable Object(MParameter)>*/;
1010 ((void (*)(val*, val*))(var48->class->vft[COLOR_typing__Variable__declared_type_61d]))(var48, var51) /* declared_type= on <var48:nullable Object(Variable)>*/;
1011 CONTINUE_label: (void)0;
1012 ((void (*)(val*))(var44->class->vft[COLOR_abstract_collection__Iterator__next]))(var44) /* next on <var44:Iterator[nullable Object]>*/;
1013 }
1014 BREAK_label: (void)0;
1015 var52 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AClosureDef__n_expr]))(self) /* n_expr on <self:AClosureDef>*/;
1016 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var52) /* visit_stmt on <var_v:TypeVisitor>*/;
1017 RET_LABEL:;
1018 }
1019 /* method typing#AClosureDef#accept_typing for (self: Object, TypeVisitor, MParameter) */
1020 void VIRTUAL_typing__AClosureDef__accept_typing(val* self, val* p0, val* p1) {
1021 typing__AClosureDef__accept_typing(self, p0, p1);
1022 RET_LABEL:;
1023 }
1024 /* method typing#ADebugTypeExpr#accept_typing for (self: ADebugTypeExpr, TypeVisitor) */
1025 void typing__ADebugTypeExpr__accept_typing(val* self, val* p0) {
1026 val* var_v /* var v: TypeVisitor */;
1027 val* var /* : AExpr */;
1028 val* var1 /* : nullable MType */;
1029 val* var_expr /* var expr: nullable MType */;
1030 val* var2 /* : null */;
1031 short int var3 /* : Bool */;
1032 val* var4 /* : MType */;
1033 val* var_unsafe /* var unsafe: MType */;
1034 val* var5 /* : AType */;
1035 val* var_ntype /* var ntype: AType */;
1036 val* var6 /* : nullable MType */;
1037 val* var_mtype /* var mtype: nullable MType */;
1038 short int var7 /* : Bool */;
1039 val* var8 /* : null */;
1040 short int var9 /* : Bool */;
1041 short int var_ /* var : Bool */;
1042 short int var10 /* : Bool */;
1043 val* var11 /* : MType */;
1044 val* var_umtype /* var umtype: MType */;
1045 val* var12 /* : ModelBuilder */;
1046 static val* varonce;
1047 val* var13 /* : String */;
1048 char* var14 /* : NativeString */;
1049 long var15 /* : Int */;
1050 val* var16 /* : String */;
1051 static val* varonce17;
1052 val* var18 /* : String */;
1053 char* var19 /* : NativeString */;
1054 long var20 /* : Int */;
1055 val* var21 /* : String */;
1056 static val* varonce22;
1057 val* var23 /* : String */;
1058 char* var24 /* : NativeString */;
1059 long var25 /* : Int */;
1060 val* var26 /* : String */;
1061 static val* varonce27;
1062 val* var28 /* : String */;
1063 char* var29 /* : NativeString */;
1064 long var30 /* : Int */;
1065 val* var31 /* : String */;
1066 static val* varonce32;
1067 val* var33 /* : String */;
1068 char* var34 /* : NativeString */;
1069 long var35 /* : Int */;
1070 val* var36 /* : String */;
1071 val* var37 /* : Array[Object] */;
1072 long var38 /* : Int */;
1073 val* var39 /* : NativeArray[Object] */;
1074 val* var40 /* : String */;
1075 short int var41 /* : Bool */;
1076 var_v = p0;
1077 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ADebugTypeExpr__n_expr]))(self) /* n_expr on <self:ADebugTypeExpr>*/;
1078 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
1079 var_expr = var1;
1080 var2 = NULL;
1081 if (var_expr == NULL) {
1082 var3 = 1; /* is null */
1083 } else {
1084 var3 = 0; /* arg is null but recv is not */
1085 }
1086 if (var3){
1087 goto RET_LABEL;
1088 } else {
1089 }
1090 var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__anchor_to]))(var_v, var_expr) /* anchor_to on <var_v:TypeVisitor>*/;
1091 var_unsafe = var4;
1092 var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ADebugTypeExpr__n_type]))(self) /* n_type on <self:ADebugTypeExpr>*/;
1093 var_ntype = var5;
1094 var6 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__resolve_mtype]))(var_v, var_ntype) /* resolve_mtype on <var_v:TypeVisitor>*/;
1095 var_mtype = var6;
1096 var8 = NULL;
1097 if (var_mtype == NULL) {
1098 var9 = 0; /* is null */
1099 } else {
1100 var9 = 1; /* arg is null and recv is not */
1101 }
1102 var_ = var9;
1103 if (var9){
1104 var10 = ((short int (*)(val*, val*))(var_mtype->class->vft[COLOR_kernel__Object___33d_61d]))(var_mtype, var_expr) /* != on <var_mtype:nullable MType(MType)>*/;
1105 var7 = var10;
1106 } else {
1107 var7 = var_;
1108 }
1109 if (var7){
1110 var11 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__anchor_to]))(var_v, var_mtype) /* anchor_to on <var_v:TypeVisitor>*/;
1111 var_umtype = var11;
1112 var12 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(var_v) /* modelbuilder on <var_v:TypeVisitor>*/;
1113 if (varonce) {
1114 var13 = varonce;
1115 } else {
1116 var14 = "Found type ";
1117 var15 = 11;
1118 var16 = string__NativeString__to_s_with_length(var14, var15);
1119 var13 = var16;
1120 varonce = var13;
1121 }
1122 if (varonce17) {
1123 var18 = varonce17;
1124 } else {
1125 var19 = " (-> ";
1126 var20 = 5;
1127 var21 = string__NativeString__to_s_with_length(var19, var20);
1128 var18 = var21;
1129 varonce17 = var18;
1130 }
1131 if (varonce22) {
1132 var23 = varonce22;
1133 } else {
1134 var24 = "), expected ";
1135 var25 = 12;
1136 var26 = string__NativeString__to_s_with_length(var24, var25);
1137 var23 = var26;
1138 varonce22 = var23;
1139 }
1140 if (varonce27) {
1141 var28 = varonce27;
1142 } else {
1143 var29 = " (-> ";
1144 var30 = 5;
1145 var31 = string__NativeString__to_s_with_length(var29, var30);
1146 var28 = var31;
1147 varonce27 = var28;
1148 }
1149 if (varonce32) {
1150 var33 = varonce32;
1151 } else {
1152 var34 = ")";
1153 var35 = 1;
1154 var36 = string__NativeString__to_s_with_length(var34, var35);
1155 var33 = var36;
1156 varonce32 = var33;
1157 }
1158 var37 = NEW_array__Array(&type_array__Arraykernel__Object);
1159 { /* var37 = array_instance Array[Object] */
1160 var38 = 9;
1161 var39 = NEW_array__NativeArray(var38, &type_array__NativeArraykernel__Object);
1162 ((struct instance_array__NativeArray*)var39)->values[0] = (val*) var13;
1163 ((struct instance_array__NativeArray*)var39)->values[1] = (val*) var_expr;
1164 ((struct instance_array__NativeArray*)var39)->values[2] = (val*) var18;
1165 ((struct instance_array__NativeArray*)var39)->values[3] = (val*) var_unsafe;
1166 ((struct instance_array__NativeArray*)var39)->values[4] = (val*) var23;
1167 ((struct instance_array__NativeArray*)var39)->values[5] = (val*) var_mtype;
1168 ((struct instance_array__NativeArray*)var39)->values[6] = (val*) var28;
1169 ((struct instance_array__NativeArray*)var39)->values[7] = (val*) var_umtype;
1170 ((struct instance_array__NativeArray*)var39)->values[8] = (val*) var33;
1171 ((void (*)(val*, val*, long))(var37->class->vft[COLOR_array__Array__with_native]))(var37, var39, var38) /* with_native on <var37:Array[Object]>*/;
1172 CHECK_NEW_array__Array(var37);
1173 }
1174 var40 = ((val* (*)(val*))(var37->class->vft[COLOR_string__Object__to_s]))(var37) /* to_s on <var37:Array[Object]>*/;
1175 ((void (*)(val*, val*, val*))(var12->class->vft[COLOR_modelbuilder__ModelBuilder__warning]))(var12, self, var40) /* warning on <var12:ModelBuilder>*/;
1176 } else {
1177 }
1178 var41 = 1;
1179 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var41) /* is_typed= on <self:ADebugTypeExpr>*/;
1180 RET_LABEL:;
1181 }
1182 /* method typing#ADebugTypeExpr#accept_typing for (self: Object, TypeVisitor) */
1183 void VIRTUAL_typing__ADebugTypeExpr__accept_typing(val* self, val* p0) {
1184 typing__ADebugTypeExpr__accept_typing(self, p0);
1185 RET_LABEL:;
1186 }