nitc: fix calling extern constructors from extern code in separate compiler
[nit.git] / c_src / toolcontext.sep.1.c
1 #include "toolcontext.sep.0.h"
2 /* method toolcontext#Message#location for (self: Message): nullable Location */
3 val* toolcontext__Message__location(val* self) {
4 val* var /* : nullable Location */;
5 val* var1 /* : nullable Location */;
6 var1 = self->attrs[COLOR_toolcontext__Message___location].val; /* _location on <self:Message> */
7 var = var1;
8 RET_LABEL:;
9 return var;
10 }
11 /* method toolcontext#Message#location for (self: Object): nullable Location */
12 val* VIRTUAL_toolcontext__Message__location(val* self) {
13 val* var /* : nullable Location */;
14 val* var1 /* : nullable Location */;
15 val* var3 /* : nullable Location */;
16 { /* Inline toolcontext#Message#location (self) on <self:Object(Message)> */
17 var3 = self->attrs[COLOR_toolcontext__Message___location].val; /* _location on <self:Object(Message)> */
18 var1 = var3;
19 RET_LABEL2:(void)0;
20 }
21 var = var1;
22 RET_LABEL:;
23 return var;
24 }
25 /* method toolcontext#Message#location= for (self: Message, nullable Location) */
26 void toolcontext__Message__location_61d(val* self, val* p0) {
27 self->attrs[COLOR_toolcontext__Message___location].val = p0; /* _location on <self:Message> */
28 RET_LABEL:;
29 }
30 /* method toolcontext#Message#location= for (self: Object, nullable Location) */
31 void VIRTUAL_toolcontext__Message__location_61d(val* self, val* p0) {
32 { /* Inline toolcontext#Message#location= (self,p0) on <self:Object(Message)> */
33 self->attrs[COLOR_toolcontext__Message___location].val = p0; /* _location on <self:Object(Message)> */
34 RET_LABEL1:(void)0;
35 }
36 RET_LABEL:;
37 }
38 /* method toolcontext#Message#tag for (self: Message): nullable String */
39 val* toolcontext__Message__tag(val* self) {
40 val* var /* : nullable String */;
41 val* var1 /* : nullable String */;
42 var1 = self->attrs[COLOR_toolcontext__Message___tag].val; /* _tag on <self:Message> */
43 var = var1;
44 RET_LABEL:;
45 return var;
46 }
47 /* method toolcontext#Message#tag for (self: Object): nullable String */
48 val* VIRTUAL_toolcontext__Message__tag(val* self) {
49 val* var /* : nullable String */;
50 val* var1 /* : nullable String */;
51 val* var3 /* : nullable String */;
52 { /* Inline toolcontext#Message#tag (self) on <self:Object(Message)> */
53 var3 = self->attrs[COLOR_toolcontext__Message___tag].val; /* _tag on <self:Object(Message)> */
54 var1 = var3;
55 RET_LABEL2:(void)0;
56 }
57 var = var1;
58 RET_LABEL:;
59 return var;
60 }
61 /* method toolcontext#Message#tag= for (self: Message, nullable String) */
62 void toolcontext__Message__tag_61d(val* self, val* p0) {
63 self->attrs[COLOR_toolcontext__Message___tag].val = p0; /* _tag on <self:Message> */
64 RET_LABEL:;
65 }
66 /* method toolcontext#Message#tag= for (self: Object, nullable String) */
67 void VIRTUAL_toolcontext__Message__tag_61d(val* self, val* p0) {
68 { /* Inline toolcontext#Message#tag= (self,p0) on <self:Object(Message)> */
69 self->attrs[COLOR_toolcontext__Message___tag].val = p0; /* _tag on <self:Object(Message)> */
70 RET_LABEL1:(void)0;
71 }
72 RET_LABEL:;
73 }
74 /* method toolcontext#Message#text for (self: Message): String */
75 val* toolcontext__Message__text(val* self) {
76 val* var /* : String */;
77 val* var1 /* : String */;
78 var1 = self->attrs[COLOR_toolcontext__Message___text].val; /* _text on <self:Message> */
79 if (unlikely(var1 == NULL)) {
80 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _text");
81 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 41);
82 show_backtrace(1);
83 }
84 var = var1;
85 RET_LABEL:;
86 return var;
87 }
88 /* method toolcontext#Message#text for (self: Object): String */
89 val* VIRTUAL_toolcontext__Message__text(val* self) {
90 val* var /* : String */;
91 val* var1 /* : String */;
92 val* var3 /* : String */;
93 { /* Inline toolcontext#Message#text (self) on <self:Object(Message)> */
94 var3 = self->attrs[COLOR_toolcontext__Message___text].val; /* _text on <self:Object(Message)> */
95 if (unlikely(var3 == NULL)) {
96 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _text");
97 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 41);
98 show_backtrace(1);
99 }
100 var1 = var3;
101 RET_LABEL2:(void)0;
102 }
103 var = var1;
104 RET_LABEL:;
105 return var;
106 }
107 /* method toolcontext#Message#text= for (self: Message, String) */
108 void toolcontext__Message__text_61d(val* self, val* p0) {
109 self->attrs[COLOR_toolcontext__Message___text].val = p0; /* _text on <self:Message> */
110 RET_LABEL:;
111 }
112 /* method toolcontext#Message#text= for (self: Object, String) */
113 void VIRTUAL_toolcontext__Message__text_61d(val* self, val* p0) {
114 { /* Inline toolcontext#Message#text= (self,p0) on <self:Object(Message)> */
115 self->attrs[COLOR_toolcontext__Message___text].val = p0; /* _text on <self:Object(Message)> */
116 RET_LABEL1:(void)0;
117 }
118 RET_LABEL:;
119 }
120 /* method toolcontext#Message#< for (self: Message, Message): Bool */
121 short int toolcontext__Message___60d(val* self, val* p0) {
122 short int var /* : Bool */;
123 short int var1 /* : Bool */;
124 int cltype;
125 int idtype;
126 const struct type* type_struct;
127 const char* var_class_name;
128 val* var_other /* var other: Message */;
129 val* var2 /* : nullable Location */;
130 val* var4 /* : nullable Location */;
131 val* var5 /* : null */;
132 short int var6 /* : Bool */;
133 short int var7 /* : Bool */;
134 short int var8 /* : Bool */;
135 val* var9 /* : nullable Location */;
136 val* var11 /* : nullable Location */;
137 val* var12 /* : null */;
138 short int var13 /* : Bool */;
139 short int var14 /* : Bool */;
140 short int var15 /* : Bool */;
141 val* var16 /* : nullable Location */;
142 val* var18 /* : nullable Location */;
143 val* var19 /* : nullable Location */;
144 val* var21 /* : nullable Location */;
145 short int var22 /* : Bool */;
146 /* Covariant cast for argument 0 (other) <p0:Message> isa OTHER */
147 /* <p0:Message> isa OTHER */
148 type_struct = self->type->resolution_table->types[COLOR_kernel__Comparable_VTOTHER];
149 cltype = type_struct->color;
150 idtype = type_struct->id;
151 if(cltype >= p0->type->table_size) {
152 var1 = 0;
153 } else {
154 var1 = p0->type->type_table[cltype] == idtype;
155 }
156 if (unlikely(!var1)) {
157 var_class_name = p0 == NULL ? "null" : p0->type->name;
158 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
159 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 48);
160 show_backtrace(1);
161 }
162 var_other = p0;
163 {
164 { /* Inline toolcontext#Message#location (self) on <self:Message> */
165 var4 = self->attrs[COLOR_toolcontext__Message___location].val; /* _location on <self:Message> */
166 var2 = var4;
167 RET_LABEL3:(void)0;
168 }
169 }
170 var5 = NULL;
171 if (var2 == NULL) {
172 var6 = 1; /* is null */
173 } else {
174 var6 = 0; /* arg is null but recv is not */
175 }
176 if (0) {
177 var7 = location__Location___61d_61d(var2, var5);
178 var6 = var7;
179 }
180 if (var6){
181 var8 = 1;
182 var = var8;
183 goto RET_LABEL;
184 } else {
185 }
186 {
187 { /* Inline toolcontext#Message#location (var_other) on <var_other:Message> */
188 var11 = var_other->attrs[COLOR_toolcontext__Message___location].val; /* _location on <var_other:Message> */
189 var9 = var11;
190 RET_LABEL10:(void)0;
191 }
192 }
193 var12 = NULL;
194 if (var9 == NULL) {
195 var13 = 1; /* is null */
196 } else {
197 var13 = 0; /* arg is null but recv is not */
198 }
199 if (0) {
200 var14 = location__Location___61d_61d(var9, var12);
201 var13 = var14;
202 }
203 if (var13){
204 var15 = 0;
205 var = var15;
206 goto RET_LABEL;
207 } else {
208 }
209 {
210 { /* Inline toolcontext#Message#location (self) on <self:Message> */
211 var18 = self->attrs[COLOR_toolcontext__Message___location].val; /* _location on <self:Message> */
212 var16 = var18;
213 RET_LABEL17:(void)0;
214 }
215 }
216 if (unlikely(var16 == NULL)) {
217 PRINT_ERROR("Runtime error: %s", "Cast failed");
218 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 53);
219 show_backtrace(1);
220 }
221 {
222 { /* Inline toolcontext#Message#location (var_other) on <var_other:Message> */
223 var21 = var_other->attrs[COLOR_toolcontext__Message___location].val; /* _location on <var_other:Message> */
224 var19 = var21;
225 RET_LABEL20:(void)0;
226 }
227 }
228 if (unlikely(var19 == NULL)) {
229 PRINT_ERROR("Runtime error: %s", "Cast failed");
230 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 53);
231 show_backtrace(1);
232 }
233 {
234 var22 = location__Location___60d(var16, var19);
235 }
236 var = var22;
237 goto RET_LABEL;
238 RET_LABEL:;
239 return var;
240 }
241 /* method toolcontext#Message#< for (self: Object, Comparable): Bool */
242 short int VIRTUAL_toolcontext__Message___60d(val* self, val* p0) {
243 short int var /* : Bool */;
244 short int var1 /* : Bool */;
245 var1 = toolcontext__Message___60d(self, p0);
246 var = var1;
247 RET_LABEL:;
248 return var;
249 }
250 /* method toolcontext#Message#to_s for (self: Message): String */
251 val* toolcontext__Message__to_s(val* self) {
252 val* var /* : String */;
253 val* var1 /* : nullable Location */;
254 val* var3 /* : nullable Location */;
255 val* var_l /* var l: nullable Location */;
256 val* var4 /* : null */;
257 short int var5 /* : Bool */;
258 short int var6 /* : Bool */;
259 val* var7 /* : String */;
260 val* var9 /* : String */;
261 static val* varonce;
262 val* var10 /* : String */;
263 char* var11 /* : NativeString */;
264 long var12 /* : Int */;
265 val* var13 /* : FlatString */;
266 val* var14 /* : String */;
267 val* var16 /* : String */;
268 val* var17 /* : Array[Object] */;
269 long var18 /* : Int */;
270 val* var19 /* : NativeArray[Object] */;
271 val* var20 /* : String */;
272 {
273 { /* Inline toolcontext#Message#location (self) on <self:Message> */
274 var3 = self->attrs[COLOR_toolcontext__Message___location].val; /* _location on <self:Message> */
275 var1 = var3;
276 RET_LABEL2:(void)0;
277 }
278 }
279 var_l = var1;
280 var4 = NULL;
281 if (var_l == NULL) {
282 var5 = 1; /* is null */
283 } else {
284 var5 = 0; /* arg is null but recv is not */
285 }
286 if (0) {
287 var6 = location__Location___61d_61d(var_l, var4);
288 var5 = var6;
289 }
290 if (var5){
291 {
292 { /* Inline toolcontext#Message#text (self) on <self:Message> */
293 var9 = self->attrs[COLOR_toolcontext__Message___text].val; /* _text on <self:Message> */
294 if (unlikely(var9 == NULL)) {
295 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _text");
296 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 41);
297 show_backtrace(1);
298 }
299 var7 = var9;
300 RET_LABEL8:(void)0;
301 }
302 }
303 var = var7;
304 goto RET_LABEL;
305 } else {
306 if (varonce) {
307 var10 = varonce;
308 } else {
309 var11 = ": ";
310 var12 = 2;
311 var13 = string__NativeString__to_s_with_length(var11, var12);
312 var10 = var13;
313 varonce = var10;
314 }
315 {
316 { /* Inline toolcontext#Message#text (self) on <self:Message> */
317 var16 = self->attrs[COLOR_toolcontext__Message___text].val; /* _text on <self:Message> */
318 if (unlikely(var16 == NULL)) {
319 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _text");
320 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 41);
321 show_backtrace(1);
322 }
323 var14 = var16;
324 RET_LABEL15:(void)0;
325 }
326 }
327 var17 = NEW_array__Array(&type_array__Arraykernel__Object);
328 { /* var17 = array_instance Array[Object] */
329 var18 = 3;
330 var19 = NEW_array__NativeArray(var18, &type_array__NativeArraykernel__Object);
331 ((struct instance_array__NativeArray*)var19)->values[0] = (val*) var_l;
332 ((struct instance_array__NativeArray*)var19)->values[1] = (val*) var10;
333 ((struct instance_array__NativeArray*)var19)->values[2] = (val*) var14;
334 {
335 ((void (*)(val*, val*, long))(var17->class->vft[COLOR_array__Array__with_native]))(var17, var19, var18) /* with_native on <var17:Array[Object]>*/;
336 }
337 }
338 {
339 var20 = ((val* (*)(val*))(var17->class->vft[COLOR_string__Object__to_s]))(var17) /* to_s on <var17:Array[Object]>*/;
340 }
341 var = var20;
342 goto RET_LABEL;
343 }
344 RET_LABEL:;
345 return var;
346 }
347 /* method toolcontext#Message#to_s for (self: Object): String */
348 val* VIRTUAL_toolcontext__Message__to_s(val* self) {
349 val* var /* : String */;
350 val* var1 /* : String */;
351 var1 = toolcontext__Message__to_s(self);
352 var = var1;
353 RET_LABEL:;
354 return var;
355 }
356 /* method toolcontext#Message#to_color_string for (self: Message): String */
357 val* toolcontext__Message__to_color_string(val* self) {
358 val* var /* : String */;
359 long var1 /* : Int */;
360 char var2 /* : Char */;
361 char var4 /* : Char */;
362 char var_esc /* var esc: Char */;
363 static val* varonce;
364 val* var5 /* : String */;
365 char* var6 /* : NativeString */;
366 long var7 /* : Int */;
367 val* var8 /* : FlatString */;
368 val* var9 /* : Array[Object] */;
369 long var10 /* : Int */;
370 val* var11 /* : NativeArray[Object] */;
371 val* var12 /* : Object */;
372 val* var13 /* : String */;
373 val* var_yellow /* var yellow: String */;
374 static val* varonce14;
375 val* var15 /* : String */;
376 char* var16 /* : NativeString */;
377 long var17 /* : Int */;
378 val* var18 /* : FlatString */;
379 val* var19 /* : Array[Object] */;
380 long var20 /* : Int */;
381 val* var21 /* : NativeArray[Object] */;
382 val* var22 /* : Object */;
383 val* var23 /* : String */;
384 val* var_def /* var def: String */;
385 val* var24 /* : nullable String */;
386 val* var26 /* : nullable String */;
387 val* var_tag /* var tag: nullable String */;
388 val* var27 /* : null */;
389 short int var28 /* : Bool */;
390 short int var29 /* : Bool */;
391 val* var_other /* var other: nullable Object */;
392 short int var31 /* : Bool */;
393 short int var32 /* : Bool */;
394 short int var33 /* : Bool */;
395 static val* varonce34;
396 val* var35 /* : String */;
397 char* var36 /* : NativeString */;
398 long var37 /* : Int */;
399 val* var38 /* : FlatString */;
400 static val* varonce39;
401 val* var40 /* : String */;
402 char* var41 /* : NativeString */;
403 long var42 /* : Int */;
404 val* var43 /* : FlatString */;
405 val* var44 /* : Array[Object] */;
406 long var45 /* : Int */;
407 val* var46 /* : NativeArray[Object] */;
408 val* var47 /* : String */;
409 static val* varonce48;
410 val* var49 /* : String */;
411 char* var50 /* : NativeString */;
412 long var51 /* : Int */;
413 val* var52 /* : FlatString */;
414 val* var53 /* : nullable Location */;
415 val* var55 /* : nullable Location */;
416 val* var_l /* var l: nullable Location */;
417 val* var56 /* : null */;
418 short int var57 /* : Bool */;
419 short int var58 /* : Bool */;
420 val* var59 /* : String */;
421 val* var61 /* : String */;
422 val* var62 /* : Array[Object] */;
423 long var63 /* : Int */;
424 val* var64 /* : NativeArray[Object] */;
425 val* var65 /* : String */;
426 val* var66 /* : nullable SourceFile */;
427 val* var68 /* : nullable SourceFile */;
428 val* var69 /* : null */;
429 short int var70 /* : Bool */;
430 short int var71 /* : Bool */;
431 val* var_other73 /* var other: nullable Object */;
432 short int var74 /* : Bool */;
433 short int var76 /* : Bool */;
434 static val* varonce77;
435 val* var78 /* : String */;
436 char* var79 /* : NativeString */;
437 long var80 /* : Int */;
438 val* var81 /* : FlatString */;
439 val* var82 /* : String */;
440 val* var84 /* : String */;
441 val* var85 /* : Array[Object] */;
442 long var86 /* : Int */;
443 val* var87 /* : NativeArray[Object] */;
444 val* var88 /* : String */;
445 static val* varonce89;
446 val* var90 /* : String */;
447 char* var91 /* : NativeString */;
448 long var92 /* : Int */;
449 val* var93 /* : FlatString */;
450 val* var94 /* : String */;
451 val* var96 /* : String */;
452 static val* varonce97;
453 val* var98 /* : String */;
454 char* var99 /* : NativeString */;
455 long var100 /* : Int */;
456 val* var101 /* : FlatString */;
457 static val* varonce102;
458 val* var103 /* : String */;
459 char* var104 /* : NativeString */;
460 long var105 /* : Int */;
461 val* var106 /* : FlatString */;
462 val* var107 /* : String */;
463 val* var108 /* : Array[Object] */;
464 long var109 /* : Int */;
465 val* var110 /* : NativeArray[Object] */;
466 val* var111 /* : String */;
467 var1 = 27;
468 {
469 { /* Inline kernel#Int#ascii (var1) on <var1:Int> */
470 var4 = var1;
471 var2 = var4;
472 goto RET_LABEL3;
473 RET_LABEL3:(void)0;
474 }
475 }
476 var_esc = var2;
477 if (varonce) {
478 var5 = varonce;
479 } else {
480 var6 = "[0;33m";
481 var7 = 6;
482 var8 = string__NativeString__to_s_with_length(var6, var7);
483 var5 = var8;
484 varonce = var5;
485 }
486 var9 = NEW_array__Array(&type_array__Arraykernel__Object);
487 { /* var9 = array_instance Array[Object] */
488 var10 = 2;
489 var11 = NEW_array__NativeArray(var10, &type_array__NativeArraykernel__Object);
490 var12 = BOX_kernel__Char(var_esc); /* autobox from Char to Object */
491 ((struct instance_array__NativeArray*)var11)->values[0] = (val*) var12;
492 ((struct instance_array__NativeArray*)var11)->values[1] = (val*) var5;
493 {
494 ((void (*)(val*, val*, long))(var9->class->vft[COLOR_array__Array__with_native]))(var9, var11, var10) /* with_native on <var9:Array[Object]>*/;
495 }
496 }
497 {
498 var13 = ((val* (*)(val*))(var9->class->vft[COLOR_string__Object__to_s]))(var9) /* to_s on <var9:Array[Object]>*/;
499 }
500 var_yellow = var13;
501 if (varonce14) {
502 var15 = varonce14;
503 } else {
504 var16 = "[0m";
505 var17 = 3;
506 var18 = string__NativeString__to_s_with_length(var16, var17);
507 var15 = var18;
508 varonce14 = var15;
509 }
510 var19 = NEW_array__Array(&type_array__Arraykernel__Object);
511 { /* var19 = array_instance Array[Object] */
512 var20 = 2;
513 var21 = NEW_array__NativeArray(var20, &type_array__NativeArraykernel__Object);
514 var22 = BOX_kernel__Char(var_esc); /* autobox from Char to Object */
515 ((struct instance_array__NativeArray*)var21)->values[0] = (val*) var22;
516 ((struct instance_array__NativeArray*)var21)->values[1] = (val*) var15;
517 {
518 ((void (*)(val*, val*, long))(var19->class->vft[COLOR_array__Array__with_native]))(var19, var21, var20) /* with_native on <var19:Array[Object]>*/;
519 }
520 }
521 {
522 var23 = ((val* (*)(val*))(var19->class->vft[COLOR_string__Object__to_s]))(var19) /* to_s on <var19:Array[Object]>*/;
523 }
524 var_def = var23;
525 {
526 { /* Inline toolcontext#Message#tag (self) on <self:Message> */
527 var26 = self->attrs[COLOR_toolcontext__Message___tag].val; /* _tag on <self:Message> */
528 var24 = var26;
529 RET_LABEL25:(void)0;
530 }
531 }
532 var_tag = var24;
533 var27 = NULL;
534 if (var_tag == NULL) {
535 var28 = 0; /* is null */
536 } else {
537 var28 = 1; /* arg is null and recv is not */
538 }
539 if (0) {
540 { /* Inline kernel#Object#!= (var_tag,var27) on <var_tag:nullable String> */
541 var_other = var27;
542 {
543 var32 = ((short int (*)(val*, val*))(var_tag->class->vft[COLOR_kernel__Object___61d_61d]))(var_tag, var_other) /* == on <var_tag:nullable String(String)>*/;
544 var31 = var32;
545 }
546 var33 = !var31;
547 var29 = var33;
548 goto RET_LABEL30;
549 RET_LABEL30:(void)0;
550 }
551 var28 = var29;
552 }
553 if (var28){
554 if (varonce34) {
555 var35 = varonce34;
556 } else {
557 var36 = " (";
558 var37 = 2;
559 var38 = string__NativeString__to_s_with_length(var36, var37);
560 var35 = var38;
561 varonce34 = var35;
562 }
563 if (varonce39) {
564 var40 = varonce39;
565 } else {
566 var41 = ")";
567 var42 = 1;
568 var43 = string__NativeString__to_s_with_length(var41, var42);
569 var40 = var43;
570 varonce39 = var40;
571 }
572 var44 = NEW_array__Array(&type_array__Arraykernel__Object);
573 { /* var44 = array_instance Array[Object] */
574 var45 = 3;
575 var46 = NEW_array__NativeArray(var45, &type_array__NativeArraykernel__Object);
576 ((struct instance_array__NativeArray*)var46)->values[0] = (val*) var35;
577 ((struct instance_array__NativeArray*)var46)->values[1] = (val*) var_tag;
578 ((struct instance_array__NativeArray*)var46)->values[2] = (val*) var40;
579 {
580 ((void (*)(val*, val*, long))(var44->class->vft[COLOR_array__Array__with_native]))(var44, var46, var45) /* with_native on <var44:Array[Object]>*/;
581 }
582 }
583 {
584 var47 = ((val* (*)(val*))(var44->class->vft[COLOR_string__Object__to_s]))(var44) /* to_s on <var44:Array[Object]>*/;
585 }
586 var_tag = var47;
587 } else {
588 if (varonce48) {
589 var49 = varonce48;
590 } else {
591 var50 = "";
592 var51 = 0;
593 var52 = string__NativeString__to_s_with_length(var50, var51);
594 var49 = var52;
595 varonce48 = var49;
596 }
597 var_tag = var49;
598 }
599 {
600 { /* Inline toolcontext#Message#location (self) on <self:Message> */
601 var55 = self->attrs[COLOR_toolcontext__Message___location].val; /* _location on <self:Message> */
602 var53 = var55;
603 RET_LABEL54:(void)0;
604 }
605 }
606 var_l = var53;
607 var56 = NULL;
608 if (var_l == NULL) {
609 var57 = 1; /* is null */
610 } else {
611 var57 = 0; /* arg is null but recv is not */
612 }
613 if (0) {
614 var58 = location__Location___61d_61d(var_l, var56);
615 var57 = var58;
616 }
617 if (var57){
618 {
619 { /* Inline toolcontext#Message#text (self) on <self:Message> */
620 var61 = self->attrs[COLOR_toolcontext__Message___text].val; /* _text on <self:Message> */
621 if (unlikely(var61 == NULL)) {
622 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _text");
623 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 41);
624 show_backtrace(1);
625 }
626 var59 = var61;
627 RET_LABEL60:(void)0;
628 }
629 }
630 var62 = NEW_array__Array(&type_array__Arraykernel__Object);
631 { /* var62 = array_instance Array[Object] */
632 var63 = 2;
633 var64 = NEW_array__NativeArray(var63, &type_array__NativeArraykernel__Object);
634 ((struct instance_array__NativeArray*)var64)->values[0] = (val*) var59;
635 ((struct instance_array__NativeArray*)var64)->values[1] = (val*) var_tag;
636 {
637 ((void (*)(val*, val*, long))(var62->class->vft[COLOR_array__Array__with_native]))(var62, var64, var63) /* with_native on <var62:Array[Object]>*/;
638 }
639 }
640 {
641 var65 = ((val* (*)(val*))(var62->class->vft[COLOR_string__Object__to_s]))(var62) /* to_s on <var62:Array[Object]>*/;
642 }
643 var = var65;
644 goto RET_LABEL;
645 } else {
646 {
647 { /* Inline location#Location#file (var_l) on <var_l:nullable Location(Location)> */
648 var68 = var_l->attrs[COLOR_location__Location___file].val; /* _file on <var_l:nullable Location(Location)> */
649 var66 = var68;
650 RET_LABEL67:(void)0;
651 }
652 }
653 var69 = NULL;
654 if (var66 == NULL) {
655 var70 = 1; /* is null */
656 } else {
657 var70 = 0; /* arg is null but recv is not */
658 }
659 if (0) {
660 { /* Inline kernel#Object#== (var66,var69) on <var66:nullable SourceFile> */
661 var_other73 = var69;
662 {
663 { /* Inline kernel#Object#is_same_instance (var66,var_other73) on <var66:nullable SourceFile(SourceFile)> */
664 var76 = var66 == var_other73;
665 var74 = var76;
666 goto RET_LABEL75;
667 RET_LABEL75:(void)0;
668 }
669 }
670 var71 = var74;
671 goto RET_LABEL72;
672 RET_LABEL72:(void)0;
673 }
674 var70 = var71;
675 }
676 if (var70){
677 if (varonce77) {
678 var78 = varonce77;
679 } else {
680 var79 = ": ";
681 var80 = 2;
682 var81 = string__NativeString__to_s_with_length(var79, var80);
683 var78 = var81;
684 varonce77 = var78;
685 }
686 {
687 { /* Inline toolcontext#Message#text (self) on <self:Message> */
688 var84 = self->attrs[COLOR_toolcontext__Message___text].val; /* _text on <self:Message> */
689 if (unlikely(var84 == NULL)) {
690 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _text");
691 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 41);
692 show_backtrace(1);
693 }
694 var82 = var84;
695 RET_LABEL83:(void)0;
696 }
697 }
698 var85 = NEW_array__Array(&type_array__Arraykernel__Object);
699 { /* var85 = array_instance Array[Object] */
700 var86 = 6;
701 var87 = NEW_array__NativeArray(var86, &type_array__NativeArraykernel__Object);
702 ((struct instance_array__NativeArray*)var87)->values[0] = (val*) var_yellow;
703 ((struct instance_array__NativeArray*)var87)->values[1] = (val*) var_l;
704 ((struct instance_array__NativeArray*)var87)->values[2] = (val*) var_def;
705 ((struct instance_array__NativeArray*)var87)->values[3] = (val*) var78;
706 ((struct instance_array__NativeArray*)var87)->values[4] = (val*) var82;
707 ((struct instance_array__NativeArray*)var87)->values[5] = (val*) var_tag;
708 {
709 ((void (*)(val*, val*, long))(var85->class->vft[COLOR_array__Array__with_native]))(var85, var87, var86) /* with_native on <var85:Array[Object]>*/;
710 }
711 }
712 {
713 var88 = ((val* (*)(val*))(var85->class->vft[COLOR_string__Object__to_s]))(var85) /* to_s on <var85:Array[Object]>*/;
714 }
715 var = var88;
716 goto RET_LABEL;
717 } else {
718 if (varonce89) {
719 var90 = varonce89;
720 } else {
721 var91 = ": ";
722 var92 = 2;
723 var93 = string__NativeString__to_s_with_length(var91, var92);
724 var90 = var93;
725 varonce89 = var90;
726 }
727 {
728 { /* Inline toolcontext#Message#text (self) on <self:Message> */
729 var96 = self->attrs[COLOR_toolcontext__Message___text].val; /* _text on <self:Message> */
730 if (unlikely(var96 == NULL)) {
731 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _text");
732 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 41);
733 show_backtrace(1);
734 }
735 var94 = var96;
736 RET_LABEL95:(void)0;
737 }
738 }
739 if (varonce97) {
740 var98 = varonce97;
741 } else {
742 var99 = "\n";
743 var100 = 1;
744 var101 = string__NativeString__to_s_with_length(var99, var100);
745 var98 = var101;
746 varonce97 = var98;
747 }
748 if (varonce102) {
749 var103 = varonce102;
750 } else {
751 var104 = "1;31";
752 var105 = 4;
753 var106 = string__NativeString__to_s_with_length(var104, var105);
754 var103 = var106;
755 varonce102 = var103;
756 }
757 {
758 var107 = location__Location__colored_line(var_l, var103);
759 }
760 var108 = NEW_array__Array(&type_array__Arraykernel__Object);
761 { /* var108 = array_instance Array[Object] */
762 var109 = 8;
763 var110 = NEW_array__NativeArray(var109, &type_array__NativeArraykernel__Object);
764 ((struct instance_array__NativeArray*)var110)->values[0] = (val*) var_yellow;
765 ((struct instance_array__NativeArray*)var110)->values[1] = (val*) var_l;
766 ((struct instance_array__NativeArray*)var110)->values[2] = (val*) var_def;
767 ((struct instance_array__NativeArray*)var110)->values[3] = (val*) var90;
768 ((struct instance_array__NativeArray*)var110)->values[4] = (val*) var94;
769 ((struct instance_array__NativeArray*)var110)->values[5] = (val*) var_tag;
770 ((struct instance_array__NativeArray*)var110)->values[6] = (val*) var98;
771 ((struct instance_array__NativeArray*)var110)->values[7] = (val*) var107;
772 {
773 ((void (*)(val*, val*, long))(var108->class->vft[COLOR_array__Array__with_native]))(var108, var110, var109) /* with_native on <var108:Array[Object]>*/;
774 }
775 }
776 {
777 var111 = ((val* (*)(val*))(var108->class->vft[COLOR_string__Object__to_s]))(var108) /* to_s on <var108:Array[Object]>*/;
778 }
779 var = var111;
780 goto RET_LABEL;
781 }
782 }
783 RET_LABEL:;
784 return var;
785 }
786 /* method toolcontext#Message#to_color_string for (self: Object): String */
787 val* VIRTUAL_toolcontext__Message__to_color_string(val* self) {
788 val* var /* : String */;
789 val* var1 /* : String */;
790 var1 = toolcontext__Message__to_color_string(self);
791 var = var1;
792 RET_LABEL:;
793 return var;
794 }
795 /* method toolcontext#Message#init for (self: Message) */
796 void toolcontext__Message__init(val* self) {
797 {
798 ((void (*)(val*))(self->class->vft[COLOR_toolcontext__Message__init]))(self) /* init on <self:Message>*/;
799 }
800 RET_LABEL:;
801 }
802 /* method toolcontext#Message#init for (self: Object) */
803 void VIRTUAL_toolcontext__Message__init(val* self) {
804 { /* Inline toolcontext#Message#init (self) on <self:Object(Message)> */
805 {
806 ((void (*)(val*))(self->class->vft[COLOR_toolcontext__Message__init]))(self) /* init on <self:Object(Message)>*/;
807 }
808 RET_LABEL1:(void)0;
809 }
810 RET_LABEL:;
811 }
812 /* method toolcontext#ToolContext#error_count for (self: ToolContext): Int */
813 long toolcontext__ToolContext__error_count(val* self) {
814 long var /* : Int */;
815 long var1 /* : Int */;
816 var1 = self->attrs[COLOR_toolcontext__ToolContext___error_count].l; /* _error_count on <self:ToolContext> */
817 var = var1;
818 RET_LABEL:;
819 return var;
820 }
821 /* method toolcontext#ToolContext#error_count for (self: Object): Int */
822 long VIRTUAL_toolcontext__ToolContext__error_count(val* self) {
823 long var /* : Int */;
824 long var1 /* : Int */;
825 long var3 /* : Int */;
826 { /* Inline toolcontext#ToolContext#error_count (self) on <self:Object(ToolContext)> */
827 var3 = self->attrs[COLOR_toolcontext__ToolContext___error_count].l; /* _error_count on <self:Object(ToolContext)> */
828 var1 = var3;
829 RET_LABEL2:(void)0;
830 }
831 var = var1;
832 RET_LABEL:;
833 return var;
834 }
835 /* method toolcontext#ToolContext#error_count= for (self: ToolContext, Int) */
836 void toolcontext__ToolContext__error_count_61d(val* self, long p0) {
837 self->attrs[COLOR_toolcontext__ToolContext___error_count].l = p0; /* _error_count on <self:ToolContext> */
838 RET_LABEL:;
839 }
840 /* method toolcontext#ToolContext#error_count= for (self: Object, Int) */
841 void VIRTUAL_toolcontext__ToolContext__error_count_61d(val* self, long p0) {
842 { /* Inline toolcontext#ToolContext#error_count= (self,p0) on <self:Object(ToolContext)> */
843 self->attrs[COLOR_toolcontext__ToolContext___error_count].l = p0; /* _error_count on <self:Object(ToolContext)> */
844 RET_LABEL1:(void)0;
845 }
846 RET_LABEL:;
847 }
848 /* method toolcontext#ToolContext#warning_count for (self: ToolContext): Int */
849 long toolcontext__ToolContext__warning_count(val* self) {
850 long var /* : Int */;
851 long var1 /* : Int */;
852 var1 = self->attrs[COLOR_toolcontext__ToolContext___warning_count].l; /* _warning_count on <self:ToolContext> */
853 var = var1;
854 RET_LABEL:;
855 return var;
856 }
857 /* method toolcontext#ToolContext#warning_count for (self: Object): Int */
858 long VIRTUAL_toolcontext__ToolContext__warning_count(val* self) {
859 long var /* : Int */;
860 long var1 /* : Int */;
861 long var3 /* : Int */;
862 { /* Inline toolcontext#ToolContext#warning_count (self) on <self:Object(ToolContext)> */
863 var3 = self->attrs[COLOR_toolcontext__ToolContext___warning_count].l; /* _warning_count on <self:Object(ToolContext)> */
864 var1 = var3;
865 RET_LABEL2:(void)0;
866 }
867 var = var1;
868 RET_LABEL:;
869 return var;
870 }
871 /* method toolcontext#ToolContext#warning_count= for (self: ToolContext, Int) */
872 void toolcontext__ToolContext__warning_count_61d(val* self, long p0) {
873 self->attrs[COLOR_toolcontext__ToolContext___warning_count].l = p0; /* _warning_count on <self:ToolContext> */
874 RET_LABEL:;
875 }
876 /* method toolcontext#ToolContext#warning_count= for (self: Object, Int) */
877 void VIRTUAL_toolcontext__ToolContext__warning_count_61d(val* self, long p0) {
878 { /* Inline toolcontext#ToolContext#warning_count= (self,p0) on <self:Object(ToolContext)> */
879 self->attrs[COLOR_toolcontext__ToolContext___warning_count].l = p0; /* _warning_count on <self:Object(ToolContext)> */
880 RET_LABEL1:(void)0;
881 }
882 RET_LABEL:;
883 }
884 /* method toolcontext#ToolContext#log_directory for (self: ToolContext): String */
885 val* toolcontext__ToolContext__log_directory(val* self) {
886 val* var /* : String */;
887 val* var1 /* : String */;
888 var1 = self->attrs[COLOR_toolcontext__ToolContext___log_directory].val; /* _log_directory on <self:ToolContext> */
889 if (unlikely(var1 == NULL)) {
890 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _log_directory");
891 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 101);
892 show_backtrace(1);
893 }
894 var = var1;
895 RET_LABEL:;
896 return var;
897 }
898 /* method toolcontext#ToolContext#log_directory for (self: Object): String */
899 val* VIRTUAL_toolcontext__ToolContext__log_directory(val* self) {
900 val* var /* : String */;
901 val* var1 /* : String */;
902 val* var3 /* : String */;
903 { /* Inline toolcontext#ToolContext#log_directory (self) on <self:Object(ToolContext)> */
904 var3 = self->attrs[COLOR_toolcontext__ToolContext___log_directory].val; /* _log_directory on <self:Object(ToolContext)> */
905 if (unlikely(var3 == NULL)) {
906 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _log_directory");
907 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 101);
908 show_backtrace(1);
909 }
910 var1 = var3;
911 RET_LABEL2:(void)0;
912 }
913 var = var1;
914 RET_LABEL:;
915 return var;
916 }
917 /* method toolcontext#ToolContext#log_directory= for (self: ToolContext, String) */
918 void toolcontext__ToolContext__log_directory_61d(val* self, val* p0) {
919 self->attrs[COLOR_toolcontext__ToolContext___log_directory].val = p0; /* _log_directory on <self:ToolContext> */
920 RET_LABEL:;
921 }
922 /* method toolcontext#ToolContext#log_directory= for (self: Object, String) */
923 void VIRTUAL_toolcontext__ToolContext__log_directory_61d(val* self, val* p0) {
924 { /* Inline toolcontext#ToolContext#log_directory= (self,p0) on <self:Object(ToolContext)> */
925 self->attrs[COLOR_toolcontext__ToolContext___log_directory].val = p0; /* _log_directory on <self:Object(ToolContext)> */
926 RET_LABEL1:(void)0;
927 }
928 RET_LABEL:;
929 }
930 /* method toolcontext#ToolContext#messages for (self: ToolContext): Array[Message] */
931 val* toolcontext__ToolContext__messages(val* self) {
932 val* var /* : Array[Message] */;
933 val* var1 /* : Array[Message] */;
934 var1 = self->attrs[COLOR_toolcontext__ToolContext___messages].val; /* _messages on <self:ToolContext> */
935 if (unlikely(var1 == NULL)) {
936 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _messages");
937 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 104);
938 show_backtrace(1);
939 }
940 var = var1;
941 RET_LABEL:;
942 return var;
943 }
944 /* method toolcontext#ToolContext#messages for (self: Object): Array[Message] */
945 val* VIRTUAL_toolcontext__ToolContext__messages(val* self) {
946 val* var /* : Array[Message] */;
947 val* var1 /* : Array[Message] */;
948 val* var3 /* : Array[Message] */;
949 { /* Inline toolcontext#ToolContext#messages (self) on <self:Object(ToolContext)> */
950 var3 = self->attrs[COLOR_toolcontext__ToolContext___messages].val; /* _messages on <self:Object(ToolContext)> */
951 if (unlikely(var3 == NULL)) {
952 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _messages");
953 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 104);
954 show_backtrace(1);
955 }
956 var1 = var3;
957 RET_LABEL2:(void)0;
958 }
959 var = var1;
960 RET_LABEL:;
961 return var;
962 }
963 /* method toolcontext#ToolContext#message_sorter for (self: ToolContext): Comparator */
964 val* toolcontext__ToolContext__message_sorter(val* self) {
965 val* var /* : Comparator */;
966 val* var1 /* : Comparator */;
967 var1 = self->attrs[COLOR_toolcontext__ToolContext___message_sorter].val; /* _message_sorter on <self:ToolContext> */
968 if (unlikely(var1 == NULL)) {
969 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _message_sorter");
970 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 106);
971 show_backtrace(1);
972 }
973 var = var1;
974 RET_LABEL:;
975 return var;
976 }
977 /* method toolcontext#ToolContext#message_sorter for (self: Object): Comparator */
978 val* VIRTUAL_toolcontext__ToolContext__message_sorter(val* self) {
979 val* var /* : Comparator */;
980 val* var1 /* : Comparator */;
981 val* var3 /* : Comparator */;
982 { /* Inline toolcontext#ToolContext#message_sorter (self) on <self:Object(ToolContext)> */
983 var3 = self->attrs[COLOR_toolcontext__ToolContext___message_sorter].val; /* _message_sorter on <self:Object(ToolContext)> */
984 if (unlikely(var3 == NULL)) {
985 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _message_sorter");
986 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 106);
987 show_backtrace(1);
988 }
989 var1 = var3;
990 RET_LABEL2:(void)0;
991 }
992 var = var1;
993 RET_LABEL:;
994 return var;
995 }
996 /* method toolcontext#ToolContext#check_errors for (self: ToolContext) */
997 void toolcontext__ToolContext__check_errors(val* self) {
998 val* var /* : Array[Message] */;
999 val* var2 /* : Array[Message] */;
1000 long var3 /* : Int */;
1001 long var5 /* : Int */;
1002 long var6 /* : Int */;
1003 short int var7 /* : Bool */;
1004 short int var9 /* : Bool */;
1005 int cltype;
1006 int idtype;
1007 const char* var_class_name;
1008 short int var10 /* : Bool */;
1009 val* var11 /* : Comparator */;
1010 val* var13 /* : Comparator */;
1011 val* var14 /* : Array[Message] */;
1012 val* var16 /* : Array[Message] */;
1013 val* var17 /* : Array[Message] */;
1014 val* var19 /* : Array[Message] */;
1015 val* var_ /* var : Array[Message] */;
1016 val* var20 /* : ArrayIterator[nullable Object] */;
1017 val* var_21 /* var : ArrayIterator[Message] */;
1018 short int var22 /* : Bool */;
1019 val* var23 /* : nullable Object */;
1020 val* var_m /* var m: Message */;
1021 val* var24 /* : OptionBool */;
1022 val* var26 /* : OptionBool */;
1023 val* var27 /* : nullable Object */;
1024 val* var29 /* : nullable Object */;
1025 short int var30 /* : Bool */;
1026 val* var31 /* : Sys */;
1027 val* var33 /* : Sys */;
1028 val* var34 /* : OStream */;
1029 val* var36 /* : OStream */;
1030 static val* varonce;
1031 val* var37 /* : String */;
1032 char* var38 /* : NativeString */;
1033 long var39 /* : Int */;
1034 val* var40 /* : FlatString */;
1035 val* var41 /* : Array[Object] */;
1036 long var42 /* : Int */;
1037 val* var43 /* : NativeArray[Object] */;
1038 val* var44 /* : String */;
1039 val* var45 /* : Sys */;
1040 val* var47 /* : Sys */;
1041 val* var48 /* : OStream */;
1042 val* var50 /* : OStream */;
1043 val* var51 /* : String */;
1044 static val* varonce52;
1045 val* var53 /* : String */;
1046 char* var54 /* : NativeString */;
1047 long var55 /* : Int */;
1048 val* var56 /* : FlatString */;
1049 val* var57 /* : Array[Object] */;
1050 long var58 /* : Int */;
1051 val* var59 /* : NativeArray[Object] */;
1052 val* var60 /* : String */;
1053 val* var62 /* : Array[Message] */;
1054 val* var64 /* : Array[Message] */;
1055 long var65 /* : Int */;
1056 long var67 /* : Int */;
1057 long var68 /* : Int */;
1058 short int var69 /* : Bool */;
1059 short int var71 /* : Bool */;
1060 int cltype72;
1061 int idtype73;
1062 const char* var_class_name74;
1063 short int var75 /* : Bool */;
1064 long var76 /* : Int */;
1065 {
1066 { /* Inline toolcontext#ToolContext#messages (self) on <self:ToolContext> */
1067 var2 = self->attrs[COLOR_toolcontext__ToolContext___messages].val; /* _messages on <self:ToolContext> */
1068 if (unlikely(var2 == NULL)) {
1069 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _messages");
1070 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 104);
1071 show_backtrace(1);
1072 }
1073 var = var2;
1074 RET_LABEL1:(void)0;
1075 }
1076 }
1077 {
1078 { /* Inline array#AbstractArrayRead#length (var) on <var:Array[Message]> */
1079 var5 = var->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var:Array[Message]> */
1080 var3 = var5;
1081 RET_LABEL4:(void)0;
1082 }
1083 }
1084 var6 = 0;
1085 {
1086 { /* Inline kernel#Int#> (var3,var6) on <var3:Int> */
1087 /* Covariant cast for argument 0 (i) <var6:Int> isa OTHER */
1088 /* <var6:Int> isa OTHER */
1089 var9 = 1; /* easy <var6:Int> isa OTHER*/
1090 if (unlikely(!var9)) {
1091 var_class_name = type_kernel__Int.name;
1092 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1093 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
1094 show_backtrace(1);
1095 }
1096 var10 = var3 > var6;
1097 var7 = var10;
1098 goto RET_LABEL8;
1099 RET_LABEL8:(void)0;
1100 }
1101 }
1102 if (var7){
1103 {
1104 { /* Inline toolcontext#ToolContext#message_sorter (self) on <self:ToolContext> */
1105 var13 = self->attrs[COLOR_toolcontext__ToolContext___message_sorter].val; /* _message_sorter on <self:ToolContext> */
1106 if (unlikely(var13 == NULL)) {
1107 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _message_sorter");
1108 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 106);
1109 show_backtrace(1);
1110 }
1111 var11 = var13;
1112 RET_LABEL12:(void)0;
1113 }
1114 }
1115 {
1116 { /* Inline toolcontext#ToolContext#messages (self) on <self:ToolContext> */
1117 var16 = self->attrs[COLOR_toolcontext__ToolContext___messages].val; /* _messages on <self:ToolContext> */
1118 if (unlikely(var16 == NULL)) {
1119 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _messages");
1120 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 104);
1121 show_backtrace(1);
1122 }
1123 var14 = var16;
1124 RET_LABEL15:(void)0;
1125 }
1126 }
1127 {
1128 sorter__Comparator__sort(var11, var14); /* Direct call sorter#Comparator#sort on <var11:Comparator>*/
1129 }
1130 {
1131 { /* Inline toolcontext#ToolContext#messages (self) on <self:ToolContext> */
1132 var19 = self->attrs[COLOR_toolcontext__ToolContext___messages].val; /* _messages on <self:ToolContext> */
1133 if (unlikely(var19 == NULL)) {
1134 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _messages");
1135 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 104);
1136 show_backtrace(1);
1137 }
1138 var17 = var19;
1139 RET_LABEL18:(void)0;
1140 }
1141 }
1142 var_ = var17;
1143 {
1144 var20 = array__AbstractArrayRead__iterator(var_);
1145 }
1146 var_21 = var20;
1147 for(;;) {
1148 {
1149 var22 = array__ArrayIterator__is_ok(var_21);
1150 }
1151 if (var22){
1152 {
1153 var23 = array__ArrayIterator__item(var_21);
1154 }
1155 var_m = var23;
1156 {
1157 { /* Inline toolcontext#ToolContext#opt_no_color (self) on <self:ToolContext> */
1158 var26 = self->attrs[COLOR_toolcontext__ToolContext___opt_no_color].val; /* _opt_no_color on <self:ToolContext> */
1159 if (unlikely(var26 == NULL)) {
1160 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_color");
1161 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 264);
1162 show_backtrace(1);
1163 }
1164 var24 = var26;
1165 RET_LABEL25:(void)0;
1166 }
1167 }
1168 {
1169 { /* Inline opts#Option#value (var24) on <var24:OptionBool> */
1170 var29 = var24->attrs[COLOR_opts__Option___value].val; /* _value on <var24:OptionBool> */
1171 var27 = var29;
1172 RET_LABEL28:(void)0;
1173 }
1174 }
1175 var30 = ((struct instance_kernel__Bool*)var27)->value; /* autounbox from nullable Object to Bool */;
1176 if (var30){
1177 {
1178 { /* Inline kernel#Object#sys (self) on <self:ToolContext> */
1179 var33 = glob_sys;
1180 var31 = var33;
1181 goto RET_LABEL32;
1182 RET_LABEL32:(void)0;
1183 }
1184 }
1185 {
1186 { /* Inline file#Sys#stderr (var31) on <var31:Sys> */
1187 var36 = var31->attrs[COLOR_file__Sys___stderr].val; /* _stderr on <var31:Sys> */
1188 if (unlikely(var36 == NULL)) {
1189 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stderr");
1190 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/file.nit", 637);
1191 show_backtrace(1);
1192 }
1193 var34 = var36;
1194 RET_LABEL35:(void)0;
1195 }
1196 }
1197 if (varonce) {
1198 var37 = varonce;
1199 } else {
1200 var38 = "\n";
1201 var39 = 1;
1202 var40 = string__NativeString__to_s_with_length(var38, var39);
1203 var37 = var40;
1204 varonce = var37;
1205 }
1206 var41 = NEW_array__Array(&type_array__Arraykernel__Object);
1207 { /* var41 = array_instance Array[Object] */
1208 var42 = 2;
1209 var43 = NEW_array__NativeArray(var42, &type_array__NativeArraykernel__Object);
1210 ((struct instance_array__NativeArray*)var43)->values[0] = (val*) var_m;
1211 ((struct instance_array__NativeArray*)var43)->values[1] = (val*) var37;
1212 {
1213 ((void (*)(val*, val*, long))(var41->class->vft[COLOR_array__Array__with_native]))(var41, var43, var42) /* with_native on <var41:Array[Object]>*/;
1214 }
1215 }
1216 {
1217 var44 = ((val* (*)(val*))(var41->class->vft[COLOR_string__Object__to_s]))(var41) /* to_s on <var41:Array[Object]>*/;
1218 }
1219 {
1220 file__OFStream__write(var34, var44); /* Direct call file#OFStream#write on <var34:OStream>*/
1221 }
1222 } else {
1223 {
1224 { /* Inline kernel#Object#sys (self) on <self:ToolContext> */
1225 var47 = glob_sys;
1226 var45 = var47;
1227 goto RET_LABEL46;
1228 RET_LABEL46:(void)0;
1229 }
1230 }
1231 {
1232 { /* Inline file#Sys#stderr (var45) on <var45:Sys> */
1233 var50 = var45->attrs[COLOR_file__Sys___stderr].val; /* _stderr on <var45:Sys> */
1234 if (unlikely(var50 == NULL)) {
1235 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stderr");
1236 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/file.nit", 637);
1237 show_backtrace(1);
1238 }
1239 var48 = var50;
1240 RET_LABEL49:(void)0;
1241 }
1242 }
1243 {
1244 var51 = toolcontext__Message__to_color_string(var_m);
1245 }
1246 if (varonce52) {
1247 var53 = varonce52;
1248 } else {
1249 var54 = "\n";
1250 var55 = 1;
1251 var56 = string__NativeString__to_s_with_length(var54, var55);
1252 var53 = var56;
1253 varonce52 = var53;
1254 }
1255 var57 = NEW_array__Array(&type_array__Arraykernel__Object);
1256 { /* var57 = array_instance Array[Object] */
1257 var58 = 2;
1258 var59 = NEW_array__NativeArray(var58, &type_array__NativeArraykernel__Object);
1259 ((struct instance_array__NativeArray*)var59)->values[0] = (val*) var51;
1260 ((struct instance_array__NativeArray*)var59)->values[1] = (val*) var53;
1261 {
1262 ((void (*)(val*, val*, long))(var57->class->vft[COLOR_array__Array__with_native]))(var57, var59, var58) /* with_native on <var57:Array[Object]>*/;
1263 }
1264 }
1265 {
1266 var60 = ((val* (*)(val*))(var57->class->vft[COLOR_string__Object__to_s]))(var57) /* to_s on <var57:Array[Object]>*/;
1267 }
1268 {
1269 file__OFStream__write(var48, var60); /* Direct call file#OFStream#write on <var48:OStream>*/
1270 }
1271 }
1272 {
1273 array__ArrayIterator__next(var_21); /* Direct call array#ArrayIterator#next on <var_21:ArrayIterator[Message]>*/
1274 }
1275 } else {
1276 goto BREAK_label;
1277 }
1278 }
1279 BREAK_label: (void)0;
1280 {
1281 { /* Inline abstract_collection#Iterator#finish (var_21) on <var_21:ArrayIterator[Message]> */
1282 RET_LABEL61:(void)0;
1283 }
1284 }
1285 {
1286 { /* Inline toolcontext#ToolContext#messages (self) on <self:ToolContext> */
1287 var64 = self->attrs[COLOR_toolcontext__ToolContext___messages].val; /* _messages on <self:ToolContext> */
1288 if (unlikely(var64 == NULL)) {
1289 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _messages");
1290 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 104);
1291 show_backtrace(1);
1292 }
1293 var62 = var64;
1294 RET_LABEL63:(void)0;
1295 }
1296 }
1297 {
1298 array__AbstractArray__clear(var62); /* Direct call array#AbstractArray#clear on <var62:Array[Message]>*/
1299 }
1300 } else {
1301 }
1302 {
1303 { /* Inline toolcontext#ToolContext#error_count (self) on <self:ToolContext> */
1304 var67 = self->attrs[COLOR_toolcontext__ToolContext___error_count].l; /* _error_count on <self:ToolContext> */
1305 var65 = var67;
1306 RET_LABEL66:(void)0;
1307 }
1308 }
1309 var68 = 0;
1310 {
1311 { /* Inline kernel#Int#> (var65,var68) on <var65:Int> */
1312 /* Covariant cast for argument 0 (i) <var68:Int> isa OTHER */
1313 /* <var68:Int> isa OTHER */
1314 var71 = 1; /* easy <var68:Int> isa OTHER*/
1315 if (unlikely(!var71)) {
1316 var_class_name74 = type_kernel__Int.name;
1317 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name74);
1318 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
1319 show_backtrace(1);
1320 }
1321 var75 = var65 > var68;
1322 var69 = var75;
1323 goto RET_LABEL70;
1324 RET_LABEL70:(void)0;
1325 }
1326 }
1327 if (var69){
1328 {
1329 toolcontext__ToolContext__errors_info(self); /* Direct call toolcontext#ToolContext#errors_info on <self:ToolContext>*/
1330 }
1331 var76 = 1;
1332 {
1333 { /* Inline kernel#Object#exit (self,var76) on <self:ToolContext> */
1334 exit(var76);
1335 RET_LABEL77:(void)0;
1336 }
1337 }
1338 } else {
1339 }
1340 RET_LABEL:;
1341 }
1342 /* method toolcontext#ToolContext#check_errors for (self: Object) */
1343 void VIRTUAL_toolcontext__ToolContext__check_errors(val* self) {
1344 toolcontext__ToolContext__check_errors(self); /* Direct call toolcontext#ToolContext#check_errors on <self:Object(ToolContext)>*/
1345 RET_LABEL:;
1346 }
1347 /* method toolcontext#ToolContext#errors_info for (self: ToolContext) */
1348 void toolcontext__ToolContext__errors_info(val* self) {
1349 short int var /* : Bool */;
1350 long var1 /* : Int */;
1351 long var3 /* : Int */;
1352 long var4 /* : Int */;
1353 short int var5 /* : Bool */;
1354 short int var6 /* : Bool */;
1355 short int var8 /* : Bool */;
1356 short int var_ /* var : Bool */;
1357 long var9 /* : Int */;
1358 long var11 /* : Int */;
1359 long var12 /* : Int */;
1360 short int var13 /* : Bool */;
1361 short int var14 /* : Bool */;
1362 short int var16 /* : Bool */;
1363 val* var17 /* : OptionBool */;
1364 val* var19 /* : OptionBool */;
1365 val* var20 /* : nullable Object */;
1366 val* var22 /* : nullable Object */;
1367 short int var23 /* : Bool */;
1368 val* var24 /* : Sys */;
1369 val* var26 /* : Sys */;
1370 val* var27 /* : OStream */;
1371 val* var29 /* : OStream */;
1372 static val* varonce;
1373 val* var30 /* : String */;
1374 char* var31 /* : NativeString */;
1375 long var32 /* : Int */;
1376 val* var33 /* : FlatString */;
1377 long var34 /* : Int */;
1378 long var36 /* : Int */;
1379 static val* varonce37;
1380 val* var38 /* : String */;
1381 char* var39 /* : NativeString */;
1382 long var40 /* : Int */;
1383 val* var41 /* : FlatString */;
1384 long var42 /* : Int */;
1385 long var44 /* : Int */;
1386 static val* varonce45;
1387 val* var46 /* : String */;
1388 char* var47 /* : NativeString */;
1389 long var48 /* : Int */;
1390 val* var49 /* : FlatString */;
1391 val* var50 /* : Array[Object] */;
1392 long var51 /* : Int */;
1393 val* var52 /* : NativeArray[Object] */;
1394 val* var53 /* : Object */;
1395 val* var54 /* : Object */;
1396 val* var55 /* : String */;
1397 {
1398 { /* Inline toolcontext#ToolContext#error_count (self) on <self:ToolContext> */
1399 var3 = self->attrs[COLOR_toolcontext__ToolContext___error_count].l; /* _error_count on <self:ToolContext> */
1400 var1 = var3;
1401 RET_LABEL2:(void)0;
1402 }
1403 }
1404 var4 = 0;
1405 {
1406 { /* Inline kernel#Int#== (var1,var4) on <var1:Int> */
1407 var8 = var1 == var4;
1408 var6 = var8;
1409 goto RET_LABEL7;
1410 RET_LABEL7:(void)0;
1411 }
1412 var5 = var6;
1413 }
1414 var_ = var5;
1415 if (var5){
1416 {
1417 { /* Inline toolcontext#ToolContext#warning_count (self) on <self:ToolContext> */
1418 var11 = self->attrs[COLOR_toolcontext__ToolContext___warning_count].l; /* _warning_count on <self:ToolContext> */
1419 var9 = var11;
1420 RET_LABEL10:(void)0;
1421 }
1422 }
1423 var12 = 0;
1424 {
1425 { /* Inline kernel#Int#== (var9,var12) on <var9:Int> */
1426 var16 = var9 == var12;
1427 var14 = var16;
1428 goto RET_LABEL15;
1429 RET_LABEL15:(void)0;
1430 }
1431 var13 = var14;
1432 }
1433 var = var13;
1434 } else {
1435 var = var_;
1436 }
1437 if (var){
1438 goto RET_LABEL;
1439 } else {
1440 }
1441 {
1442 { /* Inline toolcontext#ToolContext#opt_no_color (self) on <self:ToolContext> */
1443 var19 = self->attrs[COLOR_toolcontext__ToolContext___opt_no_color].val; /* _opt_no_color on <self:ToolContext> */
1444 if (unlikely(var19 == NULL)) {
1445 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_color");
1446 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 264);
1447 show_backtrace(1);
1448 }
1449 var17 = var19;
1450 RET_LABEL18:(void)0;
1451 }
1452 }
1453 {
1454 { /* Inline opts#Option#value (var17) on <var17:OptionBool> */
1455 var22 = var17->attrs[COLOR_opts__Option___value].val; /* _value on <var17:OptionBool> */
1456 var20 = var22;
1457 RET_LABEL21:(void)0;
1458 }
1459 }
1460 var23 = ((struct instance_kernel__Bool*)var20)->value; /* autounbox from nullable Object to Bool */;
1461 if (var23){
1462 goto RET_LABEL;
1463 } else {
1464 }
1465 {
1466 { /* Inline kernel#Object#sys (self) on <self:ToolContext> */
1467 var26 = glob_sys;
1468 var24 = var26;
1469 goto RET_LABEL25;
1470 RET_LABEL25:(void)0;
1471 }
1472 }
1473 {
1474 { /* Inline file#Sys#stderr (var24) on <var24:Sys> */
1475 var29 = var24->attrs[COLOR_file__Sys___stderr].val; /* _stderr on <var24:Sys> */
1476 if (unlikely(var29 == NULL)) {
1477 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stderr");
1478 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/file.nit", 637);
1479 show_backtrace(1);
1480 }
1481 var27 = var29;
1482 RET_LABEL28:(void)0;
1483 }
1484 }
1485 if (varonce) {
1486 var30 = varonce;
1487 } else {
1488 var31 = "Errors: ";
1489 var32 = 8;
1490 var33 = string__NativeString__to_s_with_length(var31, var32);
1491 var30 = var33;
1492 varonce = var30;
1493 }
1494 {
1495 { /* Inline toolcontext#ToolContext#error_count (self) on <self:ToolContext> */
1496 var36 = self->attrs[COLOR_toolcontext__ToolContext___error_count].l; /* _error_count on <self:ToolContext> */
1497 var34 = var36;
1498 RET_LABEL35:(void)0;
1499 }
1500 }
1501 if (varonce37) {
1502 var38 = varonce37;
1503 } else {
1504 var39 = ". Warnings: ";
1505 var40 = 12;
1506 var41 = string__NativeString__to_s_with_length(var39, var40);
1507 var38 = var41;
1508 varonce37 = var38;
1509 }
1510 {
1511 { /* Inline toolcontext#ToolContext#warning_count (self) on <self:ToolContext> */
1512 var44 = self->attrs[COLOR_toolcontext__ToolContext___warning_count].l; /* _warning_count on <self:ToolContext> */
1513 var42 = var44;
1514 RET_LABEL43:(void)0;
1515 }
1516 }
1517 if (varonce45) {
1518 var46 = varonce45;
1519 } else {
1520 var47 = ".\n";
1521 var48 = 2;
1522 var49 = string__NativeString__to_s_with_length(var47, var48);
1523 var46 = var49;
1524 varonce45 = var46;
1525 }
1526 var50 = NEW_array__Array(&type_array__Arraykernel__Object);
1527 { /* var50 = array_instance Array[Object] */
1528 var51 = 5;
1529 var52 = NEW_array__NativeArray(var51, &type_array__NativeArraykernel__Object);
1530 ((struct instance_array__NativeArray*)var52)->values[0] = (val*) var30;
1531 var53 = BOX_kernel__Int(var34); /* autobox from Int to Object */
1532 ((struct instance_array__NativeArray*)var52)->values[1] = (val*) var53;
1533 ((struct instance_array__NativeArray*)var52)->values[2] = (val*) var38;
1534 var54 = BOX_kernel__Int(var42); /* autobox from Int to Object */
1535 ((struct instance_array__NativeArray*)var52)->values[3] = (val*) var54;
1536 ((struct instance_array__NativeArray*)var52)->values[4] = (val*) var46;
1537 {
1538 ((void (*)(val*, val*, long))(var50->class->vft[COLOR_array__Array__with_native]))(var50, var52, var51) /* with_native on <var50:Array[Object]>*/;
1539 }
1540 }
1541 {
1542 var55 = ((val* (*)(val*))(var50->class->vft[COLOR_string__Object__to_s]))(var50) /* to_s on <var50:Array[Object]>*/;
1543 }
1544 {
1545 file__OFStream__write(var27, var55); /* Direct call file#OFStream#write on <var27:OStream>*/
1546 }
1547 RET_LABEL:;
1548 }
1549 /* method toolcontext#ToolContext#errors_info for (self: Object) */
1550 void VIRTUAL_toolcontext__ToolContext__errors_info(val* self) {
1551 toolcontext__ToolContext__errors_info(self); /* Direct call toolcontext#ToolContext#errors_info on <self:Object(ToolContext)>*/
1552 RET_LABEL:;
1553 }
1554 /* method toolcontext#ToolContext#error for (self: ToolContext, nullable Location, String) */
1555 void toolcontext__ToolContext__error(val* self, val* p0, val* p1) {
1556 val* var_l /* var l: nullable Location */;
1557 val* var_s /* var s: String */;
1558 val* var /* : Array[Message] */;
1559 val* var2 /* : Array[Message] */;
1560 val* var3 /* : Message */;
1561 val* var4 /* : null */;
1562 long var5 /* : Int */;
1563 long var7 /* : Int */;
1564 long var8 /* : Int */;
1565 long var9 /* : Int */;
1566 short int var11 /* : Bool */;
1567 int cltype;
1568 int idtype;
1569 const char* var_class_name;
1570 long var12 /* : Int */;
1571 val* var14 /* : OptionBool */;
1572 val* var16 /* : OptionBool */;
1573 val* var17 /* : nullable Object */;
1574 val* var19 /* : nullable Object */;
1575 short int var20 /* : Bool */;
1576 var_l = p0;
1577 var_s = p1;
1578 {
1579 { /* Inline toolcontext#ToolContext#messages (self) on <self:ToolContext> */
1580 var2 = self->attrs[COLOR_toolcontext__ToolContext___messages].val; /* _messages on <self:ToolContext> */
1581 if (unlikely(var2 == NULL)) {
1582 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _messages");
1583 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 104);
1584 show_backtrace(1);
1585 }
1586 var = var2;
1587 RET_LABEL1:(void)0;
1588 }
1589 }
1590 var3 = NEW_toolcontext__Message(&type_toolcontext__Message);
1591 var4 = NULL;
1592 {
1593 ((void (*)(val*, val*))(var3->class->vft[COLOR_toolcontext__Message__location_61d]))(var3, var_l) /* location= on <var3:Message>*/;
1594 }
1595 {
1596 ((void (*)(val*, val*))(var3->class->vft[COLOR_toolcontext__Message__tag_61d]))(var3, var4) /* tag= on <var3:Message>*/;
1597 }
1598 {
1599 ((void (*)(val*, val*))(var3->class->vft[COLOR_toolcontext__Message__text_61d]))(var3, var_s) /* text= on <var3:Message>*/;
1600 }
1601 {
1602 ((void (*)(val*))(var3->class->vft[COLOR_kernel__Object__init]))(var3) /* init on <var3:Message>*/;
1603 }
1604 {
1605 array__Array__add(var, var3); /* Direct call array#Array#add on <var:Array[Message]>*/
1606 }
1607 {
1608 { /* Inline toolcontext#ToolContext#error_count (self) on <self:ToolContext> */
1609 var7 = self->attrs[COLOR_toolcontext__ToolContext___error_count].l; /* _error_count on <self:ToolContext> */
1610 var5 = var7;
1611 RET_LABEL6:(void)0;
1612 }
1613 }
1614 var8 = 1;
1615 {
1616 { /* Inline kernel#Int#+ (var5,var8) on <var5:Int> */
1617 /* Covariant cast for argument 0 (i) <var8:Int> isa OTHER */
1618 /* <var8:Int> isa OTHER */
1619 var11 = 1; /* easy <var8:Int> isa OTHER*/
1620 if (unlikely(!var11)) {
1621 var_class_name = type_kernel__Int.name;
1622 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1623 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
1624 show_backtrace(1);
1625 }
1626 var12 = var5 + var8;
1627 var9 = var12;
1628 goto RET_LABEL10;
1629 RET_LABEL10:(void)0;
1630 }
1631 }
1632 {
1633 { /* Inline toolcontext#ToolContext#error_count= (self,var9) on <self:ToolContext> */
1634 self->attrs[COLOR_toolcontext__ToolContext___error_count].l = var9; /* _error_count on <self:ToolContext> */
1635 RET_LABEL13:(void)0;
1636 }
1637 }
1638 {
1639 { /* Inline toolcontext#ToolContext#opt_stop_on_first_error (self) on <self:ToolContext> */
1640 var16 = self->attrs[COLOR_toolcontext__ToolContext___opt_stop_on_first_error].val; /* _opt_stop_on_first_error on <self:ToolContext> */
1641 if (unlikely(var16 == NULL)) {
1642 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_stop_on_first_error");
1643 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 261);
1644 show_backtrace(1);
1645 }
1646 var14 = var16;
1647 RET_LABEL15:(void)0;
1648 }
1649 }
1650 {
1651 { /* Inline opts#Option#value (var14) on <var14:OptionBool> */
1652 var19 = var14->attrs[COLOR_opts__Option___value].val; /* _value on <var14:OptionBool> */
1653 var17 = var19;
1654 RET_LABEL18:(void)0;
1655 }
1656 }
1657 var20 = ((struct instance_kernel__Bool*)var17)->value; /* autounbox from nullable Object to Bool */;
1658 if (var20){
1659 {
1660 toolcontext__ToolContext__check_errors(self); /* Direct call toolcontext#ToolContext#check_errors on <self:ToolContext>*/
1661 }
1662 } else {
1663 }
1664 RET_LABEL:;
1665 }
1666 /* method toolcontext#ToolContext#error for (self: Object, nullable Location, String) */
1667 void VIRTUAL_toolcontext__ToolContext__error(val* self, val* p0, val* p1) {
1668 toolcontext__ToolContext__error(self, p0, p1); /* Direct call toolcontext#ToolContext#error on <self:Object(ToolContext)>*/
1669 RET_LABEL:;
1670 }
1671 /* method toolcontext#ToolContext#fatal_error for (self: ToolContext, nullable Location, String) */
1672 void toolcontext__ToolContext__fatal_error(val* self, val* p0, val* p1) {
1673 val* var_l /* var l: nullable Location */;
1674 val* var_s /* var s: String */;
1675 var_l = p0;
1676 var_s = p1;
1677 {
1678 toolcontext__ToolContext__error(self, var_l, var_s); /* Direct call toolcontext#ToolContext#error on <self:ToolContext>*/
1679 }
1680 {
1681 toolcontext__ToolContext__check_errors(self); /* Direct call toolcontext#ToolContext#check_errors on <self:ToolContext>*/
1682 }
1683 RET_LABEL:;
1684 }
1685 /* method toolcontext#ToolContext#fatal_error for (self: Object, nullable Location, String) */
1686 void VIRTUAL_toolcontext__ToolContext__fatal_error(val* self, val* p0, val* p1) {
1687 toolcontext__ToolContext__fatal_error(self, p0, p1); /* Direct call toolcontext#ToolContext#fatal_error on <self:Object(ToolContext)>*/
1688 RET_LABEL:;
1689 }
1690 /* method toolcontext#ToolContext#warning for (self: ToolContext, nullable Location, String, String) */
1691 void toolcontext__ToolContext__warning(val* self, val* p0, val* p1, val* p2) {
1692 val* var_l /* var l: nullable Location */;
1693 val* var_tag /* var tag: String */;
1694 val* var_text /* var text: String */;
1695 val* var /* : OptionArray */;
1696 val* var2 /* : OptionArray */;
1697 val* var3 /* : nullable Object */;
1698 val* var5 /* : nullable Object */;
1699 static val* varonce;
1700 val* var6 /* : String */;
1701 char* var7 /* : NativeString */;
1702 long var8 /* : Int */;
1703 val* var9 /* : FlatString */;
1704 val* var10 /* : Array[Object] */;
1705 long var11 /* : Int */;
1706 val* var12 /* : NativeArray[Object] */;
1707 val* var13 /* : String */;
1708 short int var14 /* : Bool */;
1709 short int var15 /* : Bool */;
1710 val* var16 /* : OptionArray */;
1711 val* var18 /* : OptionArray */;
1712 val* var19 /* : nullable Object */;
1713 val* var21 /* : nullable Object */;
1714 short int var22 /* : Bool */;
1715 short int var23 /* : Bool */;
1716 short int var_ /* var : Bool */;
1717 val* var24 /* : OptionCount */;
1718 val* var26 /* : OptionCount */;
1719 val* var27 /* : nullable Object */;
1720 val* var29 /* : nullable Object */;
1721 long var30 /* : Int */;
1722 short int var31 /* : Bool */;
1723 short int var32 /* : Bool */;
1724 short int var34 /* : Bool */;
1725 long var35 /* : Int */;
1726 val* var36 /* : Array[Message] */;
1727 val* var38 /* : Array[Message] */;
1728 val* var39 /* : Message */;
1729 long var40 /* : Int */;
1730 long var42 /* : Int */;
1731 long var43 /* : Int */;
1732 long var44 /* : Int */;
1733 short int var46 /* : Bool */;
1734 int cltype;
1735 int idtype;
1736 const char* var_class_name;
1737 long var47 /* : Int */;
1738 val* var49 /* : OptionBool */;
1739 val* var51 /* : OptionBool */;
1740 val* var52 /* : nullable Object */;
1741 val* var54 /* : nullable Object */;
1742 short int var55 /* : Bool */;
1743 var_l = p0;
1744 var_tag = p1;
1745 var_text = p2;
1746 {
1747 { /* Inline toolcontext#ToolContext#opt_warning (self) on <self:ToolContext> */
1748 var2 = self->attrs[COLOR_toolcontext__ToolContext___opt_warning].val; /* _opt_warning on <self:ToolContext> */
1749 if (unlikely(var2 == NULL)) {
1750 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_warning");
1751 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 237);
1752 show_backtrace(1);
1753 }
1754 var = var2;
1755 RET_LABEL1:(void)0;
1756 }
1757 }
1758 {
1759 { /* Inline opts#Option#value (var) on <var:OptionArray> */
1760 var5 = var->attrs[COLOR_opts__Option___value].val; /* _value on <var:OptionArray> */
1761 var3 = var5;
1762 RET_LABEL4:(void)0;
1763 }
1764 }
1765 if (varonce) {
1766 var6 = varonce;
1767 } else {
1768 var7 = "no-";
1769 var8 = 3;
1770 var9 = string__NativeString__to_s_with_length(var7, var8);
1771 var6 = var9;
1772 varonce = var6;
1773 }
1774 var10 = NEW_array__Array(&type_array__Arraykernel__Object);
1775 { /* var10 = array_instance Array[Object] */
1776 var11 = 2;
1777 var12 = NEW_array__NativeArray(var11, &type_array__NativeArraykernel__Object);
1778 ((struct instance_array__NativeArray*)var12)->values[0] = (val*) var6;
1779 ((struct instance_array__NativeArray*)var12)->values[1] = (val*) var_tag;
1780 {
1781 ((void (*)(val*, val*, long))(var10->class->vft[COLOR_array__Array__with_native]))(var10, var12, var11) /* with_native on <var10:Array[Object]>*/;
1782 }
1783 }
1784 {
1785 var13 = ((val* (*)(val*))(var10->class->vft[COLOR_string__Object__to_s]))(var10) /* to_s on <var10:Array[Object]>*/;
1786 }
1787 {
1788 var14 = array__AbstractArrayRead__has(var3, var13);
1789 }
1790 if (var14){
1791 goto RET_LABEL;
1792 } else {
1793 }
1794 {
1795 { /* Inline toolcontext#ToolContext#opt_warning (self) on <self:ToolContext> */
1796 var18 = self->attrs[COLOR_toolcontext__ToolContext___opt_warning].val; /* _opt_warning on <self:ToolContext> */
1797 if (unlikely(var18 == NULL)) {
1798 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_warning");
1799 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 237);
1800 show_backtrace(1);
1801 }
1802 var16 = var18;
1803 RET_LABEL17:(void)0;
1804 }
1805 }
1806 {
1807 { /* Inline opts#Option#value (var16) on <var16:OptionArray> */
1808 var21 = var16->attrs[COLOR_opts__Option___value].val; /* _value on <var16:OptionArray> */
1809 var19 = var21;
1810 RET_LABEL20:(void)0;
1811 }
1812 }
1813 {
1814 var22 = array__AbstractArrayRead__has(var19, var_tag);
1815 }
1816 var23 = !var22;
1817 var_ = var23;
1818 if (var23){
1819 {
1820 { /* Inline toolcontext#ToolContext#opt_warn (self) on <self:ToolContext> */
1821 var26 = self->attrs[COLOR_toolcontext__ToolContext___opt_warn].val; /* _opt_warn on <self:ToolContext> */
1822 if (unlikely(var26 == NULL)) {
1823 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_warn");
1824 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 234);
1825 show_backtrace(1);
1826 }
1827 var24 = var26;
1828 RET_LABEL25:(void)0;
1829 }
1830 }
1831 {
1832 { /* Inline opts#Option#value (var24) on <var24:OptionCount> */
1833 var29 = var24->attrs[COLOR_opts__Option___value].val; /* _value on <var24:OptionCount> */
1834 var27 = var29;
1835 RET_LABEL28:(void)0;
1836 }
1837 }
1838 var30 = 0;
1839 {
1840 { /* Inline kernel#Int#== (var27,var30) on <var27:nullable Object(Int)> */
1841 var34 = (var27 != NULL) && (var27->class == &class_kernel__Int);
1842 if (var34) {
1843 var35 = ((struct instance_kernel__Int*)var27)->value; /* autounbox from nullable Object to Int */;
1844 var34 = (var35 == var30);
1845 }
1846 var32 = var34;
1847 goto RET_LABEL33;
1848 RET_LABEL33:(void)0;
1849 }
1850 var31 = var32;
1851 }
1852 var15 = var31;
1853 } else {
1854 var15 = var_;
1855 }
1856 if (var15){
1857 goto RET_LABEL;
1858 } else {
1859 }
1860 {
1861 { /* Inline toolcontext#ToolContext#messages (self) on <self:ToolContext> */
1862 var38 = self->attrs[COLOR_toolcontext__ToolContext___messages].val; /* _messages on <self:ToolContext> */
1863 if (unlikely(var38 == NULL)) {
1864 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _messages");
1865 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 104);
1866 show_backtrace(1);
1867 }
1868 var36 = var38;
1869 RET_LABEL37:(void)0;
1870 }
1871 }
1872 var39 = NEW_toolcontext__Message(&type_toolcontext__Message);
1873 {
1874 ((void (*)(val*, val*))(var39->class->vft[COLOR_toolcontext__Message__location_61d]))(var39, var_l) /* location= on <var39:Message>*/;
1875 }
1876 {
1877 ((void (*)(val*, val*))(var39->class->vft[COLOR_toolcontext__Message__tag_61d]))(var39, var_tag) /* tag= on <var39:Message>*/;
1878 }
1879 {
1880 ((void (*)(val*, val*))(var39->class->vft[COLOR_toolcontext__Message__text_61d]))(var39, var_text) /* text= on <var39:Message>*/;
1881 }
1882 {
1883 ((void (*)(val*))(var39->class->vft[COLOR_kernel__Object__init]))(var39) /* init on <var39:Message>*/;
1884 }
1885 {
1886 array__Array__add(var36, var39); /* Direct call array#Array#add on <var36:Array[Message]>*/
1887 }
1888 {
1889 { /* Inline toolcontext#ToolContext#warning_count (self) on <self:ToolContext> */
1890 var42 = self->attrs[COLOR_toolcontext__ToolContext___warning_count].l; /* _warning_count on <self:ToolContext> */
1891 var40 = var42;
1892 RET_LABEL41:(void)0;
1893 }
1894 }
1895 var43 = 1;
1896 {
1897 { /* Inline kernel#Int#+ (var40,var43) on <var40:Int> */
1898 /* Covariant cast for argument 0 (i) <var43:Int> isa OTHER */
1899 /* <var43:Int> isa OTHER */
1900 var46 = 1; /* easy <var43:Int> isa OTHER*/
1901 if (unlikely(!var46)) {
1902 var_class_name = type_kernel__Int.name;
1903 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1904 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
1905 show_backtrace(1);
1906 }
1907 var47 = var40 + var43;
1908 var44 = var47;
1909 goto RET_LABEL45;
1910 RET_LABEL45:(void)0;
1911 }
1912 }
1913 {
1914 { /* Inline toolcontext#ToolContext#warning_count= (self,var44) on <self:ToolContext> */
1915 self->attrs[COLOR_toolcontext__ToolContext___warning_count].l = var44; /* _warning_count on <self:ToolContext> */
1916 RET_LABEL48:(void)0;
1917 }
1918 }
1919 {
1920 { /* Inline toolcontext#ToolContext#opt_stop_on_first_error (self) on <self:ToolContext> */
1921 var51 = self->attrs[COLOR_toolcontext__ToolContext___opt_stop_on_first_error].val; /* _opt_stop_on_first_error on <self:ToolContext> */
1922 if (unlikely(var51 == NULL)) {
1923 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_stop_on_first_error");
1924 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 261);
1925 show_backtrace(1);
1926 }
1927 var49 = var51;
1928 RET_LABEL50:(void)0;
1929 }
1930 }
1931 {
1932 { /* Inline opts#Option#value (var49) on <var49:OptionBool> */
1933 var54 = var49->attrs[COLOR_opts__Option___value].val; /* _value on <var49:OptionBool> */
1934 var52 = var54;
1935 RET_LABEL53:(void)0;
1936 }
1937 }
1938 var55 = ((struct instance_kernel__Bool*)var52)->value; /* autounbox from nullable Object to Bool */;
1939 if (var55){
1940 {
1941 toolcontext__ToolContext__check_errors(self); /* Direct call toolcontext#ToolContext#check_errors on <self:ToolContext>*/
1942 }
1943 } else {
1944 }
1945 RET_LABEL:;
1946 }
1947 /* method toolcontext#ToolContext#warning for (self: Object, nullable Location, String, String) */
1948 void VIRTUAL_toolcontext__ToolContext__warning(val* self, val* p0, val* p1, val* p2) {
1949 toolcontext__ToolContext__warning(self, p0, p1, p2); /* Direct call toolcontext#ToolContext#warning on <self:Object(ToolContext)>*/
1950 RET_LABEL:;
1951 }
1952 /* method toolcontext#ToolContext#advice for (self: ToolContext, nullable Location, String, String) */
1953 void toolcontext__ToolContext__advice(val* self, val* p0, val* p1, val* p2) {
1954 val* var_l /* var l: nullable Location */;
1955 val* var_tag /* var tag: String */;
1956 val* var_text /* var text: String */;
1957 val* var /* : OptionArray */;
1958 val* var2 /* : OptionArray */;
1959 val* var3 /* : nullable Object */;
1960 val* var5 /* : nullable Object */;
1961 static val* varonce;
1962 val* var6 /* : String */;
1963 char* var7 /* : NativeString */;
1964 long var8 /* : Int */;
1965 val* var9 /* : FlatString */;
1966 val* var10 /* : Array[Object] */;
1967 long var11 /* : Int */;
1968 val* var12 /* : NativeArray[Object] */;
1969 val* var13 /* : String */;
1970 short int var14 /* : Bool */;
1971 short int var15 /* : Bool */;
1972 val* var16 /* : OptionArray */;
1973 val* var18 /* : OptionArray */;
1974 val* var19 /* : nullable Object */;
1975 val* var21 /* : nullable Object */;
1976 short int var22 /* : Bool */;
1977 short int var23 /* : Bool */;
1978 short int var_ /* var : Bool */;
1979 val* var24 /* : OptionCount */;
1980 val* var26 /* : OptionCount */;
1981 val* var27 /* : nullable Object */;
1982 val* var29 /* : nullable Object */;
1983 long var30 /* : Int */;
1984 short int var31 /* : Bool */;
1985 short int var33 /* : Bool */;
1986 int cltype;
1987 int idtype;
1988 const char* var_class_name;
1989 long var34 /* : Int */;
1990 short int var35 /* : Bool */;
1991 val* var36 /* : Array[Message] */;
1992 val* var38 /* : Array[Message] */;
1993 val* var39 /* : Message */;
1994 long var40 /* : Int */;
1995 long var42 /* : Int */;
1996 long var43 /* : Int */;
1997 long var44 /* : Int */;
1998 short int var46 /* : Bool */;
1999 int cltype47;
2000 int idtype48;
2001 const char* var_class_name49;
2002 long var50 /* : Int */;
2003 val* var52 /* : OptionBool */;
2004 val* var54 /* : OptionBool */;
2005 val* var55 /* : nullable Object */;
2006 val* var57 /* : nullable Object */;
2007 short int var58 /* : Bool */;
2008 var_l = p0;
2009 var_tag = p1;
2010 var_text = p2;
2011 {
2012 { /* Inline toolcontext#ToolContext#opt_warning (self) on <self:ToolContext> */
2013 var2 = self->attrs[COLOR_toolcontext__ToolContext___opt_warning].val; /* _opt_warning on <self:ToolContext> */
2014 if (unlikely(var2 == NULL)) {
2015 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_warning");
2016 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 237);
2017 show_backtrace(1);
2018 }
2019 var = var2;
2020 RET_LABEL1:(void)0;
2021 }
2022 }
2023 {
2024 { /* Inline opts#Option#value (var) on <var:OptionArray> */
2025 var5 = var->attrs[COLOR_opts__Option___value].val; /* _value on <var:OptionArray> */
2026 var3 = var5;
2027 RET_LABEL4:(void)0;
2028 }
2029 }
2030 if (varonce) {
2031 var6 = varonce;
2032 } else {
2033 var7 = "no-";
2034 var8 = 3;
2035 var9 = string__NativeString__to_s_with_length(var7, var8);
2036 var6 = var9;
2037 varonce = var6;
2038 }
2039 var10 = NEW_array__Array(&type_array__Arraykernel__Object);
2040 { /* var10 = array_instance Array[Object] */
2041 var11 = 2;
2042 var12 = NEW_array__NativeArray(var11, &type_array__NativeArraykernel__Object);
2043 ((struct instance_array__NativeArray*)var12)->values[0] = (val*) var6;
2044 ((struct instance_array__NativeArray*)var12)->values[1] = (val*) var_tag;
2045 {
2046 ((void (*)(val*, val*, long))(var10->class->vft[COLOR_array__Array__with_native]))(var10, var12, var11) /* with_native on <var10:Array[Object]>*/;
2047 }
2048 }
2049 {
2050 var13 = ((val* (*)(val*))(var10->class->vft[COLOR_string__Object__to_s]))(var10) /* to_s on <var10:Array[Object]>*/;
2051 }
2052 {
2053 var14 = array__AbstractArrayRead__has(var3, var13);
2054 }
2055 if (var14){
2056 goto RET_LABEL;
2057 } else {
2058 }
2059 {
2060 { /* Inline toolcontext#ToolContext#opt_warning (self) on <self:ToolContext> */
2061 var18 = self->attrs[COLOR_toolcontext__ToolContext___opt_warning].val; /* _opt_warning on <self:ToolContext> */
2062 if (unlikely(var18 == NULL)) {
2063 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_warning");
2064 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 237);
2065 show_backtrace(1);
2066 }
2067 var16 = var18;
2068 RET_LABEL17:(void)0;
2069 }
2070 }
2071 {
2072 { /* Inline opts#Option#value (var16) on <var16:OptionArray> */
2073 var21 = var16->attrs[COLOR_opts__Option___value].val; /* _value on <var16:OptionArray> */
2074 var19 = var21;
2075 RET_LABEL20:(void)0;
2076 }
2077 }
2078 {
2079 var22 = array__AbstractArrayRead__has(var19, var_tag);
2080 }
2081 var23 = !var22;
2082 var_ = var23;
2083 if (var23){
2084 {
2085 { /* Inline toolcontext#ToolContext#opt_warn (self) on <self:ToolContext> */
2086 var26 = self->attrs[COLOR_toolcontext__ToolContext___opt_warn].val; /* _opt_warn on <self:ToolContext> */
2087 if (unlikely(var26 == NULL)) {
2088 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_warn");
2089 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 234);
2090 show_backtrace(1);
2091 }
2092 var24 = var26;
2093 RET_LABEL25:(void)0;
2094 }
2095 }
2096 {
2097 { /* Inline opts#Option#value (var24) on <var24:OptionCount> */
2098 var29 = var24->attrs[COLOR_opts__Option___value].val; /* _value on <var24:OptionCount> */
2099 var27 = var29;
2100 RET_LABEL28:(void)0;
2101 }
2102 }
2103 var30 = 1;
2104 {
2105 { /* Inline kernel#Int#<= (var27,var30) on <var27:nullable Object(Int)> */
2106 /* Covariant cast for argument 0 (i) <var30:Int> isa OTHER */
2107 /* <var30:Int> isa OTHER */
2108 var33 = 1; /* easy <var30:Int> isa OTHER*/
2109 if (unlikely(!var33)) {
2110 var_class_name = type_kernel__Int.name;
2111 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2112 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 370);
2113 show_backtrace(1);
2114 }
2115 var34 = ((struct instance_kernel__Int*)var27)->value; /* autounbox from nullable Object to Int */;
2116 var35 = var34 <= var30;
2117 var31 = var35;
2118 goto RET_LABEL32;
2119 RET_LABEL32:(void)0;
2120 }
2121 }
2122 var15 = var31;
2123 } else {
2124 var15 = var_;
2125 }
2126 if (var15){
2127 goto RET_LABEL;
2128 } else {
2129 }
2130 {
2131 { /* Inline toolcontext#ToolContext#messages (self) on <self:ToolContext> */
2132 var38 = self->attrs[COLOR_toolcontext__ToolContext___messages].val; /* _messages on <self:ToolContext> */
2133 if (unlikely(var38 == NULL)) {
2134 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _messages");
2135 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 104);
2136 show_backtrace(1);
2137 }
2138 var36 = var38;
2139 RET_LABEL37:(void)0;
2140 }
2141 }
2142 var39 = NEW_toolcontext__Message(&type_toolcontext__Message);
2143 {
2144 ((void (*)(val*, val*))(var39->class->vft[COLOR_toolcontext__Message__location_61d]))(var39, var_l) /* location= on <var39:Message>*/;
2145 }
2146 {
2147 ((void (*)(val*, val*))(var39->class->vft[COLOR_toolcontext__Message__tag_61d]))(var39, var_tag) /* tag= on <var39:Message>*/;
2148 }
2149 {
2150 ((void (*)(val*, val*))(var39->class->vft[COLOR_toolcontext__Message__text_61d]))(var39, var_text) /* text= on <var39:Message>*/;
2151 }
2152 {
2153 ((void (*)(val*))(var39->class->vft[COLOR_kernel__Object__init]))(var39) /* init on <var39:Message>*/;
2154 }
2155 {
2156 array__Array__add(var36, var39); /* Direct call array#Array#add on <var36:Array[Message]>*/
2157 }
2158 {
2159 { /* Inline toolcontext#ToolContext#warning_count (self) on <self:ToolContext> */
2160 var42 = self->attrs[COLOR_toolcontext__ToolContext___warning_count].l; /* _warning_count on <self:ToolContext> */
2161 var40 = var42;
2162 RET_LABEL41:(void)0;
2163 }
2164 }
2165 var43 = 1;
2166 {
2167 { /* Inline kernel#Int#+ (var40,var43) on <var40:Int> */
2168 /* Covariant cast for argument 0 (i) <var43:Int> isa OTHER */
2169 /* <var43:Int> isa OTHER */
2170 var46 = 1; /* easy <var43:Int> isa OTHER*/
2171 if (unlikely(!var46)) {
2172 var_class_name49 = type_kernel__Int.name;
2173 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name49);
2174 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
2175 show_backtrace(1);
2176 }
2177 var50 = var40 + var43;
2178 var44 = var50;
2179 goto RET_LABEL45;
2180 RET_LABEL45:(void)0;
2181 }
2182 }
2183 {
2184 { /* Inline toolcontext#ToolContext#warning_count= (self,var44) on <self:ToolContext> */
2185 self->attrs[COLOR_toolcontext__ToolContext___warning_count].l = var44; /* _warning_count on <self:ToolContext> */
2186 RET_LABEL51:(void)0;
2187 }
2188 }
2189 {
2190 { /* Inline toolcontext#ToolContext#opt_stop_on_first_error (self) on <self:ToolContext> */
2191 var54 = self->attrs[COLOR_toolcontext__ToolContext___opt_stop_on_first_error].val; /* _opt_stop_on_first_error on <self:ToolContext> */
2192 if (unlikely(var54 == NULL)) {
2193 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_stop_on_first_error");
2194 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 261);
2195 show_backtrace(1);
2196 }
2197 var52 = var54;
2198 RET_LABEL53:(void)0;
2199 }
2200 }
2201 {
2202 { /* Inline opts#Option#value (var52) on <var52:OptionBool> */
2203 var57 = var52->attrs[COLOR_opts__Option___value].val; /* _value on <var52:OptionBool> */
2204 var55 = var57;
2205 RET_LABEL56:(void)0;
2206 }
2207 }
2208 var58 = ((struct instance_kernel__Bool*)var55)->value; /* autounbox from nullable Object to Bool */;
2209 if (var58){
2210 {
2211 toolcontext__ToolContext__check_errors(self); /* Direct call toolcontext#ToolContext#check_errors on <self:ToolContext>*/
2212 }
2213 } else {
2214 }
2215 RET_LABEL:;
2216 }
2217 /* method toolcontext#ToolContext#advice for (self: Object, nullable Location, String, String) */
2218 void VIRTUAL_toolcontext__ToolContext__advice(val* self, val* p0, val* p1, val* p2) {
2219 toolcontext__ToolContext__advice(self, p0, p1, p2); /* Direct call toolcontext#ToolContext#advice on <self:Object(ToolContext)>*/
2220 RET_LABEL:;
2221 }
2222 /* method toolcontext#ToolContext#info for (self: ToolContext, String, Int) */
2223 void toolcontext__ToolContext__info(val* self, val* p0, long p1) {
2224 val* var_s /* var s: String */;
2225 long var_level /* var level: Int */;
2226 long var /* : Int */;
2227 long var2 /* : Int */;
2228 short int var3 /* : Bool */;
2229 short int var5 /* : Bool */;
2230 int cltype;
2231 int idtype;
2232 const char* var_class_name;
2233 short int var6 /* : Bool */;
2234 val* var7 /* : Array[Object] */;
2235 long var8 /* : Int */;
2236 val* var9 /* : NativeArray[Object] */;
2237 val* var10 /* : String */;
2238 var_s = p0;
2239 var_level = p1;
2240 {
2241 { /* Inline toolcontext#ToolContext#verbose_level (self) on <self:ToolContext> */
2242 var2 = self->attrs[COLOR_toolcontext__ToolContext___verbose_level].l; /* _verbose_level on <self:ToolContext> */
2243 var = var2;
2244 RET_LABEL1:(void)0;
2245 }
2246 }
2247 {
2248 { /* Inline kernel#Int#<= (var_level,var) on <var_level:Int> */
2249 /* Covariant cast for argument 0 (i) <var:Int> isa OTHER */
2250 /* <var:Int> isa OTHER */
2251 var5 = 1; /* easy <var:Int> isa OTHER*/
2252 if (unlikely(!var5)) {
2253 var_class_name = type_kernel__Int.name;
2254 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2255 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 370);
2256 show_backtrace(1);
2257 }
2258 var6 = var_level <= var;
2259 var3 = var6;
2260 goto RET_LABEL4;
2261 RET_LABEL4:(void)0;
2262 }
2263 }
2264 if (var3){
2265 var7 = NEW_array__Array(&type_array__Arraykernel__Object);
2266 { /* var7 = array_instance Array[Object] */
2267 var8 = 1;
2268 var9 = NEW_array__NativeArray(var8, &type_array__NativeArraykernel__Object);
2269 ((struct instance_array__NativeArray*)var9)->values[0] = (val*) var_s;
2270 {
2271 ((void (*)(val*, val*, long))(var7->class->vft[COLOR_array__Array__with_native]))(var7, var9, var8) /* with_native on <var7:Array[Object]>*/;
2272 }
2273 }
2274 {
2275 var10 = ((val* (*)(val*))(var7->class->vft[COLOR_string__Object__to_s]))(var7) /* to_s on <var7:Array[Object]>*/;
2276 }
2277 {
2278 file__Object__print(self, var10); /* Direct call file#Object#print on <self:ToolContext>*/
2279 }
2280 } else {
2281 }
2282 RET_LABEL:;
2283 }
2284 /* method toolcontext#ToolContext#info for (self: Object, String, Int) */
2285 void VIRTUAL_toolcontext__ToolContext__info(val* self, val* p0, long p1) {
2286 toolcontext__ToolContext__info(self, p0, p1); /* Direct call toolcontext#ToolContext#info on <self:Object(ToolContext)>*/
2287 RET_LABEL:;
2288 }
2289 /* method toolcontext#ToolContext#option_context for (self: ToolContext): OptionContext */
2290 val* toolcontext__ToolContext__option_context(val* self) {
2291 val* var /* : OptionContext */;
2292 val* var1 /* : OptionContext */;
2293 var1 = self->attrs[COLOR_toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
2294 if (unlikely(var1 == NULL)) {
2295 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
2296 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 231);
2297 show_backtrace(1);
2298 }
2299 var = var1;
2300 RET_LABEL:;
2301 return var;
2302 }
2303 /* method toolcontext#ToolContext#option_context for (self: Object): OptionContext */
2304 val* VIRTUAL_toolcontext__ToolContext__option_context(val* self) {
2305 val* var /* : OptionContext */;
2306 val* var1 /* : OptionContext */;
2307 val* var3 /* : OptionContext */;
2308 { /* Inline toolcontext#ToolContext#option_context (self) on <self:Object(ToolContext)> */
2309 var3 = self->attrs[COLOR_toolcontext__ToolContext___option_context].val; /* _option_context on <self:Object(ToolContext)> */
2310 if (unlikely(var3 == NULL)) {
2311 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
2312 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 231);
2313 show_backtrace(1);
2314 }
2315 var1 = var3;
2316 RET_LABEL2:(void)0;
2317 }
2318 var = var1;
2319 RET_LABEL:;
2320 return var;
2321 }
2322 /* method toolcontext#ToolContext#opt_warn for (self: ToolContext): OptionCount */
2323 val* toolcontext__ToolContext__opt_warn(val* self) {
2324 val* var /* : OptionCount */;
2325 val* var1 /* : OptionCount */;
2326 var1 = self->attrs[COLOR_toolcontext__ToolContext___opt_warn].val; /* _opt_warn on <self:ToolContext> */
2327 if (unlikely(var1 == NULL)) {
2328 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_warn");
2329 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 234);
2330 show_backtrace(1);
2331 }
2332 var = var1;
2333 RET_LABEL:;
2334 return var;
2335 }
2336 /* method toolcontext#ToolContext#opt_warn for (self: Object): OptionCount */
2337 val* VIRTUAL_toolcontext__ToolContext__opt_warn(val* self) {
2338 val* var /* : OptionCount */;
2339 val* var1 /* : OptionCount */;
2340 val* var3 /* : OptionCount */;
2341 { /* Inline toolcontext#ToolContext#opt_warn (self) on <self:Object(ToolContext)> */
2342 var3 = self->attrs[COLOR_toolcontext__ToolContext___opt_warn].val; /* _opt_warn on <self:Object(ToolContext)> */
2343 if (unlikely(var3 == NULL)) {
2344 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_warn");
2345 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 234);
2346 show_backtrace(1);
2347 }
2348 var1 = var3;
2349 RET_LABEL2:(void)0;
2350 }
2351 var = var1;
2352 RET_LABEL:;
2353 return var;
2354 }
2355 /* method toolcontext#ToolContext#opt_warning for (self: ToolContext): OptionArray */
2356 val* toolcontext__ToolContext__opt_warning(val* self) {
2357 val* var /* : OptionArray */;
2358 val* var1 /* : OptionArray */;
2359 var1 = self->attrs[COLOR_toolcontext__ToolContext___opt_warning].val; /* _opt_warning on <self:ToolContext> */
2360 if (unlikely(var1 == NULL)) {
2361 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_warning");
2362 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 237);
2363 show_backtrace(1);
2364 }
2365 var = var1;
2366 RET_LABEL:;
2367 return var;
2368 }
2369 /* method toolcontext#ToolContext#opt_warning for (self: Object): OptionArray */
2370 val* VIRTUAL_toolcontext__ToolContext__opt_warning(val* self) {
2371 val* var /* : OptionArray */;
2372 val* var1 /* : OptionArray */;
2373 val* var3 /* : OptionArray */;
2374 { /* Inline toolcontext#ToolContext#opt_warning (self) on <self:Object(ToolContext)> */
2375 var3 = self->attrs[COLOR_toolcontext__ToolContext___opt_warning].val; /* _opt_warning on <self:Object(ToolContext)> */
2376 if (unlikely(var3 == NULL)) {
2377 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_warning");
2378 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 237);
2379 show_backtrace(1);
2380 }
2381 var1 = var3;
2382 RET_LABEL2:(void)0;
2383 }
2384 var = var1;
2385 RET_LABEL:;
2386 return var;
2387 }
2388 /* method toolcontext#ToolContext#opt_quiet for (self: ToolContext): OptionBool */
2389 val* toolcontext__ToolContext__opt_quiet(val* self) {
2390 val* var /* : OptionBool */;
2391 val* var1 /* : OptionBool */;
2392 var1 = self->attrs[COLOR_toolcontext__ToolContext___opt_quiet].val; /* _opt_quiet on <self:ToolContext> */
2393 if (unlikely(var1 == NULL)) {
2394 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_quiet");
2395 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 240);
2396 show_backtrace(1);
2397 }
2398 var = var1;
2399 RET_LABEL:;
2400 return var;
2401 }
2402 /* method toolcontext#ToolContext#opt_quiet for (self: Object): OptionBool */
2403 val* VIRTUAL_toolcontext__ToolContext__opt_quiet(val* self) {
2404 val* var /* : OptionBool */;
2405 val* var1 /* : OptionBool */;
2406 val* var3 /* : OptionBool */;
2407 { /* Inline toolcontext#ToolContext#opt_quiet (self) on <self:Object(ToolContext)> */
2408 var3 = self->attrs[COLOR_toolcontext__ToolContext___opt_quiet].val; /* _opt_quiet on <self:Object(ToolContext)> */
2409 if (unlikely(var3 == NULL)) {
2410 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_quiet");
2411 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 240);
2412 show_backtrace(1);
2413 }
2414 var1 = var3;
2415 RET_LABEL2:(void)0;
2416 }
2417 var = var1;
2418 RET_LABEL:;
2419 return var;
2420 }
2421 /* method toolcontext#ToolContext#opt_log for (self: ToolContext): OptionBool */
2422 val* toolcontext__ToolContext__opt_log(val* self) {
2423 val* var /* : OptionBool */;
2424 val* var1 /* : OptionBool */;
2425 var1 = self->attrs[COLOR_toolcontext__ToolContext___opt_log].val; /* _opt_log on <self:ToolContext> */
2426 if (unlikely(var1 == NULL)) {
2427 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_log");
2428 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 243);
2429 show_backtrace(1);
2430 }
2431 var = var1;
2432 RET_LABEL:;
2433 return var;
2434 }
2435 /* method toolcontext#ToolContext#opt_log for (self: Object): OptionBool */
2436 val* VIRTUAL_toolcontext__ToolContext__opt_log(val* self) {
2437 val* var /* : OptionBool */;
2438 val* var1 /* : OptionBool */;
2439 val* var3 /* : OptionBool */;
2440 { /* Inline toolcontext#ToolContext#opt_log (self) on <self:Object(ToolContext)> */
2441 var3 = self->attrs[COLOR_toolcontext__ToolContext___opt_log].val; /* _opt_log on <self:Object(ToolContext)> */
2442 if (unlikely(var3 == NULL)) {
2443 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_log");
2444 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 243);
2445 show_backtrace(1);
2446 }
2447 var1 = var3;
2448 RET_LABEL2:(void)0;
2449 }
2450 var = var1;
2451 RET_LABEL:;
2452 return var;
2453 }
2454 /* method toolcontext#ToolContext#opt_log_dir for (self: ToolContext): OptionString */
2455 val* toolcontext__ToolContext__opt_log_dir(val* self) {
2456 val* var /* : OptionString */;
2457 val* var1 /* : OptionString */;
2458 var1 = self->attrs[COLOR_toolcontext__ToolContext___opt_log_dir].val; /* _opt_log_dir on <self:ToolContext> */
2459 if (unlikely(var1 == NULL)) {
2460 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_log_dir");
2461 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 246);
2462 show_backtrace(1);
2463 }
2464 var = var1;
2465 RET_LABEL:;
2466 return var;
2467 }
2468 /* method toolcontext#ToolContext#opt_log_dir for (self: Object): OptionString */
2469 val* VIRTUAL_toolcontext__ToolContext__opt_log_dir(val* self) {
2470 val* var /* : OptionString */;
2471 val* var1 /* : OptionString */;
2472 val* var3 /* : OptionString */;
2473 { /* Inline toolcontext#ToolContext#opt_log_dir (self) on <self:Object(ToolContext)> */
2474 var3 = self->attrs[COLOR_toolcontext__ToolContext___opt_log_dir].val; /* _opt_log_dir on <self:Object(ToolContext)> */
2475 if (unlikely(var3 == NULL)) {
2476 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_log_dir");
2477 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 246);
2478 show_backtrace(1);
2479 }
2480 var1 = var3;
2481 RET_LABEL2:(void)0;
2482 }
2483 var = var1;
2484 RET_LABEL:;
2485 return var;
2486 }
2487 /* method toolcontext#ToolContext#opt_help for (self: ToolContext): OptionBool */
2488 val* toolcontext__ToolContext__opt_help(val* self) {
2489 val* var /* : OptionBool */;
2490 val* var1 /* : OptionBool */;
2491 var1 = self->attrs[COLOR_toolcontext__ToolContext___opt_help].val; /* _opt_help on <self:ToolContext> */
2492 if (unlikely(var1 == NULL)) {
2493 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_help");
2494 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 249);
2495 show_backtrace(1);
2496 }
2497 var = var1;
2498 RET_LABEL:;
2499 return var;
2500 }
2501 /* method toolcontext#ToolContext#opt_help for (self: Object): OptionBool */
2502 val* VIRTUAL_toolcontext__ToolContext__opt_help(val* self) {
2503 val* var /* : OptionBool */;
2504 val* var1 /* : OptionBool */;
2505 val* var3 /* : OptionBool */;
2506 { /* Inline toolcontext#ToolContext#opt_help (self) on <self:Object(ToolContext)> */
2507 var3 = self->attrs[COLOR_toolcontext__ToolContext___opt_help].val; /* _opt_help on <self:Object(ToolContext)> */
2508 if (unlikely(var3 == NULL)) {
2509 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_help");
2510 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 249);
2511 show_backtrace(1);
2512 }
2513 var1 = var3;
2514 RET_LABEL2:(void)0;
2515 }
2516 var = var1;
2517 RET_LABEL:;
2518 return var;
2519 }
2520 /* method toolcontext#ToolContext#opt_version for (self: ToolContext): OptionBool */
2521 val* toolcontext__ToolContext__opt_version(val* self) {
2522 val* var /* : OptionBool */;
2523 val* var1 /* : OptionBool */;
2524 var1 = self->attrs[COLOR_toolcontext__ToolContext___opt_version].val; /* _opt_version on <self:ToolContext> */
2525 if (unlikely(var1 == NULL)) {
2526 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_version");
2527 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 252);
2528 show_backtrace(1);
2529 }
2530 var = var1;
2531 RET_LABEL:;
2532 return var;
2533 }
2534 /* method toolcontext#ToolContext#opt_version for (self: Object): OptionBool */
2535 val* VIRTUAL_toolcontext__ToolContext__opt_version(val* self) {
2536 val* var /* : OptionBool */;
2537 val* var1 /* : OptionBool */;
2538 val* var3 /* : OptionBool */;
2539 { /* Inline toolcontext#ToolContext#opt_version (self) on <self:Object(ToolContext)> */
2540 var3 = self->attrs[COLOR_toolcontext__ToolContext___opt_version].val; /* _opt_version on <self:Object(ToolContext)> */
2541 if (unlikely(var3 == NULL)) {
2542 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_version");
2543 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 252);
2544 show_backtrace(1);
2545 }
2546 var1 = var3;
2547 RET_LABEL2:(void)0;
2548 }
2549 var = var1;
2550 RET_LABEL:;
2551 return var;
2552 }
2553 /* method toolcontext#ToolContext#opt_set_dummy_tool for (self: ToolContext): OptionBool */
2554 val* toolcontext__ToolContext__opt_set_dummy_tool(val* self) {
2555 val* var /* : OptionBool */;
2556 val* var1 /* : OptionBool */;
2557 var1 = self->attrs[COLOR_toolcontext__ToolContext___opt_set_dummy_tool].val; /* _opt_set_dummy_tool on <self:ToolContext> */
2558 if (unlikely(var1 == NULL)) {
2559 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_set_dummy_tool");
2560 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 255);
2561 show_backtrace(1);
2562 }
2563 var = var1;
2564 RET_LABEL:;
2565 return var;
2566 }
2567 /* method toolcontext#ToolContext#opt_set_dummy_tool for (self: Object): OptionBool */
2568 val* VIRTUAL_toolcontext__ToolContext__opt_set_dummy_tool(val* self) {
2569 val* var /* : OptionBool */;
2570 val* var1 /* : OptionBool */;
2571 val* var3 /* : OptionBool */;
2572 { /* Inline toolcontext#ToolContext#opt_set_dummy_tool (self) on <self:Object(ToolContext)> */
2573 var3 = self->attrs[COLOR_toolcontext__ToolContext___opt_set_dummy_tool].val; /* _opt_set_dummy_tool on <self:Object(ToolContext)> */
2574 if (unlikely(var3 == NULL)) {
2575 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_set_dummy_tool");
2576 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 255);
2577 show_backtrace(1);
2578 }
2579 var1 = var3;
2580 RET_LABEL2:(void)0;
2581 }
2582 var = var1;
2583 RET_LABEL:;
2584 return var;
2585 }
2586 /* method toolcontext#ToolContext#opt_verbose for (self: ToolContext): OptionCount */
2587 val* toolcontext__ToolContext__opt_verbose(val* self) {
2588 val* var /* : OptionCount */;
2589 val* var1 /* : OptionCount */;
2590 var1 = self->attrs[COLOR_toolcontext__ToolContext___opt_verbose].val; /* _opt_verbose on <self:ToolContext> */
2591 if (unlikely(var1 == NULL)) {
2592 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_verbose");
2593 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 258);
2594 show_backtrace(1);
2595 }
2596 var = var1;
2597 RET_LABEL:;
2598 return var;
2599 }
2600 /* method toolcontext#ToolContext#opt_verbose for (self: Object): OptionCount */
2601 val* VIRTUAL_toolcontext__ToolContext__opt_verbose(val* self) {
2602 val* var /* : OptionCount */;
2603 val* var1 /* : OptionCount */;
2604 val* var3 /* : OptionCount */;
2605 { /* Inline toolcontext#ToolContext#opt_verbose (self) on <self:Object(ToolContext)> */
2606 var3 = self->attrs[COLOR_toolcontext__ToolContext___opt_verbose].val; /* _opt_verbose on <self:Object(ToolContext)> */
2607 if (unlikely(var3 == NULL)) {
2608 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_verbose");
2609 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 258);
2610 show_backtrace(1);
2611 }
2612 var1 = var3;
2613 RET_LABEL2:(void)0;
2614 }
2615 var = var1;
2616 RET_LABEL:;
2617 return var;
2618 }
2619 /* method toolcontext#ToolContext#opt_stop_on_first_error for (self: ToolContext): OptionBool */
2620 val* toolcontext__ToolContext__opt_stop_on_first_error(val* self) {
2621 val* var /* : OptionBool */;
2622 val* var1 /* : OptionBool */;
2623 var1 = self->attrs[COLOR_toolcontext__ToolContext___opt_stop_on_first_error].val; /* _opt_stop_on_first_error on <self:ToolContext> */
2624 if (unlikely(var1 == NULL)) {
2625 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_stop_on_first_error");
2626 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 261);
2627 show_backtrace(1);
2628 }
2629 var = var1;
2630 RET_LABEL:;
2631 return var;
2632 }
2633 /* method toolcontext#ToolContext#opt_stop_on_first_error for (self: Object): OptionBool */
2634 val* VIRTUAL_toolcontext__ToolContext__opt_stop_on_first_error(val* self) {
2635 val* var /* : OptionBool */;
2636 val* var1 /* : OptionBool */;
2637 val* var3 /* : OptionBool */;
2638 { /* Inline toolcontext#ToolContext#opt_stop_on_first_error (self) on <self:Object(ToolContext)> */
2639 var3 = self->attrs[COLOR_toolcontext__ToolContext___opt_stop_on_first_error].val; /* _opt_stop_on_first_error on <self:Object(ToolContext)> */
2640 if (unlikely(var3 == NULL)) {
2641 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_stop_on_first_error");
2642 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 261);
2643 show_backtrace(1);
2644 }
2645 var1 = var3;
2646 RET_LABEL2:(void)0;
2647 }
2648 var = var1;
2649 RET_LABEL:;
2650 return var;
2651 }
2652 /* method toolcontext#ToolContext#opt_no_color for (self: ToolContext): OptionBool */
2653 val* toolcontext__ToolContext__opt_no_color(val* self) {
2654 val* var /* : OptionBool */;
2655 val* var1 /* : OptionBool */;
2656 var1 = self->attrs[COLOR_toolcontext__ToolContext___opt_no_color].val; /* _opt_no_color on <self:ToolContext> */
2657 if (unlikely(var1 == NULL)) {
2658 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_color");
2659 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 264);
2660 show_backtrace(1);
2661 }
2662 var = var1;
2663 RET_LABEL:;
2664 return var;
2665 }
2666 /* method toolcontext#ToolContext#opt_no_color for (self: Object): OptionBool */
2667 val* VIRTUAL_toolcontext__ToolContext__opt_no_color(val* self) {
2668 val* var /* : OptionBool */;
2669 val* var1 /* : OptionBool */;
2670 val* var3 /* : OptionBool */;
2671 { /* Inline toolcontext#ToolContext#opt_no_color (self) on <self:Object(ToolContext)> */
2672 var3 = self->attrs[COLOR_toolcontext__ToolContext___opt_no_color].val; /* _opt_no_color on <self:Object(ToolContext)> */
2673 if (unlikely(var3 == NULL)) {
2674 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_color");
2675 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 264);
2676 show_backtrace(1);
2677 }
2678 var1 = var3;
2679 RET_LABEL2:(void)0;
2680 }
2681 var = var1;
2682 RET_LABEL:;
2683 return var;
2684 }
2685 /* method toolcontext#ToolContext#opt_bash_completion for (self: ToolContext): OptionBool */
2686 val* toolcontext__ToolContext__opt_bash_completion(val* self) {
2687 val* var /* : OptionBool */;
2688 val* var1 /* : OptionBool */;
2689 var1 = self->attrs[COLOR_toolcontext__ToolContext___opt_bash_completion].val; /* _opt_bash_completion on <self:ToolContext> */
2690 if (unlikely(var1 == NULL)) {
2691 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_bash_completion");
2692 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 267);
2693 show_backtrace(1);
2694 }
2695 var = var1;
2696 RET_LABEL:;
2697 return var;
2698 }
2699 /* method toolcontext#ToolContext#opt_bash_completion for (self: Object): OptionBool */
2700 val* VIRTUAL_toolcontext__ToolContext__opt_bash_completion(val* self) {
2701 val* var /* : OptionBool */;
2702 val* var1 /* : OptionBool */;
2703 val* var3 /* : OptionBool */;
2704 { /* Inline toolcontext#ToolContext#opt_bash_completion (self) on <self:Object(ToolContext)> */
2705 var3 = self->attrs[COLOR_toolcontext__ToolContext___opt_bash_completion].val; /* _opt_bash_completion on <self:Object(ToolContext)> */
2706 if (unlikely(var3 == NULL)) {
2707 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_bash_completion");
2708 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 267);
2709 show_backtrace(1);
2710 }
2711 var1 = var3;
2712 RET_LABEL2:(void)0;
2713 }
2714 var = var1;
2715 RET_LABEL:;
2716 return var;
2717 }
2718 /* method toolcontext#ToolContext#opt_stub_man for (self: ToolContext): OptionBool */
2719 val* toolcontext__ToolContext__opt_stub_man(val* self) {
2720 val* var /* : OptionBool */;
2721 val* var1 /* : OptionBool */;
2722 var1 = self->attrs[COLOR_toolcontext__ToolContext___opt_stub_man].val; /* _opt_stub_man on <self:ToolContext> */
2723 if (unlikely(var1 == NULL)) {
2724 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_stub_man");
2725 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 270);
2726 show_backtrace(1);
2727 }
2728 var = var1;
2729 RET_LABEL:;
2730 return var;
2731 }
2732 /* method toolcontext#ToolContext#opt_stub_man for (self: Object): OptionBool */
2733 val* VIRTUAL_toolcontext__ToolContext__opt_stub_man(val* self) {
2734 val* var /* : OptionBool */;
2735 val* var1 /* : OptionBool */;
2736 val* var3 /* : OptionBool */;
2737 { /* Inline toolcontext#ToolContext#opt_stub_man (self) on <self:Object(ToolContext)> */
2738 var3 = self->attrs[COLOR_toolcontext__ToolContext___opt_stub_man].val; /* _opt_stub_man on <self:Object(ToolContext)> */
2739 if (unlikely(var3 == NULL)) {
2740 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_stub_man");
2741 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 270);
2742 show_backtrace(1);
2743 }
2744 var1 = var3;
2745 RET_LABEL2:(void)0;
2746 }
2747 var = var1;
2748 RET_LABEL:;
2749 return var;
2750 }
2751 /* method toolcontext#ToolContext#verbose_level for (self: ToolContext): Int */
2752 long toolcontext__ToolContext__verbose_level(val* self) {
2753 long var /* : Int */;
2754 long var1 /* : Int */;
2755 var1 = self->attrs[COLOR_toolcontext__ToolContext___verbose_level].l; /* _verbose_level on <self:ToolContext> */
2756 var = var1;
2757 RET_LABEL:;
2758 return var;
2759 }
2760 /* method toolcontext#ToolContext#verbose_level for (self: Object): Int */
2761 long VIRTUAL_toolcontext__ToolContext__verbose_level(val* self) {
2762 long var /* : Int */;
2763 long var1 /* : Int */;
2764 long var3 /* : Int */;
2765 { /* Inline toolcontext#ToolContext#verbose_level (self) on <self:Object(ToolContext)> */
2766 var3 = self->attrs[COLOR_toolcontext__ToolContext___verbose_level].l; /* _verbose_level on <self:Object(ToolContext)> */
2767 var1 = var3;
2768 RET_LABEL2:(void)0;
2769 }
2770 var = var1;
2771 RET_LABEL:;
2772 return var;
2773 }
2774 /* method toolcontext#ToolContext#verbose_level= for (self: ToolContext, Int) */
2775 void toolcontext__ToolContext__verbose_level_61d(val* self, long p0) {
2776 self->attrs[COLOR_toolcontext__ToolContext___verbose_level].l = p0; /* _verbose_level on <self:ToolContext> */
2777 RET_LABEL:;
2778 }
2779 /* method toolcontext#ToolContext#verbose_level= for (self: Object, Int) */
2780 void VIRTUAL_toolcontext__ToolContext__verbose_level_61d(val* self, long p0) {
2781 { /* Inline toolcontext#ToolContext#verbose_level= (self,p0) on <self:Object(ToolContext)> */
2782 self->attrs[COLOR_toolcontext__ToolContext___verbose_level].l = p0; /* _verbose_level on <self:Object(ToolContext)> */
2783 RET_LABEL1:(void)0;
2784 }
2785 RET_LABEL:;
2786 }
2787 /* method toolcontext#ToolContext#init for (self: ToolContext) */
2788 void toolcontext__ToolContext__init(val* self) {
2789 val* var /* : OptionContext */;
2790 val* var2 /* : OptionContext */;
2791 val* var3 /* : OptionCount */;
2792 val* var5 /* : OptionCount */;
2793 val* var6 /* : OptionArray */;
2794 val* var8 /* : OptionArray */;
2795 val* var9 /* : OptionBool */;
2796 val* var11 /* : OptionBool */;
2797 val* var12 /* : OptionBool */;
2798 val* var14 /* : OptionBool */;
2799 val* var15 /* : OptionBool */;
2800 val* var17 /* : OptionBool */;
2801 val* var18 /* : OptionBool */;
2802 val* var20 /* : OptionBool */;
2803 val* var21 /* : OptionString */;
2804 val* var23 /* : OptionString */;
2805 val* var24 /* : OptionBool */;
2806 val* var26 /* : OptionBool */;
2807 val* var27 /* : OptionBool */;
2808 val* var29 /* : OptionBool */;
2809 val* var30 /* : OptionBool */;
2810 val* var32 /* : OptionBool */;
2811 val* var33 /* : OptionCount */;
2812 val* var35 /* : OptionCount */;
2813 val* var36 /* : OptionBool */;
2814 val* var38 /* : OptionBool */;
2815 val* var39 /* : OptionBool */;
2816 val* var41 /* : OptionBool */;
2817 val* var42 /* : Array[Option] */;
2818 long var43 /* : Int */;
2819 val* var44 /* : NativeArray[Option] */;
2820 {
2821 { /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
2822 var2 = self->attrs[COLOR_toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
2823 if (unlikely(var2 == NULL)) {
2824 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
2825 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 231);
2826 show_backtrace(1);
2827 }
2828 var = var2;
2829 RET_LABEL1:(void)0;
2830 }
2831 }
2832 {
2833 { /* Inline toolcontext#ToolContext#opt_warn (self) on <self:ToolContext> */
2834 var5 = self->attrs[COLOR_toolcontext__ToolContext___opt_warn].val; /* _opt_warn on <self:ToolContext> */
2835 if (unlikely(var5 == NULL)) {
2836 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_warn");
2837 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 234);
2838 show_backtrace(1);
2839 }
2840 var3 = var5;
2841 RET_LABEL4:(void)0;
2842 }
2843 }
2844 {
2845 { /* Inline toolcontext#ToolContext#opt_warning (self) on <self:ToolContext> */
2846 var8 = self->attrs[COLOR_toolcontext__ToolContext___opt_warning].val; /* _opt_warning on <self:ToolContext> */
2847 if (unlikely(var8 == NULL)) {
2848 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_warning");
2849 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 237);
2850 show_backtrace(1);
2851 }
2852 var6 = var8;
2853 RET_LABEL7:(void)0;
2854 }
2855 }
2856 {
2857 { /* Inline toolcontext#ToolContext#opt_quiet (self) on <self:ToolContext> */
2858 var11 = self->attrs[COLOR_toolcontext__ToolContext___opt_quiet].val; /* _opt_quiet on <self:ToolContext> */
2859 if (unlikely(var11 == NULL)) {
2860 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_quiet");
2861 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 240);
2862 show_backtrace(1);
2863 }
2864 var9 = var11;
2865 RET_LABEL10:(void)0;
2866 }
2867 }
2868 {
2869 { /* Inline toolcontext#ToolContext#opt_stop_on_first_error (self) on <self:ToolContext> */
2870 var14 = self->attrs[COLOR_toolcontext__ToolContext___opt_stop_on_first_error].val; /* _opt_stop_on_first_error on <self:ToolContext> */
2871 if (unlikely(var14 == NULL)) {
2872 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_stop_on_first_error");
2873 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 261);
2874 show_backtrace(1);
2875 }
2876 var12 = var14;
2877 RET_LABEL13:(void)0;
2878 }
2879 }
2880 {
2881 { /* Inline toolcontext#ToolContext#opt_no_color (self) on <self:ToolContext> */
2882 var17 = self->attrs[COLOR_toolcontext__ToolContext___opt_no_color].val; /* _opt_no_color on <self:ToolContext> */
2883 if (unlikely(var17 == NULL)) {
2884 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_color");
2885 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 264);
2886 show_backtrace(1);
2887 }
2888 var15 = var17;
2889 RET_LABEL16:(void)0;
2890 }
2891 }
2892 {
2893 { /* Inline toolcontext#ToolContext#opt_log (self) on <self:ToolContext> */
2894 var20 = self->attrs[COLOR_toolcontext__ToolContext___opt_log].val; /* _opt_log on <self:ToolContext> */
2895 if (unlikely(var20 == NULL)) {
2896 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_log");
2897 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 243);
2898 show_backtrace(1);
2899 }
2900 var18 = var20;
2901 RET_LABEL19:(void)0;
2902 }
2903 }
2904 {
2905 { /* Inline toolcontext#ToolContext#opt_log_dir (self) on <self:ToolContext> */
2906 var23 = self->attrs[COLOR_toolcontext__ToolContext___opt_log_dir].val; /* _opt_log_dir on <self:ToolContext> */
2907 if (unlikely(var23 == NULL)) {
2908 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_log_dir");
2909 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 246);
2910 show_backtrace(1);
2911 }
2912 var21 = var23;
2913 RET_LABEL22:(void)0;
2914 }
2915 }
2916 {
2917 { /* Inline toolcontext#ToolContext#opt_help (self) on <self:ToolContext> */
2918 var26 = self->attrs[COLOR_toolcontext__ToolContext___opt_help].val; /* _opt_help on <self:ToolContext> */
2919 if (unlikely(var26 == NULL)) {
2920 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_help");
2921 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 249);
2922 show_backtrace(1);
2923 }
2924 var24 = var26;
2925 RET_LABEL25:(void)0;
2926 }
2927 }
2928 {
2929 { /* Inline toolcontext#ToolContext#opt_version (self) on <self:ToolContext> */
2930 var29 = self->attrs[COLOR_toolcontext__ToolContext___opt_version].val; /* _opt_version on <self:ToolContext> */
2931 if (unlikely(var29 == NULL)) {
2932 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_version");
2933 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 252);
2934 show_backtrace(1);
2935 }
2936 var27 = var29;
2937 RET_LABEL28:(void)0;
2938 }
2939 }
2940 {
2941 { /* Inline toolcontext#ToolContext#opt_set_dummy_tool (self) on <self:ToolContext> */
2942 var32 = self->attrs[COLOR_toolcontext__ToolContext___opt_set_dummy_tool].val; /* _opt_set_dummy_tool on <self:ToolContext> */
2943 if (unlikely(var32 == NULL)) {
2944 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_set_dummy_tool");
2945 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 255);
2946 show_backtrace(1);
2947 }
2948 var30 = var32;
2949 RET_LABEL31:(void)0;
2950 }
2951 }
2952 {
2953 { /* Inline toolcontext#ToolContext#opt_verbose (self) on <self:ToolContext> */
2954 var35 = self->attrs[COLOR_toolcontext__ToolContext___opt_verbose].val; /* _opt_verbose on <self:ToolContext> */
2955 if (unlikely(var35 == NULL)) {
2956 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_verbose");
2957 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 258);
2958 show_backtrace(1);
2959 }
2960 var33 = var35;
2961 RET_LABEL34:(void)0;
2962 }
2963 }
2964 {
2965 { /* Inline toolcontext#ToolContext#opt_bash_completion (self) on <self:ToolContext> */
2966 var38 = self->attrs[COLOR_toolcontext__ToolContext___opt_bash_completion].val; /* _opt_bash_completion on <self:ToolContext> */
2967 if (unlikely(var38 == NULL)) {
2968 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_bash_completion");
2969 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 267);
2970 show_backtrace(1);
2971 }
2972 var36 = var38;
2973 RET_LABEL37:(void)0;
2974 }
2975 }
2976 {
2977 { /* Inline toolcontext#ToolContext#opt_stub_man (self) on <self:ToolContext> */
2978 var41 = self->attrs[COLOR_toolcontext__ToolContext___opt_stub_man].val; /* _opt_stub_man on <self:ToolContext> */
2979 if (unlikely(var41 == NULL)) {
2980 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_stub_man");
2981 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 270);
2982 show_backtrace(1);
2983 }
2984 var39 = var41;
2985 RET_LABEL40:(void)0;
2986 }
2987 }
2988 var42 = NEW_array__Array(&type_array__Arrayopts__Option);
2989 { /* var42 = array_instance Array[Option] */
2990 var43 = 13;
2991 var44 = NEW_array__NativeArray(var43, &type_array__NativeArrayopts__Option);
2992 ((struct instance_array__NativeArray*)var44)->values[0] = (val*) var3;
2993 ((struct instance_array__NativeArray*)var44)->values[1] = (val*) var6;
2994 ((struct instance_array__NativeArray*)var44)->values[2] = (val*) var9;
2995 ((struct instance_array__NativeArray*)var44)->values[3] = (val*) var12;
2996 ((struct instance_array__NativeArray*)var44)->values[4] = (val*) var15;
2997 ((struct instance_array__NativeArray*)var44)->values[5] = (val*) var18;
2998 ((struct instance_array__NativeArray*)var44)->values[6] = (val*) var21;
2999 ((struct instance_array__NativeArray*)var44)->values[7] = (val*) var24;
3000 ((struct instance_array__NativeArray*)var44)->values[8] = (val*) var27;
3001 ((struct instance_array__NativeArray*)var44)->values[9] = (val*) var30;
3002 ((struct instance_array__NativeArray*)var44)->values[10] = (val*) var33;
3003 ((struct instance_array__NativeArray*)var44)->values[11] = (val*) var36;
3004 ((struct instance_array__NativeArray*)var44)->values[12] = (val*) var39;
3005 {
3006 ((void (*)(val*, val*, long))(var42->class->vft[COLOR_array__Array__with_native]))(var42, var44, var43) /* with_native on <var42:Array[Option]>*/;
3007 }
3008 }
3009 {
3010 opts__OptionContext__add_option(var, var42); /* Direct call opts#OptionContext#add_option on <var:OptionContext>*/
3011 }
3012 RET_LABEL:;
3013 }
3014 /* method toolcontext#ToolContext#init for (self: Object) */
3015 void VIRTUAL_toolcontext__ToolContext__init(val* self) {
3016 toolcontext__ToolContext__init(self); /* Direct call toolcontext#ToolContext#init on <self:Object(ToolContext)>*/
3017 RET_LABEL:;
3018 }
3019 /* method toolcontext#ToolContext#tooldescription for (self: ToolContext): String */
3020 val* toolcontext__ToolContext__tooldescription(val* self) {
3021 val* var /* : String */;
3022 val* var1 /* : String */;
3023 var1 = self->attrs[COLOR_toolcontext__ToolContext___tooldescription].val; /* _tooldescription on <self:ToolContext> */
3024 if (unlikely(var1 == NULL)) {
3025 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tooldescription");
3026 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 281);
3027 show_backtrace(1);
3028 }
3029 var = var1;
3030 RET_LABEL:;
3031 return var;
3032 }
3033 /* method toolcontext#ToolContext#tooldescription for (self: Object): String */
3034 val* VIRTUAL_toolcontext__ToolContext__tooldescription(val* self) {
3035 val* var /* : String */;
3036 val* var1 /* : String */;
3037 val* var3 /* : String */;
3038 { /* Inline toolcontext#ToolContext#tooldescription (self) on <self:Object(ToolContext)> */
3039 var3 = self->attrs[COLOR_toolcontext__ToolContext___tooldescription].val; /* _tooldescription on <self:Object(ToolContext)> */
3040 if (unlikely(var3 == NULL)) {
3041 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tooldescription");
3042 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 281);
3043 show_backtrace(1);
3044 }
3045 var1 = var3;
3046 RET_LABEL2:(void)0;
3047 }
3048 var = var1;
3049 RET_LABEL:;
3050 return var;
3051 }
3052 /* method toolcontext#ToolContext#tooldescription= for (self: ToolContext, String) */
3053 void toolcontext__ToolContext__tooldescription_61d(val* self, val* p0) {
3054 self->attrs[COLOR_toolcontext__ToolContext___tooldescription].val = p0; /* _tooldescription on <self:ToolContext> */
3055 RET_LABEL:;
3056 }
3057 /* method toolcontext#ToolContext#tooldescription= for (self: Object, String) */
3058 void VIRTUAL_toolcontext__ToolContext__tooldescription_61d(val* self, val* p0) {
3059 { /* Inline toolcontext#ToolContext#tooldescription= (self,p0) on <self:Object(ToolContext)> */
3060 self->attrs[COLOR_toolcontext__ToolContext___tooldescription].val = p0; /* _tooldescription on <self:Object(ToolContext)> */
3061 RET_LABEL1:(void)0;
3062 }
3063 RET_LABEL:;
3064 }
3065 /* method toolcontext#ToolContext#accept_no_arguments for (self: ToolContext): Bool */
3066 short int toolcontext__ToolContext__accept_no_arguments(val* self) {
3067 short int var /* : Bool */;
3068 short int var1 /* : Bool */;
3069 var1 = self->attrs[COLOR_toolcontext__ToolContext___accept_no_arguments].s; /* _accept_no_arguments on <self:ToolContext> */
3070 var = var1;
3071 RET_LABEL:;
3072 return var;
3073 }
3074 /* method toolcontext#ToolContext#accept_no_arguments for (self: Object): Bool */
3075 short int VIRTUAL_toolcontext__ToolContext__accept_no_arguments(val* self) {
3076 short int var /* : Bool */;
3077 short int var1 /* : Bool */;
3078 short int var3 /* : Bool */;
3079 { /* Inline toolcontext#ToolContext#accept_no_arguments (self) on <self:Object(ToolContext)> */
3080 var3 = self->attrs[COLOR_toolcontext__ToolContext___accept_no_arguments].s; /* _accept_no_arguments on <self:Object(ToolContext)> */
3081 var1 = var3;
3082 RET_LABEL2:(void)0;
3083 }
3084 var = var1;
3085 RET_LABEL:;
3086 return var;
3087 }
3088 /* method toolcontext#ToolContext#usage for (self: ToolContext) */
3089 void toolcontext__ToolContext__usage(val* self) {
3090 val* var /* : String */;
3091 val* var2 /* : String */;
3092 val* var3 /* : OptionContext */;
3093 val* var5 /* : OptionContext */;
3094 {
3095 { /* Inline toolcontext#ToolContext#tooldescription (self) on <self:ToolContext> */
3096 var2 = self->attrs[COLOR_toolcontext__ToolContext___tooldescription].val; /* _tooldescription on <self:ToolContext> */
3097 if (unlikely(var2 == NULL)) {
3098 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tooldescription");
3099 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 281);
3100 show_backtrace(1);
3101 }
3102 var = var2;
3103 RET_LABEL1:(void)0;
3104 }
3105 }
3106 {
3107 file__Object__print(self, var); /* Direct call file#Object#print on <self:ToolContext>*/
3108 }
3109 {
3110 { /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
3111 var5 = self->attrs[COLOR_toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
3112 if (unlikely(var5 == NULL)) {
3113 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
3114 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 231);
3115 show_backtrace(1);
3116 }
3117 var3 = var5;
3118 RET_LABEL4:(void)0;
3119 }
3120 }
3121 {
3122 opts__OptionContext__usage(var3); /* Direct call opts#OptionContext#usage on <var3:OptionContext>*/
3123 }
3124 RET_LABEL:;
3125 }
3126 /* method toolcontext#ToolContext#usage for (self: Object) */
3127 void VIRTUAL_toolcontext__ToolContext__usage(val* self) {
3128 toolcontext__ToolContext__usage(self); /* Direct call toolcontext#ToolContext#usage on <self:Object(ToolContext)>*/
3129 RET_LABEL:;
3130 }
3131 /* method toolcontext#ToolContext#process_options for (self: ToolContext, Sequence[String]) */
3132 void toolcontext__ToolContext__process_options(val* self, val* p0) {
3133 val* var_args /* var args: Sequence[String] */;
3134 val* var /* : OptionCount */;
3135 val* var2 /* : OptionCount */;
3136 long var3 /* : Int */;
3137 short int var5 /* : Bool */;
3138 int cltype;
3139 int idtype;
3140 const struct type* type_struct;
3141 const char* var_class_name;
3142 val* var6 /* : nullable Object */;
3143 val* var7 /* : OptionContext */;
3144 val* var9 /* : OptionContext */;
3145 val* var10 /* : OptionBool */;
3146 val* var12 /* : OptionBool */;
3147 val* var13 /* : nullable Object */;
3148 val* var15 /* : nullable Object */;
3149 short int var16 /* : Bool */;
3150 long var17 /* : Int */;
3151 val* var19 /* : OptionBool */;
3152 val* var21 /* : OptionBool */;
3153 val* var22 /* : nullable Object */;
3154 val* var24 /* : nullable Object */;
3155 short int var25 /* : Bool */;
3156 val* var26 /* : String */;
3157 long var27 /* : Int */;
3158 val* var29 /* : OptionBool */;
3159 val* var31 /* : OptionBool */;
3160 val* var32 /* : nullable Object */;
3161 val* var34 /* : nullable Object */;
3162 short int var35 /* : Bool */;
3163 val* var36 /* : BashCompletion */;
3164 val* var_bash_completion /* var bash_completion: BashCompletion */;
3165 val* var37 /* : Sys */;
3166 val* var39 /* : Sys */;
3167 val* var40 /* : OStream */;
3168 val* var42 /* : OStream */;
3169 long var43 /* : Int */;
3170 val* var45 /* : OptionBool */;
3171 val* var47 /* : OptionBool */;
3172 val* var48 /* : nullable Object */;
3173 val* var50 /* : nullable Object */;
3174 short int var51 /* : Bool */;
3175 static val* varonce;
3176 val* var52 /* : String */;
3177 char* var53 /* : NativeString */;
3178 long var54 /* : Int */;
3179 val* var55 /* : FlatString */;
3180 val* var56 /* : String */;
3181 val* var57 /* : String */;
3182 static val* varonce58;
3183 val* var59 /* : String */;
3184 char* var60 /* : NativeString */;
3185 long var61 /* : Int */;
3186 val* var62 /* : FlatString */;
3187 val* var63 /* : String */;
3188 val* var65 /* : String */;
3189 static val* varonce66;
3190 val* var67 /* : String */;
3191 char* var68 /* : NativeString */;
3192 long var69 /* : Int */;
3193 val* var70 /* : FlatString */;
3194 val* var71 /* : Array[Text] */;
3195 long var72 /* : Int */;
3196 val* var73 /* : nullable Object */;
3197 static val* varonce74;
3198 val* var75 /* : String */;
3199 char* var76 /* : NativeString */;
3200 long var77 /* : Int */;
3201 val* var78 /* : FlatString */;
3202 val* var79 /* : String */;
3203 static val* varonce80;
3204 val* var81 /* : String */;
3205 char* var82 /* : NativeString */;
3206 long var83 /* : Int */;
3207 val* var84 /* : FlatString */;
3208 val* var85 /* : Array[Object] */;
3209 long var86 /* : Int */;
3210 val* var87 /* : NativeArray[Object] */;
3211 val* var88 /* : String */;
3212 val* var89 /* : OptionContext */;
3213 val* var91 /* : OptionContext */;
3214 val* var92 /* : Array[Option] */;
3215 val* var94 /* : Array[Option] */;
3216 val* var_ /* var : Array[Option] */;
3217 val* var95 /* : ArrayIterator[nullable Object] */;
3218 val* var_96 /* var : ArrayIterator[Option] */;
3219 short int var97 /* : Bool */;
3220 val* var98 /* : nullable Object */;
3221 val* var_o /* var o: Option */;
3222 short int var99 /* : Bool */;
3223 short int var_first /* var first: Bool */;
3224 val* var100 /* : Array[String] */;
3225 val* var102 /* : Array[String] */;
3226 val* var_103 /* var : Array[String] */;
3227 val* var104 /* : ArrayIterator[nullable Object] */;
3228 val* var_105 /* var : ArrayIterator[String] */;
3229 short int var106 /* : Bool */;
3230 val* var107 /* : nullable Object */;
3231 val* var_n /* var n: String */;
3232 short int var108 /* : Bool */;
3233 static val* varonce109;
3234 val* var110 /* : String */;
3235 char* var111 /* : NativeString */;
3236 long var112 /* : Int */;
3237 val* var113 /* : FlatString */;
3238 val* var114 /* : Array[Object] */;
3239 long var115 /* : Int */;
3240 val* var116 /* : NativeArray[Object] */;
3241 static val* varonce117;
3242 val* var118 /* : String */;
3243 char* var119 /* : NativeString */;
3244 long var120 /* : Int */;
3245 val* var121 /* : FlatString */;
3246 static val* varonce122;
3247 val* var123 /* : String */;
3248 char* var124 /* : NativeString */;
3249 long var125 /* : Int */;
3250 val* var126 /* : FlatString */;
3251 val* var127 /* : Array[Object] */;
3252 long var128 /* : Int */;
3253 val* var129 /* : NativeArray[Object] */;
3254 val* var130 /* : String */;
3255 val* var131 /* : Array[Object] */;
3256 long var132 /* : Int */;
3257 val* var133 /* : NativeArray[Object] */;
3258 static val* varonce135;
3259 val* var136 /* : String */;
3260 char* var137 /* : NativeString */;
3261 long var138 /* : Int */;
3262 val* var139 /* : FlatString */;
3263 static val* varonce140;
3264 val* var141 /* : String */;
3265 char* var142 /* : NativeString */;
3266 long var143 /* : Int */;
3267 val* var144 /* : FlatString */;
3268 val* var145 /* : String */;
3269 val* var147 /* : String */;
3270 val* var148 /* : Array[Object] */;
3271 long var149 /* : Int */;
3272 val* var150 /* : NativeArray[Object] */;
3273 val* var151 /* : String */;
3274 static val* varonce152;
3275 val* var153 /* : String */;
3276 char* var154 /* : NativeString */;
3277 long var155 /* : Int */;
3278 val* var156 /* : FlatString */;
3279 static val* varonce159;
3280 val* var160 /* : String */;
3281 char* var161 /* : NativeString */;
3282 long var162 /* : Int */;
3283 val* var163 /* : FlatString */;
3284 long var164 /* : Int */;
3285 val* var166 /* : OptionContext */;
3286 val* var168 /* : OptionContext */;
3287 val* var169 /* : Array[String] */;
3288 val* var_errors /* var errors: Array[String] */;
3289 short int var170 /* : Bool */;
3290 short int var171 /* : Bool */;
3291 val* var_172 /* var : Array[String] */;
3292 val* var173 /* : ArrayIterator[nullable Object] */;
3293 val* var_174 /* var : ArrayIterator[String] */;
3294 short int var175 /* : Bool */;
3295 val* var176 /* : nullable Object */;
3296 val* var_e /* var e: String */;
3297 static val* varonce177;
3298 val* var178 /* : String */;
3299 char* var179 /* : NativeString */;
3300 long var180 /* : Int */;
3301 val* var181 /* : FlatString */;
3302 val* var182 /* : Array[Object] */;
3303 long var183 /* : Int */;
3304 val* var184 /* : NativeArray[Object] */;
3305 val* var185 /* : String */;
3306 val* var188 /* : String */;
3307 val* var190 /* : String */;
3308 static val* varonce191;
3309 val* var192 /* : String */;
3310 char* var193 /* : NativeString */;
3311 long var194 /* : Int */;
3312 val* var195 /* : FlatString */;
3313 long var196 /* : Int */;
3314 short int var198 /* : Bool */;
3315 val* var199 /* : OptionContext */;
3316 val* var201 /* : OptionContext */;
3317 val* var202 /* : Array[String] */;
3318 val* var204 /* : Array[String] */;
3319 short int var205 /* : Bool */;
3320 short int var_206 /* var : Bool */;
3321 short int var207 /* : Bool */;
3322 short int var209 /* : Bool */;
3323 short int var210 /* : Bool */;
3324 val* var211 /* : String */;
3325 val* var213 /* : String */;
3326 static val* varonce214;
3327 val* var215 /* : String */;
3328 char* var216 /* : NativeString */;
3329 long var217 /* : Int */;
3330 val* var218 /* : FlatString */;
3331 long var219 /* : Int */;
3332 val* var221 /* : OptionCount */;
3333 val* var223 /* : OptionCount */;
3334 val* var224 /* : nullable Object */;
3335 val* var226 /* : nullable Object */;
3336 long var228 /* : Int */;
3337 val* var229 /* : OptionBool */;
3338 val* var231 /* : OptionBool */;
3339 val* var232 /* : nullable Object */;
3340 val* var234 /* : nullable Object */;
3341 short int var235 /* : Bool */;
3342 val* var236 /* : OptionCount */;
3343 val* var238 /* : OptionCount */;
3344 long var239 /* : Int */;
3345 short int var241 /* : Bool */;
3346 int cltype242;
3347 int idtype243;
3348 const struct type* type_struct244;
3349 const char* var_class_name245;
3350 val* var246 /* : nullable Object */;
3351 val* var247 /* : OptionString */;
3352 val* var249 /* : OptionString */;
3353 val* var250 /* : nullable Object */;
3354 val* var252 /* : nullable Object */;
3355 val* var253 /* : null */;
3356 short int var254 /* : Bool */;
3357 short int var255 /* : Bool */;
3358 val* var_other /* var other: nullable Object */;
3359 short int var257 /* : Bool */;
3360 short int var258 /* : Bool */;
3361 short int var259 /* : Bool */;
3362 val* var260 /* : OptionString */;
3363 val* var262 /* : OptionString */;
3364 val* var263 /* : nullable Object */;
3365 val* var265 /* : nullable Object */;
3366 val* var267 /* : OptionBool */;
3367 val* var269 /* : OptionBool */;
3368 val* var270 /* : nullable Object */;
3369 val* var272 /* : nullable Object */;
3370 short int var273 /* : Bool */;
3371 val* var274 /* : String */;
3372 val* var276 /* : String */;
3373 val* var277 /* : nullable String */;
3374 var_args = p0;
3375 {
3376 { /* Inline toolcontext#ToolContext#opt_warn (self) on <self:ToolContext> */
3377 var2 = self->attrs[COLOR_toolcontext__ToolContext___opt_warn].val; /* _opt_warn on <self:ToolContext> */
3378 if (unlikely(var2 == NULL)) {
3379 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_warn");
3380 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 234);
3381 show_backtrace(1);
3382 }
3383 var = var2;
3384 RET_LABEL1:(void)0;
3385 }
3386 }
3387 var3 = 1;
3388 {
3389 { /* Inline opts#Option#value= (var,var3) on <var:OptionCount> */
3390 /* Covariant cast for argument 0 (value) <var3:Int> isa VALUE */
3391 /* <var3:Int> isa VALUE */
3392 type_struct = var->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
3393 cltype = type_struct->color;
3394 idtype = type_struct->id;
3395 if(cltype >= (&type_kernel__Int)->table_size) {
3396 var5 = 0;
3397 } else {
3398 var5 = (&type_kernel__Int)->type_table[cltype] == idtype;
3399 }
3400 if (unlikely(!var5)) {
3401 var_class_name = type_kernel__Int.name;
3402 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
3403 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 40);
3404 show_backtrace(1);
3405 }
3406 var6 = BOX_kernel__Int(var3); /* autobox from Int to nullable Object */
3407 var->attrs[COLOR_opts__Option___value].val = var6; /* _value on <var:OptionCount> */
3408 RET_LABEL4:(void)0;
3409 }
3410 }
3411 {
3412 { /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
3413 var9 = self->attrs[COLOR_toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
3414 if (unlikely(var9 == NULL)) {
3415 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
3416 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 231);
3417 show_backtrace(1);
3418 }
3419 var7 = var9;
3420 RET_LABEL8:(void)0;
3421 }
3422 }
3423 {
3424 opts__OptionContext__parse(var7, var_args); /* Direct call opts#OptionContext#parse on <var7:OptionContext>*/
3425 }
3426 {
3427 { /* Inline toolcontext#ToolContext#opt_help (self) on <self:ToolContext> */
3428 var12 = self->attrs[COLOR_toolcontext__ToolContext___opt_help].val; /* _opt_help on <self:ToolContext> */
3429 if (unlikely(var12 == NULL)) {
3430 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_help");
3431 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 249);
3432 show_backtrace(1);
3433 }
3434 var10 = var12;
3435 RET_LABEL11:(void)0;
3436 }
3437 }
3438 {
3439 { /* Inline opts#Option#value (var10) on <var10:OptionBool> */
3440 var15 = var10->attrs[COLOR_opts__Option___value].val; /* _value on <var10:OptionBool> */
3441 var13 = var15;
3442 RET_LABEL14:(void)0;
3443 }
3444 }
3445 var16 = ((struct instance_kernel__Bool*)var13)->value; /* autounbox from nullable Object to Bool */;
3446 if (var16){
3447 {
3448 toolcontext__ToolContext__usage(self); /* Direct call toolcontext#ToolContext#usage on <self:ToolContext>*/
3449 }
3450 var17 = 0;
3451 {
3452 { /* Inline kernel#Object#exit (self,var17) on <self:ToolContext> */
3453 exit(var17);
3454 RET_LABEL18:(void)0;
3455 }
3456 }
3457 } else {
3458 }
3459 {
3460 { /* Inline toolcontext#ToolContext#opt_version (self) on <self:ToolContext> */
3461 var21 = self->attrs[COLOR_toolcontext__ToolContext___opt_version].val; /* _opt_version on <self:ToolContext> */
3462 if (unlikely(var21 == NULL)) {
3463 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_version");
3464 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 252);
3465 show_backtrace(1);
3466 }
3467 var19 = var21;
3468 RET_LABEL20:(void)0;
3469 }
3470 }
3471 {
3472 { /* Inline opts#Option#value (var19) on <var19:OptionBool> */
3473 var24 = var19->attrs[COLOR_opts__Option___value].val; /* _value on <var19:OptionBool> */
3474 var22 = var24;
3475 RET_LABEL23:(void)0;
3476 }
3477 }
3478 var25 = ((struct instance_kernel__Bool*)var22)->value; /* autounbox from nullable Object to Bool */;
3479 if (var25){
3480 {
3481 var26 = toolcontext__ToolContext__version(self);
3482 }
3483 {
3484 file__Object__print(self, var26); /* Direct call file#Object#print on <self:ToolContext>*/
3485 }
3486 var27 = 0;
3487 {
3488 { /* Inline kernel#Object#exit (self,var27) on <self:ToolContext> */
3489 exit(var27);
3490 RET_LABEL28:(void)0;
3491 }
3492 }
3493 } else {
3494 }
3495 {
3496 { /* Inline toolcontext#ToolContext#opt_bash_completion (self) on <self:ToolContext> */
3497 var31 = self->attrs[COLOR_toolcontext__ToolContext___opt_bash_completion].val; /* _opt_bash_completion on <self:ToolContext> */
3498 if (unlikely(var31 == NULL)) {
3499 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_bash_completion");
3500 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 267);
3501 show_backtrace(1);
3502 }
3503 var29 = var31;
3504 RET_LABEL30:(void)0;
3505 }
3506 }
3507 {
3508 { /* Inline opts#Option#value (var29) on <var29:OptionBool> */
3509 var34 = var29->attrs[COLOR_opts__Option___value].val; /* _value on <var29:OptionBool> */
3510 var32 = var34;
3511 RET_LABEL33:(void)0;
3512 }
3513 }
3514 var35 = ((struct instance_kernel__Bool*)var32)->value; /* autounbox from nullable Object to Bool */;
3515 if (var35){
3516 var36 = NEW_toolcontext__BashCompletion(&type_toolcontext__BashCompletion);
3517 {
3518 toolcontext__BashCompletion__init(var36, self); /* Direct call toolcontext#BashCompletion#init on <var36:BashCompletion>*/
3519 }
3520 var_bash_completion = var36;
3521 {
3522 { /* Inline kernel#Object#sys (self) on <self:ToolContext> */
3523 var39 = glob_sys;
3524 var37 = var39;
3525 goto RET_LABEL38;
3526 RET_LABEL38:(void)0;
3527 }
3528 }
3529 {
3530 { /* Inline file#Sys#stdout (var37) on <var37:Sys> */
3531 var42 = var37->attrs[COLOR_file__Sys___stdout].val; /* _stdout on <var37:Sys> */
3532 if (unlikely(var42 == NULL)) {
3533 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stdout");
3534 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/file.nit", 634);
3535 show_backtrace(1);
3536 }
3537 var40 = var42;
3538 RET_LABEL41:(void)0;
3539 }
3540 }
3541 {
3542 template__Template__write_to(var_bash_completion, var40); /* Direct call template#Template#write_to on <var_bash_completion:BashCompletion>*/
3543 }
3544 var43 = 0;
3545 {
3546 { /* Inline kernel#Object#exit (self,var43) on <self:ToolContext> */
3547 exit(var43);
3548 RET_LABEL44:(void)0;
3549 }
3550 }
3551 } else {
3552 }
3553 {
3554 { /* Inline toolcontext#ToolContext#opt_stub_man (self) on <self:ToolContext> */
3555 var47 = self->attrs[COLOR_toolcontext__ToolContext___opt_stub_man].val; /* _opt_stub_man on <self:ToolContext> */
3556 if (unlikely(var47 == NULL)) {
3557 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_stub_man");
3558 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 270);
3559 show_backtrace(1);
3560 }
3561 var45 = var47;
3562 RET_LABEL46:(void)0;
3563 }
3564 }
3565 {
3566 { /* Inline opts#Option#value (var45) on <var45:OptionBool> */
3567 var50 = var45->attrs[COLOR_opts__Option___value].val; /* _value on <var45:OptionBool> */
3568 var48 = var50;
3569 RET_LABEL49:(void)0;
3570 }
3571 }
3572 var51 = ((struct instance_kernel__Bool*)var48)->value; /* autounbox from nullable Object to Bool */;
3573 if (var51){
3574 if (varonce) {
3575 var52 = varonce;
3576 } else {
3577 var53 = "% ";
3578 var54 = 2;
3579 var55 = string__NativeString__to_s_with_length(var53, var54);
3580 var52 = var55;
3581 varonce = var52;
3582 }
3583 {
3584 var56 = toolcontext__ToolContext__toolname(self);
3585 }
3586 {
3587 var57 = string__FlatString__to_upper(var56);
3588 }
3589 if (varonce58) {
3590 var59 = varonce58;
3591 } else {
3592 var60 = "(1)\n\n# NAME\n\n";
3593 var61 = 13;
3594 var62 = string__NativeString__to_s_with_length(var60, var61);
3595 var59 = var62;
3596 varonce58 = var59;
3597 }
3598 {
3599 { /* Inline toolcontext#ToolContext#tooldescription (self) on <self:ToolContext> */
3600 var65 = self->attrs[COLOR_toolcontext__ToolContext___tooldescription].val; /* _tooldescription on <self:ToolContext> */
3601 if (unlikely(var65 == NULL)) {
3602 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tooldescription");
3603 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 281);
3604 show_backtrace(1);
3605 }
3606 var63 = var65;
3607 RET_LABEL64:(void)0;
3608 }
3609 }
3610 if (varonce66) {
3611 var67 = varonce66;
3612 } else {
3613 var68 = "\n";
3614 var69 = 1;
3615 var70 = string__NativeString__to_s_with_length(var68, var69);
3616 var67 = var70;
3617 varonce66 = var67;
3618 }
3619 {
3620 var71 = string_search__Text__split(var63, var67);
3621 }
3622 var72 = 1;
3623 {
3624 var73 = array__Array___91d_93d(var71, var72);
3625 }
3626 if (varonce74) {
3627 var75 = varonce74;
3628 } else {
3629 var76 = "\n\n# SYNOPSYS\n\n";
3630 var77 = 14;
3631 var78 = string__NativeString__to_s_with_length(var76, var77);
3632 var75 = var78;
3633 varonce74 = var75;
3634 }
3635 {
3636 var79 = toolcontext__ToolContext__toolname(self);
3637 }
3638 if (varonce80) {
3639 var81 = varonce80;
3640 } else {
3641 var82 = " [*options*]...\n\n# OPTIONS\n";
3642 var83 = 27;
3643 var84 = string__NativeString__to_s_with_length(var82, var83);
3644 var81 = var84;
3645 varonce80 = var81;
3646 }
3647 var85 = NEW_array__Array(&type_array__Arraykernel__Object);
3648 { /* var85 = array_instance Array[Object] */
3649 var86 = 7;
3650 var87 = NEW_array__NativeArray(var86, &type_array__NativeArraykernel__Object);
3651 ((struct instance_array__NativeArray*)var87)->values[0] = (val*) var52;
3652 ((struct instance_array__NativeArray*)var87)->values[1] = (val*) var57;
3653 ((struct instance_array__NativeArray*)var87)->values[2] = (val*) var59;
3654 ((struct instance_array__NativeArray*)var87)->values[3] = (val*) var73;
3655 ((struct instance_array__NativeArray*)var87)->values[4] = (val*) var75;
3656 ((struct instance_array__NativeArray*)var87)->values[5] = (val*) var79;
3657 ((struct instance_array__NativeArray*)var87)->values[6] = (val*) var81;
3658 {
3659 ((void (*)(val*, val*, long))(var85->class->vft[COLOR_array__Array__with_native]))(var85, var87, var86) /* with_native on <var85:Array[Object]>*/;
3660 }
3661 }
3662 {
3663 var88 = ((val* (*)(val*))(var85->class->vft[COLOR_string__Object__to_s]))(var85) /* to_s on <var85:Array[Object]>*/;
3664 }
3665 {
3666 file__Object__print(self, var88); /* Direct call file#Object#print on <self:ToolContext>*/
3667 }
3668 {
3669 { /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
3670 var91 = self->attrs[COLOR_toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
3671 if (unlikely(var91 == NULL)) {
3672 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
3673 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 231);
3674 show_backtrace(1);
3675 }
3676 var89 = var91;
3677 RET_LABEL90:(void)0;
3678 }
3679 }
3680 {
3681 { /* Inline opts#OptionContext#options (var89) on <var89:OptionContext> */
3682 var94 = var89->attrs[COLOR_opts__OptionContext___options].val; /* _options on <var89:OptionContext> */
3683 if (unlikely(var94 == NULL)) {
3684 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
3685 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 243);
3686 show_backtrace(1);
3687 }
3688 var92 = var94;
3689 RET_LABEL93:(void)0;
3690 }
3691 }
3692 var_ = var92;
3693 {
3694 var95 = array__AbstractArrayRead__iterator(var_);
3695 }
3696 var_96 = var95;
3697 for(;;) {
3698 {
3699 var97 = array__ArrayIterator__is_ok(var_96);
3700 }
3701 if (var97){
3702 {
3703 var98 = array__ArrayIterator__item(var_96);
3704 }
3705 var_o = var98;
3706 var99 = 1;
3707 var_first = var99;
3708 {
3709 { /* Inline opts#Option#names (var_o) on <var_o:Option> */
3710 var102 = var_o->attrs[COLOR_opts__Option___names].val; /* _names on <var_o:Option> */
3711 if (unlikely(var102 == NULL)) {
3712 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
3713 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 19);
3714 show_backtrace(1);
3715 }
3716 var100 = var102;
3717 RET_LABEL101:(void)0;
3718 }
3719 }
3720 var_103 = var100;
3721 {
3722 var104 = array__AbstractArrayRead__iterator(var_103);
3723 }
3724 var_105 = var104;
3725 for(;;) {
3726 {
3727 var106 = array__ArrayIterator__is_ok(var_105);
3728 }
3729 if (var106){
3730 {
3731 var107 = array__ArrayIterator__item(var_105);
3732 }
3733 var_n = var107;
3734 if (var_first){
3735 var108 = 0;
3736 var_first = var108;
3737 } else {
3738 if (varonce109) {
3739 var110 = varonce109;
3740 } else {
3741 var111 = ", ";
3742 var112 = 2;
3743 var113 = string__NativeString__to_s_with_length(var111, var112);
3744 var110 = var113;
3745 varonce109 = var110;
3746 }
3747 var114 = NEW_array__Array(&type_array__Arraykernel__Object);
3748 { /* var114 = array_instance Array[Object] */
3749 var115 = 1;
3750 var116 = NEW_array__NativeArray(var115, &type_array__NativeArraykernel__Object);
3751 ((struct instance_array__NativeArray*)var116)->values[0] = (val*) var110;
3752 {
3753 ((void (*)(val*, val*, long))(var114->class->vft[COLOR_array__Array__with_native]))(var114, var116, var115) /* with_native on <var114:Array[Object]>*/;
3754 }
3755 }
3756 {
3757 file__Object__printn(self, var114); /* Direct call file#Object#printn on <self:ToolContext>*/
3758 }
3759 }
3760 if (varonce117) {
3761 var118 = varonce117;
3762 } else {
3763 var119 = "`";
3764 var120 = 1;
3765 var121 = string__NativeString__to_s_with_length(var119, var120);
3766 var118 = var121;
3767 varonce117 = var118;
3768 }
3769 if (varonce122) {
3770 var123 = varonce122;
3771 } else {
3772 var124 = "`";
3773 var125 = 1;
3774 var126 = string__NativeString__to_s_with_length(var124, var125);
3775 var123 = var126;
3776 varonce122 = var123;
3777 }
3778 var127 = NEW_array__Array(&type_array__Arraykernel__Object);
3779 { /* var127 = array_instance Array[Object] */
3780 var128 = 3;
3781 var129 = NEW_array__NativeArray(var128, &type_array__NativeArraykernel__Object);
3782 ((struct instance_array__NativeArray*)var129)->values[0] = (val*) var118;
3783 ((struct instance_array__NativeArray*)var129)->values[1] = (val*) var_n;
3784 ((struct instance_array__NativeArray*)var129)->values[2] = (val*) var123;
3785 {
3786 ((void (*)(val*, val*, long))(var127->class->vft[COLOR_array__Array__with_native]))(var127, var129, var128) /* with_native on <var127:Array[Object]>*/;
3787 }
3788 }
3789 {
3790 var130 = ((val* (*)(val*))(var127->class->vft[COLOR_string__Object__to_s]))(var127) /* to_s on <var127:Array[Object]>*/;
3791 }
3792 var131 = NEW_array__Array(&type_array__Arraykernel__Object);
3793 { /* var131 = array_instance Array[Object] */
3794 var132 = 1;
3795 var133 = NEW_array__NativeArray(var132, &type_array__NativeArraykernel__Object);
3796 ((struct instance_array__NativeArray*)var133)->values[0] = (val*) var130;
3797 {
3798 ((void (*)(val*, val*, long))(var131->class->vft[COLOR_array__Array__with_native]))(var131, var133, var132) /* with_native on <var131:Array[Object]>*/;
3799 }
3800 }
3801 {
3802 file__Object__printn(self, var131); /* Direct call file#Object#printn on <self:ToolContext>*/
3803 }
3804 {
3805 array__ArrayIterator__next(var_105); /* Direct call array#ArrayIterator#next on <var_105:ArrayIterator[String]>*/
3806 }
3807 } else {
3808 goto BREAK_label;
3809 }
3810 }
3811 BREAK_label: (void)0;
3812 {
3813 { /* Inline abstract_collection#Iterator#finish (var_105) on <var_105:ArrayIterator[String]> */
3814 RET_LABEL134:(void)0;
3815 }
3816 }
3817 if (varonce135) {
3818 var136 = varonce135;
3819 } else {
3820 var137 = "";
3821 var138 = 0;
3822 var139 = string__NativeString__to_s_with_length(var137, var138);
3823 var136 = var139;
3824 varonce135 = var136;
3825 }
3826 {
3827 file__Object__print(self, var136); /* Direct call file#Object#print on <self:ToolContext>*/
3828 }
3829 if (varonce140) {
3830 var141 = varonce140;
3831 } else {
3832 var142 = ": ";
3833 var143 = 4;
3834 var144 = string__NativeString__to_s_with_length(var142, var143);
3835 var141 = var144;
3836 varonce140 = var141;
3837 }
3838 {
3839 { /* Inline opts#Option#helptext (var_o) on <var_o:Option> */
3840 var147 = var_o->attrs[COLOR_opts__Option___helptext].val; /* _helptext on <var_o:Option> */
3841 if (unlikely(var147 == NULL)) {
3842 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _helptext");
3843 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 25);
3844 show_backtrace(1);
3845 }
3846 var145 = var147;
3847 RET_LABEL146:(void)0;
3848 }
3849 }
3850 var148 = NEW_array__Array(&type_array__Arraykernel__Object);
3851 { /* var148 = array_instance Array[Object] */
3852 var149 = 2;
3853 var150 = NEW_array__NativeArray(var149, &type_array__NativeArraykernel__Object);
3854 ((struct instance_array__NativeArray*)var150)->values[0] = (val*) var141;
3855 ((struct instance_array__NativeArray*)var150)->values[1] = (val*) var145;
3856 {
3857 ((void (*)(val*, val*, long))(var148->class->vft[COLOR_array__Array__with_native]))(var148, var150, var149) /* with_native on <var148:Array[Object]>*/;
3858 }
3859 }
3860 {
3861 var151 = ((val* (*)(val*))(var148->class->vft[COLOR_string__Object__to_s]))(var148) /* to_s on <var148:Array[Object]>*/;
3862 }
3863 {
3864 file__Object__print(self, var151); /* Direct call file#Object#print on <self:ToolContext>*/
3865 }
3866 if (varonce152) {
3867 var153 = varonce152;
3868 } else {
3869 var154 = "";
3870 var155 = 0;
3871 var156 = string__NativeString__to_s_with_length(var154, var155);
3872 var153 = var156;
3873 varonce152 = var153;
3874 }
3875 {
3876 file__Object__print(self, var153); /* Direct call file#Object#print on <self:ToolContext>*/
3877 }
3878 {
3879 array__ArrayIterator__next(var_96); /* Direct call array#ArrayIterator#next on <var_96:ArrayIterator[Option]>*/
3880 }
3881 } else {
3882 goto BREAK_label157;
3883 }
3884 }
3885 BREAK_label157: (void)0;
3886 {
3887 { /* Inline abstract_collection#Iterator#finish (var_96) on <var_96:ArrayIterator[Option]> */
3888 RET_LABEL158:(void)0;
3889 }
3890 }
3891 if (varonce159) {
3892 var160 = varonce159;
3893 } else {
3894 var161 = "# SEE ALSO\n\nThe Nit language documentation and the source code of its tools and libraries may be downloaded from <http://nitlanguage.org>";
3895 var162 = 137;
3896 var163 = string__NativeString__to_s_with_length(var161, var162);
3897 var160 = var163;
3898 varonce159 = var160;
3899 }
3900 {
3901 file__Object__print(self, var160); /* Direct call file#Object#print on <self:ToolContext>*/
3902 }
3903 var164 = 0;
3904 {
3905 { /* Inline kernel#Object#exit (self,var164) on <self:ToolContext> */
3906 exit(var164);
3907 RET_LABEL165:(void)0;
3908 }
3909 }
3910 } else {
3911 }
3912 {
3913 { /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
3914 var168 = self->attrs[COLOR_toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
3915 if (unlikely(var168 == NULL)) {
3916 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
3917 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 231);
3918 show_backtrace(1);
3919 }
3920 var166 = var168;
3921 RET_LABEL167:(void)0;
3922 }
3923 }
3924 {
3925 var169 = opts__OptionContext__get_errors(var166);
3926 }
3927 var_errors = var169;
3928 {
3929 var170 = array__AbstractArrayRead__is_empty(var_errors);
3930 }
3931 var171 = !var170;
3932 if (var171){
3933 var_172 = var_errors;
3934 {
3935 var173 = array__AbstractArrayRead__iterator(var_172);
3936 }
3937 var_174 = var173;
3938 for(;;) {
3939 {
3940 var175 = array__ArrayIterator__is_ok(var_174);
3941 }
3942 if (var175){
3943 {
3944 var176 = array__ArrayIterator__item(var_174);
3945 }
3946 var_e = var176;
3947 if (varonce177) {
3948 var178 = varonce177;
3949 } else {
3950 var179 = "Error: ";
3951 var180 = 7;
3952 var181 = string__NativeString__to_s_with_length(var179, var180);
3953 var178 = var181;
3954 varonce177 = var178;
3955 }
3956 var182 = NEW_array__Array(&type_array__Arraykernel__Object);
3957 { /* var182 = array_instance Array[Object] */
3958 var183 = 2;
3959 var184 = NEW_array__NativeArray(var183, &type_array__NativeArraykernel__Object);
3960 ((struct instance_array__NativeArray*)var184)->values[0] = (val*) var178;
3961 ((struct instance_array__NativeArray*)var184)->values[1] = (val*) var_e;
3962 {
3963 ((void (*)(val*, val*, long))(var182->class->vft[COLOR_array__Array__with_native]))(var182, var184, var183) /* with_native on <var182:Array[Object]>*/;
3964 }
3965 }
3966 {
3967 var185 = ((val* (*)(val*))(var182->class->vft[COLOR_string__Object__to_s]))(var182) /* to_s on <var182:Array[Object]>*/;
3968 }
3969 {
3970 file__Object__print(self, var185); /* Direct call file#Object#print on <self:ToolContext>*/
3971 }
3972 {
3973 array__ArrayIterator__next(var_174); /* Direct call array#ArrayIterator#next on <var_174:ArrayIterator[String]>*/
3974 }
3975 } else {
3976 goto BREAK_label186;
3977 }
3978 }
3979 BREAK_label186: (void)0;
3980 {
3981 { /* Inline abstract_collection#Iterator#finish (var_174) on <var_174:ArrayIterator[String]> */
3982 RET_LABEL187:(void)0;
3983 }
3984 }
3985 {
3986 { /* Inline toolcontext#ToolContext#tooldescription (self) on <self:ToolContext> */
3987 var190 = self->attrs[COLOR_toolcontext__ToolContext___tooldescription].val; /* _tooldescription on <self:ToolContext> */
3988 if (unlikely(var190 == NULL)) {
3989 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tooldescription");
3990 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 281);
3991 show_backtrace(1);
3992 }
3993 var188 = var190;
3994 RET_LABEL189:(void)0;
3995 }
3996 }
3997 {
3998 file__Object__print(self, var188); /* Direct call file#Object#print on <self:ToolContext>*/
3999 }
4000 if (varonce191) {
4001 var192 = varonce191;
4002 } else {
4003 var193 = "Use --help for help";
4004 var194 = 19;
4005 var195 = string__NativeString__to_s_with_length(var193, var194);
4006 var192 = var195;
4007 varonce191 = var192;
4008 }
4009 {
4010 file__Object__print(self, var192); /* Direct call file#Object#print on <self:ToolContext>*/
4011 }
4012 var196 = 1;
4013 {
4014 { /* Inline kernel#Object#exit (self,var196) on <self:ToolContext> */
4015 exit(var196);
4016 RET_LABEL197:(void)0;
4017 }
4018 }
4019 } else {
4020 }
4021 {
4022 { /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
4023 var201 = self->attrs[COLOR_toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
4024 if (unlikely(var201 == NULL)) {
4025 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
4026 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 231);
4027 show_backtrace(1);
4028 }
4029 var199 = var201;
4030 RET_LABEL200:(void)0;
4031 }
4032 }
4033 {
4034 { /* Inline opts#OptionContext#rest (var199) on <var199:OptionContext> */
4035 var204 = var199->attrs[COLOR_opts__OptionContext___rest].val; /* _rest on <var199:OptionContext> */
4036 if (unlikely(var204 == NULL)) {
4037 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _rest");
4038 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 246);
4039 show_backtrace(1);
4040 }
4041 var202 = var204;
4042 RET_LABEL203:(void)0;
4043 }
4044 }
4045 {
4046 var205 = array__AbstractArrayRead__is_empty(var202);
4047 }
4048 var_206 = var205;
4049 if (var205){
4050 {
4051 { /* Inline toolcontext#ToolContext#accept_no_arguments (self) on <self:ToolContext> */
4052 var209 = self->attrs[COLOR_toolcontext__ToolContext___accept_no_arguments].s; /* _accept_no_arguments on <self:ToolContext> */
4053 var207 = var209;
4054 RET_LABEL208:(void)0;
4055 }
4056 }
4057 var210 = !var207;
4058 var198 = var210;
4059 } else {
4060 var198 = var_206;
4061 }
4062 if (var198){
4063 {
4064 { /* Inline toolcontext#ToolContext#tooldescription (self) on <self:ToolContext> */
4065 var213 = self->attrs[COLOR_toolcontext__ToolContext___tooldescription].val; /* _tooldescription on <self:ToolContext> */
4066 if (unlikely(var213 == NULL)) {
4067 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tooldescription");
4068 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 281);
4069 show_backtrace(1);
4070 }
4071 var211 = var213;
4072 RET_LABEL212:(void)0;
4073 }
4074 }
4075 {
4076 file__Object__print(self, var211); /* Direct call file#Object#print on <self:ToolContext>*/
4077 }
4078 if (varonce214) {
4079 var215 = varonce214;
4080 } else {
4081 var216 = "Use --help for help";
4082 var217 = 19;
4083 var218 = string__NativeString__to_s_with_length(var216, var217);
4084 var215 = var218;
4085 varonce214 = var215;
4086 }
4087 {
4088 file__Object__print(self, var215); /* Direct call file#Object#print on <self:ToolContext>*/
4089 }
4090 var219 = 1;
4091 {
4092 { /* Inline kernel#Object#exit (self,var219) on <self:ToolContext> */
4093 exit(var219);
4094 RET_LABEL220:(void)0;
4095 }
4096 }
4097 } else {
4098 }
4099 {
4100 { /* Inline toolcontext#ToolContext#opt_verbose (self) on <self:ToolContext> */
4101 var223 = self->attrs[COLOR_toolcontext__ToolContext___opt_verbose].val; /* _opt_verbose on <self:ToolContext> */
4102 if (unlikely(var223 == NULL)) {
4103 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_verbose");
4104 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 258);
4105 show_backtrace(1);
4106 }
4107 var221 = var223;
4108 RET_LABEL222:(void)0;
4109 }
4110 }
4111 {
4112 { /* Inline opts#Option#value (var221) on <var221:OptionCount> */
4113 var226 = var221->attrs[COLOR_opts__Option___value].val; /* _value on <var221:OptionCount> */
4114 var224 = var226;
4115 RET_LABEL225:(void)0;
4116 }
4117 }
4118 {
4119 { /* Inline toolcontext#ToolContext#verbose_level= (self,var224) on <self:ToolContext> */
4120 var228 = ((struct instance_kernel__Int*)var224)->value; /* autounbox from nullable Object to Int */;
4121 self->attrs[COLOR_toolcontext__ToolContext___verbose_level].l = var228; /* _verbose_level on <self:ToolContext> */
4122 RET_LABEL227:(void)0;
4123 }
4124 }
4125 {
4126 { /* Inline toolcontext#ToolContext#opt_quiet (self) on <self:ToolContext> */
4127 var231 = self->attrs[COLOR_toolcontext__ToolContext___opt_quiet].val; /* _opt_quiet on <self:ToolContext> */
4128 if (unlikely(var231 == NULL)) {
4129 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_quiet");
4130 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 240);
4131 show_backtrace(1);
4132 }
4133 var229 = var231;
4134 RET_LABEL230:(void)0;
4135 }
4136 }
4137 {
4138 { /* Inline opts#Option#value (var229) on <var229:OptionBool> */
4139 var234 = var229->attrs[COLOR_opts__Option___value].val; /* _value on <var229:OptionBool> */
4140 var232 = var234;
4141 RET_LABEL233:(void)0;
4142 }
4143 }
4144 var235 = ((struct instance_kernel__Bool*)var232)->value; /* autounbox from nullable Object to Bool */;
4145 if (var235){
4146 {
4147 { /* Inline toolcontext#ToolContext#opt_warn (self) on <self:ToolContext> */
4148 var238 = self->attrs[COLOR_toolcontext__ToolContext___opt_warn].val; /* _opt_warn on <self:ToolContext> */
4149 if (unlikely(var238 == NULL)) {
4150 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_warn");
4151 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 234);
4152 show_backtrace(1);
4153 }
4154 var236 = var238;
4155 RET_LABEL237:(void)0;
4156 }
4157 }
4158 var239 = 0;
4159 {
4160 { /* Inline opts#Option#value= (var236,var239) on <var236:OptionCount> */
4161 /* Covariant cast for argument 0 (value) <var239:Int> isa VALUE */
4162 /* <var239:Int> isa VALUE */
4163 type_struct244 = var236->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
4164 cltype242 = type_struct244->color;
4165 idtype243 = type_struct244->id;
4166 if(cltype242 >= (&type_kernel__Int)->table_size) {
4167 var241 = 0;
4168 } else {
4169 var241 = (&type_kernel__Int)->type_table[cltype242] == idtype243;
4170 }
4171 if (unlikely(!var241)) {
4172 var_class_name245 = type_kernel__Int.name;
4173 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name245);
4174 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 40);
4175 show_backtrace(1);
4176 }
4177 var246 = BOX_kernel__Int(var239); /* autobox from Int to nullable Object */
4178 var236->attrs[COLOR_opts__Option___value].val = var246; /* _value on <var236:OptionCount> */
4179 RET_LABEL240:(void)0;
4180 }
4181 }
4182 } else {
4183 }
4184 {
4185 { /* Inline toolcontext#ToolContext#opt_log_dir (self) on <self:ToolContext> */
4186 var249 = self->attrs[COLOR_toolcontext__ToolContext___opt_log_dir].val; /* _opt_log_dir on <self:ToolContext> */
4187 if (unlikely(var249 == NULL)) {
4188 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_log_dir");
4189 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 246);
4190 show_backtrace(1);
4191 }
4192 var247 = var249;
4193 RET_LABEL248:(void)0;
4194 }
4195 }
4196 {
4197 { /* Inline opts#Option#value (var247) on <var247:OptionString> */
4198 var252 = var247->attrs[COLOR_opts__Option___value].val; /* _value on <var247:OptionString> */
4199 var250 = var252;
4200 RET_LABEL251:(void)0;
4201 }
4202 }
4203 var253 = NULL;
4204 if (var250 == NULL) {
4205 var254 = 0; /* is null */
4206 } else {
4207 var254 = 1; /* arg is null and recv is not */
4208 }
4209 if (0) {
4210 { /* Inline kernel#Object#!= (var250,var253) on <var250:nullable Object(nullable String)> */
4211 var_other = var253;
4212 {
4213 var258 = ((short int (*)(val*, val*))(var250->class->vft[COLOR_kernel__Object___61d_61d]))(var250, var_other) /* == on <var250:nullable String(String)>*/;
4214 var257 = var258;
4215 }
4216 var259 = !var257;
4217 var255 = var259;
4218 goto RET_LABEL256;
4219 RET_LABEL256:(void)0;
4220 }
4221 var254 = var255;
4222 }
4223 if (var254){
4224 {
4225 { /* Inline toolcontext#ToolContext#opt_log_dir (self) on <self:ToolContext> */
4226 var262 = self->attrs[COLOR_toolcontext__ToolContext___opt_log_dir].val; /* _opt_log_dir on <self:ToolContext> */
4227 if (unlikely(var262 == NULL)) {
4228 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_log_dir");
4229 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 246);
4230 show_backtrace(1);
4231 }
4232 var260 = var262;
4233 RET_LABEL261:(void)0;
4234 }
4235 }
4236 {
4237 { /* Inline opts#Option#value (var260) on <var260:OptionString> */
4238 var265 = var260->attrs[COLOR_opts__Option___value].val; /* _value on <var260:OptionString> */
4239 var263 = var265;
4240 RET_LABEL264:(void)0;
4241 }
4242 }
4243 if (unlikely(var263 == NULL)) {
4244 PRINT_ERROR("Runtime error: %s", "Cast failed");
4245 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 379);
4246 show_backtrace(1);
4247 }
4248 {
4249 { /* Inline toolcontext#ToolContext#log_directory= (self,var263) on <self:ToolContext> */
4250 self->attrs[COLOR_toolcontext__ToolContext___log_directory].val = var263; /* _log_directory on <self:ToolContext> */
4251 RET_LABEL266:(void)0;
4252 }
4253 }
4254 } else {
4255 }
4256 {
4257 { /* Inline toolcontext#ToolContext#opt_log (self) on <self:ToolContext> */
4258 var269 = self->attrs[COLOR_toolcontext__ToolContext___opt_log].val; /* _opt_log on <self:ToolContext> */
4259 if (unlikely(var269 == NULL)) {
4260 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_log");
4261 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 243);
4262 show_backtrace(1);
4263 }
4264 var267 = var269;
4265 RET_LABEL268:(void)0;
4266 }
4267 }
4268 {
4269 { /* Inline opts#Option#value (var267) on <var267:OptionBool> */
4270 var272 = var267->attrs[COLOR_opts__Option___value].val; /* _value on <var267:OptionBool> */
4271 var270 = var272;
4272 RET_LABEL271:(void)0;
4273 }
4274 }
4275 var273 = ((struct instance_kernel__Bool*)var270)->value; /* autounbox from nullable Object to Bool */;
4276 if (var273){
4277 {
4278 { /* Inline toolcontext#ToolContext#log_directory (self) on <self:ToolContext> */
4279 var276 = self->attrs[COLOR_toolcontext__ToolContext___log_directory].val; /* _log_directory on <self:ToolContext> */
4280 if (unlikely(var276 == NULL)) {
4281 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _log_directory");
4282 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 101);
4283 show_backtrace(1);
4284 }
4285 var274 = var276;
4286 RET_LABEL275:(void)0;
4287 }
4288 }
4289 {
4290 file__String__mkdir(var274); /* Direct call file#String#mkdir on <var274:String>*/
4291 }
4292 } else {
4293 }
4294 {
4295 var277 = toolcontext__ToolContext__compute_nit_dir(self);
4296 }
4297 {
4298 { /* Inline toolcontext#ToolContext#nit_dir= (self,var277) on <self:ToolContext> */
4299 self->attrs[COLOR_toolcontext__ToolContext___nit_dir].val = var277; /* _nit_dir on <self:ToolContext> */
4300 RET_LABEL278:(void)0;
4301 }
4302 }
4303 RET_LABEL:;
4304 }
4305 /* method toolcontext#ToolContext#process_options for (self: Object, Sequence[String]) */
4306 void VIRTUAL_toolcontext__ToolContext__process_options(val* self, val* p0) {
4307 toolcontext__ToolContext__process_options(self, p0); /* Direct call toolcontext#ToolContext#process_options on <self:Object(ToolContext)>*/
4308 RET_LABEL:;
4309 }
4310 /* method toolcontext#ToolContext#version for (self: ToolContext): String */
4311 val* toolcontext__ToolContext__version(val* self) {
4312 val* var /* : String */;
4313 val* var1 /* : OptionBool */;
4314 val* var3 /* : OptionBool */;
4315 val* var4 /* : nullable Object */;
4316 val* var6 /* : nullable Object */;
4317 short int var7 /* : Bool */;
4318 static val* varonce;
4319 val* var8 /* : String */;
4320 char* var9 /* : NativeString */;
4321 long var10 /* : Int */;
4322 val* var11 /* : FlatString */;
4323 val* var12 /* : String */;
4324 {
4325 { /* Inline toolcontext#ToolContext#opt_set_dummy_tool (self) on <self:ToolContext> */
4326 var3 = self->attrs[COLOR_toolcontext__ToolContext___opt_set_dummy_tool].val; /* _opt_set_dummy_tool on <self:ToolContext> */
4327 if (unlikely(var3 == NULL)) {
4328 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_set_dummy_tool");
4329 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 255);
4330 show_backtrace(1);
4331 }
4332 var1 = var3;
4333 RET_LABEL2:(void)0;
4334 }
4335 }
4336 {
4337 { /* Inline opts#Option#value (var1) on <var1:OptionBool> */
4338 var6 = var1->attrs[COLOR_opts__Option___value].val; /* _value on <var1:OptionBool> */
4339 var4 = var6;
4340 RET_LABEL5:(void)0;
4341 }
4342 }
4343 var7 = ((struct instance_kernel__Bool*)var4)->value; /* autounbox from nullable Object to Bool */;
4344 if (var7){
4345 if (varonce) {
4346 var8 = varonce;
4347 } else {
4348 var9 = "DUMMY_VERSION";
4349 var10 = 13;
4350 var11 = string__NativeString__to_s_with_length(var9, var10);
4351 var8 = var11;
4352 varonce = var8;
4353 }
4354 var = var8;
4355 goto RET_LABEL;
4356 } else {
4357 }
4358 {
4359 var12 = version__Object__nit_version(self);
4360 }
4361 var = var12;
4362 goto RET_LABEL;
4363 RET_LABEL:;
4364 return var;
4365 }
4366 /* method toolcontext#ToolContext#version for (self: Object): String */
4367 val* VIRTUAL_toolcontext__ToolContext__version(val* self) {
4368 val* var /* : String */;
4369 val* var1 /* : String */;
4370 var1 = toolcontext__ToolContext__version(self);
4371 var = var1;
4372 RET_LABEL:;
4373 return var;
4374 }
4375 /* method toolcontext#ToolContext#toolname for (self: ToolContext): String */
4376 val* toolcontext__ToolContext__toolname(val* self) {
4377 val* var /* : String */;
4378 val* var1 /* : OptionBool */;
4379 val* var3 /* : OptionBool */;
4380 val* var4 /* : nullable Object */;
4381 val* var6 /* : nullable Object */;
4382 short int var7 /* : Bool */;
4383 static val* varonce;
4384 val* var8 /* : String */;
4385 char* var9 /* : NativeString */;
4386 long var10 /* : Int */;
4387 val* var11 /* : FlatString */;
4388 val* var12 /* : Sys */;
4389 val* var14 /* : Sys */;
4390 val* var15 /* : String */;
4391 static val* varonce16;
4392 val* var17 /* : String */;
4393 char* var18 /* : NativeString */;
4394 long var19 /* : Int */;
4395 val* var20 /* : FlatString */;
4396 val* var21 /* : String */;
4397 {
4398 { /* Inline toolcontext#ToolContext#opt_set_dummy_tool (self) on <self:ToolContext> */
4399 var3 = self->attrs[COLOR_toolcontext__ToolContext___opt_set_dummy_tool].val; /* _opt_set_dummy_tool on <self:ToolContext> */
4400 if (unlikely(var3 == NULL)) {
4401 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_set_dummy_tool");
4402 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 255);
4403 show_backtrace(1);
4404 }
4405 var1 = var3;
4406 RET_LABEL2:(void)0;
4407 }
4408 }
4409 {
4410 { /* Inline opts#Option#value (var1) on <var1:OptionBool> */
4411 var6 = var1->attrs[COLOR_opts__Option___value].val; /* _value on <var1:OptionBool> */
4412 var4 = var6;
4413 RET_LABEL5:(void)0;
4414 }
4415 }
4416 var7 = ((struct instance_kernel__Bool*)var4)->value; /* autounbox from nullable Object to Bool */;
4417 if (var7){
4418 if (varonce) {
4419 var8 = varonce;
4420 } else {
4421 var9 = "DUMMY_TOOL";
4422 var10 = 10;
4423 var11 = string__NativeString__to_s_with_length(var9, var10);
4424 var8 = var11;
4425 varonce = var8;
4426 }
4427 var = var8;
4428 goto RET_LABEL;
4429 } else {
4430 }
4431 {
4432 { /* Inline kernel#Object#sys (self) on <self:ToolContext> */
4433 var14 = glob_sys;
4434 var12 = var14;
4435 goto RET_LABEL13;
4436 RET_LABEL13:(void)0;
4437 }
4438 }
4439 {
4440 var15 = string__Sys__program_name(var12);
4441 }
4442 if (varonce16) {
4443 var17 = varonce16;
4444 } else {
4445 var18 = "";
4446 var19 = 0;
4447 var20 = string__NativeString__to_s_with_length(var18, var19);
4448 var17 = var20;
4449 varonce16 = var17;
4450 }
4451 {
4452 var21 = file__String__basename(var15, var17);
4453 }
4454 var = var21;
4455 goto RET_LABEL;
4456 RET_LABEL:;
4457 return var;
4458 }
4459 /* method toolcontext#ToolContext#toolname for (self: Object): String */
4460 val* VIRTUAL_toolcontext__ToolContext__toolname(val* self) {
4461 val* var /* : String */;
4462 val* var1 /* : String */;
4463 var1 = toolcontext__ToolContext__toolname(self);
4464 var = var1;
4465 RET_LABEL:;
4466 return var;
4467 }
4468 /* method toolcontext#ToolContext#nit_dir for (self: ToolContext): nullable String */
4469 val* toolcontext__ToolContext__nit_dir(val* self) {
4470 val* var /* : nullable String */;
4471 val* var1 /* : nullable String */;
4472 var1 = self->attrs[COLOR_toolcontext__ToolContext___nit_dir].val; /* _nit_dir on <self:ToolContext> */
4473 var = var1;
4474 RET_LABEL:;
4475 return var;
4476 }
4477 /* method toolcontext#ToolContext#nit_dir for (self: Object): nullable String */
4478 val* VIRTUAL_toolcontext__ToolContext__nit_dir(val* self) {
4479 val* var /* : nullable String */;
4480 val* var1 /* : nullable String */;
4481 val* var3 /* : nullable String */;
4482 { /* Inline toolcontext#ToolContext#nit_dir (self) on <self:Object(ToolContext)> */
4483 var3 = self->attrs[COLOR_toolcontext__ToolContext___nit_dir].val; /* _nit_dir on <self:Object(ToolContext)> */
4484 var1 = var3;
4485 RET_LABEL2:(void)0;
4486 }
4487 var = var1;
4488 RET_LABEL:;
4489 return var;
4490 }
4491 /* method toolcontext#ToolContext#nit_dir= for (self: ToolContext, nullable String) */
4492 void toolcontext__ToolContext__nit_dir_61d(val* self, val* p0) {
4493 self->attrs[COLOR_toolcontext__ToolContext___nit_dir].val = p0; /* _nit_dir on <self:ToolContext> */
4494 RET_LABEL:;
4495 }
4496 /* method toolcontext#ToolContext#nit_dir= for (self: Object, nullable String) */
4497 void VIRTUAL_toolcontext__ToolContext__nit_dir_61d(val* self, val* p0) {
4498 { /* Inline toolcontext#ToolContext#nit_dir= (self,p0) on <self:Object(ToolContext)> */
4499 self->attrs[COLOR_toolcontext__ToolContext___nit_dir].val = p0; /* _nit_dir on <self:Object(ToolContext)> */
4500 RET_LABEL1:(void)0;
4501 }
4502 RET_LABEL:;
4503 }
4504 /* method toolcontext#ToolContext#compute_nit_dir for (self: ToolContext): nullable String */
4505 val* toolcontext__ToolContext__compute_nit_dir(val* self) {
4506 val* var /* : nullable String */;
4507 static val* varonce;
4508 val* var1 /* : String */;
4509 char* var2 /* : NativeString */;
4510 long var3 /* : Int */;
4511 val* var4 /* : FlatString */;
4512 val* var5 /* : String */;
4513 val* var_res /* var res: String */;
4514 short int var6 /* : Bool */;
4515 short int var7 /* : Bool */;
4516 val* var8 /* : Sys */;
4517 val* var10 /* : Sys */;
4518 val* var11 /* : String */;
4519 val* var12 /* : String */;
4520 static val* varonce13;
4521 val* var14 /* : String */;
4522 char* var15 /* : NativeString */;
4523 long var16 /* : Int */;
4524 val* var17 /* : FlatString */;
4525 val* var18 /* : Array[Object] */;
4526 long var19 /* : Int */;
4527 val* var20 /* : NativeArray[Object] */;
4528 val* var21 /* : String */;
4529 short int var22 /* : Bool */;
4530 short int var23 /* : Bool */;
4531 short int var_ /* var : Bool */;
4532 static val* varonce24;
4533 val* var25 /* : String */;
4534 char* var26 /* : NativeString */;
4535 long var27 /* : Int */;
4536 val* var28 /* : FlatString */;
4537 val* var29 /* : Array[Object] */;
4538 long var30 /* : Int */;
4539 val* var31 /* : NativeArray[Object] */;
4540 val* var32 /* : String */;
4541 short int var33 /* : Bool */;
4542 val* var34 /* : String */;
4543 static val* varonce35;
4544 val* var36 /* : String */;
4545 char* var37 /* : NativeString */;
4546 long var38 /* : Int */;
4547 val* var39 /* : FlatString */;
4548 val* var_exe /* var exe: String */;
4549 short int var40 /* : Bool */;
4550 val* var41 /* : String */;
4551 val* var42 /* : String */;
4552 static val* varonce43;
4553 val* var44 /* : String */;
4554 char* var45 /* : NativeString */;
4555 long var46 /* : Int */;
4556 val* var47 /* : FlatString */;
4557 val* var48 /* : String */;
4558 short int var49 /* : Bool */;
4559 short int var50 /* : Bool */;
4560 short int var_51 /* var : Bool */;
4561 static val* varonce52;
4562 val* var53 /* : String */;
4563 char* var54 /* : NativeString */;
4564 long var55 /* : Int */;
4565 val* var56 /* : FlatString */;
4566 val* var57 /* : Array[Object] */;
4567 long var58 /* : Int */;
4568 val* var59 /* : NativeArray[Object] */;
4569 val* var60 /* : String */;
4570 short int var61 /* : Bool */;
4571 val* var62 /* : String */;
4572 val* var63 /* : null */;
4573 if (varonce) {
4574 var1 = varonce;
4575 } else {
4576 var2 = "NIT_DIR";
4577 var3 = 7;
4578 var4 = string__NativeString__to_s_with_length(var2, var3);
4579 var1 = var4;
4580 varonce = var1;
4581 }
4582 {
4583 var5 = environ__String__environ(var1);
4584 }
4585 var_res = var5;
4586 {
4587 var6 = string__Text__is_empty(var_res);
4588 }
4589 var7 = !var6;
4590 if (var7){
4591 var = var_res;
4592 goto RET_LABEL;
4593 } else {
4594 }
4595 {
4596 { /* Inline kernel#Object#sys (self) on <self:ToolContext> */
4597 var10 = glob_sys;
4598 var8 = var10;
4599 goto RET_LABEL9;
4600 RET_LABEL9:(void)0;
4601 }
4602 }
4603 {
4604 var11 = string__Sys__program_name(var8);
4605 }
4606 {
4607 var12 = file__String__dirname(var11);
4608 }
4609 if (varonce13) {
4610 var14 = varonce13;
4611 } else {
4612 var15 = "/..";
4613 var16 = 3;
4614 var17 = string__NativeString__to_s_with_length(var15, var16);
4615 var14 = var17;
4616 varonce13 = var14;
4617 }
4618 var18 = NEW_array__Array(&type_array__Arraykernel__Object);
4619 { /* var18 = array_instance Array[Object] */
4620 var19 = 2;
4621 var20 = NEW_array__NativeArray(var19, &type_array__NativeArraykernel__Object);
4622 ((struct instance_array__NativeArray*)var20)->values[0] = (val*) var12;
4623 ((struct instance_array__NativeArray*)var20)->values[1] = (val*) var14;
4624 {
4625 ((void (*)(val*, val*, long))(var18->class->vft[COLOR_array__Array__with_native]))(var18, var20, var19) /* with_native on <var18:Array[Object]>*/;
4626 }
4627 }
4628 {
4629 var21 = ((val* (*)(val*))(var18->class->vft[COLOR_string__Object__to_s]))(var18) /* to_s on <var18:Array[Object]>*/;
4630 }
4631 var_res = var21;
4632 {
4633 var23 = file__String__file_exists(var_res);
4634 }
4635 var_ = var23;
4636 if (var23){
4637 if (varonce24) {
4638 var25 = varonce24;
4639 } else {
4640 var26 = "/src/nit.nit";
4641 var27 = 12;
4642 var28 = string__NativeString__to_s_with_length(var26, var27);
4643 var25 = var28;
4644 varonce24 = var25;
4645 }
4646 var29 = NEW_array__Array(&type_array__Arraykernel__Object);
4647 { /* var29 = array_instance Array[Object] */
4648 var30 = 2;
4649 var31 = NEW_array__NativeArray(var30, &type_array__NativeArraykernel__Object);
4650 ((struct instance_array__NativeArray*)var31)->values[0] = (val*) var_res;
4651 ((struct instance_array__NativeArray*)var31)->values[1] = (val*) var25;
4652 {
4653 ((void (*)(val*, val*, long))(var29->class->vft[COLOR_array__Array__with_native]))(var29, var31, var30) /* with_native on <var29:Array[Object]>*/;
4654 }
4655 }
4656 {
4657 var32 = ((val* (*)(val*))(var29->class->vft[COLOR_string__Object__to_s]))(var29) /* to_s on <var29:Array[Object]>*/;
4658 }
4659 {
4660 var33 = file__String__file_exists(var32);
4661 }
4662 var22 = var33;
4663 } else {
4664 var22 = var_;
4665 }
4666 if (var22){
4667 {
4668 var34 = file__String__simplify_path(var_res);
4669 }
4670 var = var34;
4671 goto RET_LABEL;
4672 } else {
4673 }
4674 if (varonce35) {
4675 var36 = varonce35;
4676 } else {
4677 var37 = "/proc/self/exe";
4678 var38 = 14;
4679 var39 = string__NativeString__to_s_with_length(var37, var38);
4680 var36 = var39;
4681 varonce35 = var36;
4682 }
4683 var_exe = var36;
4684 {
4685 var40 = file__String__file_exists(var_exe);
4686 }
4687 if (var40){
4688 {
4689 var41 = file__String__realpath(var_exe);
4690 }
4691 var_res = var41;
4692 {
4693 var42 = file__String__dirname(var_res);
4694 }
4695 if (varonce43) {
4696 var44 = varonce43;
4697 } else {
4698 var45 = "..";
4699 var46 = 2;
4700 var47 = string__NativeString__to_s_with_length(var45, var46);
4701 var44 = var47;
4702 varonce43 = var44;
4703 }
4704 {
4705 var48 = file__String__join_path(var42, var44);
4706 }
4707 var_res = var48;
4708 {
4709 var50 = file__String__file_exists(var_res);
4710 }
4711 var_51 = var50;
4712 if (var50){
4713 if (varonce52) {
4714 var53 = varonce52;
4715 } else {
4716 var54 = "/src/nit.nit";
4717 var55 = 12;
4718 var56 = string__NativeString__to_s_with_length(var54, var55);
4719 var53 = var56;
4720 varonce52 = var53;
4721 }
4722 var57 = NEW_array__Array(&type_array__Arraykernel__Object);
4723 { /* var57 = array_instance Array[Object] */
4724 var58 = 2;
4725 var59 = NEW_array__NativeArray(var58, &type_array__NativeArraykernel__Object);
4726 ((struct instance_array__NativeArray*)var59)->values[0] = (val*) var_res;
4727 ((struct instance_array__NativeArray*)var59)->values[1] = (val*) var53;
4728 {
4729 ((void (*)(val*, val*, long))(var57->class->vft[COLOR_array__Array__with_native]))(var57, var59, var58) /* with_native on <var57:Array[Object]>*/;
4730 }
4731 }
4732 {
4733 var60 = ((val* (*)(val*))(var57->class->vft[COLOR_string__Object__to_s]))(var57) /* to_s on <var57:Array[Object]>*/;
4734 }
4735 {
4736 var61 = file__String__file_exists(var60);
4737 }
4738 var49 = var61;
4739 } else {
4740 var49 = var_51;
4741 }
4742 if (var49){
4743 {
4744 var62 = file__String__simplify_path(var_res);
4745 }
4746 var = var62;
4747 goto RET_LABEL;
4748 } else {
4749 }
4750 } else {
4751 }
4752 var63 = NULL;
4753 var = var63;
4754 goto RET_LABEL;
4755 RET_LABEL:;
4756 return var;
4757 }
4758 /* method toolcontext#ToolContext#compute_nit_dir for (self: Object): nullable String */
4759 val* VIRTUAL_toolcontext__ToolContext__compute_nit_dir(val* self) {
4760 val* var /* : nullable String */;
4761 val* var1 /* : nullable String */;
4762 var1 = toolcontext__ToolContext__compute_nit_dir(self);
4763 var = var1;
4764 RET_LABEL:;
4765 return var;
4766 }
4767 /* method toolcontext#BashCompletion#toolcontext for (self: BashCompletion): ToolContext */
4768 val* toolcontext__BashCompletion__toolcontext(val* self) {
4769 val* var /* : ToolContext */;
4770 val* var1 /* : ToolContext */;
4771 var1 = self->attrs[COLOR_toolcontext__BashCompletion___toolcontext].val; /* _toolcontext on <self:BashCompletion> */
4772 if (unlikely(var1 == NULL)) {
4773 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4774 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 449);
4775 show_backtrace(1);
4776 }
4777 var = var1;
4778 RET_LABEL:;
4779 return var;
4780 }
4781 /* method toolcontext#BashCompletion#toolcontext for (self: Object): ToolContext */
4782 val* VIRTUAL_toolcontext__BashCompletion__toolcontext(val* self) {
4783 val* var /* : ToolContext */;
4784 val* var1 /* : ToolContext */;
4785 val* var3 /* : ToolContext */;
4786 { /* Inline toolcontext#BashCompletion#toolcontext (self) on <self:Object(BashCompletion)> */
4787 var3 = self->attrs[COLOR_toolcontext__BashCompletion___toolcontext].val; /* _toolcontext on <self:Object(BashCompletion)> */
4788 if (unlikely(var3 == NULL)) {
4789 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4790 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 449);
4791 show_backtrace(1);
4792 }
4793 var1 = var3;
4794 RET_LABEL2:(void)0;
4795 }
4796 var = var1;
4797 RET_LABEL:;
4798 return var;
4799 }
4800 /* method toolcontext#BashCompletion#toolcontext= for (self: BashCompletion, ToolContext) */
4801 void toolcontext__BashCompletion__toolcontext_61d(val* self, val* p0) {
4802 self->attrs[COLOR_toolcontext__BashCompletion___toolcontext].val = p0; /* _toolcontext on <self:BashCompletion> */
4803 RET_LABEL:;
4804 }
4805 /* method toolcontext#BashCompletion#toolcontext= for (self: Object, ToolContext) */
4806 void VIRTUAL_toolcontext__BashCompletion__toolcontext_61d(val* self, val* p0) {
4807 { /* Inline toolcontext#BashCompletion#toolcontext= (self,p0) on <self:Object(BashCompletion)> */
4808 self->attrs[COLOR_toolcontext__BashCompletion___toolcontext].val = p0; /* _toolcontext on <self:Object(BashCompletion)> */
4809 RET_LABEL1:(void)0;
4810 }
4811 RET_LABEL:;
4812 }
4813 /* method toolcontext#BashCompletion#init for (self: BashCompletion, ToolContext) */
4814 void toolcontext__BashCompletion__init(val* self, val* p0) {
4815 val* var_toolcontext /* var toolcontext: ToolContext */;
4816 {
4817 ((void (*)(val*))(self->class->vft[COLOR_kernel__Object__init]))(self) /* init on <self:BashCompletion>*/;
4818 }
4819 var_toolcontext = p0;
4820 {
4821 { /* Inline toolcontext#BashCompletion#toolcontext= (self,var_toolcontext) on <self:BashCompletion> */
4822 self->attrs[COLOR_toolcontext__BashCompletion___toolcontext].val = var_toolcontext; /* _toolcontext on <self:BashCompletion> */
4823 RET_LABEL1:(void)0;
4824 }
4825 }
4826 RET_LABEL:;
4827 }
4828 /* method toolcontext#BashCompletion#init for (self: Object, ToolContext) */
4829 void VIRTUAL_toolcontext__BashCompletion__init(val* self, val* p0) {
4830 toolcontext__BashCompletion__init(self, p0); /* Direct call toolcontext#BashCompletion#init on <self:Object(BashCompletion)>*/
4831 RET_LABEL:;
4832 }
4833 /* method toolcontext#BashCompletion#extract_options_names for (self: BashCompletion): Array[String] */
4834 val* toolcontext__BashCompletion__extract_options_names(val* self) {
4835 val* var /* : Array[String] */;
4836 val* var1 /* : Array[String] */;
4837 val* var_names /* var names: Array[String] */;
4838 val* var2 /* : ToolContext */;
4839 val* var4 /* : ToolContext */;
4840 val* var5 /* : OptionContext */;
4841 val* var7 /* : OptionContext */;
4842 val* var8 /* : Array[Option] */;
4843 val* var10 /* : Array[Option] */;
4844 val* var_ /* var : Array[Option] */;
4845 val* var11 /* : ArrayIterator[nullable Object] */;
4846 val* var_12 /* var : ArrayIterator[Option] */;
4847 short int var13 /* : Bool */;
4848 val* var14 /* : nullable Object */;
4849 val* var_option /* var option: Option */;
4850 val* var15 /* : Array[String] */;
4851 val* var17 /* : Array[String] */;
4852 val* var_18 /* var : Array[String] */;
4853 val* var19 /* : ArrayIterator[nullable Object] */;
4854 val* var_20 /* var : ArrayIterator[String] */;
4855 short int var21 /* : Bool */;
4856 val* var22 /* : nullable Object */;
4857 val* var_name /* var name: String */;
4858 static val* varonce;
4859 val* var23 /* : String */;
4860 char* var24 /* : NativeString */;
4861 long var25 /* : Int */;
4862 val* var26 /* : FlatString */;
4863 short int var27 /* : Bool */;
4864 var1 = NEW_array__Array(&type_array__Arraystring__String);
4865 {
4866 ((void (*)(val*))(var1->class->vft[COLOR_kernel__Object__init]))(var1) /* init on <var1:Array[String]>*/;
4867 }
4868 var_names = var1;
4869 {
4870 { /* Inline toolcontext#BashCompletion#toolcontext (self) on <self:BashCompletion> */
4871 var4 = self->attrs[COLOR_toolcontext__BashCompletion___toolcontext].val; /* _toolcontext on <self:BashCompletion> */
4872 if (unlikely(var4 == NULL)) {
4873 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4874 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 449);
4875 show_backtrace(1);
4876 }
4877 var2 = var4;
4878 RET_LABEL3:(void)0;
4879 }
4880 }
4881 {
4882 { /* Inline toolcontext#ToolContext#option_context (var2) on <var2:ToolContext> */
4883 var7 = var2->attrs[COLOR_toolcontext__ToolContext___option_context].val; /* _option_context on <var2:ToolContext> */
4884 if (unlikely(var7 == NULL)) {
4885 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
4886 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 231);
4887 show_backtrace(1);
4888 }
4889 var5 = var7;
4890 RET_LABEL6:(void)0;
4891 }
4892 }
4893 {
4894 { /* Inline opts#OptionContext#options (var5) on <var5:OptionContext> */
4895 var10 = var5->attrs[COLOR_opts__OptionContext___options].val; /* _options on <var5:OptionContext> */
4896 if (unlikely(var10 == NULL)) {
4897 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
4898 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 243);
4899 show_backtrace(1);
4900 }
4901 var8 = var10;
4902 RET_LABEL9:(void)0;
4903 }
4904 }
4905 var_ = var8;
4906 {
4907 var11 = array__AbstractArrayRead__iterator(var_);
4908 }
4909 var_12 = var11;
4910 for(;;) {
4911 {
4912 var13 = array__ArrayIterator__is_ok(var_12);
4913 }
4914 if (var13){
4915 {
4916 var14 = array__ArrayIterator__item(var_12);
4917 }
4918 var_option = var14;
4919 {
4920 { /* Inline opts#Option#names (var_option) on <var_option:Option> */
4921 var17 = var_option->attrs[COLOR_opts__Option___names].val; /* _names on <var_option:Option> */
4922 if (unlikely(var17 == NULL)) {
4923 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
4924 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 19);
4925 show_backtrace(1);
4926 }
4927 var15 = var17;
4928 RET_LABEL16:(void)0;
4929 }
4930 }
4931 var_18 = var15;
4932 {
4933 var19 = array__AbstractArrayRead__iterator(var_18);
4934 }
4935 var_20 = var19;
4936 for(;;) {
4937 {
4938 var21 = array__ArrayIterator__is_ok(var_20);
4939 }
4940 if (var21){
4941 {
4942 var22 = array__ArrayIterator__item(var_20);
4943 }
4944 var_name = var22;
4945 if (varonce) {
4946 var23 = varonce;
4947 } else {
4948 var24 = "--";
4949 var25 = 2;
4950 var26 = string__NativeString__to_s_with_length(var24, var25);
4951 var23 = var26;
4952 varonce = var23;
4953 }
4954 {
4955 var27 = string__Text__has_prefix(var_name, var23);
4956 }
4957 if (var27){
4958 {
4959 array__Array__add(var_names, var_name); /* Direct call array#Array#add on <var_names:Array[String]>*/
4960 }
4961 } else {
4962 }
4963 {
4964 array__ArrayIterator__next(var_20); /* Direct call array#ArrayIterator#next on <var_20:ArrayIterator[String]>*/
4965 }
4966 } else {
4967 goto BREAK_label;
4968 }
4969 }
4970 BREAK_label: (void)0;
4971 {
4972 { /* Inline abstract_collection#Iterator#finish (var_20) on <var_20:ArrayIterator[String]> */
4973 RET_LABEL28:(void)0;
4974 }
4975 }
4976 {
4977 array__ArrayIterator__next(var_12); /* Direct call array#ArrayIterator#next on <var_12:ArrayIterator[Option]>*/
4978 }
4979 } else {
4980 goto BREAK_label29;
4981 }
4982 }
4983 BREAK_label29: (void)0;
4984 {
4985 { /* Inline abstract_collection#Iterator#finish (var_12) on <var_12:ArrayIterator[Option]> */
4986 RET_LABEL30:(void)0;
4987 }
4988 }
4989 var = var_names;
4990 goto RET_LABEL;
4991 RET_LABEL:;
4992 return var;
4993 }
4994 /* method toolcontext#BashCompletion#extract_options_names for (self: Object): Array[String] */
4995 val* VIRTUAL_toolcontext__BashCompletion__extract_options_names(val* self) {
4996 val* var /* : Array[String] */;
4997 val* var1 /* : Array[String] */;
4998 var1 = toolcontext__BashCompletion__extract_options_names(self);
4999 var = var1;
5000 RET_LABEL:;
5001 return var;
5002 }
5003 /* method toolcontext#BashCompletion#rendering for (self: BashCompletion) */
5004 void toolcontext__BashCompletion__rendering(val* self) {
5005 val* var /* : ToolContext */;
5006 val* var2 /* : ToolContext */;
5007 val* var3 /* : String */;
5008 val* var_name /* var name: String */;
5009 val* var4 /* : Array[String] */;
5010 val* var_option_names /* var option_names: Array[String] */;
5011 static val* varonce;
5012 val* var5 /* : String */;
5013 char* var6 /* : NativeString */;
5014 long var7 /* : Int */;
5015 val* var8 /* : FlatString */;
5016 static val* varonce9;
5017 val* var10 /* : String */;
5018 char* var11 /* : NativeString */;
5019 long var12 /* : Int */;
5020 val* var13 /* : FlatString */;
5021 val* var14 /* : ToolContext */;
5022 val* var16 /* : ToolContext */;
5023 val* var17 /* : String */;
5024 val* var18 /* : Array[Object] */;
5025 long var19 /* : Int */;
5026 val* var20 /* : NativeArray[Object] */;
5027 val* var21 /* : String */;
5028 static val* varonce22;
5029 val* var23 /* : String */;
5030 char* var24 /* : NativeString */;
5031 long var25 /* : Int */;
5032 val* var26 /* : FlatString */;
5033 static val* varonce27;
5034 val* var28 /* : String */;
5035 char* var29 /* : NativeString */;
5036 long var30 /* : Int */;
5037 val* var31 /* : FlatString */;
5038 val* var32 /* : Array[Object] */;
5039 long var33 /* : Int */;
5040 val* var34 /* : NativeArray[Object] */;
5041 val* var35 /* : String */;
5042 static val* varonce36;
5043 val* var37 /* : String */;
5044 char* var38 /* : NativeString */;
5045 long var39 /* : Int */;
5046 val* var40 /* : FlatString */;
5047 static val* varonce41;
5048 val* var42 /* : String */;
5049 char* var43 /* : NativeString */;
5050 long var44 /* : Int */;
5051 val* var45 /* : FlatString */;
5052 static val* varonce46;
5053 val* var47 /* : String */;
5054 char* var48 /* : NativeString */;
5055 long var49 /* : Int */;
5056 val* var50 /* : FlatString */;
5057 static val* varonce51;
5058 val* var52 /* : String */;
5059 char* var53 /* : NativeString */;
5060 long var54 /* : Int */;
5061 val* var55 /* : FlatString */;
5062 static val* varonce56;
5063 val* var57 /* : String */;
5064 char* var58 /* : NativeString */;
5065 long var59 /* : Int */;
5066 val* var60 /* : FlatString */;
5067 short int var61 /* : Bool */;
5068 short int var62 /* : Bool */;
5069 static val* varonce63;
5070 val* var64 /* : String */;
5071 char* var65 /* : NativeString */;
5072 long var66 /* : Int */;
5073 val* var67 /* : FlatString */;
5074 static val* varonce68;
5075 val* var69 /* : String */;
5076 char* var70 /* : NativeString */;
5077 long var71 /* : Int */;
5078 val* var72 /* : FlatString */;
5079 val* var73 /* : String */;
5080 static val* varonce74;
5081 val* var75 /* : String */;
5082 char* var76 /* : NativeString */;
5083 long var77 /* : Int */;
5084 val* var78 /* : FlatString */;
5085 val* var79 /* : Array[Object] */;
5086 long var80 /* : Int */;
5087 val* var81 /* : NativeArray[Object] */;
5088 val* var82 /* : String */;
5089 static val* varonce83;
5090 val* var84 /* : String */;
5091 char* var85 /* : NativeString */;
5092 long var86 /* : Int */;
5093 val* var87 /* : FlatString */;
5094 static val* varonce88;
5095 val* var89 /* : String */;
5096 char* var90 /* : NativeString */;
5097 long var91 /* : Int */;
5098 val* var92 /* : FlatString */;
5099 static val* varonce93;
5100 val* var94 /* : String */;
5101 char* var95 /* : NativeString */;
5102 long var96 /* : Int */;
5103 val* var97 /* : FlatString */;
5104 static val* varonce98;
5105 val* var99 /* : String */;
5106 char* var100 /* : NativeString */;
5107 long var101 /* : Int */;
5108 val* var102 /* : FlatString */;
5109 static val* varonce103;
5110 val* var104 /* : String */;
5111 char* var105 /* : NativeString */;
5112 long var106 /* : Int */;
5113 val* var107 /* : FlatString */;
5114 static val* varonce108;
5115 val* var109 /* : String */;
5116 char* var110 /* : NativeString */;
5117 long var111 /* : Int */;
5118 val* var112 /* : FlatString */;
5119 static val* varonce113;
5120 val* var114 /* : String */;
5121 char* var115 /* : NativeString */;
5122 long var116 /* : Int */;
5123 val* var117 /* : FlatString */;
5124 val* var118 /* : Array[Object] */;
5125 long var119 /* : Int */;
5126 val* var120 /* : NativeArray[Object] */;
5127 val* var121 /* : String */;
5128 {
5129 { /* Inline toolcontext#BashCompletion#toolcontext (self) on <self:BashCompletion> */
5130 var2 = self->attrs[COLOR_toolcontext__BashCompletion___toolcontext].val; /* _toolcontext on <self:BashCompletion> */
5131 if (unlikely(var2 == NULL)) {
5132 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
5133 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 449);
5134 show_backtrace(1);
5135 }
5136 var = var2;
5137 RET_LABEL1:(void)0;
5138 }
5139 }
5140 {
5141 var3 = toolcontext__ToolContext__toolname(var);
5142 }
5143 var_name = var3;
5144 {
5145 var4 = toolcontext__BashCompletion__extract_options_names(self);
5146 }
5147 var_option_names = var4;
5148 if (varonce) {
5149 var5 = varonce;
5150 } else {
5151 var6 = "# generated bash completion file for ";
5152 var7 = 37;
5153 var8 = string__NativeString__to_s_with_length(var6, var7);
5154 var5 = var8;
5155 varonce = var5;
5156 }
5157 if (varonce9) {
5158 var10 = varonce9;
5159 } else {
5160 var11 = " ";
5161 var12 = 1;
5162 var13 = string__NativeString__to_s_with_length(var11, var12);
5163 var10 = var13;
5164 varonce9 = var10;
5165 }
5166 {
5167 { /* Inline toolcontext#BashCompletion#toolcontext (self) on <self:BashCompletion> */
5168 var16 = self->attrs[COLOR_toolcontext__BashCompletion___toolcontext].val; /* _toolcontext on <self:BashCompletion> */
5169 if (unlikely(var16 == NULL)) {
5170 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
5171 PRINT_ERROR(" (%s:%d)\n", "toolcontext.nit", 449);
5172 show_backtrace(1);
5173 }
5174 var14 = var16;
5175 RET_LABEL15:(void)0;
5176 }
5177 }
5178 {
5179 var17 = toolcontext__ToolContext__version(var14);
5180 }
5181 var18 = NEW_array__Array(&type_array__Arraykernel__Object);
5182 { /* var18 = array_instance Array[Object] */
5183 var19 = 4;
5184 var20 = NEW_array__NativeArray(var19, &type_array__NativeArraykernel__Object);
5185 ((struct instance_array__NativeArray*)var20)->values[0] = (val*) var5;
5186 ((struct instance_array__NativeArray*)var20)->values[1] = (val*) var_name;
5187 ((struct instance_array__NativeArray*)var20)->values[2] = (val*) var10;
5188 ((struct instance_array__NativeArray*)var20)->values[3] = (val*) var17;
5189 {
5190 ((void (*)(val*, val*, long))(var18->class->vft[COLOR_array__Array__with_native]))(var18, var20, var19) /* with_native on <var18:Array[Object]>*/;
5191 }
5192 }
5193 {
5194 var21 = ((val* (*)(val*))(var18->class->vft[COLOR_string__Object__to_s]))(var18) /* to_s on <var18:Array[Object]>*/;
5195 }
5196 {
5197 template__Template__addn(self, var21); /* Direct call template#Template#addn on <self:BashCompletion>*/
5198 }
5199 if (varonce22) {
5200 var23 = varonce22;
5201 } else {
5202 var24 = "_";
5203 var25 = 1;
5204 var26 = string__NativeString__to_s_with_length(var24, var25);
5205 var23 = var26;
5206 varonce22 = var23;
5207 }
5208 if (varonce27) {
5209 var28 = varonce27;
5210 } else {
5211 var29 = "()";
5212 var30 = 2;
5213 var31 = string__NativeString__to_s_with_length(var29, var30);
5214 var28 = var31;
5215 varonce27 = var28;
5216 }
5217 var32 = NEW_array__Array(&type_array__Arraykernel__Object);
5218 { /* var32 = array_instance Array[Object] */
5219 var33 = 3;
5220 var34 = NEW_array__NativeArray(var33, &type_array__NativeArraykernel__Object);
5221 ((struct instance_array__NativeArray*)var34)->values[0] = (val*) var23;
5222 ((struct instance_array__NativeArray*)var34)->values[1] = (val*) var_name;
5223 ((struct instance_array__NativeArray*)var34)->values[2] = (val*) var28;
5224 {
5225 ((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[Object]>*/;
5226 }
5227 }
5228 {
5229 var35 = ((val* (*)(val*))(var32->class->vft[COLOR_string__Object__to_s]))(var32) /* to_s on <var32:Array[Object]>*/;
5230 }
5231 {
5232 template__Template__addn(self, var35); /* Direct call template#Template#addn on <self:BashCompletion>*/
5233 }
5234 if (varonce36) {
5235 var37 = varonce36;
5236 } else {
5237 var38 = "{";
5238 var39 = 1;
5239 var40 = string__NativeString__to_s_with_length(var38, var39);
5240 var37 = var40;
5241 varonce36 = var37;
5242 }
5243 {
5244 template__Template__addn(self, var37); /* Direct call template#Template#addn on <self:BashCompletion>*/
5245 }
5246 if (varonce41) {
5247 var42 = varonce41;
5248 } else {
5249 var43 = "\11local cur prev opts";
5250 var44 = 20;
5251 var45 = string__NativeString__to_s_with_length(var43, var44);
5252 var42 = var45;
5253 varonce41 = var42;
5254 }
5255 {
5256 template__Template__addn(self, var42); /* Direct call template#Template#addn on <self:BashCompletion>*/
5257 }
5258 if (varonce46) {
5259 var47 = varonce46;
5260 } else {
5261 var48 = "\11COMPREPLY=()";
5262 var49 = 13;
5263 var50 = string__NativeString__to_s_with_length(var48, var49);
5264 var47 = var50;
5265 varonce46 = var47;
5266 }
5267 {
5268 template__Template__addn(self, var47); /* Direct call template#Template#addn on <self:BashCompletion>*/
5269 }
5270 if (varonce51) {
5271 var52 = varonce51;
5272 } else {
5273 var53 = "\11cur=\"${COMP_WORDS[COMP_CWORD]}\"";
5274 var54 = 32;
5275 var55 = string__NativeString__to_s_with_length(var53, var54);
5276 var52 = var55;
5277 varonce51 = var52;
5278 }
5279 {
5280 template__Template__addn(self, var52); /* Direct call template#Template#addn on <self:BashCompletion>*/
5281 }
5282 if (varonce56) {
5283 var57 = varonce56;
5284 } else {
5285 var58 = "\11prev=\"${COMP_WORDS[COMP_CWORD-1]}\"";
5286 var59 = 35;
5287 var60 = string__NativeString__to_s_with_length(var58, var59);
5288 var57 = var60;
5289 varonce56 = var57;
5290 }
5291 {
5292 template__Template__addn(self, var57); /* Direct call template#Template#addn on <self:BashCompletion>*/
5293 }
5294 {
5295 var61 = array__AbstractArrayRead__is_empty(var_option_names);
5296 }
5297 var62 = !var61;
5298 if (var62){
5299 if (varonce63) {
5300 var64 = varonce63;
5301 } else {
5302 var65 = "\11opts=\"";
5303 var66 = 7;
5304 var67 = string__NativeString__to_s_with_length(var65, var66);
5305 var64 = var67;
5306 varonce63 = var64;
5307 }
5308 if (varonce68) {
5309 var69 = varonce68;
5310 } else {
5311 var70 = " ";
5312 var71 = 1;
5313 var72 = string__NativeString__to_s_with_length(var70, var71);
5314 var69 = var72;
5315 varonce68 = var69;
5316 }
5317 {
5318 var73 = string__Collection__join(var_option_names, var69);
5319 }
5320 if (varonce74) {
5321 var75 = varonce74;
5322 } else {
5323 var76 = "\"";
5324 var77 = 1;
5325 var78 = string__NativeString__to_s_with_length(var76, var77);
5326 var75 = var78;
5327 varonce74 = var75;
5328 }
5329 var79 = NEW_array__Array(&type_array__Arraykernel__Object);
5330 { /* var79 = array_instance Array[Object] */
5331 var80 = 3;
5332 var81 = NEW_array__NativeArray(var80, &type_array__NativeArraykernel__Object);
5333 ((struct instance_array__NativeArray*)var81)->values[0] = (val*) var64;
5334 ((struct instance_array__NativeArray*)var81)->values[1] = (val*) var73;
5335 ((struct instance_array__NativeArray*)var81)->values[2] = (val*) var75;
5336 {
5337 ((void (*)(val*, val*, long))(var79->class->vft[COLOR_array__Array__with_native]))(var79, var81, var80) /* with_native on <var79:Array[Object]>*/;
5338 }
5339 }
5340 {
5341 var82 = ((val* (*)(val*))(var79->class->vft[COLOR_string__Object__to_s]))(var79) /* to_s on <var79:Array[Object]>*/;
5342 }
5343 {
5344 template__Template__addn(self, var82); /* Direct call template#Template#addn on <self:BashCompletion>*/
5345 }
5346 if (varonce83) {
5347 var84 = varonce83;
5348 } else {
5349 var85 = "\11if [[ ${cur} == -* ]] ; then";
5350 var86 = 29;
5351 var87 = string__NativeString__to_s_with_length(var85, var86);
5352 var84 = var87;
5353 varonce83 = var84;
5354 }
5355 {
5356 template__Template__addn(self, var84); /* Direct call template#Template#addn on <self:BashCompletion>*/
5357 }
5358 if (varonce88) {
5359 var89 = varonce88;
5360 } else {
5361 var90 = "\11\11COMPREPLY=( $(compgen -W \"${opts}\" -- ${cur}) )";
5362 var91 = 49;
5363 var92 = string__NativeString__to_s_with_length(var90, var91);
5364 var89 = var92;
5365 varonce88 = var89;
5366 }
5367 {
5368 template__Template__addn(self, var89); /* Direct call template#Template#addn on <self:BashCompletion>*/
5369 }
5370 if (varonce93) {
5371 var94 = varonce93;
5372 } else {
5373 var95 = "\11\11return 0";
5374 var96 = 10;
5375 var97 = string__NativeString__to_s_with_length(var95, var96);
5376 var94 = var97;
5377 varonce93 = var94;
5378 }
5379 {
5380 template__Template__addn(self, var94); /* Direct call template#Template#addn on <self:BashCompletion>*/
5381 }
5382 if (varonce98) {
5383 var99 = varonce98;
5384 } else {
5385 var100 = "\11fi";
5386 var101 = 3;
5387 var102 = string__NativeString__to_s_with_length(var100, var101);
5388 var99 = var102;
5389 varonce98 = var99;
5390 }
5391 {
5392 template__Template__addn(self, var99); /* Direct call template#Template#addn on <self:BashCompletion>*/
5393 }
5394 } else {
5395 }
5396 if (varonce103) {
5397 var104 = varonce103;
5398 } else {
5399 var105 = "} &&";
5400 var106 = 4;
5401 var107 = string__NativeString__to_s_with_length(var105, var106);
5402 var104 = var107;
5403 varonce103 = var104;
5404 }
5405 {
5406 template__Template__addn(self, var104); /* Direct call template#Template#addn on <self:BashCompletion>*/
5407 }
5408 if (varonce108) {
5409 var109 = varonce108;
5410 } else {
5411 var110 = "complete -o default -F _";
5412 var111 = 24;
5413 var112 = string__NativeString__to_s_with_length(var110, var111);
5414 var109 = var112;
5415 varonce108 = var109;
5416 }
5417 if (varonce113) {
5418 var114 = varonce113;
5419 } else {
5420 var115 = " ";
5421 var116 = 1;
5422 var117 = string__NativeString__to_s_with_length(var115, var116);
5423 var114 = var117;
5424 varonce113 = var114;
5425 }
5426 var118 = NEW_array__Array(&type_array__Arraykernel__Object);
5427 { /* var118 = array_instance Array[Object] */
5428 var119 = 4;
5429 var120 = NEW_array__NativeArray(var119, &type_array__NativeArraykernel__Object);
5430 ((struct instance_array__NativeArray*)var120)->values[0] = (val*) var109;
5431 ((struct instance_array__NativeArray*)var120)->values[1] = (val*) var_name;
5432 ((struct instance_array__NativeArray*)var120)->values[2] = (val*) var114;
5433 ((struct instance_array__NativeArray*)var120)->values[3] = (val*) var_name;
5434 {
5435 ((void (*)(val*, val*, long))(var118->class->vft[COLOR_array__Array__with_native]))(var118, var120, var119) /* with_native on <var118:Array[Object]>*/;
5436 }
5437 }
5438 {
5439 var121 = ((val* (*)(val*))(var118->class->vft[COLOR_string__Object__to_s]))(var118) /* to_s on <var118:Array[Object]>*/;
5440 }
5441 {
5442 template__Template__addn(self, var121); /* Direct call template#Template#addn on <self:BashCompletion>*/
5443 }
5444 RET_LABEL:;
5445 }
5446 /* method toolcontext#BashCompletion#rendering for (self: Object) */
5447 void VIRTUAL_toolcontext__BashCompletion__rendering(val* self) {
5448 toolcontext__BashCompletion__rendering(self); /* Direct call toolcontext#BashCompletion#rendering on <self:Object(BashCompletion)>*/
5449 RET_LABEL:;
5450 }