1 #include "layout_builders.sep.0.h"
2 /* method layout_builders#Layout#ids for (self: Layout[Object]): Map[Object, Int] */
3 val
* layout_builders__Layout__ids(val
* self
) {
4 val
* var
/* : Map[Object, Int] */;
5 val
* var1
/* : Map[Object, Int] */;
6 var1
= self
->attrs
[COLOR_layout_builders__Layout___64dids
].val
; /* @ids on <self:Layout[Object]> */
8 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @ids");
9 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 34);
16 /* method layout_builders#Layout#ids for (self: Object): Map[Object, Int] */
17 val
* VIRTUAL_layout_builders__Layout__ids(val
* self
) {
18 val
* var
/* : Map[Object, Int] */;
19 val
* var1
/* : Map[Object, Int] */;
20 var1
= layout_builders__Layout__ids(self
);
25 /* method layout_builders#Layout#ids= for (self: Layout[Object], Map[Object, Int]) */
26 void layout_builders__Layout__ids_61d(val
* self
, val
* p0
) {
27 short int var
/* : Bool */;
30 const struct type
* type_struct
;
31 const char* var_class_name
;
32 /* Covariant cast for argument 0 (ids) <p0:Map[Object, Int]> isa Map[Layout#0, Int] */
33 /* <p0:Map[Object, Int]> isa Map[Layout#0, Int] */
34 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Maplayout_builders__Layout_FT0kernel__Int
];
35 cltype
= type_struct
->color
;
36 idtype
= type_struct
->id
;
37 if(cltype
>= p0
->type
->table_size
) {
40 var
= p0
->type
->type_table
[cltype
] == idtype
;
43 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
44 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[Layout#0, Int]", var_class_name
);
45 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 34);
48 self
->attrs
[COLOR_layout_builders__Layout___64dids
].val
= p0
; /* @ids on <self:Layout[Object]> */
51 /* method layout_builders#Layout#ids= for (self: Object, Map[Object, Int]) */
52 void VIRTUAL_layout_builders__Layout__ids_61d(val
* self
, val
* p0
) {
53 layout_builders__Layout__ids_61d(self
, p0
);
56 /* method layout_builders#Layout#pos for (self: Layout[Object]): Map[Object, Int] */
57 val
* layout_builders__Layout__pos(val
* self
) {
58 val
* var
/* : Map[Object, Int] */;
59 val
* var1
/* : Map[Object, Int] */;
60 var1
= self
->attrs
[COLOR_layout_builders__Layout___64dpos
].val
; /* @pos on <self:Layout[Object]> */
62 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @pos");
63 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 36);
70 /* method layout_builders#Layout#pos for (self: Object): Map[Object, Int] */
71 val
* VIRTUAL_layout_builders__Layout__pos(val
* self
) {
72 val
* var
/* : Map[Object, Int] */;
73 val
* var1
/* : Map[Object, Int] */;
74 var1
= layout_builders__Layout__pos(self
);
79 /* method layout_builders#Layout#pos= for (self: Layout[Object], Map[Object, Int]) */
80 void layout_builders__Layout__pos_61d(val
* self
, val
* p0
) {
81 short int var
/* : Bool */;
84 const struct type
* type_struct
;
85 const char* var_class_name
;
86 /* Covariant cast for argument 0 (pos) <p0:Map[Object, Int]> isa Map[Layout#0, Int] */
87 /* <p0:Map[Object, Int]> isa Map[Layout#0, Int] */
88 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Maplayout_builders__Layout_FT0kernel__Int
];
89 cltype
= type_struct
->color
;
90 idtype
= type_struct
->id
;
91 if(cltype
>= p0
->type
->table_size
) {
94 var
= p0
->type
->type_table
[cltype
] == idtype
;
97 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
98 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[Layout#0, Int]", var_class_name
);
99 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 36);
102 self
->attrs
[COLOR_layout_builders__Layout___64dpos
].val
= p0
; /* @pos on <self:Layout[Object]> */
105 /* method layout_builders#Layout#pos= for (self: Object, Map[Object, Int]) */
106 void VIRTUAL_layout_builders__Layout__pos_61d(val
* self
, val
* p0
) {
107 layout_builders__Layout__pos_61d(self
, p0
);
110 /* method layout_builders#Layout#init for (self: Layout[Object]) */
111 void layout_builders__Layout__init(val
* self
) {
114 /* method layout_builders#Layout#init for (self: Object) */
115 void VIRTUAL_layout_builders__Layout__init(val
* self
) {
116 layout_builders__Layout__init(self
);
119 /* method layout_builders#PHLayout#masks for (self: PHLayout[Object, Object]): Map[Object, Int] */
120 val
* layout_builders__PHLayout__masks(val
* self
) {
121 val
* var
/* : Map[Object, Int] */;
122 val
* var1
/* : Map[Object, Int] */;
123 var1
= self
->attrs
[COLOR_layout_builders__PHLayout___64dmasks
].val
; /* @masks on <self:PHLayout[Object, Object]> */
125 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @masks");
126 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 44);
133 /* method layout_builders#PHLayout#masks for (self: Object): Map[Object, Int] */
134 val
* VIRTUAL_layout_builders__PHLayout__masks(val
* self
) {
135 val
* var
/* : Map[Object, Int] */;
136 val
* var1
/* : Map[Object, Int] */;
137 var1
= layout_builders__PHLayout__masks(self
);
142 /* method layout_builders#PHLayout#masks= for (self: PHLayout[Object, Object], Map[Object, Int]) */
143 void layout_builders__PHLayout__masks_61d(val
* self
, val
* p0
) {
144 short int var
/* : Bool */;
147 const struct type
* type_struct
;
148 const char* var_class_name
;
149 /* Covariant cast for argument 0 (masks) <p0:Map[Object, Int]> isa Map[PHLayout#0, Int] */
150 /* <p0:Map[Object, Int]> isa Map[PHLayout#0, Int] */
151 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Maplayout_builders__PHLayout_FT0kernel__Int
];
152 cltype
= type_struct
->color
;
153 idtype
= type_struct
->id
;
154 if(cltype
>= p0
->type
->table_size
) {
157 var
= p0
->type
->type_table
[cltype
] == idtype
;
160 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
161 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[PHLayout#0, Int]", var_class_name
);
162 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 44);
165 self
->attrs
[COLOR_layout_builders__PHLayout___64dmasks
].val
= p0
; /* @masks on <self:PHLayout[Object, Object]> */
168 /* method layout_builders#PHLayout#masks= for (self: Object, Map[Object, Int]) */
169 void VIRTUAL_layout_builders__PHLayout__masks_61d(val
* self
, val
* p0
) {
170 layout_builders__PHLayout__masks_61d(self
, p0
);
173 /* method layout_builders#PHLayout#hashes for (self: PHLayout[Object, Object]): Map[Object, Map[Object, Int]] */
174 val
* layout_builders__PHLayout__hashes(val
* self
) {
175 val
* var
/* : Map[Object, Map[Object, Int]] */;
176 val
* var1
/* : Map[Object, Map[Object, Int]] */;
177 var1
= self
->attrs
[COLOR_layout_builders__PHLayout___64dhashes
].val
; /* @hashes on <self:PHLayout[Object, Object]> */
179 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @hashes");
180 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 46);
187 /* method layout_builders#PHLayout#hashes for (self: Object): Map[Object, Map[Object, Int]] */
188 val
* VIRTUAL_layout_builders__PHLayout__hashes(val
* self
) {
189 val
* var
/* : Map[Object, Map[Object, Int]] */;
190 val
* var1
/* : Map[Object, Map[Object, Int]] */;
191 var1
= layout_builders__PHLayout__hashes(self
);
196 /* method layout_builders#PHLayout#hashes= for (self: PHLayout[Object, Object], Map[Object, Map[Object, Int]]) */
197 void layout_builders__PHLayout__hashes_61d(val
* self
, val
* p0
) {
198 short int var
/* : Bool */;
201 const struct type
* type_struct
;
202 const char* var_class_name
;
203 /* Covariant cast for argument 0 (hashes) <p0:Map[Object, Map[Object, Int]]> isa Map[PHLayout#0, Map[PHLayout#1, Int]] */
204 /* <p0:Map[Object, Map[Object, Int]]> isa Map[PHLayout#0, Map[PHLayout#1, Int]] */
205 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Maplayout_builders__PHLayout_FT0abstract_collection__Maplayout_builders__PHLayout_FT1kernel__Int
];
206 cltype
= type_struct
->color
;
207 idtype
= type_struct
->id
;
208 if(cltype
>= p0
->type
->table_size
) {
211 var
= p0
->type
->type_table
[cltype
] == idtype
;
214 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
215 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[PHLayout#0, Map[PHLayout#1, Int]]", var_class_name
);
216 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 46);
219 self
->attrs
[COLOR_layout_builders__PHLayout___64dhashes
].val
= p0
; /* @hashes on <self:PHLayout[Object, Object]> */
222 /* method layout_builders#PHLayout#hashes= for (self: Object, Map[Object, Map[Object, Int]]) */
223 void VIRTUAL_layout_builders__PHLayout__hashes_61d(val
* self
, val
* p0
) {
224 layout_builders__PHLayout__hashes_61d(self
, p0
);
227 /* method layout_builders#PHLayout#init for (self: PHLayout[Object, Object]) */
228 void layout_builders__PHLayout__init(val
* self
) {
229 ((void (*)(val
*))(self
->class->vft
[COLOR_layout_builders__Layout__init
]))(self
) /* init on <self:PHLayout[Object, Object]>*/;
232 /* method layout_builders#PHLayout#init for (self: Object) */
233 void VIRTUAL_layout_builders__PHLayout__init(val
* self
) {
234 layout_builders__PHLayout__init(self
);
237 /* method layout_builders#TypingLayoutBuilder#build_layout for (self: TypingLayoutBuilder[Object], Set[Object]): Layout[Object] */
238 val
* layout_builders__TypingLayoutBuilder__build_layout(val
* self
, val
* p0
) {
239 val
* var
/* : Layout[Object] */;
240 short int var1
/* : Bool */;
243 const struct type
* type_struct
;
244 const char* var_class_name
;
245 const char* var_class_name2
;
246 /* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingLayoutBuilder#0] */
247 /* <p0:Set[Object]> isa Set[TypingLayoutBuilder#0] */
248 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingLayoutBuilder_FT0
];
249 cltype
= type_struct
->color
;
250 idtype
= type_struct
->id
;
251 if(cltype
>= p0
->type
->table_size
) {
254 var1
= p0
->type
->type_table
[cltype
] == idtype
;
257 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
258 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Set[TypingLayoutBuilder#0]", var_class_name
);
259 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 54);
262 var_class_name2
= self
== NULL ?
"null" : self
->type
->name
;
263 fprintf(stderr
, "Runtime error: Abstract method `%s` called on `%s`", "build_layout", var_class_name2
);
264 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 54);
269 /* method layout_builders#TypingLayoutBuilder#build_layout for (self: Object, Set[Object]): Layout[Object] */
270 val
* VIRTUAL_layout_builders__TypingLayoutBuilder__build_layout(val
* self
, val
* p0
) {
271 val
* var
/* : Layout[Object] */;
272 val
* var1
/* : Layout[Object] */;
273 var1
= layout_builders__TypingLayoutBuilder__build_layout(self
, p0
);
278 /* method layout_builders#TypingLayoutBuilder#poset for (self: TypingLayoutBuilder[Object]): nullable POSet[Object] */
279 val
* layout_builders__TypingLayoutBuilder__poset(val
* self
) {
280 val
* var
/* : nullable POSet[Object] */;
281 const char* var_class_name
;
282 var_class_name
= self
== NULL ?
"null" : self
->type
->name
;
283 fprintf(stderr
, "Runtime error: Abstract method `%s` called on `%s`", "poset", var_class_name
);
284 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 57);
289 /* method layout_builders#TypingLayoutBuilder#poset for (self: Object): nullable POSet[Object] */
290 val
* VIRTUAL_layout_builders__TypingLayoutBuilder__poset(val
* self
) {
291 val
* var
/* : nullable POSet[Object] */;
292 val
* var1
/* : nullable POSet[Object] */;
293 var1
= layout_builders__TypingLayoutBuilder__poset(self
);
298 /* method layout_builders#PropertyLayoutBuilder#build_layout for (self: PropertyLayoutBuilder[PropertyLayoutElement], Map[MClass, Set[PropertyLayoutElement]]): Layout[PropertyLayoutElement] */
299 val
* layout_builders__PropertyLayoutBuilder__build_layout(val
* self
, val
* p0
) {
300 val
* var
/* : Layout[PropertyLayoutElement] */;
301 short int var1
/* : Bool */;
304 const struct type
* type_struct
;
305 const char* var_class_name
;
306 const char* var_class_name2
;
307 /* Covariant cast for argument 0 (elements) <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[PropertyLayoutBuilder#0]] */
308 /* <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[PropertyLayoutBuilder#0]] */
309 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Mapmodel__MClassabstract_collection__Setlayout_builders__PropertyLayoutBuilder_FT0
];
310 cltype
= type_struct
->color
;
311 idtype
= type_struct
->id
;
312 if(cltype
>= p0
->type
->table_size
) {
315 var1
= p0
->type
->type_table
[cltype
] == idtype
;
318 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
319 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[MClass, Set[PropertyLayoutBuilder#0]]", var_class_name
);
320 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 64);
323 var_class_name2
= self
== NULL ?
"null" : self
->type
->name
;
324 fprintf(stderr
, "Runtime error: Abstract method `%s` called on `%s`", "build_layout", var_class_name2
);
325 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 64);
330 /* method layout_builders#PropertyLayoutBuilder#build_layout for (self: Object, Map[MClass, Set[PropertyLayoutElement]]): Layout[PropertyLayoutElement] */
331 val
* VIRTUAL_layout_builders__PropertyLayoutBuilder__build_layout(val
* self
, val
* p0
) {
332 val
* var
/* : Layout[PropertyLayoutElement] */;
333 val
* var1
/* : Layout[PropertyLayoutElement] */;
334 var1
= layout_builders__PropertyLayoutBuilder__build_layout(self
, p0
);
339 /* method layout_builders#ResolutionLayoutBuilder#build_layout for (self: ResolutionLayoutBuilder, Map[MClassType, Set[MType]]): Layout[MType] */
340 val
* layout_builders__ResolutionLayoutBuilder__build_layout(val
* self
, val
* p0
) {
341 val
* var
/* : Layout[MType] */;
342 const char* var_class_name
;
343 var_class_name
= self
== NULL ?
"null" : self
->type
->name
;
344 fprintf(stderr
, "Runtime error: Abstract method `%s` called on `%s`", "build_layout", var_class_name
);
345 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 84);
350 /* method layout_builders#ResolutionLayoutBuilder#build_layout for (self: Object, Map[MClassType, Set[MType]]): Layout[MType] */
351 val
* VIRTUAL_layout_builders__ResolutionLayoutBuilder__build_layout(val
* self
, val
* p0
) {
352 val
* var
/* : Layout[MType] */;
353 val
* var1
/* : Layout[MType] */;
354 var1
= layout_builders__ResolutionLayoutBuilder__build_layout(self
, p0
);
359 /* method layout_builders#POSetBuilder#mmodule for (self: POSetBuilder[Object]): MModule */
360 val
* layout_builders__POSetBuilder__mmodule(val
* self
) {
361 val
* var
/* : MModule */;
362 val
* var1
/* : MModule */;
363 var1
= self
->attrs
[COLOR_layout_builders__POSetBuilder___64dmmodule
].val
; /* @mmodule on <self:POSetBuilder[Object]> */
365 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @mmodule");
366 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 94);
373 /* method layout_builders#POSetBuilder#mmodule for (self: Object): MModule */
374 val
* VIRTUAL_layout_builders__POSetBuilder__mmodule(val
* self
) {
375 val
* var
/* : MModule */;
376 val
* var1
/* : MModule */;
377 var1
= layout_builders__POSetBuilder__mmodule(self
);
382 /* method layout_builders#POSetBuilder#mmodule= for (self: POSetBuilder[Object], MModule) */
383 void layout_builders__POSetBuilder__mmodule_61d(val
* self
, val
* p0
) {
384 self
->attrs
[COLOR_layout_builders__POSetBuilder___64dmmodule
].val
= p0
; /* @mmodule on <self:POSetBuilder[Object]> */
387 /* method layout_builders#POSetBuilder#mmodule= for (self: Object, MModule) */
388 void VIRTUAL_layout_builders__POSetBuilder__mmodule_61d(val
* self
, val
* p0
) {
389 layout_builders__POSetBuilder__mmodule_61d(self
, p0
);
392 /* method layout_builders#POSetBuilder#init for (self: POSetBuilder[Object], MModule) */
393 void layout_builders__POSetBuilder__init(val
* self
, val
* p0
) {
394 val
* var_mmodule
/* var mmodule: MModule */;
396 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__POSetBuilder__mmodule_61d
]))(self
, var_mmodule
) /* mmodule= on <self:POSetBuilder[Object]>*/;
399 /* method layout_builders#POSetBuilder#init for (self: Object, MModule) */
400 void VIRTUAL_layout_builders__POSetBuilder__init(val
* self
, val
* p0
) {
401 layout_builders__POSetBuilder__init(self
, p0
);
404 /* method layout_builders#POSetBuilder#build_poset for (self: POSetBuilder[Object], Set[Object]): POSet[Object] */
405 val
* layout_builders__POSetBuilder__build_poset(val
* self
, val
* p0
) {
406 val
* var
/* : POSet[Object] */;
407 short int var1
/* : Bool */;
410 const struct type
* type_struct
;
411 const char* var_class_name
;
412 const char* var_class_name2
;
413 /* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[POSetBuilder#0] */
414 /* <p0:Set[Object]> isa Set[POSetBuilder#0] */
415 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__POSetBuilder_FT0
];
416 cltype
= type_struct
->color
;
417 idtype
= type_struct
->id
;
418 if(cltype
>= p0
->type
->table_size
) {
421 var1
= p0
->type
->type_table
[cltype
] == idtype
;
424 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
425 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Set[POSetBuilder#0]", var_class_name
);
426 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 96);
429 var_class_name2
= self
== NULL ?
"null" : self
->type
->name
;
430 fprintf(stderr
, "Runtime error: Abstract method `%s` called on `%s`", "build_poset", var_class_name2
);
431 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 96);
436 /* method layout_builders#POSetBuilder#build_poset for (self: Object, Set[Object]): POSet[Object] */
437 val
* VIRTUAL_layout_builders__POSetBuilder__build_poset(val
* self
, val
* p0
) {
438 val
* var
/* : POSet[Object] */;
439 val
* var1
/* : POSet[Object] */;
440 var1
= layout_builders__POSetBuilder__build_poset(self
, p0
);
445 /* method layout_builders#MTypePOSetBuilder#build_poset for (self: MTypePOSetBuilder, Set[MType]): POSet[MType] */
446 val
* layout_builders__MTypePOSetBuilder__build_poset(val
* self
, val
* p0
) {
447 val
* var
/* : POSet[MType] */;
448 short int var1
/* : Bool */;
451 const char* var_class_name
;
452 val
* var_elements
/* var elements: Set[MType] */;
453 val
* var2
/* : POSet[MType] */;
454 val
* var_poset
/* var poset: POSet[MType] */;
455 val
* var3
/* : Iterator[nullable Object] */;
456 short int var4
/* : Bool */;
457 val
* var5
/* : nullable Object */;
458 val
* var_e
/* var e: MType */;
459 val
* var6
/* : POSetElement[Object] */;
460 val
* var7
/* : Iterator[nullable Object] */;
461 short int var8
/* : Bool */;
462 val
* var9
/* : nullable Object */;
463 val
* var_o
/* var o: MType */;
464 short int var10
/* : Bool */;
465 val
* var11
/* : MModule */;
466 val
* var12
/* : null */;
467 short int var13
/* : Bool */;
468 /* Covariant cast for argument 0 (elements) <p0:Set[MType]> isa Set[POSetBuilder#0] */
469 /* <p0:Set[MType]> isa Set[POSetBuilder#0] */
470 var1
= 1; /* easy <p0:Set[MType]> isa Set[POSetBuilder#0]*/
472 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
473 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Set[POSetBuilder#0]", var_class_name
);
474 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 104);
478 var2
= NEW_poset__POSet(&type_poset__POSetmodel__MType
);
479 ((void (*)(val
*))(var2
->class->vft
[COLOR_poset__POSet__init
]))(var2
) /* init on <var2:POSet[MType]>*/;
481 var3
= ((val
* (*)(val
*))(var_elements
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_elements
) /* iterator on <var_elements:Set[MType]>*/;
483 var4
= ((short int (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var3
) /* is_ok on <var3:Iterator[nullable Object]>*/;
485 var5
= ((val
* (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var3
) /* item on <var3:Iterator[nullable Object]>*/;
487 var6
= ((val
* (*)(val
*, val
*))(var_poset
->class->vft
[COLOR_poset__POSet__add_node
]))(var_poset
, var_e
) /* add_node on <var_poset:POSet[MType]>*/;
489 var7
= ((val
* (*)(val
*))(var_elements
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_elements
) /* iterator on <var_elements:Set[MType]>*/;
491 var8
= ((short int (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var7
) /* is_ok on <var7:Iterator[nullable Object]>*/;
493 var9
= ((val
* (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var7
) /* item on <var7:Iterator[nullable Object]>*/;
495 var10
= ((short int (*)(val
*, val
*))(var_e
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var_e
, var_o
) /* == on <var_e:MType>*/;
500 var11
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__POSetBuilder__mmodule
]))(self
) /* mmodule on <self:MTypePOSetBuilder>*/;
502 var13
= ((short int (*)(val
*, val
*, val
*, val
*))(var_e
->class->vft
[COLOR_model__MType__is_subtype
]))(var_e
, var11
, var12
, var_o
) /* is_subtype on <var_e:MType>*/;
504 ((void (*)(val
*, val
*, val
*))(var_poset
->class->vft
[COLOR_poset__POSet__add_edge
]))(var_poset
, var_e
, var_o
) /* add_edge on <var_poset:POSet[MType]>*/;
507 CONTINUE_label
: (void)0;
508 ((void (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var7
) /* next on <var7:Iterator[nullable Object]>*/;
510 BREAK_label
: (void)0;
511 CONTINUE_label14
: (void)0;
512 ((void (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var3
) /* next on <var3:Iterator[nullable Object]>*/;
514 BREAK_label14
: (void)0;
520 /* method layout_builders#MTypePOSetBuilder#build_poset for (self: Object, Set[Object]): POSet[Object] */
521 val
* VIRTUAL_layout_builders__MTypePOSetBuilder__build_poset(val
* self
, val
* p0
) {
522 val
* var
/* : POSet[Object] */;
523 val
* var1
/* : POSet[MType] */;
524 var1
= layout_builders__MTypePOSetBuilder__build_poset(self
, p0
);
529 /* method layout_builders#MClassPOSetBuilder#build_poset for (self: MClassPOSetBuilder, Set[MClass]): POSet[MClass] */
530 val
* layout_builders__MClassPOSetBuilder__build_poset(val
* self
, val
* p0
) {
531 val
* var
/* : POSet[MClass] */;
532 short int var1
/* : Bool */;
535 const char* var_class_name
;
536 val
* var_elements
/* var elements: Set[MClass] */;
537 val
* var2
/* : MModule */;
538 val
* var3
/* : POSet[MClass] */;
539 /* Covariant cast for argument 0 (elements) <p0:Set[MClass]> isa Set[POSetBuilder#0] */
540 /* <p0:Set[MClass]> isa Set[POSetBuilder#0] */
541 var1
= 1; /* easy <p0:Set[MClass]> isa Set[POSetBuilder#0]*/
543 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
544 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Set[POSetBuilder#0]", var_class_name
);
545 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 123);
549 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__POSetBuilder__mmodule
]))(self
) /* mmodule on <self:MClassPOSetBuilder>*/;
550 var3
= ((val
* (*)(val
*))(var2
->class->vft
[COLOR_model__MModule__flatten_mclass_hierarchy
]))(var2
) /* flatten_mclass_hierarchy on <var2:MModule>*/;
556 /* method layout_builders#MClassPOSetBuilder#build_poset for (self: Object, Set[Object]): POSet[Object] */
557 val
* VIRTUAL_layout_builders__MClassPOSetBuilder__build_poset(val
* self
, val
* p0
) {
558 val
* var
/* : POSet[Object] */;
559 val
* var1
/* : POSet[MClass] */;
560 var1
= layout_builders__MClassPOSetBuilder__build_poset(self
, p0
);
565 /* method layout_builders#TypingBMizer#mmodule for (self: TypingBMizer[Object]): MModule */
566 val
* layout_builders__TypingBMizer__mmodule(val
* self
) {
567 val
* var
/* : MModule */;
568 val
* var1
/* : MModule */;
569 var1
= self
->attrs
[COLOR_layout_builders__TypingBMizer___64dmmodule
].val
; /* @mmodule on <self:TypingBMizer[Object]> */
571 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @mmodule");
572 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 132);
579 /* method layout_builders#TypingBMizer#mmodule for (self: Object): MModule */
580 val
* VIRTUAL_layout_builders__TypingBMizer__mmodule(val
* self
) {
581 val
* var
/* : MModule */;
582 val
* var1
/* : MModule */;
583 var1
= layout_builders__TypingBMizer__mmodule(self
);
588 /* method layout_builders#TypingBMizer#mmodule= for (self: TypingBMizer[Object], MModule) */
589 void layout_builders__TypingBMizer__mmodule_61d(val
* self
, val
* p0
) {
590 self
->attrs
[COLOR_layout_builders__TypingBMizer___64dmmodule
].val
= p0
; /* @mmodule on <self:TypingBMizer[Object]> */
593 /* method layout_builders#TypingBMizer#mmodule= for (self: Object, MModule) */
594 void VIRTUAL_layout_builders__TypingBMizer__mmodule_61d(val
* self
, val
* p0
) {
595 layout_builders__TypingBMizer__mmodule_61d(self
, p0
);
598 /* method layout_builders#TypingBMizer#poset_builder for (self: TypingBMizer[Object]): POSetBuilder[Object] */
599 val
* layout_builders__TypingBMizer__poset_builder(val
* self
) {
600 val
* var
/* : POSetBuilder[Object] */;
601 val
* var1
/* : POSetBuilder[Object] */;
602 var1
= self
->attrs
[COLOR_layout_builders__TypingBMizer___64dposet_builder
].val
; /* @poset_builder on <self:TypingBMizer[Object]> */
604 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @poset_builder");
605 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 133);
612 /* method layout_builders#TypingBMizer#poset_builder for (self: Object): POSetBuilder[Object] */
613 val
* VIRTUAL_layout_builders__TypingBMizer__poset_builder(val
* self
) {
614 val
* var
/* : POSetBuilder[Object] */;
615 val
* var1
/* : POSetBuilder[Object] */;
616 var1
= layout_builders__TypingBMizer__poset_builder(self
);
621 /* method layout_builders#TypingBMizer#poset_builder= for (self: TypingBMizer[Object], POSetBuilder[Object]) */
622 void layout_builders__TypingBMizer__poset_builder_61d(val
* self
, val
* p0
) {
623 short int var
/* : Bool */;
626 const struct type
* type_struct
;
627 const char* var_class_name
;
628 /* Covariant cast for argument 0 (poset_builder) <p0:POSetBuilder[Object]> isa POSetBuilder[TypingBMizer#0] */
629 /* <p0:POSetBuilder[Object]> isa POSetBuilder[TypingBMizer#0] */
630 type_struct
= self
->type
->resolution_table
->types
[COLOR_layout_builders__POSetBuilderlayout_builders__TypingBMizer_FT0
];
631 cltype
= type_struct
->color
;
632 idtype
= type_struct
->id
;
633 if(cltype
>= p0
->type
->table_size
) {
636 var
= p0
->type
->type_table
[cltype
] == idtype
;
639 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
640 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "POSetBuilder[TypingBMizer#0]", var_class_name
);
641 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 133);
644 self
->attrs
[COLOR_layout_builders__TypingBMizer___64dposet_builder
].val
= p0
; /* @poset_builder on <self:TypingBMizer[Object]> */
647 /* method layout_builders#TypingBMizer#poset_builder= for (self: Object, POSetBuilder[Object]) */
648 void VIRTUAL_layout_builders__TypingBMizer__poset_builder_61d(val
* self
, val
* p0
) {
649 layout_builders__TypingBMizer__poset_builder_61d(self
, p0
);
652 /* method layout_builders#TypingBMizer#poset_cache for (self: TypingBMizer[Object]): nullable POSet[Object] */
653 val
* layout_builders__TypingBMizer__poset_cache(val
* self
) {
654 val
* var
/* : nullable POSet[Object] */;
655 val
* var1
/* : nullable POSet[Object] */;
656 var1
= self
->attrs
[COLOR_layout_builders__TypingBMizer___64dposet_cache
].val
; /* @poset_cache on <self:TypingBMizer[Object]> */
661 /* method layout_builders#TypingBMizer#poset_cache for (self: Object): nullable POSet[Object] */
662 val
* VIRTUAL_layout_builders__TypingBMizer__poset_cache(val
* self
) {
663 val
* var
/* : nullable POSet[Object] */;
664 val
* var1
/* : nullable POSet[Object] */;
665 var1
= layout_builders__TypingBMizer__poset_cache(self
);
670 /* method layout_builders#TypingBMizer#poset_cache= for (self: TypingBMizer[Object], nullable POSet[Object]) */
671 void layout_builders__TypingBMizer__poset_cache_61d(val
* self
, val
* p0
) {
672 short int var
/* : Bool */;
675 const struct type
* type_struct
;
676 const char* var_class_name
;
677 /* Covariant cast for argument 0 (poset_cache) <p0:nullable POSet[Object]> isa nullable POSet[TypingBMizer#0] */
678 /* <p0:nullable POSet[Object]> isa nullable POSet[TypingBMizer#0] */
679 type_struct
= self
->type
->resolution_table
->types
[COLOR_nullable_poset__POSetlayout_builders__TypingBMizer_FT0
];
680 cltype
= type_struct
->color
;
681 idtype
= type_struct
->id
;
685 if(cltype
>= p0
->type
->table_size
) {
688 var
= p0
->type
->type_table
[cltype
] == idtype
;
692 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
693 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable POSet[TypingBMizer#0]", var_class_name
);
694 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 134);
697 self
->attrs
[COLOR_layout_builders__TypingBMizer___64dposet_cache
].val
= p0
; /* @poset_cache on <self:TypingBMizer[Object]> */
700 /* method layout_builders#TypingBMizer#poset_cache= for (self: Object, nullable POSet[Object]) */
701 void VIRTUAL_layout_builders__TypingBMizer__poset_cache_61d(val
* self
, val
* p0
) {
702 layout_builders__TypingBMizer__poset_cache_61d(self
, p0
);
705 /* method layout_builders#TypingBMizer#init for (self: TypingBMizer[Object], MModule, POSetBuilder[Object]) */
706 void layout_builders__TypingBMizer__init(val
* self
, val
* p0
, val
* p1
) {
707 short int var
/* : Bool */;
710 const struct type
* type_struct
;
711 const char* var_class_name
;
712 val
* var_mmodule
/* var mmodule: MModule */;
713 val
* var_poset_builder
/* var poset_builder: POSetBuilder[Object] */;
714 /* Covariant cast for argument 1 (poset_builder) <p1:POSetBuilder[Object]> isa POSetBuilder[TypingBMizer#0] */
715 /* <p1:POSetBuilder[Object]> isa POSetBuilder[TypingBMizer#0] */
716 type_struct
= self
->type
->resolution_table
->types
[COLOR_layout_builders__POSetBuilderlayout_builders__TypingBMizer_FT0
];
717 cltype
= type_struct
->color
;
718 idtype
= type_struct
->id
;
719 if(cltype
>= p1
->type
->table_size
) {
722 var
= p1
->type
->type_table
[cltype
] == idtype
;
725 var_class_name
= p1
== NULL ?
"null" : p1
->type
->name
;
726 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "POSetBuilder[TypingBMizer#0]", var_class_name
);
727 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 136);
731 var_poset_builder
= p1
;
732 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingBMizer__mmodule_61d
]))(self
, var_mmodule
) /* mmodule= on <self:TypingBMizer[Object]>*/;
733 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingBMizer__poset_builder_61d
]))(self
, var_poset_builder
) /* poset_builder= on <self:TypingBMizer[Object]>*/;
736 /* method layout_builders#TypingBMizer#init for (self: Object, MModule, POSetBuilder[Object]) */
737 void VIRTUAL_layout_builders__TypingBMizer__init(val
* self
, val
* p0
, val
* p1
) {
738 layout_builders__TypingBMizer__init(self
, p0
, p1
);
741 /* method layout_builders#TypingBMizer#poset for (self: TypingBMizer[Object]): nullable POSet[Object] */
742 val
* layout_builders__TypingBMizer__poset(val
* self
) {
743 val
* var
/* : nullable POSet[Object] */;
744 val
* var1
/* : nullable POSet[Object] */;
745 var1
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingBMizer__poset_cache
]))(self
) /* poset_cache on <self:TypingBMizer[Object]>*/;
751 /* method layout_builders#TypingBMizer#poset for (self: Object): nullable POSet[Object] */
752 val
* VIRTUAL_layout_builders__TypingBMizer__poset(val
* self
) {
753 val
* var
/* : nullable POSet[Object] */;
754 val
* var1
/* : nullable POSet[Object] */;
755 var1
= layout_builders__TypingBMizer__poset(self
);
760 /* method layout_builders#TypingBMizer#build_layout for (self: TypingBMizer[Object], Set[Object]): Layout[Object] */
761 val
* layout_builders__TypingBMizer__build_layout(val
* self
, val
* p0
) {
762 val
* var
/* : Layout[Object] */;
763 short int var1
/* : Bool */;
766 const struct type
* type_struct
;
767 const char* var_class_name
;
768 val
* var_elements
/* var elements: Set[Object] */;
769 val
* var2
/* : Layout[Object] */;
770 val
* var_result
/* var result: Layout[Object] */;
771 val
* var3
/* : HashMap[Object, Int] */;
772 val
* var_ids
/* var ids: HashMap[Object, Int] */;
773 val
* var4
/* : POSetBuilder[Object] */;
774 val
* var5
/* : POSet[Object] */;
775 val
* var6
/* : nullable POSet[Object] */;
776 val
* var7
/* : Array[nullable Object] */;
777 val
* var_lin
/* var lin: Array[Object] */;
778 val
* var8
/* : nullable POSet[Object] */;
779 val
* var9
/* : Iterator[nullable Object] */;
780 short int var10
/* : Bool */;
781 val
* var11
/* : nullable Object */;
782 val
* var_element
/* var element: Object */;
783 long var12
/* : Int */;
784 val
* var13
/* : nullable Object */;
785 /* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingBMizer#0] */
786 /* <p0:Set[Object]> isa Set[TypingBMizer#0] */
787 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingBMizer_FT0
];
788 cltype
= type_struct
->color
;
789 idtype
= type_struct
->id
;
790 if(cltype
>= p0
->type
->table_size
) {
793 var1
= p0
->type
->type_table
[cltype
] == idtype
;
796 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
797 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Set[TypingBMizer#0]", var_class_name
);
798 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 143);
802 var2
= NEW_layout_builders__Layout(self
->type
->resolution_table
->types
[COLOR_layout_builders__Layoutlayout_builders__TypingBMizer_FT0
]);
803 ((void (*)(val
*))(var2
->class->vft
[COLOR_layout_builders__Layout__init
]))(var2
) /* init on <var2:Layout[Object]>*/;
805 var3
= NEW_hash_collection__HashMap(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashMaplayout_builders__TypingBMizer_FT0kernel__Int
]);
806 ((void (*)(val
*))(var3
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var3
) /* init on <var3:HashMap[Object, Int]>*/;
808 var4
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingBMizer__poset_builder
]))(self
) /* poset_builder on <self:TypingBMizer[Object]>*/;
809 var5
= ((val
* (*)(val
*, val
*))(var4
->class->vft
[COLOR_layout_builders__POSetBuilder__build_poset
]))(var4
, var_elements
) /* build_poset on <var4:POSetBuilder[Object]>*/;
810 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingBMizer__poset_cache_61d
]))(self
, var5
) /* poset_cache= on <self:TypingBMizer[Object]>*/;
811 var6
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__poset
]))(self
) /* poset on <self:TypingBMizer[Object]>*/;
813 fprintf(stderr
, "Runtime error: %s", "Receiver is null");
814 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 148);
817 var7
= ((val
* (*)(val
*))(var6
->class->vft
[COLOR_array__Collection__to_a
]))(var6
) /* to_a on <var6:nullable POSet[Object]>*/;
820 var8
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__poset
]))(self
) /* poset on <self:TypingBMizer[Object]>*/;
822 fprintf(stderr
, "Runtime error: %s", "Receiver is null");
823 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 149);
826 ((void (*)(val
*, val
*))(var8
->class->vft
[COLOR_sorter__AbstractSorter__sort
]))(var8
, var_lin
) /* sort on <var8:nullable POSet[Object]>*/;
828 var9
= ((val
* (*)(val
*))(var_lin
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_lin
) /* iterator on <var_lin:Array[Object]>*/;
830 var10
= ((short int (*)(val
*))(var9
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var9
) /* is_ok on <var9:Iterator[nullable Object]>*/;
832 var11
= ((val
* (*)(val
*))(var9
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var9
) /* item on <var9:Iterator[nullable Object]>*/;
834 var12
= ((long (*)(val
*))(var_ids
->class->vft
[COLOR_abstract_collection__MapRead__length
]))(var_ids
) /* length on <var_ids:HashMap[Object, Int]>*/;
835 var13
= BOX_kernel__Int(var12
); /* autobox from Int to nullable Object */
836 ((void (*)(val
*, val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_ids
, var_element
, var13
) /* []= on <var_ids:HashMap[Object, Int]>*/;
837 CONTINUE_label
: (void)0;
838 ((void (*)(val
*))(var9
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var9
) /* next on <var9:Iterator[nullable Object]>*/;
840 BREAK_label
: (void)0;
841 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__ids_61d
]))(var_result
, var_ids
) /* ids= on <var_result:Layout[Object]>*/;
842 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__pos_61d
]))(var_result
, var_ids
) /* pos= on <var_result:Layout[Object]>*/;
848 /* method layout_builders#TypingBMizer#build_layout for (self: Object, Set[Object]): Layout[Object] */
849 val
* VIRTUAL_layout_builders__TypingBMizer__build_layout(val
* self
, val
* p0
) {
850 val
* var
/* : Layout[Object] */;
851 val
* var1
/* : Layout[Object] */;
852 var1
= layout_builders__TypingBMizer__build_layout(self
, p0
);
857 /* method layout_builders#MTypeBMizer#init for (self: MTypeBMizer, MModule) */
858 void layout_builders__MTypeBMizer__init(val
* self
, val
* p0
) {
859 val
* var_mmodule
/* var mmodule: MModule */;
860 val
* var
/* : MTypePOSetBuilder */;
862 var
= NEW_layout_builders__MTypePOSetBuilder(&type_layout_builders__MTypePOSetBuilder
);
863 ((void (*)(val
*, val
*))(var
->class->vft
[COLOR_layout_builders__POSetBuilder__init
]))(var
, var_mmodule
) /* init on <var:MTypePOSetBuilder>*/;
864 ((void (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingBMizer__init
]))(self
, var_mmodule
, var
) /* init on <self:MTypeBMizer>*/;
867 /* method layout_builders#MTypeBMizer#init for (self: Object, MModule) */
868 void VIRTUAL_layout_builders__MTypeBMizer__init(val
* self
, val
* p0
) {
869 layout_builders__MTypeBMizer__init(self
, p0
);
872 /* method layout_builders#MClassBMizer#init for (self: MClassBMizer, MModule) */
873 void layout_builders__MClassBMizer__init(val
* self
, val
* p0
) {
874 val
* var_mmodule
/* var mmodule: MModule */;
875 val
* var
/* : MClassPOSetBuilder */;
877 var
= NEW_layout_builders__MClassPOSetBuilder(&type_layout_builders__MClassPOSetBuilder
);
878 ((void (*)(val
*, val
*))(var
->class->vft
[COLOR_layout_builders__POSetBuilder__init
]))(var
, var_mmodule
) /* init on <var:MClassPOSetBuilder>*/;
879 ((void (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingBMizer__init
]))(self
, var_mmodule
, var
) /* init on <self:MClassBMizer>*/;
882 /* method layout_builders#MClassBMizer#init for (self: Object, MModule) */
883 void VIRTUAL_layout_builders__MClassBMizer__init(val
* self
, val
* p0
) {
884 layout_builders__MClassBMizer__init(self
, p0
);
887 /* method layout_builders#ResolutionBMizer#init for (self: ResolutionBMizer) */
888 void layout_builders__ResolutionBMizer__init(val
* self
) {
891 /* method layout_builders#ResolutionBMizer#init for (self: Object) */
892 void VIRTUAL_layout_builders__ResolutionBMizer__init(val
* self
) {
893 layout_builders__ResolutionBMizer__init(self
);
896 /* method layout_builders#ResolutionBMizer#build_layout for (self: ResolutionBMizer, Map[MClassType, Set[MType]]): Layout[MType] */
897 val
* layout_builders__ResolutionBMizer__build_layout(val
* self
, val
* p0
) {
898 val
* var
/* : Layout[MType] */;
899 val
* var_elements
/* var elements: Map[MClassType, Set[MType]] */;
900 val
* var1
/* : Layout[MType] */;
901 val
* var_result
/* var result: Layout[MType] */;
902 val
* var2
/* : HashMap[MType, Int] */;
903 val
* var_ids
/* var ids: HashMap[MType, Int] */;
904 long var3
/* : Int */;
905 long var_color
/* var color: Int */;
906 val
* var4
/* : MapIterator[Object, nullable Object] */;
907 short int var5
/* : Bool */;
908 val
* var6
/* : Object */;
909 val
* var_mclasstype
/* var mclasstype: MClassType */;
910 val
* var7
/* : nullable Object */;
911 val
* var_mclasstypes
/* var mclasstypes: Set[MType] */;
912 val
* var8
/* : Iterator[nullable Object] */;
913 short int var9
/* : Bool */;
914 val
* var10
/* : nullable Object */;
915 val
* var_element
/* var element: MType */;
916 short int var11
/* : Bool */;
917 val
* var12
/* : nullable Object */;
918 long var13
/* : Int */;
919 long var14
/* : Int */;
920 long var16
/* : Int */;
922 var1
= NEW_layout_builders__Layout(&type_layout_builders__Layoutmodel__MType
);
923 ((void (*)(val
*))(var1
->class->vft
[COLOR_layout_builders__Layout__init
]))(var1
) /* init on <var1:Layout[MType]>*/;
925 var2
= NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MTypekernel__Int
);
926 ((void (*)(val
*))(var2
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var2
) /* init on <var2:HashMap[MType, Int]>*/;
930 var4
= ((val
* (*)(val
*))(var_elements
->class->vft
[COLOR_abstract_collection__MapRead__iterator
]))(var_elements
) /* iterator on <var_elements:Map[MClassType, Set[MType]]>*/;
932 var5
= ((short int (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__MapIterator__is_ok
]))(var4
) /* is_ok on <var4:MapIterator[Object, nullable Object]>*/;
934 var6
= ((val
* (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__MapIterator__key
]))(var4
) /* key on <var4:MapIterator[Object, nullable Object]>*/;
935 var_mclasstype
= var6
;
936 var7
= ((val
* (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__MapIterator__item
]))(var4
) /* item on <var4:MapIterator[Object, nullable Object]>*/;
937 var_mclasstypes
= var7
;
938 var8
= ((val
* (*)(val
*))(var_mclasstypes
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_mclasstypes
) /* iterator on <var_mclasstypes:Set[MType]>*/;
940 var9
= ((short int (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var8
) /* is_ok on <var8:Iterator[nullable Object]>*/;
942 var10
= ((val
* (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var8
) /* item on <var8:Iterator[nullable Object]>*/;
944 var11
= ((short int (*)(val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var_ids
, var_element
) /* has_key on <var_ids:HashMap[MType, Int]>*/;
949 var12
= BOX_kernel__Int(var_color
); /* autobox from Int to nullable Object */
950 ((void (*)(val
*, val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_ids
, var_element
, var12
) /* []= on <var_ids:HashMap[MType, Int]>*/;
952 { /* Inline kernel#Int#+ (var_color,var13) */
953 var16
= var_color
+ var13
;
959 CONTINUE_label
: (void)0;
960 ((void (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var8
) /* next on <var8:Iterator[nullable Object]>*/;
962 BREAK_label
: (void)0;
963 CONTINUE_label17
: (void)0;
964 ((void (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__MapIterator__next
]))(var4
) /* next on <var4:MapIterator[Object, nullable Object]>*/;
966 BREAK_label17
: (void)0;
967 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__ids_61d
]))(var_result
, var_ids
) /* ids= on <var_result:Layout[MType]>*/;
968 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__pos_61d
]))(var_result
, var_ids
) /* pos= on <var_result:Layout[MType]>*/;
974 /* method layout_builders#ResolutionBMizer#build_layout for (self: Object, Map[MClassType, Set[MType]]): Layout[MType] */
975 val
* VIRTUAL_layout_builders__ResolutionBMizer__build_layout(val
* self
, val
* p0
) {
976 val
* var
/* : Layout[MType] */;
977 val
* var1
/* : Layout[MType] */;
978 var1
= layout_builders__ResolutionBMizer__build_layout(self
, p0
);
983 /* method layout_builders#MPropertyBMizer#mmodule for (self: MPropertyBMizer[PropertyLayoutElement]): MModule */
984 val
* layout_builders__MPropertyBMizer__mmodule(val
* self
) {
985 val
* var
/* : MModule */;
986 val
* var1
/* : MModule */;
987 var1
= self
->attrs
[COLOR_layout_builders__MPropertyBMizer___64dmmodule
].val
; /* @mmodule on <self:MPropertyBMizer[PropertyLayoutElement]> */
989 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @mmodule");
990 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 198);
997 /* method layout_builders#MPropertyBMizer#mmodule for (self: Object): MModule */
998 val
* VIRTUAL_layout_builders__MPropertyBMizer__mmodule(val
* self
) {
999 val
* var
/* : MModule */;
1000 val
* var1
/* : MModule */;
1001 var1
= layout_builders__MPropertyBMizer__mmodule(self
);
1006 /* method layout_builders#MPropertyBMizer#mmodule= for (self: MPropertyBMizer[PropertyLayoutElement], MModule) */
1007 void layout_builders__MPropertyBMizer__mmodule_61d(val
* self
, val
* p0
) {
1008 self
->attrs
[COLOR_layout_builders__MPropertyBMizer___64dmmodule
].val
= p0
; /* @mmodule on <self:MPropertyBMizer[PropertyLayoutElement]> */
1011 /* method layout_builders#MPropertyBMizer#mmodule= for (self: Object, MModule) */
1012 void VIRTUAL_layout_builders__MPropertyBMizer__mmodule_61d(val
* self
, val
* p0
) {
1013 layout_builders__MPropertyBMizer__mmodule_61d(self
, p0
);
1016 /* method layout_builders#MPropertyBMizer#init for (self: MPropertyBMizer[PropertyLayoutElement], MModule) */
1017 void layout_builders__MPropertyBMizer__init(val
* self
, val
* p0
) {
1018 val
* var_mmodule
/* var mmodule: MModule */;
1020 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyBMizer__mmodule_61d
]))(self
, var_mmodule
) /* mmodule= on <self:MPropertyBMizer[PropertyLayoutElement]>*/;
1023 /* method layout_builders#MPropertyBMizer#init for (self: Object, MModule) */
1024 void VIRTUAL_layout_builders__MPropertyBMizer__init(val
* self
, val
* p0
) {
1025 layout_builders__MPropertyBMizer__init(self
, p0
);
1028 /* method layout_builders#MPropertyBMizer#build_layout for (self: MPropertyBMizer[PropertyLayoutElement], Map[MClass, Set[PropertyLayoutElement]]): Layout[PropertyLayoutElement] */
1029 val
* layout_builders__MPropertyBMizer__build_layout(val
* self
, val
* p0
) {
1030 val
* var
/* : Layout[PropertyLayoutElement] */;
1031 short int var1
/* : Bool */;
1034 const struct type
* type_struct
;
1035 const char* var_class_name
;
1036 val
* var_elements
/* var elements: Map[MClass, Set[PropertyLayoutElement]] */;
1037 val
* var2
/* : Layout[PropertyLayoutElement] */;
1038 val
* var_result
/* var result: Layout[PropertyLayoutElement] */;
1039 val
* var3
/* : HashMap[PropertyLayoutElement, Int] */;
1040 val
* var_ids
/* var ids: HashMap[PropertyLayoutElement, Int] */;
1041 val
* var4
/* : Array[MClass] */;
1042 val
* var_lin
/* var lin: Array[MClass] */;
1043 val
* var5
/* : Collection[Object] */;
1044 val
* var6
/* : MModule */;
1045 val
* var7
/* : Iterator[nullable Object] */;
1046 short int var8
/* : Bool */;
1047 val
* var9
/* : nullable Object */;
1048 val
* var_mclass
/* var mclass: MClass */;
1049 val
* var10
/* : nullable Object */;
1050 val
* var11
/* : Iterator[nullable Object] */;
1051 short int var12
/* : Bool */;
1052 val
* var13
/* : nullable Object */;
1053 val
* var_mproperty
/* var mproperty: PropertyLayoutElement */;
1054 short int var14
/* : Bool */;
1055 long var15
/* : Int */;
1056 val
* var16
/* : nullable Object */;
1057 /* Covariant cast for argument 0 (elements) <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[PropertyLayoutBuilder#0]] */
1058 /* <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[PropertyLayoutBuilder#0]] */
1059 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Mapmodel__MClassabstract_collection__Setlayout_builders__PropertyLayoutBuilder_FT0
];
1060 cltype
= type_struct
->color
;
1061 idtype
= type_struct
->id
;
1062 if(cltype
>= p0
->type
->table_size
) {
1065 var1
= p0
->type
->type_table
[cltype
] == idtype
;
1068 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
1069 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[MClass, Set[PropertyLayoutBuilder#0]]", var_class_name
);
1070 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 202);
1074 var2
= NEW_layout_builders__Layout(self
->type
->resolution_table
->types
[COLOR_layout_builders__Layoutlayout_builders__MPropertyBMizer_FT0
]);
1075 ((void (*)(val
*))(var2
->class->vft
[COLOR_layout_builders__Layout__init
]))(var2
) /* init on <var2:Layout[PropertyLayoutElement]>*/;
1077 var3
= NEW_hash_collection__HashMap(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashMaplayout_builders__MPropertyBMizer_FT0kernel__Int
]);
1078 ((void (*)(val
*))(var3
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var3
) /* init on <var3:HashMap[PropertyLayoutElement, Int]>*/;
1080 var4
= NEW_array__Array(&type_array__Arraymodel__MClass
);
1081 ((void (*)(val
*))(var4
->class->vft
[COLOR_array__Array__init
]))(var4
) /* init on <var4:Array[MClass]>*/;
1083 var5
= ((val
* (*)(val
*))(var_elements
->class->vft
[COLOR_abstract_collection__MapRead__keys
]))(var_elements
) /* keys on <var_elements:Map[MClass, Set[PropertyLayoutElement]]>*/;
1084 ((void (*)(val
*, val
*))(var_lin
->class->vft
[COLOR_abstract_collection__SimpleCollection__add_all
]))(var_lin
, var5
) /* add_all on <var_lin:Array[MClass]>*/;
1085 var6
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyBMizer__mmodule
]))(self
) /* mmodule on <self:MPropertyBMizer[PropertyLayoutElement]>*/;
1086 ((void (*)(val
*, val
*))(var6
->class->vft
[COLOR_model__MModule__linearize_mclasses
]))(var6
, var_lin
) /* linearize_mclasses on <var6:MModule>*/;
1087 var7
= ((val
* (*)(val
*))(var_lin
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_lin
) /* iterator on <var_lin:Array[MClass]>*/;
1089 var8
= ((short int (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var7
) /* is_ok on <var7:Iterator[nullable Object]>*/;
1091 var9
= ((val
* (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var7
) /* item on <var7:Iterator[nullable Object]>*/;
1093 var10
= ((val
* (*)(val
*, val
*))(var_elements
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var_elements
, var_mclass
) /* [] on <var_elements:Map[MClass, Set[PropertyLayoutElement]]>*/;
1094 var11
= ((val
* (*)(val
*))(var10
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var10
) /* iterator on <var10:nullable Object(Set[PropertyLayoutElement])>*/;
1096 var12
= ((short int (*)(val
*))(var11
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var11
) /* is_ok on <var11:Iterator[nullable Object]>*/;
1098 var13
= ((val
* (*)(val
*))(var11
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var11
) /* item on <var11:Iterator[nullable Object]>*/;
1099 var_mproperty
= var13
;
1100 var14
= ((short int (*)(val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var_ids
, var_mproperty
) /* has_key on <var_ids:HashMap[PropertyLayoutElement, Int]>*/;
1102 goto CONTINUE_label
;
1105 var15
= ((long (*)(val
*))(var_ids
->class->vft
[COLOR_abstract_collection__MapRead__length
]))(var_ids
) /* length on <var_ids:HashMap[PropertyLayoutElement, Int]>*/;
1106 var16
= BOX_kernel__Int(var15
); /* autobox from Int to nullable Object */
1107 ((void (*)(val
*, val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_ids
, var_mproperty
, var16
) /* []= on <var_ids:HashMap[PropertyLayoutElement, Int]>*/;
1108 CONTINUE_label
: (void)0;
1109 ((void (*)(val
*))(var11
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var11
) /* next on <var11:Iterator[nullable Object]>*/;
1111 BREAK_label
: (void)0;
1112 CONTINUE_label17
: (void)0;
1113 ((void (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var7
) /* next on <var7:Iterator[nullable Object]>*/;
1115 BREAK_label17
: (void)0;
1116 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__pos_61d
]))(var_result
, var_ids
) /* pos= on <var_result:Layout[PropertyLayoutElement]>*/;
1122 /* method layout_builders#MPropertyBMizer#build_layout for (self: Object, Map[MClass, Set[PropertyLayoutElement]]): Layout[PropertyLayoutElement] */
1123 val
* VIRTUAL_layout_builders__MPropertyBMizer__build_layout(val
* self
, val
* p0
) {
1124 val
* var
/* : Layout[PropertyLayoutElement] */;
1125 val
* var1
/* : Layout[PropertyLayoutElement] */;
1126 var1
= layout_builders__MPropertyBMizer__build_layout(self
, p0
);
1131 /* method layout_builders#TypingColorer#core for (self: TypingColorer[Object]): Set[Object] */
1132 val
* layout_builders__TypingColorer__core(val
* self
) {
1133 val
* var
/* : Set[Object] */;
1134 val
* var1
/* : Set[Object] */;
1135 var1
= self
->attrs
[COLOR_layout_builders__TypingColorer___64dcore
].val
; /* @core on <self:TypingColorer[Object]> */
1137 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @core");
1138 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 225);
1145 /* method layout_builders#TypingColorer#core for (self: Object): Set[Object] */
1146 val
* VIRTUAL_layout_builders__TypingColorer__core(val
* self
) {
1147 val
* var
/* : Set[Object] */;
1148 val
* var1
/* : Set[Object] */;
1149 var1
= layout_builders__TypingColorer__core(self
);
1154 /* method layout_builders#TypingColorer#core= for (self: TypingColorer[Object], Set[Object]) */
1155 void layout_builders__TypingColorer__core_61d(val
* self
, val
* p0
) {
1156 short int var
/* : Bool */;
1159 const struct type
* type_struct
;
1160 const char* var_class_name
;
1161 /* Covariant cast for argument 0 (core) <p0:Set[Object]> isa Set[TypingColorer#0] */
1162 /* <p0:Set[Object]> isa Set[TypingColorer#0] */
1163 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0
];
1164 cltype
= type_struct
->color
;
1165 idtype
= type_struct
->id
;
1166 if(cltype
>= p0
->type
->table_size
) {
1169 var
= p0
->type
->type_table
[cltype
] == idtype
;
1172 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
1173 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Set[TypingColorer#0]", var_class_name
);
1174 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 225);
1177 self
->attrs
[COLOR_layout_builders__TypingColorer___64dcore
].val
= p0
; /* @core on <self:TypingColorer[Object]> */
1180 /* method layout_builders#TypingColorer#core= for (self: Object, Set[Object]) */
1181 void VIRTUAL_layout_builders__TypingColorer__core_61d(val
* self
, val
* p0
) {
1182 layout_builders__TypingColorer__core_61d(self
, p0
);
1185 /* method layout_builders#TypingColorer#crown for (self: TypingColorer[Object]): Set[Object] */
1186 val
* layout_builders__TypingColorer__crown(val
* self
) {
1187 val
* var
/* : Set[Object] */;
1188 val
* var1
/* : Set[Object] */;
1189 var1
= self
->attrs
[COLOR_layout_builders__TypingColorer___64dcrown
].val
; /* @crown on <self:TypingColorer[Object]> */
1191 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @crown");
1192 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 226);
1199 /* method layout_builders#TypingColorer#crown for (self: Object): Set[Object] */
1200 val
* VIRTUAL_layout_builders__TypingColorer__crown(val
* self
) {
1201 val
* var
/* : Set[Object] */;
1202 val
* var1
/* : Set[Object] */;
1203 var1
= layout_builders__TypingColorer__crown(self
);
1208 /* method layout_builders#TypingColorer#crown= for (self: TypingColorer[Object], Set[Object]) */
1209 void layout_builders__TypingColorer__crown_61d(val
* self
, val
* p0
) {
1210 short int var
/* : Bool */;
1213 const struct type
* type_struct
;
1214 const char* var_class_name
;
1215 /* Covariant cast for argument 0 (crown) <p0:Set[Object]> isa Set[TypingColorer#0] */
1216 /* <p0:Set[Object]> isa Set[TypingColorer#0] */
1217 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0
];
1218 cltype
= type_struct
->color
;
1219 idtype
= type_struct
->id
;
1220 if(cltype
>= p0
->type
->table_size
) {
1223 var
= p0
->type
->type_table
[cltype
] == idtype
;
1226 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
1227 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Set[TypingColorer#0]", var_class_name
);
1228 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 226);
1231 self
->attrs
[COLOR_layout_builders__TypingColorer___64dcrown
].val
= p0
; /* @crown on <self:TypingColorer[Object]> */
1234 /* method layout_builders#TypingColorer#crown= for (self: Object, Set[Object]) */
1235 void VIRTUAL_layout_builders__TypingColorer__crown_61d(val
* self
, val
* p0
) {
1236 layout_builders__TypingColorer__crown_61d(self
, p0
);
1239 /* method layout_builders#TypingColorer#border for (self: TypingColorer[Object]): Set[Object] */
1240 val
* layout_builders__TypingColorer__border(val
* self
) {
1241 val
* var
/* : Set[Object] */;
1242 val
* var1
/* : Set[Object] */;
1243 var1
= self
->attrs
[COLOR_layout_builders__TypingColorer___64dborder
].val
; /* @border on <self:TypingColorer[Object]> */
1245 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @border");
1246 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 227);
1253 /* method layout_builders#TypingColorer#border for (self: Object): Set[Object] */
1254 val
* VIRTUAL_layout_builders__TypingColorer__border(val
* self
) {
1255 val
* var
/* : Set[Object] */;
1256 val
* var1
/* : Set[Object] */;
1257 var1
= layout_builders__TypingColorer__border(self
);
1262 /* method layout_builders#TypingColorer#border= for (self: TypingColorer[Object], Set[Object]) */
1263 void layout_builders__TypingColorer__border_61d(val
* self
, val
* p0
) {
1264 short int var
/* : Bool */;
1267 const struct type
* type_struct
;
1268 const char* var_class_name
;
1269 /* Covariant cast for argument 0 (border) <p0:Set[Object]> isa Set[TypingColorer#0] */
1270 /* <p0:Set[Object]> isa Set[TypingColorer#0] */
1271 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0
];
1272 cltype
= type_struct
->color
;
1273 idtype
= type_struct
->id
;
1274 if(cltype
>= p0
->type
->table_size
) {
1277 var
= p0
->type
->type_table
[cltype
] == idtype
;
1280 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
1281 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Set[TypingColorer#0]", var_class_name
);
1282 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 227);
1285 self
->attrs
[COLOR_layout_builders__TypingColorer___64dborder
].val
= p0
; /* @border on <self:TypingColorer[Object]> */
1288 /* method layout_builders#TypingColorer#border= for (self: Object, Set[Object]) */
1289 void VIRTUAL_layout_builders__TypingColorer__border_61d(val
* self
, val
* p0
) {
1290 layout_builders__TypingColorer__border_61d(self
, p0
);
1293 /* method layout_builders#TypingColorer#coloration_result for (self: TypingColorer[Object]): Map[Object, Int] */
1294 val
* layout_builders__TypingColorer__coloration_result(val
* self
) {
1295 val
* var
/* : Map[Object, Int] */;
1296 val
* var1
/* : Map[Object, Int] */;
1297 var1
= self
->attrs
[COLOR_layout_builders__TypingColorer___64dcoloration_result
].val
; /* @coloration_result on <self:TypingColorer[Object]> */
1299 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @coloration_result");
1300 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 228);
1307 /* method layout_builders#TypingColorer#coloration_result for (self: Object): Map[Object, Int] */
1308 val
* VIRTUAL_layout_builders__TypingColorer__coloration_result(val
* self
) {
1309 val
* var
/* : Map[Object, Int] */;
1310 val
* var1
/* : Map[Object, Int] */;
1311 var1
= layout_builders__TypingColorer__coloration_result(self
);
1316 /* method layout_builders#TypingColorer#coloration_result= for (self: TypingColorer[Object], Map[Object, Int]) */
1317 void layout_builders__TypingColorer__coloration_result_61d(val
* self
, val
* p0
) {
1318 short int var
/* : Bool */;
1321 const struct type
* type_struct
;
1322 const char* var_class_name
;
1323 /* Covariant cast for argument 0 (coloration_result) <p0:Map[Object, Int]> isa Map[TypingColorer#0, Int] */
1324 /* <p0:Map[Object, Int]> isa Map[TypingColorer#0, Int] */
1325 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Maplayout_builders__TypingColorer_FT0kernel__Int
];
1326 cltype
= type_struct
->color
;
1327 idtype
= type_struct
->id
;
1328 if(cltype
>= p0
->type
->table_size
) {
1331 var
= p0
->type
->type_table
[cltype
] == idtype
;
1334 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
1335 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[TypingColorer#0, Int]", var_class_name
);
1336 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 228);
1339 self
->attrs
[COLOR_layout_builders__TypingColorer___64dcoloration_result
].val
= p0
; /* @coloration_result on <self:TypingColorer[Object]> */
1342 /* method layout_builders#TypingColorer#coloration_result= for (self: Object, Map[Object, Int]) */
1343 void VIRTUAL_layout_builders__TypingColorer__coloration_result_61d(val
* self
, val
* p0
) {
1344 layout_builders__TypingColorer__coloration_result_61d(self
, p0
);
1347 /* method layout_builders#TypingColorer#mmodule for (self: TypingColorer[Object]): MModule */
1348 val
* layout_builders__TypingColorer__mmodule(val
* self
) {
1349 val
* var
/* : MModule */;
1350 val
* var1
/* : MModule */;
1351 var1
= self
->attrs
[COLOR_layout_builders__TypingColorer___64dmmodule
].val
; /* @mmodule on <self:TypingColorer[Object]> */
1353 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @mmodule");
1354 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 230);
1361 /* method layout_builders#TypingColorer#mmodule for (self: Object): MModule */
1362 val
* VIRTUAL_layout_builders__TypingColorer__mmodule(val
* self
) {
1363 val
* var
/* : MModule */;
1364 val
* var1
/* : MModule */;
1365 var1
= layout_builders__TypingColorer__mmodule(self
);
1370 /* method layout_builders#TypingColorer#mmodule= for (self: TypingColorer[Object], MModule) */
1371 void layout_builders__TypingColorer__mmodule_61d(val
* self
, val
* p0
) {
1372 self
->attrs
[COLOR_layout_builders__TypingColorer___64dmmodule
].val
= p0
; /* @mmodule on <self:TypingColorer[Object]> */
1375 /* method layout_builders#TypingColorer#mmodule= for (self: Object, MModule) */
1376 void VIRTUAL_layout_builders__TypingColorer__mmodule_61d(val
* self
, val
* p0
) {
1377 layout_builders__TypingColorer__mmodule_61d(self
, p0
);
1380 /* method layout_builders#TypingColorer#poset_builder for (self: TypingColorer[Object]): POSetBuilder[Object] */
1381 val
* layout_builders__TypingColorer__poset_builder(val
* self
) {
1382 val
* var
/* : POSetBuilder[Object] */;
1383 val
* var1
/* : POSetBuilder[Object] */;
1384 var1
= self
->attrs
[COLOR_layout_builders__TypingColorer___64dposet_builder
].val
; /* @poset_builder on <self:TypingColorer[Object]> */
1386 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @poset_builder");
1387 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 231);
1394 /* method layout_builders#TypingColorer#poset_builder for (self: Object): POSetBuilder[Object] */
1395 val
* VIRTUAL_layout_builders__TypingColorer__poset_builder(val
* self
) {
1396 val
* var
/* : POSetBuilder[Object] */;
1397 val
* var1
/* : POSetBuilder[Object] */;
1398 var1
= layout_builders__TypingColorer__poset_builder(self
);
1403 /* method layout_builders#TypingColorer#poset_builder= for (self: TypingColorer[Object], POSetBuilder[Object]) */
1404 void layout_builders__TypingColorer__poset_builder_61d(val
* self
, val
* p0
) {
1405 short int var
/* : Bool */;
1408 const struct type
* type_struct
;
1409 const char* var_class_name
;
1410 /* Covariant cast for argument 0 (poset_builder) <p0:POSetBuilder[Object]> isa POSetBuilder[TypingColorer#0] */
1411 /* <p0:POSetBuilder[Object]> isa POSetBuilder[TypingColorer#0] */
1412 type_struct
= self
->type
->resolution_table
->types
[COLOR_layout_builders__POSetBuilderlayout_builders__TypingColorer_FT0
];
1413 cltype
= type_struct
->color
;
1414 idtype
= type_struct
->id
;
1415 if(cltype
>= p0
->type
->table_size
) {
1418 var
= p0
->type
->type_table
[cltype
] == idtype
;
1421 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
1422 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "POSetBuilder[TypingColorer#0]", var_class_name
);
1423 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 231);
1426 self
->attrs
[COLOR_layout_builders__TypingColorer___64dposet_builder
].val
= p0
; /* @poset_builder on <self:TypingColorer[Object]> */
1429 /* method layout_builders#TypingColorer#poset_builder= for (self: Object, POSetBuilder[Object]) */
1430 void VIRTUAL_layout_builders__TypingColorer__poset_builder_61d(val
* self
, val
* p0
) {
1431 layout_builders__TypingColorer__poset_builder_61d(self
, p0
);
1434 /* method layout_builders#TypingColorer#poset_cache for (self: TypingColorer[Object]): nullable POSet[Object] */
1435 val
* layout_builders__TypingColorer__poset_cache(val
* self
) {
1436 val
* var
/* : nullable POSet[Object] */;
1437 val
* var1
/* : nullable POSet[Object] */;
1438 var1
= self
->attrs
[COLOR_layout_builders__TypingColorer___64dposet_cache
].val
; /* @poset_cache on <self:TypingColorer[Object]> */
1443 /* method layout_builders#TypingColorer#poset_cache for (self: Object): nullable POSet[Object] */
1444 val
* VIRTUAL_layout_builders__TypingColorer__poset_cache(val
* self
) {
1445 val
* var
/* : nullable POSet[Object] */;
1446 val
* var1
/* : nullable POSet[Object] */;
1447 var1
= layout_builders__TypingColorer__poset_cache(self
);
1452 /* method layout_builders#TypingColorer#poset_cache= for (self: TypingColorer[Object], nullable POSet[Object]) */
1453 void layout_builders__TypingColorer__poset_cache_61d(val
* self
, val
* p0
) {
1454 short int var
/* : Bool */;
1457 const struct type
* type_struct
;
1458 const char* var_class_name
;
1459 /* Covariant cast for argument 0 (poset_cache) <p0:nullable POSet[Object]> isa nullable POSet[TypingColorer#0] */
1460 /* <p0:nullable POSet[Object]> isa nullable POSet[TypingColorer#0] */
1461 type_struct
= self
->type
->resolution_table
->types
[COLOR_nullable_poset__POSetlayout_builders__TypingColorer_FT0
];
1462 cltype
= type_struct
->color
;
1463 idtype
= type_struct
->id
;
1467 if(cltype
>= p0
->type
->table_size
) {
1470 var
= p0
->type
->type_table
[cltype
] == idtype
;
1474 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
1475 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable POSet[TypingColorer#0]", var_class_name
);
1476 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 232);
1479 self
->attrs
[COLOR_layout_builders__TypingColorer___64dposet_cache
].val
= p0
; /* @poset_cache on <self:TypingColorer[Object]> */
1482 /* method layout_builders#TypingColorer#poset_cache= for (self: Object, nullable POSet[Object]) */
1483 void VIRTUAL_layout_builders__TypingColorer__poset_cache_61d(val
* self
, val
* p0
) {
1484 layout_builders__TypingColorer__poset_cache_61d(self
, p0
);
1487 /* method layout_builders#TypingColorer#init for (self: TypingColorer[Object], MModule, POSetBuilder[Object]) */
1488 void layout_builders__TypingColorer__init(val
* self
, val
* p0
, val
* p1
) {
1489 short int var
/* : Bool */;
1492 const struct type
* type_struct
;
1493 const char* var_class_name
;
1494 val
* var_mmodule
/* var mmodule: MModule */;
1495 val
* var_poset_builder
/* var poset_builder: POSetBuilder[Object] */;
1496 /* Covariant cast for argument 1 (poset_builder) <p1:POSetBuilder[Object]> isa POSetBuilder[TypingColorer#0] */
1497 /* <p1:POSetBuilder[Object]> isa POSetBuilder[TypingColorer#0] */
1498 type_struct
= self
->type
->resolution_table
->types
[COLOR_layout_builders__POSetBuilderlayout_builders__TypingColorer_FT0
];
1499 cltype
= type_struct
->color
;
1500 idtype
= type_struct
->id
;
1501 if(cltype
>= p1
->type
->table_size
) {
1504 var
= p1
->type
->type_table
[cltype
] == idtype
;
1507 var_class_name
= p1
== NULL ?
"null" : p1
->type
->name
;
1508 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "POSetBuilder[TypingColorer#0]", var_class_name
);
1509 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 234);
1513 var_poset_builder
= p1
;
1514 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__mmodule_61d
]))(self
, var_mmodule
) /* mmodule= on <self:TypingColorer[Object]>*/;
1515 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__poset_builder_61d
]))(self
, var_poset_builder
) /* poset_builder= on <self:TypingColorer[Object]>*/;
1518 /* method layout_builders#TypingColorer#init for (self: Object, MModule, POSetBuilder[Object]) */
1519 void VIRTUAL_layout_builders__TypingColorer__init(val
* self
, val
* p0
, val
* p1
) {
1520 layout_builders__TypingColorer__init(self
, p0
, p1
);
1523 /* method layout_builders#TypingColorer#poset for (self: TypingColorer[Object]): nullable POSet[Object] */
1524 val
* layout_builders__TypingColorer__poset(val
* self
) {
1525 val
* var
/* : nullable POSet[Object] */;
1526 val
* var1
/* : nullable POSet[Object] */;
1527 var1
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__poset_cache
]))(self
) /* poset_cache on <self:TypingColorer[Object]>*/;
1533 /* method layout_builders#TypingColorer#poset for (self: Object): nullable POSet[Object] */
1534 val
* VIRTUAL_layout_builders__TypingColorer__poset(val
* self
) {
1535 val
* var
/* : nullable POSet[Object] */;
1536 val
* var1
/* : nullable POSet[Object] */;
1537 var1
= layout_builders__TypingColorer__poset(self
);
1542 /* method layout_builders#TypingColorer#build_layout for (self: TypingColorer[Object], Set[Object]): Layout[Object] */
1543 val
* layout_builders__TypingColorer__build_layout(val
* self
, val
* p0
) {
1544 val
* var
/* : Layout[Object] */;
1545 short int var1
/* : Bool */;
1548 const struct type
* type_struct
;
1549 const char* var_class_name
;
1550 val
* var_elements
/* var elements: Set[Object] */;
1551 val
* var2
/* : POSetBuilder[Object] */;
1552 val
* var3
/* : POSet[Object] */;
1553 val
* var4
/* : Layout[Object] */;
1554 val
* var_result
/* var result: Layout[Object] */;
1555 val
* var5
/* : Map[Object, Int] */;
1556 val
* var6
/* : Map[Object, Int] */;
1557 /* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingColorer#0] */
1558 /* <p0:Set[Object]> isa Set[TypingColorer#0] */
1559 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0
];
1560 cltype
= type_struct
->color
;
1561 idtype
= type_struct
->id
;
1562 if(cltype
>= p0
->type
->table_size
) {
1565 var1
= p0
->type
->type_table
[cltype
] == idtype
;
1568 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
1569 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Set[TypingColorer#0]", var_class_name
);
1570 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 241);
1574 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__poset_builder
]))(self
) /* poset_builder on <self:TypingColorer[Object]>*/;
1575 var3
= ((val
* (*)(val
*, val
*))(var2
->class->vft
[COLOR_layout_builders__POSetBuilder__build_poset
]))(var2
, var_elements
) /* build_poset on <var2:POSetBuilder[Object]>*/;
1576 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__poset_cache_61d
]))(self
, var3
) /* poset_cache= on <self:TypingColorer[Object]>*/;
1577 var4
= NEW_layout_builders__Layout(self
->type
->resolution_table
->types
[COLOR_layout_builders__Layoutlayout_builders__TypingColorer_FT0
]);
1578 ((void (*)(val
*))(var4
->class->vft
[COLOR_layout_builders__Layout__init
]))(var4
) /* init on <var4:Layout[Object]>*/;
1580 var5
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__compute_ids
]))(self
, var_elements
) /* compute_ids on <self:TypingColorer[Object]>*/;
1581 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__ids_61d
]))(var_result
, var5
) /* ids= on <var_result:Layout[Object]>*/;
1582 var6
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__colorize
]))(self
, var_elements
) /* colorize on <self:TypingColorer[Object]>*/;
1583 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__pos_61d
]))(var_result
, var6
) /* pos= on <var_result:Layout[Object]>*/;
1589 /* method layout_builders#TypingColorer#build_layout for (self: Object, Set[Object]): Layout[Object] */
1590 val
* VIRTUAL_layout_builders__TypingColorer__build_layout(val
* self
, val
* p0
) {
1591 val
* var
/* : Layout[Object] */;
1592 val
* var1
/* : Layout[Object] */;
1593 var1
= layout_builders__TypingColorer__build_layout(self
, p0
);
1598 /* method layout_builders#TypingColorer#compute_ids for (self: TypingColorer[Object], Set[Object]): Map[Object, Int] */
1599 val
* layout_builders__TypingColorer__compute_ids(val
* self
, val
* p0
) {
1600 val
* var
/* : Map[Object, Int] */;
1601 short int var1
/* : Bool */;
1604 const struct type
* type_struct
;
1605 const char* var_class_name
;
1606 val
* var_elements
/* var elements: Set[Object] */;
1607 val
* var2
/* : HashMap[Object, Int] */;
1608 val
* var_ids
/* var ids: HashMap[Object, Int] */;
1609 val
* var3
/* : Array[Object] */;
1610 val
* var4
/* : Iterator[nullable Object] */;
1611 short int var5
/* : Bool */;
1612 val
* var6
/* : nullable Object */;
1613 val
* var_element
/* var element: Object */;
1614 long var7
/* : Int */;
1615 val
* var8
/* : nullable Object */;
1616 /* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingColorer#0] */
1617 /* <p0:Set[Object]> isa Set[TypingColorer#0] */
1618 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0
];
1619 cltype
= type_struct
->color
;
1620 idtype
= type_struct
->id
;
1621 if(cltype
>= p0
->type
->table_size
) {
1624 var1
= p0
->type
->type_table
[cltype
] == idtype
;
1627 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
1628 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Set[TypingColorer#0]", var_class_name
);
1629 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 250);
1633 var2
= NEW_hash_collection__HashMap(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashMaplayout_builders__TypingColorer_FT0kernel__Int
]);
1634 ((void (*)(val
*))(var2
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var2
) /* init on <var2:HashMap[Object, Int]>*/;
1636 var3
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__reverse_linearize
]))(self
, var_elements
) /* reverse_linearize on <self:TypingColorer[Object]>*/;
1637 var4
= ((val
* (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var3
) /* iterator on <var3:Array[Object]>*/;
1639 var5
= ((short int (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var4
) /* is_ok on <var4:Iterator[nullable Object]>*/;
1641 var6
= ((val
* (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var4
) /* item on <var4:Iterator[nullable Object]>*/;
1643 var7
= ((long (*)(val
*))(var_ids
->class->vft
[COLOR_abstract_collection__MapRead__length
]))(var_ids
) /* length on <var_ids:HashMap[Object, Int]>*/;
1644 var8
= BOX_kernel__Int(var7
); /* autobox from Int to nullable Object */
1645 ((void (*)(val
*, val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_ids
, var_element
, var8
) /* []= on <var_ids:HashMap[Object, Int]>*/;
1646 CONTINUE_label
: (void)0;
1647 ((void (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var4
) /* next on <var4:Iterator[nullable Object]>*/;
1649 BREAK_label
: (void)0;
1655 /* method layout_builders#TypingColorer#compute_ids for (self: Object, Set[Object]): Map[Object, Int] */
1656 val
* VIRTUAL_layout_builders__TypingColorer__compute_ids(val
* self
, val
* p0
) {
1657 val
* var
/* : Map[Object, Int] */;
1658 val
* var1
/* : Map[Object, Int] */;
1659 var1
= layout_builders__TypingColorer__compute_ids(self
, p0
);
1664 /* method layout_builders#TypingColorer#colorize for (self: TypingColorer[Object], Set[Object]): Map[Object, Int] */
1665 val
* layout_builders__TypingColorer__colorize(val
* self
, val
* p0
) {
1666 val
* var
/* : Map[Object, Int] */;
1667 short int var1
/* : Bool */;
1670 const struct type
* type_struct
;
1671 const char* var_class_name
;
1672 val
* var_elements
/* var elements: Set[Object] */;
1673 val
* var2
/* : Set[Object] */;
1674 val
* var3
/* : Set[Object] */;
1675 val
* var4
/* : Set[Object] */;
1676 val
* var5
/* : Map[Object, Int] */;
1677 /* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingColorer#0] */
1678 /* <p0:Set[Object]> isa Set[TypingColorer#0] */
1679 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0
];
1680 cltype
= type_struct
->color
;
1681 idtype
= type_struct
->id
;
1682 if(cltype
>= p0
->type
->table_size
) {
1685 var1
= p0
->type
->type_table
[cltype
] == idtype
;
1688 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
1689 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Set[TypingColorer#0]", var_class_name
);
1690 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 258);
1694 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__tag_elements
]))(self
, var_elements
) /* tag_elements on <self:TypingColorer[Object]>*/;
1695 ((void (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__build_conflicts_graph
]))(self
) /* build_conflicts_graph on <self:TypingColorer[Object]>*/;
1696 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__core
]))(self
) /* core on <self:TypingColorer[Object]>*/;
1697 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__colorize_elements
]))(self
, var2
) /* colorize_elements on <self:TypingColorer[Object]>*/;
1698 var3
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__border
]))(self
) /* border on <self:TypingColorer[Object]>*/;
1699 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__colorize_elements
]))(self
, var3
) /* colorize_elements on <self:TypingColorer[Object]>*/;
1700 var4
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__crown
]))(self
) /* crown on <self:TypingColorer[Object]>*/;
1701 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__colorize_elements
]))(self
, var4
) /* colorize_elements on <self:TypingColorer[Object]>*/;
1702 var5
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__coloration_result
]))(self
) /* coloration_result on <self:TypingColorer[Object]>*/;
1708 /* method layout_builders#TypingColorer#colorize for (self: Object, Set[Object]): Map[Object, Int] */
1709 val
* VIRTUAL_layout_builders__TypingColorer__colorize(val
* self
, val
* p0
) {
1710 val
* var
/* : Map[Object, Int] */;
1711 val
* var1
/* : Map[Object, Int] */;
1712 var1
= layout_builders__TypingColorer__colorize(self
, p0
);
1717 /* method layout_builders#TypingColorer#colorize_elements for (self: TypingColorer[Object], Set[Object]) */
1718 void layout_builders__TypingColorer__colorize_elements(val
* self
, val
* p0
) {
1719 short int var
/* : Bool */;
1722 const struct type
* type_struct
;
1723 const char* var_class_name
;
1724 val
* var_elements
/* var elements: Set[Object] */;
1725 long var1
/* : Int */;
1726 long var_min_color
/* var min_color: Int */;
1727 val
* var2
/* : Array[Object] */;
1728 val
* var_lin
/* var lin: Array[Object] */;
1729 val
* var3
/* : Iterator[nullable Object] */;
1730 short int var4
/* : Bool */;
1731 val
* var5
/* : nullable Object */;
1732 val
* var_element
/* var element: Object */;
1733 long var_color
/* var color: Int */;
1734 short int var6
/* : Bool */;
1735 short int var7
/* : Bool */;
1736 long var8
/* : Int */;
1737 long var9
/* : Int */;
1738 long var11
/* : Int */;
1739 val
* var12
/* : Map[Object, Int] */;
1740 val
* var13
/* : nullable Object */;
1741 /* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingColorer#0] */
1742 /* <p0:Set[Object]> isa Set[TypingColorer#0] */
1743 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0
];
1744 cltype
= type_struct
->color
;
1745 idtype
= type_struct
->id
;
1746 if(cltype
>= p0
->type
->table_size
) {
1749 var
= p0
->type
->type_table
[cltype
] == idtype
;
1752 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
1753 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Set[TypingColorer#0]", var_class_name
);
1754 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 267);
1759 var_min_color
= var1
;
1760 var2
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__reverse_linearize
]))(self
, var_elements
) /* reverse_linearize on <self:TypingColorer[Object]>*/;
1762 var3
= ((val
* (*)(val
*))(var_lin
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_lin
) /* iterator on <var_lin:Array[Object]>*/;
1764 var4
= ((short int (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var3
) /* is_ok on <var3:Iterator[nullable Object]>*/;
1766 var5
= ((val
* (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var3
) /* item on <var3:Iterator[nullable Object]>*/;
1768 var_color
= var_min_color
;
1770 var6
= ((short int (*)(val
*, val
*, val
*, long))(self
->class->vft
[COLOR_layout_builders__TypingColorer__is_color_free
]))(self
, var_element
, var_elements
, var_color
) /* is_color_free on <self:TypingColorer[Object]>*/;
1774 { /* Inline kernel#Int#+ (var_color,var8) */
1775 var11
= var_color
+ var8
;
1778 RET_LABEL10
:(void)0;
1781 CONTINUE_label
: (void)0;
1783 BREAK_label
: (void)0;
1784 var12
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__coloration_result
]))(self
) /* coloration_result on <self:TypingColorer[Object]>*/;
1785 var13
= BOX_kernel__Int(var_color
); /* autobox from Int to nullable Object */
1786 ((void (*)(val
*, val
*, val
*))(var12
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var12
, var_element
, var13
) /* []= on <var12:Map[Object, Int]>*/;
1787 var_color
= var_min_color
;
1788 CONTINUE_label14
: (void)0;
1789 ((void (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var3
) /* next on <var3:Iterator[nullable Object]>*/;
1791 BREAK_label14
: (void)0;
1794 /* method layout_builders#TypingColorer#colorize_elements for (self: Object, Set[Object]) */
1795 void VIRTUAL_layout_builders__TypingColorer__colorize_elements(val
* self
, val
* p0
) {
1796 layout_builders__TypingColorer__colorize_elements(self
, p0
);
1799 /* method layout_builders#TypingColorer#is_color_free for (self: TypingColorer[Object], Object, Set[Object], Int): Bool */
1800 short int layout_builders__TypingColorer__is_color_free(val
* self
, val
* p0
, val
* p1
, long p2
) {
1801 short int var
/* : Bool */;
1802 short int var1
/* : Bool */;
1805 const struct type
* type_struct
;
1806 const char* var_class_name
;
1807 short int var2
/* : Bool */;
1810 const struct type
* type_struct5
;
1811 const char* var_class_name6
;
1812 val
* var_element
/* var element: Object */;
1813 val
* var_elements
/* var elements: Set[Object] */;
1814 long var_color
/* var color: Int */;
1815 val
* var7
/* : nullable HashMap[Object, Set[Object]] */;
1816 short int var8
/* : Bool */;
1817 val
* var9
/* : nullable HashMap[Object, Set[Object]] */;
1818 val
* var10
/* : nullable Object */;
1819 val
* var11
/* : Iterator[nullable Object] */;
1820 short int var12
/* : Bool */;
1821 val
* var13
/* : nullable Object */;
1822 val
* var_st
/* var st: Object */;
1823 short int var14
/* : Bool */;
1824 val
* var15
/* : Map[Object, Int] */;
1825 short int var16
/* : Bool */;
1826 short int var_
/* var : Bool */;
1827 val
* var17
/* : Map[Object, Int] */;
1828 val
* var18
/* : nullable Object */;
1829 short int var19
/* : Bool */;
1830 short int var21
/* : Bool */;
1831 long var22
/* : Int */;
1832 short int var23
/* : Bool */;
1833 val
* var24
/* : nullable POSet[Object] */;
1834 val
* var25
/* : POSetElement[Object] */;
1835 val
* var26
/* : Collection[Object] */;
1836 val
* var27
/* : Iterator[nullable Object] */;
1837 short int var28
/* : Bool */;
1838 val
* var29
/* : nullable Object */;
1839 val
* var_st30
/* var st: Object */;
1840 short int var31
/* : Bool */;
1841 short int var33
/* : Bool */;
1842 val
* var34
/* : Map[Object, Int] */;
1843 short int var35
/* : Bool */;
1844 short int var_36
/* var : Bool */;
1845 val
* var37
/* : Map[Object, Int] */;
1846 val
* var38
/* : nullable Object */;
1847 short int var39
/* : Bool */;
1848 short int var41
/* : Bool */;
1849 long var42
/* : Int */;
1850 short int var43
/* : Bool */;
1851 short int var44
/* : Bool */;
1852 /* Covariant cast for argument 0 (element) <p0:Object> isa TypingColorer#0 */
1853 /* <p0:Object> isa TypingColorer#0 */
1854 type_struct
= self
->type
->resolution_table
->types
[COLOR_layout_builders__TypingColorer_FT0
];
1855 cltype
= type_struct
->color
;
1856 idtype
= type_struct
->id
;
1857 if(cltype
>= p0
->type
->table_size
) {
1860 var1
= p0
->type
->type_table
[cltype
] == idtype
;
1863 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
1864 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "TypingColorer#0", var_class_name
);
1865 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 282);
1868 /* Covariant cast for argument 1 (elements) <p1:Set[Object]> isa Set[TypingColorer#0] */
1869 /* <p1:Set[Object]> isa Set[TypingColorer#0] */
1870 type_struct5
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0
];
1871 cltype3
= type_struct5
->color
;
1872 idtype4
= type_struct5
->id
;
1873 if(cltype3
>= p1
->type
->table_size
) {
1876 var2
= p1
->type
->type_table
[cltype3
] == idtype4
;
1879 var_class_name6
= p1
== NULL ?
"null" : p1
->type
->name
;
1880 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Set[TypingColorer#0]", var_class_name6
);
1881 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 282);
1887 var7
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:TypingColorer[Object]>*/;
1889 fprintf(stderr
, "Runtime error: %s", "Receiver is null");
1890 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 284);
1893 var8
= ((short int (*)(val
*, val
*))(var7
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var7
, var_element
) /* has_key on <var7:nullable HashMap[Object, Set[Object]]>*/;
1896 var9
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:TypingColorer[Object]>*/;
1898 fprintf(stderr
, "Runtime error: %s", "Receiver is null");
1899 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 285);
1902 var10
= ((val
* (*)(val
*, val
*))(var9
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var9
, var_element
) /* [] on <var9:nullable HashMap[Object, Set[Object]]>*/;
1904 var11
= ((val
* (*)(val
*))(var10
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var10
) /* iterator on <var10:nullable Object(Set[Object])>*/;
1906 var12
= ((short int (*)(val
*))(var11
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var11
) /* is_ok on <var11:Iterator[nullable Object]>*/;
1908 var13
= ((val
* (*)(val
*))(var11
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var11
) /* item on <var11:Iterator[nullable Object]>*/;
1910 var15
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__coloration_result
]))(self
) /* coloration_result on <self:TypingColorer[Object]>*/;
1911 var16
= ((short int (*)(val
*, val
*))(var15
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var15
, var_st
) /* has_key on <var15:Map[Object, Int]>*/;
1914 var17
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__coloration_result
]))(self
) /* coloration_result on <self:TypingColorer[Object]>*/;
1915 var18
= ((val
* (*)(val
*, val
*))(var17
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var17
, var_st
) /* [] on <var17:Map[Object, Int]>*/;
1916 { /* Inline kernel#Int#== (var18,var_color) */
1917 var21
= (var18
!= NULL
) && (var18
->class == &class_kernel__Int
);
1919 var22
= ((struct instance_kernel__Int
*)var18
)->value
; /* autounbox from nullable Object to Int */;
1920 var21
= (var22
== var_color
);
1924 RET_LABEL20
:(void)0;
1936 CONTINUE_label
: (void)0;
1937 ((void (*)(val
*))(var11
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var11
) /* next on <var11:Iterator[nullable Object]>*/;
1939 BREAK_label
: (void)0;
1942 var24
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__poset
]))(self
) /* poset on <self:TypingColorer[Object]>*/;
1943 if (var24
== NULL
) {
1944 fprintf(stderr
, "Runtime error: %s", "Receiver is null");
1945 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 289);
1948 var25
= ((val
* (*)(val
*, val
*))(var24
->class->vft
[COLOR_poset__POSet___91d_93d
]))(var24
, var_element
) /* [] on <var24:nullable POSet[Object]>*/;
1950 var26
= ((val
* (*)(val
*))(var25
->class->vft
[COLOR_poset__POSetElement__greaters
]))(var25
) /* greaters on <var25:POSetElement[Object]>*/;
1951 var27
= ((val
* (*)(val
*))(var26
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var26
) /* iterator on <var26:Collection[Object]>*/;
1953 var28
= ((short int (*)(val
*))(var27
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var27
) /* is_ok on <var27:Iterator[nullable Object]>*/;
1955 var29
= ((val
* (*)(val
*))(var27
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var27
) /* item on <var27:Iterator[nullable Object]>*/;
1957 var31
= ((short int (*)(val
*, val
*))(var_st30
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var_st30
, var_element
) /* == on <var_st30:Object>*/;
1959 goto CONTINUE_label32
;
1962 var34
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__coloration_result
]))(self
) /* coloration_result on <self:TypingColorer[Object]>*/;
1963 var35
= ((short int (*)(val
*, val
*))(var34
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var34
, var_st30
) /* has_key on <var34:Map[Object, Int]>*/;
1966 var37
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__coloration_result
]))(self
) /* coloration_result on <self:TypingColorer[Object]>*/;
1967 var38
= ((val
* (*)(val
*, val
*))(var37
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var37
, var_st30
) /* [] on <var37:Map[Object, Int]>*/;
1968 { /* Inline kernel#Int#== (var38,var_color) */
1969 var41
= (var38
!= NULL
) && (var38
->class == &class_kernel__Int
);
1971 var42
= ((struct instance_kernel__Int
*)var38
)->value
; /* autounbox from nullable Object to Int */;
1972 var41
= (var42
== var_color
);
1976 RET_LABEL40
:(void)0;
1988 CONTINUE_label32
: (void)0;
1989 ((void (*)(val
*))(var27
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var27
) /* next on <var27:Iterator[nullable Object]>*/;
1991 BREAK_label32
: (void)0;
1998 /* method layout_builders#TypingColorer#is_color_free for (self: Object, Object, Set[Object], Int): Bool */
1999 short int VIRTUAL_layout_builders__TypingColorer__is_color_free(val
* self
, val
* p0
, val
* p1
, long p2
) {
2000 short int var
/* : Bool */;
2001 short int var1
/* : Bool */;
2002 var1
= layout_builders__TypingColorer__is_color_free(self
, p0
, p1
, p2
);
2007 /* method layout_builders#TypingColorer#tag_elements for (self: TypingColorer[Object], Set[Object]) */
2008 void layout_builders__TypingColorer__tag_elements(val
* self
, val
* p0
) {
2009 short int var
/* : Bool */;
2012 const struct type
* type_struct
;
2013 const char* var_class_name
;
2014 val
* var_elements
/* var elements: Set[Object] */;
2015 val
* var1
/* : Iterator[nullable Object] */;
2016 short int var2
/* : Bool */;
2017 val
* var3
/* : nullable Object */;
2018 val
* var_element
/* var element: Object */;
2019 short int var4
/* : Bool */;
2020 short int var_all_subelements_si
/* var all_subelements_si: Bool */;
2021 val
* var5
/* : nullable POSet[Object] */;
2022 val
* var6
/* : POSetElement[Object] */;
2023 val
* var7
/* : Collection[Object] */;
2024 val
* var8
/* : Iterator[nullable Object] */;
2025 short int var9
/* : Bool */;
2026 val
* var10
/* : nullable Object */;
2027 val
* var_subelem
/* var subelem: Object */;
2028 val
* var11
/* : nullable POSet[Object] */;
2029 val
* var12
/* : POSetElement[Object] */;
2030 val
* var13
/* : Collection[Object] */;
2031 long var14
/* : Int */;
2032 long var15
/* : Int */;
2033 short int var16
/* : Bool */;
2034 short int var18
/* : Bool */;
2037 const char* var_class_name21
;
2038 short int var22
/* : Bool */;
2039 short int var23
/* : Bool */;
2040 val
* var24
/* : nullable POSet[Object] */;
2041 val
* var25
/* : POSetElement[Object] */;
2042 val
* var26
/* : Collection[Object] */;
2043 long var27
/* : Int */;
2044 long var28
/* : Int */;
2045 short int var29
/* : Bool */;
2046 short int var31
/* : Bool */;
2049 const char* var_class_name34
;
2050 short int var35
/* : Bool */;
2051 val
* var36
/* : Set[Object] */;
2052 val
* var37
/* : nullable POSet[Object] */;
2053 val
* var38
/* : POSetElement[Object] */;
2054 val
* var39
/* : Collection[Object] */;
2055 val
* var40
/* : Set[Object] */;
2056 short int var41
/* : Bool */;
2057 val
* var42
/* : Set[Object] */;
2058 val
* var43
/* : nullable POSet[Object] */;
2059 val
* var44
/* : POSetElement[Object] */;
2060 val
* var45
/* : Collection[Object] */;
2061 val
* var46
/* : Set[Object] */;
2062 /* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingColorer#0] */
2063 /* <p0:Set[Object]> isa Set[TypingColorer#0] */
2064 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0
];
2065 cltype
= type_struct
->color
;
2066 idtype
= type_struct
->id
;
2067 if(cltype
>= p0
->type
->table_size
) {
2070 var
= p0
->type
->type_table
[cltype
] == idtype
;
2073 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
2074 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Set[TypingColorer#0]", var_class_name
);
2075 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 296);
2079 var1
= ((val
* (*)(val
*))(var_elements
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_elements
) /* iterator on <var_elements:Set[Object]>*/;
2081 var2
= ((short int (*)(val
*))(var1
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var1
) /* is_ok on <var1:Iterator[nullable Object]>*/;
2083 var3
= ((val
* (*)(val
*))(var1
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var1
) /* item on <var1:Iterator[nullable Object]>*/;
2086 var_all_subelements_si
= var4
;
2087 var5
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__poset
]))(self
) /* poset on <self:TypingColorer[Object]>*/;
2089 fprintf(stderr
, "Runtime error: %s", "Receiver is null");
2090 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 301);
2093 var6
= ((val
* (*)(val
*, val
*))(var5
->class->vft
[COLOR_poset__POSet___91d_93d
]))(var5
, var_element
) /* [] on <var5:nullable POSet[Object]>*/;
2095 var7
= ((val
* (*)(val
*))(var6
->class->vft
[COLOR_poset__POSetElement__smallers
]))(var6
) /* smallers on <var6:POSetElement[Object]>*/;
2096 var8
= ((val
* (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var7
) /* iterator on <var7:Collection[Object]>*/;
2098 var9
= ((short int (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var8
) /* is_ok on <var8:Iterator[nullable Object]>*/;
2100 var10
= ((val
* (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var8
) /* item on <var8:Iterator[nullable Object]>*/;
2101 var_subelem
= var10
;
2102 var11
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__poset
]))(self
) /* poset on <self:TypingColorer[Object]>*/;
2103 if (var11
== NULL
) {
2104 fprintf(stderr
, "Runtime error: %s", "Receiver is null");
2105 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 302);
2108 var12
= ((val
* (*)(val
*, val
*))(var11
->class->vft
[COLOR_poset__POSet___91d_93d
]))(var11
, var_subelem
) /* [] on <var11:nullable POSet[Object]>*/;
2110 var13
= ((val
* (*)(val
*))(var12
->class->vft
[COLOR_poset__POSetElement__direct_greaters
]))(var12
) /* direct_greaters on <var12:POSetElement[Object]>*/;
2111 var14
= ((long (*)(val
*))(var13
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var13
) /* length on <var13:Collection[Object]>*/;
2113 { /* Inline kernel#Int#> (var14,var15) */
2114 /* Covariant cast for argument 0 (i) <var15:Int> isa OTHER */
2115 /* <var15:Int> isa OTHER */
2116 var18
= 1; /* easy <var15:Int> isa OTHER*/
2118 var_class_name21
= type_kernel__Int
.name
;
2119 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name21
);
2120 fprintf(stderr
, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
2123 var22
= var14
> var15
;
2126 RET_LABEL17
:(void)0;
2130 var_all_subelements_si
= var23
;
2134 CONTINUE_label
: (void)0;
2135 ((void (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var8
) /* next on <var8:Iterator[nullable Object]>*/;
2137 BREAK_label
: (void)0;
2138 var24
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__poset
]))(self
) /* poset on <self:TypingColorer[Object]>*/;
2139 if (var24
== NULL
) {
2140 fprintf(stderr
, "Runtime error: %s", "Receiver is null");
2141 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 309);
2144 var25
= ((val
* (*)(val
*, val
*))(var24
->class->vft
[COLOR_poset__POSet___91d_93d
]))(var24
, var_element
) /* [] on <var24:nullable POSet[Object]>*/;
2146 var26
= ((val
* (*)(val
*))(var25
->class->vft
[COLOR_poset__POSetElement__direct_greaters
]))(var25
) /* direct_greaters on <var25:POSetElement[Object]>*/;
2147 var27
= ((long (*)(val
*))(var26
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var26
) /* length on <var26:Collection[Object]>*/;
2149 { /* Inline kernel#Int#> (var27,var28) */
2150 /* Covariant cast for argument 0 (i) <var28:Int> isa OTHER */
2151 /* <var28:Int> isa OTHER */
2152 var31
= 1; /* easy <var28:Int> isa OTHER*/
2154 var_class_name34
= type_kernel__Int
.name
;
2155 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name34
);
2156 fprintf(stderr
, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
2159 var35
= var27
> var28
;
2162 RET_LABEL30
:(void)0;
2165 var36
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__core
]))(self
) /* core on <self:TypingColorer[Object]>*/;
2166 var37
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__poset
]))(self
) /* poset on <self:TypingColorer[Object]>*/;
2167 if (var37
== NULL
) {
2168 fprintf(stderr
, "Runtime error: %s", "Receiver is null");
2169 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 310);
2172 var38
= ((val
* (*)(val
*, val
*))(var37
->class->vft
[COLOR_poset__POSet___91d_93d
]))(var37
, var_element
) /* [] on <var37:nullable POSet[Object]>*/;
2174 var39
= ((val
* (*)(val
*))(var38
->class->vft
[COLOR_poset__POSetElement__greaters
]))(var38
) /* greaters on <var38:POSetElement[Object]>*/;
2175 ((void (*)(val
*, val
*))(var36
->class->vft
[COLOR_abstract_collection__SimpleCollection__add_all
]))(var36
, var39
) /* add_all on <var36:Set[Object]>*/;
2176 if (var_all_subelements_si
){
2177 var40
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__border
]))(self
) /* border on <self:TypingColorer[Object]>*/;
2178 ((void (*)(val
*, val
*))(var40
->class->vft
[COLOR_abstract_collection__SimpleCollection__add
]))(var40
, var_element
) /* add on <var40:Set[Object]>*/;
2182 var41
= !var_all_subelements_si
;
2184 var42
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__core
]))(self
) /* core on <self:TypingColorer[Object]>*/;
2185 var43
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__poset
]))(self
) /* poset on <self:TypingColorer[Object]>*/;
2186 if (var43
== NULL
) {
2187 fprintf(stderr
, "Runtime error: %s", "Receiver is null");
2188 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 315);
2191 var44
= ((val
* (*)(val
*, val
*))(var43
->class->vft
[COLOR_poset__POSet___91d_93d
]))(var43
, var_element
) /* [] on <var43:nullable POSet[Object]>*/;
2193 var45
= ((val
* (*)(val
*))(var44
->class->vft
[COLOR_poset__POSetElement__greaters
]))(var44
) /* greaters on <var44:POSetElement[Object]>*/;
2194 ((void (*)(val
*, val
*))(var42
->class->vft
[COLOR_abstract_collection__SimpleCollection__add_all
]))(var42
, var45
) /* add_all on <var42:Set[Object]>*/;
2196 var46
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__crown
]))(self
) /* crown on <self:TypingColorer[Object]>*/;
2197 ((void (*)(val
*, val
*))(var46
->class->vft
[COLOR_abstract_collection__SimpleCollection__add
]))(var46
, var_element
) /* add on <var46:Set[Object]>*/;
2200 CONTINUE_label47
: (void)0;
2201 ((void (*)(val
*))(var1
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var1
) /* next on <var1:Iterator[nullable Object]>*/;
2203 BREAK_label47
: (void)0;
2206 /* method layout_builders#TypingColorer#tag_elements for (self: Object, Set[Object]) */
2207 void VIRTUAL_layout_builders__TypingColorer__tag_elements(val
* self
, val
* p0
) {
2208 layout_builders__TypingColorer__tag_elements(self
, p0
);
2211 /* method layout_builders#TypingColorer#build_conflicts_graph for (self: TypingColorer[Object]) */
2212 void layout_builders__TypingColorer__build_conflicts_graph(val
* self
) {
2213 val
* var
/* : HashMap[Object, HashSet[Object]] */;
2214 val
* var1
/* : Set[Object] */;
2215 val
* var2
/* : Array[Object] */;
2216 val
* var_core
/* var core: Array[Object] */;
2217 val
* var3
/* : Iterator[nullable Object] */;
2218 short int var4
/* : Bool */;
2219 val
* var5
/* : nullable Object */;
2220 val
* var_t
/* var t: Object */;
2221 val
* var6
/* : Array[Object] */;
2222 val
* var7
/* : Iterator[nullable Object] */;
2223 short int var8
/* : Bool */;
2224 val
* var9
/* : nullable Object */;
2225 val
* var_i
/* var i: Object */;
2226 short int var10
/* : Bool */;
2227 val
* var11
/* : Array[Object] */;
2228 val
* var_lin_i
/* var lin_i: Array[Object] */;
2229 val
* var12
/* : Array[Object] */;
2230 val
* var13
/* : Iterator[nullable Object] */;
2231 short int var14
/* : Bool */;
2232 val
* var15
/* : nullable Object */;
2233 val
* var_j
/* var j: Object */;
2234 short int var16
/* : Bool */;
2235 short int var17
/* : Bool */;
2236 short int var_
/* var : Bool */;
2237 short int var18
/* : Bool */;
2238 val
* var20
/* : Array[Object] */;
2239 val
* var_lin_j
/* var lin_j: Array[Object] */;
2240 val
* var21
/* : Array[nullable Object] */;
2241 val
* var_d_ij
/* var d_ij: Array[Object] */;
2242 val
* var22
/* : Array[nullable Object] */;
2243 val
* var_d_ji
/* var d_ji: Array[Object] */;
2244 val
* var23
/* : Iterator[nullable Object] */;
2245 short int var24
/* : Bool */;
2246 val
* var25
/* : nullable Object */;
2247 val
* var_ed1
/* var ed1: Object */;
2248 val
* var26
/* : nullable HashMap[Object, Set[Object]] */;
2249 short int var27
/* : Bool */;
2250 short int var28
/* : Bool */;
2251 val
* var29
/* : nullable HashMap[Object, Set[Object]] */;
2252 val
* var30
/* : HashSet[Object] */;
2253 val
* var31
/* : Iterator[nullable Object] */;
2254 short int var32
/* : Bool */;
2255 val
* var33
/* : nullable Object */;
2256 val
* var_ed2
/* var ed2: Object */;
2257 val
* var34
/* : nullable HashMap[Object, Set[Object]] */;
2258 val
* var35
/* : nullable Object */;
2259 val
* var38
/* : Iterator[nullable Object] */;
2260 short int var39
/* : Bool */;
2261 val
* var40
/* : nullable Object */;
2262 val
* var_ed141
/* var ed1: Object */;
2263 val
* var42
/* : nullable HashMap[Object, Set[Object]] */;
2264 short int var43
/* : Bool */;
2265 short int var44
/* : Bool */;
2266 val
* var45
/* : nullable HashMap[Object, Set[Object]] */;
2267 val
* var46
/* : HashSet[Object] */;
2268 val
* var47
/* : Iterator[nullable Object] */;
2269 short int var48
/* : Bool */;
2270 val
* var49
/* : nullable Object */;
2271 val
* var_ed250
/* var ed2: Object */;
2272 val
* var51
/* : nullable HashMap[Object, Set[Object]] */;
2273 val
* var52
/* : nullable Object */;
2274 var
= NEW_hash_collection__HashMap(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashMaplayout_builders__TypingColorer_FT0hash_collection__HashSetlayout_builders__TypingColorer_FT0
]);
2275 ((void (*)(val
*))(var
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var
) /* init on <var:HashMap[Object, HashSet[Object]]>*/;
2276 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__conflicts_graph_61d
]))(self
, var
) /* conflicts_graph= on <self:TypingColorer[Object]>*/;
2277 var1
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__core
]))(self
) /* core on <self:TypingColorer[Object]>*/;
2278 var2
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__reverse_linearize
]))(self
, var1
) /* reverse_linearize on <self:TypingColorer[Object]>*/;
2280 var3
= ((val
* (*)(val
*))(var_core
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_core
) /* iterator on <var_core:Array[Object]>*/;
2282 var4
= ((short int (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var3
) /* is_ok on <var3:Iterator[nullable Object]>*/;
2284 var5
= ((val
* (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var3
) /* item on <var3:Iterator[nullable Object]>*/;
2286 var6
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__linear_extension
]))(self
, var_t
) /* linear_extension on <self:TypingColorer[Object]>*/;
2287 var7
= ((val
* (*)(val
*))(var6
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var6
) /* iterator on <var6:Array[Object]>*/;
2289 var8
= ((short int (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var7
) /* is_ok on <var7:Iterator[nullable Object]>*/;
2291 var9
= ((val
* (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var7
) /* item on <var7:Iterator[nullable Object]>*/;
2293 var10
= ((short int (*)(val
*, val
*))(var_t
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var_t
, var_i
) /* == on <var_t:Object>*/;
2295 goto CONTINUE_label
;
2298 var11
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__linear_extension
]))(self
, var_i
) /* linear_extension on <self:TypingColorer[Object]>*/;
2300 var12
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__linear_extension
]))(self
, var_t
) /* linear_extension on <self:TypingColorer[Object]>*/;
2301 var13
= ((val
* (*)(val
*))(var12
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var12
) /* iterator on <var12:Array[Object]>*/;
2303 var14
= ((short int (*)(val
*))(var13
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var13
) /* is_ok on <var13:Iterator[nullable Object]>*/;
2305 var15
= ((val
* (*)(val
*))(var13
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var13
) /* item on <var13:Iterator[nullable Object]>*/;
2307 var17
= ((short int (*)(val
*, val
*))(var_i
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var_i
, var_j
) /* == on <var_i:Object>*/;
2312 var18
= ((short int (*)(val
*, val
*))(var_j
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var_j
, var_t
) /* == on <var_j:Object>*/;
2316 goto CONTINUE_label19
;
2319 var20
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__linear_extension
]))(self
, var_j
) /* linear_extension on <self:TypingColorer[Object]>*/;
2321 var21
= ((val
* (*)(val
*, val
*))(var_lin_i
->class->vft
[COLOR_abstract_compiler__Array___45d
]))(var_lin_i
, var_lin_j
) /* - on <var_lin_i:Array[Object]>*/;
2323 var22
= ((val
* (*)(val
*, val
*))(var_lin_j
->class->vft
[COLOR_abstract_compiler__Array___45d
]))(var_lin_j
, var_lin_i
) /* - on <var_lin_j:Array[Object]>*/;
2325 var23
= ((val
* (*)(val
*))(var_d_ij
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_d_ij
) /* iterator on <var_d_ij:Array[Object]>*/;
2327 var24
= ((short int (*)(val
*))(var23
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var23
) /* is_ok on <var23:Iterator[nullable Object]>*/;
2329 var25
= ((val
* (*)(val
*))(var23
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var23
) /* item on <var23:Iterator[nullable Object]>*/;
2331 var26
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:TypingColorer[Object]>*/;
2332 if (var26
== NULL
) {
2333 fprintf(stderr
, "Runtime error: %s", "Receiver is null");
2334 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 340);
2337 var27
= ((short int (*)(val
*, val
*))(var26
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var26
, var_ed1
) /* has_key on <var26:nullable HashMap[Object, Set[Object]]>*/;
2341 var29
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:TypingColorer[Object]>*/;
2342 var30
= NEW_hash_collection__HashSet(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashSetlayout_builders__TypingColorer_FT0
]);
2343 ((void (*)(val
*))(var30
->class->vft
[COLOR_hash_collection__HashSet__init
]))(var30
) /* init on <var30:HashSet[Object]>*/;
2344 if (var29
== NULL
) {
2345 fprintf(stderr
, "Runtime error: %s", "Receiver is null");
2346 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 340);
2349 ((void (*)(val
*, val
*, val
*))(var29
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var29
, var_ed1
, var30
) /* []= on <var29:nullable HashMap[Object, Set[Object]]>*/;
2353 var31
= ((val
* (*)(val
*))(var_d_ji
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_d_ji
) /* iterator on <var_d_ji:Array[Object]>*/;
2355 var32
= ((short int (*)(val
*))(var31
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var31
) /* is_ok on <var31:Iterator[nullable Object]>*/;
2357 var33
= ((val
* (*)(val
*))(var31
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var31
) /* item on <var31:Iterator[nullable Object]>*/;
2359 var34
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:TypingColorer[Object]>*/;
2360 if (var34
== NULL
) {
2361 fprintf(stderr
, "Runtime error: %s", "Receiver is null");
2362 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 342);
2365 var35
= ((val
* (*)(val
*, val
*))(var34
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var34
, var_ed1
) /* [] on <var34:nullable HashMap[Object, Set[Object]]>*/;
2367 ((void (*)(val
*, val
*))(var35
->class->vft
[COLOR_abstract_collection__SimpleCollection__add
]))(var35
, var_ed2
) /* add on <var35:nullable Object(Set[Object])>*/;
2368 CONTINUE_label36
: (void)0;
2369 ((void (*)(val
*))(var31
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var31
) /* next on <var31:Iterator[nullable Object]>*/;
2371 BREAK_label36
: (void)0;
2372 CONTINUE_label37
: (void)0;
2373 ((void (*)(val
*))(var23
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var23
) /* next on <var23:Iterator[nullable Object]>*/;
2375 BREAK_label37
: (void)0;
2376 var38
= ((val
* (*)(val
*))(var_d_ij
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_d_ij
) /* iterator on <var_d_ij:Array[Object]>*/;
2378 var39
= ((short int (*)(val
*))(var38
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var38
) /* is_ok on <var38:Iterator[nullable Object]>*/;
2380 var40
= ((val
* (*)(val
*))(var38
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var38
) /* item on <var38:Iterator[nullable Object]>*/;
2382 var42
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:TypingColorer[Object]>*/;
2383 if (var42
== NULL
) {
2384 fprintf(stderr
, "Runtime error: %s", "Receiver is null");
2385 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 345);
2388 var43
= ((short int (*)(val
*, val
*))(var42
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var42
, var_ed141
) /* has_key on <var42:nullable HashMap[Object, Set[Object]]>*/;
2392 var45
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:TypingColorer[Object]>*/;
2393 var46
= NEW_hash_collection__HashSet(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashSetlayout_builders__TypingColorer_FT0
]);
2394 ((void (*)(val
*))(var46
->class->vft
[COLOR_hash_collection__HashSet__init
]))(var46
) /* init on <var46:HashSet[Object]>*/;
2395 if (var45
== NULL
) {
2396 fprintf(stderr
, "Runtime error: %s", "Receiver is null");
2397 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 345);
2400 ((void (*)(val
*, val
*, val
*))(var45
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var45
, var_ed141
, var46
) /* []= on <var45:nullable HashMap[Object, Set[Object]]>*/;
2404 var47
= ((val
* (*)(val
*))(var_d_ji
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_d_ji
) /* iterator on <var_d_ji:Array[Object]>*/;
2406 var48
= ((short int (*)(val
*))(var47
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var47
) /* is_ok on <var47:Iterator[nullable Object]>*/;
2408 var49
= ((val
* (*)(val
*))(var47
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var47
) /* item on <var47:Iterator[nullable Object]>*/;
2410 var51
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:TypingColorer[Object]>*/;
2411 if (var51
== NULL
) {
2412 fprintf(stderr
, "Runtime error: %s", "Receiver is null");
2413 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 347);
2416 var52
= ((val
* (*)(val
*, val
*))(var51
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var51
, var_ed141
) /* [] on <var51:nullable HashMap[Object, Set[Object]]>*/;
2418 ((void (*)(val
*, val
*))(var52
->class->vft
[COLOR_abstract_collection__SimpleCollection__add
]))(var52
, var_ed250
) /* add on <var52:nullable Object(Set[Object])>*/;
2419 CONTINUE_label53
: (void)0;
2420 ((void (*)(val
*))(var47
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var47
) /* next on <var47:Iterator[nullable Object]>*/;
2422 BREAK_label53
: (void)0;
2423 CONTINUE_label54
: (void)0;
2424 ((void (*)(val
*))(var38
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var38
) /* next on <var38:Iterator[nullable Object]>*/;
2426 BREAK_label54
: (void)0;
2427 CONTINUE_label19
: (void)0;
2428 ((void (*)(val
*))(var13
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var13
) /* next on <var13:Iterator[nullable Object]>*/;
2430 BREAK_label19
: (void)0;
2431 CONTINUE_label
: (void)0;
2432 ((void (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var7
) /* next on <var7:Iterator[nullable Object]>*/;
2434 BREAK_label
: (void)0;
2435 CONTINUE_label55
: (void)0;
2436 ((void (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var3
) /* next on <var3:Iterator[nullable Object]>*/;
2438 BREAK_label55
: (void)0;
2441 /* method layout_builders#TypingColorer#build_conflicts_graph for (self: Object) */
2442 void VIRTUAL_layout_builders__TypingColorer__build_conflicts_graph(val
* self
) {
2443 layout_builders__TypingColorer__build_conflicts_graph(self
);
2446 /* method layout_builders#TypingColorer#conflicts_graph for (self: TypingColorer[Object]): nullable HashMap[Object, Set[Object]] */
2447 val
* layout_builders__TypingColorer__conflicts_graph(val
* self
) {
2448 val
* var
/* : nullable HashMap[Object, Set[Object]] */;
2449 val
* var1
/* : nullable HashMap[Object, Set[Object]] */;
2450 var1
= self
->attrs
[COLOR_layout_builders__TypingColorer___64dconflicts_graph
].val
; /* @conflicts_graph on <self:TypingColorer[Object]> */
2455 /* method layout_builders#TypingColorer#conflicts_graph for (self: Object): nullable HashMap[Object, Set[Object]] */
2456 val
* VIRTUAL_layout_builders__TypingColorer__conflicts_graph(val
* self
) {
2457 val
* var
/* : nullable HashMap[Object, Set[Object]] */;
2458 val
* var1
/* : nullable HashMap[Object, Set[Object]] */;
2459 var1
= layout_builders__TypingColorer__conflicts_graph(self
);
2464 /* method layout_builders#TypingColorer#conflicts_graph= for (self: TypingColorer[Object], nullable HashMap[Object, Set[Object]]) */
2465 void layout_builders__TypingColorer__conflicts_graph_61d(val
* self
, val
* p0
) {
2466 short int var
/* : Bool */;
2469 const struct type
* type_struct
;
2470 const char* var_class_name
;
2471 /* Covariant cast for argument 0 (conflicts_graph) <p0:nullable HashMap[Object, Set[Object]]> isa nullable HashMap[TypingColorer#0, Set[TypingColorer#0]] */
2472 /* <p0:nullable HashMap[Object, Set[Object]]> isa nullable HashMap[TypingColorer#0, Set[TypingColorer#0]] */
2473 type_struct
= self
->type
->resolution_table
->types
[COLOR_nullable_hash_collection__HashMaplayout_builders__TypingColorer_FT0abstract_collection__Setlayout_builders__TypingColorer_FT0
];
2474 cltype
= type_struct
->color
;
2475 idtype
= type_struct
->id
;
2479 if(cltype
>= p0
->type
->table_size
) {
2482 var
= p0
->type
->type_table
[cltype
] == idtype
;
2486 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
2487 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable HashMap[TypingColorer#0, Set[TypingColorer#0]]", var_class_name
);
2488 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 354);
2491 self
->attrs
[COLOR_layout_builders__TypingColorer___64dconflicts_graph
].val
= p0
; /* @conflicts_graph on <self:TypingColorer[Object]> */
2494 /* method layout_builders#TypingColorer#conflicts_graph= for (self: Object, nullable HashMap[Object, Set[Object]]) */
2495 void VIRTUAL_layout_builders__TypingColorer__conflicts_graph_61d(val
* self
, val
* p0
) {
2496 layout_builders__TypingColorer__conflicts_graph_61d(self
, p0
);
2499 /* method layout_builders#TypingColorer#linear_extensions_cache for (self: TypingColorer[Object]): Map[Object, Array[Object]] */
2500 val
* layout_builders__TypingColorer__linear_extensions_cache(val
* self
) {
2501 val
* var
/* : Map[Object, Array[Object]] */;
2502 val
* var1
/* : Map[Object, Array[Object]] */;
2503 var1
= self
->attrs
[COLOR_layout_builders__TypingColorer___64dlinear_extensions_cache
].val
; /* @linear_extensions_cache on <self:TypingColorer[Object]> */
2505 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @linear_extensions_cache");
2506 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 356);
2513 /* method layout_builders#TypingColorer#linear_extensions_cache for (self: Object): Map[Object, Array[Object]] */
2514 val
* VIRTUAL_layout_builders__TypingColorer__linear_extensions_cache(val
* self
) {
2515 val
* var
/* : Map[Object, Array[Object]] */;
2516 val
* var1
/* : Map[Object, Array[Object]] */;
2517 var1
= layout_builders__TypingColorer__linear_extensions_cache(self
);
2522 /* method layout_builders#TypingColorer#linear_extensions_cache= for (self: TypingColorer[Object], Map[Object, Array[Object]]) */
2523 void layout_builders__TypingColorer__linear_extensions_cache_61d(val
* self
, val
* p0
) {
2524 short int var
/* : Bool */;
2527 const struct type
* type_struct
;
2528 const char* var_class_name
;
2529 /* Covariant cast for argument 0 (linear_extensions_cache) <p0:Map[Object, Array[Object]]> isa Map[TypingColorer#0, Array[TypingColorer#0]] */
2530 /* <p0:Map[Object, Array[Object]]> isa Map[TypingColorer#0, Array[TypingColorer#0]] */
2531 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Maplayout_builders__TypingColorer_FT0array__Arraylayout_builders__TypingColorer_FT0
];
2532 cltype
= type_struct
->color
;
2533 idtype
= type_struct
->id
;
2534 if(cltype
>= p0
->type
->table_size
) {
2537 var
= p0
->type
->type_table
[cltype
] == idtype
;
2540 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
2541 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[TypingColorer#0, Array[TypingColorer#0]]", var_class_name
);
2542 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 356);
2545 self
->attrs
[COLOR_layout_builders__TypingColorer___64dlinear_extensions_cache
].val
= p0
; /* @linear_extensions_cache on <self:TypingColorer[Object]> */
2548 /* method layout_builders#TypingColorer#linear_extensions_cache= for (self: Object, Map[Object, Array[Object]]) */
2549 void VIRTUAL_layout_builders__TypingColorer__linear_extensions_cache_61d(val
* self
, val
* p0
) {
2550 layout_builders__TypingColorer__linear_extensions_cache_61d(self
, p0
);
2553 /* method layout_builders#TypingColorer#linear_extension for (self: TypingColorer[Object], Object): Array[Object] */
2554 val
* layout_builders__TypingColorer__linear_extension(val
* self
, val
* p0
) {
2555 val
* var
/* : Array[Object] */;
2556 short int var1
/* : Bool */;
2559 const struct type
* type_struct
;
2560 const char* var_class_name
;
2561 val
* var_element
/* var element: Object */;
2562 val
* var2
/* : Map[Object, Array[Object]] */;
2563 short int var3
/* : Bool */;
2564 short int var4
/* : Bool */;
2565 val
* var5
/* : HashSet[Object] */;
2566 val
* var_supers
/* var supers: HashSet[Object] */;
2567 val
* var6
/* : nullable POSet[Object] */;
2568 val
* var7
/* : POSetElement[Object] */;
2569 val
* var8
/* : Collection[Object] */;
2570 val
* var9
/* : Map[Object, Array[Object]] */;
2571 val
* var10
/* : Array[Object] */;
2572 val
* var11
/* : Map[Object, Array[Object]] */;
2573 val
* var12
/* : nullable Object */;
2574 /* Covariant cast for argument 0 (element) <p0:Object> isa TypingColorer#0 */
2575 /* <p0:Object> isa TypingColorer#0 */
2576 type_struct
= self
->type
->resolution_table
->types
[COLOR_layout_builders__TypingColorer_FT0
];
2577 cltype
= type_struct
->color
;
2578 idtype
= type_struct
->id
;
2579 if(cltype
>= p0
->type
->table_size
) {
2582 var1
= p0
->type
->type_table
[cltype
] == idtype
;
2585 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
2586 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "TypingColorer#0", var_class_name
);
2587 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 359);
2591 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__linear_extensions_cache
]))(self
) /* linear_extensions_cache on <self:TypingColorer[Object]>*/;
2592 var3
= ((short int (*)(val
*, val
*))(var2
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var2
, var_element
) /* has_key on <var2:Map[Object, Array[Object]]>*/;
2595 var5
= NEW_hash_collection__HashSet(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashSetlayout_builders__TypingColorer_FT0
]);
2596 ((void (*)(val
*))(var5
->class->vft
[COLOR_hash_collection__HashSet__init
]))(var5
) /* init on <var5:HashSet[Object]>*/;
2598 var6
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__poset
]))(self
) /* poset on <self:TypingColorer[Object]>*/;
2600 fprintf(stderr
, "Runtime error: %s", "Receiver is null");
2601 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 363);
2604 var7
= ((val
* (*)(val
*, val
*))(var6
->class->vft
[COLOR_poset__POSet___91d_93d
]))(var6
, var_element
) /* [] on <var6:nullable POSet[Object]>*/;
2606 var8
= ((val
* (*)(val
*))(var7
->class->vft
[COLOR_poset__POSetElement__greaters
]))(var7
) /* greaters on <var7:POSetElement[Object]>*/;
2607 ((void (*)(val
*, val
*))(var_supers
->class->vft
[COLOR_abstract_collection__SimpleCollection__add_all
]))(var_supers
, var8
) /* add_all on <var_supers:HashSet[Object]>*/;
2608 var9
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__linear_extensions_cache
]))(self
) /* linear_extensions_cache on <self:TypingColorer[Object]>*/;
2609 var10
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__linearize
]))(self
, var_supers
) /* linearize on <self:TypingColorer[Object]>*/;
2610 ((void (*)(val
*, val
*, val
*))(var9
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var9
, var_element
, var10
) /* []= on <var9:Map[Object, Array[Object]]>*/;
2613 var11
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__linear_extensions_cache
]))(self
) /* linear_extensions_cache on <self:TypingColorer[Object]>*/;
2614 var12
= ((val
* (*)(val
*, val
*))(var11
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var11
, var_element
) /* [] on <var11:Map[Object, Array[Object]]>*/;
2620 /* method layout_builders#TypingColorer#linear_extension for (self: Object, Object): Array[Object] */
2621 val
* VIRTUAL_layout_builders__TypingColorer__linear_extension(val
* self
, val
* p0
) {
2622 val
* var
/* : Array[Object] */;
2623 val
* var1
/* : Array[Object] */;
2624 var1
= layout_builders__TypingColorer__linear_extension(self
, p0
);
2629 /* method layout_builders#TypingColorer#reverse_linearize for (self: TypingColorer[Object], Set[Object]): Array[Object] */
2630 val
* layout_builders__TypingColorer__reverse_linearize(val
* self
, val
* p0
) {
2631 val
* var
/* : Array[Object] */;
2632 short int var1
/* : Bool */;
2635 const struct type
* type_struct
;
2636 const char* var_class_name
;
2637 val
* var_elements
/* var elements: Set[Object] */;
2638 val
* var2
/* : Array[Object] */;
2639 val
* var_lin
/* var lin: Array[Object] */;
2640 val
* var3
/* : nullable POSet[Object] */;
2641 /* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingColorer#0] */
2642 /* <p0:Set[Object]> isa Set[TypingColorer#0] */
2643 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0
];
2644 cltype
= type_struct
->color
;
2645 idtype
= type_struct
->id
;
2646 if(cltype
>= p0
->type
->table_size
) {
2649 var1
= p0
->type
->type_table
[cltype
] == idtype
;
2652 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
2653 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Set[TypingColorer#0]", var_class_name
);
2654 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 369);
2658 var2
= NEW_array__Array(self
->type
->resolution_table
->types
[COLOR_array__Arraylayout_builders__TypingColorer_FT0
]);
2659 ((void (*)(val
*))(var2
->class->vft
[COLOR_array__Array__init
]))(var2
) /* init on <var2:Array[Object]>*/;
2661 ((void (*)(val
*, val
*))(var_lin
->class->vft
[COLOR_abstract_collection__SimpleCollection__add_all
]))(var_lin
, var_elements
) /* add_all on <var_lin:Array[Object]>*/;
2662 var3
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__poset
]))(self
) /* poset on <self:TypingColorer[Object]>*/;
2664 fprintf(stderr
, "Runtime error: %s", "Receiver is null");
2665 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 372);
2668 ((void (*)(val
*, val
*))(var3
->class->vft
[COLOR_sorter__AbstractSorter__sort
]))(var3
, var_lin
) /* sort on <var3:nullable POSet[Object]>*/;
2675 /* method layout_builders#TypingColorer#reverse_linearize for (self: Object, Set[Object]): Array[Object] */
2676 val
* VIRTUAL_layout_builders__TypingColorer__reverse_linearize(val
* self
, val
* p0
) {
2677 val
* var
/* : Array[Object] */;
2678 val
* var1
/* : Array[Object] */;
2679 var1
= layout_builders__TypingColorer__reverse_linearize(self
, p0
);
2684 /* method layout_builders#TypingColorer#linearize for (self: TypingColorer[Object], Set[Object]): Array[Object] */
2685 val
* layout_builders__TypingColorer__linearize(val
* self
, val
* p0
) {
2686 val
* var
/* : Array[Object] */;
2687 short int var1
/* : Bool */;
2690 const struct type
* type_struct
;
2691 const char* var_class_name
;
2692 val
* var_elements
/* var elements: Set[Object] */;
2693 val
* var2
/* : Array[Object] */;
2694 val
* var3
/* : Array[nullable Object] */;
2695 /* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingColorer#0] */
2696 /* <p0:Set[Object]> isa Set[TypingColorer#0] */
2697 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0
];
2698 cltype
= type_struct
->color
;
2699 idtype
= type_struct
->id
;
2700 if(cltype
>= p0
->type
->table_size
) {
2703 var1
= p0
->type
->type_table
[cltype
] == idtype
;
2706 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
2707 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Set[TypingColorer#0]", var_class_name
);
2708 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 375);
2712 var2
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__reverse_linearize
]))(self
, var_elements
) /* reverse_linearize on <self:TypingColorer[Object]>*/;
2713 var3
= ((val
* (*)(val
*))(var2
->class->vft
[COLOR_array__AbstractArrayRead__reversed
]))(var2
) /* reversed on <var2:Array[Object]>*/;
2719 /* method layout_builders#TypingColorer#linearize for (self: Object, Set[Object]): Array[Object] */
2720 val
* VIRTUAL_layout_builders__TypingColorer__linearize(val
* self
, val
* p0
) {
2721 val
* var
/* : Array[Object] */;
2722 val
* var1
/* : Array[Object] */;
2723 var1
= layout_builders__TypingColorer__linearize(self
, p0
);
2728 /* method layout_builders#MTypeColorer#init for (self: MTypeColorer, MModule) */
2729 void layout_builders__MTypeColorer__init(val
* self
, val
* p0
) {
2730 val
* var_mmodule
/* var mmodule: MModule */;
2731 val
* var
/* : MTypePOSetBuilder */;
2733 var
= NEW_layout_builders__MTypePOSetBuilder(&type_layout_builders__MTypePOSetBuilder
);
2734 ((void (*)(val
*, val
*))(var
->class->vft
[COLOR_layout_builders__POSetBuilder__init
]))(var
, var_mmodule
) /* init on <var:MTypePOSetBuilder>*/;
2735 ((void (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__init
]))(self
, var_mmodule
, var
) /* init on <self:MTypeColorer>*/;
2738 /* method layout_builders#MTypeColorer#init for (self: Object, MModule) */
2739 void VIRTUAL_layout_builders__MTypeColorer__init(val
* self
, val
* p0
) {
2740 layout_builders__MTypeColorer__init(self
, p0
);
2743 /* method layout_builders#MClassColorer#init for (self: MClassColorer, MModule) */
2744 void layout_builders__MClassColorer__init(val
* self
, val
* p0
) {
2745 val
* var_mmodule
/* var mmodule: MModule */;
2746 val
* var
/* : MClassPOSetBuilder */;
2748 var
= NEW_layout_builders__MClassPOSetBuilder(&type_layout_builders__MClassPOSetBuilder
);
2749 ((void (*)(val
*, val
*))(var
->class->vft
[COLOR_layout_builders__POSetBuilder__init
]))(var
, var_mmodule
) /* init on <var:MClassPOSetBuilder>*/;
2750 ((void (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingColorer__init
]))(self
, var_mmodule
, var
) /* init on <self:MClassColorer>*/;
2753 /* method layout_builders#MClassColorer#init for (self: Object, MModule) */
2754 void VIRTUAL_layout_builders__MClassColorer__init(val
* self
, val
* p0
) {
2755 layout_builders__MClassColorer__init(self
, p0
);
2758 /* method layout_builders#MPropertyColorer#mmodule for (self: MPropertyColorer[PropertyLayoutElement]): MModule */
2759 val
* layout_builders__MPropertyColorer__mmodule(val
* self
) {
2760 val
* var
/* : MModule */;
2761 val
* var1
/* : MModule */;
2762 var1
= self
->attrs
[COLOR_layout_builders__MPropertyColorer___64dmmodule
].val
; /* @mmodule on <self:MPropertyColorer[PropertyLayoutElement]> */
2764 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @mmodule");
2765 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 394);
2772 /* method layout_builders#MPropertyColorer#mmodule for (self: Object): MModule */
2773 val
* VIRTUAL_layout_builders__MPropertyColorer__mmodule(val
* self
) {
2774 val
* var
/* : MModule */;
2775 val
* var1
/* : MModule */;
2776 var1
= layout_builders__MPropertyColorer__mmodule(self
);
2781 /* method layout_builders#MPropertyColorer#mmodule= for (self: MPropertyColorer[PropertyLayoutElement], MModule) */
2782 void layout_builders__MPropertyColorer__mmodule_61d(val
* self
, val
* p0
) {
2783 self
->attrs
[COLOR_layout_builders__MPropertyColorer___64dmmodule
].val
= p0
; /* @mmodule on <self:MPropertyColorer[PropertyLayoutElement]> */
2786 /* method layout_builders#MPropertyColorer#mmodule= for (self: Object, MModule) */
2787 void VIRTUAL_layout_builders__MPropertyColorer__mmodule_61d(val
* self
, val
* p0
) {
2788 layout_builders__MPropertyColorer__mmodule_61d(self
, p0
);
2791 /* method layout_builders#MPropertyColorer#class_colorer for (self: MPropertyColorer[PropertyLayoutElement]): MClassColorer */
2792 val
* layout_builders__MPropertyColorer__class_colorer(val
* self
) {
2793 val
* var
/* : MClassColorer */;
2794 val
* var1
/* : MClassColorer */;
2795 var1
= self
->attrs
[COLOR_layout_builders__MPropertyColorer___64dclass_colorer
].val
; /* @class_colorer on <self:MPropertyColorer[PropertyLayoutElement]> */
2797 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @class_colorer");
2798 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 395);
2805 /* method layout_builders#MPropertyColorer#class_colorer for (self: Object): MClassColorer */
2806 val
* VIRTUAL_layout_builders__MPropertyColorer__class_colorer(val
* self
) {
2807 val
* var
/* : MClassColorer */;
2808 val
* var1
/* : MClassColorer */;
2809 var1
= layout_builders__MPropertyColorer__class_colorer(self
);
2814 /* method layout_builders#MPropertyColorer#class_colorer= for (self: MPropertyColorer[PropertyLayoutElement], MClassColorer) */
2815 void layout_builders__MPropertyColorer__class_colorer_61d(val
* self
, val
* p0
) {
2816 self
->attrs
[COLOR_layout_builders__MPropertyColorer___64dclass_colorer
].val
= p0
; /* @class_colorer on <self:MPropertyColorer[PropertyLayoutElement]> */
2819 /* method layout_builders#MPropertyColorer#class_colorer= for (self: Object, MClassColorer) */
2820 void VIRTUAL_layout_builders__MPropertyColorer__class_colorer_61d(val
* self
, val
* p0
) {
2821 layout_builders__MPropertyColorer__class_colorer_61d(self
, p0
);
2824 /* method layout_builders#MPropertyColorer#coloration_result for (self: MPropertyColorer[PropertyLayoutElement]): Map[PropertyLayoutElement, Int] */
2825 val
* layout_builders__MPropertyColorer__coloration_result(val
* self
) {
2826 val
* var
/* : Map[PropertyLayoutElement, Int] */;
2827 val
* var1
/* : Map[PropertyLayoutElement, Int] */;
2828 var1
= self
->attrs
[COLOR_layout_builders__MPropertyColorer___64dcoloration_result
].val
; /* @coloration_result on <self:MPropertyColorer[PropertyLayoutElement]> */
2830 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @coloration_result");
2831 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 396);
2838 /* method layout_builders#MPropertyColorer#coloration_result for (self: Object): Map[PropertyLayoutElement, Int] */
2839 val
* VIRTUAL_layout_builders__MPropertyColorer__coloration_result(val
* self
) {
2840 val
* var
/* : Map[PropertyLayoutElement, Int] */;
2841 val
* var1
/* : Map[PropertyLayoutElement, Int] */;
2842 var1
= layout_builders__MPropertyColorer__coloration_result(self
);
2847 /* method layout_builders#MPropertyColorer#coloration_result= for (self: MPropertyColorer[PropertyLayoutElement], Map[PropertyLayoutElement, Int]) */
2848 void layout_builders__MPropertyColorer__coloration_result_61d(val
* self
, val
* p0
) {
2849 short int var
/* : Bool */;
2852 const struct type
* type_struct
;
2853 const char* var_class_name
;
2854 /* Covariant cast for argument 0 (coloration_result) <p0:Map[PropertyLayoutElement, Int]> isa Map[MPropertyColorer#0, Int] */
2855 /* <p0:Map[PropertyLayoutElement, Int]> isa Map[MPropertyColorer#0, Int] */
2856 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Maplayout_builders__MPropertyColorer_FT0kernel__Int
];
2857 cltype
= type_struct
->color
;
2858 idtype
= type_struct
->id
;
2859 if(cltype
>= p0
->type
->table_size
) {
2862 var
= p0
->type
->type_table
[cltype
] == idtype
;
2865 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
2866 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[MPropertyColorer#0, Int]", var_class_name
);
2867 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 396);
2870 self
->attrs
[COLOR_layout_builders__MPropertyColorer___64dcoloration_result
].val
= p0
; /* @coloration_result on <self:MPropertyColorer[PropertyLayoutElement]> */
2873 /* method layout_builders#MPropertyColorer#coloration_result= for (self: Object, Map[PropertyLayoutElement, Int]) */
2874 void VIRTUAL_layout_builders__MPropertyColorer__coloration_result_61d(val
* self
, val
* p0
) {
2875 layout_builders__MPropertyColorer__coloration_result_61d(self
, p0
);
2878 /* method layout_builders#MPropertyColorer#init for (self: MPropertyColorer[PropertyLayoutElement], MModule, MClassColorer) */
2879 void layout_builders__MPropertyColorer__init(val
* self
, val
* p0
, val
* p1
) {
2880 val
* var_mmodule
/* var mmodule: MModule */;
2881 val
* var_class_colorer
/* var class_colorer: MClassColorer */;
2883 var_class_colorer
= p1
;
2884 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__mmodule_61d
]))(self
, var_mmodule
) /* mmodule= on <self:MPropertyColorer[PropertyLayoutElement]>*/;
2885 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__class_colorer_61d
]))(self
, var_class_colorer
) /* class_colorer= on <self:MPropertyColorer[PropertyLayoutElement]>*/;
2888 /* method layout_builders#MPropertyColorer#init for (self: Object, MModule, MClassColorer) */
2889 void VIRTUAL_layout_builders__MPropertyColorer__init(val
* self
, val
* p0
, val
* p1
) {
2890 layout_builders__MPropertyColorer__init(self
, p0
, p1
);
2893 /* method layout_builders#MPropertyColorer#build_layout for (self: MPropertyColorer[PropertyLayoutElement], Map[MClass, Set[PropertyLayoutElement]]): Layout[PropertyLayoutElement] */
2894 val
* layout_builders__MPropertyColorer__build_layout(val
* self
, val
* p0
) {
2895 val
* var
/* : Layout[PropertyLayoutElement] */;
2896 short int var1
/* : Bool */;
2899 const struct type
* type_struct
;
2900 const char* var_class_name
;
2901 val
* var_elements
/* var elements: Map[MClass, Set[PropertyLayoutElement]] */;
2902 val
* var2
/* : Layout[PropertyLayoutElement] */;
2903 val
* var_result
/* var result: Layout[PropertyLayoutElement] */;
2904 val
* var3
/* : Map[PropertyLayoutElement, Int] */;
2905 /* Covariant cast for argument 0 (elements) <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
2906 /* <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
2907 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Mapmodel__MClassabstract_collection__Setlayout_builders__MPropertyColorer_FT0
];
2908 cltype
= type_struct
->color
;
2909 idtype
= type_struct
->id
;
2910 if(cltype
>= p0
->type
->table_size
) {
2913 var1
= p0
->type
->type_table
[cltype
] == idtype
;
2916 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
2917 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[MClass, Set[MPropertyColorer#0]]", var_class_name
);
2918 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 403);
2922 var2
= NEW_layout_builders__Layout(self
->type
->resolution_table
->types
[COLOR_layout_builders__Layoutlayout_builders__MPropertyColorer_FT0
]);
2923 ((void (*)(val
*))(var2
->class->vft
[COLOR_layout_builders__Layout__init
]))(var2
) /* init on <var2:Layout[PropertyLayoutElement]>*/;
2925 var3
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__colorize
]))(self
, var_elements
) /* colorize on <self:MPropertyColorer[PropertyLayoutElement]>*/;
2926 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__pos_61d
]))(var_result
, var3
) /* pos= on <var_result:Layout[PropertyLayoutElement]>*/;
2932 /* method layout_builders#MPropertyColorer#build_layout for (self: Object, Map[MClass, Set[PropertyLayoutElement]]): Layout[PropertyLayoutElement] */
2933 val
* VIRTUAL_layout_builders__MPropertyColorer__build_layout(val
* self
, val
* p0
) {
2934 val
* var
/* : Layout[PropertyLayoutElement] */;
2935 val
* var1
/* : Layout[PropertyLayoutElement] */;
2936 var1
= layout_builders__MPropertyColorer__build_layout(self
, p0
);
2941 /* method layout_builders#MPropertyColorer#colorize for (self: MPropertyColorer[PropertyLayoutElement], Map[MClass, Set[PropertyLayoutElement]]): Map[PropertyLayoutElement, Int] */
2942 val
* layout_builders__MPropertyColorer__colorize(val
* self
, val
* p0
) {
2943 val
* var
/* : Map[PropertyLayoutElement, Int] */;
2944 short int var1
/* : Bool */;
2947 const struct type
* type_struct
;
2948 const char* var_class_name
;
2949 val
* var_elements
/* var elements: Map[MClass, Set[PropertyLayoutElement]] */;
2950 val
* var2
/* : Map[PropertyLayoutElement, Int] */;
2951 /* Covariant cast for argument 0 (elements) <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
2952 /* <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
2953 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Mapmodel__MClassabstract_collection__Setlayout_builders__MPropertyColorer_FT0
];
2954 cltype
= type_struct
->color
;
2955 idtype
= type_struct
->id
;
2956 if(cltype
>= p0
->type
->table_size
) {
2959 var1
= p0
->type
->type_table
[cltype
] == idtype
;
2962 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
2963 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[MClass, Set[MPropertyColorer#0]]", var_class_name
);
2964 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 410);
2968 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__colorize_core
]))(self
, var_elements
) /* colorize_core on <self:MPropertyColorer[PropertyLayoutElement]>*/;
2969 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__colorize_crown
]))(self
, var_elements
) /* colorize_crown on <self:MPropertyColorer[PropertyLayoutElement]>*/;
2970 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__coloration_result
]))(self
) /* coloration_result on <self:MPropertyColorer[PropertyLayoutElement]>*/;
2976 /* method layout_builders#MPropertyColorer#colorize for (self: Object, Map[MClass, Set[PropertyLayoutElement]]): Map[PropertyLayoutElement, Int] */
2977 val
* VIRTUAL_layout_builders__MPropertyColorer__colorize(val
* self
, val
* p0
) {
2978 val
* var
/* : Map[PropertyLayoutElement, Int] */;
2979 val
* var1
/* : Map[PropertyLayoutElement, Int] */;
2980 var1
= layout_builders__MPropertyColorer__colorize(self
, p0
);
2985 /* method layout_builders#MPropertyColorer#colorize_core for (self: MPropertyColorer[PropertyLayoutElement], Map[MClass, Set[PropertyLayoutElement]]) */
2986 void layout_builders__MPropertyColorer__colorize_core(val
* self
, val
* p0
) {
2987 short int var
/* : Bool */;
2990 const struct type
* type_struct
;
2991 const char* var_class_name
;
2992 val
* var_elements
/* var elements: Map[MClass, Set[PropertyLayoutElement]] */;
2993 long var1
/* : Int */;
2994 long var_min_color
/* var min_color: Int */;
2995 val
* var2
/* : MClassColorer */;
2996 val
* var3
/* : Set[Object] */;
2997 val
* var4
/* : Iterator[nullable Object] */;
2998 short int var5
/* : Bool */;
2999 val
* var6
/* : nullable Object */;
3000 val
* var_mclass
/* var mclass: MClass */;
3001 long var_color
/* var color: Int */;
3002 val
* var7
/* : MModule */;
3003 val
* var8
/* : POSetElement[MClass] */;
3004 val
* var9
/* : Collection[Object] */;
3005 long var10
/* : Int */;
3006 val
* var11
/* : MClassColorer */;
3007 val
* var12
/* : nullable HashMap[Object, Set[Object]] */;
3008 short int var13
/* : Bool */;
3009 val
* var14
/* : MClassColorer */;
3010 val
* var15
/* : nullable HashMap[Object, Set[Object]] */;
3011 val
* var16
/* : nullable Object */;
3012 long var17
/* : Int */;
3013 val
* var18
/* : nullable Object */;
3014 /* Covariant cast for argument 0 (elements) <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
3015 /* <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
3016 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Mapmodel__MClassabstract_collection__Setlayout_builders__MPropertyColorer_FT0
];
3017 cltype
= type_struct
->color
;
3018 idtype
= type_struct
->id
;
3019 if(cltype
>= p0
->type
->table_size
) {
3022 var
= p0
->type
->type_table
[cltype
] == idtype
;
3025 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
3026 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[MClass, Set[MPropertyColorer#0]]", var_class_name
);
3027 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 416);
3032 var_min_color
= var1
;
3033 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__class_colorer
]))(self
) /* class_colorer on <self:MPropertyColorer[PropertyLayoutElement]>*/;
3034 var3
= ((val
* (*)(val
*))(var2
->class->vft
[COLOR_layout_builders__TypingColorer__core
]))(var2
) /* core on <var2:MClassColorer>*/;
3035 var4
= ((val
* (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var3
) /* iterator on <var3:Set[Object](Set[MClass])>*/;
3037 var5
= ((short int (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var4
) /* is_ok on <var4:Iterator[nullable Object]>*/;
3039 var6
= ((val
* (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var4
) /* item on <var4:Iterator[nullable Object]>*/;
3041 var_color
= var_min_color
;
3042 var7
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__mmodule
]))(self
) /* mmodule on <self:MPropertyColorer[PropertyLayoutElement]>*/;
3043 var8
= ((val
* (*)(val
*, val
*))(var_mclass
->class->vft
[COLOR_model__MClass__in_hierarchy
]))(var_mclass
, var7
) /* in_hierarchy on <var_mclass:MClass>*/;
3044 var9
= ((val
* (*)(val
*))(var8
->class->vft
[COLOR_poset__POSetElement__direct_greaters
]))(var8
) /* direct_greaters on <var8:POSetElement[MClass]>*/;
3045 var10
= ((long (*)(val
*, long, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__max_color
]))(self
, var_color
, var9
, var_elements
) /* max_color on <self:MPropertyColorer[PropertyLayoutElement]>*/;
3047 var11
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__class_colorer
]))(self
) /* class_colorer on <self:MPropertyColorer[PropertyLayoutElement]>*/;
3048 var12
= ((val
* (*)(val
*))(var11
->class->vft
[COLOR_layout_builders__TypingColorer__conflicts_graph
]))(var11
) /* conflicts_graph on <var11:MClassColorer>*/;
3049 if (var12
== NULL
) {
3050 fprintf(stderr
, "Runtime error: %s", "Receiver is null");
3051 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 424);
3054 var13
= ((short int (*)(val
*, val
*))(var12
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var12
, var_mclass
) /* has_key on <var12:nullable HashMap[Object, Set[Object]](nullable HashMap[MClass, Set[MClass]])>*/;
3057 var14
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__class_colorer
]))(self
) /* class_colorer on <self:MPropertyColorer[PropertyLayoutElement]>*/;
3058 var15
= ((val
* (*)(val
*))(var14
->class->vft
[COLOR_layout_builders__TypingColorer__conflicts_graph
]))(var14
) /* conflicts_graph on <var14:MClassColorer>*/;
3059 if (var15
== NULL
) {
3060 fprintf(stderr
, "Runtime error: %s", "Receiver is null");
3061 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 425);
3064 var16
= ((val
* (*)(val
*, val
*))(var15
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var15
, var_mclass
) /* [] on <var15:nullable HashMap[Object, Set[Object]](nullable HashMap[MClass, Set[MClass]])>*/;
3066 var17
= ((long (*)(val
*, long, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__max_color
]))(self
, var_color
, var16
, var_elements
) /* max_color on <self:MPropertyColorer[PropertyLayoutElement]>*/;
3070 var18
= ((val
* (*)(val
*, val
*))(var_elements
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var_elements
, var_mclass
) /* [] on <var_elements:Map[MClass, Set[PropertyLayoutElement]]>*/;
3071 ((void (*)(val
*, val
*, long))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__colorize_elements
]))(self
, var18
, var_color
) /* colorize_elements on <self:MPropertyColorer[PropertyLayoutElement]>*/;
3072 CONTINUE_label
: (void)0;
3073 ((void (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var4
) /* next on <var4:Iterator[nullable Object]>*/;
3075 BREAK_label
: (void)0;
3078 /* method layout_builders#MPropertyColorer#colorize_core for (self: Object, Map[MClass, Set[PropertyLayoutElement]]) */
3079 void VIRTUAL_layout_builders__MPropertyColorer__colorize_core(val
* self
, val
* p0
) {
3080 layout_builders__MPropertyColorer__colorize_core(self
, p0
);
3083 /* method layout_builders#MPropertyColorer#colorize_crown for (self: MPropertyColorer[PropertyLayoutElement], Map[MClass, Set[PropertyLayoutElement]]) */
3084 void layout_builders__MPropertyColorer__colorize_crown(val
* self
, val
* p0
) {
3085 short int var
/* : Bool */;
3088 const struct type
* type_struct
;
3089 const char* var_class_name
;
3090 val
* var_elements
/* var elements: Map[MClass, Set[PropertyLayoutElement]] */;
3091 val
* var1
/* : MClassColorer */;
3092 val
* var2
/* : Set[Object] */;
3093 val
* var3
/* : Iterator[nullable Object] */;
3094 short int var4
/* : Bool */;
3095 val
* var5
/* : nullable Object */;
3096 val
* var_mclass
/* var mclass: MClass */;
3097 val
* var6
/* : HashSet[MClass] */;
3098 val
* var_parents
/* var parents: HashSet[MClass] */;
3099 val
* var7
/* : MModule */;
3100 val
* var8
/* : POSet[MClass] */;
3101 short int var9
/* : Bool */;
3102 val
* var10
/* : MModule */;
3103 val
* var11
/* : POSetElement[MClass] */;
3104 val
* var12
/* : Collection[Object] */;
3105 val
* var13
/* : nullable Object */;
3106 long var14
/* : Int */;
3107 long var15
/* : Int */;
3108 /* Covariant cast for argument 0 (elements) <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
3109 /* <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
3110 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Mapmodel__MClassabstract_collection__Setlayout_builders__MPropertyColorer_FT0
];
3111 cltype
= type_struct
->color
;
3112 idtype
= type_struct
->id
;
3113 if(cltype
>= p0
->type
->table_size
) {
3116 var
= p0
->type
->type_table
[cltype
] == idtype
;
3119 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
3120 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[MClass, Set[MPropertyColorer#0]]", var_class_name
);
3121 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 431);
3125 var1
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__class_colorer
]))(self
) /* class_colorer on <self:MPropertyColorer[PropertyLayoutElement]>*/;
3126 var2
= ((val
* (*)(val
*))(var1
->class->vft
[COLOR_layout_builders__TypingColorer__crown
]))(var1
) /* crown on <var1:MClassColorer>*/;
3127 var3
= ((val
* (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var2
) /* iterator on <var2:Set[Object](Set[MClass])>*/;
3129 var4
= ((short int (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var3
) /* is_ok on <var3:Iterator[nullable Object]>*/;
3131 var5
= ((val
* (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var3
) /* item on <var3:Iterator[nullable Object]>*/;
3133 var6
= NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClass
);
3134 ((void (*)(val
*))(var6
->class->vft
[COLOR_hash_collection__HashSet__init
]))(var6
) /* init on <var6:HashSet[MClass]>*/;
3136 var7
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__mmodule
]))(self
) /* mmodule on <self:MPropertyColorer[PropertyLayoutElement]>*/;
3137 var8
= ((val
* (*)(val
*))(var7
->class->vft
[COLOR_model__MModule__flatten_mclass_hierarchy
]))(var7
) /* flatten_mclass_hierarchy on <var7:MModule>*/;
3138 var9
= ((short int (*)(val
*, val
*))(var8
->class->vft
[COLOR_abstract_collection__Collection__has
]))(var8
, var_mclass
) /* has on <var8:POSet[MClass]>*/;
3140 var10
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__mmodule
]))(self
) /* mmodule on <self:MPropertyColorer[PropertyLayoutElement]>*/;
3141 var11
= ((val
* (*)(val
*, val
*))(var_mclass
->class->vft
[COLOR_model__MClass__in_hierarchy
]))(var_mclass
, var10
) /* in_hierarchy on <var_mclass:MClass>*/;
3142 var12
= ((val
* (*)(val
*))(var11
->class->vft
[COLOR_poset__POSetElement__direct_greaters
]))(var11
) /* direct_greaters on <var11:POSetElement[MClass]>*/;
3143 ((void (*)(val
*, val
*))(var_parents
->class->vft
[COLOR_abstract_collection__SimpleCollection__add_all
]))(var_parents
, var12
) /* add_all on <var_parents:HashSet[MClass]>*/;
3146 var13
= ((val
* (*)(val
*, val
*))(var_elements
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var_elements
, var_mclass
) /* [] on <var_elements:Map[MClass, Set[PropertyLayoutElement]]>*/;
3148 var15
= ((long (*)(val
*, long, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__max_color
]))(self
, var14
, var_parents
, var_elements
) /* max_color on <self:MPropertyColorer[PropertyLayoutElement]>*/;
3149 ((void (*)(val
*, val
*, long))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__colorize_elements
]))(self
, var13
, var15
) /* colorize_elements on <self:MPropertyColorer[PropertyLayoutElement]>*/;
3150 CONTINUE_label
: (void)0;
3151 ((void (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var3
) /* next on <var3:Iterator[nullable Object]>*/;
3153 BREAK_label
: (void)0;
3156 /* method layout_builders#MPropertyColorer#colorize_crown for (self: Object, Map[MClass, Set[PropertyLayoutElement]]) */
3157 void VIRTUAL_layout_builders__MPropertyColorer__colorize_crown(val
* self
, val
* p0
) {
3158 layout_builders__MPropertyColorer__colorize_crown(self
, p0
);
3161 /* method layout_builders#MPropertyColorer#colorize_elements for (self: MPropertyColorer[PropertyLayoutElement], Collection[PropertyLayoutElement], Int) */
3162 void layout_builders__MPropertyColorer__colorize_elements(val
* self
, val
* p0
, long p1
) {
3163 short int var
/* : Bool */;
3166 const struct type
* type_struct
;
3167 const char* var_class_name
;
3168 val
* var_elements
/* var elements: Collection[PropertyLayoutElement] */;
3169 long var_start_color
/* var start_color: Int */;
3170 val
* var1
/* : Iterator[nullable Object] */;
3171 short int var2
/* : Bool */;
3172 val
* var3
/* : nullable Object */;
3173 val
* var_element
/* var element: PropertyLayoutElement */;
3174 val
* var4
/* : Map[PropertyLayoutElement, Int] */;
3175 short int var5
/* : Bool */;
3176 val
* var6
/* : Map[PropertyLayoutElement, Int] */;
3177 val
* var7
/* : nullable Object */;
3178 long var8
/* : Int */;
3179 long var9
/* : Int */;
3180 long var11
/* : Int */;
3181 /* Covariant cast for argument 0 (elements) <p0:Collection[PropertyLayoutElement]> isa Collection[MPropertyColorer#0] */
3182 /* <p0:Collection[PropertyLayoutElement]> isa Collection[MPropertyColorer#0] */
3183 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Collectionlayout_builders__MPropertyColorer_FT0
];
3184 cltype
= type_struct
->color
;
3185 idtype
= type_struct
->id
;
3186 if(cltype
>= p0
->type
->table_size
) {
3189 var
= p0
->type
->type_table
[cltype
] == idtype
;
3192 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
3193 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[MPropertyColorer#0]", var_class_name
);
3194 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 442);
3198 var_start_color
= p1
;
3199 var1
= ((val
* (*)(val
*))(var_elements
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_elements
) /* iterator on <var_elements:Collection[PropertyLayoutElement]>*/;
3201 var2
= ((short int (*)(val
*))(var1
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var1
) /* is_ok on <var1:Iterator[nullable Object]>*/;
3203 var3
= ((val
* (*)(val
*))(var1
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var1
) /* item on <var1:Iterator[nullable Object]>*/;
3205 var4
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__coloration_result
]))(self
) /* coloration_result on <self:MPropertyColorer[PropertyLayoutElement]>*/;
3206 var5
= ((short int (*)(val
*, val
*))(var4
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var4
, var_element
) /* has_key on <var4:Map[PropertyLayoutElement, Int]>*/;
3208 goto CONTINUE_label
;
3211 var6
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__coloration_result
]))(self
) /* coloration_result on <self:MPropertyColorer[PropertyLayoutElement]>*/;
3212 var7
= BOX_kernel__Int(var_start_color
); /* autobox from Int to nullable Object */
3213 ((void (*)(val
*, val
*, val
*))(var6
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var6
, var_element
, var7
) /* []= on <var6:Map[PropertyLayoutElement, Int]>*/;
3215 { /* Inline kernel#Int#+ (var_start_color,var8) */
3216 var11
= var_start_color
+ var8
;
3219 RET_LABEL10
:(void)0;
3221 var_start_color
= var9
;
3222 CONTINUE_label
: (void)0;
3223 ((void (*)(val
*))(var1
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var1
) /* next on <var1:Iterator[nullable Object]>*/;
3225 BREAK_label
: (void)0;
3228 /* method layout_builders#MPropertyColorer#colorize_elements for (self: Object, Collection[PropertyLayoutElement], Int) */
3229 void VIRTUAL_layout_builders__MPropertyColorer__colorize_elements(val
* self
, val
* p0
, long p1
) {
3230 layout_builders__MPropertyColorer__colorize_elements(self
, p0
, p1
);
3233 /* method layout_builders#MPropertyColorer#max_color for (self: MPropertyColorer[PropertyLayoutElement], Int, Collection[MClass], Map[MClass, Set[PropertyLayoutElement]]): Int */
3234 long layout_builders__MPropertyColorer__max_color(val
* self
, long p0
, val
* p1
, val
* p2
) {
3235 long var
/* : Int */;
3236 short int var1
/* : Bool */;
3239 const struct type
* type_struct
;
3240 const char* var_class_name
;
3241 long var_min_color
/* var min_color: Int */;
3242 val
* var_mclasses
/* var mclasses: Collection[MClass] */;
3243 val
* var_elements
/* var elements: Map[MClass, Set[PropertyLayoutElement]] */;
3244 long var_max_color
/* var max_color: Int */;
3245 val
* var2
/* : Iterator[nullable Object] */;
3246 short int var3
/* : Bool */;
3247 val
* var4
/* : nullable Object */;
3248 val
* var_mclass
/* var mclass: MClass */;
3249 val
* var5
/* : nullable Object */;
3250 val
* var6
/* : Iterator[nullable Object] */;
3251 short int var7
/* : Bool */;
3252 val
* var8
/* : nullable Object */;
3253 val
* var_mproperty
/* var mproperty: PropertyLayoutElement */;
3254 long var_color
/* var color: Int */;
3255 val
* var9
/* : Map[PropertyLayoutElement, Int] */;
3256 short int var10
/* : Bool */;
3257 val
* var11
/* : Map[PropertyLayoutElement, Int] */;
3258 val
* var12
/* : nullable Object */;
3259 long var13
/* : Int */;
3260 short int var14
/* : Bool */;
3261 short int var16
/* : Bool */;
3264 const char* var_class_name19
;
3265 short int var20
/* : Bool */;
3266 long var21
/* : Int */;
3267 long var22
/* : Int */;
3268 long var24
/* : Int */;
3269 /* Covariant cast for argument 2 (elements) <p2:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
3270 /* <p2:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
3271 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Mapmodel__MClassabstract_collection__Setlayout_builders__MPropertyColorer_FT0
];
3272 cltype
= type_struct
->color
;
3273 idtype
= type_struct
->id
;
3274 if(cltype
>= p2
->type
->table_size
) {
3277 var1
= p2
->type
->type_table
[cltype
] == idtype
;
3280 var_class_name
= p2
== NULL ?
"null" : p2
->type
->name
;
3281 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[MClass, Set[MPropertyColorer#0]]", var_class_name
);
3282 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 451);
3288 var_max_color
= var_min_color
;
3289 var2
= ((val
* (*)(val
*))(var_mclasses
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_mclasses
) /* iterator on <var_mclasses:Collection[MClass]>*/;
3291 var3
= ((short int (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var2
) /* is_ok on <var2:Iterator[nullable Object]>*/;
3293 var4
= ((val
* (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var2
) /* item on <var2:Iterator[nullable Object]>*/;
3295 var5
= ((val
* (*)(val
*, val
*))(var_elements
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var_elements
, var_mclass
) /* [] on <var_elements:Map[MClass, Set[PropertyLayoutElement]]>*/;
3296 var6
= ((val
* (*)(val
*))(var5
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var5
) /* iterator on <var5:nullable Object(Set[PropertyLayoutElement])>*/;
3298 var7
= ((short int (*)(val
*))(var6
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var6
) /* is_ok on <var6:Iterator[nullable Object]>*/;
3300 var8
= ((val
* (*)(val
*))(var6
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var6
) /* item on <var6:Iterator[nullable Object]>*/;
3301 var_mproperty
= var8
;
3302 var_color
= var_min_color
;
3303 var9
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__coloration_result
]))(self
) /* coloration_result on <self:MPropertyColorer[PropertyLayoutElement]>*/;
3304 var10
= ((short int (*)(val
*, val
*))(var9
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var9
, var_mproperty
) /* has_key on <var9:Map[PropertyLayoutElement, Int]>*/;
3306 var11
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyColorer__coloration_result
]))(self
) /* coloration_result on <self:MPropertyColorer[PropertyLayoutElement]>*/;
3307 var12
= ((val
* (*)(val
*, val
*))(var11
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var11
, var_mproperty
) /* [] on <var11:Map[PropertyLayoutElement, Int]>*/;
3308 var13
= ((struct instance_kernel__Int
*)var12
)->value
; /* autounbox from nullable Object to Int */;
3310 { /* Inline kernel#Int#>= (var_color,var_max_color) */
3311 /* Covariant cast for argument 0 (i) <var_max_color:Int> isa OTHER */
3312 /* <var_max_color:Int> isa OTHER */
3313 var16
= 1; /* easy <var_max_color:Int> isa OTHER*/
3315 var_class_name19
= type_kernel__Int
.name
;
3316 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name19
);
3317 fprintf(stderr
, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
3320 var20
= var_color
>= var_max_color
;
3323 RET_LABEL15
:(void)0;
3327 { /* Inline kernel#Int#+ (var_color,var21) */
3328 var24
= var_color
+ var21
;
3331 RET_LABEL23
:(void)0;
3333 var_max_color
= var22
;
3338 CONTINUE_label
: (void)0;
3339 ((void (*)(val
*))(var6
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var6
) /* next on <var6:Iterator[nullable Object]>*/;
3341 BREAK_label
: (void)0;
3342 CONTINUE_label25
: (void)0;
3343 ((void (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var2
) /* next on <var2:Iterator[nullable Object]>*/;
3345 BREAK_label25
: (void)0;
3346 var
= var_max_color
;
3351 /* method layout_builders#MPropertyColorer#max_color for (self: Object, Int, Collection[MClass], Map[MClass, Set[PropertyLayoutElement]]): Int */
3352 long VIRTUAL_layout_builders__MPropertyColorer__max_color(val
* self
, long p0
, val
* p1
, val
* p2
) {
3353 long var
/* : Int */;
3354 long var1
/* : Int */;
3355 var1
= layout_builders__MPropertyColorer__max_color(self
, p0
, p1
, p2
);
3360 /* method layout_builders#ResolutionColorer#coloration_result for (self: ResolutionColorer): Map[MType, Int] */
3361 val
* layout_builders__ResolutionColorer__coloration_result(val
* self
) {
3362 val
* var
/* : Map[MType, Int] */;
3363 val
* var1
/* : Map[MType, Int] */;
3364 var1
= self
->attrs
[COLOR_layout_builders__ResolutionColorer___64dcoloration_result
].val
; /* @coloration_result on <self:ResolutionColorer> */
3366 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @coloration_result");
3367 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 471);
3374 /* method layout_builders#ResolutionColorer#coloration_result for (self: Object): Map[MType, Int] */
3375 val
* VIRTUAL_layout_builders__ResolutionColorer__coloration_result(val
* self
) {
3376 val
* var
/* : Map[MType, Int] */;
3377 val
* var1
/* : Map[MType, Int] */;
3378 var1
= layout_builders__ResolutionColorer__coloration_result(self
);
3383 /* method layout_builders#ResolutionColorer#coloration_result= for (self: ResolutionColorer, Map[MType, Int]) */
3384 void layout_builders__ResolutionColorer__coloration_result_61d(val
* self
, val
* p0
) {
3385 self
->attrs
[COLOR_layout_builders__ResolutionColorer___64dcoloration_result
].val
= p0
; /* @coloration_result on <self:ResolutionColorer> */
3388 /* method layout_builders#ResolutionColorer#coloration_result= for (self: Object, Map[MType, Int]) */
3389 void VIRTUAL_layout_builders__ResolutionColorer__coloration_result_61d(val
* self
, val
* p0
) {
3390 layout_builders__ResolutionColorer__coloration_result_61d(self
, p0
);
3393 /* method layout_builders#ResolutionColorer#init for (self: ResolutionColorer) */
3394 void layout_builders__ResolutionColorer__init(val
* self
) {
3397 /* method layout_builders#ResolutionColorer#init for (self: Object) */
3398 void VIRTUAL_layout_builders__ResolutionColorer__init(val
* self
) {
3399 layout_builders__ResolutionColorer__init(self
);
3402 /* method layout_builders#ResolutionColorer#build_layout for (self: ResolutionColorer, Map[MClassType, Set[MType]]): Layout[MType] */
3403 val
* layout_builders__ResolutionColorer__build_layout(val
* self
, val
* p0
) {
3404 val
* var
/* : Layout[MType] */;
3405 val
* var_elements
/* var elements: Map[MClassType, Set[MType]] */;
3406 val
* var1
/* : Layout[MType] */;
3407 val
* var_result
/* var result: Layout[MType] */;
3408 val
* var2
/* : Map[MType, Int] */;
3409 val
* var3
/* : Map[MType, Int] */;
3411 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__build_conflicts_graph
]))(self
, var_elements
) /* build_conflicts_graph on <self:ResolutionColorer>*/;
3412 var1
= NEW_layout_builders__Layout(&type_layout_builders__Layoutmodel__MType
);
3413 ((void (*)(val
*))(var1
->class->vft
[COLOR_layout_builders__Layout__init
]))(var1
) /* init on <var1:Layout[MType]>*/;
3415 var2
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__compute_ids
]))(self
, var_elements
) /* compute_ids on <self:ResolutionColorer>*/;
3416 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__ids_61d
]))(var_result
, var2
) /* ids= on <var_result:Layout[MType]>*/;
3417 var3
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__colorize_elements
]))(self
, var_elements
) /* colorize_elements on <self:ResolutionColorer>*/;
3418 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__pos_61d
]))(var_result
, var3
) /* pos= on <var_result:Layout[MType]>*/;
3424 /* method layout_builders#ResolutionColorer#build_layout for (self: Object, Map[MClassType, Set[MType]]): Layout[MType] */
3425 val
* VIRTUAL_layout_builders__ResolutionColorer__build_layout(val
* self
, val
* p0
) {
3426 val
* var
/* : Layout[MType] */;
3427 val
* var1
/* : Layout[MType] */;
3428 var1
= layout_builders__ResolutionColorer__build_layout(self
, p0
);
3433 /* method layout_builders#ResolutionColorer#compute_ids for (self: ResolutionColorer, Map[MClassType, Set[MType]]): Map[MType, Int] */
3434 val
* layout_builders__ResolutionColorer__compute_ids(val
* self
, val
* p0
) {
3435 val
* var
/* : Map[MType, Int] */;
3436 val
* var_elements
/* var elements: Map[MClassType, Set[MType]] */;
3437 val
* var1
/* : HashMap[MType, Int] */;
3438 val
* var_ids
/* var ids: HashMap[MType, Int] */;
3439 long var2
/* : Int */;
3440 long var_color
/* var color: Int */;
3441 val
* var3
/* : MapIterator[Object, nullable Object] */;
3442 short int var4
/* : Bool */;
3443 val
* var5
/* : Object */;
3444 val
* var_mclasstype
/* var mclasstype: MClassType */;
3445 val
* var6
/* : nullable Object */;
3446 val
* var_mclasstypes
/* var mclasstypes: Set[MType] */;
3447 val
* var7
/* : Iterator[nullable Object] */;
3448 short int var8
/* : Bool */;
3449 val
* var9
/* : nullable Object */;
3450 val
* var_element
/* var element: MType */;
3451 short int var10
/* : Bool */;
3452 val
* var11
/* : nullable Object */;
3453 long var12
/* : Int */;
3454 long var13
/* : Int */;
3455 long var15
/* : Int */;
3457 var1
= NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MTypekernel__Int
);
3458 ((void (*)(val
*))(var1
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var1
) /* init on <var1:HashMap[MType, Int]>*/;
3462 var3
= ((val
* (*)(val
*))(var_elements
->class->vft
[COLOR_abstract_collection__MapRead__iterator
]))(var_elements
) /* iterator on <var_elements:Map[MClassType, Set[MType]]>*/;
3464 var4
= ((short int (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__MapIterator__is_ok
]))(var3
) /* is_ok on <var3:MapIterator[Object, nullable Object]>*/;
3466 var5
= ((val
* (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__MapIterator__key
]))(var3
) /* key on <var3:MapIterator[Object, nullable Object]>*/;
3467 var_mclasstype
= var5
;
3468 var6
= ((val
* (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__MapIterator__item
]))(var3
) /* item on <var3:MapIterator[Object, nullable Object]>*/;
3469 var_mclasstypes
= var6
;
3470 var7
= ((val
* (*)(val
*))(var_mclasstypes
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_mclasstypes
) /* iterator on <var_mclasstypes:Set[MType]>*/;
3472 var8
= ((short int (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var7
) /* is_ok on <var7:Iterator[nullable Object]>*/;
3474 var9
= ((val
* (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var7
) /* item on <var7:Iterator[nullable Object]>*/;
3476 var10
= ((short int (*)(val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var_ids
, var_element
) /* has_key on <var_ids:HashMap[MType, Int]>*/;
3478 goto CONTINUE_label
;
3481 var11
= BOX_kernel__Int(var_color
); /* autobox from Int to nullable Object */
3482 ((void (*)(val
*, val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_ids
, var_element
, var11
) /* []= on <var_ids:HashMap[MType, Int]>*/;
3484 { /* Inline kernel#Int#+ (var_color,var12) */
3485 var15
= var_color
+ var12
;
3488 RET_LABEL14
:(void)0;
3491 CONTINUE_label
: (void)0;
3492 ((void (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var7
) /* next on <var7:Iterator[nullable Object]>*/;
3494 BREAK_label
: (void)0;
3495 CONTINUE_label16
: (void)0;
3496 ((void (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__MapIterator__next
]))(var3
) /* next on <var3:MapIterator[Object, nullable Object]>*/;
3498 BREAK_label16
: (void)0;
3504 /* method layout_builders#ResolutionColorer#compute_ids for (self: Object, Map[MClassType, Set[MType]]): Map[MType, Int] */
3505 val
* VIRTUAL_layout_builders__ResolutionColorer__compute_ids(val
* self
, val
* p0
) {
3506 val
* var
/* : Map[MType, Int] */;
3507 val
* var1
/* : Map[MType, Int] */;
3508 var1
= layout_builders__ResolutionColorer__compute_ids(self
, p0
);
3513 /* method layout_builders#ResolutionColorer#colorize_elements for (self: ResolutionColorer, Map[MClassType, Set[MType]]): Map[MType, Int] */
3514 val
* layout_builders__ResolutionColorer__colorize_elements(val
* self
, val
* p0
) {
3515 val
* var
/* : Map[MType, Int] */;
3516 val
* var_elements
/* var elements: Map[MClassType, Set[MType]] */;
3517 long var1
/* : Int */;
3518 long var_min_color
/* var min_color: Int */;
3519 val
* var2
/* : MapIterator[Object, nullable Object] */;
3520 short int var3
/* : Bool */;
3521 val
* var4
/* : Object */;
3522 val
* var_mclasstype
/* var mclasstype: MClassType */;
3523 val
* var5
/* : nullable Object */;
3524 val
* var_mclasstypes
/* var mclasstypes: Set[MType] */;
3525 val
* var6
/* : Iterator[nullable Object] */;
3526 short int var7
/* : Bool */;
3527 val
* var8
/* : nullable Object */;
3528 val
* var_element
/* var element: MType */;
3529 val
* var9
/* : Map[MType, Int] */;
3530 short int var10
/* : Bool */;
3531 long var_color
/* var color: Int */;
3532 short int var11
/* : Bool */;
3533 short int var12
/* : Bool */;
3534 long var13
/* : Int */;
3535 long var14
/* : Int */;
3536 long var16
/* : Int */;
3537 val
* var18
/* : Map[MType, Int] */;
3538 val
* var19
/* : nullable Object */;
3539 val
* var21
/* : Map[MType, Int] */;
3542 var_min_color
= var1
;
3543 var2
= ((val
* (*)(val
*))(var_elements
->class->vft
[COLOR_abstract_collection__MapRead__iterator
]))(var_elements
) /* iterator on <var_elements:Map[MClassType, Set[MType]]>*/;
3545 var3
= ((short int (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__MapIterator__is_ok
]))(var2
) /* is_ok on <var2:MapIterator[Object, nullable Object]>*/;
3547 var4
= ((val
* (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__MapIterator__key
]))(var2
) /* key on <var2:MapIterator[Object, nullable Object]>*/;
3548 var_mclasstype
= var4
;
3549 var5
= ((val
* (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__MapIterator__item
]))(var2
) /* item on <var2:MapIterator[Object, nullable Object]>*/;
3550 var_mclasstypes
= var5
;
3551 var6
= ((val
* (*)(val
*))(var_mclasstypes
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_mclasstypes
) /* iterator on <var_mclasstypes:Set[MType]>*/;
3553 var7
= ((short int (*)(val
*))(var6
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var6
) /* is_ok on <var6:Iterator[nullable Object]>*/;
3555 var8
= ((val
* (*)(val
*))(var6
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var6
) /* item on <var6:Iterator[nullable Object]>*/;
3557 var9
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__coloration_result
]))(self
) /* coloration_result on <self:ResolutionColorer>*/;
3558 var10
= ((short int (*)(val
*, val
*))(var9
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var9
, var_element
) /* has_key on <var9:Map[MType, Int]>*/;
3560 goto CONTINUE_label
;
3563 var_color
= var_min_color
;
3565 var11
= ((short int (*)(val
*, val
*, long))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__is_color_free
]))(self
, var_element
, var_color
) /* is_color_free on <self:ResolutionColorer>*/;
3569 { /* Inline kernel#Int#+ (var_color,var13) */
3570 var16
= var_color
+ var13
;
3573 RET_LABEL15
:(void)0;
3576 CONTINUE_label17
: (void)0;
3578 BREAK_label17
: (void)0;
3579 var18
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__coloration_result
]))(self
) /* coloration_result on <self:ResolutionColorer>*/;
3580 var19
= BOX_kernel__Int(var_color
); /* autobox from Int to nullable Object */
3581 ((void (*)(val
*, val
*, val
*))(var18
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var18
, var_element
, var19
) /* []= on <var18:Map[MType, Int]>*/;
3582 var_color
= var_min_color
;
3583 CONTINUE_label
: (void)0;
3584 ((void (*)(val
*))(var6
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var6
) /* next on <var6:Iterator[nullable Object]>*/;
3586 BREAK_label
: (void)0;
3587 CONTINUE_label20
: (void)0;
3588 ((void (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__MapIterator__next
]))(var2
) /* next on <var2:MapIterator[Object, nullable Object]>*/;
3590 BREAK_label20
: (void)0;
3591 var21
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__coloration_result
]))(self
) /* coloration_result on <self:ResolutionColorer>*/;
3597 /* method layout_builders#ResolutionColorer#colorize_elements for (self: Object, Map[MClassType, Set[MType]]): Map[MType, Int] */
3598 val
* VIRTUAL_layout_builders__ResolutionColorer__colorize_elements(val
* self
, val
* p0
) {
3599 val
* var
/* : Map[MType, Int] */;
3600 val
* var1
/* : Map[MType, Int] */;
3601 var1
= layout_builders__ResolutionColorer__colorize_elements(self
, p0
);
3606 /* method layout_builders#ResolutionColorer#is_color_free for (self: ResolutionColorer, MType, Int): Bool */
3607 short int layout_builders__ResolutionColorer__is_color_free(val
* self
, val
* p0
, long p1
) {
3608 short int var
/* : Bool */;
3609 val
* var_element
/* var element: MType */;
3610 long var_color
/* var color: Int */;
3611 val
* var1
/* : Map[MType, Set[MType]] */;
3612 short int var2
/* : Bool */;
3613 val
* var3
/* : Map[MType, Set[MType]] */;
3614 val
* var4
/* : nullable Object */;
3615 val
* var5
/* : Iterator[nullable Object] */;
3616 short int var6
/* : Bool */;
3617 val
* var7
/* : nullable Object */;
3618 val
* var_st
/* var st: MType */;
3619 short int var8
/* : Bool */;
3620 val
* var9
/* : Map[MType, Int] */;
3621 short int var10
/* : Bool */;
3622 short int var_
/* var : Bool */;
3623 val
* var11
/* : Map[MType, Int] */;
3624 val
* var12
/* : nullable Object */;
3625 short int var13
/* : Bool */;
3626 short int var15
/* : Bool */;
3627 long var16
/* : Int */;
3628 short int var17
/* : Bool */;
3629 short int var18
/* : Bool */;
3632 var1
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:ResolutionColorer>*/;
3633 var2
= ((short int (*)(val
*, val
*))(var1
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var1
, var_element
) /* has_key on <var1:Map[MType, Set[MType]]>*/;
3635 var3
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:ResolutionColorer>*/;
3636 var4
= ((val
* (*)(val
*, val
*))(var3
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var3
, var_element
) /* [] on <var3:Map[MType, Set[MType]]>*/;
3637 var5
= ((val
* (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var4
) /* iterator on <var4:nullable Object(Set[MType])>*/;
3639 var6
= ((short int (*)(val
*))(var5
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var5
) /* is_ok on <var5:Iterator[nullable Object]>*/;
3641 var7
= ((val
* (*)(val
*))(var5
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var5
) /* item on <var5:Iterator[nullable Object]>*/;
3643 var9
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__coloration_result
]))(self
) /* coloration_result on <self:ResolutionColorer>*/;
3644 var10
= ((short int (*)(val
*, val
*))(var9
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var9
, var_st
) /* has_key on <var9:Map[MType, Int]>*/;
3647 var11
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__coloration_result
]))(self
) /* coloration_result on <self:ResolutionColorer>*/;
3648 var12
= ((val
* (*)(val
*, val
*))(var11
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var11
, var_st
) /* [] on <var11:Map[MType, Int]>*/;
3649 { /* Inline kernel#Int#== (var12,var_color) */
3650 var15
= (var12
!= NULL
) && (var12
->class == &class_kernel__Int
);
3652 var16
= ((struct instance_kernel__Int
*)var12
)->value
; /* autounbox from nullable Object to Int */;
3653 var15
= (var16
== var_color
);
3657 RET_LABEL14
:(void)0;
3669 CONTINUE_label
: (void)0;
3670 ((void (*)(val
*))(var5
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var5
) /* next on <var5:Iterator[nullable Object]>*/;
3672 BREAK_label
: (void)0;
3681 /* method layout_builders#ResolutionColorer#is_color_free for (self: Object, MType, Int): Bool */
3682 short int VIRTUAL_layout_builders__ResolutionColorer__is_color_free(val
* self
, val
* p0
, long p1
) {
3683 short int var
/* : Bool */;
3684 short int var1
/* : Bool */;
3685 var1
= layout_builders__ResolutionColorer__is_color_free(self
, p0
, p1
);
3690 /* method layout_builders#ResolutionColorer#build_conflicts_graph for (self: ResolutionColorer, Map[MClassType, Set[MType]]) */
3691 void layout_builders__ResolutionColorer__build_conflicts_graph(val
* self
, val
* p0
) {
3692 val
* var_elements
/* var elements: Map[MClassType, Set[MType]] */;
3693 val
* var
/* : MapIterator[Object, nullable Object] */;
3694 short int var1
/* : Bool */;
3695 val
* var2
/* : Object */;
3696 val
* var_mclasstype
/* var mclasstype: MClassType */;
3697 val
* var3
/* : nullable Object */;
3698 val
* var_mtypes
/* var mtypes: Set[MType] */;
3699 val
* var4
/* : Iterator[nullable Object] */;
3700 short int var5
/* : Bool */;
3701 val
* var6
/* : nullable Object */;
3702 val
* var_mtype
/* var mtype: MType */;
3703 val
* var7
/* : Iterator[nullable Object] */;
3704 short int var8
/* : Bool */;
3705 val
* var9
/* : nullable Object */;
3706 val
* var_otype
/* var otype: MType */;
3707 short int var10
/* : Bool */;
3709 var
= ((val
* (*)(val
*))(var_elements
->class->vft
[COLOR_abstract_collection__MapRead__iterator
]))(var_elements
) /* iterator on <var_elements:Map[MClassType, Set[MType]]>*/;
3711 var1
= ((short int (*)(val
*))(var
->class->vft
[COLOR_abstract_collection__MapIterator__is_ok
]))(var
) /* is_ok on <var:MapIterator[Object, nullable Object]>*/;
3713 var2
= ((val
* (*)(val
*))(var
->class->vft
[COLOR_abstract_collection__MapIterator__key
]))(var
) /* key on <var:MapIterator[Object, nullable Object]>*/;
3714 var_mclasstype
= var2
;
3715 var3
= ((val
* (*)(val
*))(var
->class->vft
[COLOR_abstract_collection__MapIterator__item
]))(var
) /* item on <var:MapIterator[Object, nullable Object]>*/;
3717 var4
= ((val
* (*)(val
*))(var_mtypes
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_mtypes
) /* iterator on <var_mtypes:Set[MType]>*/;
3719 var5
= ((short int (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var4
) /* is_ok on <var4:Iterator[nullable Object]>*/;
3721 var6
= ((val
* (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var4
) /* item on <var4:Iterator[nullable Object]>*/;
3723 var7
= ((val
* (*)(val
*))(var_mtypes
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_mtypes
) /* iterator on <var_mtypes:Set[MType]>*/;
3725 var8
= ((short int (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var7
) /* is_ok on <var7:Iterator[nullable Object]>*/;
3727 var9
= ((val
* (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var7
) /* item on <var7:Iterator[nullable Object]>*/;
3729 var10
= ((short int (*)(val
*, val
*))(var_otype
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var_otype
, var_mtype
) /* == on <var_otype:MType>*/;
3731 goto CONTINUE_label
;
3734 ((void (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__add_conflict
]))(self
, var_mtype
, var_otype
) /* add_conflict on <self:ResolutionColorer>*/;
3735 CONTINUE_label
: (void)0;
3736 ((void (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var7
) /* next on <var7:Iterator[nullable Object]>*/;
3738 BREAK_label
: (void)0;
3739 CONTINUE_label11
: (void)0;
3740 ((void (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var4
) /* next on <var4:Iterator[nullable Object]>*/;
3742 BREAK_label11
: (void)0;
3743 CONTINUE_label12
: (void)0;
3744 ((void (*)(val
*))(var
->class->vft
[COLOR_abstract_collection__MapIterator__next
]))(var
) /* next on <var:MapIterator[Object, nullable Object]>*/;
3746 BREAK_label12
: (void)0;
3749 /* method layout_builders#ResolutionColorer#build_conflicts_graph for (self: Object, Map[MClassType, Set[MType]]) */
3750 void VIRTUAL_layout_builders__ResolutionColorer__build_conflicts_graph(val
* self
, val
* p0
) {
3751 layout_builders__ResolutionColorer__build_conflicts_graph(self
, p0
);
3754 /* method layout_builders#ResolutionColorer#conflicts_graph for (self: ResolutionColorer): Map[MType, Set[MType]] */
3755 val
* layout_builders__ResolutionColorer__conflicts_graph(val
* self
) {
3756 val
* var
/* : Map[MType, Set[MType]] */;
3757 val
* var1
/* : Map[MType, Set[MType]] */;
3758 var1
= self
->attrs
[COLOR_layout_builders__ResolutionColorer___64dconflicts_graph
].val
; /* @conflicts_graph on <self:ResolutionColorer> */
3760 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @conflicts_graph");
3761 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 536);
3768 /* method layout_builders#ResolutionColorer#conflicts_graph for (self: Object): Map[MType, Set[MType]] */
3769 val
* VIRTUAL_layout_builders__ResolutionColorer__conflicts_graph(val
* self
) {
3770 val
* var
/* : Map[MType, Set[MType]] */;
3771 val
* var1
/* : Map[MType, Set[MType]] */;
3772 var1
= layout_builders__ResolutionColorer__conflicts_graph(self
);
3777 /* method layout_builders#ResolutionColorer#conflicts_graph= for (self: ResolutionColorer, Map[MType, Set[MType]]) */
3778 void layout_builders__ResolutionColorer__conflicts_graph_61d(val
* self
, val
* p0
) {
3779 self
->attrs
[COLOR_layout_builders__ResolutionColorer___64dconflicts_graph
].val
= p0
; /* @conflicts_graph on <self:ResolutionColorer> */
3782 /* method layout_builders#ResolutionColorer#conflicts_graph= for (self: Object, Map[MType, Set[MType]]) */
3783 void VIRTUAL_layout_builders__ResolutionColorer__conflicts_graph_61d(val
* self
, val
* p0
) {
3784 layout_builders__ResolutionColorer__conflicts_graph_61d(self
, p0
);
3787 /* method layout_builders#ResolutionColorer#add_conflict for (self: ResolutionColorer, MType, MType) */
3788 void layout_builders__ResolutionColorer__add_conflict(val
* self
, val
* p0
, val
* p1
) {
3789 val
* var_mtype
/* var mtype: MType */;
3790 val
* var_otype
/* var otype: MType */;
3791 short int var
/* : Bool */;
3792 val
* var1
/* : Map[MType, Set[MType]] */;
3793 short int var2
/* : Bool */;
3794 short int var3
/* : Bool */;
3795 val
* var4
/* : Map[MType, Set[MType]] */;
3796 val
* var5
/* : HashSet[MType] */;
3797 val
* var6
/* : Map[MType, Set[MType]] */;
3798 val
* var7
/* : nullable Object */;
3799 val
* var8
/* : Map[MType, Set[MType]] */;
3800 short int var9
/* : Bool */;
3801 short int var10
/* : Bool */;
3802 val
* var11
/* : Map[MType, Set[MType]] */;
3803 val
* var12
/* : HashSet[MType] */;
3804 val
* var13
/* : Map[MType, Set[MType]] */;
3805 val
* var14
/* : nullable Object */;
3808 var
= ((short int (*)(val
*, val
*))(var_mtype
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var_mtype
, var_otype
) /* == on <var_mtype:MType>*/;
3813 var1
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:ResolutionColorer>*/;
3814 var2
= ((short int (*)(val
*, val
*))(var1
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var1
, var_mtype
) /* has_key on <var1:Map[MType, Set[MType]]>*/;
3817 var4
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:ResolutionColorer>*/;
3818 var5
= NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MType
);
3819 ((void (*)(val
*))(var5
->class->vft
[COLOR_hash_collection__HashSet__init
]))(var5
) /* init on <var5:HashSet[MType]>*/;
3820 ((void (*)(val
*, val
*, val
*))(var4
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var4
, var_mtype
, var5
) /* []= on <var4:Map[MType, Set[MType]]>*/;
3823 var6
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:ResolutionColorer>*/;
3824 var7
= ((val
* (*)(val
*, val
*))(var6
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var6
, var_mtype
) /* [] on <var6:Map[MType, Set[MType]]>*/;
3825 ((void (*)(val
*, val
*))(var7
->class->vft
[COLOR_abstract_collection__SimpleCollection__add
]))(var7
, var_otype
) /* add on <var7:nullable Object(Set[MType])>*/;
3826 var8
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:ResolutionColorer>*/;
3827 var9
= ((short int (*)(val
*, val
*))(var8
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var8
, var_otype
) /* has_key on <var8:Map[MType, Set[MType]]>*/;
3830 var11
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:ResolutionColorer>*/;
3831 var12
= NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MType
);
3832 ((void (*)(val
*))(var12
->class->vft
[COLOR_hash_collection__HashSet__init
]))(var12
) /* init on <var12:HashSet[MType]>*/;
3833 ((void (*)(val
*, val
*, val
*))(var11
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var11
, var_otype
, var12
) /* []= on <var11:Map[MType, Set[MType]]>*/;
3836 var13
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__ResolutionColorer__conflicts_graph
]))(self
) /* conflicts_graph on <self:ResolutionColorer>*/;
3837 var14
= ((val
* (*)(val
*, val
*))(var13
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var13
, var_otype
) /* [] on <var13:Map[MType, Set[MType]]>*/;
3838 ((void (*)(val
*, val
*))(var14
->class->vft
[COLOR_abstract_collection__SimpleCollection__add
]))(var14
, var_mtype
) /* add on <var14:nullable Object(Set[MType])>*/;
3841 /* method layout_builders#ResolutionColorer#add_conflict for (self: Object, MType, MType) */
3842 void VIRTUAL_layout_builders__ResolutionColorer__add_conflict(val
* self
, val
* p0
, val
* p1
) {
3843 layout_builders__ResolutionColorer__add_conflict(self
, p0
, p1
);
3846 /* method layout_builders#PerfectHasher#operator for (self: PerfectHasher[Object, Object]): PHOperator */
3847 val
* layout_builders__PerfectHasher__operator(val
* self
) {
3848 val
* var
/* : PHOperator */;
3849 val
* var1
/* : PHOperator */;
3850 var1
= self
->attrs
[COLOR_layout_builders__PerfectHasher___64doperator
].val
; /* @operator on <self:PerfectHasher[Object, Object]> */
3852 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @operator");
3853 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 552);
3860 /* method layout_builders#PerfectHasher#operator for (self: Object): PHOperator */
3861 val
* VIRTUAL_layout_builders__PerfectHasher__operator(val
* self
) {
3862 val
* var
/* : PHOperator */;
3863 val
* var1
/* : PHOperator */;
3864 var1
= layout_builders__PerfectHasher__operator(self
);
3869 /* method layout_builders#PerfectHasher#operator= for (self: PerfectHasher[Object, Object], PHOperator) */
3870 void layout_builders__PerfectHasher__operator_61d(val
* self
, val
* p0
) {
3871 self
->attrs
[COLOR_layout_builders__PerfectHasher___64doperator
].val
= p0
; /* @operator on <self:PerfectHasher[Object, Object]> */
3874 /* method layout_builders#PerfectHasher#operator= for (self: Object, PHOperator) */
3875 void VIRTUAL_layout_builders__PerfectHasher__operator_61d(val
* self
, val
* p0
) {
3876 layout_builders__PerfectHasher__operator_61d(self
, p0
);
3879 /* method layout_builders#PerfectHasher#init for (self: PerfectHasher[Object, Object]) */
3880 void layout_builders__PerfectHasher__init(val
* self
) {
3883 /* method layout_builders#PerfectHasher#init for (self: Object) */
3884 void VIRTUAL_layout_builders__PerfectHasher__init(val
* self
) {
3885 layout_builders__PerfectHasher__init(self
);
3888 /* method layout_builders#PerfectHasher#compute_masks for (self: PerfectHasher[Object, Object], Map[Object, Set[Object]], Map[Object, Int]): Map[Object, Int] */
3889 val
* layout_builders__PerfectHasher__compute_masks(val
* self
, val
* p0
, val
* p1
) {
3890 val
* var
/* : Map[Object, Int] */;
3891 short int var1
/* : Bool */;
3894 const struct type
* type_struct
;
3895 const char* var_class_name
;
3896 short int var2
/* : Bool */;
3899 const struct type
* type_struct5
;
3900 const char* var_class_name6
;
3901 val
* var_conflicts
/* var conflicts: Map[Object, Set[Object]] */;
3902 val
* var_ids
/* var ids: Map[Object, Int] */;
3903 val
* var7
/* : HashMap[Object, Int] */;
3904 val
* var_masks
/* var masks: HashMap[Object, Int] */;
3905 val
* var8
/* : MapIterator[Object, nullable Object] */;
3906 short int var9
/* : Bool */;
3907 val
* var10
/* : Object */;
3908 val
* var_mclasstype
/* var mclasstype: Object */;
3909 val
* var11
/* : nullable Object */;
3910 val
* var_mtypes
/* var mtypes: Set[Object] */;
3911 long var12
/* : Int */;
3912 val
* var13
/* : nullable Object */;
3913 /* Covariant cast for argument 0 (conflicts) <p0:Map[Object, Set[Object]]> isa Map[PerfectHasher#0, Set[PerfectHasher#1]] */
3914 /* <p0:Map[Object, Set[Object]]> isa Map[PerfectHasher#0, Set[PerfectHasher#1]] */
3915 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Maplayout_builders__PerfectHasher_FT0abstract_collection__Setlayout_builders__PerfectHasher_FT1
];
3916 cltype
= type_struct
->color
;
3917 idtype
= type_struct
->id
;
3918 if(cltype
>= p0
->type
->table_size
) {
3921 var1
= p0
->type
->type_table
[cltype
] == idtype
;
3924 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
3925 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[PerfectHasher#0, Set[PerfectHasher#1]]", var_class_name
);
3926 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 556);
3929 /* Covariant cast for argument 1 (ids) <p1:Map[Object, Int]> isa Map[PerfectHasher#1, Int] */
3930 /* <p1:Map[Object, Int]> isa Map[PerfectHasher#1, Int] */
3931 type_struct5
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Maplayout_builders__PerfectHasher_FT1kernel__Int
];
3932 cltype3
= type_struct5
->color
;
3933 idtype4
= type_struct5
->id
;
3934 if(cltype3
>= p1
->type
->table_size
) {
3937 var2
= p1
->type
->type_table
[cltype3
] == idtype4
;
3940 var_class_name6
= p1
== NULL ?
"null" : p1
->type
->name
;
3941 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[PerfectHasher#1, Int]", var_class_name6
);
3942 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 556);
3947 var7
= NEW_hash_collection__HashMap(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashMaplayout_builders__PerfectHasher_FT0kernel__Int
]);
3948 ((void (*)(val
*))(var7
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var7
) /* init on <var7:HashMap[Object, Int]>*/;
3950 var8
= ((val
* (*)(val
*))(var_conflicts
->class->vft
[COLOR_abstract_collection__MapRead__iterator
]))(var_conflicts
) /* iterator on <var_conflicts:Map[Object, Set[Object]]>*/;
3952 var9
= ((short int (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__MapIterator__is_ok
]))(var8
) /* is_ok on <var8:MapIterator[Object, nullable Object]>*/;
3954 var10
= ((val
* (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__MapIterator__key
]))(var8
) /* key on <var8:MapIterator[Object, nullable Object]>*/;
3955 var_mclasstype
= var10
;
3956 var11
= ((val
* (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__MapIterator__item
]))(var8
) /* item on <var8:MapIterator[Object, nullable Object]>*/;
3958 var12
= ((long (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__compute_mask
]))(self
, var_mtypes
, var_ids
) /* compute_mask on <self:PerfectHasher[Object, Object]>*/;
3959 var13
= BOX_kernel__Int(var12
); /* autobox from Int to nullable Object */
3960 ((void (*)(val
*, val
*, val
*))(var_masks
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_masks
, var_mclasstype
, var13
) /* []= on <var_masks:HashMap[Object, Int]>*/;
3961 CONTINUE_label
: (void)0;
3962 ((void (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__MapIterator__next
]))(var8
) /* next on <var8:MapIterator[Object, nullable Object]>*/;
3964 BREAK_label
: (void)0;
3970 /* method layout_builders#PerfectHasher#compute_masks for (self: Object, Map[Object, Set[Object]], Map[Object, Int]): Map[Object, Int] */
3971 val
* VIRTUAL_layout_builders__PerfectHasher__compute_masks(val
* self
, val
* p0
, val
* p1
) {
3972 val
* var
/* : Map[Object, Int] */;
3973 val
* var1
/* : Map[Object, Int] */;
3974 var1
= layout_builders__PerfectHasher__compute_masks(self
, p0
, p1
);
3979 /* method layout_builders#PerfectHasher#compute_mask for (self: PerfectHasher[Object, Object], Set[Object], Map[Object, Int]): Int */
3980 long layout_builders__PerfectHasher__compute_mask(val
* self
, val
* p0
, val
* p1
) {
3981 long var
/* : Int */;
3982 short int var1
/* : Bool */;
3985 const struct type
* type_struct
;
3986 const char* var_class_name
;
3987 short int var2
/* : Bool */;
3990 const struct type
* type_struct5
;
3991 const char* var_class_name6
;
3992 val
* var_mtypes
/* var mtypes: Set[Object] */;
3993 val
* var_ids
/* var ids: Map[Object, Int] */;
3994 long var7
/* : Int */;
3995 long var_mask
/* var mask: Int */;
3996 val
* var8
/* : List[Int] */;
3997 val
* var_used
/* var used: List[Int] */;
3998 val
* var9
/* : Iterator[nullable Object] */;
3999 short int var10
/* : Bool */;
4000 val
* var11
/* : nullable Object */;
4001 val
* var_mtype
/* var mtype: Object */;
4002 val
* var12
/* : PHOperator */;
4003 val
* var13
/* : nullable Object */;
4004 long var14
/* : Int */;
4005 long var15
/* : Int */;
4006 long var_res
/* var res: Int */;
4007 short int var16
/* : Bool */;
4008 val
* var17
/* : nullable Object */;
4009 val
* var18
/* : nullable Object */;
4010 long var19
/* : Int */;
4011 long var20
/* : Int */;
4012 short int var21
/* : Bool */;
4013 short int var23
/* : Bool */;
4014 long var25
/* : Int */;
4015 long var26
/* : Int */;
4016 long var28
/* : Int */;
4017 /* Covariant cast for argument 0 (mtypes) <p0:Set[Object]> isa Set[PerfectHasher#1] */
4018 /* <p0:Set[Object]> isa Set[PerfectHasher#1] */
4019 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__PerfectHasher_FT1
];
4020 cltype
= type_struct
->color
;
4021 idtype
= type_struct
->id
;
4022 if(cltype
>= p0
->type
->table_size
) {
4025 var1
= p0
->type
->type_table
[cltype
] == idtype
;
4028 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
4029 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Set[PerfectHasher#1]", var_class_name
);
4030 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 565);
4033 /* Covariant cast for argument 1 (ids) <p1:Map[Object, Int]> isa Map[PerfectHasher#1, Int] */
4034 /* <p1:Map[Object, Int]> isa Map[PerfectHasher#1, Int] */
4035 type_struct5
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Maplayout_builders__PerfectHasher_FT1kernel__Int
];
4036 cltype3
= type_struct5
->color
;
4037 idtype4
= type_struct5
->id
;
4038 if(cltype3
>= p1
->type
->table_size
) {
4041 var2
= p1
->type
->type_table
[cltype3
] == idtype4
;
4044 var_class_name6
= p1
== NULL ?
"null" : p1
->type
->name
;
4045 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[PerfectHasher#1, Int]", var_class_name6
);
4046 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 565);
4054 var8
= NEW_list__List(&type_list__Listkernel__Int
);
4055 ((void (*)(val
*))(var8
->class->vft
[COLOR_list__List__init
]))(var8
) /* init on <var8:List[Int]>*/;
4057 var9
= ((val
* (*)(val
*))(var_mtypes
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_mtypes
) /* iterator on <var_mtypes:Set[Object]>*/;
4059 var10
= ((short int (*)(val
*))(var9
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var9
) /* is_ok on <var9:Iterator[nullable Object]>*/;
4061 var11
= ((val
* (*)(val
*))(var9
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var9
) /* item on <var9:Iterator[nullable Object]>*/;
4063 var12
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__operator
]))(self
) /* operator on <self:PerfectHasher[Object, Object]>*/;
4064 var13
= ((val
* (*)(val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var_ids
, var_mtype
) /* [] on <var_ids:Map[Object, Int]>*/;
4065 var15
= ((struct instance_kernel__Int
*)var13
)->value
; /* autounbox from nullable Object to Int */;
4066 var14
= ((long (*)(val
*, long, long))(var12
->class->vft
[COLOR_layout_builders__PHOperator__op
]))(var12
, var_mask
, var15
) /* op on <var12:PHOperator>*/;
4068 var17
= BOX_kernel__Int(var_res
); /* autobox from Int to nullable Object */
4069 var16
= ((short int (*)(val
*, val
*))(var_used
->class->vft
[COLOR_abstract_collection__Collection__has
]))(var_used
, var17
) /* has on <var_used:List[Int]>*/;
4073 var18
= BOX_kernel__Int(var_res
); /* autobox from Int to nullable Object */
4074 ((void (*)(val
*, val
*))(var_used
->class->vft
[COLOR_abstract_collection__SimpleCollection__add
]))(var_used
, var18
) /* add on <var_used:List[Int]>*/;
4076 CONTINUE_label
: (void)0;
4077 ((void (*)(val
*))(var9
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var9
) /* next on <var9:Iterator[nullable Object]>*/;
4079 BREAK_label
: (void)0;
4080 var19
= ((long (*)(val
*))(var_used
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var_used
) /* length on <var_used:List[Int]>*/;
4081 var20
= ((long (*)(val
*))(var_mtypes
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var_mtypes
) /* length on <var_mtypes:Set[Object]>*/;
4082 { /* Inline kernel#Int#== (var19,var20) */
4083 var23
= var19
== var20
;
4086 RET_LABEL22
:(void)0;
4093 { /* Inline kernel#Int#+ (var_mask,var25) */
4094 var28
= var_mask
+ var25
;
4097 RET_LABEL27
:(void)0;
4100 CONTINUE_label24
: (void)0;
4102 BREAK_label24
: (void)0;
4108 /* method layout_builders#PerfectHasher#compute_mask for (self: Object, Set[Object], Map[Object, Int]): Int */
4109 long VIRTUAL_layout_builders__PerfectHasher__compute_mask(val
* self
, val
* p0
, val
* p1
) {
4110 long var
/* : Int */;
4111 long var1
/* : Int */;
4112 var1
= layout_builders__PerfectHasher__compute_mask(self
, p0
, p1
);
4117 /* method layout_builders#PerfectHasher#compute_hashes for (self: PerfectHasher[Object, Object], Map[Object, Set[Object]], Map[Object, Int], Map[Object, Int]): Map[Object, Map[Object, Int]] */
4118 val
* layout_builders__PerfectHasher__compute_hashes(val
* self
, val
* p0
, val
* p1
, val
* p2
) {
4119 val
* var
/* : Map[Object, Map[Object, Int]] */;
4120 short int var1
/* : Bool */;
4123 const struct type
* type_struct
;
4124 const char* var_class_name
;
4125 short int var2
/* : Bool */;
4128 const struct type
* type_struct5
;
4129 const char* var_class_name6
;
4130 short int var7
/* : Bool */;
4133 const struct type
* type_struct10
;
4134 const char* var_class_name11
;
4135 val
* var_elements
/* var elements: Map[Object, Set[Object]] */;
4136 val
* var_ids
/* var ids: Map[Object, Int] */;
4137 val
* var_masks
/* var masks: Map[Object, Int] */;
4138 val
* var12
/* : HashMap[Object, Map[Object, Int]] */;
4139 val
* var_hashes
/* var hashes: HashMap[Object, Map[Object, Int]] */;
4140 val
* var13
/* : MapIterator[Object, nullable Object] */;
4141 short int var14
/* : Bool */;
4142 val
* var15
/* : Object */;
4143 val
* var_mclasstype
/* var mclasstype: Object */;
4144 val
* var16
/* : nullable Object */;
4145 val
* var_mtypes
/* var mtypes: Set[Object] */;
4146 val
* var17
/* : nullable Object */;
4147 long var18
/* : Int */;
4148 long var_mask
/* var mask: Int */;
4149 val
* var19
/* : HashMap[Object, Int] */;
4150 val
* var_inhashes
/* var inhashes: HashMap[Object, Int] */;
4151 val
* var20
/* : Iterator[nullable Object] */;
4152 short int var21
/* : Bool */;
4153 val
* var22
/* : nullable Object */;
4154 val
* var_mtype
/* var mtype: Object */;
4155 val
* var23
/* : PHOperator */;
4156 val
* var24
/* : nullable Object */;
4157 long var25
/* : Int */;
4158 long var26
/* : Int */;
4159 val
* var27
/* : nullable Object */;
4160 /* Covariant cast for argument 0 (elements) <p0:Map[Object, Set[Object]]> isa Map[PerfectHasher#0, Set[PerfectHasher#1]] */
4161 /* <p0:Map[Object, Set[Object]]> isa Map[PerfectHasher#0, Set[PerfectHasher#1]] */
4162 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Maplayout_builders__PerfectHasher_FT0abstract_collection__Setlayout_builders__PerfectHasher_FT1
];
4163 cltype
= type_struct
->color
;
4164 idtype
= type_struct
->id
;
4165 if(cltype
>= p0
->type
->table_size
) {
4168 var1
= p0
->type
->type_table
[cltype
] == idtype
;
4171 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
4172 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[PerfectHasher#0, Set[PerfectHasher#1]]", var_class_name
);
4173 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 583);
4176 /* Covariant cast for argument 1 (ids) <p1:Map[Object, Int]> isa Map[PerfectHasher#1, Int] */
4177 /* <p1:Map[Object, Int]> isa Map[PerfectHasher#1, Int] */
4178 type_struct5
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Maplayout_builders__PerfectHasher_FT1kernel__Int
];
4179 cltype3
= type_struct5
->color
;
4180 idtype4
= type_struct5
->id
;
4181 if(cltype3
>= p1
->type
->table_size
) {
4184 var2
= p1
->type
->type_table
[cltype3
] == idtype4
;
4187 var_class_name6
= p1
== NULL ?
"null" : p1
->type
->name
;
4188 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[PerfectHasher#1, Int]", var_class_name6
);
4189 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 583);
4192 /* Covariant cast for argument 2 (masks) <p2:Map[Object, Int]> isa Map[PerfectHasher#0, Int] */
4193 /* <p2:Map[Object, Int]> isa Map[PerfectHasher#0, Int] */
4194 type_struct10
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Maplayout_builders__PerfectHasher_FT0kernel__Int
];
4195 cltype8
= type_struct10
->color
;
4196 idtype9
= type_struct10
->id
;
4197 if(cltype8
>= p2
->type
->table_size
) {
4200 var7
= p2
->type
->type_table
[cltype8
] == idtype9
;
4203 var_class_name11
= p2
== NULL ?
"null" : p2
->type
->name
;
4204 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[PerfectHasher#0, Int]", var_class_name11
);
4205 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 583);
4211 var12
= NEW_hash_collection__HashMap(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashMaplayout_builders__PerfectHasher_FT0abstract_collection__Maplayout_builders__PerfectHasher_FT1kernel__Int
]);
4212 ((void (*)(val
*))(var12
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var12
) /* init on <var12:HashMap[Object, Map[Object, Int]]>*/;
4214 var13
= ((val
* (*)(val
*))(var_elements
->class->vft
[COLOR_abstract_collection__MapRead__iterator
]))(var_elements
) /* iterator on <var_elements:Map[Object, Set[Object]]>*/;
4216 var14
= ((short int (*)(val
*))(var13
->class->vft
[COLOR_abstract_collection__MapIterator__is_ok
]))(var13
) /* is_ok on <var13:MapIterator[Object, nullable Object]>*/;
4218 var15
= ((val
* (*)(val
*))(var13
->class->vft
[COLOR_abstract_collection__MapIterator__key
]))(var13
) /* key on <var13:MapIterator[Object, nullable Object]>*/;
4219 var_mclasstype
= var15
;
4220 var16
= ((val
* (*)(val
*))(var13
->class->vft
[COLOR_abstract_collection__MapIterator__item
]))(var13
) /* item on <var13:MapIterator[Object, nullable Object]>*/;
4222 var17
= ((val
* (*)(val
*, val
*))(var_masks
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var_masks
, var_mclasstype
) /* [] on <var_masks:Map[Object, Int]>*/;
4223 var18
= ((struct instance_kernel__Int
*)var17
)->value
; /* autounbox from nullable Object to Int */;
4225 var19
= NEW_hash_collection__HashMap(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashMaplayout_builders__PerfectHasher_FT1kernel__Int
]);
4226 ((void (*)(val
*))(var19
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var19
) /* init on <var19:HashMap[Object, Int]>*/;
4227 var_inhashes
= var19
;
4228 var20
= ((val
* (*)(val
*))(var_mtypes
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_mtypes
) /* iterator on <var_mtypes:Set[Object]>*/;
4230 var21
= ((short int (*)(val
*))(var20
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var20
) /* is_ok on <var20:Iterator[nullable Object]>*/;
4232 var22
= ((val
* (*)(val
*))(var20
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var20
) /* item on <var20:Iterator[nullable Object]>*/;
4234 var23
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__operator
]))(self
) /* operator on <self:PerfectHasher[Object, Object]>*/;
4235 var24
= ((val
* (*)(val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var_ids
, var_mtype
) /* [] on <var_ids:Map[Object, Int]>*/;
4236 var26
= ((struct instance_kernel__Int
*)var24
)->value
; /* autounbox from nullable Object to Int */;
4237 var25
= ((long (*)(val
*, long, long))(var23
->class->vft
[COLOR_layout_builders__PHOperator__op
]))(var23
, var_mask
, var26
) /* op on <var23:PHOperator>*/;
4238 var27
= BOX_kernel__Int(var25
); /* autobox from Int to nullable Object */
4239 ((void (*)(val
*, val
*, val
*))(var_inhashes
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_inhashes
, var_mtype
, var27
) /* []= on <var_inhashes:HashMap[Object, Int]>*/;
4240 CONTINUE_label
: (void)0;
4241 ((void (*)(val
*))(var20
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var20
) /* next on <var20:Iterator[nullable Object]>*/;
4243 BREAK_label
: (void)0;
4244 ((void (*)(val
*, val
*, val
*))(var_hashes
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_hashes
, var_mclasstype
, var_inhashes
) /* []= on <var_hashes:HashMap[Object, Map[Object, Int]]>*/;
4245 CONTINUE_label28
: (void)0;
4246 ((void (*)(val
*))(var13
->class->vft
[COLOR_abstract_collection__MapIterator__next
]))(var13
) /* next on <var13:MapIterator[Object, nullable Object]>*/;
4248 BREAK_label28
: (void)0;
4254 /* method layout_builders#PerfectHasher#compute_hashes for (self: Object, Map[Object, Set[Object]], Map[Object, Int], Map[Object, Int]): Map[Object, Map[Object, Int]] */
4255 val
* VIRTUAL_layout_builders__PerfectHasher__compute_hashes(val
* self
, val
* p0
, val
* p1
, val
* p2
) {
4256 val
* var
/* : Map[Object, Map[Object, Int]] */;
4257 val
* var1
/* : Map[Object, Map[Object, Int]] */;
4258 var1
= layout_builders__PerfectHasher__compute_hashes(self
, p0
, p1
, p2
);
4263 /* method layout_builders#PHOperator#op for (self: PHOperator, Int, Int): Int */
4264 long layout_builders__PHOperator__op(val
* self
, long p0
, long p1
) {
4265 long var
/* : Int */;
4266 const char* var_class_name
;
4267 var_class_name
= self
== NULL ?
"null" : self
->type
->name
;
4268 fprintf(stderr
, "Runtime error: Abstract method `%s` called on `%s`", "op", var_class_name
);
4269 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 600);
4274 /* method layout_builders#PHOperator#op for (self: Object, Int, Int): Int */
4275 long VIRTUAL_layout_builders__PHOperator__op(val
* self
, long p0
, long p1
) {
4276 long var
/* : Int */;
4277 long var1
/* : Int */;
4278 var1
= layout_builders__PHOperator__op(self
, p0
, p1
);
4283 /* method layout_builders#PHOperator#init for (self: PHOperator) */
4284 void layout_builders__PHOperator__init(val
* self
) {
4287 /* method layout_builders#PHOperator#init for (self: Object) */
4288 void VIRTUAL_layout_builders__PHOperator__init(val
* self
) {
4289 layout_builders__PHOperator__init(self
);
4292 /* method layout_builders#PHModOperator#init for (self: PHModOperator) */
4293 void layout_builders__PHModOperator__init(val
* self
) {
4294 ((void (*)(val
*))(self
->class->vft
[COLOR_layout_builders__PHOperator__init
]))(self
) /* init on <self:PHModOperator>*/;
4297 /* method layout_builders#PHModOperator#init for (self: Object) */
4298 void VIRTUAL_layout_builders__PHModOperator__init(val
* self
) {
4299 layout_builders__PHModOperator__init(self
);
4302 /* method layout_builders#PHModOperator#op for (self: PHModOperator, Int, Int): Int */
4303 long layout_builders__PHModOperator__op(val
* self
, long p0
, long p1
) {
4304 long var
/* : Int */;
4305 long var_mask
/* var mask: Int */;
4306 long var_id
/* var id: Int */;
4307 long var1
/* : Int */;
4308 long var3
/* : Int */;
4311 { /* Inline kernel#Int#% (var_mask,var_id) */
4312 var3
= var_mask
% var_id
;
4322 /* method layout_builders#PHModOperator#op for (self: Object, Int, Int): Int */
4323 long VIRTUAL_layout_builders__PHModOperator__op(val
* self
, long p0
, long p1
) {
4324 long var
/* : Int */;
4325 long var1
/* : Int */;
4326 var1
= layout_builders__PHModOperator__op(self
, p0
, p1
);
4331 /* method layout_builders#PHAndOperator#init for (self: PHAndOperator) */
4332 void layout_builders__PHAndOperator__init(val
* self
) {
4333 ((void (*)(val
*))(self
->class->vft
[COLOR_layout_builders__PHOperator__init
]))(self
) /* init on <self:PHAndOperator>*/;
4336 /* method layout_builders#PHAndOperator#init for (self: Object) */
4337 void VIRTUAL_layout_builders__PHAndOperator__init(val
* self
) {
4338 layout_builders__PHAndOperator__init(self
);
4341 /* method layout_builders#PHAndOperator#op for (self: PHAndOperator, Int, Int): Int */
4342 long layout_builders__PHAndOperator__op(val
* self
, long p0
, long p1
) {
4343 long var
/* : Int */;
4344 long var_mask
/* var mask: Int */;
4345 long var_id
/* var id: Int */;
4346 long var1
/* : Int */;
4349 var1
= math__Int__bin_and(var_mask
, var_id
);
4355 /* method layout_builders#PHAndOperator#op for (self: Object, Int, Int): Int */
4356 long VIRTUAL_layout_builders__PHAndOperator__op(val
* self
, long p0
, long p1
) {
4357 long var
/* : Int */;
4358 long var1
/* : Int */;
4359 var1
= layout_builders__PHAndOperator__op(self
, p0
, p1
);
4364 /* method layout_builders#TypingHasher#mmodule for (self: TypingHasher[Object]): MModule */
4365 val
* layout_builders__TypingHasher__mmodule(val
* self
) {
4366 val
* var
/* : MModule */;
4367 val
* var1
/* : MModule */;
4368 var1
= self
->attrs
[COLOR_layout_builders__TypingHasher___64dmmodule
].val
; /* @mmodule on <self:TypingHasher[Object]> */
4370 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @mmodule");
4371 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 625);
4378 /* method layout_builders#TypingHasher#mmodule for (self: Object): MModule */
4379 val
* VIRTUAL_layout_builders__TypingHasher__mmodule(val
* self
) {
4380 val
* var
/* : MModule */;
4381 val
* var1
/* : MModule */;
4382 var1
= layout_builders__TypingHasher__mmodule(self
);
4387 /* method layout_builders#TypingHasher#mmodule= for (self: TypingHasher[Object], MModule) */
4388 void layout_builders__TypingHasher__mmodule_61d(val
* self
, val
* p0
) {
4389 self
->attrs
[COLOR_layout_builders__TypingHasher___64dmmodule
].val
= p0
; /* @mmodule on <self:TypingHasher[Object]> */
4392 /* method layout_builders#TypingHasher#mmodule= for (self: Object, MModule) */
4393 void VIRTUAL_layout_builders__TypingHasher__mmodule_61d(val
* self
, val
* p0
) {
4394 layout_builders__TypingHasher__mmodule_61d(self
, p0
);
4397 /* method layout_builders#TypingHasher#poset_builder for (self: TypingHasher[Object]): POSetBuilder[Object] */
4398 val
* layout_builders__TypingHasher__poset_builder(val
* self
) {
4399 val
* var
/* : POSetBuilder[Object] */;
4400 val
* var1
/* : POSetBuilder[Object] */;
4401 var1
= self
->attrs
[COLOR_layout_builders__TypingHasher___64dposet_builder
].val
; /* @poset_builder on <self:TypingHasher[Object]> */
4403 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @poset_builder");
4404 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 626);
4411 /* method layout_builders#TypingHasher#poset_builder for (self: Object): POSetBuilder[Object] */
4412 val
* VIRTUAL_layout_builders__TypingHasher__poset_builder(val
* self
) {
4413 val
* var
/* : POSetBuilder[Object] */;
4414 val
* var1
/* : POSetBuilder[Object] */;
4415 var1
= layout_builders__TypingHasher__poset_builder(self
);
4420 /* method layout_builders#TypingHasher#poset_builder= for (self: TypingHasher[Object], POSetBuilder[Object]) */
4421 void layout_builders__TypingHasher__poset_builder_61d(val
* self
, val
* p0
) {
4422 short int var
/* : Bool */;
4425 const struct type
* type_struct
;
4426 const char* var_class_name
;
4427 /* Covariant cast for argument 0 (poset_builder) <p0:POSetBuilder[Object]> isa POSetBuilder[TypingHasher#0] */
4428 /* <p0:POSetBuilder[Object]> isa POSetBuilder[TypingHasher#0] */
4429 type_struct
= self
->type
->resolution_table
->types
[COLOR_layout_builders__POSetBuilderlayout_builders__TypingHasher_FT0
];
4430 cltype
= type_struct
->color
;
4431 idtype
= type_struct
->id
;
4432 if(cltype
>= p0
->type
->table_size
) {
4435 var
= p0
->type
->type_table
[cltype
] == idtype
;
4438 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
4439 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "POSetBuilder[TypingHasher#0]", var_class_name
);
4440 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 626);
4443 self
->attrs
[COLOR_layout_builders__TypingHasher___64dposet_builder
].val
= p0
; /* @poset_builder on <self:TypingHasher[Object]> */
4446 /* method layout_builders#TypingHasher#poset_builder= for (self: Object, POSetBuilder[Object]) */
4447 void VIRTUAL_layout_builders__TypingHasher__poset_builder_61d(val
* self
, val
* p0
) {
4448 layout_builders__TypingHasher__poset_builder_61d(self
, p0
);
4451 /* method layout_builders#TypingHasher#poset_cache for (self: TypingHasher[Object]): nullable POSet[Object] */
4452 val
* layout_builders__TypingHasher__poset_cache(val
* self
) {
4453 val
* var
/* : nullable POSet[Object] */;
4454 val
* var1
/* : nullable POSet[Object] */;
4455 var1
= self
->attrs
[COLOR_layout_builders__TypingHasher___64dposet_cache
].val
; /* @poset_cache on <self:TypingHasher[Object]> */
4460 /* method layout_builders#TypingHasher#poset_cache for (self: Object): nullable POSet[Object] */
4461 val
* VIRTUAL_layout_builders__TypingHasher__poset_cache(val
* self
) {
4462 val
* var
/* : nullable POSet[Object] */;
4463 val
* var1
/* : nullable POSet[Object] */;
4464 var1
= layout_builders__TypingHasher__poset_cache(self
);
4469 /* method layout_builders#TypingHasher#poset_cache= for (self: TypingHasher[Object], nullable POSet[Object]) */
4470 void layout_builders__TypingHasher__poset_cache_61d(val
* self
, val
* p0
) {
4471 short int var
/* : Bool */;
4474 const struct type
* type_struct
;
4475 const char* var_class_name
;
4476 /* Covariant cast for argument 0 (poset_cache) <p0:nullable POSet[Object]> isa nullable POSet[TypingHasher#0] */
4477 /* <p0:nullable POSet[Object]> isa nullable POSet[TypingHasher#0] */
4478 type_struct
= self
->type
->resolution_table
->types
[COLOR_nullable_poset__POSetlayout_builders__TypingHasher_FT0
];
4479 cltype
= type_struct
->color
;
4480 idtype
= type_struct
->id
;
4484 if(cltype
>= p0
->type
->table_size
) {
4487 var
= p0
->type
->type_table
[cltype
] == idtype
;
4491 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
4492 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable POSet[TypingHasher#0]", var_class_name
);
4493 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 627);
4496 self
->attrs
[COLOR_layout_builders__TypingHasher___64dposet_cache
].val
= p0
; /* @poset_cache on <self:TypingHasher[Object]> */
4499 /* method layout_builders#TypingHasher#poset_cache= for (self: Object, nullable POSet[Object]) */
4500 void VIRTUAL_layout_builders__TypingHasher__poset_cache_61d(val
* self
, val
* p0
) {
4501 layout_builders__TypingHasher__poset_cache_61d(self
, p0
);
4504 /* method layout_builders#TypingHasher#init for (self: TypingHasher[Object], MModule, POSetBuilder[Object], PHOperator) */
4505 void layout_builders__TypingHasher__init(val
* self
, val
* p0
, val
* p1
, val
* p2
) {
4506 short int var
/* : Bool */;
4509 const struct type
* type_struct
;
4510 const char* var_class_name
;
4511 val
* var_mmodule
/* var mmodule: MModule */;
4512 val
* var_poset_builder
/* var poset_builder: POSetBuilder[Object] */;
4513 val
* var_operator
/* var operator: PHOperator */;
4514 /* Covariant cast for argument 1 (poset_builder) <p1:POSetBuilder[Object]> isa POSetBuilder[TypingHasher#0] */
4515 /* <p1:POSetBuilder[Object]> isa POSetBuilder[TypingHasher#0] */
4516 type_struct
= self
->type
->resolution_table
->types
[COLOR_layout_builders__POSetBuilderlayout_builders__TypingHasher_FT0
];
4517 cltype
= type_struct
->color
;
4518 idtype
= type_struct
->id
;
4519 if(cltype
>= p1
->type
->table_size
) {
4522 var
= p1
->type
->type_table
[cltype
] == idtype
;
4525 var_class_name
= p1
== NULL ?
"null" : p1
->type
->name
;
4526 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "POSetBuilder[TypingHasher#0]", var_class_name
);
4527 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 629);
4531 var_poset_builder
= p1
;
4533 ((void (*)(val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__init
]))(self
) /* init on <self:TypingHasher[Object]>*/;
4534 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__operator_61d
]))(self
, var_operator
) /* operator= on <self:TypingHasher[Object]>*/;
4535 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingHasher__mmodule_61d
]))(self
, var_mmodule
) /* mmodule= on <self:TypingHasher[Object]>*/;
4536 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingHasher__poset_builder_61d
]))(self
, var_poset_builder
) /* poset_builder= on <self:TypingHasher[Object]>*/;
4539 /* method layout_builders#TypingHasher#init for (self: Object, MModule, POSetBuilder[Object], PHOperator) */
4540 void VIRTUAL_layout_builders__TypingHasher__init(val
* self
, val
* p0
, val
* p1
, val
* p2
) {
4541 layout_builders__TypingHasher__init(self
, p0
, p1
, p2
);
4544 /* method layout_builders#TypingHasher#build_layout for (self: TypingHasher[Object], Set[Object]): PHLayout[Object, Object] */
4545 val
* layout_builders__TypingHasher__build_layout(val
* self
, val
* p0
) {
4546 val
* var
/* : PHLayout[Object, Object] */;
4547 short int var1
/* : Bool */;
4550 const struct type
* type_struct
;
4551 const char* var_class_name
;
4552 val
* var_elements
/* var elements: Set[Object] */;
4553 val
* var2
/* : POSetBuilder[Object] */;
4554 val
* var3
/* : POSet[Object] */;
4555 val
* var4
/* : PHLayout[Object, Object] */;
4556 val
* var_result
/* var result: PHLayout[Object, Object] */;
4557 val
* var5
/* : Map[Object, Set[Object]] */;
4558 val
* var_conflicts
/* var conflicts: Map[Object, Set[Object]] */;
4559 val
* var6
/* : Map[Object, Int] */;
4560 val
* var7
/* : Map[Object, Int] */;
4561 val
* var8
/* : Map[Object, Int] */;
4562 val
* var9
/* : Map[Object, Int] */;
4563 val
* var10
/* : Map[Object, Int] */;
4564 val
* var11
/* : Map[Object, Map[Object, Int]] */;
4565 /* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingHasher#0] */
4566 /* <p0:Set[Object]> isa Set[TypingHasher#0] */
4567 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingHasher_FT0
];
4568 cltype
= type_struct
->color
;
4569 idtype
= type_struct
->id
;
4570 if(cltype
>= p0
->type
->table_size
) {
4573 var1
= p0
->type
->type_table
[cltype
] == idtype
;
4576 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
4577 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Set[TypingHasher#0]", var_class_name
);
4578 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 635);
4582 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingHasher__poset_builder
]))(self
) /* poset_builder on <self:TypingHasher[Object]>*/;
4583 var3
= ((val
* (*)(val
*, val
*))(var2
->class->vft
[COLOR_layout_builders__POSetBuilder__build_poset
]))(var2
, var_elements
) /* build_poset on <var2:POSetBuilder[Object]>*/;
4584 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingHasher__poset_cache_61d
]))(self
, var3
) /* poset_cache= on <self:TypingHasher[Object]>*/;
4585 var4
= NEW_layout_builders__PHLayout(self
->type
->resolution_table
->types
[COLOR_layout_builders__PHLayoutlayout_builders__TypingHasher_FT0layout_builders__TypingHasher_FT0
]);
4586 ((void (*)(val
*))(var4
->class->vft
[COLOR_layout_builders__PHLayout__init
]))(var4
) /* init on <var4:PHLayout[Object, Object]>*/;
4588 var5
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingHasher__build_conflicts
]))(self
, var_elements
) /* build_conflicts on <self:TypingHasher[Object]>*/;
4589 var_conflicts
= var5
;
4590 var6
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingHasher__compute_ids
]))(self
) /* compute_ids on <self:TypingHasher[Object]>*/;
4591 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__ids_61d
]))(var_result
, var6
) /* ids= on <var_result:PHLayout[Object, Object]>*/;
4592 var7
= ((val
* (*)(val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__ids
]))(var_result
) /* ids on <var_result:PHLayout[Object, Object]>*/;
4593 var8
= ((val
* (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__compute_masks
]))(self
, var_conflicts
, var7
) /* compute_masks on <self:TypingHasher[Object]>*/;
4594 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__PHLayout__masks_61d
]))(var_result
, var8
) /* masks= on <var_result:PHLayout[Object, Object]>*/;
4595 var9
= ((val
* (*)(val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__ids
]))(var_result
) /* ids on <var_result:PHLayout[Object, Object]>*/;
4596 var10
= ((val
* (*)(val
*))(var_result
->class->vft
[COLOR_layout_builders__PHLayout__masks
]))(var_result
) /* masks on <var_result:PHLayout[Object, Object]>*/;
4597 var11
= ((val
* (*)(val
*, val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__compute_hashes
]))(self
, var_conflicts
, var9
, var10
) /* compute_hashes on <self:TypingHasher[Object]>*/;
4598 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__PHLayout__hashes_61d
]))(var_result
, var11
) /* hashes= on <var_result:PHLayout[Object, Object]>*/;
4604 /* method layout_builders#TypingHasher#build_layout for (self: Object, Set[Object]): Layout[Object] */
4605 val
* VIRTUAL_layout_builders__TypingHasher__build_layout(val
* self
, val
* p0
) {
4606 val
* var
/* : Layout[Object] */;
4607 val
* var1
/* : PHLayout[Object, Object] */;
4608 var1
= layout_builders__TypingHasher__build_layout(self
, p0
);
4613 /* method layout_builders#TypingHasher#compute_ids for (self: TypingHasher[Object]): Map[Object, Int] */
4614 val
* layout_builders__TypingHasher__compute_ids(val
* self
) {
4615 val
* var
/* : Map[Object, Int] */;
4616 val
* var1
/* : HashMap[Object, Int] */;
4617 val
* var_ids
/* var ids: HashMap[Object, Int] */;
4618 val
* var2
/* : nullable POSet[Object] */;
4619 val
* var3
/* : Array[nullable Object] */;
4620 val
* var_lin
/* var lin: Array[Object] */;
4621 val
* var4
/* : nullable POSet[Object] */;
4622 val
* var5
/* : Iterator[nullable Object] */;
4623 short int var6
/* : Bool */;
4624 val
* var7
/* : nullable Object */;
4625 val
* var_e
/* var e: Object */;
4626 long var8
/* : Int */;
4627 long var9
/* : Int */;
4628 long var10
/* : Int */;
4629 long var12
/* : Int */;
4630 val
* var13
/* : nullable Object */;
4631 var1
= NEW_hash_collection__HashMap(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashMaplayout_builders__TypingHasher_FT0kernel__Int
]);
4632 ((void (*)(val
*))(var1
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var1
) /* init on <var1:HashMap[Object, Int]>*/;
4634 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__poset
]))(self
) /* poset on <self:TypingHasher[Object]>*/;
4636 fprintf(stderr
, "Runtime error: %s", "Receiver is null");
4637 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 648);
4640 var3
= ((val
* (*)(val
*))(var2
->class->vft
[COLOR_array__Collection__to_a
]))(var2
) /* to_a on <var2:nullable POSet[Object]>*/;
4643 var4
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__poset
]))(self
) /* poset on <self:TypingHasher[Object]>*/;
4645 fprintf(stderr
, "Runtime error: %s", "Receiver is null");
4646 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 649);
4649 ((void (*)(val
*, val
*))(var4
->class->vft
[COLOR_sorter__AbstractSorter__sort
]))(var4
, var_lin
) /* sort on <var4:nullable POSet[Object]>*/;
4651 var5
= ((val
* (*)(val
*))(var_lin
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_lin
) /* iterator on <var_lin:Array[Object]>*/;
4653 var6
= ((short int (*)(val
*))(var5
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var5
) /* is_ok on <var5:Iterator[nullable Object]>*/;
4655 var7
= ((val
* (*)(val
*))(var5
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var5
) /* item on <var5:Iterator[nullable Object]>*/;
4657 var8
= ((long (*)(val
*))(var_ids
->class->vft
[COLOR_abstract_collection__MapRead__length
]))(var_ids
) /* length on <var_ids:HashMap[Object, Int]>*/;
4659 { /* Inline kernel#Int#+ (var8,var9) */
4660 var12
= var8
+ var9
;
4663 RET_LABEL11
:(void)0;
4665 var13
= BOX_kernel__Int(var10
); /* autobox from Int to nullable Object */
4666 ((void (*)(val
*, val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_ids
, var_e
, var13
) /* []= on <var_ids:HashMap[Object, Int]>*/;
4667 CONTINUE_label
: (void)0;
4668 ((void (*)(val
*))(var5
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var5
) /* next on <var5:Iterator[nullable Object]>*/;
4670 BREAK_label
: (void)0;
4676 /* method layout_builders#TypingHasher#compute_ids for (self: Object): Map[Object, Int] */
4677 val
* VIRTUAL_layout_builders__TypingHasher__compute_ids(val
* self
) {
4678 val
* var
/* : Map[Object, Int] */;
4679 val
* var1
/* : Map[Object, Int] */;
4680 var1
= layout_builders__TypingHasher__compute_ids(self
);
4685 /* method layout_builders#TypingHasher#build_conflicts for (self: TypingHasher[Object], Set[Object]): Map[Object, Set[Object]] */
4686 val
* layout_builders__TypingHasher__build_conflicts(val
* self
, val
* p0
) {
4687 val
* var
/* : Map[Object, Set[Object]] */;
4688 short int var1
/* : Bool */;
4691 const struct type
* type_struct
;
4692 const char* var_class_name
;
4693 val
* var_elements
/* var elements: Set[Object] */;
4694 val
* var2
/* : HashMap[Object, Set[Object]] */;
4695 val
* var_conflicts
/* var conflicts: HashMap[Object, Set[Object]] */;
4696 val
* var3
/* : Iterator[nullable Object] */;
4697 short int var4
/* : Bool */;
4698 val
* var5
/* : nullable Object */;
4699 val
* var_e
/* var e: Object */;
4700 val
* var6
/* : HashSet[Object] */;
4701 val
* var_supers
/* var supers: HashSet[Object] */;
4702 val
* var7
/* : nullable POSet[Object] */;
4703 val
* var8
/* : POSetElement[Object] */;
4704 val
* var9
/* : Collection[Object] */;
4705 /* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingHasher#0] */
4706 /* <p0:Set[Object]> isa Set[TypingHasher#0] */
4707 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Setlayout_builders__TypingHasher_FT0
];
4708 cltype
= type_struct
->color
;
4709 idtype
= type_struct
->id
;
4710 if(cltype
>= p0
->type
->table_size
) {
4713 var1
= p0
->type
->type_table
[cltype
] == idtype
;
4716 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
4717 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Set[TypingHasher#0]", var_class_name
);
4718 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 656);
4722 var2
= NEW_hash_collection__HashMap(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashMaplayout_builders__TypingHasher_FT0abstract_collection__Setlayout_builders__TypingHasher_FT0
]);
4723 ((void (*)(val
*))(var2
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var2
) /* init on <var2:HashMap[Object, Set[Object]]>*/;
4724 var_conflicts
= var2
;
4725 var3
= ((val
* (*)(val
*))(var_elements
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_elements
) /* iterator on <var_elements:Set[Object]>*/;
4727 var4
= ((short int (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var3
) /* is_ok on <var3:Iterator[nullable Object]>*/;
4729 var5
= ((val
* (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var3
) /* item on <var3:Iterator[nullable Object]>*/;
4731 var6
= NEW_hash_collection__HashSet(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashSetlayout_builders__TypingHasher_FT0
]);
4732 ((void (*)(val
*))(var6
->class->vft
[COLOR_hash_collection__HashSet__init
]))(var6
) /* init on <var6:HashSet[Object]>*/;
4734 var7
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__poset
]))(self
) /* poset on <self:TypingHasher[Object]>*/;
4736 fprintf(stderr
, "Runtime error: %s", "Receiver is null");
4737 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 660);
4740 var8
= ((val
* (*)(val
*, val
*))(var7
->class->vft
[COLOR_poset__POSet___91d_93d
]))(var7
, var_e
) /* [] on <var7:nullable POSet[Object]>*/;
4742 var9
= ((val
* (*)(val
*))(var8
->class->vft
[COLOR_poset__POSetElement__greaters
]))(var8
) /* greaters on <var8:POSetElement[Object]>*/;
4743 ((void (*)(val
*, val
*))(var_supers
->class->vft
[COLOR_abstract_collection__SimpleCollection__add_all
]))(var_supers
, var9
) /* add_all on <var_supers:HashSet[Object]>*/;
4744 ((void (*)(val
*, val
*))(var_supers
->class->vft
[COLOR_abstract_collection__SimpleCollection__add
]))(var_supers
, var_e
) /* add on <var_supers:HashSet[Object]>*/;
4745 ((void (*)(val
*, val
*, val
*))(var_conflicts
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_conflicts
, var_e
, var_supers
) /* []= on <var_conflicts:HashMap[Object, Set[Object]]>*/;
4746 CONTINUE_label
: (void)0;
4747 ((void (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var3
) /* next on <var3:Iterator[nullable Object]>*/;
4749 BREAK_label
: (void)0;
4750 var
= var_conflicts
;
4755 /* method layout_builders#TypingHasher#build_conflicts for (self: Object, Set[Object]): Map[Object, Set[Object]] */
4756 val
* VIRTUAL_layout_builders__TypingHasher__build_conflicts(val
* self
, val
* p0
) {
4757 val
* var
/* : Map[Object, Set[Object]] */;
4758 val
* var1
/* : Map[Object, Set[Object]] */;
4759 var1
= layout_builders__TypingHasher__build_conflicts(self
, p0
);
4764 /* method layout_builders#MTypeHasher#init for (self: MTypeHasher, PHOperator, MModule) */
4765 void layout_builders__MTypeHasher__init(val
* self
, val
* p0
, val
* p1
) {
4766 val
* var_operator
/* var operator: PHOperator */;
4767 val
* var_mmodule
/* var mmodule: MModule */;
4768 val
* var
/* : MTypePOSetBuilder */;
4771 var
= NEW_layout_builders__MTypePOSetBuilder(&type_layout_builders__MTypePOSetBuilder
);
4772 ((void (*)(val
*, val
*))(var
->class->vft
[COLOR_layout_builders__POSetBuilder__init
]))(var
, var_mmodule
) /* init on <var:MTypePOSetBuilder>*/;
4773 ((void (*)(val
*, val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingHasher__init
]))(self
, var_mmodule
, var
, var_operator
) /* init on <self:MTypeHasher>*/;
4776 /* method layout_builders#MTypeHasher#init for (self: Object, PHOperator, MModule) */
4777 void VIRTUAL_layout_builders__MTypeHasher__init(val
* self
, val
* p0
, val
* p1
) {
4778 layout_builders__MTypeHasher__init(self
, p0
, p1
);
4781 /* method layout_builders#MClassHasher#init for (self: MClassHasher, PHOperator, MModule) */
4782 void layout_builders__MClassHasher__init(val
* self
, val
* p0
, val
* p1
) {
4783 val
* var_operator
/* var operator: PHOperator */;
4784 val
* var_mmodule
/* var mmodule: MModule */;
4785 val
* var
/* : MClassPOSetBuilder */;
4788 var
= NEW_layout_builders__MClassPOSetBuilder(&type_layout_builders__MClassPOSetBuilder
);
4789 ((void (*)(val
*, val
*))(var
->class->vft
[COLOR_layout_builders__POSetBuilder__init
]))(var
, var_mmodule
) /* init on <var:MClassPOSetBuilder>*/;
4790 ((void (*)(val
*, val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__TypingHasher__init
]))(self
, var_mmodule
, var
, var_operator
) /* init on <self:MClassHasher>*/;
4793 /* method layout_builders#MClassHasher#init for (self: Object, PHOperator, MModule) */
4794 void VIRTUAL_layout_builders__MClassHasher__init(val
* self
, val
* p0
, val
* p1
) {
4795 layout_builders__MClassHasher__init(self
, p0
, p1
);
4798 /* method layout_builders#MPropertyHasher#mmodule for (self: MPropertyHasher[PropertyLayoutElement]): MModule */
4799 val
* layout_builders__MPropertyHasher__mmodule(val
* self
) {
4800 val
* var
/* : MModule */;
4801 val
* var1
/* : MModule */;
4802 var1
= self
->attrs
[COLOR_layout_builders__MPropertyHasher___64dmmodule
].val
; /* @mmodule on <self:MPropertyHasher[PropertyLayoutElement]> */
4804 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @mmodule");
4805 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 685);
4812 /* method layout_builders#MPropertyHasher#mmodule for (self: Object): MModule */
4813 val
* VIRTUAL_layout_builders__MPropertyHasher__mmodule(val
* self
) {
4814 val
* var
/* : MModule */;
4815 val
* var1
/* : MModule */;
4816 var1
= layout_builders__MPropertyHasher__mmodule(self
);
4821 /* method layout_builders#MPropertyHasher#mmodule= for (self: MPropertyHasher[PropertyLayoutElement], MModule) */
4822 void layout_builders__MPropertyHasher__mmodule_61d(val
* self
, val
* p0
) {
4823 self
->attrs
[COLOR_layout_builders__MPropertyHasher___64dmmodule
].val
= p0
; /* @mmodule on <self:MPropertyHasher[PropertyLayoutElement]> */
4826 /* method layout_builders#MPropertyHasher#mmodule= for (self: Object, MModule) */
4827 void VIRTUAL_layout_builders__MPropertyHasher__mmodule_61d(val
* self
, val
* p0
) {
4828 layout_builders__MPropertyHasher__mmodule_61d(self
, p0
);
4831 /* method layout_builders#MPropertyHasher#init for (self: MPropertyHasher[PropertyLayoutElement], PHOperator, MModule) */
4832 void layout_builders__MPropertyHasher__init(val
* self
, val
* p0
, val
* p1
) {
4833 val
* var_operator
/* var operator: PHOperator */;
4834 val
* var_mmodule
/* var mmodule: MModule */;
4837 ((void (*)(val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__init
]))(self
) /* init on <self:MPropertyHasher[PropertyLayoutElement]>*/;
4838 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__operator_61d
]))(self
, var_operator
) /* operator= on <self:MPropertyHasher[PropertyLayoutElement]>*/;
4839 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyHasher__mmodule_61d
]))(self
, var_mmodule
) /* mmodule= on <self:MPropertyHasher[PropertyLayoutElement]>*/;
4842 /* method layout_builders#MPropertyHasher#init for (self: Object, PHOperator, MModule) */
4843 void VIRTUAL_layout_builders__MPropertyHasher__init(val
* self
, val
* p0
, val
* p1
) {
4844 layout_builders__MPropertyHasher__init(self
, p0
, p1
);
4847 /* method layout_builders#MPropertyHasher#build_poset for (self: MPropertyHasher[PropertyLayoutElement], Set[MClass]): POSet[MClass] */
4848 val
* layout_builders__MPropertyHasher__build_poset(val
* self
, val
* p0
) {
4849 val
* var
/* : POSet[MClass] */;
4850 val
* var_mclasses
/* var mclasses: Set[MClass] */;
4851 val
* var1
/* : POSet[MClass] */;
4852 val
* var_poset
/* var poset: POSet[MClass] */;
4853 val
* var2
/* : Iterator[nullable Object] */;
4854 short int var3
/* : Bool */;
4855 val
* var4
/* : nullable Object */;
4856 val
* var_e
/* var e: MClass */;
4857 val
* var5
/* : POSetElement[Object] */;
4858 val
* var6
/* : Iterator[nullable Object] */;
4859 short int var7
/* : Bool */;
4860 val
* var8
/* : nullable Object */;
4861 val
* var_o
/* var o: MClass */;
4862 short int var9
/* : Bool */;
4863 short int var10
/* : Bool */;
4864 short int var_
/* var : Bool */;
4865 val
* var11
/* : MModule */;
4866 val
* var12
/* : POSet[MClass] */;
4867 short int var13
/* : Bool */;
4868 short int var14
/* : Bool */;
4869 val
* var15
/* : MModule */;
4870 val
* var16
/* : POSetElement[MClass] */;
4871 short int var17
/* : Bool */;
4873 var1
= NEW_poset__POSet(&type_poset__POSetmodel__MClass
);
4874 ((void (*)(val
*))(var1
->class->vft
[COLOR_poset__POSet__init
]))(var1
) /* init on <var1:POSet[MClass]>*/;
4876 var2
= ((val
* (*)(val
*))(var_mclasses
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_mclasses
) /* iterator on <var_mclasses:Set[MClass]>*/;
4878 var3
= ((short int (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var2
) /* is_ok on <var2:Iterator[nullable Object]>*/;
4880 var4
= ((val
* (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var2
) /* item on <var2:Iterator[nullable Object]>*/;
4882 var5
= ((val
* (*)(val
*, val
*))(var_poset
->class->vft
[COLOR_poset__POSet__add_node
]))(var_poset
, var_e
) /* add_node on <var_poset:POSet[MClass]>*/;
4884 var6
= ((val
* (*)(val
*))(var_mclasses
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_mclasses
) /* iterator on <var_mclasses:Set[MClass]>*/;
4886 var7
= ((short int (*)(val
*))(var6
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var6
) /* is_ok on <var6:Iterator[nullable Object]>*/;
4888 var8
= ((val
* (*)(val
*))(var6
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var6
) /* item on <var6:Iterator[nullable Object]>*/;
4890 var10
= ((short int (*)(val
*, val
*))(var_e
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var_e
, var_o
) /* == on <var_e:MClass>*/;
4895 var11
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyHasher__mmodule
]))(self
) /* mmodule on <self:MPropertyHasher[PropertyLayoutElement]>*/;
4896 var12
= ((val
* (*)(val
*))(var11
->class->vft
[COLOR_model__MModule__flatten_mclass_hierarchy
]))(var11
) /* flatten_mclass_hierarchy on <var11:MModule>*/;
4897 var13
= ((short int (*)(val
*, val
*))(var12
->class->vft
[COLOR_abstract_collection__Collection__has
]))(var12
, var_e
) /* has on <var12:POSet[MClass]>*/;
4902 goto CONTINUE_label
;
4905 var15
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyHasher__mmodule
]))(self
) /* mmodule on <self:MPropertyHasher[PropertyLayoutElement]>*/;
4906 var16
= ((val
* (*)(val
*, val
*))(var_e
->class->vft
[COLOR_model__MClass__in_hierarchy
]))(var_e
, var15
) /* in_hierarchy on <var_e:MClass>*/;
4907 var17
= ((short int (*)(val
*, val
*))(var16
->class->vft
[COLOR_poset__POSetElement___60d
]))(var16
, var_o
) /* < on <var16:POSetElement[MClass]>*/;
4909 ((void (*)(val
*, val
*, val
*))(var_poset
->class->vft
[COLOR_poset__POSet__add_edge
]))(var_poset
, var_e
, var_o
) /* add_edge on <var_poset:POSet[MClass]>*/;
4912 CONTINUE_label
: (void)0;
4913 ((void (*)(val
*))(var6
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var6
) /* next on <var6:Iterator[nullable Object]>*/;
4915 BREAK_label
: (void)0;
4916 CONTINUE_label18
: (void)0;
4917 ((void (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var2
) /* next on <var2:Iterator[nullable Object]>*/;
4919 BREAK_label18
: (void)0;
4925 /* method layout_builders#MPropertyHasher#build_poset for (self: Object, Set[MClass]): POSet[MClass] */
4926 val
* VIRTUAL_layout_builders__MPropertyHasher__build_poset(val
* self
, val
* p0
) {
4927 val
* var
/* : POSet[MClass] */;
4928 val
* var1
/* : POSet[MClass] */;
4929 var1
= layout_builders__MPropertyHasher__build_poset(self
, p0
);
4934 /* method layout_builders#MPropertyHasher#build_layout for (self: MPropertyHasher[PropertyLayoutElement], Map[MClass, Set[PropertyLayoutElement]]): Layout[PropertyLayoutElement] */
4935 val
* layout_builders__MPropertyHasher__build_layout(val
* self
, val
* p0
) {
4936 val
* var
/* : Layout[PropertyLayoutElement] */;
4937 short int var1
/* : Bool */;
4940 const struct type
* type_struct
;
4941 const char* var_class_name
;
4942 val
* var_elements
/* var elements: Map[MClass, Set[PropertyLayoutElement]] */;
4943 val
* var2
/* : PHLayout[MClass, PropertyLayoutElement] */;
4944 val
* var_result
/* var result: PHLayout[MClass, PropertyLayoutElement] */;
4945 val
* var3
/* : HashMap[PropertyLayoutElement, Int] */;
4946 val
* var_ids
/* var ids: HashMap[PropertyLayoutElement, Int] */;
4947 val
* var4
/* : HashSet[MClass] */;
4948 val
* var_mclasses
/* var mclasses: HashSet[MClass] */;
4949 val
* var5
/* : Collection[Object] */;
4950 val
* var6
/* : POSet[MClass] */;
4951 val
* var_poset
/* var poset: POSet[MClass] */;
4952 val
* var7
/* : Array[nullable Object] */;
4953 val
* var_lin
/* var lin: Array[MClass] */;
4954 val
* var8
/* : Array[nullable Object] */;
4955 val
* var9
/* : Iterator[nullable Object] */;
4956 short int var10
/* : Bool */;
4957 val
* var11
/* : nullable Object */;
4958 val
* var_mclass
/* var mclass: MClass */;
4959 val
* var12
/* : nullable Object */;
4960 val
* var13
/* : Iterator[nullable Object] */;
4961 short int var14
/* : Bool */;
4962 val
* var15
/* : nullable Object */;
4963 val
* var_mproperty
/* var mproperty: PropertyLayoutElement */;
4964 short int var16
/* : Bool */;
4965 long var17
/* : Int */;
4966 long var18
/* : Int */;
4967 long var19
/* : Int */;
4968 long var21
/* : Int */;
4969 val
* var22
/* : nullable Object */;
4970 val
* var24
/* : Map[Object, Int] */;
4971 val
* var25
/* : Map[Object, Int] */;
4972 val
* var26
/* : Map[Object, Map[Object, Int]] */;
4973 /* Covariant cast for argument 0 (elements) <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[PropertyLayoutBuilder#0]] */
4974 /* <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[PropertyLayoutBuilder#0]] */
4975 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_collection__Mapmodel__MClassabstract_collection__Setlayout_builders__PropertyLayoutBuilder_FT0
];
4976 cltype
= type_struct
->color
;
4977 idtype
= type_struct
->id
;
4978 if(cltype
>= p0
->type
->table_size
) {
4981 var1
= p0
->type
->type_table
[cltype
] == idtype
;
4984 var_class_name
= p0
== NULL ?
"null" : p0
->type
->name
;
4985 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[MClass, Set[PropertyLayoutBuilder#0]]", var_class_name
);
4986 fprintf(stderr
, " (%s:%d)\n", "src/layout_builders.nit", 704);
4990 var2
= NEW_layout_builders__PHLayout(self
->type
->resolution_table
->types
[COLOR_layout_builders__PHLayoutmodel__MClasslayout_builders__MPropertyHasher_FT0
]);
4991 ((void (*)(val
*))(var2
->class->vft
[COLOR_layout_builders__PHLayout__init
]))(var2
) /* init on <var2:PHLayout[MClass, PropertyLayoutElement]>*/;
4993 var3
= NEW_hash_collection__HashMap(self
->type
->resolution_table
->types
[COLOR_hash_collection__HashMaplayout_builders__MPropertyHasher_FT0kernel__Int
]);
4994 ((void (*)(val
*))(var3
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var3
) /* init on <var3:HashMap[PropertyLayoutElement, Int]>*/;
4996 var4
= NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClass
);
4997 ((void (*)(val
*))(var4
->class->vft
[COLOR_hash_collection__HashSet__init
]))(var4
) /* init on <var4:HashSet[MClass]>*/;
4998 var_mclasses
= var4
;
4999 var5
= ((val
* (*)(val
*))(var_elements
->class->vft
[COLOR_abstract_collection__MapRead__keys
]))(var_elements
) /* keys on <var_elements:Map[MClass, Set[PropertyLayoutElement]]>*/;
5000 ((void (*)(val
*, val
*))(var_mclasses
->class->vft
[COLOR_abstract_collection__SimpleCollection__add_all
]))(var_mclasses
, var5
) /* add_all on <var_mclasses:HashSet[MClass]>*/;
5001 var6
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__MPropertyHasher__build_poset
]))(self
, var_mclasses
) /* build_poset on <self:MPropertyHasher[PropertyLayoutElement]>*/;
5003 var7
= ((val
* (*)(val
*))(var_poset
->class->vft
[COLOR_array__Collection__to_a
]))(var_poset
) /* to_a on <var_poset:POSet[MClass]>*/;
5005 ((void (*)(val
*, val
*))(var_poset
->class->vft
[COLOR_sorter__AbstractSorter__sort
]))(var_poset
, var_lin
) /* sort on <var_poset:POSet[MClass]>*/;
5006 var8
= ((val
* (*)(val
*))(var_lin
->class->vft
[COLOR_array__AbstractArrayRead__reversed
]))(var_lin
) /* reversed on <var_lin:Array[MClass]>*/;
5007 var9
= ((val
* (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var8
) /* iterator on <var8:Array[nullable Object](Array[MClass])>*/;
5009 var10
= ((short int (*)(val
*))(var9
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var9
) /* is_ok on <var9:Iterator[nullable Object]>*/;
5011 var11
= ((val
* (*)(val
*))(var9
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var9
) /* item on <var9:Iterator[nullable Object]>*/;
5013 var12
= ((val
* (*)(val
*, val
*))(var_elements
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var_elements
, var_mclass
) /* [] on <var_elements:Map[MClass, Set[PropertyLayoutElement]]>*/;
5014 var13
= ((val
* (*)(val
*))(var12
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var12
) /* iterator on <var12:nullable Object(Set[PropertyLayoutElement])>*/;
5016 var14
= ((short int (*)(val
*))(var13
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var13
) /* is_ok on <var13:Iterator[nullable Object]>*/;
5018 var15
= ((val
* (*)(val
*))(var13
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var13
) /* item on <var13:Iterator[nullable Object]>*/;
5019 var_mproperty
= var15
;
5020 var16
= ((short int (*)(val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var_ids
, var_mproperty
) /* has_key on <var_ids:HashMap[PropertyLayoutElement, Int]>*/;
5022 goto CONTINUE_label
;
5025 var17
= ((long (*)(val
*))(var_ids
->class->vft
[COLOR_abstract_collection__MapRead__length
]))(var_ids
) /* length on <var_ids:HashMap[PropertyLayoutElement, Int]>*/;
5027 { /* Inline kernel#Int#+ (var17,var18) */
5028 var21
= var17
+ var18
;
5031 RET_LABEL20
:(void)0;
5033 var22
= BOX_kernel__Int(var19
); /* autobox from Int to nullable Object */
5034 ((void (*)(val
*, val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_ids
, var_mproperty
, var22
) /* []= on <var_ids:HashMap[PropertyLayoutElement, Int]>*/;
5035 CONTINUE_label
: (void)0;
5036 ((void (*)(val
*))(var13
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var13
) /* next on <var13:Iterator[nullable Object]>*/;
5038 BREAK_label
: (void)0;
5039 CONTINUE_label23
: (void)0;
5040 ((void (*)(val
*))(var9
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var9
) /* next on <var9:Iterator[nullable Object]>*/;
5042 BREAK_label23
: (void)0;
5043 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__ids_61d
]))(var_result
, var_ids
) /* ids= on <var_result:PHLayout[MClass, PropertyLayoutElement]>*/;
5044 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__pos_61d
]))(var_result
, var_ids
) /* pos= on <var_result:PHLayout[MClass, PropertyLayoutElement]>*/;
5045 var24
= ((val
* (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__compute_masks
]))(self
, var_elements
, var_ids
) /* compute_masks on <self:MPropertyHasher[PropertyLayoutElement]>*/;
5046 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__PHLayout__masks_61d
]))(var_result
, var24
) /* masks= on <var_result:PHLayout[MClass, PropertyLayoutElement]>*/;
5047 var25
= ((val
* (*)(val
*))(var_result
->class->vft
[COLOR_layout_builders__PHLayout__masks
]))(var_result
) /* masks on <var_result:PHLayout[MClass, PropertyLayoutElement]>*/;
5048 var26
= ((val
* (*)(val
*, val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__compute_hashes
]))(self
, var_elements
, var_ids
, var25
) /* compute_hashes on <self:MPropertyHasher[PropertyLayoutElement]>*/;
5049 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__PHLayout__hashes_61d
]))(var_result
, var26
) /* hashes= on <var_result:PHLayout[MClass, PropertyLayoutElement]>*/;
5055 /* method layout_builders#MPropertyHasher#build_layout for (self: Object, Map[MClass, Set[PropertyLayoutElement]]): Layout[PropertyLayoutElement] */
5056 val
* VIRTUAL_layout_builders__MPropertyHasher__build_layout(val
* self
, val
* p0
) {
5057 val
* var
/* : Layout[PropertyLayoutElement] */;
5058 val
* var1
/* : Layout[PropertyLayoutElement] */;
5059 var1
= layout_builders__MPropertyHasher__build_layout(self
, p0
);
5064 /* method layout_builders#ResolutionHasher#init for (self: ResolutionHasher, PHOperator) */
5065 void layout_builders__ResolutionHasher__init(val
* self
, val
* p0
) {
5066 val
* var_operator
/* var operator: PHOperator */;
5068 ((void (*)(val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__init
]))(self
) /* init on <self:ResolutionHasher>*/;
5069 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__operator_61d
]))(self
, var_operator
) /* operator= on <self:ResolutionHasher>*/;
5072 /* method layout_builders#ResolutionHasher#init for (self: Object, PHOperator) */
5073 void VIRTUAL_layout_builders__ResolutionHasher__init(val
* self
, val
* p0
) {
5074 layout_builders__ResolutionHasher__init(self
, p0
);
5077 /* method layout_builders#ResolutionHasher#build_layout for (self: ResolutionHasher, Map[MClassType, Set[MType]]): Layout[MType] */
5078 val
* layout_builders__ResolutionHasher__build_layout(val
* self
, val
* p0
) {
5079 val
* var
/* : Layout[MType] */;
5080 val
* var_elements
/* var elements: Map[MClassType, Set[MType]] */;
5081 val
* var1
/* : PHLayout[MClassType, MType] */;
5082 val
* var_result
/* var result: PHLayout[MClassType, MType] */;
5083 val
* var2
/* : HashMap[MType, Int] */;
5084 val
* var_ids
/* var ids: HashMap[MType, Int] */;
5085 long var3
/* : Int */;
5086 long var_color
/* var color: Int */;
5087 val
* var4
/* : MapIterator[Object, nullable Object] */;
5088 short int var5
/* : Bool */;
5089 val
* var6
/* : Object */;
5090 val
* var_mclasstype
/* var mclasstype: MClassType */;
5091 val
* var7
/* : nullable Object */;
5092 val
* var_mclasstypes
/* var mclasstypes: Set[MType] */;
5093 val
* var8
/* : Iterator[nullable Object] */;
5094 short int var9
/* : Bool */;
5095 val
* var10
/* : nullable Object */;
5096 val
* var_element
/* var element: MType */;
5097 short int var11
/* : Bool */;
5098 val
* var12
/* : nullable Object */;
5099 long var13
/* : Int */;
5100 long var14
/* : Int */;
5101 long var16
/* : Int */;
5102 val
* var18
/* : Map[Object, Int] */;
5103 val
* var19
/* : Map[Object, Int] */;
5104 val
* var20
/* : Map[Object, Map[Object, Int]] */;
5106 var1
= NEW_layout_builders__PHLayout(&type_layout_builders__PHLayoutmodel__MClassTypemodel__MType
);
5107 ((void (*)(val
*))(var1
->class->vft
[COLOR_layout_builders__PHLayout__init
]))(var1
) /* init on <var1:PHLayout[MClassType, MType]>*/;
5109 var2
= NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MTypekernel__Int
);
5110 ((void (*)(val
*))(var2
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var2
) /* init on <var2:HashMap[MType, Int]>*/;
5114 var4
= ((val
* (*)(val
*))(var_elements
->class->vft
[COLOR_abstract_collection__MapRead__iterator
]))(var_elements
) /* iterator on <var_elements:Map[MClassType, Set[MType]]>*/;
5116 var5
= ((short int (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__MapIterator__is_ok
]))(var4
) /* is_ok on <var4:MapIterator[Object, nullable Object]>*/;
5118 var6
= ((val
* (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__MapIterator__key
]))(var4
) /* key on <var4:MapIterator[Object, nullable Object]>*/;
5119 var_mclasstype
= var6
;
5120 var7
= ((val
* (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__MapIterator__item
]))(var4
) /* item on <var4:MapIterator[Object, nullable Object]>*/;
5121 var_mclasstypes
= var7
;
5122 var8
= ((val
* (*)(val
*))(var_mclasstypes
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_mclasstypes
) /* iterator on <var_mclasstypes:Set[MType]>*/;
5124 var9
= ((short int (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var8
) /* is_ok on <var8:Iterator[nullable Object]>*/;
5126 var10
= ((val
* (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var8
) /* item on <var8:Iterator[nullable Object]>*/;
5127 var_element
= var10
;
5128 var11
= ((short int (*)(val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__MapRead__has_key
]))(var_ids
, var_element
) /* has_key on <var_ids:HashMap[MType, Int]>*/;
5130 goto CONTINUE_label
;
5133 var12
= BOX_kernel__Int(var_color
); /* autobox from Int to nullable Object */
5134 ((void (*)(val
*, val
*, val
*))(var_ids
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_ids
, var_element
, var12
) /* []= on <var_ids:HashMap[MType, Int]>*/;
5136 { /* Inline kernel#Int#+ (var_color,var13) */
5137 var16
= var_color
+ var13
;
5140 RET_LABEL15
:(void)0;
5143 CONTINUE_label
: (void)0;
5144 ((void (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var8
) /* next on <var8:Iterator[nullable Object]>*/;
5146 BREAK_label
: (void)0;
5147 CONTINUE_label17
: (void)0;
5148 ((void (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__MapIterator__next
]))(var4
) /* next on <var4:MapIterator[Object, nullable Object]>*/;
5150 BREAK_label17
: (void)0;
5151 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__ids_61d
]))(var_result
, var_ids
) /* ids= on <var_result:PHLayout[MClassType, MType]>*/;
5152 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__Layout__pos_61d
]))(var_result
, var_ids
) /* pos= on <var_result:PHLayout[MClassType, MType]>*/;
5153 var18
= ((val
* (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__compute_masks
]))(self
, var_elements
, var_ids
) /* compute_masks on <self:ResolutionHasher>*/;
5154 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__PHLayout__masks_61d
]))(var_result
, var18
) /* masks= on <var_result:PHLayout[MClassType, MType]>*/;
5155 var19
= ((val
* (*)(val
*))(var_result
->class->vft
[COLOR_layout_builders__PHLayout__masks
]))(var_result
) /* masks on <var_result:PHLayout[MClassType, MType]>*/;
5156 var20
= ((val
* (*)(val
*, val
*, val
*, val
*))(self
->class->vft
[COLOR_layout_builders__PerfectHasher__compute_hashes
]))(self
, var_elements
, var_ids
, var19
) /* compute_hashes on <self:ResolutionHasher>*/;
5157 ((void (*)(val
*, val
*))(var_result
->class->vft
[COLOR_layout_builders__PHLayout__hashes_61d
]))(var_result
, var20
) /* hashes= on <var_result:PHLayout[MClassType, MType]>*/;
5163 /* method layout_builders#ResolutionHasher#build_layout for (self: Object, Map[MClassType, Set[MType]]): Layout[MType] */
5164 val
* VIRTUAL_layout_builders__ResolutionHasher__build_layout(val
* self
, val
* p0
) {
5165 val
* var
/* : Layout[MType] */;
5166 val
* var1
/* : Layout[MType] */;
5167 var1
= layout_builders__ResolutionHasher__build_layout(self
, p0
);