update NOTICE
[nit.git] / c_src / coloring.sep.1.c
1 #include "coloring.sep.0.h"
2 /* method coloring#POSetConflictGraph#core for (self: POSetConflictGraph[Object]): HashSet[Object] */
3 val* coloring__POSetConflictGraph__core(val* self) {
4 val* var /* : HashSet[Object] */;
5 val* var1 /* : HashSet[Object] */;
6 var1 = self->attrs[COLOR_coloring__POSetConflictGraph___core].val; /* _core on <self:POSetConflictGraph[Object]> */
7 if (unlikely(var1 == NULL)) {
8 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _core");
9 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 22);
10 show_backtrace(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method coloring#POSetConflictGraph#core for (self: Object): HashSet[Object] */
17 val* VIRTUAL_coloring__POSetConflictGraph__core(val* self) {
18 val* var /* : HashSet[Object] */;
19 val* var1 /* : HashSet[Object] */;
20 val* var3 /* : HashSet[Object] */;
21 { /* Inline coloring#POSetConflictGraph#core (self) on <self:Object(POSetConflictGraph[Object])> */
22 var3 = self->attrs[COLOR_coloring__POSetConflictGraph___core].val; /* _core on <self:Object(POSetConflictGraph[Object])> */
23 if (unlikely(var3 == NULL)) {
24 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _core");
25 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 22);
26 show_backtrace(1);
27 }
28 var1 = var3;
29 RET_LABEL2:(void)0;
30 }
31 var = var1;
32 RET_LABEL:;
33 return var;
34 }
35 /* method coloring#POSetConflictGraph#border for (self: POSetConflictGraph[Object]): HashSet[Object] */
36 val* coloring__POSetConflictGraph__border(val* self) {
37 val* var /* : HashSet[Object] */;
38 val* var1 /* : HashSet[Object] */;
39 var1 = self->attrs[COLOR_coloring__POSetConflictGraph___border].val; /* _border on <self:POSetConflictGraph[Object]> */
40 if (unlikely(var1 == NULL)) {
41 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _border");
42 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 28);
43 show_backtrace(1);
44 }
45 var = var1;
46 RET_LABEL:;
47 return var;
48 }
49 /* method coloring#POSetConflictGraph#border for (self: Object): HashSet[Object] */
50 val* VIRTUAL_coloring__POSetConflictGraph__border(val* self) {
51 val* var /* : HashSet[Object] */;
52 val* var1 /* : HashSet[Object] */;
53 val* var3 /* : HashSet[Object] */;
54 { /* Inline coloring#POSetConflictGraph#border (self) on <self:Object(POSetConflictGraph[Object])> */
55 var3 = self->attrs[COLOR_coloring__POSetConflictGraph___border].val; /* _border on <self:Object(POSetConflictGraph[Object])> */
56 if (unlikely(var3 == NULL)) {
57 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _border");
58 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 28);
59 show_backtrace(1);
60 }
61 var1 = var3;
62 RET_LABEL2:(void)0;
63 }
64 var = var1;
65 RET_LABEL:;
66 return var;
67 }
68 /* method coloring#POSetConflictGraph#crown for (self: POSetConflictGraph[Object]): HashSet[Object] */
69 val* coloring__POSetConflictGraph__crown(val* self) {
70 val* var /* : HashSet[Object] */;
71 val* var1 /* : HashSet[Object] */;
72 var1 = self->attrs[COLOR_coloring__POSetConflictGraph___crown].val; /* _crown on <self:POSetConflictGraph[Object]> */
73 if (unlikely(var1 == NULL)) {
74 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _crown");
75 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 34);
76 show_backtrace(1);
77 }
78 var = var1;
79 RET_LABEL:;
80 return var;
81 }
82 /* method coloring#POSetConflictGraph#crown for (self: Object): HashSet[Object] */
83 val* VIRTUAL_coloring__POSetConflictGraph__crown(val* self) {
84 val* var /* : HashSet[Object] */;
85 val* var1 /* : HashSet[Object] */;
86 val* var3 /* : HashSet[Object] */;
87 { /* Inline coloring#POSetConflictGraph#crown (self) on <self:Object(POSetConflictGraph[Object])> */
88 var3 = self->attrs[COLOR_coloring__POSetConflictGraph___crown].val; /* _crown on <self:Object(POSetConflictGraph[Object])> */
89 if (unlikely(var3 == NULL)) {
90 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _crown");
91 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 34);
92 show_backtrace(1);
93 }
94 var1 = var3;
95 RET_LABEL2:(void)0;
96 }
97 var = var1;
98 RET_LABEL:;
99 return var;
100 }
101 /* method coloring#POSetConflictGraph#conflicts for (self: POSetConflictGraph[Object]): HashMap[Object, Set[Object]] */
102 val* coloring__POSetConflictGraph__conflicts(val* self) {
103 val* var /* : HashMap[Object, Set[Object]] */;
104 val* var1 /* : HashMap[Object, Set[Object]] */;
105 var1 = self->attrs[COLOR_coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <self:POSetConflictGraph[Object]> */
106 if (unlikely(var1 == NULL)) {
107 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
108 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 40);
109 show_backtrace(1);
110 }
111 var = var1;
112 RET_LABEL:;
113 return var;
114 }
115 /* method coloring#POSetConflictGraph#conflicts for (self: Object): HashMap[Object, Set[Object]] */
116 val* VIRTUAL_coloring__POSetConflictGraph__conflicts(val* self) {
117 val* var /* : HashMap[Object, Set[Object]] */;
118 val* var1 /* : HashMap[Object, Set[Object]] */;
119 val* var3 /* : HashMap[Object, Set[Object]] */;
120 { /* Inline coloring#POSetConflictGraph#conflicts (self) on <self:Object(POSetConflictGraph[Object])> */
121 var3 = self->attrs[COLOR_coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <self:Object(POSetConflictGraph[Object])> */
122 if (unlikely(var3 == NULL)) {
123 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
124 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 40);
125 show_backtrace(1);
126 }
127 var1 = var3;
128 RET_LABEL2:(void)0;
129 }
130 var = var1;
131 RET_LABEL:;
132 return var;
133 }
134 /* method coloring#POSetConflictGraph#poset for (self: POSetConflictGraph[Object]): POSet[Object] */
135 val* coloring__POSetConflictGraph__poset(val* self) {
136 val* var /* : POSet[Object] */;
137 val* var1 /* : POSet[Object] */;
138 var1 = self->attrs[COLOR_coloring__POSetConflictGraph___poset].val; /* _poset on <self:POSetConflictGraph[Object]> */
139 if (unlikely(var1 == NULL)) {
140 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
141 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 48);
142 show_backtrace(1);
143 }
144 var = var1;
145 RET_LABEL:;
146 return var;
147 }
148 /* method coloring#POSetConflictGraph#poset for (self: Object): POSet[Object] */
149 val* VIRTUAL_coloring__POSetConflictGraph__poset(val* self) {
150 val* var /* : POSet[Object] */;
151 val* var1 /* : POSet[Object] */;
152 val* var3 /* : POSet[Object] */;
153 { /* Inline coloring#POSetConflictGraph#poset (self) on <self:Object(POSetConflictGraph[Object])> */
154 var3 = self->attrs[COLOR_coloring__POSetConflictGraph___poset].val; /* _poset on <self:Object(POSetConflictGraph[Object])> */
155 if (unlikely(var3 == NULL)) {
156 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
157 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 48);
158 show_backtrace(1);
159 }
160 var1 = var3;
161 RET_LABEL2:(void)0;
162 }
163 var = var1;
164 RET_LABEL:;
165 return var;
166 }
167 /* method coloring#POSetConflictGraph#poset= for (self: POSetConflictGraph[Object], POSet[Object]) */
168 void coloring__POSetConflictGraph__poset_61d(val* self, val* p0) {
169 short int var /* : Bool */;
170 int cltype;
171 int idtype;
172 const struct type* type_struct;
173 const char* var_class_name;
174 /* Covariant cast for argument 0 (poset) <p0:POSet[Object]> isa POSet[E] */
175 /* <p0:POSet[Object]> isa POSet[E] */
176 type_struct = self->type->resolution_table->types[COLOR_poset__POSetcoloring__POSetConflictGraph_FT0];
177 cltype = type_struct->color;
178 idtype = type_struct->id;
179 if(cltype >= p0->type->table_size) {
180 var = 0;
181 } else {
182 var = p0->type->type_table[cltype] == idtype;
183 }
184 if (unlikely(!var)) {
185 var_class_name = p0 == NULL ? "null" : p0->type->name;
186 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[E]", var_class_name);
187 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 48);
188 show_backtrace(1);
189 }
190 self->attrs[COLOR_coloring__POSetConflictGraph___poset].val = p0; /* _poset on <self:POSetConflictGraph[Object]> */
191 RET_LABEL:;
192 }
193 /* method coloring#POSetConflictGraph#poset= for (self: Object, POSet[Object]) */
194 void VIRTUAL_coloring__POSetConflictGraph__poset_61d(val* self, val* p0) {
195 short int var /* : Bool */;
196 int cltype;
197 int idtype;
198 const struct type* type_struct;
199 const char* var_class_name;
200 { /* Inline coloring#POSetConflictGraph#poset= (self,p0) on <self:Object(POSetConflictGraph[Object])> */
201 /* Covariant cast for argument 0 (poset) <p0:POSet[Object]> isa POSet[E] */
202 /* <p0:POSet[Object]> isa POSet[E] */
203 type_struct = self->type->resolution_table->types[COLOR_poset__POSetcoloring__POSetConflictGraph_FT0];
204 cltype = type_struct->color;
205 idtype = type_struct->id;
206 if(cltype >= p0->type->table_size) {
207 var = 0;
208 } else {
209 var = p0->type->type_table[cltype] == idtype;
210 }
211 if (unlikely(!var)) {
212 var_class_name = p0 == NULL ? "null" : p0->type->name;
213 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[E]", var_class_name);
214 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 48);
215 show_backtrace(1);
216 }
217 self->attrs[COLOR_coloring__POSetConflictGraph___poset].val = p0; /* _poset on <self:Object(POSetConflictGraph[Object])> */
218 RET_LABEL1:(void)0;
219 }
220 RET_LABEL:;
221 }
222 /* method coloring#POSetConflictGraph#init for (self: POSetConflictGraph[Object], POSet[Object]) */
223 void coloring__POSetConflictGraph__init(val* self, val* p0) {
224 short int var /* : Bool */;
225 int cltype;
226 int idtype;
227 const struct type* type_struct;
228 const char* var_class_name;
229 val* var_poset /* var poset: POSet[Object] */;
230 short int var2 /* : Bool */;
231 int cltype3;
232 int idtype4;
233 const struct type* type_struct5;
234 const char* var_class_name6;
235 /* Covariant cast for argument 0 (poset) <p0:POSet[Object]> isa POSet[E] */
236 /* <p0:POSet[Object]> isa POSet[E] */
237 type_struct = self->type->resolution_table->types[COLOR_poset__POSetcoloring__POSetConflictGraph_FT0];
238 cltype = type_struct->color;
239 idtype = type_struct->id;
240 if(cltype >= p0->type->table_size) {
241 var = 0;
242 } else {
243 var = p0->type->type_table[cltype] == idtype;
244 }
245 if (unlikely(!var)) {
246 var_class_name = p0 == NULL ? "null" : p0->type->name;
247 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[E]", var_class_name);
248 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 50);
249 show_backtrace(1);
250 }
251 var_poset = p0;
252 {
253 { /* Inline coloring#POSetConflictGraph#poset= (self,var_poset) on <self:POSetConflictGraph[Object]> */
254 /* Covariant cast for argument 0 (poset) <var_poset:POSet[Object]> isa POSet[E] */
255 /* <var_poset:POSet[Object]> isa POSet[E] */
256 type_struct5 = self->type->resolution_table->types[COLOR_poset__POSetcoloring__POSetConflictGraph_FT0];
257 cltype3 = type_struct5->color;
258 idtype4 = type_struct5->id;
259 if(cltype3 >= var_poset->type->table_size) {
260 var2 = 0;
261 } else {
262 var2 = var_poset->type->type_table[cltype3] == idtype4;
263 }
264 if (unlikely(!var2)) {
265 var_class_name6 = var_poset == NULL ? "null" : var_poset->type->name;
266 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[E]", var_class_name6);
267 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 48);
268 show_backtrace(1);
269 }
270 self->attrs[COLOR_coloring__POSetConflictGraph___poset].val = var_poset; /* _poset on <self:POSetConflictGraph[Object]> */
271 RET_LABEL1:(void)0;
272 }
273 }
274 {
275 coloring__POSetConflictGraph__extract_core(self); /* Direct call coloring#POSetConflictGraph#extract_core on <self:POSetConflictGraph[Object]>*/
276 }
277 {
278 coloring__POSetConflictGraph__extract_border(self); /* Direct call coloring#POSetConflictGraph#extract_border on <self:POSetConflictGraph[Object]>*/
279 }
280 {
281 coloring__POSetConflictGraph__extract_crown(self); /* Direct call coloring#POSetConflictGraph#extract_crown on <self:POSetConflictGraph[Object]>*/
282 }
283 {
284 coloring__POSetConflictGraph__compute_conflicts(self); /* Direct call coloring#POSetConflictGraph#compute_conflicts on <self:POSetConflictGraph[Object]>*/
285 }
286 RET_LABEL:;
287 }
288 /* method coloring#POSetConflictGraph#init for (self: Object, POSet[Object]) */
289 void VIRTUAL_coloring__POSetConflictGraph__init(val* self, val* p0) {
290 coloring__POSetConflictGraph__init(self, p0); /* Direct call coloring#POSetConflictGraph#init on <self:Object(POSetConflictGraph[Object])>*/
291 RET_LABEL:;
292 }
293 /* method coloring#POSetConflictGraph#extract_core for (self: POSetConflictGraph[Object]) */
294 void coloring__POSetConflictGraph__extract_core(val* self) {
295 val* var /* : HashSet[Object] */;
296 val* var2 /* : HashSet[Object] */;
297 val* var3 /* : POSet[Object] */;
298 val* var5 /* : POSet[Object] */;
299 val* var_ /* var : POSet[Object] */;
300 val* var6 /* : Iterator[Object] */;
301 val* var_7 /* var : Iterator[Object] */;
302 short int var8 /* : Bool */;
303 val* var9 /* : nullable Object */;
304 val* var_e /* var e: Object */;
305 val* var10 /* : POSet[Object] */;
306 val* var12 /* : POSet[Object] */;
307 val* var13 /* : POSetElement[Object] */;
308 val* var14 /* : Collection[Object] */;
309 long var15 /* : Int */;
310 long var16 /* : Int */;
311 short int var17 /* : Bool */;
312 short int var19 /* : Bool */;
313 int cltype;
314 int idtype;
315 const char* var_class_name;
316 short int var20 /* : Bool */;
317 val* var21 /* : HashSet[Object] */;
318 val* var23 /* : HashSet[Object] */;
319 val* var24 /* : POSet[Object] */;
320 val* var26 /* : POSet[Object] */;
321 val* var27 /* : POSetElement[Object] */;
322 val* var28 /* : Collection[Object] */;
323 {
324 { /* Inline coloring#POSetConflictGraph#core (self) on <self:POSetConflictGraph[Object]> */
325 var2 = self->attrs[COLOR_coloring__POSetConflictGraph___core].val; /* _core on <self:POSetConflictGraph[Object]> */
326 if (unlikely(var2 == NULL)) {
327 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _core");
328 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 22);
329 show_backtrace(1);
330 }
331 var = var2;
332 RET_LABEL1:(void)0;
333 }
334 }
335 {
336 hash_collection__HashSet__clear(var); /* Direct call hash_collection#HashSet#clear on <var:HashSet[Object]>*/
337 }
338 {
339 { /* Inline coloring#POSetConflictGraph#poset (self) on <self:POSetConflictGraph[Object]> */
340 var5 = self->attrs[COLOR_coloring__POSetConflictGraph___poset].val; /* _poset on <self:POSetConflictGraph[Object]> */
341 if (unlikely(var5 == NULL)) {
342 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
343 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 48);
344 show_backtrace(1);
345 }
346 var3 = var5;
347 RET_LABEL4:(void)0;
348 }
349 }
350 var_ = var3;
351 {
352 var6 = poset__POSet__iterator(var_);
353 }
354 var_7 = var6;
355 for(;;) {
356 {
357 var8 = ((short int (*)(val*))(var_7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_7) /* is_ok on <var_7:Iterator[Object]>*/;
358 }
359 if (var8){
360 {
361 var9 = ((val* (*)(val*))(var_7->class->vft[COLOR_abstract_collection__Iterator__item]))(var_7) /* item on <var_7:Iterator[Object]>*/;
362 }
363 var_e = var9;
364 {
365 { /* Inline coloring#POSetConflictGraph#poset (self) on <self:POSetConflictGraph[Object]> */
366 var12 = self->attrs[COLOR_coloring__POSetConflictGraph___poset].val; /* _poset on <self:POSetConflictGraph[Object]> */
367 if (unlikely(var12 == NULL)) {
368 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
369 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 48);
370 show_backtrace(1);
371 }
372 var10 = var12;
373 RET_LABEL11:(void)0;
374 }
375 }
376 {
377 var13 = poset__POSet___91d_93d(var10, var_e);
378 }
379 {
380 var14 = poset__POSetElement__direct_greaters(var13);
381 }
382 {
383 var15 = ((long (*)(val*))(var14->class->vft[COLOR_abstract_collection__Collection__length]))(var14) /* length on <var14:Collection[Object]>*/;
384 }
385 var16 = 1;
386 {
387 { /* Inline kernel#Int#> (var15,var16) on <var15:Int> */
388 /* Covariant cast for argument 0 (i) <var16:Int> isa OTHER */
389 /* <var16:Int> isa OTHER */
390 var19 = 1; /* easy <var16:Int> isa OTHER*/
391 if (unlikely(!var19)) {
392 var_class_name = type_kernel__Int.name;
393 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
394 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
395 show_backtrace(1);
396 }
397 var20 = var15 > var16;
398 var17 = var20;
399 goto RET_LABEL18;
400 RET_LABEL18:(void)0;
401 }
402 }
403 if (var17){
404 {
405 { /* Inline coloring#POSetConflictGraph#core (self) on <self:POSetConflictGraph[Object]> */
406 var23 = self->attrs[COLOR_coloring__POSetConflictGraph___core].val; /* _core on <self:POSetConflictGraph[Object]> */
407 if (unlikely(var23 == NULL)) {
408 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _core");
409 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 22);
410 show_backtrace(1);
411 }
412 var21 = var23;
413 RET_LABEL22:(void)0;
414 }
415 }
416 {
417 { /* Inline coloring#POSetConflictGraph#poset (self) on <self:POSetConflictGraph[Object]> */
418 var26 = self->attrs[COLOR_coloring__POSetConflictGraph___poset].val; /* _poset on <self:POSetConflictGraph[Object]> */
419 if (unlikely(var26 == NULL)) {
420 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
421 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 48);
422 show_backtrace(1);
423 }
424 var24 = var26;
425 RET_LABEL25:(void)0;
426 }
427 }
428 {
429 var27 = poset__POSet___91d_93d(var24, var_e);
430 }
431 {
432 var28 = poset__POSetElement__greaters(var27);
433 }
434 {
435 abstract_collection__SimpleCollection__add_all(var21, var28); /* Direct call abstract_collection#SimpleCollection#add_all on <var21:HashSet[Object]>*/
436 }
437 } else {
438 }
439 {
440 ((void (*)(val*))(var_7->class->vft[COLOR_abstract_collection__Iterator__next]))(var_7) /* next on <var_7:Iterator[Object]>*/;
441 }
442 } else {
443 goto BREAK_label;
444 }
445 }
446 BREAK_label: (void)0;
447 {
448 { /* Inline abstract_collection#Iterator#finish (var_7) on <var_7:Iterator[Object]> */
449 RET_LABEL29:(void)0;
450 }
451 }
452 RET_LABEL:;
453 }
454 /* method coloring#POSetConflictGraph#extract_core for (self: Object) */
455 void VIRTUAL_coloring__POSetConflictGraph__extract_core(val* self) {
456 coloring__POSetConflictGraph__extract_core(self); /* Direct call coloring#POSetConflictGraph#extract_core on <self:Object(POSetConflictGraph[Object])>*/
457 RET_LABEL:;
458 }
459 /* method coloring#POSetConflictGraph#extract_border for (self: POSetConflictGraph[Object]) */
460 void coloring__POSetConflictGraph__extract_border(val* self) {
461 val* var /* : HashSet[Object] */;
462 val* var2 /* : HashSet[Object] */;
463 val* var3 /* : HashSet[Object] */;
464 val* var5 /* : HashSet[Object] */;
465 val* var_ /* var : HashSet[Object] */;
466 val* var6 /* : Iterator[Object] */;
467 val* var_7 /* var : Iterator[Object] */;
468 short int var8 /* : Bool */;
469 val* var9 /* : nullable Object */;
470 val* var_e /* var e: Object */;
471 short int var10 /* : Bool */;
472 short int var11 /* : Bool */;
473 val* var12 /* : HashSet[Object] */;
474 val* var14 /* : HashSet[Object] */;
475 val* var17 /* : HashSet[Object] */;
476 val* var19 /* : HashSet[Object] */;
477 val* var_20 /* var : HashSet[Object] */;
478 val* var21 /* : Iterator[Object] */;
479 val* var_22 /* var : Iterator[Object] */;
480 short int var23 /* : Bool */;
481 val* var24 /* : nullable Object */;
482 val* var_e25 /* var e: Object */;
483 val* var26 /* : HashSet[Object] */;
484 val* var28 /* : HashSet[Object] */;
485 {
486 { /* Inline coloring#POSetConflictGraph#border (self) on <self:POSetConflictGraph[Object]> */
487 var2 = self->attrs[COLOR_coloring__POSetConflictGraph___border].val; /* _border on <self:POSetConflictGraph[Object]> */
488 if (unlikely(var2 == NULL)) {
489 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _border");
490 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 28);
491 show_backtrace(1);
492 }
493 var = var2;
494 RET_LABEL1:(void)0;
495 }
496 }
497 {
498 hash_collection__HashSet__clear(var); /* Direct call hash_collection#HashSet#clear on <var:HashSet[Object]>*/
499 }
500 {
501 { /* Inline coloring#POSetConflictGraph#core (self) on <self:POSetConflictGraph[Object]> */
502 var5 = self->attrs[COLOR_coloring__POSetConflictGraph___core].val; /* _core on <self:POSetConflictGraph[Object]> */
503 if (unlikely(var5 == NULL)) {
504 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _core");
505 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 22);
506 show_backtrace(1);
507 }
508 var3 = var5;
509 RET_LABEL4:(void)0;
510 }
511 }
512 var_ = var3;
513 {
514 var6 = hash_collection__HashSet__iterator(var_);
515 }
516 var_7 = var6;
517 for(;;) {
518 {
519 var8 = ((short int (*)(val*))(var_7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_7) /* is_ok on <var_7:Iterator[Object]>*/;
520 }
521 if (var8){
522 {
523 var9 = ((val* (*)(val*))(var_7->class->vft[COLOR_abstract_collection__Iterator__item]))(var_7) /* item on <var_7:Iterator[Object]>*/;
524 }
525 var_e = var9;
526 {
527 var10 = coloring__POSetConflictGraph__is_border(self, var_e);
528 }
529 var11 = !var10;
530 if (var11){
531 goto BREAK_label;
532 } else {
533 }
534 {
535 { /* Inline coloring#POSetConflictGraph#border (self) on <self:POSetConflictGraph[Object]> */
536 var14 = self->attrs[COLOR_coloring__POSetConflictGraph___border].val; /* _border on <self:POSetConflictGraph[Object]> */
537 if (unlikely(var14 == NULL)) {
538 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _border");
539 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 28);
540 show_backtrace(1);
541 }
542 var12 = var14;
543 RET_LABEL13:(void)0;
544 }
545 }
546 {
547 hash_collection__HashSet__add(var12, var_e); /* Direct call hash_collection#HashSet#add on <var12:HashSet[Object]>*/
548 }
549 BREAK_label: (void)0;
550 {
551 ((void (*)(val*))(var_7->class->vft[COLOR_abstract_collection__Iterator__next]))(var_7) /* next on <var_7:Iterator[Object]>*/;
552 }
553 } else {
554 goto BREAK_label15;
555 }
556 }
557 BREAK_label15: (void)0;
558 {
559 { /* Inline abstract_collection#Iterator#finish (var_7) on <var_7:Iterator[Object]> */
560 RET_LABEL16:(void)0;
561 }
562 }
563 {
564 { /* Inline coloring#POSetConflictGraph#border (self) on <self:POSetConflictGraph[Object]> */
565 var19 = self->attrs[COLOR_coloring__POSetConflictGraph___border].val; /* _border on <self:POSetConflictGraph[Object]> */
566 if (unlikely(var19 == NULL)) {
567 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _border");
568 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 28);
569 show_backtrace(1);
570 }
571 var17 = var19;
572 RET_LABEL18:(void)0;
573 }
574 }
575 var_20 = var17;
576 {
577 var21 = hash_collection__HashSet__iterator(var_20);
578 }
579 var_22 = var21;
580 for(;;) {
581 {
582 var23 = ((short int (*)(val*))(var_22->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_22) /* is_ok on <var_22:Iterator[Object]>*/;
583 }
584 if (var23){
585 {
586 var24 = ((val* (*)(val*))(var_22->class->vft[COLOR_abstract_collection__Iterator__item]))(var_22) /* item on <var_22:Iterator[Object]>*/;
587 }
588 var_e25 = var24;
589 {
590 { /* Inline coloring#POSetConflictGraph#core (self) on <self:POSetConflictGraph[Object]> */
591 var28 = self->attrs[COLOR_coloring__POSetConflictGraph___core].val; /* _core on <self:POSetConflictGraph[Object]> */
592 if (unlikely(var28 == NULL)) {
593 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _core");
594 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 22);
595 show_backtrace(1);
596 }
597 var26 = var28;
598 RET_LABEL27:(void)0;
599 }
600 }
601 {
602 hash_collection__HashSet__remove(var26, var_e25); /* Direct call hash_collection#HashSet#remove on <var26:HashSet[Object]>*/
603 }
604 {
605 ((void (*)(val*))(var_22->class->vft[COLOR_abstract_collection__Iterator__next]))(var_22) /* next on <var_22:Iterator[Object]>*/;
606 }
607 } else {
608 goto BREAK_label29;
609 }
610 }
611 BREAK_label29: (void)0;
612 {
613 { /* Inline abstract_collection#Iterator#finish (var_22) on <var_22:Iterator[Object]> */
614 RET_LABEL30:(void)0;
615 }
616 }
617 RET_LABEL:;
618 }
619 /* method coloring#POSetConflictGraph#extract_border for (self: Object) */
620 void VIRTUAL_coloring__POSetConflictGraph__extract_border(val* self) {
621 coloring__POSetConflictGraph__extract_border(self); /* Direct call coloring#POSetConflictGraph#extract_border on <self:Object(POSetConflictGraph[Object])>*/
622 RET_LABEL:;
623 }
624 /* method coloring#POSetConflictGraph#is_border for (self: POSetConflictGraph[Object], Object): Bool */
625 short int coloring__POSetConflictGraph__is_border(val* self, val* p0) {
626 short int var /* : Bool */;
627 short int var1 /* : Bool */;
628 int cltype;
629 int idtype;
630 const struct type* type_struct;
631 const char* var_class_name;
632 val* var_e /* var e: Object */;
633 val* var2 /* : POSet[Object] */;
634 val* var4 /* : POSet[Object] */;
635 val* var5 /* : POSetElement[Object] */;
636 val* var6 /* : Collection[Object] */;
637 val* var_ /* var : Collection[Object] */;
638 val* var7 /* : Iterator[nullable Object] */;
639 val* var_8 /* var : Iterator[Object] */;
640 short int var9 /* : Bool */;
641 val* var10 /* : nullable Object */;
642 val* var_child /* var child: Object */;
643 val* var11 /* : HashSet[Object] */;
644 val* var13 /* : HashSet[Object] */;
645 short int var14 /* : Bool */;
646 short int var15 /* : Bool */;
647 short int var17 /* : Bool */;
648 /* Covariant cast for argument 0 (e) <p0:Object> isa E */
649 /* <p0:Object> isa E */
650 type_struct = self->type->resolution_table->types[COLOR_coloring__POSetConflictGraph_FT0];
651 cltype = type_struct->color;
652 idtype = type_struct->id;
653 if(cltype >= p0->type->table_size) {
654 var1 = 0;
655 } else {
656 var1 = p0->type->type_table[cltype] == idtype;
657 }
658 if (unlikely(!var1)) {
659 var_class_name = p0 == NULL ? "null" : p0->type->name;
660 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
661 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 79);
662 show_backtrace(1);
663 }
664 var_e = p0;
665 {
666 { /* Inline coloring#POSetConflictGraph#poset (self) on <self:POSetConflictGraph[Object]> */
667 var4 = self->attrs[COLOR_coloring__POSetConflictGraph___poset].val; /* _poset on <self:POSetConflictGraph[Object]> */
668 if (unlikely(var4 == NULL)) {
669 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
670 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 48);
671 show_backtrace(1);
672 }
673 var2 = var4;
674 RET_LABEL3:(void)0;
675 }
676 }
677 {
678 var5 = poset__POSet___91d_93d(var2, var_e);
679 }
680 {
681 var6 = poset__POSetElement__direct_smallers(var5);
682 }
683 var_ = var6;
684 {
685 var7 = ((val* (*)(val*))(var_->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_) /* iterator on <var_:Collection[Object]>*/;
686 }
687 var_8 = var7;
688 for(;;) {
689 {
690 var9 = ((short int (*)(val*))(var_8->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_8) /* is_ok on <var_8:Iterator[Object]>*/;
691 }
692 if (var9){
693 {
694 var10 = ((val* (*)(val*))(var_8->class->vft[COLOR_abstract_collection__Iterator__item]))(var_8) /* item on <var_8:Iterator[Object]>*/;
695 }
696 var_child = var10;
697 {
698 { /* Inline coloring#POSetConflictGraph#core (self) on <self:POSetConflictGraph[Object]> */
699 var13 = self->attrs[COLOR_coloring__POSetConflictGraph___core].val; /* _core on <self:POSetConflictGraph[Object]> */
700 if (unlikely(var13 == NULL)) {
701 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _core");
702 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 22);
703 show_backtrace(1);
704 }
705 var11 = var13;
706 RET_LABEL12:(void)0;
707 }
708 }
709 {
710 var14 = hash_collection__HashSet__has(var11, var_child);
711 }
712 if (var14){
713 var15 = 0;
714 var = var15;
715 goto RET_LABEL;
716 } else {
717 }
718 {
719 ((void (*)(val*))(var_8->class->vft[COLOR_abstract_collection__Iterator__next]))(var_8) /* next on <var_8:Iterator[Object]>*/;
720 }
721 } else {
722 goto BREAK_label;
723 }
724 }
725 BREAK_label: (void)0;
726 {
727 { /* Inline abstract_collection#Iterator#finish (var_8) on <var_8:Iterator[Object]> */
728 RET_LABEL16:(void)0;
729 }
730 }
731 var17 = 1;
732 var = var17;
733 goto RET_LABEL;
734 RET_LABEL:;
735 return var;
736 }
737 /* method coloring#POSetConflictGraph#is_border for (self: Object, Object): Bool */
738 short int VIRTUAL_coloring__POSetConflictGraph__is_border(val* self, val* p0) {
739 short int var /* : Bool */;
740 short int var1 /* : Bool */;
741 var1 = coloring__POSetConflictGraph__is_border(self, p0);
742 var = var1;
743 RET_LABEL:;
744 return var;
745 }
746 /* method coloring#POSetConflictGraph#extract_crown for (self: POSetConflictGraph[Object]) */
747 void coloring__POSetConflictGraph__extract_crown(val* self) {
748 val* var /* : HashSet[Object] */;
749 val* var2 /* : HashSet[Object] */;
750 val* var3 /* : POSet[Object] */;
751 val* var5 /* : POSet[Object] */;
752 val* var_ /* var : POSet[Object] */;
753 val* var6 /* : Iterator[Object] */;
754 val* var_7 /* var : Iterator[Object] */;
755 short int var8 /* : Bool */;
756 val* var9 /* : nullable Object */;
757 val* var_e /* var e: Object */;
758 short int var10 /* : Bool */;
759 val* var11 /* : HashSet[Object] */;
760 val* var13 /* : HashSet[Object] */;
761 short int var14 /* : Bool */;
762 short int var15 /* : Bool */;
763 short int var_16 /* var : Bool */;
764 val* var17 /* : HashSet[Object] */;
765 val* var19 /* : HashSet[Object] */;
766 short int var20 /* : Bool */;
767 short int var21 /* : Bool */;
768 val* var22 /* : HashSet[Object] */;
769 val* var24 /* : HashSet[Object] */;
770 {
771 { /* Inline coloring#POSetConflictGraph#crown (self) on <self:POSetConflictGraph[Object]> */
772 var2 = self->attrs[COLOR_coloring__POSetConflictGraph___crown].val; /* _crown on <self:POSetConflictGraph[Object]> */
773 if (unlikely(var2 == NULL)) {
774 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _crown");
775 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 34);
776 show_backtrace(1);
777 }
778 var = var2;
779 RET_LABEL1:(void)0;
780 }
781 }
782 {
783 hash_collection__HashSet__clear(var); /* Direct call hash_collection#HashSet#clear on <var:HashSet[Object]>*/
784 }
785 {
786 { /* Inline coloring#POSetConflictGraph#poset (self) on <self:POSetConflictGraph[Object]> */
787 var5 = self->attrs[COLOR_coloring__POSetConflictGraph___poset].val; /* _poset on <self:POSetConflictGraph[Object]> */
788 if (unlikely(var5 == NULL)) {
789 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
790 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 48);
791 show_backtrace(1);
792 }
793 var3 = var5;
794 RET_LABEL4:(void)0;
795 }
796 }
797 var_ = var3;
798 {
799 var6 = poset__POSet__iterator(var_);
800 }
801 var_7 = var6;
802 for(;;) {
803 {
804 var8 = ((short int (*)(val*))(var_7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_7) /* is_ok on <var_7:Iterator[Object]>*/;
805 }
806 if (var8){
807 {
808 var9 = ((val* (*)(val*))(var_7->class->vft[COLOR_abstract_collection__Iterator__item]))(var_7) /* item on <var_7:Iterator[Object]>*/;
809 }
810 var_e = var9;
811 {
812 { /* Inline coloring#POSetConflictGraph#core (self) on <self:POSetConflictGraph[Object]> */
813 var13 = self->attrs[COLOR_coloring__POSetConflictGraph___core].val; /* _core on <self:POSetConflictGraph[Object]> */
814 if (unlikely(var13 == NULL)) {
815 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _core");
816 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 22);
817 show_backtrace(1);
818 }
819 var11 = var13;
820 RET_LABEL12:(void)0;
821 }
822 }
823 {
824 var14 = hash_collection__HashSet__has(var11, var_e);
825 }
826 var15 = !var14;
827 var_16 = var15;
828 if (var15){
829 {
830 { /* Inline coloring#POSetConflictGraph#border (self) on <self:POSetConflictGraph[Object]> */
831 var19 = self->attrs[COLOR_coloring__POSetConflictGraph___border].val; /* _border on <self:POSetConflictGraph[Object]> */
832 if (unlikely(var19 == NULL)) {
833 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _border");
834 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 28);
835 show_backtrace(1);
836 }
837 var17 = var19;
838 RET_LABEL18:(void)0;
839 }
840 }
841 {
842 var20 = hash_collection__HashSet__has(var17, var_e);
843 }
844 var21 = !var20;
845 var10 = var21;
846 } else {
847 var10 = var_16;
848 }
849 if (var10){
850 {
851 { /* Inline coloring#POSetConflictGraph#crown (self) on <self:POSetConflictGraph[Object]> */
852 var24 = self->attrs[COLOR_coloring__POSetConflictGraph___crown].val; /* _crown on <self:POSetConflictGraph[Object]> */
853 if (unlikely(var24 == NULL)) {
854 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _crown");
855 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 34);
856 show_backtrace(1);
857 }
858 var22 = var24;
859 RET_LABEL23:(void)0;
860 }
861 }
862 {
863 hash_collection__HashSet__add(var22, var_e); /* Direct call hash_collection#HashSet#add on <var22:HashSet[Object]>*/
864 }
865 } else {
866 }
867 {
868 ((void (*)(val*))(var_7->class->vft[COLOR_abstract_collection__Iterator__next]))(var_7) /* next on <var_7:Iterator[Object]>*/;
869 }
870 } else {
871 goto BREAK_label;
872 }
873 }
874 BREAK_label: (void)0;
875 {
876 { /* Inline abstract_collection#Iterator#finish (var_7) on <var_7:Iterator[Object]> */
877 RET_LABEL25:(void)0;
878 }
879 }
880 RET_LABEL:;
881 }
882 /* method coloring#POSetConflictGraph#extract_crown for (self: Object) */
883 void VIRTUAL_coloring__POSetConflictGraph__extract_crown(val* self) {
884 coloring__POSetConflictGraph__extract_crown(self); /* Direct call coloring#POSetConflictGraph#extract_crown on <self:Object(POSetConflictGraph[Object])>*/
885 RET_LABEL:;
886 }
887 /* method coloring#POSetConflictGraph#compute_conflicts for (self: POSetConflictGraph[Object]) */
888 void coloring__POSetConflictGraph__compute_conflicts(val* self) {
889 val* var /* : HashMap[Object, Set[Object]] */;
890 val* var2 /* : HashMap[Object, Set[Object]] */;
891 val* var3 /* : HashSet[Object] */;
892 val* var5 /* : HashSet[Object] */;
893 val* var_ /* var : HashSet[Object] */;
894 val* var6 /* : Iterator[Object] */;
895 val* var_7 /* var : Iterator[Object] */;
896 short int var8 /* : Bool */;
897 val* var9 /* : nullable Object */;
898 val* var_e /* var e: Object */;
899 val* var10 /* : POSet[Object] */;
900 val* var12 /* : POSet[Object] */;
901 val* var13 /* : POSetElement[Object] */;
902 val* var14 /* : Collection[Object] */;
903 {
904 { /* Inline coloring#POSetConflictGraph#conflicts (self) on <self:POSetConflictGraph[Object]> */
905 var2 = self->attrs[COLOR_coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <self:POSetConflictGraph[Object]> */
906 if (unlikely(var2 == NULL)) {
907 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
908 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 40);
909 show_backtrace(1);
910 }
911 var = var2;
912 RET_LABEL1:(void)0;
913 }
914 }
915 {
916 hash_collection__HashMap__clear(var); /* Direct call hash_collection#HashMap#clear on <var:HashMap[Object, Set[Object]]>*/
917 }
918 {
919 { /* Inline coloring#POSetConflictGraph#border (self) on <self:POSetConflictGraph[Object]> */
920 var5 = self->attrs[COLOR_coloring__POSetConflictGraph___border].val; /* _border on <self:POSetConflictGraph[Object]> */
921 if (unlikely(var5 == NULL)) {
922 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _border");
923 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 28);
924 show_backtrace(1);
925 }
926 var3 = var5;
927 RET_LABEL4:(void)0;
928 }
929 }
930 var_ = var3;
931 {
932 var6 = hash_collection__HashSet__iterator(var_);
933 }
934 var_7 = var6;
935 for(;;) {
936 {
937 var8 = ((short int (*)(val*))(var_7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_7) /* is_ok on <var_7:Iterator[Object]>*/;
938 }
939 if (var8){
940 {
941 var9 = ((val* (*)(val*))(var_7->class->vft[COLOR_abstract_collection__Iterator__item]))(var_7) /* item on <var_7:Iterator[Object]>*/;
942 }
943 var_e = var9;
944 {
945 { /* Inline coloring#POSetConflictGraph#poset (self) on <self:POSetConflictGraph[Object]> */
946 var12 = self->attrs[COLOR_coloring__POSetConflictGraph___poset].val; /* _poset on <self:POSetConflictGraph[Object]> */
947 if (unlikely(var12 == NULL)) {
948 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
949 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 48);
950 show_backtrace(1);
951 }
952 var10 = var12;
953 RET_LABEL11:(void)0;
954 }
955 }
956 {
957 var13 = poset__POSet___91d_93d(var10, var_e);
958 }
959 {
960 var14 = poset__POSetElement__greaters(var13);
961 }
962 {
963 coloring__POSetConflictGraph__add_conflicts(self, var14); /* Direct call coloring#POSetConflictGraph#add_conflicts on <self:POSetConflictGraph[Object]>*/
964 }
965 {
966 ((void (*)(val*))(var_7->class->vft[COLOR_abstract_collection__Iterator__next]))(var_7) /* next on <var_7:Iterator[Object]>*/;
967 }
968 } else {
969 goto BREAK_label;
970 }
971 }
972 BREAK_label: (void)0;
973 {
974 { /* Inline abstract_collection#Iterator#finish (var_7) on <var_7:Iterator[Object]> */
975 RET_LABEL15:(void)0;
976 }
977 }
978 RET_LABEL:;
979 }
980 /* method coloring#POSetConflictGraph#compute_conflicts for (self: Object) */
981 void VIRTUAL_coloring__POSetConflictGraph__compute_conflicts(val* self) {
982 coloring__POSetConflictGraph__compute_conflicts(self); /* Direct call coloring#POSetConflictGraph#compute_conflicts on <self:Object(POSetConflictGraph[Object])>*/
983 RET_LABEL:;
984 }
985 /* method coloring#POSetConflictGraph#add_conflict for (self: POSetConflictGraph[Object], Object, Object) */
986 void coloring__POSetConflictGraph__add_conflict(val* self, val* p0, val* p1) {
987 short int var /* : Bool */;
988 int cltype;
989 int idtype;
990 const struct type* type_struct;
991 const char* var_class_name;
992 short int var1 /* : Bool */;
993 int cltype2;
994 int idtype3;
995 const struct type* type_struct4;
996 const char* var_class_name5;
997 val* var_e /* var e: Object */;
998 val* var_o /* var o: Object */;
999 val* var6 /* : HashMap[Object, Set[Object]] */;
1000 val* var8 /* : HashMap[Object, Set[Object]] */;
1001 short int var9 /* : Bool */;
1002 short int var10 /* : Bool */;
1003 val* var11 /* : HashMap[Object, Set[Object]] */;
1004 val* var13 /* : HashMap[Object, Set[Object]] */;
1005 val* var14 /* : HashSet[Object] */;
1006 val* var15 /* : HashMap[Object, Set[Object]] */;
1007 val* var17 /* : HashMap[Object, Set[Object]] */;
1008 short int var18 /* : Bool */;
1009 short int var19 /* : Bool */;
1010 val* var20 /* : HashMap[Object, Set[Object]] */;
1011 val* var22 /* : HashMap[Object, Set[Object]] */;
1012 val* var23 /* : HashSet[Object] */;
1013 val* var24 /* : HashMap[Object, Set[Object]] */;
1014 val* var26 /* : HashMap[Object, Set[Object]] */;
1015 val* var27 /* : nullable Object */;
1016 val* var28 /* : HashMap[Object, Set[Object]] */;
1017 val* var30 /* : HashMap[Object, Set[Object]] */;
1018 val* var31 /* : nullable Object */;
1019 /* Covariant cast for argument 0 (e) <p0:Object> isa E */
1020 /* <p0:Object> isa E */
1021 type_struct = self->type->resolution_table->types[COLOR_coloring__POSetConflictGraph_FT0];
1022 cltype = type_struct->color;
1023 idtype = type_struct->id;
1024 if(cltype >= p0->type->table_size) {
1025 var = 0;
1026 } else {
1027 var = p0->type->type_table[cltype] == idtype;
1028 }
1029 if (unlikely(!var)) {
1030 var_class_name = p0 == NULL ? "null" : p0->type->name;
1031 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
1032 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 101);
1033 show_backtrace(1);
1034 }
1035 /* Covariant cast for argument 1 (o) <p1:Object> isa E */
1036 /* <p1:Object> isa E */
1037 type_struct4 = self->type->resolution_table->types[COLOR_coloring__POSetConflictGraph_FT0];
1038 cltype2 = type_struct4->color;
1039 idtype3 = type_struct4->id;
1040 if(cltype2 >= p1->type->table_size) {
1041 var1 = 0;
1042 } else {
1043 var1 = p1->type->type_table[cltype2] == idtype3;
1044 }
1045 if (unlikely(!var1)) {
1046 var_class_name5 = p1 == NULL ? "null" : p1->type->name;
1047 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name5);
1048 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 101);
1049 show_backtrace(1);
1050 }
1051 var_e = p0;
1052 var_o = p1;
1053 {
1054 { /* Inline coloring#POSetConflictGraph#conflicts (self) on <self:POSetConflictGraph[Object]> */
1055 var8 = self->attrs[COLOR_coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <self:POSetConflictGraph[Object]> */
1056 if (unlikely(var8 == NULL)) {
1057 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
1058 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 40);
1059 show_backtrace(1);
1060 }
1061 var6 = var8;
1062 RET_LABEL7:(void)0;
1063 }
1064 }
1065 {
1066 var9 = abstract_collection__MapRead__has_key(var6, var_e);
1067 }
1068 var10 = !var9;
1069 if (var10){
1070 {
1071 { /* Inline coloring#POSetConflictGraph#conflicts (self) on <self:POSetConflictGraph[Object]> */
1072 var13 = self->attrs[COLOR_coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <self:POSetConflictGraph[Object]> */
1073 if (unlikely(var13 == NULL)) {
1074 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
1075 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 40);
1076 show_backtrace(1);
1077 }
1078 var11 = var13;
1079 RET_LABEL12:(void)0;
1080 }
1081 }
1082 var14 = NEW_hash_collection__HashSet(self->type->resolution_table->types[COLOR_hash_collection__HashSetcoloring__POSetConflictGraph_FT0]);
1083 {
1084 ((void (*)(val*))(var14->class->vft[COLOR_kernel__Object__init]))(var14) /* init on <var14:HashSet[Object]>*/;
1085 }
1086 {
1087 hash_collection__HashMap___91d_93d_61d(var11, var_e, var14); /* Direct call hash_collection#HashMap#[]= on <var11:HashMap[Object, Set[Object]]>*/
1088 }
1089 } else {
1090 }
1091 {
1092 { /* Inline coloring#POSetConflictGraph#conflicts (self) on <self:POSetConflictGraph[Object]> */
1093 var17 = self->attrs[COLOR_coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <self:POSetConflictGraph[Object]> */
1094 if (unlikely(var17 == NULL)) {
1095 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
1096 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 40);
1097 show_backtrace(1);
1098 }
1099 var15 = var17;
1100 RET_LABEL16:(void)0;
1101 }
1102 }
1103 {
1104 var18 = abstract_collection__MapRead__has_key(var15, var_o);
1105 }
1106 var19 = !var18;
1107 if (var19){
1108 {
1109 { /* Inline coloring#POSetConflictGraph#conflicts (self) on <self:POSetConflictGraph[Object]> */
1110 var22 = self->attrs[COLOR_coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <self:POSetConflictGraph[Object]> */
1111 if (unlikely(var22 == NULL)) {
1112 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
1113 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 40);
1114 show_backtrace(1);
1115 }
1116 var20 = var22;
1117 RET_LABEL21:(void)0;
1118 }
1119 }
1120 var23 = NEW_hash_collection__HashSet(self->type->resolution_table->types[COLOR_hash_collection__HashSetcoloring__POSetConflictGraph_FT0]);
1121 {
1122 ((void (*)(val*))(var23->class->vft[COLOR_kernel__Object__init]))(var23) /* init on <var23:HashSet[Object]>*/;
1123 }
1124 {
1125 hash_collection__HashMap___91d_93d_61d(var20, var_o, var23); /* Direct call hash_collection#HashMap#[]= on <var20:HashMap[Object, Set[Object]]>*/
1126 }
1127 } else {
1128 }
1129 {
1130 { /* Inline coloring#POSetConflictGraph#conflicts (self) on <self:POSetConflictGraph[Object]> */
1131 var26 = self->attrs[COLOR_coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <self:POSetConflictGraph[Object]> */
1132 if (unlikely(var26 == NULL)) {
1133 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
1134 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 40);
1135 show_backtrace(1);
1136 }
1137 var24 = var26;
1138 RET_LABEL25:(void)0;
1139 }
1140 }
1141 {
1142 var27 = hash_collection__HashMap___91d_93d(var24, var_e);
1143 }
1144 {
1145 ((void (*)(val*, val*))(var27->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var27, var_o) /* add on <var27:nullable Object(Set[Object])>*/;
1146 }
1147 {
1148 { /* Inline coloring#POSetConflictGraph#conflicts (self) on <self:POSetConflictGraph[Object]> */
1149 var30 = self->attrs[COLOR_coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <self:POSetConflictGraph[Object]> */
1150 if (unlikely(var30 == NULL)) {
1151 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
1152 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 40);
1153 show_backtrace(1);
1154 }
1155 var28 = var30;
1156 RET_LABEL29:(void)0;
1157 }
1158 }
1159 {
1160 var31 = hash_collection__HashMap___91d_93d(var28, var_o);
1161 }
1162 {
1163 ((void (*)(val*, val*))(var31->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var31, var_e) /* add on <var31:nullable Object(Set[Object])>*/;
1164 }
1165 RET_LABEL:;
1166 }
1167 /* method coloring#POSetConflictGraph#add_conflict for (self: Object, Object, Object) */
1168 void VIRTUAL_coloring__POSetConflictGraph__add_conflict(val* self, val* p0, val* p1) {
1169 coloring__POSetConflictGraph__add_conflict(self, p0, p1); /* Direct call coloring#POSetConflictGraph#add_conflict on <self:Object(POSetConflictGraph[Object])>*/
1170 RET_LABEL:;
1171 }
1172 /* method coloring#POSetConflictGraph#add_conflicts for (self: POSetConflictGraph[Object], Collection[Object]) */
1173 void coloring__POSetConflictGraph__add_conflicts(val* self, val* p0) {
1174 short int var /* : Bool */;
1175 int cltype;
1176 int idtype;
1177 const struct type* type_struct;
1178 const char* var_class_name;
1179 val* var_es /* var es: Collection[Object] */;
1180 val* var_ /* var : Collection[Object] */;
1181 val* var1 /* : Iterator[nullable Object] */;
1182 val* var_2 /* var : Iterator[Object] */;
1183 short int var3 /* : Bool */;
1184 val* var4 /* : nullable Object */;
1185 val* var_e1 /* var e1: Object */;
1186 val* var_5 /* var : Collection[Object] */;
1187 val* var6 /* : Iterator[nullable Object] */;
1188 val* var_7 /* var : Iterator[Object] */;
1189 short int var8 /* : Bool */;
1190 val* var9 /* : nullable Object */;
1191 val* var_e2 /* var e2: Object */;
1192 /* Covariant cast for argument 0 (es) <p0:Collection[Object]> isa Collection[E] */
1193 /* <p0:Collection[Object]> isa Collection[E] */
1194 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collectioncoloring__POSetConflictGraph_FT0];
1195 cltype = type_struct->color;
1196 idtype = type_struct->id;
1197 if(cltype >= p0->type->table_size) {
1198 var = 0;
1199 } else {
1200 var = p0->type->type_table[cltype] == idtype;
1201 }
1202 if (unlikely(!var)) {
1203 var_class_name = p0 == NULL ? "null" : p0->type->name;
1204 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[E]", var_class_name);
1205 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 108);
1206 show_backtrace(1);
1207 }
1208 var_es = p0;
1209 var_ = var_es;
1210 {
1211 var1 = ((val* (*)(val*))(var_->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_) /* iterator on <var_:Collection[Object]>*/;
1212 }
1213 var_2 = var1;
1214 for(;;) {
1215 {
1216 var3 = ((short int (*)(val*))(var_2->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_2) /* is_ok on <var_2:Iterator[Object]>*/;
1217 }
1218 if (var3){
1219 {
1220 var4 = ((val* (*)(val*))(var_2->class->vft[COLOR_abstract_collection__Iterator__item]))(var_2) /* item on <var_2:Iterator[Object]>*/;
1221 }
1222 var_e1 = var4;
1223 var_5 = var_es;
1224 {
1225 var6 = ((val* (*)(val*))(var_5->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_5) /* iterator on <var_5:Collection[Object]>*/;
1226 }
1227 var_7 = var6;
1228 for(;;) {
1229 {
1230 var8 = ((short int (*)(val*))(var_7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_7) /* is_ok on <var_7:Iterator[Object]>*/;
1231 }
1232 if (var8){
1233 {
1234 var9 = ((val* (*)(val*))(var_7->class->vft[COLOR_abstract_collection__Iterator__item]))(var_7) /* item on <var_7:Iterator[Object]>*/;
1235 }
1236 var_e2 = var9;
1237 {
1238 coloring__POSetConflictGraph__add_conflict(self, var_e1, var_e2); /* Direct call coloring#POSetConflictGraph#add_conflict on <self:POSetConflictGraph[Object]>*/
1239 }
1240 {
1241 ((void (*)(val*))(var_7->class->vft[COLOR_abstract_collection__Iterator__next]))(var_7) /* next on <var_7:Iterator[Object]>*/;
1242 }
1243 } else {
1244 goto BREAK_label;
1245 }
1246 }
1247 BREAK_label: (void)0;
1248 {
1249 { /* Inline abstract_collection#Iterator#finish (var_7) on <var_7:Iterator[Object]> */
1250 RET_LABEL10:(void)0;
1251 }
1252 }
1253 {
1254 ((void (*)(val*))(var_2->class->vft[COLOR_abstract_collection__Iterator__next]))(var_2) /* next on <var_2:Iterator[Object]>*/;
1255 }
1256 } else {
1257 goto BREAK_label11;
1258 }
1259 }
1260 BREAK_label11: (void)0;
1261 {
1262 { /* Inline abstract_collection#Iterator#finish (var_2) on <var_2:Iterator[Object]> */
1263 RET_LABEL12:(void)0;
1264 }
1265 }
1266 RET_LABEL:;
1267 }
1268 /* method coloring#POSetConflictGraph#add_conflicts for (self: Object, Collection[Object]) */
1269 void VIRTUAL_coloring__POSetConflictGraph__add_conflicts(val* self, val* p0) {
1270 coloring__POSetConflictGraph__add_conflicts(self, p0); /* Direct call coloring#POSetConflictGraph#add_conflicts on <self:Object(POSetConflictGraph[Object])>*/
1271 RET_LABEL:;
1272 }
1273 /* method coloring#POSetColorer#is_colored for (self: POSetColorer[Object]): Bool */
1274 short int coloring__POSetColorer__is_colored(val* self) {
1275 short int var /* : Bool */;
1276 short int var1 /* : Bool */;
1277 var1 = self->attrs[COLOR_coloring__POSetColorer___is_colored].s; /* _is_colored on <self:POSetColorer[Object]> */
1278 var = var1;
1279 RET_LABEL:;
1280 return var;
1281 }
1282 /* method coloring#POSetColorer#is_colored for (self: Object): Bool */
1283 short int VIRTUAL_coloring__POSetColorer__is_colored(val* self) {
1284 short int var /* : Bool */;
1285 short int var1 /* : Bool */;
1286 short int var3 /* : Bool */;
1287 { /* Inline coloring#POSetColorer#is_colored (self) on <self:Object(POSetColorer[Object])> */
1288 var3 = self->attrs[COLOR_coloring__POSetColorer___is_colored].s; /* _is_colored on <self:Object(POSetColorer[Object])> */
1289 var1 = var3;
1290 RET_LABEL2:(void)0;
1291 }
1292 var = var1;
1293 RET_LABEL:;
1294 return var;
1295 }
1296 /* method coloring#POSetColorer#is_colored= for (self: POSetColorer[Object], Bool) */
1297 void coloring__POSetColorer__is_colored_61d(val* self, short int p0) {
1298 self->attrs[COLOR_coloring__POSetColorer___is_colored].s = p0; /* _is_colored on <self:POSetColorer[Object]> */
1299 RET_LABEL:;
1300 }
1301 /* method coloring#POSetColorer#is_colored= for (self: Object, Bool) */
1302 void VIRTUAL_coloring__POSetColorer__is_colored_61d(val* self, short int p0) {
1303 { /* Inline coloring#POSetColorer#is_colored= (self,p0) on <self:Object(POSetColorer[Object])> */
1304 self->attrs[COLOR_coloring__POSetColorer___is_colored].s = p0; /* _is_colored on <self:Object(POSetColorer[Object])> */
1305 RET_LABEL1:(void)0;
1306 }
1307 RET_LABEL:;
1308 }
1309 /* method coloring#POSetColorer#ids for (self: POSetColorer[Object]): Map[Object, Int] */
1310 val* coloring__POSetColorer__ids(val* self) {
1311 val* var /* : Map[Object, Int] */;
1312 short int var1 /* : Bool */;
1313 short int var3 /* : Bool */;
1314 val* var4 /* : HashMap[Object, Int] */;
1315 val* var6 /* : HashMap[Object, Int] */;
1316 {
1317 { /* Inline coloring#POSetColorer#is_colored (self) on <self:POSetColorer[Object]> */
1318 var3 = self->attrs[COLOR_coloring__POSetColorer___is_colored].s; /* _is_colored on <self:POSetColorer[Object]> */
1319 var1 = var3;
1320 RET_LABEL2:(void)0;
1321 }
1322 }
1323 if (unlikely(!var1)) {
1324 PRINT_ERROR("Runtime error: %s", "Assert failed");
1325 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 162);
1326 show_backtrace(1);
1327 }
1328 {
1329 { /* Inline coloring#POSetColorer#ids_cache (self) on <self:POSetColorer[Object]> */
1330 var6 = self->attrs[COLOR_coloring__POSetColorer___ids_cache].val; /* _ids_cache on <self:POSetColorer[Object]> */
1331 if (unlikely(var6 == NULL)) {
1332 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ids_cache");
1333 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 165);
1334 show_backtrace(1);
1335 }
1336 var4 = var6;
1337 RET_LABEL5:(void)0;
1338 }
1339 }
1340 var = var4;
1341 goto RET_LABEL;
1342 RET_LABEL:;
1343 return var;
1344 }
1345 /* method coloring#POSetColorer#ids for (self: Object): Map[Object, Int] */
1346 val* VIRTUAL_coloring__POSetColorer__ids(val* self) {
1347 val* var /* : Map[Object, Int] */;
1348 val* var1 /* : Map[Object, Int] */;
1349 var1 = coloring__POSetColorer__ids(self);
1350 var = var1;
1351 RET_LABEL:;
1352 return var;
1353 }
1354 /* method coloring#POSetColorer#ids_cache for (self: POSetColorer[Object]): HashMap[Object, Int] */
1355 val* coloring__POSetColorer__ids_cache(val* self) {
1356 val* var /* : HashMap[Object, Int] */;
1357 val* var1 /* : HashMap[Object, Int] */;
1358 var1 = self->attrs[COLOR_coloring__POSetColorer___ids_cache].val; /* _ids_cache on <self:POSetColorer[Object]> */
1359 if (unlikely(var1 == NULL)) {
1360 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ids_cache");
1361 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 165);
1362 show_backtrace(1);
1363 }
1364 var = var1;
1365 RET_LABEL:;
1366 return var;
1367 }
1368 /* method coloring#POSetColorer#ids_cache for (self: Object): HashMap[Object, Int] */
1369 val* VIRTUAL_coloring__POSetColorer__ids_cache(val* self) {
1370 val* var /* : HashMap[Object, Int] */;
1371 val* var1 /* : HashMap[Object, Int] */;
1372 val* var3 /* : HashMap[Object, Int] */;
1373 { /* Inline coloring#POSetColorer#ids_cache (self) on <self:Object(POSetColorer[Object])> */
1374 var3 = self->attrs[COLOR_coloring__POSetColorer___ids_cache].val; /* _ids_cache on <self:Object(POSetColorer[Object])> */
1375 if (unlikely(var3 == NULL)) {
1376 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ids_cache");
1377 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 165);
1378 show_backtrace(1);
1379 }
1380 var1 = var3;
1381 RET_LABEL2:(void)0;
1382 }
1383 var = var1;
1384 RET_LABEL:;
1385 return var;
1386 }
1387 /* method coloring#POSetColorer#colors for (self: POSetColorer[Object]): Map[Object, Int] */
1388 val* coloring__POSetColorer__colors(val* self) {
1389 val* var /* : Map[Object, Int] */;
1390 short int var1 /* : Bool */;
1391 short int var3 /* : Bool */;
1392 val* var4 /* : HashMap[Object, Int] */;
1393 val* var6 /* : HashMap[Object, Int] */;
1394 {
1395 { /* Inline coloring#POSetColorer#is_colored (self) on <self:POSetColorer[Object]> */
1396 var3 = self->attrs[COLOR_coloring__POSetColorer___is_colored].s; /* _is_colored on <self:POSetColorer[Object]> */
1397 var1 = var3;
1398 RET_LABEL2:(void)0;
1399 }
1400 }
1401 if (unlikely(!var1)) {
1402 PRINT_ERROR("Runtime error: %s", "Assert failed");
1403 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 170);
1404 show_backtrace(1);
1405 }
1406 {
1407 { /* Inline coloring#POSetColorer#colors_cache (self) on <self:POSetColorer[Object]> */
1408 var6 = self->attrs[COLOR_coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:POSetColorer[Object]> */
1409 if (unlikely(var6 == NULL)) {
1410 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
1411 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 173);
1412 show_backtrace(1);
1413 }
1414 var4 = var6;
1415 RET_LABEL5:(void)0;
1416 }
1417 }
1418 var = var4;
1419 goto RET_LABEL;
1420 RET_LABEL:;
1421 return var;
1422 }
1423 /* method coloring#POSetColorer#colors for (self: Object): Map[Object, Int] */
1424 val* VIRTUAL_coloring__POSetColorer__colors(val* self) {
1425 val* var /* : Map[Object, Int] */;
1426 val* var1 /* : Map[Object, Int] */;
1427 var1 = coloring__POSetColorer__colors(self);
1428 var = var1;
1429 RET_LABEL:;
1430 return var;
1431 }
1432 /* method coloring#POSetColorer#colors_cache for (self: POSetColorer[Object]): HashMap[Object, Int] */
1433 val* coloring__POSetColorer__colors_cache(val* self) {
1434 val* var /* : HashMap[Object, Int] */;
1435 val* var1 /* : HashMap[Object, Int] */;
1436 var1 = self->attrs[COLOR_coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:POSetColorer[Object]> */
1437 if (unlikely(var1 == NULL)) {
1438 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
1439 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 173);
1440 show_backtrace(1);
1441 }
1442 var = var1;
1443 RET_LABEL:;
1444 return var;
1445 }
1446 /* method coloring#POSetColorer#colors_cache for (self: Object): HashMap[Object, Int] */
1447 val* VIRTUAL_coloring__POSetColorer__colors_cache(val* self) {
1448 val* var /* : HashMap[Object, Int] */;
1449 val* var1 /* : HashMap[Object, Int] */;
1450 val* var3 /* : HashMap[Object, Int] */;
1451 { /* Inline coloring#POSetColorer#colors_cache (self) on <self:Object(POSetColorer[Object])> */
1452 var3 = self->attrs[COLOR_coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:Object(POSetColorer[Object])> */
1453 if (unlikely(var3 == NULL)) {
1454 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
1455 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 173);
1456 show_backtrace(1);
1457 }
1458 var1 = var3;
1459 RET_LABEL2:(void)0;
1460 }
1461 var = var1;
1462 RET_LABEL:;
1463 return var;
1464 }
1465 /* method coloring#POSetColorer#poset_cache for (self: POSetColorer[Object]): POSet[Object] */
1466 val* coloring__POSetColorer__poset_cache(val* self) {
1467 val* var /* : POSet[Object] */;
1468 val* var1 /* : POSet[Object] */;
1469 var1 = self->attrs[COLOR_coloring__POSetColorer___poset_cache].val; /* _poset_cache on <self:POSetColorer[Object]> */
1470 if (unlikely(var1 == NULL)) {
1471 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset_cache");
1472 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 180);
1473 show_backtrace(1);
1474 }
1475 var = var1;
1476 RET_LABEL:;
1477 return var;
1478 }
1479 /* method coloring#POSetColorer#poset_cache for (self: Object): POSet[Object] */
1480 val* VIRTUAL_coloring__POSetColorer__poset_cache(val* self) {
1481 val* var /* : POSet[Object] */;
1482 val* var1 /* : POSet[Object] */;
1483 val* var3 /* : POSet[Object] */;
1484 { /* Inline coloring#POSetColorer#poset_cache (self) on <self:Object(POSetColorer[Object])> */
1485 var3 = self->attrs[COLOR_coloring__POSetColorer___poset_cache].val; /* _poset_cache on <self:Object(POSetColorer[Object])> */
1486 if (unlikely(var3 == NULL)) {
1487 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset_cache");
1488 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 180);
1489 show_backtrace(1);
1490 }
1491 var1 = var3;
1492 RET_LABEL2:(void)0;
1493 }
1494 var = var1;
1495 RET_LABEL:;
1496 return var;
1497 }
1498 /* method coloring#POSetColorer#poset_cache= for (self: POSetColorer[Object], POSet[Object]) */
1499 void coloring__POSetColorer__poset_cache_61d(val* self, val* p0) {
1500 short int var /* : Bool */;
1501 int cltype;
1502 int idtype;
1503 const struct type* type_struct;
1504 const char* var_class_name;
1505 /* Covariant cast for argument 0 (poset_cache) <p0:POSet[Object]> isa POSet[E] */
1506 /* <p0:POSet[Object]> isa POSet[E] */
1507 type_struct = self->type->resolution_table->types[COLOR_poset__POSetcoloring__POSetColorer_FT0];
1508 cltype = type_struct->color;
1509 idtype = type_struct->id;
1510 if(cltype >= p0->type->table_size) {
1511 var = 0;
1512 } else {
1513 var = p0->type->type_table[cltype] == idtype;
1514 }
1515 if (unlikely(!var)) {
1516 var_class_name = p0 == NULL ? "null" : p0->type->name;
1517 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[E]", var_class_name);
1518 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 180);
1519 show_backtrace(1);
1520 }
1521 self->attrs[COLOR_coloring__POSetColorer___poset_cache].val = p0; /* _poset_cache on <self:POSetColorer[Object]> */
1522 RET_LABEL:;
1523 }
1524 /* method coloring#POSetColorer#poset_cache= for (self: Object, POSet[Object]) */
1525 void VIRTUAL_coloring__POSetColorer__poset_cache_61d(val* self, val* p0) {
1526 short int var /* : Bool */;
1527 int cltype;
1528 int idtype;
1529 const struct type* type_struct;
1530 const char* var_class_name;
1531 { /* Inline coloring#POSetColorer#poset_cache= (self,p0) on <self:Object(POSetColorer[Object])> */
1532 /* Covariant cast for argument 0 (poset_cache) <p0:POSet[Object]> isa POSet[E] */
1533 /* <p0:POSet[Object]> isa POSet[E] */
1534 type_struct = self->type->resolution_table->types[COLOR_poset__POSetcoloring__POSetColorer_FT0];
1535 cltype = type_struct->color;
1536 idtype = type_struct->id;
1537 if(cltype >= p0->type->table_size) {
1538 var = 0;
1539 } else {
1540 var = p0->type->type_table[cltype] == idtype;
1541 }
1542 if (unlikely(!var)) {
1543 var_class_name = p0 == NULL ? "null" : p0->type->name;
1544 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[E]", var_class_name);
1545 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 180);
1546 show_backtrace(1);
1547 }
1548 self->attrs[COLOR_coloring__POSetColorer___poset_cache].val = p0; /* _poset_cache on <self:Object(POSetColorer[Object])> */
1549 RET_LABEL1:(void)0;
1550 }
1551 RET_LABEL:;
1552 }
1553 /* method coloring#POSetColorer#conflicts for (self: POSetColorer[Object]): Map[Object, Set[Object]] */
1554 val* coloring__POSetColorer__conflicts(val* self) {
1555 val* var /* : Map[Object, Set[Object]] */;
1556 short int var1 /* : Bool */;
1557 short int var3 /* : Bool */;
1558 val* var4 /* : Map[Object, Set[Object]] */;
1559 val* var6 /* : Map[Object, Set[Object]] */;
1560 {
1561 { /* Inline coloring#POSetColorer#is_colored (self) on <self:POSetColorer[Object]> */
1562 var3 = self->attrs[COLOR_coloring__POSetColorer___is_colored].s; /* _is_colored on <self:POSetColorer[Object]> */
1563 var1 = var3;
1564 RET_LABEL2:(void)0;
1565 }
1566 }
1567 if (unlikely(!var1)) {
1568 PRINT_ERROR("Runtime error: %s", "Assert failed");
1569 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 184);
1570 show_backtrace(1);
1571 }
1572 {
1573 { /* Inline coloring#POSetColorer#conflicts_cache (self) on <self:POSetColorer[Object]> */
1574 var6 = self->attrs[COLOR_coloring__POSetColorer___conflicts_cache].val; /* _conflicts_cache on <self:POSetColorer[Object]> */
1575 if (unlikely(var6 == NULL)) {
1576 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts_cache");
1577 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 187);
1578 show_backtrace(1);
1579 }
1580 var4 = var6;
1581 RET_LABEL5:(void)0;
1582 }
1583 }
1584 var = var4;
1585 goto RET_LABEL;
1586 RET_LABEL:;
1587 return var;
1588 }
1589 /* method coloring#POSetColorer#conflicts for (self: Object): Map[Object, Set[Object]] */
1590 val* VIRTUAL_coloring__POSetColorer__conflicts(val* self) {
1591 val* var /* : Map[Object, Set[Object]] */;
1592 val* var1 /* : Map[Object, Set[Object]] */;
1593 var1 = coloring__POSetColorer__conflicts(self);
1594 var = var1;
1595 RET_LABEL:;
1596 return var;
1597 }
1598 /* method coloring#POSetColorer#conflicts_cache for (self: POSetColorer[Object]): Map[Object, Set[Object]] */
1599 val* coloring__POSetColorer__conflicts_cache(val* self) {
1600 val* var /* : Map[Object, Set[Object]] */;
1601 val* var1 /* : Map[Object, Set[Object]] */;
1602 var1 = self->attrs[COLOR_coloring__POSetColorer___conflicts_cache].val; /* _conflicts_cache on <self:POSetColorer[Object]> */
1603 if (unlikely(var1 == NULL)) {
1604 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts_cache");
1605 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 187);
1606 show_backtrace(1);
1607 }
1608 var = var1;
1609 RET_LABEL:;
1610 return var;
1611 }
1612 /* method coloring#POSetColorer#conflicts_cache for (self: Object): Map[Object, Set[Object]] */
1613 val* VIRTUAL_coloring__POSetColorer__conflicts_cache(val* self) {
1614 val* var /* : Map[Object, Set[Object]] */;
1615 val* var1 /* : Map[Object, Set[Object]] */;
1616 val* var3 /* : Map[Object, Set[Object]] */;
1617 { /* Inline coloring#POSetColorer#conflicts_cache (self) on <self:Object(POSetColorer[Object])> */
1618 var3 = self->attrs[COLOR_coloring__POSetColorer___conflicts_cache].val; /* _conflicts_cache on <self:Object(POSetColorer[Object])> */
1619 if (unlikely(var3 == NULL)) {
1620 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts_cache");
1621 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 187);
1622 show_backtrace(1);
1623 }
1624 var1 = var3;
1625 RET_LABEL2:(void)0;
1626 }
1627 var = var1;
1628 RET_LABEL:;
1629 return var;
1630 }
1631 /* method coloring#POSetColorer#conflicts_cache= for (self: POSetColorer[Object], Map[Object, Set[Object]]) */
1632 void coloring__POSetColorer__conflicts_cache_61d(val* self, val* p0) {
1633 short int var /* : Bool */;
1634 int cltype;
1635 int idtype;
1636 const struct type* type_struct;
1637 const char* var_class_name;
1638 /* Covariant cast for argument 0 (conflicts_cache) <p0:Map[Object, Set[Object]]> isa Map[E, Set[E]] */
1639 /* <p0:Map[Object, Set[Object]]> isa Map[E, Set[E]] */
1640 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Mapcoloring__POSetColorer_FT0abstract_collection__Setcoloring__POSetColorer_FT0];
1641 cltype = type_struct->color;
1642 idtype = type_struct->id;
1643 if(cltype >= p0->type->table_size) {
1644 var = 0;
1645 } else {
1646 var = p0->type->type_table[cltype] == idtype;
1647 }
1648 if (unlikely(!var)) {
1649 var_class_name = p0 == NULL ? "null" : p0->type->name;
1650 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[E, Set[E]]", var_class_name);
1651 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 187);
1652 show_backtrace(1);
1653 }
1654 self->attrs[COLOR_coloring__POSetColorer___conflicts_cache].val = p0; /* _conflicts_cache on <self:POSetColorer[Object]> */
1655 RET_LABEL:;
1656 }
1657 /* method coloring#POSetColorer#conflicts_cache= for (self: Object, Map[Object, Set[Object]]) */
1658 void VIRTUAL_coloring__POSetColorer__conflicts_cache_61d(val* self, val* p0) {
1659 short int var /* : Bool */;
1660 int cltype;
1661 int idtype;
1662 const struct type* type_struct;
1663 const char* var_class_name;
1664 { /* Inline coloring#POSetColorer#conflicts_cache= (self,p0) on <self:Object(POSetColorer[Object])> */
1665 /* Covariant cast for argument 0 (conflicts_cache) <p0:Map[Object, Set[Object]]> isa Map[E, Set[E]] */
1666 /* <p0:Map[Object, Set[Object]]> isa Map[E, Set[E]] */
1667 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Mapcoloring__POSetColorer_FT0abstract_collection__Setcoloring__POSetColorer_FT0];
1668 cltype = type_struct->color;
1669 idtype = type_struct->id;
1670 if(cltype >= p0->type->table_size) {
1671 var = 0;
1672 } else {
1673 var = p0->type->type_table[cltype] == idtype;
1674 }
1675 if (unlikely(!var)) {
1676 var_class_name = p0 == NULL ? "null" : p0->type->name;
1677 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[E, Set[E]]", var_class_name);
1678 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 187);
1679 show_backtrace(1);
1680 }
1681 self->attrs[COLOR_coloring__POSetColorer___conflicts_cache].val = p0; /* _conflicts_cache on <self:Object(POSetColorer[Object])> */
1682 RET_LABEL1:(void)0;
1683 }
1684 RET_LABEL:;
1685 }
1686 /* method coloring#POSetColorer#graph for (self: POSetColorer[Object]): POSetConflictGraph[Object] */
1687 val* coloring__POSetColorer__graph(val* self) {
1688 val* var /* : POSetConflictGraph[Object] */;
1689 val* var1 /* : POSetConflictGraph[Object] */;
1690 var1 = self->attrs[COLOR_coloring__POSetColorer___graph].val; /* _graph on <self:POSetColorer[Object]> */
1691 if (unlikely(var1 == NULL)) {
1692 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
1693 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 189);
1694 show_backtrace(1);
1695 }
1696 var = var1;
1697 RET_LABEL:;
1698 return var;
1699 }
1700 /* method coloring#POSetColorer#graph for (self: Object): POSetConflictGraph[Object] */
1701 val* VIRTUAL_coloring__POSetColorer__graph(val* self) {
1702 val* var /* : POSetConflictGraph[Object] */;
1703 val* var1 /* : POSetConflictGraph[Object] */;
1704 val* var3 /* : POSetConflictGraph[Object] */;
1705 { /* Inline coloring#POSetColorer#graph (self) on <self:Object(POSetColorer[Object])> */
1706 var3 = self->attrs[COLOR_coloring__POSetColorer___graph].val; /* _graph on <self:Object(POSetColorer[Object])> */
1707 if (unlikely(var3 == NULL)) {
1708 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
1709 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 189);
1710 show_backtrace(1);
1711 }
1712 var1 = var3;
1713 RET_LABEL2:(void)0;
1714 }
1715 var = var1;
1716 RET_LABEL:;
1717 return var;
1718 }
1719 /* method coloring#POSetColorer#graph= for (self: POSetColorer[Object], POSetConflictGraph[Object]) */
1720 void coloring__POSetColorer__graph_61d(val* self, val* p0) {
1721 short int var /* : Bool */;
1722 int cltype;
1723 int idtype;
1724 const struct type* type_struct;
1725 const char* var_class_name;
1726 /* Covariant cast for argument 0 (graph) <p0:POSetConflictGraph[Object]> isa POSetConflictGraph[E] */
1727 /* <p0:POSetConflictGraph[Object]> isa POSetConflictGraph[E] */
1728 type_struct = self->type->resolution_table->types[COLOR_coloring__POSetConflictGraphcoloring__POSetColorer_FT0];
1729 cltype = type_struct->color;
1730 idtype = type_struct->id;
1731 if(cltype >= p0->type->table_size) {
1732 var = 0;
1733 } else {
1734 var = p0->type->type_table[cltype] == idtype;
1735 }
1736 if (unlikely(!var)) {
1737 var_class_name = p0 == NULL ? "null" : p0->type->name;
1738 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSetConflictGraph[E]", var_class_name);
1739 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 189);
1740 show_backtrace(1);
1741 }
1742 self->attrs[COLOR_coloring__POSetColorer___graph].val = p0; /* _graph on <self:POSetColorer[Object]> */
1743 RET_LABEL:;
1744 }
1745 /* method coloring#POSetColorer#graph= for (self: Object, POSetConflictGraph[Object]) */
1746 void VIRTUAL_coloring__POSetColorer__graph_61d(val* self, val* p0) {
1747 short int var /* : Bool */;
1748 int cltype;
1749 int idtype;
1750 const struct type* type_struct;
1751 const char* var_class_name;
1752 { /* Inline coloring#POSetColorer#graph= (self,p0) on <self:Object(POSetColorer[Object])> */
1753 /* Covariant cast for argument 0 (graph) <p0:POSetConflictGraph[Object]> isa POSetConflictGraph[E] */
1754 /* <p0:POSetConflictGraph[Object]> isa POSetConflictGraph[E] */
1755 type_struct = self->type->resolution_table->types[COLOR_coloring__POSetConflictGraphcoloring__POSetColorer_FT0];
1756 cltype = type_struct->color;
1757 idtype = type_struct->id;
1758 if(cltype >= p0->type->table_size) {
1759 var = 0;
1760 } else {
1761 var = p0->type->type_table[cltype] == idtype;
1762 }
1763 if (unlikely(!var)) {
1764 var_class_name = p0 == NULL ? "null" : p0->type->name;
1765 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSetConflictGraph[E]", var_class_name);
1766 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 189);
1767 show_backtrace(1);
1768 }
1769 self->attrs[COLOR_coloring__POSetColorer___graph].val = p0; /* _graph on <self:Object(POSetColorer[Object])> */
1770 RET_LABEL1:(void)0;
1771 }
1772 RET_LABEL:;
1773 }
1774 /* method coloring#POSetColorer#colorize for (self: POSetColorer[Object], POSet[Object]) */
1775 void coloring__POSetColorer__colorize(val* self, val* p0) {
1776 short int var /* : Bool */;
1777 int cltype;
1778 int idtype;
1779 const struct type* type_struct;
1780 const char* var_class_name;
1781 val* var_poset /* var poset: POSet[Object] */;
1782 short int var2 /* : Bool */;
1783 int cltype3;
1784 int idtype4;
1785 const struct type* type_struct5;
1786 const char* var_class_name6;
1787 val* var7 /* : POSetConflictGraph[Object] */;
1788 short int var9 /* : Bool */;
1789 int cltype10;
1790 int idtype11;
1791 const struct type* type_struct12;
1792 const char* var_class_name13;
1793 val* var14 /* : POSetConflictGraph[Object] */;
1794 val* var16 /* : POSetConflictGraph[Object] */;
1795 val* var17 /* : HashMap[Object, Set[Object]] */;
1796 val* var19 /* : HashMap[Object, Set[Object]] */;
1797 short int var21 /* : Bool */;
1798 int cltype22;
1799 int idtype23;
1800 const struct type* type_struct24;
1801 const char* var_class_name25;
1802 short int var26 /* : Bool */;
1803 /* Covariant cast for argument 0 (poset) <p0:POSet[Object]> isa POSet[E] */
1804 /* <p0:POSet[Object]> isa POSet[E] */
1805 type_struct = self->type->resolution_table->types[COLOR_poset__POSetcoloring__POSetColorer_FT0];
1806 cltype = type_struct->color;
1807 idtype = type_struct->id;
1808 if(cltype >= p0->type->table_size) {
1809 var = 0;
1810 } else {
1811 var = p0->type->type_table[cltype] == idtype;
1812 }
1813 if (unlikely(!var)) {
1814 var_class_name = p0 == NULL ? "null" : p0->type->name;
1815 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[E]", var_class_name);
1816 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 191);
1817 show_backtrace(1);
1818 }
1819 var_poset = p0;
1820 {
1821 { /* Inline coloring#POSetColorer#poset_cache= (self,var_poset) on <self:POSetColorer[Object]> */
1822 /* Covariant cast for argument 0 (poset_cache) <var_poset:POSet[Object]> isa POSet[E] */
1823 /* <var_poset:POSet[Object]> isa POSet[E] */
1824 type_struct5 = self->type->resolution_table->types[COLOR_poset__POSetcoloring__POSetColorer_FT0];
1825 cltype3 = type_struct5->color;
1826 idtype4 = type_struct5->id;
1827 if(cltype3 >= var_poset->type->table_size) {
1828 var2 = 0;
1829 } else {
1830 var2 = var_poset->type->type_table[cltype3] == idtype4;
1831 }
1832 if (unlikely(!var2)) {
1833 var_class_name6 = var_poset == NULL ? "null" : var_poset->type->name;
1834 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[E]", var_class_name6);
1835 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 180);
1836 show_backtrace(1);
1837 }
1838 self->attrs[COLOR_coloring__POSetColorer___poset_cache].val = var_poset; /* _poset_cache on <self:POSetColorer[Object]> */
1839 RET_LABEL1:(void)0;
1840 }
1841 }
1842 var7 = NEW_coloring__POSetConflictGraph(self->type->resolution_table->types[COLOR_coloring__POSetConflictGraphcoloring__POSetColorer_FT0]);
1843 {
1844 coloring__POSetConflictGraph__init(var7, var_poset); /* Direct call coloring#POSetConflictGraph#init on <var7:POSetConflictGraph[Object]>*/
1845 }
1846 {
1847 { /* Inline coloring#POSetColorer#graph= (self,var7) on <self:POSetColorer[Object]> */
1848 /* Covariant cast for argument 0 (graph) <var7:POSetConflictGraph[Object]> isa POSetConflictGraph[E] */
1849 /* <var7:POSetConflictGraph[Object]> isa POSetConflictGraph[E] */
1850 type_struct12 = self->type->resolution_table->types[COLOR_coloring__POSetConflictGraphcoloring__POSetColorer_FT0];
1851 cltype10 = type_struct12->color;
1852 idtype11 = type_struct12->id;
1853 if(cltype10 >= var7->type->table_size) {
1854 var9 = 0;
1855 } else {
1856 var9 = var7->type->type_table[cltype10] == idtype11;
1857 }
1858 if (unlikely(!var9)) {
1859 var_class_name13 = var7 == NULL ? "null" : var7->type->name;
1860 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSetConflictGraph[E]", var_class_name13);
1861 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 189);
1862 show_backtrace(1);
1863 }
1864 self->attrs[COLOR_coloring__POSetColorer___graph].val = var7; /* _graph on <self:POSetColorer[Object]> */
1865 RET_LABEL8:(void)0;
1866 }
1867 }
1868 {
1869 coloring__POSetColorer__allocate_ids(self); /* Direct call coloring#POSetColorer#allocate_ids on <self:POSetColorer[Object]>*/
1870 }
1871 {
1872 coloring__POSetColorer__compute_colors(self); /* Direct call coloring#POSetColorer#compute_colors on <self:POSetColorer[Object]>*/
1873 }
1874 {
1875 { /* Inline coloring#POSetColorer#graph (self) on <self:POSetColorer[Object]> */
1876 var16 = self->attrs[COLOR_coloring__POSetColorer___graph].val; /* _graph on <self:POSetColorer[Object]> */
1877 if (unlikely(var16 == NULL)) {
1878 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
1879 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 189);
1880 show_backtrace(1);
1881 }
1882 var14 = var16;
1883 RET_LABEL15:(void)0;
1884 }
1885 }
1886 {
1887 { /* Inline coloring#POSetConflictGraph#conflicts (var14) on <var14:POSetConflictGraph[Object]> */
1888 var19 = var14->attrs[COLOR_coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <var14:POSetConflictGraph[Object]> */
1889 if (unlikely(var19 == NULL)) {
1890 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
1891 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 40);
1892 show_backtrace(1);
1893 }
1894 var17 = var19;
1895 RET_LABEL18:(void)0;
1896 }
1897 }
1898 {
1899 { /* Inline coloring#POSetColorer#conflicts_cache= (self,var17) on <self:POSetColorer[Object]> */
1900 /* Covariant cast for argument 0 (conflicts_cache) <var17:HashMap[Object, Set[Object]]> isa Map[E, Set[E]] */
1901 /* <var17:HashMap[Object, Set[Object]]> isa Map[E, Set[E]] */
1902 type_struct24 = self->type->resolution_table->types[COLOR_abstract_collection__Mapcoloring__POSetColorer_FT0abstract_collection__Setcoloring__POSetColorer_FT0];
1903 cltype22 = type_struct24->color;
1904 idtype23 = type_struct24->id;
1905 if(cltype22 >= var17->type->table_size) {
1906 var21 = 0;
1907 } else {
1908 var21 = var17->type->type_table[cltype22] == idtype23;
1909 }
1910 if (unlikely(!var21)) {
1911 var_class_name25 = var17 == NULL ? "null" : var17->type->name;
1912 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[E, Set[E]]", var_class_name25);
1913 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 187);
1914 show_backtrace(1);
1915 }
1916 self->attrs[COLOR_coloring__POSetColorer___conflicts_cache].val = var17; /* _conflicts_cache on <self:POSetColorer[Object]> */
1917 RET_LABEL20:(void)0;
1918 }
1919 }
1920 var26 = 1;
1921 {
1922 { /* Inline coloring#POSetColorer#is_colored= (self,var26) on <self:POSetColorer[Object]> */
1923 self->attrs[COLOR_coloring__POSetColorer___is_colored].s = var26; /* _is_colored on <self:POSetColorer[Object]> */
1924 RET_LABEL27:(void)0;
1925 }
1926 }
1927 RET_LABEL:;
1928 }
1929 /* method coloring#POSetColorer#colorize for (self: Object, POSet[Object]) */
1930 void VIRTUAL_coloring__POSetColorer__colorize(val* self, val* p0) {
1931 coloring__POSetColorer__colorize(self, p0); /* Direct call coloring#POSetColorer#colorize on <self:Object(POSetColorer[Object])>*/
1932 RET_LABEL:;
1933 }
1934 /* method coloring#POSetColorer#allocate_ids for (self: POSetColorer[Object]) */
1935 void coloring__POSetColorer__allocate_ids(val* self) {
1936 val* var /* : HashMap[Object, Int] */;
1937 val* var2 /* : HashMap[Object, Int] */;
1938 val* var3 /* : HashSet[Object] */;
1939 val* var4 /* : POSet[Object] */;
1940 val* var6 /* : POSet[Object] */;
1941 val* var7 /* : Array[nullable Object] */;
1942 val* var_elements /* var elements: HashSet[Object] */;
1943 val* var8 /* : POSet[Object] */;
1944 val* var10 /* : POSet[Object] */;
1945 val* var11 /* : Array[Object] */;
1946 val* var_ /* var : Array[Object] */;
1947 val* var12 /* : ArrayIterator[nullable Object] */;
1948 val* var_13 /* var : ArrayIterator[Object] */;
1949 short int var14 /* : Bool */;
1950 val* var15 /* : nullable Object */;
1951 val* var_e /* var e: Object */;
1952 val* var16 /* : HashMap[Object, Int] */;
1953 val* var18 /* : HashMap[Object, Int] */;
1954 val* var19 /* : HashMap[Object, Int] */;
1955 val* var21 /* : HashMap[Object, Int] */;
1956 long var22 /* : Int */;
1957 val* var23 /* : nullable Object */;
1958 {
1959 { /* Inline coloring#POSetColorer#ids_cache (self) on <self:POSetColorer[Object]> */
1960 var2 = self->attrs[COLOR_coloring__POSetColorer___ids_cache].val; /* _ids_cache on <self:POSetColorer[Object]> */
1961 if (unlikely(var2 == NULL)) {
1962 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ids_cache");
1963 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 165);
1964 show_backtrace(1);
1965 }
1966 var = var2;
1967 RET_LABEL1:(void)0;
1968 }
1969 }
1970 {
1971 hash_collection__HashMap__clear(var); /* Direct call hash_collection#HashMap#clear on <var:HashMap[Object, Int]>*/
1972 }
1973 var3 = NEW_hash_collection__HashSet(self->type->resolution_table->types[COLOR_hash_collection__HashSetcoloring__POSetColorer_FT0]);
1974 {
1975 { /* Inline coloring#POSetColorer#poset_cache (self) on <self:POSetColorer[Object]> */
1976 var6 = self->attrs[COLOR_coloring__POSetColorer___poset_cache].val; /* _poset_cache on <self:POSetColorer[Object]> */
1977 if (unlikely(var6 == NULL)) {
1978 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset_cache");
1979 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 180);
1980 show_backtrace(1);
1981 }
1982 var4 = var6;
1983 RET_LABEL5:(void)0;
1984 }
1985 }
1986 {
1987 var7 = array__Collection__to_a(var4);
1988 }
1989 {
1990 hash_collection__HashSet__from(var3, var7); /* Direct call hash_collection#HashSet#from on <var3:HashSet[Object]>*/
1991 }
1992 var_elements = var3;
1993 {
1994 { /* Inline coloring#POSetColorer#poset_cache (self) on <self:POSetColorer[Object]> */
1995 var10 = self->attrs[COLOR_coloring__POSetColorer___poset_cache].val; /* _poset_cache on <self:POSetColorer[Object]> */
1996 if (unlikely(var10 == NULL)) {
1997 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset_cache");
1998 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 180);
1999 show_backtrace(1);
2000 }
2001 var8 = var10;
2002 RET_LABEL9:(void)0;
2003 }
2004 }
2005 {
2006 var11 = poset__POSet__linearize(var8, var_elements);
2007 }
2008 var_ = var11;
2009 {
2010 var12 = array__AbstractArrayRead__iterator(var_);
2011 }
2012 var_13 = var12;
2013 for(;;) {
2014 {
2015 var14 = array__ArrayIterator__is_ok(var_13);
2016 }
2017 if (var14){
2018 {
2019 var15 = array__ArrayIterator__item(var_13);
2020 }
2021 var_e = var15;
2022 {
2023 { /* Inline coloring#POSetColorer#ids_cache (self) on <self:POSetColorer[Object]> */
2024 var18 = self->attrs[COLOR_coloring__POSetColorer___ids_cache].val; /* _ids_cache on <self:POSetColorer[Object]> */
2025 if (unlikely(var18 == NULL)) {
2026 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ids_cache");
2027 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 165);
2028 show_backtrace(1);
2029 }
2030 var16 = var18;
2031 RET_LABEL17:(void)0;
2032 }
2033 }
2034 {
2035 { /* Inline coloring#POSetColorer#ids_cache (self) on <self:POSetColorer[Object]> */
2036 var21 = self->attrs[COLOR_coloring__POSetColorer___ids_cache].val; /* _ids_cache on <self:POSetColorer[Object]> */
2037 if (unlikely(var21 == NULL)) {
2038 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ids_cache");
2039 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 165);
2040 show_backtrace(1);
2041 }
2042 var19 = var21;
2043 RET_LABEL20:(void)0;
2044 }
2045 }
2046 {
2047 var22 = hash_collection__HashMap__length(var19);
2048 }
2049 {
2050 var23 = BOX_kernel__Int(var22); /* autobox from Int to nullable Object */
2051 hash_collection__HashMap___91d_93d_61d(var16, var_e, var23); /* Direct call hash_collection#HashMap#[]= on <var16:HashMap[Object, Int]>*/
2052 }
2053 {
2054 array__ArrayIterator__next(var_13); /* Direct call array#ArrayIterator#next on <var_13:ArrayIterator[Object]>*/
2055 }
2056 } else {
2057 goto BREAK_label;
2058 }
2059 }
2060 BREAK_label: (void)0;
2061 {
2062 { /* Inline abstract_collection#Iterator#finish (var_13) on <var_13:ArrayIterator[Object]> */
2063 RET_LABEL24:(void)0;
2064 }
2065 }
2066 RET_LABEL:;
2067 }
2068 /* method coloring#POSetColorer#allocate_ids for (self: Object) */
2069 void VIRTUAL_coloring__POSetColorer__allocate_ids(val* self) {
2070 coloring__POSetColorer__allocate_ids(self); /* Direct call coloring#POSetColorer#allocate_ids on <self:Object(POSetColorer[Object])>*/
2071 RET_LABEL:;
2072 }
2073 /* method coloring#POSetColorer#compute_colors for (self: POSetColorer[Object]) */
2074 void coloring__POSetColorer__compute_colors(val* self) {
2075 val* var /* : HashMap[Object, Int] */;
2076 val* var2 /* : HashMap[Object, Int] */;
2077 val* var3 /* : POSetConflictGraph[Object] */;
2078 val* var5 /* : POSetConflictGraph[Object] */;
2079 val* var6 /* : HashSet[Object] */;
2080 val* var8 /* : HashSet[Object] */;
2081 val* var9 /* : POSetConflictGraph[Object] */;
2082 val* var11 /* : POSetConflictGraph[Object] */;
2083 val* var12 /* : HashSet[Object] */;
2084 val* var14 /* : HashSet[Object] */;
2085 {
2086 { /* Inline coloring#POSetColorer#colors_cache (self) on <self:POSetColorer[Object]> */
2087 var2 = self->attrs[COLOR_coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:POSetColorer[Object]> */
2088 if (unlikely(var2 == NULL)) {
2089 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
2090 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 173);
2091 show_backtrace(1);
2092 }
2093 var = var2;
2094 RET_LABEL1:(void)0;
2095 }
2096 }
2097 {
2098 hash_collection__HashMap__clear(var); /* Direct call hash_collection#HashMap#clear on <var:HashMap[Object, Int]>*/
2099 }
2100 {
2101 coloring__POSetColorer__colorize_core(self); /* Direct call coloring#POSetColorer#colorize_core on <self:POSetColorer[Object]>*/
2102 }
2103 {
2104 { /* Inline coloring#POSetColorer#graph (self) on <self:POSetColorer[Object]> */
2105 var5 = self->attrs[COLOR_coloring__POSetColorer___graph].val; /* _graph on <self:POSetColorer[Object]> */
2106 if (unlikely(var5 == NULL)) {
2107 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
2108 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 189);
2109 show_backtrace(1);
2110 }
2111 var3 = var5;
2112 RET_LABEL4:(void)0;
2113 }
2114 }
2115 {
2116 { /* Inline coloring#POSetConflictGraph#border (var3) on <var3:POSetConflictGraph[Object]> */
2117 var8 = var3->attrs[COLOR_coloring__POSetConflictGraph___border].val; /* _border on <var3:POSetConflictGraph[Object]> */
2118 if (unlikely(var8 == NULL)) {
2119 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _border");
2120 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 28);
2121 show_backtrace(1);
2122 }
2123 var6 = var8;
2124 RET_LABEL7:(void)0;
2125 }
2126 }
2127 {
2128 coloring__POSetColorer__colorize_set(self, var6); /* Direct call coloring#POSetColorer#colorize_set on <self:POSetColorer[Object]>*/
2129 }
2130 {
2131 { /* Inline coloring#POSetColorer#graph (self) on <self:POSetColorer[Object]> */
2132 var11 = self->attrs[COLOR_coloring__POSetColorer___graph].val; /* _graph on <self:POSetColorer[Object]> */
2133 if (unlikely(var11 == NULL)) {
2134 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
2135 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 189);
2136 show_backtrace(1);
2137 }
2138 var9 = var11;
2139 RET_LABEL10:(void)0;
2140 }
2141 }
2142 {
2143 { /* Inline coloring#POSetConflictGraph#crown (var9) on <var9:POSetConflictGraph[Object]> */
2144 var14 = var9->attrs[COLOR_coloring__POSetConflictGraph___crown].val; /* _crown on <var9:POSetConflictGraph[Object]> */
2145 if (unlikely(var14 == NULL)) {
2146 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _crown");
2147 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 34);
2148 show_backtrace(1);
2149 }
2150 var12 = var14;
2151 RET_LABEL13:(void)0;
2152 }
2153 }
2154 {
2155 coloring__POSetColorer__colorize_set(self, var12); /* Direct call coloring#POSetColorer#colorize_set on <self:POSetColorer[Object]>*/
2156 }
2157 RET_LABEL:;
2158 }
2159 /* method coloring#POSetColorer#compute_colors for (self: Object) */
2160 void VIRTUAL_coloring__POSetColorer__compute_colors(val* self) {
2161 coloring__POSetColorer__compute_colors(self); /* Direct call coloring#POSetColorer#compute_colors on <self:Object(POSetColorer[Object])>*/
2162 RET_LABEL:;
2163 }
2164 /* method coloring#POSetColorer#colorize_core for (self: POSetColorer[Object]) */
2165 void coloring__POSetColorer__colorize_core(val* self) {
2166 val* var /* : POSet[Object] */;
2167 val* var2 /* : POSet[Object] */;
2168 val* var3 /* : POSetConflictGraph[Object] */;
2169 val* var5 /* : POSetConflictGraph[Object] */;
2170 val* var6 /* : HashSet[Object] */;
2171 val* var8 /* : HashSet[Object] */;
2172 val* var9 /* : Array[Object] */;
2173 val* var_ /* var : Array[Object] */;
2174 val* var10 /* : ArrayIterator[nullable Object] */;
2175 val* var_11 /* var : ArrayIterator[Object] */;
2176 short int var12 /* : Bool */;
2177 val* var13 /* : nullable Object */;
2178 val* var_e /* var e: Object */;
2179 long var14 /* : Int */;
2180 long var_color /* var color: Int */;
2181 val* var15 /* : POSetConflictGraph[Object] */;
2182 val* var17 /* : POSetConflictGraph[Object] */;
2183 val* var18 /* : HashMap[Object, Set[Object]] */;
2184 val* var20 /* : HashMap[Object, Set[Object]] */;
2185 val* var21 /* : nullable Object */;
2186 val* var_conflicts /* var conflicts: Set[Object] */;
2187 short int var22 /* : Bool */;
2188 short int var23 /* : Bool */;
2189 long var24 /* : Int */;
2190 long var25 /* : Int */;
2191 short int var27 /* : Bool */;
2192 int cltype;
2193 int idtype;
2194 const char* var_class_name;
2195 long var28 /* : Int */;
2196 val* var29 /* : HashMap[Object, Int] */;
2197 val* var31 /* : HashMap[Object, Int] */;
2198 val* var32 /* : nullable Object */;
2199 {
2200 { /* Inline coloring#POSetColorer#poset_cache (self) on <self:POSetColorer[Object]> */
2201 var2 = self->attrs[COLOR_coloring__POSetColorer___poset_cache].val; /* _poset_cache on <self:POSetColorer[Object]> */
2202 if (unlikely(var2 == NULL)) {
2203 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset_cache");
2204 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 180);
2205 show_backtrace(1);
2206 }
2207 var = var2;
2208 RET_LABEL1:(void)0;
2209 }
2210 }
2211 {
2212 { /* Inline coloring#POSetColorer#graph (self) on <self:POSetColorer[Object]> */
2213 var5 = self->attrs[COLOR_coloring__POSetColorer___graph].val; /* _graph on <self:POSetColorer[Object]> */
2214 if (unlikely(var5 == NULL)) {
2215 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
2216 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 189);
2217 show_backtrace(1);
2218 }
2219 var3 = var5;
2220 RET_LABEL4:(void)0;
2221 }
2222 }
2223 {
2224 { /* Inline coloring#POSetConflictGraph#core (var3) on <var3:POSetConflictGraph[Object]> */
2225 var8 = var3->attrs[COLOR_coloring__POSetConflictGraph___core].val; /* _core on <var3:POSetConflictGraph[Object]> */
2226 if (unlikely(var8 == NULL)) {
2227 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _core");
2228 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 22);
2229 show_backtrace(1);
2230 }
2231 var6 = var8;
2232 RET_LABEL7:(void)0;
2233 }
2234 }
2235 {
2236 var9 = poset__POSet__linearize(var, var6);
2237 }
2238 var_ = var9;
2239 {
2240 var10 = array__AbstractArrayRead__iterator(var_);
2241 }
2242 var_11 = var10;
2243 for(;;) {
2244 {
2245 var12 = array__ArrayIterator__is_ok(var_11);
2246 }
2247 if (var12){
2248 {
2249 var13 = array__ArrayIterator__item(var_11);
2250 }
2251 var_e = var13;
2252 {
2253 var14 = coloring__POSetColorer__min_color(self, var_e);
2254 }
2255 var_color = var14;
2256 {
2257 { /* Inline coloring#POSetColorer#graph (self) on <self:POSetColorer[Object]> */
2258 var17 = self->attrs[COLOR_coloring__POSetColorer___graph].val; /* _graph on <self:POSetColorer[Object]> */
2259 if (unlikely(var17 == NULL)) {
2260 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
2261 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 189);
2262 show_backtrace(1);
2263 }
2264 var15 = var17;
2265 RET_LABEL16:(void)0;
2266 }
2267 }
2268 {
2269 { /* Inline coloring#POSetConflictGraph#conflicts (var15) on <var15:POSetConflictGraph[Object]> */
2270 var20 = var15->attrs[COLOR_coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <var15:POSetConflictGraph[Object]> */
2271 if (unlikely(var20 == NULL)) {
2272 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
2273 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 40);
2274 show_backtrace(1);
2275 }
2276 var18 = var20;
2277 RET_LABEL19:(void)0;
2278 }
2279 }
2280 {
2281 var21 = hash_collection__HashMap___91d_93d(var18, var_e);
2282 }
2283 var_conflicts = var21;
2284 for(;;) {
2285 {
2286 var22 = coloring__POSetColorer__is_color_free(self, var_color, var_conflicts);
2287 }
2288 var23 = !var22;
2289 if (var23){
2290 var24 = 1;
2291 {
2292 { /* Inline kernel#Int#+ (var_color,var24) on <var_color:Int> */
2293 /* Covariant cast for argument 0 (i) <var24:Int> isa OTHER */
2294 /* <var24:Int> isa OTHER */
2295 var27 = 1; /* easy <var24:Int> isa OTHER*/
2296 if (unlikely(!var27)) {
2297 var_class_name = type_kernel__Int.name;
2298 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2299 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
2300 show_backtrace(1);
2301 }
2302 var28 = var_color + var24;
2303 var25 = var28;
2304 goto RET_LABEL26;
2305 RET_LABEL26:(void)0;
2306 }
2307 }
2308 var_color = var25;
2309 } else {
2310 goto BREAK_label;
2311 }
2312 }
2313 BREAK_label: (void)0;
2314 {
2315 { /* Inline coloring#POSetColorer#colors_cache (self) on <self:POSetColorer[Object]> */
2316 var31 = self->attrs[COLOR_coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:POSetColorer[Object]> */
2317 if (unlikely(var31 == NULL)) {
2318 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
2319 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 173);
2320 show_backtrace(1);
2321 }
2322 var29 = var31;
2323 RET_LABEL30:(void)0;
2324 }
2325 }
2326 {
2327 var32 = BOX_kernel__Int(var_color); /* autobox from Int to nullable Object */
2328 hash_collection__HashMap___91d_93d_61d(var29, var_e, var32); /* Direct call hash_collection#HashMap#[]= on <var29:HashMap[Object, Int]>*/
2329 }
2330 {
2331 array__ArrayIterator__next(var_11); /* Direct call array#ArrayIterator#next on <var_11:ArrayIterator[Object]>*/
2332 }
2333 } else {
2334 goto BREAK_label33;
2335 }
2336 }
2337 BREAK_label33: (void)0;
2338 {
2339 { /* Inline abstract_collection#Iterator#finish (var_11) on <var_11:ArrayIterator[Object]> */
2340 RET_LABEL34:(void)0;
2341 }
2342 }
2343 RET_LABEL:;
2344 }
2345 /* method coloring#POSetColorer#colorize_core for (self: Object) */
2346 void VIRTUAL_coloring__POSetColorer__colorize_core(val* self) {
2347 coloring__POSetColorer__colorize_core(self); /* Direct call coloring#POSetColorer#colorize_core on <self:Object(POSetColorer[Object])>*/
2348 RET_LABEL:;
2349 }
2350 /* method coloring#POSetColorer#colorize_set for (self: POSetColorer[Object], Set[Object]) */
2351 void coloring__POSetColorer__colorize_set(val* self, val* p0) {
2352 short int var /* : Bool */;
2353 int cltype;
2354 int idtype;
2355 const struct type* type_struct;
2356 const char* var_class_name;
2357 val* var_set /* var set: Set[Object] */;
2358 val* var1 /* : POSet[Object] */;
2359 val* var3 /* : POSet[Object] */;
2360 val* var4 /* : Array[Object] */;
2361 val* var_ /* var : Array[Object] */;
2362 val* var5 /* : ArrayIterator[nullable Object] */;
2363 val* var_6 /* var : ArrayIterator[Object] */;
2364 short int var7 /* : Bool */;
2365 val* var8 /* : nullable Object */;
2366 val* var_e /* var e: Object */;
2367 val* var9 /* : HashMap[Object, Int] */;
2368 val* var11 /* : HashMap[Object, Int] */;
2369 long var12 /* : Int */;
2370 val* var13 /* : nullable Object */;
2371 /* Covariant cast for argument 0 (set) <p0:Set[Object]> isa Set[E] */
2372 /* <p0:Set[Object]> isa Set[E] */
2373 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Setcoloring__POSetColorer_FT0];
2374 cltype = type_struct->color;
2375 idtype = type_struct->id;
2376 if(cltype >= p0->type->table_size) {
2377 var = 0;
2378 } else {
2379 var = p0->type->type_table[cltype] == idtype;
2380 }
2381 if (unlikely(!var)) {
2382 var_class_name = p0 == NULL ? "null" : p0->type->name;
2383 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Set[E]", var_class_name);
2384 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 231);
2385 show_backtrace(1);
2386 }
2387 var_set = p0;
2388 {
2389 { /* Inline coloring#POSetColorer#poset_cache (self) on <self:POSetColorer[Object]> */
2390 var3 = self->attrs[COLOR_coloring__POSetColorer___poset_cache].val; /* _poset_cache on <self:POSetColorer[Object]> */
2391 if (unlikely(var3 == NULL)) {
2392 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset_cache");
2393 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 180);
2394 show_backtrace(1);
2395 }
2396 var1 = var3;
2397 RET_LABEL2:(void)0;
2398 }
2399 }
2400 {
2401 var4 = poset__POSet__linearize(var1, var_set);
2402 }
2403 var_ = var4;
2404 {
2405 var5 = array__AbstractArrayRead__iterator(var_);
2406 }
2407 var_6 = var5;
2408 for(;;) {
2409 {
2410 var7 = array__ArrayIterator__is_ok(var_6);
2411 }
2412 if (var7){
2413 {
2414 var8 = array__ArrayIterator__item(var_6);
2415 }
2416 var_e = var8;
2417 {
2418 { /* Inline coloring#POSetColorer#colors_cache (self) on <self:POSetColorer[Object]> */
2419 var11 = self->attrs[COLOR_coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:POSetColorer[Object]> */
2420 if (unlikely(var11 == NULL)) {
2421 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
2422 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 173);
2423 show_backtrace(1);
2424 }
2425 var9 = var11;
2426 RET_LABEL10:(void)0;
2427 }
2428 }
2429 {
2430 var12 = coloring__POSetColorer__min_color(self, var_e);
2431 }
2432 {
2433 var13 = BOX_kernel__Int(var12); /* autobox from Int to nullable Object */
2434 hash_collection__HashMap___91d_93d_61d(var9, var_e, var13); /* Direct call hash_collection#HashMap#[]= on <var9:HashMap[Object, Int]>*/
2435 }
2436 {
2437 array__ArrayIterator__next(var_6); /* Direct call array#ArrayIterator#next on <var_6:ArrayIterator[Object]>*/
2438 }
2439 } else {
2440 goto BREAK_label;
2441 }
2442 }
2443 BREAK_label: (void)0;
2444 {
2445 { /* Inline abstract_collection#Iterator#finish (var_6) on <var_6:ArrayIterator[Object]> */
2446 RET_LABEL14:(void)0;
2447 }
2448 }
2449 RET_LABEL:;
2450 }
2451 /* method coloring#POSetColorer#colorize_set for (self: Object, Set[Object]) */
2452 void VIRTUAL_coloring__POSetColorer__colorize_set(val* self, val* p0) {
2453 coloring__POSetColorer__colorize_set(self, p0); /* Direct call coloring#POSetColorer#colorize_set on <self:Object(POSetColorer[Object])>*/
2454 RET_LABEL:;
2455 }
2456 /* method coloring#POSetColorer#min_color for (self: POSetColorer[Object], Object): Int */
2457 long coloring__POSetColorer__min_color(val* self, val* p0) {
2458 long var /* : Int */;
2459 short int var1 /* : Bool */;
2460 int cltype;
2461 int idtype;
2462 const struct type* type_struct;
2463 const char* var_class_name;
2464 val* var_e /* var e: Object */;
2465 long var2 /* : Int */;
2466 long var3 /* : Int */;
2467 long var5 /* : Int */;
2468 long var_max_color /* var max_color: Int */;
2469 val* var6 /* : POSet[Object] */;
2470 val* var8 /* : POSet[Object] */;
2471 val* var9 /* : POSetElement[Object] */;
2472 val* var10 /* : Collection[Object] */;
2473 val* var_ /* var : Collection[Object] */;
2474 val* var11 /* : Iterator[nullable Object] */;
2475 val* var_12 /* var : Iterator[Object] */;
2476 short int var13 /* : Bool */;
2477 val* var14 /* : nullable Object */;
2478 val* var_p /* var p: Object */;
2479 val* var15 /* : HashMap[Object, Int] */;
2480 val* var17 /* : HashMap[Object, Int] */;
2481 short int var18 /* : Bool */;
2482 short int var19 /* : Bool */;
2483 val* var20 /* : HashMap[Object, Int] */;
2484 val* var22 /* : HashMap[Object, Int] */;
2485 val* var23 /* : nullable Object */;
2486 long var24 /* : Int */;
2487 long var_color /* var color: Int */;
2488 short int var25 /* : Bool */;
2489 short int var27 /* : Bool */;
2490 int cltype28;
2491 int idtype29;
2492 const char* var_class_name30;
2493 short int var31 /* : Bool */;
2494 long var34 /* : Int */;
2495 long var35 /* : Int */;
2496 short int var37 /* : Bool */;
2497 int cltype38;
2498 int idtype39;
2499 const char* var_class_name40;
2500 long var41 /* : Int */;
2501 /* Covariant cast for argument 0 (e) <p0:Object> isa E */
2502 /* <p0:Object> isa E */
2503 type_struct = self->type->resolution_table->types[COLOR_coloring__POSetColorer_FT0];
2504 cltype = type_struct->color;
2505 idtype = type_struct->id;
2506 if(cltype >= p0->type->table_size) {
2507 var1 = 0;
2508 } else {
2509 var1 = p0->type->type_table[cltype] == idtype;
2510 }
2511 if (unlikely(!var1)) {
2512 var_class_name = p0 == NULL ? "null" : p0->type->name;
2513 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
2514 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 236);
2515 show_backtrace(1);
2516 }
2517 var_e = p0;
2518 var2 = 1;
2519 {
2520 { /* Inline kernel#Int#unary - (var2) on <var2:Int> */
2521 var5 = -var2;
2522 var3 = var5;
2523 goto RET_LABEL4;
2524 RET_LABEL4:(void)0;
2525 }
2526 }
2527 var_max_color = var3;
2528 {
2529 { /* Inline coloring#POSetColorer#poset_cache (self) on <self:POSetColorer[Object]> */
2530 var8 = self->attrs[COLOR_coloring__POSetColorer___poset_cache].val; /* _poset_cache on <self:POSetColorer[Object]> */
2531 if (unlikely(var8 == NULL)) {
2532 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset_cache");
2533 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 180);
2534 show_backtrace(1);
2535 }
2536 var6 = var8;
2537 RET_LABEL7:(void)0;
2538 }
2539 }
2540 {
2541 var9 = poset__POSet___91d_93d(var6, var_e);
2542 }
2543 {
2544 var10 = poset__POSetElement__direct_greaters(var9);
2545 }
2546 var_ = var10;
2547 {
2548 var11 = ((val* (*)(val*))(var_->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_) /* iterator on <var_:Collection[Object]>*/;
2549 }
2550 var_12 = var11;
2551 for(;;) {
2552 {
2553 var13 = ((short int (*)(val*))(var_12->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_12) /* is_ok on <var_12:Iterator[Object]>*/;
2554 }
2555 if (var13){
2556 {
2557 var14 = ((val* (*)(val*))(var_12->class->vft[COLOR_abstract_collection__Iterator__item]))(var_12) /* item on <var_12:Iterator[Object]>*/;
2558 }
2559 var_p = var14;
2560 {
2561 { /* Inline coloring#POSetColorer#colors_cache (self) on <self:POSetColorer[Object]> */
2562 var17 = self->attrs[COLOR_coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:POSetColorer[Object]> */
2563 if (unlikely(var17 == NULL)) {
2564 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
2565 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 173);
2566 show_backtrace(1);
2567 }
2568 var15 = var17;
2569 RET_LABEL16:(void)0;
2570 }
2571 }
2572 {
2573 var18 = abstract_collection__MapRead__has_key(var15, var_p);
2574 }
2575 var19 = !var18;
2576 if (var19){
2577 goto BREAK_label;
2578 } else {
2579 }
2580 {
2581 { /* Inline coloring#POSetColorer#colors_cache (self) on <self:POSetColorer[Object]> */
2582 var22 = self->attrs[COLOR_coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:POSetColorer[Object]> */
2583 if (unlikely(var22 == NULL)) {
2584 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
2585 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 173);
2586 show_backtrace(1);
2587 }
2588 var20 = var22;
2589 RET_LABEL21:(void)0;
2590 }
2591 }
2592 {
2593 var23 = hash_collection__HashMap___91d_93d(var20, var_p);
2594 }
2595 var24 = ((struct instance_kernel__Int*)var23)->value; /* autounbox from nullable Object to Int */;
2596 var_color = var24;
2597 {
2598 { /* Inline kernel#Int#> (var_color,var_max_color) on <var_color:Int> */
2599 /* Covariant cast for argument 0 (i) <var_max_color:Int> isa OTHER */
2600 /* <var_max_color:Int> isa OTHER */
2601 var27 = 1; /* easy <var_max_color:Int> isa OTHER*/
2602 if (unlikely(!var27)) {
2603 var_class_name30 = type_kernel__Int.name;
2604 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name30);
2605 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
2606 show_backtrace(1);
2607 }
2608 var31 = var_color > var_max_color;
2609 var25 = var31;
2610 goto RET_LABEL26;
2611 RET_LABEL26:(void)0;
2612 }
2613 }
2614 if (var25){
2615 var_max_color = var_color;
2616 } else {
2617 }
2618 BREAK_label: (void)0;
2619 {
2620 ((void (*)(val*))(var_12->class->vft[COLOR_abstract_collection__Iterator__next]))(var_12) /* next on <var_12:Iterator[Object]>*/;
2621 }
2622 } else {
2623 goto BREAK_label32;
2624 }
2625 }
2626 BREAK_label32: (void)0;
2627 {
2628 { /* Inline abstract_collection#Iterator#finish (var_12) on <var_12:Iterator[Object]> */
2629 RET_LABEL33:(void)0;
2630 }
2631 }
2632 var34 = 1;
2633 {
2634 { /* Inline kernel#Int#+ (var_max_color,var34) on <var_max_color:Int> */
2635 /* Covariant cast for argument 0 (i) <var34:Int> isa OTHER */
2636 /* <var34:Int> isa OTHER */
2637 var37 = 1; /* easy <var34:Int> isa OTHER*/
2638 if (unlikely(!var37)) {
2639 var_class_name40 = type_kernel__Int.name;
2640 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name40);
2641 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
2642 show_backtrace(1);
2643 }
2644 var41 = var_max_color + var34;
2645 var35 = var41;
2646 goto RET_LABEL36;
2647 RET_LABEL36:(void)0;
2648 }
2649 }
2650 var = var35;
2651 goto RET_LABEL;
2652 RET_LABEL:;
2653 return var;
2654 }
2655 /* method coloring#POSetColorer#min_color for (self: Object, Object): Int */
2656 long VIRTUAL_coloring__POSetColorer__min_color(val* self, val* p0) {
2657 long var /* : Int */;
2658 long var1 /* : Int */;
2659 var1 = coloring__POSetColorer__min_color(self, p0);
2660 var = var1;
2661 RET_LABEL:;
2662 return var;
2663 }
2664 /* method coloring#POSetColorer#is_color_free for (self: POSetColorer[Object], Int, Collection[Object]): Bool */
2665 short int coloring__POSetColorer__is_color_free(val* self, long p0, val* p1) {
2666 short int var /* : Bool */;
2667 short int var1 /* : Bool */;
2668 int cltype;
2669 int idtype;
2670 const struct type* type_struct;
2671 const char* var_class_name;
2672 long var_color /* var color: Int */;
2673 val* var_set /* var set: Collection[Object] */;
2674 val* var_ /* var : Collection[Object] */;
2675 val* var2 /* : Iterator[nullable Object] */;
2676 val* var_3 /* var : Iterator[Object] */;
2677 short int var4 /* : Bool */;
2678 val* var5 /* : nullable Object */;
2679 val* var_e /* var e: Object */;
2680 short int var6 /* : Bool */;
2681 val* var7 /* : HashMap[Object, Int] */;
2682 val* var9 /* : HashMap[Object, Int] */;
2683 short int var10 /* : Bool */;
2684 short int var_11 /* var : Bool */;
2685 val* var12 /* : HashMap[Object, Int] */;
2686 val* var14 /* : HashMap[Object, Int] */;
2687 val* var15 /* : nullable Object */;
2688 short int var16 /* : Bool */;
2689 short int var17 /* : Bool */;
2690 short int var19 /* : Bool */;
2691 long var20 /* : Int */;
2692 short int var21 /* : Bool */;
2693 short int var23 /* : Bool */;
2694 /* Covariant cast for argument 1 (set) <p1:Collection[Object]> isa Collection[E] */
2695 /* <p1:Collection[Object]> isa Collection[E] */
2696 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collectioncoloring__POSetColorer_FT0];
2697 cltype = type_struct->color;
2698 idtype = type_struct->id;
2699 if(cltype >= p1->type->table_size) {
2700 var1 = 0;
2701 } else {
2702 var1 = p1->type->type_table[cltype] == idtype;
2703 }
2704 if (unlikely(!var1)) {
2705 var_class_name = p1 == NULL ? "null" : p1->type->name;
2706 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[E]", var_class_name);
2707 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 247);
2708 show_backtrace(1);
2709 }
2710 var_color = p0;
2711 var_set = p1;
2712 var_ = var_set;
2713 {
2714 var2 = ((val* (*)(val*))(var_->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_) /* iterator on <var_:Collection[Object]>*/;
2715 }
2716 var_3 = var2;
2717 for(;;) {
2718 {
2719 var4 = ((short int (*)(val*))(var_3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_3) /* is_ok on <var_3:Iterator[Object]>*/;
2720 }
2721 if (var4){
2722 {
2723 var5 = ((val* (*)(val*))(var_3->class->vft[COLOR_abstract_collection__Iterator__item]))(var_3) /* item on <var_3:Iterator[Object]>*/;
2724 }
2725 var_e = var5;
2726 {
2727 { /* Inline coloring#POSetColorer#colors_cache (self) on <self:POSetColorer[Object]> */
2728 var9 = self->attrs[COLOR_coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:POSetColorer[Object]> */
2729 if (unlikely(var9 == NULL)) {
2730 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
2731 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 173);
2732 show_backtrace(1);
2733 }
2734 var7 = var9;
2735 RET_LABEL8:(void)0;
2736 }
2737 }
2738 {
2739 var10 = abstract_collection__MapRead__has_key(var7, var_e);
2740 }
2741 var_11 = var10;
2742 if (var10){
2743 {
2744 { /* Inline coloring#POSetColorer#colors_cache (self) on <self:POSetColorer[Object]> */
2745 var14 = self->attrs[COLOR_coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:POSetColorer[Object]> */
2746 if (unlikely(var14 == NULL)) {
2747 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
2748 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 173);
2749 show_backtrace(1);
2750 }
2751 var12 = var14;
2752 RET_LABEL13:(void)0;
2753 }
2754 }
2755 {
2756 var15 = hash_collection__HashMap___91d_93d(var12, var_e);
2757 }
2758 {
2759 { /* Inline kernel#Int#== (var15,var_color) on <var15:nullable Object(Int)> */
2760 var19 = (var15 != NULL) && (var15->class == &class_kernel__Int);
2761 if (var19) {
2762 var20 = ((struct instance_kernel__Int*)var15)->value; /* autounbox from nullable Object to Int */;
2763 var19 = (var20 == var_color);
2764 }
2765 var17 = var19;
2766 goto RET_LABEL18;
2767 RET_LABEL18:(void)0;
2768 }
2769 var16 = var17;
2770 }
2771 var6 = var16;
2772 } else {
2773 var6 = var_11;
2774 }
2775 if (var6){
2776 var21 = 0;
2777 var = var21;
2778 goto RET_LABEL;
2779 } else {
2780 }
2781 {
2782 ((void (*)(val*))(var_3->class->vft[COLOR_abstract_collection__Iterator__next]))(var_3) /* next on <var_3:Iterator[Object]>*/;
2783 }
2784 } else {
2785 goto BREAK_label;
2786 }
2787 }
2788 BREAK_label: (void)0;
2789 {
2790 { /* Inline abstract_collection#Iterator#finish (var_3) on <var_3:Iterator[Object]> */
2791 RET_LABEL22:(void)0;
2792 }
2793 }
2794 var23 = 1;
2795 var = var23;
2796 goto RET_LABEL;
2797 RET_LABEL:;
2798 return var;
2799 }
2800 /* method coloring#POSetColorer#is_color_free for (self: Object, Int, Collection[Object]): Bool */
2801 short int VIRTUAL_coloring__POSetColorer__is_color_free(val* self, long p0, val* p1) {
2802 short int var /* : Bool */;
2803 short int var1 /* : Bool */;
2804 var1 = coloring__POSetColorer__is_color_free(self, p0, p1);
2805 var = var1;
2806 RET_LABEL:;
2807 return var;
2808 }
2809 /* method coloring#BucketsColorer#colors for (self: BucketsColorer[Object, Object]): HashMap[Object, Int] */
2810 val* coloring__BucketsColorer__colors(val* self) {
2811 val* var /* : HashMap[Object, Int] */;
2812 val* var1 /* : HashMap[Object, Int] */;
2813 var1 = self->attrs[COLOR_coloring__BucketsColorer___colors].val; /* _colors on <self:BucketsColorer[Object, Object]> */
2814 if (unlikely(var1 == NULL)) {
2815 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
2816 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 279);
2817 show_backtrace(1);
2818 }
2819 var = var1;
2820 RET_LABEL:;
2821 return var;
2822 }
2823 /* method coloring#BucketsColorer#colors for (self: Object): HashMap[Object, Int] */
2824 val* VIRTUAL_coloring__BucketsColorer__colors(val* self) {
2825 val* var /* : HashMap[Object, Int] */;
2826 val* var1 /* : HashMap[Object, Int] */;
2827 val* var3 /* : HashMap[Object, Int] */;
2828 { /* Inline coloring#BucketsColorer#colors (self) on <self:Object(BucketsColorer[Object, Object])> */
2829 var3 = self->attrs[COLOR_coloring__BucketsColorer___colors].val; /* _colors on <self:Object(BucketsColorer[Object, Object])> */
2830 if (unlikely(var3 == NULL)) {
2831 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
2832 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 279);
2833 show_backtrace(1);
2834 }
2835 var1 = var3;
2836 RET_LABEL2:(void)0;
2837 }
2838 var = var1;
2839 RET_LABEL:;
2840 return var;
2841 }
2842 /* method coloring#BucketsColorer#conflicts for (self: BucketsColorer[Object, Object]): HashMap[Object, Set[Object]] */
2843 val* coloring__BucketsColorer__conflicts(val* self) {
2844 val* var /* : HashMap[Object, Set[Object]] */;
2845 val* var1 /* : HashMap[Object, Set[Object]] */;
2846 var1 = self->attrs[COLOR_coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
2847 if (unlikely(var1 == NULL)) {
2848 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
2849 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 280);
2850 show_backtrace(1);
2851 }
2852 var = var1;
2853 RET_LABEL:;
2854 return var;
2855 }
2856 /* method coloring#BucketsColorer#conflicts for (self: Object): HashMap[Object, Set[Object]] */
2857 val* VIRTUAL_coloring__BucketsColorer__conflicts(val* self) {
2858 val* var /* : HashMap[Object, Set[Object]] */;
2859 val* var1 /* : HashMap[Object, Set[Object]] */;
2860 val* var3 /* : HashMap[Object, Set[Object]] */;
2861 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:Object(BucketsColorer[Object, Object])> */
2862 var3 = self->attrs[COLOR_coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:Object(BucketsColorer[Object, Object])> */
2863 if (unlikely(var3 == NULL)) {
2864 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
2865 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 280);
2866 show_backtrace(1);
2867 }
2868 var1 = var3;
2869 RET_LABEL2:(void)0;
2870 }
2871 var = var1;
2872 RET_LABEL:;
2873 return var;
2874 }
2875 /* method coloring#BucketsColorer#colorize for (self: BucketsColorer[Object, Object], Map[Object, Set[Object]]): Map[Object, Int] */
2876 val* coloring__BucketsColorer__colorize(val* self, val* p0) {
2877 val* var /* : Map[Object, Int] */;
2878 short int var1 /* : Bool */;
2879 int cltype;
2880 int idtype;
2881 const struct type* type_struct;
2882 const char* var_class_name;
2883 val* var_buckets /* var buckets: Map[Object, Set[Object]] */;
2884 long var2 /* : Int */;
2885 long var_min_color /* var min_color: Int */;
2886 val* var_ /* var : Map[Object, Set[Object]] */;
2887 val* var3 /* : MapIterator[Object, nullable Object] */;
2888 val* var_4 /* var : MapIterator[Object, Set[Object]] */;
2889 short int var5 /* : Bool */;
2890 val* var6 /* : Object */;
2891 val* var_holder /* var holder: Object */;
2892 val* var7 /* : nullable Object */;
2893 val* var_hbuckets /* var hbuckets: Set[Object] */;
2894 val* var_8 /* var : Set[Object] */;
2895 val* var9 /* : Iterator[nullable Object] */;
2896 val* var_10 /* var : Iterator[Object] */;
2897 short int var11 /* : Bool */;
2898 val* var12 /* : nullable Object */;
2899 val* var_bucket /* var bucket: Object */;
2900 val* var13 /* : HashMap[Object, Int] */;
2901 val* var15 /* : HashMap[Object, Int] */;
2902 short int var16 /* : Bool */;
2903 long var_color /* var color: Int */;
2904 short int var17 /* : Bool */;
2905 short int var18 /* : Bool */;
2906 long var19 /* : Int */;
2907 long var20 /* : Int */;
2908 short int var22 /* : Bool */;
2909 int cltype23;
2910 int idtype24;
2911 const char* var_class_name25;
2912 long var26 /* : Int */;
2913 val* var28 /* : HashMap[Object, Int] */;
2914 val* var30 /* : HashMap[Object, Int] */;
2915 val* var31 /* : nullable Object */;
2916 val* var36 /* : HashMap[Object, Int] */;
2917 val* var38 /* : HashMap[Object, Int] */;
2918 /* Covariant cast for argument 0 (buckets) <p0:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
2919 /* <p0:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
2920 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Mapcoloring__BucketsColorer_FT0abstract_collection__Setcoloring__BucketsColorer_FT1];
2921 cltype = type_struct->color;
2922 idtype = type_struct->id;
2923 if(cltype >= p0->type->table_size) {
2924 var1 = 0;
2925 } else {
2926 var1 = p0->type->type_table[cltype] == idtype;
2927 }
2928 if (unlikely(!var1)) {
2929 var_class_name = p0 == NULL ? "null" : p0->type->name;
2930 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[H, Set[E]]", var_class_name);
2931 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 282);
2932 show_backtrace(1);
2933 }
2934 var_buckets = p0;
2935 {
2936 coloring__BucketsColorer__compute_conflicts(self, var_buckets); /* Direct call coloring#BucketsColorer#compute_conflicts on <self:BucketsColorer[Object, Object]>*/
2937 }
2938 var2 = 0;
2939 var_min_color = var2;
2940 var_ = var_buckets;
2941 {
2942 var3 = ((val* (*)(val*))(var_->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var_) /* iterator on <var_:Map[Object, Set[Object]]>*/;
2943 }
2944 var_4 = var3;
2945 for(;;) {
2946 {
2947 var5 = ((short int (*)(val*))(var_4->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var_4) /* is_ok on <var_4:MapIterator[Object, Set[Object]]>*/;
2948 }
2949 if (var5){
2950 {
2951 var6 = ((val* (*)(val*))(var_4->class->vft[COLOR_abstract_collection__MapIterator__key]))(var_4) /* key on <var_4:MapIterator[Object, Set[Object]]>*/;
2952 }
2953 var_holder = var6;
2954 {
2955 var7 = ((val* (*)(val*))(var_4->class->vft[COLOR_abstract_collection__MapIterator__item]))(var_4) /* item on <var_4:MapIterator[Object, Set[Object]]>*/;
2956 }
2957 var_hbuckets = var7;
2958 var_8 = var_hbuckets;
2959 {
2960 var9 = ((val* (*)(val*))(var_8->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_8) /* iterator on <var_8:Set[Object]>*/;
2961 }
2962 var_10 = var9;
2963 for(;;) {
2964 {
2965 var11 = ((short int (*)(val*))(var_10->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_10) /* is_ok on <var_10:Iterator[Object]>*/;
2966 }
2967 if (var11){
2968 {
2969 var12 = ((val* (*)(val*))(var_10->class->vft[COLOR_abstract_collection__Iterator__item]))(var_10) /* item on <var_10:Iterator[Object]>*/;
2970 }
2971 var_bucket = var12;
2972 {
2973 { /* Inline coloring#BucketsColorer#colors (self) on <self:BucketsColorer[Object, Object]> */
2974 var15 = self->attrs[COLOR_coloring__BucketsColorer___colors].val; /* _colors on <self:BucketsColorer[Object, Object]> */
2975 if (unlikely(var15 == NULL)) {
2976 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
2977 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 279);
2978 show_backtrace(1);
2979 }
2980 var13 = var15;
2981 RET_LABEL14:(void)0;
2982 }
2983 }
2984 {
2985 var16 = abstract_collection__MapRead__has_key(var13, var_bucket);
2986 }
2987 if (var16){
2988 goto BREAK_label;
2989 } else {
2990 }
2991 var_color = var_min_color;
2992 for(;;) {
2993 {
2994 var17 = coloring__BucketsColorer__is_color_free(self, var_bucket, var_color);
2995 }
2996 var18 = !var17;
2997 if (var18){
2998 var19 = 1;
2999 {
3000 { /* Inline kernel#Int#+ (var_color,var19) on <var_color:Int> */
3001 /* Covariant cast for argument 0 (i) <var19:Int> isa OTHER */
3002 /* <var19:Int> isa OTHER */
3003 var22 = 1; /* easy <var19:Int> isa OTHER*/
3004 if (unlikely(!var22)) {
3005 var_class_name25 = type_kernel__Int.name;
3006 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name25);
3007 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
3008 show_backtrace(1);
3009 }
3010 var26 = var_color + var19;
3011 var20 = var26;
3012 goto RET_LABEL21;
3013 RET_LABEL21:(void)0;
3014 }
3015 }
3016 var_color = var20;
3017 } else {
3018 goto BREAK_label27;
3019 }
3020 }
3021 BREAK_label27: (void)0;
3022 {
3023 { /* Inline coloring#BucketsColorer#colors (self) on <self:BucketsColorer[Object, Object]> */
3024 var30 = self->attrs[COLOR_coloring__BucketsColorer___colors].val; /* _colors on <self:BucketsColorer[Object, Object]> */
3025 if (unlikely(var30 == NULL)) {
3026 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
3027 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 279);
3028 show_backtrace(1);
3029 }
3030 var28 = var30;
3031 RET_LABEL29:(void)0;
3032 }
3033 }
3034 {
3035 var31 = BOX_kernel__Int(var_color); /* autobox from Int to nullable Object */
3036 hash_collection__HashMap___91d_93d_61d(var28, var_bucket, var31); /* Direct call hash_collection#HashMap#[]= on <var28:HashMap[Object, Int]>*/
3037 }
3038 var_color = var_min_color;
3039 BREAK_label: (void)0;
3040 {
3041 ((void (*)(val*))(var_10->class->vft[COLOR_abstract_collection__Iterator__next]))(var_10) /* next on <var_10:Iterator[Object]>*/;
3042 }
3043 } else {
3044 goto BREAK_label32;
3045 }
3046 }
3047 BREAK_label32: (void)0;
3048 {
3049 { /* Inline abstract_collection#Iterator#finish (var_10) on <var_10:Iterator[Object]> */
3050 RET_LABEL33:(void)0;
3051 }
3052 }
3053 {
3054 ((void (*)(val*))(var_4->class->vft[COLOR_abstract_collection__MapIterator__next]))(var_4) /* next on <var_4:MapIterator[Object, Set[Object]]>*/;
3055 }
3056 } else {
3057 goto BREAK_label34;
3058 }
3059 }
3060 BREAK_label34: (void)0;
3061 {
3062 { /* Inline abstract_collection#MapIterator#finish (var_4) on <var_4:MapIterator[Object, Set[Object]]> */
3063 RET_LABEL35:(void)0;
3064 }
3065 }
3066 {
3067 { /* Inline coloring#BucketsColorer#colors (self) on <self:BucketsColorer[Object, Object]> */
3068 var38 = self->attrs[COLOR_coloring__BucketsColorer___colors].val; /* _colors on <self:BucketsColorer[Object, Object]> */
3069 if (unlikely(var38 == NULL)) {
3070 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
3071 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 279);
3072 show_backtrace(1);
3073 }
3074 var36 = var38;
3075 RET_LABEL37:(void)0;
3076 }
3077 }
3078 var = var36;
3079 goto RET_LABEL;
3080 RET_LABEL:;
3081 return var;
3082 }
3083 /* method coloring#BucketsColorer#colorize for (self: Object, Map[Object, Set[Object]]): Map[Object, Int] */
3084 val* VIRTUAL_coloring__BucketsColorer__colorize(val* self, val* p0) {
3085 val* var /* : Map[Object, Int] */;
3086 val* var1 /* : Map[Object, Int] */;
3087 var1 = coloring__BucketsColorer__colorize(self, p0);
3088 var = var1;
3089 RET_LABEL:;
3090 return var;
3091 }
3092 /* method coloring#BucketsColorer#is_color_free for (self: BucketsColorer[Object, Object], Object, Int): Bool */
3093 short int coloring__BucketsColorer__is_color_free(val* self, val* p0, long p1) {
3094 short int var /* : Bool */;
3095 short int var1 /* : Bool */;
3096 int cltype;
3097 int idtype;
3098 const struct type* type_struct;
3099 const char* var_class_name;
3100 val* var_bucket /* var bucket: Object */;
3101 long var_color /* var color: Int */;
3102 val* var2 /* : HashMap[Object, Set[Object]] */;
3103 val* var4 /* : HashMap[Object, Set[Object]] */;
3104 short int var5 /* : Bool */;
3105 val* var6 /* : HashMap[Object, Set[Object]] */;
3106 val* var8 /* : HashMap[Object, Set[Object]] */;
3107 val* var9 /* : nullable Object */;
3108 val* var_ /* var : Set[Object] */;
3109 val* var10 /* : Iterator[nullable Object] */;
3110 val* var_11 /* var : Iterator[Object] */;
3111 short int var12 /* : Bool */;
3112 val* var13 /* : nullable Object */;
3113 val* var_other /* var other: Object */;
3114 short int var14 /* : Bool */;
3115 val* var15 /* : HashMap[Object, Int] */;
3116 val* var17 /* : HashMap[Object, Int] */;
3117 short int var18 /* : Bool */;
3118 short int var_19 /* var : Bool */;
3119 val* var20 /* : HashMap[Object, Int] */;
3120 val* var22 /* : HashMap[Object, Int] */;
3121 val* var23 /* : nullable Object */;
3122 short int var24 /* : Bool */;
3123 short int var25 /* : Bool */;
3124 short int var27 /* : Bool */;
3125 long var28 /* : Int */;
3126 short int var29 /* : Bool */;
3127 short int var31 /* : Bool */;
3128 /* Covariant cast for argument 0 (bucket) <p0:Object> isa E */
3129 /* <p0:Object> isa E */
3130 type_struct = self->type->resolution_table->types[COLOR_coloring__BucketsColorer_FT1];
3131 cltype = type_struct->color;
3132 idtype = type_struct->id;
3133 if(cltype >= p0->type->table_size) {
3134 var1 = 0;
3135 } else {
3136 var1 = p0->type->type_table[cltype] == idtype;
3137 }
3138 if (unlikely(!var1)) {
3139 var_class_name = p0 == NULL ? "null" : p0->type->name;
3140 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
3141 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 300);
3142 show_backtrace(1);
3143 }
3144 var_bucket = p0;
3145 var_color = p1;
3146 {
3147 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:BucketsColorer[Object, Object]> */
3148 var4 = self->attrs[COLOR_coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
3149 if (unlikely(var4 == NULL)) {
3150 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
3151 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 280);
3152 show_backtrace(1);
3153 }
3154 var2 = var4;
3155 RET_LABEL3:(void)0;
3156 }
3157 }
3158 {
3159 var5 = abstract_collection__MapRead__has_key(var2, var_bucket);
3160 }
3161 if (var5){
3162 {
3163 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:BucketsColorer[Object, Object]> */
3164 var8 = self->attrs[COLOR_coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
3165 if (unlikely(var8 == NULL)) {
3166 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
3167 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 280);
3168 show_backtrace(1);
3169 }
3170 var6 = var8;
3171 RET_LABEL7:(void)0;
3172 }
3173 }
3174 {
3175 var9 = hash_collection__HashMap___91d_93d(var6, var_bucket);
3176 }
3177 var_ = var9;
3178 {
3179 var10 = ((val* (*)(val*))(var_->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_) /* iterator on <var_:Set[Object]>*/;
3180 }
3181 var_11 = var10;
3182 for(;;) {
3183 {
3184 var12 = ((short int (*)(val*))(var_11->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_11) /* is_ok on <var_11:Iterator[Object]>*/;
3185 }
3186 if (var12){
3187 {
3188 var13 = ((val* (*)(val*))(var_11->class->vft[COLOR_abstract_collection__Iterator__item]))(var_11) /* item on <var_11:Iterator[Object]>*/;
3189 }
3190 var_other = var13;
3191 {
3192 { /* Inline coloring#BucketsColorer#colors (self) on <self:BucketsColorer[Object, Object]> */
3193 var17 = self->attrs[COLOR_coloring__BucketsColorer___colors].val; /* _colors on <self:BucketsColorer[Object, Object]> */
3194 if (unlikely(var17 == NULL)) {
3195 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
3196 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 279);
3197 show_backtrace(1);
3198 }
3199 var15 = var17;
3200 RET_LABEL16:(void)0;
3201 }
3202 }
3203 {
3204 var18 = abstract_collection__MapRead__has_key(var15, var_other);
3205 }
3206 var_19 = var18;
3207 if (var18){
3208 {
3209 { /* Inline coloring#BucketsColorer#colors (self) on <self:BucketsColorer[Object, Object]> */
3210 var22 = self->attrs[COLOR_coloring__BucketsColorer___colors].val; /* _colors on <self:BucketsColorer[Object, Object]> */
3211 if (unlikely(var22 == NULL)) {
3212 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
3213 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 279);
3214 show_backtrace(1);
3215 }
3216 var20 = var22;
3217 RET_LABEL21:(void)0;
3218 }
3219 }
3220 {
3221 var23 = hash_collection__HashMap___91d_93d(var20, var_other);
3222 }
3223 {
3224 { /* Inline kernel#Int#== (var23,var_color) on <var23:nullable Object(Int)> */
3225 var27 = (var23 != NULL) && (var23->class == &class_kernel__Int);
3226 if (var27) {
3227 var28 = ((struct instance_kernel__Int*)var23)->value; /* autounbox from nullable Object to Int */;
3228 var27 = (var28 == var_color);
3229 }
3230 var25 = var27;
3231 goto RET_LABEL26;
3232 RET_LABEL26:(void)0;
3233 }
3234 var24 = var25;
3235 }
3236 var14 = var24;
3237 } else {
3238 var14 = var_19;
3239 }
3240 if (var14){
3241 var29 = 0;
3242 var = var29;
3243 goto RET_LABEL;
3244 } else {
3245 }
3246 {
3247 ((void (*)(val*))(var_11->class->vft[COLOR_abstract_collection__Iterator__next]))(var_11) /* next on <var_11:Iterator[Object]>*/;
3248 }
3249 } else {
3250 goto BREAK_label;
3251 }
3252 }
3253 BREAK_label: (void)0;
3254 {
3255 { /* Inline abstract_collection#Iterator#finish (var_11) on <var_11:Iterator[Object]> */
3256 RET_LABEL30:(void)0;
3257 }
3258 }
3259 } else {
3260 }
3261 var31 = 1;
3262 var = var31;
3263 goto RET_LABEL;
3264 RET_LABEL:;
3265 return var;
3266 }
3267 /* method coloring#BucketsColorer#is_color_free for (self: Object, Object, Int): Bool */
3268 short int VIRTUAL_coloring__BucketsColorer__is_color_free(val* self, val* p0, long p1) {
3269 short int var /* : Bool */;
3270 short int var1 /* : Bool */;
3271 var1 = coloring__BucketsColorer__is_color_free(self, p0, p1);
3272 var = var1;
3273 RET_LABEL:;
3274 return var;
3275 }
3276 /* method coloring#BucketsColorer#compute_conflicts for (self: BucketsColorer[Object, Object], Map[Object, Set[Object]]) */
3277 void coloring__BucketsColorer__compute_conflicts(val* self, val* p0) {
3278 short int var /* : Bool */;
3279 int cltype;
3280 int idtype;
3281 const struct type* type_struct;
3282 const char* var_class_name;
3283 val* var_buckets /* var buckets: Map[Object, Set[Object]] */;
3284 val* var1 /* : HashMap[Object, Set[Object]] */;
3285 val* var3 /* : HashMap[Object, Set[Object]] */;
3286 val* var_ /* var : Map[Object, Set[Object]] */;
3287 val* var4 /* : MapIterator[Object, nullable Object] */;
3288 val* var_5 /* var : MapIterator[Object, Set[Object]] */;
3289 short int var6 /* : Bool */;
3290 val* var7 /* : Object */;
3291 val* var_holder /* var holder: Object */;
3292 val* var8 /* : nullable Object */;
3293 val* var_hbuckets /* var hbuckets: Set[Object] */;
3294 val* var_9 /* var : Set[Object] */;
3295 val* var10 /* : Iterator[nullable Object] */;
3296 val* var_11 /* var : Iterator[Object] */;
3297 short int var12 /* : Bool */;
3298 val* var13 /* : nullable Object */;
3299 val* var_bucket /* var bucket: Object */;
3300 val* var14 /* : HashMap[Object, Set[Object]] */;
3301 val* var16 /* : HashMap[Object, Set[Object]] */;
3302 short int var17 /* : Bool */;
3303 short int var18 /* : Bool */;
3304 val* var19 /* : HashMap[Object, Set[Object]] */;
3305 val* var21 /* : HashMap[Object, Set[Object]] */;
3306 val* var22 /* : HashSet[Object] */;
3307 val* var_23 /* var : Set[Object] */;
3308 val* var24 /* : Iterator[nullable Object] */;
3309 val* var_25 /* var : Iterator[Object] */;
3310 short int var26 /* : Bool */;
3311 val* var27 /* : nullable Object */;
3312 val* var_obucket /* var obucket: Object */;
3313 short int var28 /* : Bool */;
3314 short int var29 /* : Bool */;
3315 val* var30 /* : HashMap[Object, Set[Object]] */;
3316 val* var32 /* : HashMap[Object, Set[Object]] */;
3317 short int var33 /* : Bool */;
3318 short int var34 /* : Bool */;
3319 val* var35 /* : HashMap[Object, Set[Object]] */;
3320 val* var37 /* : HashMap[Object, Set[Object]] */;
3321 val* var38 /* : HashSet[Object] */;
3322 val* var39 /* : HashMap[Object, Set[Object]] */;
3323 val* var41 /* : HashMap[Object, Set[Object]] */;
3324 val* var42 /* : nullable Object */;
3325 val* var43 /* : HashMap[Object, Set[Object]] */;
3326 val* var45 /* : HashMap[Object, Set[Object]] */;
3327 val* var46 /* : nullable Object */;
3328 /* Covariant cast for argument 0 (buckets) <p0:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
3329 /* <p0:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
3330 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Mapcoloring__BucketsColorer_FT0abstract_collection__Setcoloring__BucketsColorer_FT1];
3331 cltype = type_struct->color;
3332 idtype = type_struct->id;
3333 if(cltype >= p0->type->table_size) {
3334 var = 0;
3335 } else {
3336 var = p0->type->type_table[cltype] == idtype;
3337 }
3338 if (unlikely(!var)) {
3339 var_class_name = p0 == NULL ? "null" : p0->type->name;
3340 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[H, Set[E]]", var_class_name);
3341 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 309);
3342 show_backtrace(1);
3343 }
3344 var_buckets = p0;
3345 {
3346 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:BucketsColorer[Object, Object]> */
3347 var3 = self->attrs[COLOR_coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
3348 if (unlikely(var3 == NULL)) {
3349 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
3350 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 280);
3351 show_backtrace(1);
3352 }
3353 var1 = var3;
3354 RET_LABEL2:(void)0;
3355 }
3356 }
3357 {
3358 hash_collection__HashMap__clear(var1); /* Direct call hash_collection#HashMap#clear on <var1:HashMap[Object, Set[Object]]>*/
3359 }
3360 var_ = var_buckets;
3361 {
3362 var4 = ((val* (*)(val*))(var_->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var_) /* iterator on <var_:Map[Object, Set[Object]]>*/;
3363 }
3364 var_5 = var4;
3365 for(;;) {
3366 {
3367 var6 = ((short int (*)(val*))(var_5->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var_5) /* is_ok on <var_5:MapIterator[Object, Set[Object]]>*/;
3368 }
3369 if (var6){
3370 {
3371 var7 = ((val* (*)(val*))(var_5->class->vft[COLOR_abstract_collection__MapIterator__key]))(var_5) /* key on <var_5:MapIterator[Object, Set[Object]]>*/;
3372 }
3373 var_holder = var7;
3374 {
3375 var8 = ((val* (*)(val*))(var_5->class->vft[COLOR_abstract_collection__MapIterator__item]))(var_5) /* item on <var_5:MapIterator[Object, Set[Object]]>*/;
3376 }
3377 var_hbuckets = var8;
3378 var_9 = var_hbuckets;
3379 {
3380 var10 = ((val* (*)(val*))(var_9->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_9) /* iterator on <var_9:Set[Object]>*/;
3381 }
3382 var_11 = var10;
3383 for(;;) {
3384 {
3385 var12 = ((short int (*)(val*))(var_11->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_11) /* is_ok on <var_11:Iterator[Object]>*/;
3386 }
3387 if (var12){
3388 {
3389 var13 = ((val* (*)(val*))(var_11->class->vft[COLOR_abstract_collection__Iterator__item]))(var_11) /* item on <var_11:Iterator[Object]>*/;
3390 }
3391 var_bucket = var13;
3392 {
3393 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:BucketsColorer[Object, Object]> */
3394 var16 = self->attrs[COLOR_coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
3395 if (unlikely(var16 == NULL)) {
3396 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
3397 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 280);
3398 show_backtrace(1);
3399 }
3400 var14 = var16;
3401 RET_LABEL15:(void)0;
3402 }
3403 }
3404 {
3405 var17 = abstract_collection__MapRead__has_key(var14, var_bucket);
3406 }
3407 var18 = !var17;
3408 if (var18){
3409 {
3410 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:BucketsColorer[Object, Object]> */
3411 var21 = self->attrs[COLOR_coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
3412 if (unlikely(var21 == NULL)) {
3413 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
3414 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 280);
3415 show_backtrace(1);
3416 }
3417 var19 = var21;
3418 RET_LABEL20:(void)0;
3419 }
3420 }
3421 var22 = NEW_hash_collection__HashSet(self->type->resolution_table->types[COLOR_hash_collection__HashSetcoloring__BucketsColorer_FT1]);
3422 {
3423 ((void (*)(val*))(var22->class->vft[COLOR_kernel__Object__init]))(var22) /* init on <var22:HashSet[Object]>*/;
3424 }
3425 {
3426 hash_collection__HashMap___91d_93d_61d(var19, var_bucket, var22); /* Direct call hash_collection#HashMap#[]= on <var19:HashMap[Object, Set[Object]]>*/
3427 }
3428 } else {
3429 }
3430 var_23 = var_hbuckets;
3431 {
3432 var24 = ((val* (*)(val*))(var_23->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_23) /* iterator on <var_23:Set[Object]>*/;
3433 }
3434 var_25 = var24;
3435 for(;;) {
3436 {
3437 var26 = ((short int (*)(val*))(var_25->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_25) /* is_ok on <var_25:Iterator[Object]>*/;
3438 }
3439 if (var26){
3440 {
3441 var27 = ((val* (*)(val*))(var_25->class->vft[COLOR_abstract_collection__Iterator__item]))(var_25) /* item on <var_25:Iterator[Object]>*/;
3442 }
3443 var_obucket = var27;
3444 {
3445 var29 = ((short int (*)(val*, val*))(var_obucket->class->vft[COLOR_kernel__Object___61d_61d]))(var_obucket, var_bucket) /* == on <var_obucket:Object>*/;
3446 var28 = var29;
3447 }
3448 if (var28){
3449 goto BREAK_label;
3450 } else {
3451 }
3452 {
3453 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:BucketsColorer[Object, Object]> */
3454 var32 = self->attrs[COLOR_coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
3455 if (unlikely(var32 == NULL)) {
3456 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
3457 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 280);
3458 show_backtrace(1);
3459 }
3460 var30 = var32;
3461 RET_LABEL31:(void)0;
3462 }
3463 }
3464 {
3465 var33 = abstract_collection__MapRead__has_key(var30, var_obucket);
3466 }
3467 var34 = !var33;
3468 if (var34){
3469 {
3470 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:BucketsColorer[Object, Object]> */
3471 var37 = self->attrs[COLOR_coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
3472 if (unlikely(var37 == NULL)) {
3473 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
3474 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 280);
3475 show_backtrace(1);
3476 }
3477 var35 = var37;
3478 RET_LABEL36:(void)0;
3479 }
3480 }
3481 var38 = NEW_hash_collection__HashSet(self->type->resolution_table->types[COLOR_hash_collection__HashSetcoloring__BucketsColorer_FT1]);
3482 {
3483 ((void (*)(val*))(var38->class->vft[COLOR_kernel__Object__init]))(var38) /* init on <var38:HashSet[Object]>*/;
3484 }
3485 {
3486 hash_collection__HashMap___91d_93d_61d(var35, var_obucket, var38); /* Direct call hash_collection#HashMap#[]= on <var35:HashMap[Object, Set[Object]]>*/
3487 }
3488 } else {
3489 }
3490 {
3491 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:BucketsColorer[Object, Object]> */
3492 var41 = self->attrs[COLOR_coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
3493 if (unlikely(var41 == NULL)) {
3494 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
3495 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 280);
3496 show_backtrace(1);
3497 }
3498 var39 = var41;
3499 RET_LABEL40:(void)0;
3500 }
3501 }
3502 {
3503 var42 = hash_collection__HashMap___91d_93d(var39, var_bucket);
3504 }
3505 {
3506 ((void (*)(val*, val*))(var42->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var42, var_obucket) /* add on <var42:nullable Object(Set[Object])>*/;
3507 }
3508 {
3509 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:BucketsColorer[Object, Object]> */
3510 var45 = self->attrs[COLOR_coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
3511 if (unlikely(var45 == NULL)) {
3512 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
3513 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 280);
3514 show_backtrace(1);
3515 }
3516 var43 = var45;
3517 RET_LABEL44:(void)0;
3518 }
3519 }
3520 {
3521 var46 = hash_collection__HashMap___91d_93d(var43, var_obucket);
3522 }
3523 {
3524 ((void (*)(val*, val*))(var46->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var46, var_bucket) /* add on <var46:nullable Object(Set[Object])>*/;
3525 }
3526 BREAK_label: (void)0;
3527 {
3528 ((void (*)(val*))(var_25->class->vft[COLOR_abstract_collection__Iterator__next]))(var_25) /* next on <var_25:Iterator[Object]>*/;
3529 }
3530 } else {
3531 goto BREAK_label47;
3532 }
3533 }
3534 BREAK_label47: (void)0;
3535 {
3536 { /* Inline abstract_collection#Iterator#finish (var_25) on <var_25:Iterator[Object]> */
3537 RET_LABEL48:(void)0;
3538 }
3539 }
3540 {
3541 ((void (*)(val*))(var_11->class->vft[COLOR_abstract_collection__Iterator__next]))(var_11) /* next on <var_11:Iterator[Object]>*/;
3542 }
3543 } else {
3544 goto BREAK_label49;
3545 }
3546 }
3547 BREAK_label49: (void)0;
3548 {
3549 { /* Inline abstract_collection#Iterator#finish (var_11) on <var_11:Iterator[Object]> */
3550 RET_LABEL50:(void)0;
3551 }
3552 }
3553 {
3554 ((void (*)(val*))(var_5->class->vft[COLOR_abstract_collection__MapIterator__next]))(var_5) /* next on <var_5:MapIterator[Object, Set[Object]]>*/;
3555 }
3556 } else {
3557 goto BREAK_label51;
3558 }
3559 }
3560 BREAK_label51: (void)0;
3561 {
3562 { /* Inline abstract_collection#MapIterator#finish (var_5) on <var_5:MapIterator[Object, Set[Object]]> */
3563 RET_LABEL52:(void)0;
3564 }
3565 }
3566 RET_LABEL:;
3567 }
3568 /* method coloring#BucketsColorer#compute_conflicts for (self: Object, Map[Object, Set[Object]]) */
3569 void VIRTUAL_coloring__BucketsColorer__compute_conflicts(val* self, val* p0) {
3570 coloring__BucketsColorer__compute_conflicts(self, p0); /* Direct call coloring#BucketsColorer#compute_conflicts on <self:Object(BucketsColorer[Object, Object])>*/
3571 RET_LABEL:;
3572 }
3573 /* method coloring#POSetBucketsColorer#colors for (self: POSetBucketsColorer[Object, Object]): HashMap[Object, Int] */
3574 val* coloring__POSetBucketsColorer__colors(val* self) {
3575 val* var /* : HashMap[Object, Int] */;
3576 val* var1 /* : HashMap[Object, Int] */;
3577 var1 = self->attrs[COLOR_coloring__POSetBucketsColorer___colors].val; /* _colors on <self:POSetBucketsColorer[Object, Object]> */
3578 if (unlikely(var1 == NULL)) {
3579 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
3580 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 330);
3581 show_backtrace(1);
3582 }
3583 var = var1;
3584 RET_LABEL:;
3585 return var;
3586 }
3587 /* method coloring#POSetBucketsColorer#colors for (self: Object): HashMap[Object, Int] */
3588 val* VIRTUAL_coloring__POSetBucketsColorer__colors(val* self) {
3589 val* var /* : HashMap[Object, Int] */;
3590 val* var1 /* : HashMap[Object, Int] */;
3591 val* var3 /* : HashMap[Object, Int] */;
3592 { /* Inline coloring#POSetBucketsColorer#colors (self) on <self:Object(POSetBucketsColorer[Object, Object])> */
3593 var3 = self->attrs[COLOR_coloring__POSetBucketsColorer___colors].val; /* _colors on <self:Object(POSetBucketsColorer[Object, Object])> */
3594 if (unlikely(var3 == NULL)) {
3595 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
3596 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 330);
3597 show_backtrace(1);
3598 }
3599 var1 = var3;
3600 RET_LABEL2:(void)0;
3601 }
3602 var = var1;
3603 RET_LABEL:;
3604 return var;
3605 }
3606 /* method coloring#POSetBucketsColorer#poset for (self: POSetBucketsColorer[Object, Object]): POSet[Object] */
3607 val* coloring__POSetBucketsColorer__poset(val* self) {
3608 val* var /* : POSet[Object] */;
3609 val* var1 /* : POSet[Object] */;
3610 var1 = self->attrs[COLOR_coloring__POSetBucketsColorer___poset].val; /* _poset on <self:POSetBucketsColorer[Object, Object]> */
3611 if (unlikely(var1 == NULL)) {
3612 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
3613 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 331);
3614 show_backtrace(1);
3615 }
3616 var = var1;
3617 RET_LABEL:;
3618 return var;
3619 }
3620 /* method coloring#POSetBucketsColorer#poset for (self: Object): POSet[Object] */
3621 val* VIRTUAL_coloring__POSetBucketsColorer__poset(val* self) {
3622 val* var /* : POSet[Object] */;
3623 val* var1 /* : POSet[Object] */;
3624 val* var3 /* : POSet[Object] */;
3625 { /* Inline coloring#POSetBucketsColorer#poset (self) on <self:Object(POSetBucketsColorer[Object, Object])> */
3626 var3 = self->attrs[COLOR_coloring__POSetBucketsColorer___poset].val; /* _poset on <self:Object(POSetBucketsColorer[Object, Object])> */
3627 if (unlikely(var3 == NULL)) {
3628 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
3629 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 331);
3630 show_backtrace(1);
3631 }
3632 var1 = var3;
3633 RET_LABEL2:(void)0;
3634 }
3635 var = var1;
3636 RET_LABEL:;
3637 return var;
3638 }
3639 /* method coloring#POSetBucketsColorer#poset= for (self: POSetBucketsColorer[Object, Object], POSet[Object]) */
3640 void coloring__POSetBucketsColorer__poset_61d(val* self, val* p0) {
3641 short int var /* : Bool */;
3642 int cltype;
3643 int idtype;
3644 const struct type* type_struct;
3645 const char* var_class_name;
3646 /* Covariant cast for argument 0 (poset) <p0:POSet[Object]> isa POSet[H] */
3647 /* <p0:POSet[Object]> isa POSet[H] */
3648 type_struct = self->type->resolution_table->types[COLOR_poset__POSetcoloring__POSetBucketsColorer_FT0];
3649 cltype = type_struct->color;
3650 idtype = type_struct->id;
3651 if(cltype >= p0->type->table_size) {
3652 var = 0;
3653 } else {
3654 var = p0->type->type_table[cltype] == idtype;
3655 }
3656 if (unlikely(!var)) {
3657 var_class_name = p0 == NULL ? "null" : p0->type->name;
3658 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[H]", var_class_name);
3659 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 331);
3660 show_backtrace(1);
3661 }
3662 self->attrs[COLOR_coloring__POSetBucketsColorer___poset].val = p0; /* _poset on <self:POSetBucketsColorer[Object, Object]> */
3663 RET_LABEL:;
3664 }
3665 /* method coloring#POSetBucketsColorer#poset= for (self: Object, POSet[Object]) */
3666 void VIRTUAL_coloring__POSetBucketsColorer__poset_61d(val* self, val* p0) {
3667 short int var /* : Bool */;
3668 int cltype;
3669 int idtype;
3670 const struct type* type_struct;
3671 const char* var_class_name;
3672 { /* Inline coloring#POSetBucketsColorer#poset= (self,p0) on <self:Object(POSetBucketsColorer[Object, Object])> */
3673 /* Covariant cast for argument 0 (poset) <p0:POSet[Object]> isa POSet[H] */
3674 /* <p0:POSet[Object]> isa POSet[H] */
3675 type_struct = self->type->resolution_table->types[COLOR_poset__POSetcoloring__POSetBucketsColorer_FT0];
3676 cltype = type_struct->color;
3677 idtype = type_struct->id;
3678 if(cltype >= p0->type->table_size) {
3679 var = 0;
3680 } else {
3681 var = p0->type->type_table[cltype] == idtype;
3682 }
3683 if (unlikely(!var)) {
3684 var_class_name = p0 == NULL ? "null" : p0->type->name;
3685 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[H]", var_class_name);
3686 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 331);
3687 show_backtrace(1);
3688 }
3689 self->attrs[COLOR_coloring__POSetBucketsColorer___poset].val = p0; /* _poset on <self:Object(POSetBucketsColorer[Object, Object])> */
3690 RET_LABEL1:(void)0;
3691 }
3692 RET_LABEL:;
3693 }
3694 /* method coloring#POSetBucketsColorer#conflicts for (self: POSetBucketsColorer[Object, Object]): Map[Object, Set[Object]] */
3695 val* coloring__POSetBucketsColorer__conflicts(val* self) {
3696 val* var /* : Map[Object, Set[Object]] */;
3697 val* var1 /* : Map[Object, Set[Object]] */;
3698 var1 = self->attrs[COLOR_coloring__POSetBucketsColorer___conflicts].val; /* _conflicts on <self:POSetBucketsColorer[Object, Object]> */
3699 if (unlikely(var1 == NULL)) {
3700 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
3701 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 332);
3702 show_backtrace(1);
3703 }
3704 var = var1;
3705 RET_LABEL:;
3706 return var;
3707 }
3708 /* method coloring#POSetBucketsColorer#conflicts for (self: Object): Map[Object, Set[Object]] */
3709 val* VIRTUAL_coloring__POSetBucketsColorer__conflicts(val* self) {
3710 val* var /* : Map[Object, Set[Object]] */;
3711 val* var1 /* : Map[Object, Set[Object]] */;
3712 val* var3 /* : Map[Object, Set[Object]] */;
3713 { /* Inline coloring#POSetBucketsColorer#conflicts (self) on <self:Object(POSetBucketsColorer[Object, Object])> */
3714 var3 = self->attrs[COLOR_coloring__POSetBucketsColorer___conflicts].val; /* _conflicts on <self:Object(POSetBucketsColorer[Object, Object])> */
3715 if (unlikely(var3 == NULL)) {
3716 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
3717 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 332);
3718 show_backtrace(1);
3719 }
3720 var1 = var3;
3721 RET_LABEL2:(void)0;
3722 }
3723 var = var1;
3724 RET_LABEL:;
3725 return var;
3726 }
3727 /* method coloring#POSetBucketsColorer#conflicts= for (self: POSetBucketsColorer[Object, Object], Map[Object, Set[Object]]) */
3728 void coloring__POSetBucketsColorer__conflicts_61d(val* self, val* p0) {
3729 short int var /* : Bool */;
3730 int cltype;
3731 int idtype;
3732 const struct type* type_struct;
3733 const char* var_class_name;
3734 /* Covariant cast for argument 0 (conflicts) <p0:Map[Object, Set[Object]]> isa Map[H, Set[H]] */
3735 /* <p0:Map[Object, Set[Object]]> isa Map[H, Set[H]] */
3736 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Mapcoloring__POSetBucketsColorer_FT0abstract_collection__Setcoloring__POSetBucketsColorer_FT0];
3737 cltype = type_struct->color;
3738 idtype = type_struct->id;
3739 if(cltype >= p0->type->table_size) {
3740 var = 0;
3741 } else {
3742 var = p0->type->type_table[cltype] == idtype;
3743 }
3744 if (unlikely(!var)) {
3745 var_class_name = p0 == NULL ? "null" : p0->type->name;
3746 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[H, Set[H]]", var_class_name);
3747 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 332);
3748 show_backtrace(1);
3749 }
3750 self->attrs[COLOR_coloring__POSetBucketsColorer___conflicts].val = p0; /* _conflicts on <self:POSetBucketsColorer[Object, Object]> */
3751 RET_LABEL:;
3752 }
3753 /* method coloring#POSetBucketsColorer#conflicts= for (self: Object, Map[Object, Set[Object]]) */
3754 void VIRTUAL_coloring__POSetBucketsColorer__conflicts_61d(val* self, val* p0) {
3755 short int var /* : Bool */;
3756 int cltype;
3757 int idtype;
3758 const struct type* type_struct;
3759 const char* var_class_name;
3760 { /* Inline coloring#POSetBucketsColorer#conflicts= (self,p0) on <self:Object(POSetBucketsColorer[Object, Object])> */
3761 /* Covariant cast for argument 0 (conflicts) <p0:Map[Object, Set[Object]]> isa Map[H, Set[H]] */
3762 /* <p0:Map[Object, Set[Object]]> isa Map[H, Set[H]] */
3763 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Mapcoloring__POSetBucketsColorer_FT0abstract_collection__Setcoloring__POSetBucketsColorer_FT0];
3764 cltype = type_struct->color;
3765 idtype = type_struct->id;
3766 if(cltype >= p0->type->table_size) {
3767 var = 0;
3768 } else {
3769 var = p0->type->type_table[cltype] == idtype;
3770 }
3771 if (unlikely(!var)) {
3772 var_class_name = p0 == NULL ? "null" : p0->type->name;
3773 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[H, Set[H]]", var_class_name);
3774 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 332);
3775 show_backtrace(1);
3776 }
3777 self->attrs[COLOR_coloring__POSetBucketsColorer___conflicts].val = p0; /* _conflicts on <self:Object(POSetBucketsColorer[Object, Object])> */
3778 RET_LABEL1:(void)0;
3779 }
3780 RET_LABEL:;
3781 }
3782 /* method coloring#POSetBucketsColorer#init for (self: POSetBucketsColorer[Object, Object], POSet[Object], Map[Object, Set[Object]]) */
3783 void coloring__POSetBucketsColorer__init(val* self, val* p0, val* p1) {
3784 short int var /* : Bool */;
3785 int cltype;
3786 int idtype;
3787 const struct type* type_struct;
3788 const char* var_class_name;
3789 short int var1 /* : Bool */;
3790 int cltype2;
3791 int idtype3;
3792 const struct type* type_struct4;
3793 const char* var_class_name5;
3794 val* var_poset /* var poset: POSet[Object] */;
3795 val* var_conflicts /* var conflicts: Map[Object, Set[Object]] */;
3796 short int var7 /* : Bool */;
3797 int cltype8;
3798 int idtype9;
3799 const struct type* type_struct10;
3800 const char* var_class_name11;
3801 short int var13 /* : Bool */;
3802 int cltype14;
3803 int idtype15;
3804 const struct type* type_struct16;
3805 const char* var_class_name17;
3806 /* Covariant cast for argument 0 (poset) <p0:POSet[Object]> isa POSet[H] */
3807 /* <p0:POSet[Object]> isa POSet[H] */
3808 type_struct = self->type->resolution_table->types[COLOR_poset__POSetcoloring__POSetBucketsColorer_FT0];
3809 cltype = type_struct->color;
3810 idtype = type_struct->id;
3811 if(cltype >= p0->type->table_size) {
3812 var = 0;
3813 } else {
3814 var = p0->type->type_table[cltype] == idtype;
3815 }
3816 if (unlikely(!var)) {
3817 var_class_name = p0 == NULL ? "null" : p0->type->name;
3818 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[H]", var_class_name);
3819 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 334);
3820 show_backtrace(1);
3821 }
3822 /* Covariant cast for argument 1 (conflicts) <p1:Map[Object, Set[Object]]> isa Map[H, Set[H]] */
3823 /* <p1:Map[Object, Set[Object]]> isa Map[H, Set[H]] */
3824 type_struct4 = self->type->resolution_table->types[COLOR_abstract_collection__Mapcoloring__POSetBucketsColorer_FT0abstract_collection__Setcoloring__POSetBucketsColorer_FT0];
3825 cltype2 = type_struct4->color;
3826 idtype3 = type_struct4->id;
3827 if(cltype2 >= p1->type->table_size) {
3828 var1 = 0;
3829 } else {
3830 var1 = p1->type->type_table[cltype2] == idtype3;
3831 }
3832 if (unlikely(!var1)) {
3833 var_class_name5 = p1 == NULL ? "null" : p1->type->name;
3834 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[H, Set[H]]", var_class_name5);
3835 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 334);
3836 show_backtrace(1);
3837 }
3838 var_poset = p0;
3839 var_conflicts = p1;
3840 {
3841 { /* Inline coloring#POSetBucketsColorer#poset= (self,var_poset) on <self:POSetBucketsColorer[Object, Object]> */
3842 /* Covariant cast for argument 0 (poset) <var_poset:POSet[Object]> isa POSet[H] */
3843 /* <var_poset:POSet[Object]> isa POSet[H] */
3844 type_struct10 = self->type->resolution_table->types[COLOR_poset__POSetcoloring__POSetBucketsColorer_FT0];
3845 cltype8 = type_struct10->color;
3846 idtype9 = type_struct10->id;
3847 if(cltype8 >= var_poset->type->table_size) {
3848 var7 = 0;
3849 } else {
3850 var7 = var_poset->type->type_table[cltype8] == idtype9;
3851 }
3852 if (unlikely(!var7)) {
3853 var_class_name11 = var_poset == NULL ? "null" : var_poset->type->name;
3854 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[H]", var_class_name11);
3855 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 331);
3856 show_backtrace(1);
3857 }
3858 self->attrs[COLOR_coloring__POSetBucketsColorer___poset].val = var_poset; /* _poset on <self:POSetBucketsColorer[Object, Object]> */
3859 RET_LABEL6:(void)0;
3860 }
3861 }
3862 {
3863 { /* Inline coloring#POSetBucketsColorer#conflicts= (self,var_conflicts) on <self:POSetBucketsColorer[Object, Object]> */
3864 /* Covariant cast for argument 0 (conflicts) <var_conflicts:Map[Object, Set[Object]]> isa Map[H, Set[H]] */
3865 /* <var_conflicts:Map[Object, Set[Object]]> isa Map[H, Set[H]] */
3866 type_struct16 = self->type->resolution_table->types[COLOR_abstract_collection__Mapcoloring__POSetBucketsColorer_FT0abstract_collection__Setcoloring__POSetBucketsColorer_FT0];
3867 cltype14 = type_struct16->color;
3868 idtype15 = type_struct16->id;
3869 if(cltype14 >= var_conflicts->type->table_size) {
3870 var13 = 0;
3871 } else {
3872 var13 = var_conflicts->type->type_table[cltype14] == idtype15;
3873 }
3874 if (unlikely(!var13)) {
3875 var_class_name17 = var_conflicts == NULL ? "null" : var_conflicts->type->name;
3876 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[H, Set[H]]", var_class_name17);
3877 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 332);
3878 show_backtrace(1);
3879 }
3880 self->attrs[COLOR_coloring__POSetBucketsColorer___conflicts].val = var_conflicts; /* _conflicts on <self:POSetBucketsColorer[Object, Object]> */
3881 RET_LABEL12:(void)0;
3882 }
3883 }
3884 RET_LABEL:;
3885 }
3886 /* method coloring#POSetBucketsColorer#init for (self: Object, POSet[Object], Map[Object, Set[Object]]) */
3887 void VIRTUAL_coloring__POSetBucketsColorer__init(val* self, val* p0, val* p1) {
3888 coloring__POSetBucketsColorer__init(self, p0, p1); /* Direct call coloring#POSetBucketsColorer#init on <self:Object(POSetBucketsColorer[Object, Object])>*/
3889 RET_LABEL:;
3890 }
3891 /* method coloring#POSetBucketsColorer#colorize for (self: POSetBucketsColorer[Object, Object], Map[Object, Set[Object]]): Map[Object, Int] */
3892 val* coloring__POSetBucketsColorer__colorize(val* self, val* p0) {
3893 val* var /* : Map[Object, Int] */;
3894 short int var1 /* : Bool */;
3895 int cltype;
3896 int idtype;
3897 const struct type* type_struct;
3898 const char* var_class_name;
3899 val* var_buckets /* var buckets: Map[Object, Set[Object]] */;
3900 val* var2 /* : HashMap[Object, Int] */;
3901 val* var4 /* : HashMap[Object, Int] */;
3902 val* var5 /* : POSet[Object] */;
3903 val* var7 /* : POSet[Object] */;
3904 val* var8 /* : Collection[Object] */;
3905 val* var9 /* : Array[Object] */;
3906 val* var_ /* var : Array[Object] */;
3907 val* var10 /* : ArrayIterator[nullable Object] */;
3908 val* var_11 /* var : ArrayIterator[Object] */;
3909 short int var12 /* : Bool */;
3910 val* var13 /* : nullable Object */;
3911 val* var_h /* var h: Object */;
3912 val* var14 /* : POSet[Object] */;
3913 val* var16 /* : POSet[Object] */;
3914 val* var17 /* : POSetElement[Object] */;
3915 val* var18 /* : Collection[Object] */;
3916 long var19 /* : Int */;
3917 long var_color /* var color: Int */;
3918 val* var20 /* : nullable Object */;
3919 val* var_21 /* var : Set[Object] */;
3920 val* var22 /* : Iterator[nullable Object] */;
3921 val* var_23 /* var : Iterator[Object] */;
3922 short int var24 /* : Bool */;
3923 val* var25 /* : nullable Object */;
3924 val* var_bucket /* var bucket: Object */;
3925 val* var26 /* : HashMap[Object, Int] */;
3926 val* var28 /* : HashMap[Object, Int] */;
3927 short int var29 /* : Bool */;
3928 short int var30 /* : Bool */;
3929 short int var31 /* : Bool */;
3930 long var32 /* : Int */;
3931 long var33 /* : Int */;
3932 short int var35 /* : Bool */;
3933 int cltype36;
3934 int idtype37;
3935 const char* var_class_name38;
3936 long var39 /* : Int */;
3937 val* var41 /* : HashMap[Object, Int] */;
3938 val* var43 /* : HashMap[Object, Int] */;
3939 val* var44 /* : nullable Object */;
3940 long var45 /* : Int */;
3941 long var46 /* : Int */;
3942 short int var48 /* : Bool */;
3943 int cltype49;
3944 int idtype50;
3945 const char* var_class_name51;
3946 long var52 /* : Int */;
3947 val* var57 /* : HashMap[Object, Int] */;
3948 val* var59 /* : HashMap[Object, Int] */;
3949 /* Covariant cast for argument 0 (buckets) <p0:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
3950 /* <p0:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
3951 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Mapcoloring__POSetBucketsColorer_FT0abstract_collection__Setcoloring__POSetBucketsColorer_FT1];
3952 cltype = type_struct->color;
3953 idtype = type_struct->id;
3954 if(cltype >= p0->type->table_size) {
3955 var1 = 0;
3956 } else {
3957 var1 = p0->type->type_table[cltype] == idtype;
3958 }
3959 if (unlikely(!var1)) {
3960 var_class_name = p0 == NULL ? "null" : p0->type->name;
3961 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[H, Set[E]]", var_class_name);
3962 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 339);
3963 show_backtrace(1);
3964 }
3965 var_buckets = p0;
3966 {
3967 { /* Inline coloring#POSetBucketsColorer#colors (self) on <self:POSetBucketsColorer[Object, Object]> */
3968 var4 = self->attrs[COLOR_coloring__POSetBucketsColorer___colors].val; /* _colors on <self:POSetBucketsColorer[Object, Object]> */
3969 if (unlikely(var4 == NULL)) {
3970 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
3971 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 330);
3972 show_backtrace(1);
3973 }
3974 var2 = var4;
3975 RET_LABEL3:(void)0;
3976 }
3977 }
3978 {
3979 hash_collection__HashMap__clear(var2); /* Direct call hash_collection#HashMap#clear on <var2:HashMap[Object, Int]>*/
3980 }
3981 {
3982 { /* Inline coloring#POSetBucketsColorer#poset (self) on <self:POSetBucketsColorer[Object, Object]> */
3983 var7 = self->attrs[COLOR_coloring__POSetBucketsColorer___poset].val; /* _poset on <self:POSetBucketsColorer[Object, Object]> */
3984 if (unlikely(var7 == NULL)) {
3985 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
3986 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 331);
3987 show_backtrace(1);
3988 }
3989 var5 = var7;
3990 RET_LABEL6:(void)0;
3991 }
3992 }
3993 {
3994 var8 = ((val* (*)(val*))(var_buckets->class->vft[COLOR_abstract_collection__MapRead__keys]))(var_buckets) /* keys on <var_buckets:Map[Object, Set[Object]]>*/;
3995 }
3996 {
3997 var9 = poset__POSet__linearize(var5, var8);
3998 }
3999 var_ = var9;
4000 {
4001 var10 = array__AbstractArrayRead__iterator(var_);
4002 }
4003 var_11 = var10;
4004 for(;;) {
4005 {
4006 var12 = array__ArrayIterator__is_ok(var_11);
4007 }
4008 if (var12){
4009 {
4010 var13 = array__ArrayIterator__item(var_11);
4011 }
4012 var_h = var13;
4013 {
4014 { /* Inline coloring#POSetBucketsColorer#poset (self) on <self:POSetBucketsColorer[Object, Object]> */
4015 var16 = self->attrs[COLOR_coloring__POSetBucketsColorer___poset].val; /* _poset on <self:POSetBucketsColorer[Object, Object]> */
4016 if (unlikely(var16 == NULL)) {
4017 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
4018 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 331);
4019 show_backtrace(1);
4020 }
4021 var14 = var16;
4022 RET_LABEL15:(void)0;
4023 }
4024 }
4025 {
4026 var17 = poset__POSet___91d_93d(var14, var_h);
4027 }
4028 {
4029 var18 = poset__POSetElement__direct_greaters(var17);
4030 }
4031 {
4032 var19 = coloring__POSetBucketsColorer__min_color(self, var18, var_buckets);
4033 }
4034 var_color = var19;
4035 {
4036 var20 = ((val* (*)(val*, val*))(var_buckets->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_buckets, var_h) /* [] on <var_buckets:Map[Object, Set[Object]]>*/;
4037 }
4038 var_21 = var20;
4039 {
4040 var22 = ((val* (*)(val*))(var_21->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_21) /* iterator on <var_21:Set[Object]>*/;
4041 }
4042 var_23 = var22;
4043 for(;;) {
4044 {
4045 var24 = ((short int (*)(val*))(var_23->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_23) /* is_ok on <var_23:Iterator[Object]>*/;
4046 }
4047 if (var24){
4048 {
4049 var25 = ((val* (*)(val*))(var_23->class->vft[COLOR_abstract_collection__Iterator__item]))(var_23) /* item on <var_23:Iterator[Object]>*/;
4050 }
4051 var_bucket = var25;
4052 {
4053 { /* Inline coloring#POSetBucketsColorer#colors (self) on <self:POSetBucketsColorer[Object, Object]> */
4054 var28 = self->attrs[COLOR_coloring__POSetBucketsColorer___colors].val; /* _colors on <self:POSetBucketsColorer[Object, Object]> */
4055 if (unlikely(var28 == NULL)) {
4056 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
4057 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 330);
4058 show_backtrace(1);
4059 }
4060 var26 = var28;
4061 RET_LABEL27:(void)0;
4062 }
4063 }
4064 {
4065 var29 = abstract_collection__MapRead__has_key(var26, var_bucket);
4066 }
4067 if (var29){
4068 goto BREAK_label;
4069 } else {
4070 }
4071 for(;;) {
4072 {
4073 var30 = coloring__POSetBucketsColorer__is_color_free(self, var_color, var_h, var_buckets);
4074 }
4075 var31 = !var30;
4076 if (var31){
4077 var32 = 1;
4078 {
4079 { /* Inline kernel#Int#+ (var_color,var32) on <var_color:Int> */
4080 /* Covariant cast for argument 0 (i) <var32:Int> isa OTHER */
4081 /* <var32:Int> isa OTHER */
4082 var35 = 1; /* easy <var32:Int> isa OTHER*/
4083 if (unlikely(!var35)) {
4084 var_class_name38 = type_kernel__Int.name;
4085 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name38);
4086 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
4087 show_backtrace(1);
4088 }
4089 var39 = var_color + var32;
4090 var33 = var39;
4091 goto RET_LABEL34;
4092 RET_LABEL34:(void)0;
4093 }
4094 }
4095 var_color = var33;
4096 } else {
4097 goto BREAK_label40;
4098 }
4099 }
4100 BREAK_label40: (void)0;
4101 {
4102 { /* Inline coloring#POSetBucketsColorer#colors (self) on <self:POSetBucketsColorer[Object, Object]> */
4103 var43 = self->attrs[COLOR_coloring__POSetBucketsColorer___colors].val; /* _colors on <self:POSetBucketsColorer[Object, Object]> */
4104 if (unlikely(var43 == NULL)) {
4105 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
4106 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 330);
4107 show_backtrace(1);
4108 }
4109 var41 = var43;
4110 RET_LABEL42:(void)0;
4111 }
4112 }
4113 {
4114 var44 = BOX_kernel__Int(var_color); /* autobox from Int to nullable Object */
4115 hash_collection__HashMap___91d_93d_61d(var41, var_bucket, var44); /* Direct call hash_collection#HashMap#[]= on <var41:HashMap[Object, Int]>*/
4116 }
4117 var45 = 1;
4118 {
4119 { /* Inline kernel#Int#+ (var_color,var45) on <var_color:Int> */
4120 /* Covariant cast for argument 0 (i) <var45:Int> isa OTHER */
4121 /* <var45:Int> isa OTHER */
4122 var48 = 1; /* easy <var45:Int> isa OTHER*/
4123 if (unlikely(!var48)) {
4124 var_class_name51 = type_kernel__Int.name;
4125 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name51);
4126 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
4127 show_backtrace(1);
4128 }
4129 var52 = var_color + var45;
4130 var46 = var52;
4131 goto RET_LABEL47;
4132 RET_LABEL47:(void)0;
4133 }
4134 }
4135 var_color = var46;
4136 BREAK_label: (void)0;
4137 {
4138 ((void (*)(val*))(var_23->class->vft[COLOR_abstract_collection__Iterator__next]))(var_23) /* next on <var_23:Iterator[Object]>*/;
4139 }
4140 } else {
4141 goto BREAK_label53;
4142 }
4143 }
4144 BREAK_label53: (void)0;
4145 {
4146 { /* Inline abstract_collection#Iterator#finish (var_23) on <var_23:Iterator[Object]> */
4147 RET_LABEL54:(void)0;
4148 }
4149 }
4150 {
4151 array__ArrayIterator__next(var_11); /* Direct call array#ArrayIterator#next on <var_11:ArrayIterator[Object]>*/
4152 }
4153 } else {
4154 goto BREAK_label55;
4155 }
4156 }
4157 BREAK_label55: (void)0;
4158 {
4159 { /* Inline abstract_collection#Iterator#finish (var_11) on <var_11:ArrayIterator[Object]> */
4160 RET_LABEL56:(void)0;
4161 }
4162 }
4163 {
4164 { /* Inline coloring#POSetBucketsColorer#colors (self) on <self:POSetBucketsColorer[Object, Object]> */
4165 var59 = self->attrs[COLOR_coloring__POSetBucketsColorer___colors].val; /* _colors on <self:POSetBucketsColorer[Object, Object]> */
4166 if (unlikely(var59 == NULL)) {
4167 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
4168 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 330);
4169 show_backtrace(1);
4170 }
4171 var57 = var59;
4172 RET_LABEL58:(void)0;
4173 }
4174 }
4175 var = var57;
4176 goto RET_LABEL;
4177 RET_LABEL:;
4178 return var;
4179 }
4180 /* method coloring#POSetBucketsColorer#colorize for (self: Object, Map[Object, Set[Object]]): Map[Object, Int] */
4181 val* VIRTUAL_coloring__POSetBucketsColorer__colorize(val* self, val* p0) {
4182 val* var /* : Map[Object, Int] */;
4183 val* var1 /* : Map[Object, Int] */;
4184 var1 = coloring__POSetBucketsColorer__colorize(self, p0);
4185 var = var1;
4186 RET_LABEL:;
4187 return var;
4188 }
4189 /* method coloring#POSetBucketsColorer#min_color for (self: POSetBucketsColorer[Object, Object], Collection[Object], Map[Object, Set[Object]]): Int */
4190 long coloring__POSetBucketsColorer__min_color(val* self, val* p0, val* p1) {
4191 long var /* : Int */;
4192 short int var1 /* : Bool */;
4193 int cltype;
4194 int idtype;
4195 const struct type* type_struct;
4196 const char* var_class_name;
4197 short int var2 /* : Bool */;
4198 int cltype3;
4199 int idtype4;
4200 const struct type* type_struct5;
4201 const char* var_class_name6;
4202 val* var_others /* var others: Collection[Object] */;
4203 val* var_buckets /* var buckets: Map[Object, Set[Object]] */;
4204 long var7 /* : Int */;
4205 long var8 /* : Int */;
4206 long var10 /* : Int */;
4207 long var_min /* var min: Int */;
4208 val* var_ /* var : Collection[Object] */;
4209 val* var11 /* : Iterator[nullable Object] */;
4210 val* var_12 /* var : Iterator[Object] */;
4211 short int var13 /* : Bool */;
4212 val* var14 /* : nullable Object */;
4213 val* var_holder /* var holder: Object */;
4214 long var15 /* : Int */;
4215 long var_color /* var color: Int */;
4216 short int var16 /* : Bool */;
4217 short int var18 /* : Bool */;
4218 int cltype19;
4219 int idtype20;
4220 const char* var_class_name21;
4221 short int var22 /* : Bool */;
4222 long var24 /* : Int */;
4223 long var25 /* : Int */;
4224 short int var27 /* : Bool */;
4225 int cltype28;
4226 int idtype29;
4227 const char* var_class_name30;
4228 long var31 /* : Int */;
4229 /* Covariant cast for argument 0 (others) <p0:Collection[Object]> isa Collection[H] */
4230 /* <p0:Collection[Object]> isa Collection[H] */
4231 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collectioncoloring__POSetBucketsColorer_FT0];
4232 cltype = type_struct->color;
4233 idtype = type_struct->id;
4234 if(cltype >= p0->type->table_size) {
4235 var1 = 0;
4236 } else {
4237 var1 = p0->type->type_table[cltype] == idtype;
4238 }
4239 if (unlikely(!var1)) {
4240 var_class_name = p0 == NULL ? "null" : p0->type->name;
4241 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[H]", var_class_name);
4242 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 354);
4243 show_backtrace(1);
4244 }
4245 /* Covariant cast for argument 1 (buckets) <p1:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
4246 /* <p1:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
4247 type_struct5 = self->type->resolution_table->types[COLOR_abstract_collection__Mapcoloring__POSetBucketsColorer_FT0abstract_collection__Setcoloring__POSetBucketsColorer_FT1];
4248 cltype3 = type_struct5->color;
4249 idtype4 = type_struct5->id;
4250 if(cltype3 >= p1->type->table_size) {
4251 var2 = 0;
4252 } else {
4253 var2 = p1->type->type_table[cltype3] == idtype4;
4254 }
4255 if (unlikely(!var2)) {
4256 var_class_name6 = p1 == NULL ? "null" : p1->type->name;
4257 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[H, Set[E]]", var_class_name6);
4258 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 354);
4259 show_backtrace(1);
4260 }
4261 var_others = p0;
4262 var_buckets = p1;
4263 var7 = 1;
4264 {
4265 { /* Inline kernel#Int#unary - (var7) on <var7:Int> */
4266 var10 = -var7;
4267 var8 = var10;
4268 goto RET_LABEL9;
4269 RET_LABEL9:(void)0;
4270 }
4271 }
4272 var_min = var8;
4273 var_ = var_others;
4274 {
4275 var11 = ((val* (*)(val*))(var_->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_) /* iterator on <var_:Collection[Object]>*/;
4276 }
4277 var_12 = var11;
4278 for(;;) {
4279 {
4280 var13 = ((short int (*)(val*))(var_12->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_12) /* is_ok on <var_12:Iterator[Object]>*/;
4281 }
4282 if (var13){
4283 {
4284 var14 = ((val* (*)(val*))(var_12->class->vft[COLOR_abstract_collection__Iterator__item]))(var_12) /* item on <var_12:Iterator[Object]>*/;
4285 }
4286 var_holder = var14;
4287 {
4288 var15 = coloring__POSetBucketsColorer__max_color(self, var_holder, var_buckets);
4289 }
4290 var_color = var15;
4291 {
4292 { /* Inline kernel#Int#> (var_color,var_min) on <var_color:Int> */
4293 /* Covariant cast for argument 0 (i) <var_min:Int> isa OTHER */
4294 /* <var_min:Int> isa OTHER */
4295 var18 = 1; /* easy <var_min:Int> isa OTHER*/
4296 if (unlikely(!var18)) {
4297 var_class_name21 = type_kernel__Int.name;
4298 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name21);
4299 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
4300 show_backtrace(1);
4301 }
4302 var22 = var_color > var_min;
4303 var16 = var22;
4304 goto RET_LABEL17;
4305 RET_LABEL17:(void)0;
4306 }
4307 }
4308 if (var16){
4309 var_min = var_color;
4310 } else {
4311 }
4312 {
4313 ((void (*)(val*))(var_12->class->vft[COLOR_abstract_collection__Iterator__next]))(var_12) /* next on <var_12:Iterator[Object]>*/;
4314 }
4315 } else {
4316 goto BREAK_label;
4317 }
4318 }
4319 BREAK_label: (void)0;
4320 {
4321 { /* Inline abstract_collection#Iterator#finish (var_12) on <var_12:Iterator[Object]> */
4322 RET_LABEL23:(void)0;
4323 }
4324 }
4325 var24 = 1;
4326 {
4327 { /* Inline kernel#Int#+ (var_min,var24) on <var_min:Int> */
4328 /* Covariant cast for argument 0 (i) <var24:Int> isa OTHER */
4329 /* <var24:Int> isa OTHER */
4330 var27 = 1; /* easy <var24:Int> isa OTHER*/
4331 if (unlikely(!var27)) {
4332 var_class_name30 = type_kernel__Int.name;
4333 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name30);
4334 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
4335 show_backtrace(1);
4336 }
4337 var31 = var_min + var24;
4338 var25 = var31;
4339 goto RET_LABEL26;
4340 RET_LABEL26:(void)0;
4341 }
4342 }
4343 var = var25;
4344 goto RET_LABEL;
4345 RET_LABEL:;
4346 return var;
4347 }
4348 /* method coloring#POSetBucketsColorer#min_color for (self: Object, Collection[Object], Map[Object, Set[Object]]): Int */
4349 long VIRTUAL_coloring__POSetBucketsColorer__min_color(val* self, val* p0, val* p1) {
4350 long var /* : Int */;
4351 long var1 /* : Int */;
4352 var1 = coloring__POSetBucketsColorer__min_color(self, p0, p1);
4353 var = var1;
4354 RET_LABEL:;
4355 return var;
4356 }
4357 /* method coloring#POSetBucketsColorer#max_color for (self: POSetBucketsColorer[Object, Object], Object, Map[Object, Set[Object]]): Int */
4358 long coloring__POSetBucketsColorer__max_color(val* self, val* p0, val* p1) {
4359 long var /* : Int */;
4360 short int var1 /* : Bool */;
4361 int cltype;
4362 int idtype;
4363 const struct type* type_struct;
4364 const char* var_class_name;
4365 short int var2 /* : Bool */;
4366 int cltype3;
4367 int idtype4;
4368 const struct type* type_struct5;
4369 const char* var_class_name6;
4370 val* var_holder /* var holder: Object */;
4371 val* var_buckets /* var buckets: Map[Object, Set[Object]] */;
4372 long var7 /* : Int */;
4373 long var8 /* : Int */;
4374 long var10 /* : Int */;
4375 long var_max /* var max: Int */;
4376 val* var11 /* : nullable Object */;
4377 val* var_ /* var : Set[Object] */;
4378 val* var12 /* : Iterator[nullable Object] */;
4379 val* var_13 /* var : Iterator[Object] */;
4380 short int var14 /* : Bool */;
4381 val* var15 /* : nullable Object */;
4382 val* var_bucket /* var bucket: Object */;
4383 val* var16 /* : HashMap[Object, Int] */;
4384 val* var18 /* : HashMap[Object, Int] */;
4385 short int var19 /* : Bool */;
4386 short int var20 /* : Bool */;
4387 val* var21 /* : HashMap[Object, Int] */;
4388 val* var23 /* : HashMap[Object, Int] */;
4389 val* var24 /* : nullable Object */;
4390 long var25 /* : Int */;
4391 long var_color /* var color: Int */;
4392 short int var26 /* : Bool */;
4393 short int var28 /* : Bool */;
4394 int cltype29;
4395 int idtype30;
4396 const char* var_class_name31;
4397 short int var32 /* : Bool */;
4398 /* Covariant cast for argument 0 (holder) <p0:Object> isa H */
4399 /* <p0:Object> isa H */
4400 type_struct = self->type->resolution_table->types[COLOR_coloring__POSetBucketsColorer_FT0];
4401 cltype = type_struct->color;
4402 idtype = type_struct->id;
4403 if(cltype >= p0->type->table_size) {
4404 var1 = 0;
4405 } else {
4406 var1 = p0->type->type_table[cltype] == idtype;
4407 }
4408 if (unlikely(!var1)) {
4409 var_class_name = p0 == NULL ? "null" : p0->type->name;
4410 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "H", var_class_name);
4411 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 364);
4412 show_backtrace(1);
4413 }
4414 /* Covariant cast for argument 1 (buckets) <p1:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
4415 /* <p1:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
4416 type_struct5 = self->type->resolution_table->types[COLOR_abstract_collection__Mapcoloring__POSetBucketsColorer_FT0abstract_collection__Setcoloring__POSetBucketsColorer_FT1];
4417 cltype3 = type_struct5->color;
4418 idtype4 = type_struct5->id;
4419 if(cltype3 >= p1->type->table_size) {
4420 var2 = 0;
4421 } else {
4422 var2 = p1->type->type_table[cltype3] == idtype4;
4423 }
4424 if (unlikely(!var2)) {
4425 var_class_name6 = p1 == NULL ? "null" : p1->type->name;
4426 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[H, Set[E]]", var_class_name6);
4427 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 364);
4428 show_backtrace(1);
4429 }
4430 var_holder = p0;
4431 var_buckets = p1;
4432 var7 = 1;
4433 {
4434 { /* Inline kernel#Int#unary - (var7) on <var7:Int> */
4435 var10 = -var7;
4436 var8 = var10;
4437 goto RET_LABEL9;
4438 RET_LABEL9:(void)0;
4439 }
4440 }
4441 var_max = var8;
4442 {
4443 var11 = ((val* (*)(val*, val*))(var_buckets->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_buckets, var_holder) /* [] on <var_buckets:Map[Object, Set[Object]]>*/;
4444 }
4445 var_ = var11;
4446 {
4447 var12 = ((val* (*)(val*))(var_->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_) /* iterator on <var_:Set[Object]>*/;
4448 }
4449 var_13 = var12;
4450 for(;;) {
4451 {
4452 var14 = ((short int (*)(val*))(var_13->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_13) /* is_ok on <var_13:Iterator[Object]>*/;
4453 }
4454 if (var14){
4455 {
4456 var15 = ((val* (*)(val*))(var_13->class->vft[COLOR_abstract_collection__Iterator__item]))(var_13) /* item on <var_13:Iterator[Object]>*/;
4457 }
4458 var_bucket = var15;
4459 {
4460 { /* Inline coloring#POSetBucketsColorer#colors (self) on <self:POSetBucketsColorer[Object, Object]> */
4461 var18 = self->attrs[COLOR_coloring__POSetBucketsColorer___colors].val; /* _colors on <self:POSetBucketsColorer[Object, Object]> */
4462 if (unlikely(var18 == NULL)) {
4463 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
4464 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 330);
4465 show_backtrace(1);
4466 }
4467 var16 = var18;
4468 RET_LABEL17:(void)0;
4469 }
4470 }
4471 {
4472 var19 = abstract_collection__MapRead__has_key(var16, var_bucket);
4473 }
4474 var20 = !var19;
4475 if (var20){
4476 goto BREAK_label;
4477 } else {
4478 }
4479 {
4480 { /* Inline coloring#POSetBucketsColorer#colors (self) on <self:POSetBucketsColorer[Object, Object]> */
4481 var23 = self->attrs[COLOR_coloring__POSetBucketsColorer___colors].val; /* _colors on <self:POSetBucketsColorer[Object, Object]> */
4482 if (unlikely(var23 == NULL)) {
4483 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
4484 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 330);
4485 show_backtrace(1);
4486 }
4487 var21 = var23;
4488 RET_LABEL22:(void)0;
4489 }
4490 }
4491 {
4492 var24 = hash_collection__HashMap___91d_93d(var21, var_bucket);
4493 }
4494 var25 = ((struct instance_kernel__Int*)var24)->value; /* autounbox from nullable Object to Int */;
4495 var_color = var25;
4496 {
4497 { /* Inline kernel#Int#> (var_color,var_max) on <var_color:Int> */
4498 /* Covariant cast for argument 0 (i) <var_max:Int> isa OTHER */
4499 /* <var_max:Int> isa OTHER */
4500 var28 = 1; /* easy <var_max:Int> isa OTHER*/
4501 if (unlikely(!var28)) {
4502 var_class_name31 = type_kernel__Int.name;
4503 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name31);
4504 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
4505 show_backtrace(1);
4506 }
4507 var32 = var_color > var_max;
4508 var26 = var32;
4509 goto RET_LABEL27;
4510 RET_LABEL27:(void)0;
4511 }
4512 }
4513 if (var26){
4514 var_max = var_color;
4515 } else {
4516 }
4517 BREAK_label: (void)0;
4518 {
4519 ((void (*)(val*))(var_13->class->vft[COLOR_abstract_collection__Iterator__next]))(var_13) /* next on <var_13:Iterator[Object]>*/;
4520 }
4521 } else {
4522 goto BREAK_label33;
4523 }
4524 }
4525 BREAK_label33: (void)0;
4526 {
4527 { /* Inline abstract_collection#Iterator#finish (var_13) on <var_13:Iterator[Object]> */
4528 RET_LABEL34:(void)0;
4529 }
4530 }
4531 var = var_max;
4532 goto RET_LABEL;
4533 RET_LABEL:;
4534 return var;
4535 }
4536 /* method coloring#POSetBucketsColorer#max_color for (self: Object, Object, Map[Object, Set[Object]]): Int */
4537 long VIRTUAL_coloring__POSetBucketsColorer__max_color(val* self, val* p0, val* p1) {
4538 long var /* : Int */;
4539 long var1 /* : Int */;
4540 var1 = coloring__POSetBucketsColorer__max_color(self, p0, p1);
4541 var = var1;
4542 RET_LABEL:;
4543 return var;
4544 }
4545 /* method coloring#POSetBucketsColorer#is_color_free for (self: POSetBucketsColorer[Object, Object], Int, Object, Map[Object, Set[Object]]): Bool */
4546 short int coloring__POSetBucketsColorer__is_color_free(val* self, long p0, val* p1, val* p2) {
4547 short int var /* : Bool */;
4548 short int var1 /* : Bool */;
4549 int cltype;
4550 int idtype;
4551 const struct type* type_struct;
4552 const char* var_class_name;
4553 short int var2 /* : Bool */;
4554 int cltype3;
4555 int idtype4;
4556 const struct type* type_struct5;
4557 const char* var_class_name6;
4558 long var_color /* var color: Int */;
4559 val* var_holder /* var holder: Object */;
4560 val* var_buckets /* var buckets: Map[Object, Set[Object]] */;
4561 val* var7 /* : Map[Object, Set[Object]] */;
4562 val* var9 /* : Map[Object, Set[Object]] */;
4563 short int var10 /* : Bool */;
4564 short int var11 /* : Bool */;
4565 short int var12 /* : Bool */;
4566 val* var13 /* : Map[Object, Set[Object]] */;
4567 val* var15 /* : Map[Object, Set[Object]] */;
4568 val* var16 /* : nullable Object */;
4569 val* var_ /* var : Set[Object] */;
4570 val* var17 /* : Iterator[nullable Object] */;
4571 val* var_18 /* var : Iterator[Object] */;
4572 short int var19 /* : Bool */;
4573 val* var20 /* : nullable Object */;
4574 val* var_conflict /* var conflict: Object */;
4575 val* var21 /* : nullable Object */;
4576 val* var_22 /* var : Set[Object] */;
4577 val* var23 /* : Iterator[nullable Object] */;
4578 val* var_24 /* var : Iterator[Object] */;
4579 short int var25 /* : Bool */;
4580 val* var26 /* : nullable Object */;
4581 val* var_bucket /* var bucket: Object */;
4582 val* var27 /* : HashMap[Object, Int] */;
4583 val* var29 /* : HashMap[Object, Int] */;
4584 short int var30 /* : Bool */;
4585 short int var31 /* : Bool */;
4586 val* var32 /* : HashMap[Object, Int] */;
4587 val* var34 /* : HashMap[Object, Int] */;
4588 val* var35 /* : nullable Object */;
4589 short int var36 /* : Bool */;
4590 short int var37 /* : Bool */;
4591 short int var39 /* : Bool */;
4592 long var40 /* : Int */;
4593 short int var41 /* : Bool */;
4594 short int var46 /* : Bool */;
4595 /* Covariant cast for argument 1 (holder) <p1:Object> isa H */
4596 /* <p1:Object> isa H */
4597 type_struct = self->type->resolution_table->types[COLOR_coloring__POSetBucketsColorer_FT0];
4598 cltype = type_struct->color;
4599 idtype = type_struct->id;
4600 if(cltype >= p1->type->table_size) {
4601 var1 = 0;
4602 } else {
4603 var1 = p1->type->type_table[cltype] == idtype;
4604 }
4605 if (unlikely(!var1)) {
4606 var_class_name = p1 == NULL ? "null" : p1->type->name;
4607 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "H", var_class_name);
4608 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 375);
4609 show_backtrace(1);
4610 }
4611 /* Covariant cast for argument 2 (buckets) <p2:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
4612 /* <p2:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
4613 type_struct5 = self->type->resolution_table->types[COLOR_abstract_collection__Mapcoloring__POSetBucketsColorer_FT0abstract_collection__Setcoloring__POSetBucketsColorer_FT1];
4614 cltype3 = type_struct5->color;
4615 idtype4 = type_struct5->id;
4616 if(cltype3 >= p2->type->table_size) {
4617 var2 = 0;
4618 } else {
4619 var2 = p2->type->type_table[cltype3] == idtype4;
4620 }
4621 if (unlikely(!var2)) {
4622 var_class_name6 = p2 == NULL ? "null" : p2->type->name;
4623 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[H, Set[E]]", var_class_name6);
4624 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 375);
4625 show_backtrace(1);
4626 }
4627 var_color = p0;
4628 var_holder = p1;
4629 var_buckets = p2;
4630 {
4631 { /* Inline coloring#POSetBucketsColorer#conflicts (self) on <self:POSetBucketsColorer[Object, Object]> */
4632 var9 = self->attrs[COLOR_coloring__POSetBucketsColorer___conflicts].val; /* _conflicts on <self:POSetBucketsColorer[Object, Object]> */
4633 if (unlikely(var9 == NULL)) {
4634 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
4635 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 332);
4636 show_backtrace(1);
4637 }
4638 var7 = var9;
4639 RET_LABEL8:(void)0;
4640 }
4641 }
4642 {
4643 var10 = abstract_collection__MapRead__has_key(var7, var_holder);
4644 }
4645 var11 = !var10;
4646 if (var11){
4647 var12 = 1;
4648 var = var12;
4649 goto RET_LABEL;
4650 } else {
4651 }
4652 {
4653 { /* Inline coloring#POSetBucketsColorer#conflicts (self) on <self:POSetBucketsColorer[Object, Object]> */
4654 var15 = self->attrs[COLOR_coloring__POSetBucketsColorer___conflicts].val; /* _conflicts on <self:POSetBucketsColorer[Object, Object]> */
4655 if (unlikely(var15 == NULL)) {
4656 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
4657 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 332);
4658 show_backtrace(1);
4659 }
4660 var13 = var15;
4661 RET_LABEL14:(void)0;
4662 }
4663 }
4664 {
4665 var16 = ((val* (*)(val*, val*))(var13->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var13, var_holder) /* [] on <var13:Map[Object, Set[Object]]>*/;
4666 }
4667 var_ = var16;
4668 {
4669 var17 = ((val* (*)(val*))(var_->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_) /* iterator on <var_:Set[Object]>*/;
4670 }
4671 var_18 = var17;
4672 for(;;) {
4673 {
4674 var19 = ((short int (*)(val*))(var_18->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_18) /* is_ok on <var_18:Iterator[Object]>*/;
4675 }
4676 if (var19){
4677 {
4678 var20 = ((val* (*)(val*))(var_18->class->vft[COLOR_abstract_collection__Iterator__item]))(var_18) /* item on <var_18:Iterator[Object]>*/;
4679 }
4680 var_conflict = var20;
4681 {
4682 var21 = ((val* (*)(val*, val*))(var_buckets->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_buckets, var_conflict) /* [] on <var_buckets:Map[Object, Set[Object]]>*/;
4683 }
4684 var_22 = var21;
4685 {
4686 var23 = ((val* (*)(val*))(var_22->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_22) /* iterator on <var_22:Set[Object]>*/;
4687 }
4688 var_24 = var23;
4689 for(;;) {
4690 {
4691 var25 = ((short int (*)(val*))(var_24->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_24) /* is_ok on <var_24:Iterator[Object]>*/;
4692 }
4693 if (var25){
4694 {
4695 var26 = ((val* (*)(val*))(var_24->class->vft[COLOR_abstract_collection__Iterator__item]))(var_24) /* item on <var_24:Iterator[Object]>*/;
4696 }
4697 var_bucket = var26;
4698 {
4699 { /* Inline coloring#POSetBucketsColorer#colors (self) on <self:POSetBucketsColorer[Object, Object]> */
4700 var29 = self->attrs[COLOR_coloring__POSetBucketsColorer___colors].val; /* _colors on <self:POSetBucketsColorer[Object, Object]> */
4701 if (unlikely(var29 == NULL)) {
4702 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
4703 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 330);
4704 show_backtrace(1);
4705 }
4706 var27 = var29;
4707 RET_LABEL28:(void)0;
4708 }
4709 }
4710 {
4711 var30 = abstract_collection__MapRead__has_key(var27, var_bucket);
4712 }
4713 var31 = !var30;
4714 if (var31){
4715 goto BREAK_label;
4716 } else {
4717 }
4718 {
4719 { /* Inline coloring#POSetBucketsColorer#colors (self) on <self:POSetBucketsColorer[Object, Object]> */
4720 var34 = self->attrs[COLOR_coloring__POSetBucketsColorer___colors].val; /* _colors on <self:POSetBucketsColorer[Object, Object]> */
4721 if (unlikely(var34 == NULL)) {
4722 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
4723 PRINT_ERROR(" (%s:%d)\n", "compiler/coloring.nit", 330);
4724 show_backtrace(1);
4725 }
4726 var32 = var34;
4727 RET_LABEL33:(void)0;
4728 }
4729 }
4730 {
4731 var35 = hash_collection__HashMap___91d_93d(var32, var_bucket);
4732 }
4733 {
4734 { /* Inline kernel#Int#== (var35,var_color) on <var35:nullable Object(Int)> */
4735 var39 = (var35 != NULL) && (var35->class == &class_kernel__Int);
4736 if (var39) {
4737 var40 = ((struct instance_kernel__Int*)var35)->value; /* autounbox from nullable Object to Int */;
4738 var39 = (var40 == var_color);
4739 }
4740 var37 = var39;
4741 goto RET_LABEL38;
4742 RET_LABEL38:(void)0;
4743 }
4744 var36 = var37;
4745 }
4746 if (var36){
4747 var41 = 0;
4748 var = var41;
4749 goto RET_LABEL;
4750 } else {
4751 }
4752 BREAK_label: (void)0;
4753 {
4754 ((void (*)(val*))(var_24->class->vft[COLOR_abstract_collection__Iterator__next]))(var_24) /* next on <var_24:Iterator[Object]>*/;
4755 }
4756 } else {
4757 goto BREAK_label42;
4758 }
4759 }
4760 BREAK_label42: (void)0;
4761 {
4762 { /* Inline abstract_collection#Iterator#finish (var_24) on <var_24:Iterator[Object]> */
4763 RET_LABEL43:(void)0;
4764 }
4765 }
4766 {
4767 ((void (*)(val*))(var_18->class->vft[COLOR_abstract_collection__Iterator__next]))(var_18) /* next on <var_18:Iterator[Object]>*/;
4768 }
4769 } else {
4770 goto BREAK_label44;
4771 }
4772 }
4773 BREAK_label44: (void)0;
4774 {
4775 { /* Inline abstract_collection#Iterator#finish (var_18) on <var_18:Iterator[Object]> */
4776 RET_LABEL45:(void)0;
4777 }
4778 }
4779 var46 = 1;
4780 var = var46;
4781 goto RET_LABEL;
4782 RET_LABEL:;
4783 return var;
4784 }
4785 /* method coloring#POSetBucketsColorer#is_color_free for (self: Object, Int, Object, Map[Object, Set[Object]]): Bool */
4786 short int VIRTUAL_coloring__POSetBucketsColorer__is_color_free(val* self, long p0, val* p1, val* p2) {
4787 short int var /* : Bool */;
4788 short int var1 /* : Bool */;
4789 var1 = coloring__POSetBucketsColorer__is_color_free(self, p0, p1, p2);
4790 var = var1;
4791 RET_LABEL:;
4792 return var;
4793 }