nitc: fix calling extern constructors from extern code in separate compiler
[nit.git] / c_src / poset.sep.1.c
1 #include "poset.sep.0.h"
2 /* method poset#POSet#iterator for (self: POSet[Object]): Iterator[Object] */
3 val* poset__POSet__iterator(val* self) {
4 val* var /* : Iterator[Object] */;
5 val* var1 /* : HashMap[Object, POSetElement[Object]] */;
6 val* var3 /* : HashMap[Object, POSetElement[Object]] */;
7 val* var4 /* : RemovableCollection[Object] */;
8 val* var6 /* : RemovableCollection[Object] */;
9 val* var7 /* : Iterator[nullable Object] */;
10 {
11 { /* Inline poset#POSet#elements (self) on <self:POSet[Object]> */
12 var3 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[Object]> */
13 if (unlikely(var3 == NULL)) {
14 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
15 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 33);
16 show_backtrace(1);
17 }
18 var1 = var3;
19 RET_LABEL2:(void)0;
20 }
21 }
22 {
23 { /* Inline hash_collection#HashMap#keys (var1) on <var1:HashMap[Object, POSetElement[Object]]> */
24 var6 = var1->attrs[COLOR_hash_collection__HashMap___keys].val; /* _keys on <var1:HashMap[Object, POSetElement[Object]]> */
25 if (unlikely(var6 == NULL)) {
26 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _keys");
27 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 249);
28 show_backtrace(1);
29 }
30 var4 = var6;
31 RET_LABEL5:(void)0;
32 }
33 }
34 {
35 var7 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Collection__iterator]))(var4) /* iterator on <var4:RemovableCollection[Object]>*/;
36 }
37 var = var7;
38 goto RET_LABEL;
39 RET_LABEL:;
40 return var;
41 }
42 /* method poset#POSet#iterator for (self: Object): Iterator[nullable Object] */
43 val* VIRTUAL_poset__POSet__iterator(val* self) {
44 val* var /* : Iterator[nullable Object] */;
45 val* var1 /* : Iterator[Object] */;
46 var1 = poset__POSet__iterator(self);
47 var = var1;
48 RET_LABEL:;
49 return var;
50 }
51 /* method poset#POSet#elements for (self: POSet[Object]): HashMap[Object, POSetElement[Object]] */
52 val* poset__POSet__elements(val* self) {
53 val* var /* : HashMap[Object, POSetElement[Object]] */;
54 val* var1 /* : HashMap[Object, POSetElement[Object]] */;
55 var1 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[Object]> */
56 if (unlikely(var1 == NULL)) {
57 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
58 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 33);
59 show_backtrace(1);
60 }
61 var = var1;
62 RET_LABEL:;
63 return var;
64 }
65 /* method poset#POSet#elements for (self: Object): HashMap[Object, POSetElement[Object]] */
66 val* VIRTUAL_poset__POSet__elements(val* self) {
67 val* var /* : HashMap[Object, POSetElement[Object]] */;
68 val* var1 /* : HashMap[Object, POSetElement[Object]] */;
69 val* var3 /* : HashMap[Object, POSetElement[Object]] */;
70 { /* Inline poset#POSet#elements (self) on <self:Object(POSet[Object])> */
71 var3 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:Object(POSet[Object])> */
72 if (unlikely(var3 == NULL)) {
73 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
74 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 33);
75 show_backtrace(1);
76 }
77 var1 = var3;
78 RET_LABEL2:(void)0;
79 }
80 var = var1;
81 RET_LABEL:;
82 return var;
83 }
84 /* method poset#POSet#has for (self: POSet[Object], Object): Bool */
85 short int poset__POSet__has(val* self, val* p0) {
86 short int var /* : Bool */;
87 short int var1 /* : Bool */;
88 int cltype;
89 int idtype;
90 const struct type* type_struct;
91 const char* var_class_name;
92 val* var_e /* var e: Object */;
93 val* var2 /* : HashMap[Object, POSetElement[Object]] */;
94 val* var4 /* : HashMap[Object, POSetElement[Object]] */;
95 val* var5 /* : RemovableCollection[Object] */;
96 val* var7 /* : RemovableCollection[Object] */;
97 short int var8 /* : Bool */;
98 /* Covariant cast for argument 0 (e) <p0:Object> isa E */
99 /* <p0:Object> isa E */
100 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collection_FT0];
101 cltype = type_struct->color;
102 idtype = type_struct->id;
103 if(cltype >= p0->type->table_size) {
104 var1 = 0;
105 } else {
106 var1 = p0->type->type_table[cltype] == idtype;
107 }
108 if (unlikely(!var1)) {
109 var_class_name = p0 == NULL ? "null" : p0->type->name;
110 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
111 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 36);
112 show_backtrace(1);
113 }
114 var_e = p0;
115 {
116 { /* Inline poset#POSet#elements (self) on <self:POSet[Object]> */
117 var4 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[Object]> */
118 if (unlikely(var4 == NULL)) {
119 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
120 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 33);
121 show_backtrace(1);
122 }
123 var2 = var4;
124 RET_LABEL3:(void)0;
125 }
126 }
127 {
128 { /* Inline hash_collection#HashMap#keys (var2) on <var2:HashMap[Object, POSetElement[Object]]> */
129 var7 = var2->attrs[COLOR_hash_collection__HashMap___keys].val; /* _keys on <var2:HashMap[Object, POSetElement[Object]]> */
130 if (unlikely(var7 == NULL)) {
131 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _keys");
132 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 249);
133 show_backtrace(1);
134 }
135 var5 = var7;
136 RET_LABEL6:(void)0;
137 }
138 }
139 {
140 var8 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__Collection__has]))(var5, var_e) /* has on <var5:RemovableCollection[Object]>*/;
141 }
142 var = var8;
143 goto RET_LABEL;
144 RET_LABEL:;
145 return var;
146 }
147 /* method poset#POSet#has for (self: Object, nullable Object): Bool */
148 short int VIRTUAL_poset__POSet__has(val* self, val* p0) {
149 short int var /* : Bool */;
150 short int var1 /* : Bool */;
151 var1 = poset__POSet__has(self, p0);
152 var = var1;
153 RET_LABEL:;
154 return var;
155 }
156 /* method poset#POSet#add_node for (self: POSet[Object], Object): POSetElement[Object] */
157 val* poset__POSet__add_node(val* self, val* p0) {
158 val* var /* : POSetElement[Object] */;
159 short int var1 /* : Bool */;
160 int cltype;
161 int idtype;
162 const struct type* type_struct;
163 const char* var_class_name;
164 val* var_e /* var e: Object */;
165 val* var2 /* : HashMap[Object, POSetElement[Object]] */;
166 val* var4 /* : HashMap[Object, POSetElement[Object]] */;
167 val* var5 /* : RemovableCollection[Object] */;
168 val* var7 /* : RemovableCollection[Object] */;
169 short int var8 /* : Bool */;
170 val* var9 /* : HashMap[Object, POSetElement[Object]] */;
171 val* var11 /* : HashMap[Object, POSetElement[Object]] */;
172 val* var12 /* : nullable Object */;
173 val* var13 /* : POSetElement[Object] */;
174 val* var14 /* : HashMap[Object, POSetElement[Object]] */;
175 val* var16 /* : HashMap[Object, POSetElement[Object]] */;
176 long var17 /* : Int */;
177 val* var_poe /* var poe: POSetElement[Object] */;
178 val* var18 /* : HashSet[Object] */;
179 val* var20 /* : HashSet[Object] */;
180 val* var21 /* : HashSet[Object] */;
181 val* var23 /* : HashSet[Object] */;
182 val* var24 /* : HashMap[Object, POSetElement[Object]] */;
183 val* var26 /* : HashMap[Object, POSetElement[Object]] */;
184 /* Covariant cast for argument 0 (e) <p0:Object> isa E */
185 /* <p0:Object> isa E */
186 type_struct = self->type->resolution_table->types[COLOR_poset__POSet_FT0];
187 cltype = type_struct->color;
188 idtype = type_struct->id;
189 if(cltype >= p0->type->table_size) {
190 var1 = 0;
191 } else {
192 var1 = p0->type->type_table[cltype] == idtype;
193 }
194 if (unlikely(!var1)) {
195 var_class_name = p0 == NULL ? "null" : p0->type->name;
196 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
197 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 38);
198 show_backtrace(1);
199 }
200 var_e = p0;
201 {
202 { /* Inline poset#POSet#elements (self) on <self:POSet[Object]> */
203 var4 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[Object]> */
204 if (unlikely(var4 == NULL)) {
205 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
206 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 33);
207 show_backtrace(1);
208 }
209 var2 = var4;
210 RET_LABEL3:(void)0;
211 }
212 }
213 {
214 { /* Inline hash_collection#HashMap#keys (var2) on <var2:HashMap[Object, POSetElement[Object]]> */
215 var7 = var2->attrs[COLOR_hash_collection__HashMap___keys].val; /* _keys on <var2:HashMap[Object, POSetElement[Object]]> */
216 if (unlikely(var7 == NULL)) {
217 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _keys");
218 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 249);
219 show_backtrace(1);
220 }
221 var5 = var7;
222 RET_LABEL6:(void)0;
223 }
224 }
225 {
226 var8 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__Collection__has]))(var5, var_e) /* has on <var5:RemovableCollection[Object]>*/;
227 }
228 if (var8){
229 {
230 { /* Inline poset#POSet#elements (self) on <self:POSet[Object]> */
231 var11 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[Object]> */
232 if (unlikely(var11 == NULL)) {
233 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
234 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 33);
235 show_backtrace(1);
236 }
237 var9 = var11;
238 RET_LABEL10:(void)0;
239 }
240 }
241 {
242 var12 = hash_collection__HashMap___91d_93d(var9, var_e);
243 }
244 var = var12;
245 goto RET_LABEL;
246 } else {
247 }
248 var13 = NEW_poset__POSetElement(self->type->resolution_table->types[COLOR_poset__POSetElementposet__POSet_FT0]);
249 {
250 { /* Inline poset#POSet#elements (self) on <self:POSet[Object]> */
251 var16 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[Object]> */
252 if (unlikely(var16 == NULL)) {
253 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
254 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 33);
255 show_backtrace(1);
256 }
257 var14 = var16;
258 RET_LABEL15:(void)0;
259 }
260 }
261 {
262 var17 = hash_collection__HashMap__length(var14);
263 }
264 {
265 ((void (*)(val*, val*))(var13->class->vft[COLOR_poset__POSetElement__poset_61d]))(var13, self) /* poset= on <var13:POSetElement[Object]>*/;
266 }
267 {
268 ((void (*)(val*, val*))(var13->class->vft[COLOR_poset__POSetElement__element_61d]))(var13, var_e) /* element= on <var13:POSetElement[Object]>*/;
269 }
270 {
271 ((void (*)(val*, long))(var13->class->vft[COLOR_poset__POSetElement__count_61d]))(var13, var17) /* count= on <var13:POSetElement[Object]>*/;
272 }
273 {
274 ((void (*)(val*))(var13->class->vft[COLOR_kernel__Object__init]))(var13) /* init on <var13:POSetElement[Object]>*/;
275 }
276 var_poe = var13;
277 {
278 { /* Inline poset#POSetElement#tos (var_poe) on <var_poe:POSetElement[Object]> */
279 var20 = var_poe->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <var_poe:POSetElement[Object]> */
280 if (unlikely(var20 == NULL)) {
281 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
282 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 245);
283 show_backtrace(1);
284 }
285 var18 = var20;
286 RET_LABEL19:(void)0;
287 }
288 }
289 {
290 hash_collection__HashSet__add(var18, var_e); /* Direct call hash_collection#HashSet#add on <var18:HashSet[Object]>*/
291 }
292 {
293 { /* Inline poset#POSetElement#froms (var_poe) on <var_poe:POSetElement[Object]> */
294 var23 = var_poe->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on <var_poe:POSetElement[Object]> */
295 if (unlikely(var23 == NULL)) {
296 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _froms");
297 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 246);
298 show_backtrace(1);
299 }
300 var21 = var23;
301 RET_LABEL22:(void)0;
302 }
303 }
304 {
305 hash_collection__HashSet__add(var21, var_e); /* Direct call hash_collection#HashSet#add on <var21:HashSet[Object]>*/
306 }
307 {
308 { /* Inline poset#POSet#elements (self) on <self:POSet[Object]> */
309 var26 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[Object]> */
310 if (unlikely(var26 == NULL)) {
311 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
312 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 33);
313 show_backtrace(1);
314 }
315 var24 = var26;
316 RET_LABEL25:(void)0;
317 }
318 }
319 {
320 hash_collection__HashMap___91d_93d_61d(var24, var_e, var_poe); /* Direct call hash_collection#HashMap#[]= on <var24:HashMap[Object, POSetElement[Object]]>*/
321 }
322 var = var_poe;
323 goto RET_LABEL;
324 RET_LABEL:;
325 return var;
326 }
327 /* method poset#POSet#add_node for (self: Object, Object): POSetElement[Object] */
328 val* VIRTUAL_poset__POSet__add_node(val* self, val* p0) {
329 val* var /* : POSetElement[Object] */;
330 val* var1 /* : POSetElement[Object] */;
331 var1 = poset__POSet__add_node(self, p0);
332 var = var1;
333 RET_LABEL:;
334 return var;
335 }
336 /* method poset#POSet#[] for (self: POSet[Object], Object): POSetElement[Object] */
337 val* poset__POSet___91d_93d(val* self, val* p0) {
338 val* var /* : POSetElement[Object] */;
339 short int var1 /* : Bool */;
340 int cltype;
341 int idtype;
342 const struct type* type_struct;
343 const char* var_class_name;
344 val* var_e /* var e: Object */;
345 val* var2 /* : HashMap[Object, POSetElement[Object]] */;
346 val* var4 /* : HashMap[Object, POSetElement[Object]] */;
347 val* var5 /* : RemovableCollection[Object] */;
348 val* var7 /* : RemovableCollection[Object] */;
349 short int var8 /* : Bool */;
350 val* var9 /* : HashMap[Object, POSetElement[Object]] */;
351 val* var11 /* : HashMap[Object, POSetElement[Object]] */;
352 val* var12 /* : nullable Object */;
353 /* Covariant cast for argument 0 (e) <p0:Object> isa E */
354 /* <p0:Object> isa E */
355 type_struct = self->type->resolution_table->types[COLOR_poset__POSet_FT0];
356 cltype = type_struct->color;
357 idtype = type_struct->id;
358 if(cltype >= p0->type->table_size) {
359 var1 = 0;
360 } else {
361 var1 = p0->type->type_table[cltype] == idtype;
362 }
363 if (unlikely(!var1)) {
364 var_class_name = p0 == NULL ? "null" : p0->type->name;
365 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
366 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 52);
367 show_backtrace(1);
368 }
369 var_e = p0;
370 {
371 { /* Inline poset#POSet#elements (self) on <self:POSet[Object]> */
372 var4 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[Object]> */
373 if (unlikely(var4 == NULL)) {
374 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
375 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 33);
376 show_backtrace(1);
377 }
378 var2 = var4;
379 RET_LABEL3:(void)0;
380 }
381 }
382 {
383 { /* Inline hash_collection#HashMap#keys (var2) on <var2:HashMap[Object, POSetElement[Object]]> */
384 var7 = var2->attrs[COLOR_hash_collection__HashMap___keys].val; /* _keys on <var2:HashMap[Object, POSetElement[Object]]> */
385 if (unlikely(var7 == NULL)) {
386 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _keys");
387 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 249);
388 show_backtrace(1);
389 }
390 var5 = var7;
391 RET_LABEL6:(void)0;
392 }
393 }
394 {
395 var8 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__Collection__has]))(var5, var_e) /* has on <var5:RemovableCollection[Object]>*/;
396 }
397 if (unlikely(!var8)) {
398 PRINT_ERROR("Runtime error: %s", "Assert failed");
399 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 65);
400 show_backtrace(1);
401 }
402 {
403 { /* Inline poset#POSet#elements (self) on <self:POSet[Object]> */
404 var11 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[Object]> */
405 if (unlikely(var11 == NULL)) {
406 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
407 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 33);
408 show_backtrace(1);
409 }
410 var9 = var11;
411 RET_LABEL10:(void)0;
412 }
413 }
414 {
415 var12 = hash_collection__HashMap___91d_93d(var9, var_e);
416 }
417 var = var12;
418 goto RET_LABEL;
419 RET_LABEL:;
420 return var;
421 }
422 /* method poset#POSet#[] for (self: Object, Object): POSetElement[Object] */
423 val* VIRTUAL_poset__POSet___91d_93d(val* self, val* p0) {
424 val* var /* : POSetElement[Object] */;
425 val* var1 /* : POSetElement[Object] */;
426 var1 = poset__POSet___91d_93d(self, p0);
427 var = var1;
428 RET_LABEL:;
429 return var;
430 }
431 /* method poset#POSet#add_edge for (self: POSet[Object], Object, Object) */
432 void poset__POSet__add_edge(val* self, val* p0, val* p1) {
433 short int var /* : Bool */;
434 int cltype;
435 int idtype;
436 const struct type* type_struct;
437 const char* var_class_name;
438 short int var1 /* : Bool */;
439 int cltype2;
440 int idtype3;
441 const struct type* type_struct4;
442 const char* var_class_name5;
443 val* var_f /* var f: Object */;
444 val* var_t /* var t: Object */;
445 val* var6 /* : POSetElement[Object] */;
446 val* var_fe /* var fe: POSetElement[Object] */;
447 val* var7 /* : POSetElement[Object] */;
448 val* var_te /* var te: POSetElement[Object] */;
449 val* var8 /* : HashSet[Object] */;
450 val* var10 /* : HashSet[Object] */;
451 short int var11 /* : Bool */;
452 val* var12 /* : HashSet[Object] */;
453 val* var14 /* : HashSet[Object] */;
454 val* var_ /* var : HashSet[Object] */;
455 val* var15 /* : Iterator[Object] */;
456 val* var_16 /* var : Iterator[Object] */;
457 short int var17 /* : Bool */;
458 val* var18 /* : nullable Object */;
459 val* var_ff /* var ff: Object */;
460 val* var19 /* : HashMap[Object, POSetElement[Object]] */;
461 val* var21 /* : HashMap[Object, POSetElement[Object]] */;
462 val* var22 /* : nullable Object */;
463 val* var_ffe /* var ffe: POSetElement[Object] */;
464 val* var23 /* : HashSet[Object] */;
465 val* var25 /* : HashSet[Object] */;
466 val* var_26 /* var : HashSet[Object] */;
467 val* var27 /* : Iterator[Object] */;
468 val* var_28 /* var : Iterator[Object] */;
469 short int var29 /* : Bool */;
470 val* var30 /* : nullable Object */;
471 val* var_tt /* var tt: Object */;
472 val* var31 /* : HashMap[Object, POSetElement[Object]] */;
473 val* var33 /* : HashMap[Object, POSetElement[Object]] */;
474 val* var34 /* : nullable Object */;
475 val* var_tte /* var tte: POSetElement[Object] */;
476 val* var35 /* : HashSet[Object] */;
477 val* var37 /* : HashSet[Object] */;
478 val* var38 /* : HashSet[Object] */;
479 val* var40 /* : HashSet[Object] */;
480 val* var44 /* : HashSet[Object] */;
481 val* var46 /* : HashSet[Object] */;
482 short int var47 /* : Bool */;
483 val* var48 /* : HashSet[Object] */;
484 val* var50 /* : HashSet[Object] */;
485 val* var51 /* : Array[nullable Object] */;
486 val* var_52 /* var : Array[Object] */;
487 val* var53 /* : ArrayIterator[nullable Object] */;
488 val* var_54 /* var : ArrayIterator[Object] */;
489 short int var55 /* : Bool */;
490 val* var56 /* : nullable Object */;
491 val* var_x /* var x: Object */;
492 val* var57 /* : HashMap[Object, POSetElement[Object]] */;
493 val* var59 /* : HashMap[Object, POSetElement[Object]] */;
494 val* var60 /* : nullable Object */;
495 val* var_xe /* var xe: POSetElement[Object] */;
496 val* var61 /* : HashSet[Object] */;
497 val* var63 /* : HashSet[Object] */;
498 short int var64 /* : Bool */;
499 val* var65 /* : HashSet[Object] */;
500 val* var67 /* : HashSet[Object] */;
501 val* var68 /* : HashSet[Object] */;
502 val* var70 /* : HashSet[Object] */;
503 val* var73 /* : HashSet[Object] */;
504 val* var75 /* : HashSet[Object] */;
505 val* var76 /* : Array[nullable Object] */;
506 val* var_77 /* var : Array[Object] */;
507 val* var78 /* : ArrayIterator[nullable Object] */;
508 val* var_79 /* var : ArrayIterator[Object] */;
509 short int var80 /* : Bool */;
510 val* var81 /* : nullable Object */;
511 val* var_x82 /* var x: Object */;
512 val* var83 /* : HashMap[Object, POSetElement[Object]] */;
513 val* var85 /* : HashMap[Object, POSetElement[Object]] */;
514 val* var86 /* : nullable Object */;
515 val* var_xe87 /* var xe: POSetElement[Object] */;
516 val* var88 /* : HashSet[Object] */;
517 val* var90 /* : HashSet[Object] */;
518 short int var91 /* : Bool */;
519 val* var92 /* : HashSet[Object] */;
520 val* var94 /* : HashSet[Object] */;
521 val* var95 /* : HashSet[Object] */;
522 val* var97 /* : HashSet[Object] */;
523 val* var100 /* : HashSet[Object] */;
524 val* var102 /* : HashSet[Object] */;
525 val* var103 /* : HashSet[Object] */;
526 val* var105 /* : HashSet[Object] */;
527 /* Covariant cast for argument 0 (f) <p0:Object> isa E */
528 /* <p0:Object> isa E */
529 type_struct = self->type->resolution_table->types[COLOR_poset__POSet_FT0];
530 cltype = type_struct->color;
531 idtype = type_struct->id;
532 if(cltype >= p0->type->table_size) {
533 var = 0;
534 } else {
535 var = p0->type->type_table[cltype] == idtype;
536 }
537 if (unlikely(!var)) {
538 var_class_name = p0 == NULL ? "null" : p0->type->name;
539 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
540 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 69);
541 show_backtrace(1);
542 }
543 /* Covariant cast for argument 1 (t) <p1:Object> isa E */
544 /* <p1:Object> isa E */
545 type_struct4 = self->type->resolution_table->types[COLOR_poset__POSet_FT0];
546 cltype2 = type_struct4->color;
547 idtype3 = type_struct4->id;
548 if(cltype2 >= p1->type->table_size) {
549 var1 = 0;
550 } else {
551 var1 = p1->type->type_table[cltype2] == idtype3;
552 }
553 if (unlikely(!var1)) {
554 var_class_name5 = p1 == NULL ? "null" : p1->type->name;
555 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name5);
556 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 69);
557 show_backtrace(1);
558 }
559 var_f = p0;
560 var_t = p1;
561 {
562 var6 = poset__POSet__add_node(self, var_f);
563 }
564 var_fe = var6;
565 {
566 var7 = poset__POSet__add_node(self, var_t);
567 }
568 var_te = var7;
569 {
570 { /* Inline poset#POSetElement#tos (var_fe) on <var_fe:POSetElement[Object]> */
571 var10 = var_fe->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <var_fe:POSetElement[Object]> */
572 if (unlikely(var10 == NULL)) {
573 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
574 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 245);
575 show_backtrace(1);
576 }
577 var8 = var10;
578 RET_LABEL9:(void)0;
579 }
580 }
581 {
582 var11 = hash_collection__HashSet__has(var8, var_t);
583 }
584 if (var11){
585 goto RET_LABEL;
586 } else {
587 }
588 {
589 { /* Inline poset#POSetElement#froms (var_fe) on <var_fe:POSetElement[Object]> */
590 var14 = var_fe->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on <var_fe:POSetElement[Object]> */
591 if (unlikely(var14 == NULL)) {
592 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _froms");
593 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 246);
594 show_backtrace(1);
595 }
596 var12 = var14;
597 RET_LABEL13:(void)0;
598 }
599 }
600 var_ = var12;
601 {
602 var15 = hash_collection__HashSet__iterator(var_);
603 }
604 var_16 = var15;
605 for(;;) {
606 {
607 var17 = ((short int (*)(val*))(var_16->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_16) /* is_ok on <var_16:Iterator[Object]>*/;
608 }
609 if (var17){
610 {
611 var18 = ((val* (*)(val*))(var_16->class->vft[COLOR_abstract_collection__Iterator__item]))(var_16) /* item on <var_16:Iterator[Object]>*/;
612 }
613 var_ff = var18;
614 {
615 { /* Inline poset#POSet#elements (self) on <self:POSet[Object]> */
616 var21 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[Object]> */
617 if (unlikely(var21 == NULL)) {
618 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
619 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 33);
620 show_backtrace(1);
621 }
622 var19 = var21;
623 RET_LABEL20:(void)0;
624 }
625 }
626 {
627 var22 = hash_collection__HashMap___91d_93d(var19, var_ff);
628 }
629 var_ffe = var22;
630 {
631 { /* Inline poset#POSetElement#tos (var_te) on <var_te:POSetElement[Object]> */
632 var25 = var_te->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <var_te:POSetElement[Object]> */
633 if (unlikely(var25 == NULL)) {
634 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
635 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 245);
636 show_backtrace(1);
637 }
638 var23 = var25;
639 RET_LABEL24:(void)0;
640 }
641 }
642 var_26 = var23;
643 {
644 var27 = hash_collection__HashSet__iterator(var_26);
645 }
646 var_28 = var27;
647 for(;;) {
648 {
649 var29 = ((short int (*)(val*))(var_28->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_28) /* is_ok on <var_28:Iterator[Object]>*/;
650 }
651 if (var29){
652 {
653 var30 = ((val* (*)(val*))(var_28->class->vft[COLOR_abstract_collection__Iterator__item]))(var_28) /* item on <var_28:Iterator[Object]>*/;
654 }
655 var_tt = var30;
656 {
657 { /* Inline poset#POSet#elements (self) on <self:POSet[Object]> */
658 var33 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[Object]> */
659 if (unlikely(var33 == NULL)) {
660 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
661 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 33);
662 show_backtrace(1);
663 }
664 var31 = var33;
665 RET_LABEL32:(void)0;
666 }
667 }
668 {
669 var34 = hash_collection__HashMap___91d_93d(var31, var_tt);
670 }
671 var_tte = var34;
672 {
673 { /* Inline poset#POSetElement#froms (var_tte) on <var_tte:POSetElement[Object]> */
674 var37 = var_tte->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on <var_tte:POSetElement[Object]> */
675 if (unlikely(var37 == NULL)) {
676 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _froms");
677 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 246);
678 show_backtrace(1);
679 }
680 var35 = var37;
681 RET_LABEL36:(void)0;
682 }
683 }
684 {
685 hash_collection__HashSet__add(var35, var_ff); /* Direct call hash_collection#HashSet#add on <var35:HashSet[Object]>*/
686 }
687 {
688 { /* Inline poset#POSetElement#tos (var_ffe) on <var_ffe:POSetElement[Object]> */
689 var40 = var_ffe->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <var_ffe:POSetElement[Object]> */
690 if (unlikely(var40 == NULL)) {
691 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
692 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 245);
693 show_backtrace(1);
694 }
695 var38 = var40;
696 RET_LABEL39:(void)0;
697 }
698 }
699 {
700 hash_collection__HashSet__add(var38, var_tt); /* Direct call hash_collection#HashSet#add on <var38:HashSet[Object]>*/
701 }
702 {
703 ((void (*)(val*))(var_28->class->vft[COLOR_abstract_collection__Iterator__next]))(var_28) /* next on <var_28:Iterator[Object]>*/;
704 }
705 } else {
706 goto BREAK_label;
707 }
708 }
709 BREAK_label: (void)0;
710 {
711 { /* Inline abstract_collection#Iterator#finish (var_28) on <var_28:Iterator[Object]> */
712 RET_LABEL41:(void)0;
713 }
714 }
715 {
716 ((void (*)(val*))(var_16->class->vft[COLOR_abstract_collection__Iterator__next]))(var_16) /* next on <var_16:Iterator[Object]>*/;
717 }
718 } else {
719 goto BREAK_label42;
720 }
721 }
722 BREAK_label42: (void)0;
723 {
724 { /* Inline abstract_collection#Iterator#finish (var_16) on <var_16:Iterator[Object]> */
725 RET_LABEL43:(void)0;
726 }
727 }
728 {
729 { /* Inline poset#POSetElement#tos (var_te) on <var_te:POSetElement[Object]> */
730 var46 = var_te->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <var_te:POSetElement[Object]> */
731 if (unlikely(var46 == NULL)) {
732 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
733 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 245);
734 show_backtrace(1);
735 }
736 var44 = var46;
737 RET_LABEL45:(void)0;
738 }
739 }
740 {
741 var47 = hash_collection__HashSet__has(var44, var_f);
742 }
743 if (var47){
744 goto RET_LABEL;
745 } else {
746 }
747 {
748 { /* Inline poset#POSetElement#dfroms (var_te) on <var_te:POSetElement[Object]> */
749 var50 = var_te->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on <var_te:POSetElement[Object]> */
750 if (unlikely(var50 == NULL)) {
751 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dfroms");
752 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 248);
753 show_backtrace(1);
754 }
755 var48 = var50;
756 RET_LABEL49:(void)0;
757 }
758 }
759 {
760 var51 = array__Collection__to_a(var48);
761 }
762 var_52 = var51;
763 {
764 var53 = array__AbstractArrayRead__iterator(var_52);
765 }
766 var_54 = var53;
767 for(;;) {
768 {
769 var55 = array__ArrayIterator__is_ok(var_54);
770 }
771 if (var55){
772 {
773 var56 = array__ArrayIterator__item(var_54);
774 }
775 var_x = var56;
776 {
777 { /* Inline poset#POSet#elements (self) on <self:POSet[Object]> */
778 var59 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[Object]> */
779 if (unlikely(var59 == NULL)) {
780 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
781 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 33);
782 show_backtrace(1);
783 }
784 var57 = var59;
785 RET_LABEL58:(void)0;
786 }
787 }
788 {
789 var60 = hash_collection__HashMap___91d_93d(var57, var_x);
790 }
791 var_xe = var60;
792 {
793 { /* Inline poset#POSetElement#tos (var_xe) on <var_xe:POSetElement[Object]> */
794 var63 = var_xe->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <var_xe:POSetElement[Object]> */
795 if (unlikely(var63 == NULL)) {
796 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
797 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 245);
798 show_backtrace(1);
799 }
800 var61 = var63;
801 RET_LABEL62:(void)0;
802 }
803 }
804 {
805 var64 = hash_collection__HashSet__has(var61, var_f);
806 }
807 if (var64){
808 {
809 { /* Inline poset#POSetElement#dfroms (var_te) on <var_te:POSetElement[Object]> */
810 var67 = var_te->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on <var_te:POSetElement[Object]> */
811 if (unlikely(var67 == NULL)) {
812 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dfroms");
813 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 248);
814 show_backtrace(1);
815 }
816 var65 = var67;
817 RET_LABEL66:(void)0;
818 }
819 }
820 {
821 hash_collection__HashSet__remove(var65, var_x); /* Direct call hash_collection#HashSet#remove on <var65:HashSet[Object]>*/
822 }
823 {
824 { /* Inline poset#POSetElement#dtos (var_xe) on <var_xe:POSetElement[Object]> */
825 var70 = var_xe->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on <var_xe:POSetElement[Object]> */
826 if (unlikely(var70 == NULL)) {
827 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dtos");
828 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 247);
829 show_backtrace(1);
830 }
831 var68 = var70;
832 RET_LABEL69:(void)0;
833 }
834 }
835 {
836 hash_collection__HashSet__remove(var68, var_t); /* Direct call hash_collection#HashSet#remove on <var68:HashSet[Object]>*/
837 }
838 } else {
839 }
840 {
841 array__ArrayIterator__next(var_54); /* Direct call array#ArrayIterator#next on <var_54:ArrayIterator[Object]>*/
842 }
843 } else {
844 goto BREAK_label71;
845 }
846 }
847 BREAK_label71: (void)0;
848 {
849 { /* Inline abstract_collection#Iterator#finish (var_54) on <var_54:ArrayIterator[Object]> */
850 RET_LABEL72:(void)0;
851 }
852 }
853 {
854 { /* Inline poset#POSetElement#dtos (var_fe) on <var_fe:POSetElement[Object]> */
855 var75 = var_fe->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on <var_fe:POSetElement[Object]> */
856 if (unlikely(var75 == NULL)) {
857 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dtos");
858 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 247);
859 show_backtrace(1);
860 }
861 var73 = var75;
862 RET_LABEL74:(void)0;
863 }
864 }
865 {
866 var76 = array__Collection__to_a(var73);
867 }
868 var_77 = var76;
869 {
870 var78 = array__AbstractArrayRead__iterator(var_77);
871 }
872 var_79 = var78;
873 for(;;) {
874 {
875 var80 = array__ArrayIterator__is_ok(var_79);
876 }
877 if (var80){
878 {
879 var81 = array__ArrayIterator__item(var_79);
880 }
881 var_x82 = var81;
882 {
883 { /* Inline poset#POSet#elements (self) on <self:POSet[Object]> */
884 var85 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[Object]> */
885 if (unlikely(var85 == NULL)) {
886 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
887 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 33);
888 show_backtrace(1);
889 }
890 var83 = var85;
891 RET_LABEL84:(void)0;
892 }
893 }
894 {
895 var86 = hash_collection__HashMap___91d_93d(var83, var_x82);
896 }
897 var_xe87 = var86;
898 {
899 { /* Inline poset#POSetElement#froms (var_xe87) on <var_xe87:POSetElement[Object]> */
900 var90 = var_xe87->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on <var_xe87:POSetElement[Object]> */
901 if (unlikely(var90 == NULL)) {
902 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _froms");
903 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 246);
904 show_backtrace(1);
905 }
906 var88 = var90;
907 RET_LABEL89:(void)0;
908 }
909 }
910 {
911 var91 = hash_collection__HashSet__has(var88, var_t);
912 }
913 if (var91){
914 {
915 { /* Inline poset#POSetElement#dfroms (var_xe87) on <var_xe87:POSetElement[Object]> */
916 var94 = var_xe87->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on <var_xe87:POSetElement[Object]> */
917 if (unlikely(var94 == NULL)) {
918 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dfroms");
919 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 248);
920 show_backtrace(1);
921 }
922 var92 = var94;
923 RET_LABEL93:(void)0;
924 }
925 }
926 {
927 hash_collection__HashSet__remove(var92, var_f); /* Direct call hash_collection#HashSet#remove on <var92:HashSet[Object]>*/
928 }
929 {
930 { /* Inline poset#POSetElement#dtos (var_fe) on <var_fe:POSetElement[Object]> */
931 var97 = var_fe->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on <var_fe:POSetElement[Object]> */
932 if (unlikely(var97 == NULL)) {
933 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dtos");
934 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 247);
935 show_backtrace(1);
936 }
937 var95 = var97;
938 RET_LABEL96:(void)0;
939 }
940 }
941 {
942 hash_collection__HashSet__remove(var95, var_x82); /* Direct call hash_collection#HashSet#remove on <var95:HashSet[Object]>*/
943 }
944 } else {
945 }
946 {
947 array__ArrayIterator__next(var_79); /* Direct call array#ArrayIterator#next on <var_79:ArrayIterator[Object]>*/
948 }
949 } else {
950 goto BREAK_label98;
951 }
952 }
953 BREAK_label98: (void)0;
954 {
955 { /* Inline abstract_collection#Iterator#finish (var_79) on <var_79:ArrayIterator[Object]> */
956 RET_LABEL99:(void)0;
957 }
958 }
959 {
960 { /* Inline poset#POSetElement#dtos (var_fe) on <var_fe:POSetElement[Object]> */
961 var102 = var_fe->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on <var_fe:POSetElement[Object]> */
962 if (unlikely(var102 == NULL)) {
963 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dtos");
964 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 247);
965 show_backtrace(1);
966 }
967 var100 = var102;
968 RET_LABEL101:(void)0;
969 }
970 }
971 {
972 hash_collection__HashSet__add(var100, var_t); /* Direct call hash_collection#HashSet#add on <var100:HashSet[Object]>*/
973 }
974 {
975 { /* Inline poset#POSetElement#dfroms (var_te) on <var_te:POSetElement[Object]> */
976 var105 = var_te->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on <var_te:POSetElement[Object]> */
977 if (unlikely(var105 == NULL)) {
978 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dfroms");
979 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 248);
980 show_backtrace(1);
981 }
982 var103 = var105;
983 RET_LABEL104:(void)0;
984 }
985 }
986 {
987 hash_collection__HashSet__add(var103, var_f); /* Direct call hash_collection#HashSet#add on <var103:HashSet[Object]>*/
988 }
989 RET_LABEL:;
990 }
991 /* method poset#POSet#add_edge for (self: Object, Object, Object) */
992 void VIRTUAL_poset__POSet__add_edge(val* self, val* p0, val* p1) {
993 poset__POSet__add_edge(self, p0, p1); /* Direct call poset#POSet#add_edge on <self:Object(POSet[Object])>*/
994 RET_LABEL:;
995 }
996 /* method poset#POSet#compare for (self: POSet[Object], Object, Object): Int */
997 long poset__POSet__compare(val* self, val* p0, val* p1) {
998 long var /* : Int */;
999 short int var1 /* : Bool */;
1000 int cltype;
1001 int idtype;
1002 const struct type* type_struct;
1003 const char* var_class_name;
1004 short int var2 /* : Bool */;
1005 int cltype3;
1006 int idtype4;
1007 const struct type* type_struct5;
1008 const char* var_class_name6;
1009 val* var_a /* var a: Object */;
1010 val* var_b /* var b: Object */;
1011 val* var7 /* : HashMap[Object, POSetElement[Object]] */;
1012 val* var9 /* : HashMap[Object, POSetElement[Object]] */;
1013 val* var10 /* : nullable Object */;
1014 val* var_ae /* var ae: POSetElement[Object] */;
1015 val* var11 /* : HashMap[Object, POSetElement[Object]] */;
1016 val* var13 /* : HashMap[Object, POSetElement[Object]] */;
1017 val* var14 /* : nullable Object */;
1018 val* var_be /* var be: POSetElement[Object] */;
1019 val* var15 /* : HashSet[Object] */;
1020 val* var17 /* : HashSet[Object] */;
1021 long var18 /* : Int */;
1022 val* var19 /* : HashSet[Object] */;
1023 val* var21 /* : HashSet[Object] */;
1024 long var22 /* : Int */;
1025 long var23 /* : Int */;
1026 long var_res /* var res: Int */;
1027 long var24 /* : Int */;
1028 short int var25 /* : Bool */;
1029 short int var26 /* : Bool */;
1030 short int var28 /* : Bool */;
1031 short int var29 /* : Bool */;
1032 val* var30 /* : HashMap[Object, POSetElement[Object]] */;
1033 val* var32 /* : HashMap[Object, POSetElement[Object]] */;
1034 val* var33 /* : nullable Object */;
1035 long var34 /* : Int */;
1036 long var36 /* : Int */;
1037 val* var37 /* : HashMap[Object, POSetElement[Object]] */;
1038 val* var39 /* : HashMap[Object, POSetElement[Object]] */;
1039 val* var40 /* : nullable Object */;
1040 long var41 /* : Int */;
1041 long var43 /* : Int */;
1042 long var44 /* : Int */;
1043 /* Covariant cast for argument 0 (a) <p0:Object> isa E */
1044 /* <p0:Object> isa E */
1045 type_struct = self->type->resolution_table->types[COLOR_poset__POSet_FT0];
1046 cltype = type_struct->color;
1047 idtype = type_struct->id;
1048 if(cltype >= p0->type->table_size) {
1049 var1 = 0;
1050 } else {
1051 var1 = p0->type->type_table[cltype] == idtype;
1052 }
1053 if (unlikely(!var1)) {
1054 var_class_name = p0 == NULL ? "null" : p0->type->name;
1055 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
1056 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 153);
1057 show_backtrace(1);
1058 }
1059 /* Covariant cast for argument 1 (b) <p1:Object> isa E */
1060 /* <p1:Object> isa E */
1061 type_struct5 = self->type->resolution_table->types[COLOR_poset__POSet_FT0];
1062 cltype3 = type_struct5->color;
1063 idtype4 = type_struct5->id;
1064 if(cltype3 >= p1->type->table_size) {
1065 var2 = 0;
1066 } else {
1067 var2 = p1->type->type_table[cltype3] == idtype4;
1068 }
1069 if (unlikely(!var2)) {
1070 var_class_name6 = p1 == NULL ? "null" : p1->type->name;
1071 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name6);
1072 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 153);
1073 show_backtrace(1);
1074 }
1075 var_a = p0;
1076 var_b = p1;
1077 {
1078 { /* Inline poset#POSet#elements (self) on <self:POSet[Object]> */
1079 var9 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[Object]> */
1080 if (unlikely(var9 == NULL)) {
1081 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
1082 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 33);
1083 show_backtrace(1);
1084 }
1085 var7 = var9;
1086 RET_LABEL8:(void)0;
1087 }
1088 }
1089 {
1090 var10 = hash_collection__HashMap___91d_93d(var7, var_a);
1091 }
1092 var_ae = var10;
1093 {
1094 { /* Inline poset#POSet#elements (self) on <self:POSet[Object]> */
1095 var13 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[Object]> */
1096 if (unlikely(var13 == NULL)) {
1097 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
1098 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 33);
1099 show_backtrace(1);
1100 }
1101 var11 = var13;
1102 RET_LABEL12:(void)0;
1103 }
1104 }
1105 {
1106 var14 = hash_collection__HashMap___91d_93d(var11, var_b);
1107 }
1108 var_be = var14;
1109 {
1110 { /* Inline poset#POSetElement#tos (var_ae) on <var_ae:POSetElement[Object]> */
1111 var17 = var_ae->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <var_ae:POSetElement[Object]> */
1112 if (unlikely(var17 == NULL)) {
1113 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
1114 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 245);
1115 show_backtrace(1);
1116 }
1117 var15 = var17;
1118 RET_LABEL16:(void)0;
1119 }
1120 }
1121 {
1122 var18 = hash_collection__HashSet__length(var15);
1123 }
1124 {
1125 { /* Inline poset#POSetElement#tos (var_be) on <var_be:POSetElement[Object]> */
1126 var21 = var_be->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <var_be:POSetElement[Object]> */
1127 if (unlikely(var21 == NULL)) {
1128 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
1129 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 245);
1130 show_backtrace(1);
1131 }
1132 var19 = var21;
1133 RET_LABEL20:(void)0;
1134 }
1135 }
1136 {
1137 var22 = hash_collection__HashSet__length(var19);
1138 }
1139 {
1140 var23 = kernel__Int___60d_61d_62d(var18, var22);
1141 }
1142 var_res = var23;
1143 var24 = 0;
1144 {
1145 { /* Inline kernel#Int#!= (var_res,var24) on <var_res:Int> */
1146 var28 = var_res == var24;
1147 var29 = !var28;
1148 var26 = var29;
1149 goto RET_LABEL27;
1150 RET_LABEL27:(void)0;
1151 }
1152 var25 = var26;
1153 }
1154 if (var25){
1155 var = var_res;
1156 goto RET_LABEL;
1157 } else {
1158 }
1159 {
1160 { /* Inline poset#POSet#elements (self) on <self:POSet[Object]> */
1161 var32 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[Object]> */
1162 if (unlikely(var32 == NULL)) {
1163 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
1164 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 33);
1165 show_backtrace(1);
1166 }
1167 var30 = var32;
1168 RET_LABEL31:(void)0;
1169 }
1170 }
1171 {
1172 var33 = hash_collection__HashMap___91d_93d(var30, var_a);
1173 }
1174 {
1175 { /* Inline poset#POSetElement#count (var33) on <var33:nullable Object(POSetElement[Object])> */
1176 var36 = var33->attrs[COLOR_poset__POSetElement___count].l; /* _count on <var33:nullable Object(POSetElement[Object])> */
1177 var34 = var36;
1178 RET_LABEL35:(void)0;
1179 }
1180 }
1181 {
1182 { /* Inline poset#POSet#elements (self) on <self:POSet[Object]> */
1183 var39 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[Object]> */
1184 if (unlikely(var39 == NULL)) {
1185 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
1186 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 33);
1187 show_backtrace(1);
1188 }
1189 var37 = var39;
1190 RET_LABEL38:(void)0;
1191 }
1192 }
1193 {
1194 var40 = hash_collection__HashMap___91d_93d(var37, var_b);
1195 }
1196 {
1197 { /* Inline poset#POSetElement#count (var40) on <var40:nullable Object(POSetElement[Object])> */
1198 var43 = var40->attrs[COLOR_poset__POSetElement___count].l; /* _count on <var40:nullable Object(POSetElement[Object])> */
1199 var41 = var43;
1200 RET_LABEL42:(void)0;
1201 }
1202 }
1203 {
1204 var44 = kernel__Int___60d_61d_62d(var34, var41);
1205 }
1206 var = var44;
1207 goto RET_LABEL;
1208 RET_LABEL:;
1209 return var;
1210 }
1211 /* method poset#POSet#compare for (self: Object, nullable Object, nullable Object): Int */
1212 long VIRTUAL_poset__POSet__compare(val* self, val* p0, val* p1) {
1213 long var /* : Int */;
1214 long var1 /* : Int */;
1215 var1 = poset__POSet__compare(self, p0, p1);
1216 var = var1;
1217 RET_LABEL:;
1218 return var;
1219 }
1220 /* method poset#POSet#linearize for (self: POSet[Object], Collection[Object]): Array[Object] */
1221 val* poset__POSet__linearize(val* self, val* p0) {
1222 val* var /* : Array[Object] */;
1223 short int var1 /* : Bool */;
1224 int cltype;
1225 int idtype;
1226 const struct type* type_struct;
1227 const char* var_class_name;
1228 val* var_elements /* var elements: Collection[Object] */;
1229 val* var2 /* : Array[nullable Object] */;
1230 val* var_lin /* var lin: Array[Object] */;
1231 /* Covariant cast for argument 0 (elements) <p0:Collection[Object]> isa Collection[E] */
1232 /* <p0:Collection[Object]> isa Collection[E] */
1233 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collectionposet__POSet_FT0];
1234 cltype = type_struct->color;
1235 idtype = type_struct->id;
1236 if(cltype >= p0->type->table_size) {
1237 var1 = 0;
1238 } else {
1239 var1 = p0->type->type_table[cltype] == idtype;
1240 }
1241 if (unlikely(!var1)) {
1242 var_class_name = p0 == NULL ? "null" : p0->type->name;
1243 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[E]", var_class_name);
1244 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 218);
1245 show_backtrace(1);
1246 }
1247 var_elements = p0;
1248 {
1249 var2 = array__Collection__to_a(var_elements);
1250 }
1251 var_lin = var2;
1252 {
1253 sorter__Comparator__sort(self, var_lin); /* Direct call sorter#Comparator#sort on <self:POSet[Object]>*/
1254 }
1255 var = var_lin;
1256 goto RET_LABEL;
1257 RET_LABEL:;
1258 return var;
1259 }
1260 /* method poset#POSet#linearize for (self: Object, Collection[Object]): Array[Object] */
1261 val* VIRTUAL_poset__POSet__linearize(val* self, val* p0) {
1262 val* var /* : Array[Object] */;
1263 val* var1 /* : Array[Object] */;
1264 var1 = poset__POSet__linearize(self, p0);
1265 var = var1;
1266 RET_LABEL:;
1267 return var;
1268 }
1269 /* method poset#POSetElement#poset for (self: POSetElement[Object]): POSet[Object] */
1270 val* poset__POSetElement__poset(val* self) {
1271 val* var /* : POSet[Object] */;
1272 val* var1 /* : POSet[Object] */;
1273 var1 = self->attrs[COLOR_poset__POSetElement___poset].val; /* _poset on <self:POSetElement[Object]> */
1274 if (unlikely(var1 == NULL)) {
1275 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
1276 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 239);
1277 show_backtrace(1);
1278 }
1279 var = var1;
1280 RET_LABEL:;
1281 return var;
1282 }
1283 /* method poset#POSetElement#poset for (self: Object): POSet[Object] */
1284 val* VIRTUAL_poset__POSetElement__poset(val* self) {
1285 val* var /* : POSet[Object] */;
1286 val* var1 /* : POSet[Object] */;
1287 val* var3 /* : POSet[Object] */;
1288 { /* Inline poset#POSetElement#poset (self) on <self:Object(POSetElement[Object])> */
1289 var3 = self->attrs[COLOR_poset__POSetElement___poset].val; /* _poset on <self:Object(POSetElement[Object])> */
1290 if (unlikely(var3 == NULL)) {
1291 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
1292 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 239);
1293 show_backtrace(1);
1294 }
1295 var1 = var3;
1296 RET_LABEL2:(void)0;
1297 }
1298 var = var1;
1299 RET_LABEL:;
1300 return var;
1301 }
1302 /* method poset#POSetElement#poset= for (self: POSetElement[Object], POSet[Object]) */
1303 void poset__POSetElement__poset_61d(val* self, val* p0) {
1304 short int var /* : Bool */;
1305 int cltype;
1306 int idtype;
1307 const struct type* type_struct;
1308 const char* var_class_name;
1309 /* Covariant cast for argument 0 (poset) <p0:POSet[Object]> isa POSet[E] */
1310 /* <p0:POSet[Object]> isa POSet[E] */
1311 type_struct = self->type->resolution_table->types[COLOR_poset__POSetposet__POSetElement_FT0];
1312 cltype = type_struct->color;
1313 idtype = type_struct->id;
1314 if(cltype >= p0->type->table_size) {
1315 var = 0;
1316 } else {
1317 var = p0->type->type_table[cltype] == idtype;
1318 }
1319 if (unlikely(!var)) {
1320 var_class_name = p0 == NULL ? "null" : p0->type->name;
1321 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[E]", var_class_name);
1322 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 239);
1323 show_backtrace(1);
1324 }
1325 self->attrs[COLOR_poset__POSetElement___poset].val = p0; /* _poset on <self:POSetElement[Object]> */
1326 RET_LABEL:;
1327 }
1328 /* method poset#POSetElement#poset= for (self: Object, POSet[Object]) */
1329 void VIRTUAL_poset__POSetElement__poset_61d(val* self, val* p0) {
1330 short int var /* : Bool */;
1331 int cltype;
1332 int idtype;
1333 const struct type* type_struct;
1334 const char* var_class_name;
1335 { /* Inline poset#POSetElement#poset= (self,p0) on <self:Object(POSetElement[Object])> */
1336 /* Covariant cast for argument 0 (poset) <p0:POSet[Object]> isa POSet[E] */
1337 /* <p0:POSet[Object]> isa POSet[E] */
1338 type_struct = self->type->resolution_table->types[COLOR_poset__POSetposet__POSetElement_FT0];
1339 cltype = type_struct->color;
1340 idtype = type_struct->id;
1341 if(cltype >= p0->type->table_size) {
1342 var = 0;
1343 } else {
1344 var = p0->type->type_table[cltype] == idtype;
1345 }
1346 if (unlikely(!var)) {
1347 var_class_name = p0 == NULL ? "null" : p0->type->name;
1348 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[E]", var_class_name);
1349 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 239);
1350 show_backtrace(1);
1351 }
1352 self->attrs[COLOR_poset__POSetElement___poset].val = p0; /* _poset on <self:Object(POSetElement[Object])> */
1353 RET_LABEL1:(void)0;
1354 }
1355 RET_LABEL:;
1356 }
1357 /* method poset#POSetElement#element for (self: POSetElement[Object]): Object */
1358 val* poset__POSetElement__element(val* self) {
1359 val* var /* : Object */;
1360 val* var1 /* : Object */;
1361 var1 = self->attrs[COLOR_poset__POSetElement___element].val; /* _element on <self:POSetElement[Object]> */
1362 if (unlikely(var1 == NULL)) {
1363 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _element");
1364 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 242);
1365 show_backtrace(1);
1366 }
1367 var = var1;
1368 RET_LABEL:;
1369 return var;
1370 }
1371 /* method poset#POSetElement#element for (self: Object): Object */
1372 val* VIRTUAL_poset__POSetElement__element(val* self) {
1373 val* var /* : Object */;
1374 val* var1 /* : Object */;
1375 val* var3 /* : Object */;
1376 { /* Inline poset#POSetElement#element (self) on <self:Object(POSetElement[Object])> */
1377 var3 = self->attrs[COLOR_poset__POSetElement___element].val; /* _element on <self:Object(POSetElement[Object])> */
1378 if (unlikely(var3 == NULL)) {
1379 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _element");
1380 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 242);
1381 show_backtrace(1);
1382 }
1383 var1 = var3;
1384 RET_LABEL2:(void)0;
1385 }
1386 var = var1;
1387 RET_LABEL:;
1388 return var;
1389 }
1390 /* method poset#POSetElement#element= for (self: POSetElement[Object], Object) */
1391 void poset__POSetElement__element_61d(val* self, val* p0) {
1392 short int var /* : Bool */;
1393 int cltype;
1394 int idtype;
1395 const struct type* type_struct;
1396 const char* var_class_name;
1397 /* Covariant cast for argument 0 (element) <p0:Object> isa E */
1398 /* <p0:Object> isa E */
1399 type_struct = self->type->resolution_table->types[COLOR_poset__POSetElement_FT0];
1400 cltype = type_struct->color;
1401 idtype = type_struct->id;
1402 if(cltype >= p0->type->table_size) {
1403 var = 0;
1404 } else {
1405 var = p0->type->type_table[cltype] == idtype;
1406 }
1407 if (unlikely(!var)) {
1408 var_class_name = p0 == NULL ? "null" : p0->type->name;
1409 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
1410 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 242);
1411 show_backtrace(1);
1412 }
1413 self->attrs[COLOR_poset__POSetElement___element].val = p0; /* _element on <self:POSetElement[Object]> */
1414 RET_LABEL:;
1415 }
1416 /* method poset#POSetElement#element= for (self: Object, Object) */
1417 void VIRTUAL_poset__POSetElement__element_61d(val* self, val* p0) {
1418 short int var /* : Bool */;
1419 int cltype;
1420 int idtype;
1421 const struct type* type_struct;
1422 const char* var_class_name;
1423 { /* Inline poset#POSetElement#element= (self,p0) on <self:Object(POSetElement[Object])> */
1424 /* Covariant cast for argument 0 (element) <p0:Object> isa E */
1425 /* <p0:Object> isa E */
1426 type_struct = self->type->resolution_table->types[COLOR_poset__POSetElement_FT0];
1427 cltype = type_struct->color;
1428 idtype = type_struct->id;
1429 if(cltype >= p0->type->table_size) {
1430 var = 0;
1431 } else {
1432 var = p0->type->type_table[cltype] == idtype;
1433 }
1434 if (unlikely(!var)) {
1435 var_class_name = p0 == NULL ? "null" : p0->type->name;
1436 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
1437 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 242);
1438 show_backtrace(1);
1439 }
1440 self->attrs[COLOR_poset__POSetElement___element].val = p0; /* _element on <self:Object(POSetElement[Object])> */
1441 RET_LABEL1:(void)0;
1442 }
1443 RET_LABEL:;
1444 }
1445 /* method poset#POSetElement#tos for (self: POSetElement[Object]): HashSet[Object] */
1446 val* poset__POSetElement__tos(val* self) {
1447 val* var /* : HashSet[Object] */;
1448 val* var1 /* : HashSet[Object] */;
1449 var1 = self->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <self:POSetElement[Object]> */
1450 if (unlikely(var1 == NULL)) {
1451 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
1452 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 245);
1453 show_backtrace(1);
1454 }
1455 var = var1;
1456 RET_LABEL:;
1457 return var;
1458 }
1459 /* method poset#POSetElement#tos for (self: Object): HashSet[Object] */
1460 val* VIRTUAL_poset__POSetElement__tos(val* self) {
1461 val* var /* : HashSet[Object] */;
1462 val* var1 /* : HashSet[Object] */;
1463 val* var3 /* : HashSet[Object] */;
1464 { /* Inline poset#POSetElement#tos (self) on <self:Object(POSetElement[Object])> */
1465 var3 = self->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <self:Object(POSetElement[Object])> */
1466 if (unlikely(var3 == NULL)) {
1467 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
1468 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 245);
1469 show_backtrace(1);
1470 }
1471 var1 = var3;
1472 RET_LABEL2:(void)0;
1473 }
1474 var = var1;
1475 RET_LABEL:;
1476 return var;
1477 }
1478 /* method poset#POSetElement#froms for (self: POSetElement[Object]): HashSet[Object] */
1479 val* poset__POSetElement__froms(val* self) {
1480 val* var /* : HashSet[Object] */;
1481 val* var1 /* : HashSet[Object] */;
1482 var1 = self->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on <self:POSetElement[Object]> */
1483 if (unlikely(var1 == NULL)) {
1484 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _froms");
1485 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 246);
1486 show_backtrace(1);
1487 }
1488 var = var1;
1489 RET_LABEL:;
1490 return var;
1491 }
1492 /* method poset#POSetElement#froms for (self: Object): HashSet[Object] */
1493 val* VIRTUAL_poset__POSetElement__froms(val* self) {
1494 val* var /* : HashSet[Object] */;
1495 val* var1 /* : HashSet[Object] */;
1496 val* var3 /* : HashSet[Object] */;
1497 { /* Inline poset#POSetElement#froms (self) on <self:Object(POSetElement[Object])> */
1498 var3 = self->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on <self:Object(POSetElement[Object])> */
1499 if (unlikely(var3 == NULL)) {
1500 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _froms");
1501 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 246);
1502 show_backtrace(1);
1503 }
1504 var1 = var3;
1505 RET_LABEL2:(void)0;
1506 }
1507 var = var1;
1508 RET_LABEL:;
1509 return var;
1510 }
1511 /* method poset#POSetElement#dtos for (self: POSetElement[Object]): HashSet[Object] */
1512 val* poset__POSetElement__dtos(val* self) {
1513 val* var /* : HashSet[Object] */;
1514 val* var1 /* : HashSet[Object] */;
1515 var1 = self->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on <self:POSetElement[Object]> */
1516 if (unlikely(var1 == NULL)) {
1517 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dtos");
1518 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 247);
1519 show_backtrace(1);
1520 }
1521 var = var1;
1522 RET_LABEL:;
1523 return var;
1524 }
1525 /* method poset#POSetElement#dtos for (self: Object): HashSet[Object] */
1526 val* VIRTUAL_poset__POSetElement__dtos(val* self) {
1527 val* var /* : HashSet[Object] */;
1528 val* var1 /* : HashSet[Object] */;
1529 val* var3 /* : HashSet[Object] */;
1530 { /* Inline poset#POSetElement#dtos (self) on <self:Object(POSetElement[Object])> */
1531 var3 = self->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on <self:Object(POSetElement[Object])> */
1532 if (unlikely(var3 == NULL)) {
1533 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dtos");
1534 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 247);
1535 show_backtrace(1);
1536 }
1537 var1 = var3;
1538 RET_LABEL2:(void)0;
1539 }
1540 var = var1;
1541 RET_LABEL:;
1542 return var;
1543 }
1544 /* method poset#POSetElement#dfroms for (self: POSetElement[Object]): HashSet[Object] */
1545 val* poset__POSetElement__dfroms(val* self) {
1546 val* var /* : HashSet[Object] */;
1547 val* var1 /* : HashSet[Object] */;
1548 var1 = self->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on <self:POSetElement[Object]> */
1549 if (unlikely(var1 == NULL)) {
1550 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dfroms");
1551 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 248);
1552 show_backtrace(1);
1553 }
1554 var = var1;
1555 RET_LABEL:;
1556 return var;
1557 }
1558 /* method poset#POSetElement#dfroms for (self: Object): HashSet[Object] */
1559 val* VIRTUAL_poset__POSetElement__dfroms(val* self) {
1560 val* var /* : HashSet[Object] */;
1561 val* var1 /* : HashSet[Object] */;
1562 val* var3 /* : HashSet[Object] */;
1563 { /* Inline poset#POSetElement#dfroms (self) on <self:Object(POSetElement[Object])> */
1564 var3 = self->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on <self:Object(POSetElement[Object])> */
1565 if (unlikely(var3 == NULL)) {
1566 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dfroms");
1567 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 248);
1568 show_backtrace(1);
1569 }
1570 var1 = var3;
1571 RET_LABEL2:(void)0;
1572 }
1573 var = var1;
1574 RET_LABEL:;
1575 return var;
1576 }
1577 /* method poset#POSetElement#count for (self: POSetElement[Object]): Int */
1578 long poset__POSetElement__count(val* self) {
1579 long var /* : Int */;
1580 long var1 /* : Int */;
1581 var1 = self->attrs[COLOR_poset__POSetElement___count].l; /* _count on <self:POSetElement[Object]> */
1582 var = var1;
1583 RET_LABEL:;
1584 return var;
1585 }
1586 /* method poset#POSetElement#count for (self: Object): Int */
1587 long VIRTUAL_poset__POSetElement__count(val* self) {
1588 long var /* : Int */;
1589 long var1 /* : Int */;
1590 long var3 /* : Int */;
1591 { /* Inline poset#POSetElement#count (self) on <self:Object(POSetElement[Object])> */
1592 var3 = self->attrs[COLOR_poset__POSetElement___count].l; /* _count on <self:Object(POSetElement[Object])> */
1593 var1 = var3;
1594 RET_LABEL2:(void)0;
1595 }
1596 var = var1;
1597 RET_LABEL:;
1598 return var;
1599 }
1600 /* method poset#POSetElement#count= for (self: POSetElement[Object], Int) */
1601 void poset__POSetElement__count_61d(val* self, long p0) {
1602 self->attrs[COLOR_poset__POSetElement___count].l = p0; /* _count on <self:POSetElement[Object]> */
1603 RET_LABEL:;
1604 }
1605 /* method poset#POSetElement#count= for (self: Object, Int) */
1606 void VIRTUAL_poset__POSetElement__count_61d(val* self, long p0) {
1607 { /* Inline poset#POSetElement#count= (self,p0) on <self:Object(POSetElement[Object])> */
1608 self->attrs[COLOR_poset__POSetElement___count].l = p0; /* _count on <self:Object(POSetElement[Object])> */
1609 RET_LABEL1:(void)0;
1610 }
1611 RET_LABEL:;
1612 }
1613 /* method poset#POSetElement#greaters for (self: POSetElement[Object]): Collection[Object] */
1614 val* poset__POSetElement__greaters(val* self) {
1615 val* var /* : Collection[Object] */;
1616 val* var1 /* : HashSet[Object] */;
1617 val* var3 /* : HashSet[Object] */;
1618 {
1619 { /* Inline poset#POSetElement#tos (self) on <self:POSetElement[Object]> */
1620 var3 = self->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <self:POSetElement[Object]> */
1621 if (unlikely(var3 == NULL)) {
1622 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
1623 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 245);
1624 show_backtrace(1);
1625 }
1626 var1 = var3;
1627 RET_LABEL2:(void)0;
1628 }
1629 }
1630 var = var1;
1631 goto RET_LABEL;
1632 RET_LABEL:;
1633 return var;
1634 }
1635 /* method poset#POSetElement#greaters for (self: Object): Collection[Object] */
1636 val* VIRTUAL_poset__POSetElement__greaters(val* self) {
1637 val* var /* : Collection[Object] */;
1638 val* var1 /* : Collection[Object] */;
1639 var1 = poset__POSetElement__greaters(self);
1640 var = var1;
1641 RET_LABEL:;
1642 return var;
1643 }
1644 /* method poset#POSetElement#direct_greaters for (self: POSetElement[Object]): Collection[Object] */
1645 val* poset__POSetElement__direct_greaters(val* self) {
1646 val* var /* : Collection[Object] */;
1647 val* var1 /* : HashSet[Object] */;
1648 val* var3 /* : HashSet[Object] */;
1649 {
1650 { /* Inline poset#POSetElement#dtos (self) on <self:POSetElement[Object]> */
1651 var3 = self->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on <self:POSetElement[Object]> */
1652 if (unlikely(var3 == NULL)) {
1653 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dtos");
1654 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 247);
1655 show_backtrace(1);
1656 }
1657 var1 = var3;
1658 RET_LABEL2:(void)0;
1659 }
1660 }
1661 var = var1;
1662 goto RET_LABEL;
1663 RET_LABEL:;
1664 return var;
1665 }
1666 /* method poset#POSetElement#direct_greaters for (self: Object): Collection[Object] */
1667 val* VIRTUAL_poset__POSetElement__direct_greaters(val* self) {
1668 val* var /* : Collection[Object] */;
1669 val* var1 /* : Collection[Object] */;
1670 var1 = poset__POSetElement__direct_greaters(self);
1671 var = var1;
1672 RET_LABEL:;
1673 return var;
1674 }
1675 /* method poset#POSetElement#smallers for (self: POSetElement[Object]): Collection[Object] */
1676 val* poset__POSetElement__smallers(val* self) {
1677 val* var /* : Collection[Object] */;
1678 val* var1 /* : HashSet[Object] */;
1679 val* var3 /* : HashSet[Object] */;
1680 {
1681 { /* Inline poset#POSetElement#froms (self) on <self:POSetElement[Object]> */
1682 var3 = self->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on <self:POSetElement[Object]> */
1683 if (unlikely(var3 == NULL)) {
1684 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _froms");
1685 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 246);
1686 show_backtrace(1);
1687 }
1688 var1 = var3;
1689 RET_LABEL2:(void)0;
1690 }
1691 }
1692 var = var1;
1693 goto RET_LABEL;
1694 RET_LABEL:;
1695 return var;
1696 }
1697 /* method poset#POSetElement#smallers for (self: Object): Collection[Object] */
1698 val* VIRTUAL_poset__POSetElement__smallers(val* self) {
1699 val* var /* : Collection[Object] */;
1700 val* var1 /* : Collection[Object] */;
1701 var1 = poset__POSetElement__smallers(self);
1702 var = var1;
1703 RET_LABEL:;
1704 return var;
1705 }
1706 /* method poset#POSetElement#direct_smallers for (self: POSetElement[Object]): Collection[Object] */
1707 val* poset__POSetElement__direct_smallers(val* self) {
1708 val* var /* : Collection[Object] */;
1709 val* var1 /* : HashSet[Object] */;
1710 val* var3 /* : HashSet[Object] */;
1711 {
1712 { /* Inline poset#POSetElement#dfroms (self) on <self:POSetElement[Object]> */
1713 var3 = self->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on <self:POSetElement[Object]> */
1714 if (unlikely(var3 == NULL)) {
1715 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dfroms");
1716 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 248);
1717 show_backtrace(1);
1718 }
1719 var1 = var3;
1720 RET_LABEL2:(void)0;
1721 }
1722 }
1723 var = var1;
1724 goto RET_LABEL;
1725 RET_LABEL:;
1726 return var;
1727 }
1728 /* method poset#POSetElement#direct_smallers for (self: Object): Collection[Object] */
1729 val* VIRTUAL_poset__POSetElement__direct_smallers(val* self) {
1730 val* var /* : Collection[Object] */;
1731 val* var1 /* : Collection[Object] */;
1732 var1 = poset__POSetElement__direct_smallers(self);
1733 var = var1;
1734 RET_LABEL:;
1735 return var;
1736 }
1737 /* method poset#POSetElement#<= for (self: POSetElement[Object], Object): Bool */
1738 short int poset__POSetElement___60d_61d(val* self, val* p0) {
1739 short int var /* : Bool */;
1740 short int var1 /* : Bool */;
1741 int cltype;
1742 int idtype;
1743 const struct type* type_struct;
1744 const char* var_class_name;
1745 val* var_t /* var t: Object */;
1746 val* var2 /* : HashSet[Object] */;
1747 val* var4 /* : HashSet[Object] */;
1748 short int var5 /* : Bool */;
1749 /* Covariant cast for argument 0 (t) <p0:Object> isa E */
1750 /* <p0:Object> isa E */
1751 type_struct = self->type->resolution_table->types[COLOR_poset__POSetElement_FT0];
1752 cltype = type_struct->color;
1753 idtype = type_struct->id;
1754 if(cltype >= p0->type->table_size) {
1755 var1 = 0;
1756 } else {
1757 var1 = p0->type->type_table[cltype] == idtype;
1758 }
1759 if (unlikely(!var1)) {
1760 var_class_name = p0 == NULL ? "null" : p0->type->name;
1761 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
1762 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 280);
1763 show_backtrace(1);
1764 }
1765 var_t = p0;
1766 {
1767 { /* Inline poset#POSetElement#tos (self) on <self:POSetElement[Object]> */
1768 var4 = self->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <self:POSetElement[Object]> */
1769 if (unlikely(var4 == NULL)) {
1770 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
1771 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 245);
1772 show_backtrace(1);
1773 }
1774 var2 = var4;
1775 RET_LABEL3:(void)0;
1776 }
1777 }
1778 {
1779 var5 = hash_collection__HashSet__has(var2, var_t);
1780 }
1781 var = var5;
1782 goto RET_LABEL;
1783 RET_LABEL:;
1784 return var;
1785 }
1786 /* method poset#POSetElement#<= for (self: Object, Object): Bool */
1787 short int VIRTUAL_poset__POSetElement___60d_61d(val* self, val* p0) {
1788 short int var /* : Bool */;
1789 short int var1 /* : Bool */;
1790 var1 = poset__POSetElement___60d_61d(self, p0);
1791 var = var1;
1792 RET_LABEL:;
1793 return var;
1794 }
1795 /* method poset#POSetElement#< for (self: POSetElement[Object], Object): Bool */
1796 short int poset__POSetElement___60d(val* self, val* p0) {
1797 short int var /* : Bool */;
1798 short int var1 /* : Bool */;
1799 int cltype;
1800 int idtype;
1801 const struct type* type_struct;
1802 const char* var_class_name;
1803 val* var_t /* var t: Object */;
1804 short int var2 /* : Bool */;
1805 val* var3 /* : Object */;
1806 val* var5 /* : Object */;
1807 short int var6 /* : Bool */;
1808 short int var7 /* : Bool */;
1809 short int var_ /* var : Bool */;
1810 val* var8 /* : HashSet[Object] */;
1811 val* var10 /* : HashSet[Object] */;
1812 short int var11 /* : Bool */;
1813 /* Covariant cast for argument 0 (t) <p0:Object> isa E */
1814 /* <p0:Object> isa E */
1815 type_struct = self->type->resolution_table->types[COLOR_poset__POSetElement_FT0];
1816 cltype = type_struct->color;
1817 idtype = type_struct->id;
1818 if(cltype >= p0->type->table_size) {
1819 var1 = 0;
1820 } else {
1821 var1 = p0->type->type_table[cltype] == idtype;
1822 }
1823 if (unlikely(!var1)) {
1824 var_class_name = p0 == NULL ? "null" : p0->type->name;
1825 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
1826 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 286);
1827 show_backtrace(1);
1828 }
1829 var_t = p0;
1830 {
1831 { /* Inline poset#POSetElement#element (self) on <self:POSetElement[Object]> */
1832 var5 = self->attrs[COLOR_poset__POSetElement___element].val; /* _element on <self:POSetElement[Object]> */
1833 if (unlikely(var5 == NULL)) {
1834 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _element");
1835 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 242);
1836 show_backtrace(1);
1837 }
1838 var3 = var5;
1839 RET_LABEL4:(void)0;
1840 }
1841 }
1842 {
1843 var7 = ((short int (*)(val*, val*))(var_t->class->vft[COLOR_kernel__Object___33d_61d]))(var_t, var3) /* != on <var_t:Object>*/;
1844 var6 = var7;
1845 }
1846 var_ = var6;
1847 if (var6){
1848 {
1849 { /* Inline poset#POSetElement#tos (self) on <self:POSetElement[Object]> */
1850 var10 = self->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <self:POSetElement[Object]> */
1851 if (unlikely(var10 == NULL)) {
1852 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
1853 PRINT_ERROR(" (%s:%d)\n", "../lib/poset.nit", 245);
1854 show_backtrace(1);
1855 }
1856 var8 = var10;
1857 RET_LABEL9:(void)0;
1858 }
1859 }
1860 {
1861 var11 = hash_collection__HashSet__has(var8, var_t);
1862 }
1863 var2 = var11;
1864 } else {
1865 var2 = var_;
1866 }
1867 var = var2;
1868 goto RET_LABEL;
1869 RET_LABEL:;
1870 return var;
1871 }
1872 /* method poset#POSetElement#< for (self: Object, Object): Bool */
1873 short int VIRTUAL_poset__POSetElement___60d(val* self, val* p0) {
1874 short int var /* : Bool */;
1875 short int var1 /* : Bool */;
1876 var1 = poset__POSetElement___60d(self, p0);
1877 var = var1;
1878 RET_LABEL:;
1879 return var;
1880 }
1881 /* method poset#POSetElement#init for (self: POSetElement[Object]) */
1882 void poset__POSetElement__init(val* self) {
1883 {
1884 ((void (*)(val*))(self->class->vft[COLOR_poset__POSetElement__init]))(self) /* init on <self:POSetElement[Object]>*/;
1885 }
1886 RET_LABEL:;
1887 }
1888 /* method poset#POSetElement#init for (self: Object) */
1889 void VIRTUAL_poset__POSetElement__init(val* self) {
1890 { /* Inline poset#POSetElement#init (self) on <self:Object(POSetElement[Object])> */
1891 {
1892 ((void (*)(val*))(self->class->vft[COLOR_poset__POSetElement__init]))(self) /* init on <self:Object(POSetElement[Object])>*/;
1893 }
1894 RET_LABEL1:(void)0;
1895 }
1896 RET_LABEL:;
1897 }