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