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