update NOTICE
[nit.git] / c_src / opts.sep.1.c
1 #include "opts.sep.0.h"
2 /* method opts#Option#names for (self: Option): Array[String] */
3 val* opts__Option__names(val* self) {
4 val* var /* : Array[String] */;
5 val* var1 /* : Array[String] */;
6 var1 = self->attrs[COLOR_opts__Option___names].val; /* _names on <self:Option> */
7 if (unlikely(var1 == NULL)) {
8 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
9 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 19);
10 show_backtrace(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method opts#Option#names for (self: Object): Array[String] */
17 val* VIRTUAL_opts__Option__names(val* self) {
18 val* var /* : Array[String] */;
19 val* var1 /* : Array[String] */;
20 val* var3 /* : Array[String] */;
21 { /* Inline opts#Option#names (self) on <self:Object(Option)> */
22 var3 = self->attrs[COLOR_opts__Option___names].val; /* _names on <self:Object(Option)> */
23 if (unlikely(var3 == NULL)) {
24 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
25 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 19);
26 show_backtrace(1);
27 }
28 var1 = var3;
29 RET_LABEL2:(void)0;
30 }
31 var = var1;
32 RET_LABEL:;
33 return var;
34 }
35 /* method opts#Option#names= for (self: Option, Array[String]) */
36 void opts__Option__names_61d(val* self, val* p0) {
37 self->attrs[COLOR_opts__Option___names].val = p0; /* _names on <self:Option> */
38 RET_LABEL:;
39 }
40 /* method opts#Option#names= for (self: Object, Array[String]) */
41 void VIRTUAL_opts__Option__names_61d(val* self, val* p0) {
42 { /* Inline opts#Option#names= (self,p0) on <self:Object(Option)> */
43 self->attrs[COLOR_opts__Option___names].val = p0; /* _names on <self:Object(Option)> */
44 RET_LABEL1:(void)0;
45 }
46 RET_LABEL:;
47 }
48 /* method opts#Option#helptext for (self: Option): String */
49 val* opts__Option__helptext(val* self) {
50 val* var /* : String */;
51 val* var1 /* : String */;
52 var1 = self->attrs[COLOR_opts__Option___helptext].val; /* _helptext on <self:Option> */
53 if (unlikely(var1 == NULL)) {
54 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _helptext");
55 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 25);
56 show_backtrace(1);
57 }
58 var = var1;
59 RET_LABEL:;
60 return var;
61 }
62 /* method opts#Option#helptext for (self: Object): String */
63 val* VIRTUAL_opts__Option__helptext(val* self) {
64 val* var /* : String */;
65 val* var1 /* : String */;
66 val* var3 /* : String */;
67 { /* Inline opts#Option#helptext (self) on <self:Object(Option)> */
68 var3 = self->attrs[COLOR_opts__Option___helptext].val; /* _helptext on <self:Object(Option)> */
69 if (unlikely(var3 == NULL)) {
70 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _helptext");
71 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 25);
72 show_backtrace(1);
73 }
74 var1 = var3;
75 RET_LABEL2:(void)0;
76 }
77 var = var1;
78 RET_LABEL:;
79 return var;
80 }
81 /* method opts#Option#helptext= for (self: Option, String) */
82 void opts__Option__helptext_61d(val* self, val* p0) {
83 self->attrs[COLOR_opts__Option___helptext].val = p0; /* _helptext on <self:Option> */
84 RET_LABEL:;
85 }
86 /* method opts#Option#helptext= for (self: Object, String) */
87 void VIRTUAL_opts__Option__helptext_61d(val* self, val* p0) {
88 { /* Inline opts#Option#helptext= (self,p0) on <self:Object(Option)> */
89 self->attrs[COLOR_opts__Option___helptext].val = p0; /* _helptext on <self:Object(Option)> */
90 RET_LABEL1:(void)0;
91 }
92 RET_LABEL:;
93 }
94 /* method opts#Option#errors for (self: Option): Array[String] */
95 val* opts__Option__errors(val* self) {
96 val* var /* : Array[String] */;
97 val* var1 /* : Array[String] */;
98 var1 = self->attrs[COLOR_opts__Option___errors].val; /* _errors on <self:Option> */
99 if (unlikely(var1 == NULL)) {
100 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _errors");
101 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 28);
102 show_backtrace(1);
103 }
104 var = var1;
105 RET_LABEL:;
106 return var;
107 }
108 /* method opts#Option#errors for (self: Object): Array[String] */
109 val* VIRTUAL_opts__Option__errors(val* self) {
110 val* var /* : Array[String] */;
111 val* var1 /* : Array[String] */;
112 val* var3 /* : Array[String] */;
113 { /* Inline opts#Option#errors (self) on <self:Object(Option)> */
114 var3 = self->attrs[COLOR_opts__Option___errors].val; /* _errors on <self:Object(Option)> */
115 if (unlikely(var3 == NULL)) {
116 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _errors");
117 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 28);
118 show_backtrace(1);
119 }
120 var1 = var3;
121 RET_LABEL2:(void)0;
122 }
123 var = var1;
124 RET_LABEL:;
125 return var;
126 }
127 /* method opts#Option#mandatory for (self: Option): Bool */
128 short int opts__Option__mandatory(val* self) {
129 short int var /* : Bool */;
130 short int var1 /* : Bool */;
131 var1 = self->attrs[COLOR_opts__Option___mandatory].s; /* _mandatory on <self:Option> */
132 var = var1;
133 RET_LABEL:;
134 return var;
135 }
136 /* method opts#Option#mandatory for (self: Object): Bool */
137 short int VIRTUAL_opts__Option__mandatory(val* self) {
138 short int var /* : Bool */;
139 short int var1 /* : Bool */;
140 short int var3 /* : Bool */;
141 { /* Inline opts#Option#mandatory (self) on <self:Object(Option)> */
142 var3 = self->attrs[COLOR_opts__Option___mandatory].s; /* _mandatory on <self:Object(Option)> */
143 var1 = var3;
144 RET_LABEL2:(void)0;
145 }
146 var = var1;
147 RET_LABEL:;
148 return var;
149 }
150 /* method opts#Option#hidden for (self: Option): Bool */
151 short int opts__Option__hidden(val* self) {
152 short int var /* : Bool */;
153 short int var1 /* : Bool */;
154 var1 = self->attrs[COLOR_opts__Option___hidden].s; /* _hidden on <self:Option> */
155 var = var1;
156 RET_LABEL:;
157 return var;
158 }
159 /* method opts#Option#hidden for (self: Object): Bool */
160 short int VIRTUAL_opts__Option__hidden(val* self) {
161 short int var /* : Bool */;
162 short int var1 /* : Bool */;
163 short int var3 /* : Bool */;
164 { /* Inline opts#Option#hidden (self) on <self:Object(Option)> */
165 var3 = self->attrs[COLOR_opts__Option___hidden].s; /* _hidden on <self:Object(Option)> */
166 var1 = var3;
167 RET_LABEL2:(void)0;
168 }
169 var = var1;
170 RET_LABEL:;
171 return var;
172 }
173 /* method opts#Option#read for (self: Option): Bool */
174 short int opts__Option__read(val* self) {
175 short int var /* : Bool */;
176 short int var1 /* : Bool */;
177 var1 = self->attrs[COLOR_opts__Option___read].s; /* _read on <self:Option> */
178 var = var1;
179 RET_LABEL:;
180 return var;
181 }
182 /* method opts#Option#read for (self: Object): Bool */
183 short int VIRTUAL_opts__Option__read(val* self) {
184 short int var /* : Bool */;
185 short int var1 /* : Bool */;
186 short int var3 /* : Bool */;
187 { /* Inline opts#Option#read (self) on <self:Object(Option)> */
188 var3 = self->attrs[COLOR_opts__Option___read].s; /* _read on <self:Object(Option)> */
189 var1 = var3;
190 RET_LABEL2:(void)0;
191 }
192 var = var1;
193 RET_LABEL:;
194 return var;
195 }
196 /* method opts#Option#read= for (self: Option, Bool) */
197 void opts__Option__read_61d(val* self, short int p0) {
198 self->attrs[COLOR_opts__Option___read].s = p0; /* _read on <self:Option> */
199 RET_LABEL:;
200 }
201 /* method opts#Option#read= for (self: Object, Bool) */
202 void VIRTUAL_opts__Option__read_61d(val* self, short int p0) {
203 { /* Inline opts#Option#read= (self,p0) on <self:Object(Option)> */
204 self->attrs[COLOR_opts__Option___read].s = p0; /* _read on <self:Object(Option)> */
205 RET_LABEL1:(void)0;
206 }
207 RET_LABEL:;
208 }
209 /* method opts#Option#value for (self: Option): nullable Object */
210 val* opts__Option__value(val* self) {
211 val* var /* : nullable Object */;
212 val* var1 /* : nullable Object */;
213 var1 = self->attrs[COLOR_opts__Option___value].val; /* _value on <self:Option> */
214 var = var1;
215 RET_LABEL:;
216 return var;
217 }
218 /* method opts#Option#value for (self: Object): nullable Object */
219 val* VIRTUAL_opts__Option__value(val* self) {
220 val* var /* : nullable Object */;
221 val* var1 /* : nullable Object */;
222 val* var3 /* : nullable Object */;
223 { /* Inline opts#Option#value (self) on <self:Object(Option)> */
224 var3 = self->attrs[COLOR_opts__Option___value].val; /* _value on <self:Object(Option)> */
225 var1 = var3;
226 RET_LABEL2:(void)0;
227 }
228 var = var1;
229 RET_LABEL:;
230 return var;
231 }
232 /* method opts#Option#value= for (self: Option, nullable Object) */
233 void opts__Option__value_61d(val* self, val* p0) {
234 short int var /* : Bool */;
235 int cltype;
236 int idtype;
237 const struct type* type_struct;
238 short int is_nullable;
239 const char* var_class_name;
240 /* Covariant cast for argument 0 (value) <p0:nullable Object> isa VALUE */
241 /* <p0:nullable Object> isa VALUE */
242 type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
243 cltype = type_struct->color;
244 idtype = type_struct->id;
245 is_nullable = type_struct->is_nullable;
246 if(p0 == NULL) {
247 var = is_nullable;
248 } else {
249 if(cltype >= p0->type->table_size) {
250 var = 0;
251 } else {
252 var = p0->type->type_table[cltype] == idtype;
253 }
254 }
255 if (unlikely(!var)) {
256 var_class_name = p0 == NULL ? "null" : p0->type->name;
257 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
258 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 40);
259 show_backtrace(1);
260 }
261 self->attrs[COLOR_opts__Option___value].val = p0; /* _value on <self:Option> */
262 RET_LABEL:;
263 }
264 /* method opts#Option#value= for (self: Object, nullable Object) */
265 void VIRTUAL_opts__Option__value_61d(val* self, val* p0) {
266 short int var /* : Bool */;
267 int cltype;
268 int idtype;
269 const struct type* type_struct;
270 short int is_nullable;
271 const char* var_class_name;
272 { /* Inline opts#Option#value= (self,p0) on <self:Object(Option)> */
273 /* Covariant cast for argument 0 (value) <p0:nullable Object> isa VALUE */
274 /* <p0:nullable Object> isa VALUE */
275 type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
276 cltype = type_struct->color;
277 idtype = type_struct->id;
278 is_nullable = type_struct->is_nullable;
279 if(p0 == NULL) {
280 var = is_nullable;
281 } else {
282 if(cltype >= p0->type->table_size) {
283 var = 0;
284 } else {
285 var = p0->type->type_table[cltype] == idtype;
286 }
287 }
288 if (unlikely(!var)) {
289 var_class_name = p0 == NULL ? "null" : p0->type->name;
290 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
291 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 40);
292 show_backtrace(1);
293 }
294 self->attrs[COLOR_opts__Option___value].val = p0; /* _value on <self:Object(Option)> */
295 RET_LABEL1:(void)0;
296 }
297 RET_LABEL:;
298 }
299 /* method opts#Option#default_value= for (self: Option, nullable Object) */
300 void opts__Option__default_value_61d(val* self, val* p0) {
301 short int var /* : Bool */;
302 int cltype;
303 int idtype;
304 const struct type* type_struct;
305 short int is_nullable;
306 const char* var_class_name;
307 /* Covariant cast for argument 0 (default_value) <p0:nullable Object> isa VALUE */
308 /* <p0:nullable Object> isa VALUE */
309 type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
310 cltype = type_struct->color;
311 idtype = type_struct->id;
312 is_nullable = type_struct->is_nullable;
313 if(p0 == NULL) {
314 var = is_nullable;
315 } else {
316 if(cltype >= p0->type->table_size) {
317 var = 0;
318 } else {
319 var = p0->type->type_table[cltype] == idtype;
320 }
321 }
322 if (unlikely(!var)) {
323 var_class_name = p0 == NULL ? "null" : p0->type->name;
324 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
325 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 43);
326 show_backtrace(1);
327 }
328 self->attrs[COLOR_opts__Option___default_value].val = p0; /* _default_value on <self:Option> */
329 RET_LABEL:;
330 }
331 /* method opts#Option#default_value= for (self: Object, nullable Object) */
332 void VIRTUAL_opts__Option__default_value_61d(val* self, val* p0) {
333 short int var /* : Bool */;
334 int cltype;
335 int idtype;
336 const struct type* type_struct;
337 short int is_nullable;
338 const char* var_class_name;
339 { /* Inline opts#Option#default_value= (self,p0) on <self:Object(Option)> */
340 /* Covariant cast for argument 0 (default_value) <p0:nullable Object> isa VALUE */
341 /* <p0:nullable Object> isa VALUE */
342 type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
343 cltype = type_struct->color;
344 idtype = type_struct->id;
345 is_nullable = type_struct->is_nullable;
346 if(p0 == NULL) {
347 var = is_nullable;
348 } else {
349 if(cltype >= p0->type->table_size) {
350 var = 0;
351 } else {
352 var = p0->type->type_table[cltype] == idtype;
353 }
354 }
355 if (unlikely(!var)) {
356 var_class_name = p0 == NULL ? "null" : p0->type->name;
357 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
358 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 43);
359 show_backtrace(1);
360 }
361 self->attrs[COLOR_opts__Option___default_value].val = p0; /* _default_value on <self:Object(Option)> */
362 RET_LABEL1:(void)0;
363 }
364 RET_LABEL:;
365 }
366 /* method opts#Option#init for (self: Option, String, nullable Object, nullable Array[String]) */
367 void opts__Option__init(val* self, val* p0, val* p1, val* p2) {
368 short int var /* : Bool */;
369 int cltype;
370 int idtype;
371 const struct type* type_struct;
372 short int is_nullable;
373 const char* var_class_name;
374 val* var_help /* var help: String */;
375 val* var_default /* var default: nullable Object */;
376 val* var_names /* var names: nullable Array[String] */;
377 /* Covariant cast for argument 1 (default) <p1:nullable Object> isa VALUE */
378 /* <p1:nullable Object> isa VALUE */
379 type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
380 cltype = type_struct->color;
381 idtype = type_struct->id;
382 is_nullable = type_struct->is_nullable;
383 if(p1 == NULL) {
384 var = is_nullable;
385 } else {
386 if(cltype >= p1->type->table_size) {
387 var = 0;
388 } else {
389 var = p1->type->type_table[cltype] == idtype;
390 }
391 }
392 if (unlikely(!var)) {
393 var_class_name = p1 == NULL ? "null" : p1->type->name;
394 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
395 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 46);
396 show_backtrace(1);
397 }
398 var_help = p0;
399 var_default = p1;
400 var_names = p2;
401 {
402 opts__Option__init_opt(self, var_help, var_default, var_names); /* Direct call opts#Option#init_opt on <self:Option>*/
403 }
404 RET_LABEL:;
405 }
406 /* method opts#Option#init for (self: Object, String, nullable Object, nullable Array[String]) */
407 void VIRTUAL_opts__Option__init(val* self, val* p0, val* p1, val* p2) {
408 opts__Option__init(self, p0, p1, p2); /* Direct call opts#Option#init on <self:Object(Option)>*/
409 RET_LABEL:;
410 }
411 /* method opts#Option#init_opt for (self: Option, String, nullable Object, nullable Array[String]) */
412 void opts__Option__init_opt(val* self, val* p0, val* p1, val* p2) {
413 short int var /* : Bool */;
414 int cltype;
415 int idtype;
416 const struct type* type_struct;
417 short int is_nullable;
418 const char* var_class_name;
419 val* var_help /* var help: String */;
420 val* var_default /* var default: nullable Object */;
421 val* var_names /* var names: nullable Array[String] */;
422 val* var1 /* : null */;
423 short int var2 /* : Bool */;
424 short int var3 /* : Bool */;
425 val* var4 /* : Array[String] */;
426 val* var6 /* : Array[nullable Object] */;
427 short int var10 /* : Bool */;
428 int cltype11;
429 int idtype12;
430 const struct type* type_struct13;
431 short int is_nullable14;
432 const char* var_class_name15;
433 short int var17 /* : Bool */;
434 int cltype18;
435 int idtype19;
436 const struct type* type_struct20;
437 short int is_nullable21;
438 const char* var_class_name22;
439 /* Covariant cast for argument 1 (default) <p1:nullable Object> isa VALUE */
440 /* <p1:nullable Object> isa VALUE */
441 type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
442 cltype = type_struct->color;
443 idtype = type_struct->id;
444 is_nullable = type_struct->is_nullable;
445 if(p1 == NULL) {
446 var = is_nullable;
447 } else {
448 if(cltype >= p1->type->table_size) {
449 var = 0;
450 } else {
451 var = p1->type->type_table[cltype] == idtype;
452 }
453 }
454 if (unlikely(!var)) {
455 var_class_name = p1 == NULL ? "null" : p1->type->name;
456 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
457 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 52);
458 show_backtrace(1);
459 }
460 var_help = p0;
461 var_default = p1;
462 var_names = p2;
463 var1 = NULL;
464 if (var_names == NULL) {
465 var2 = 1; /* is null */
466 } else {
467 var2 = 0; /* arg is null but recv is not */
468 }
469 if (0) {
470 var3 = array__Array___61d_61d(var_names, var1);
471 var2 = var3;
472 }
473 if (var2){
474 var4 = NEW_array__Array(&type_array__Arraystring__String);
475 {
476 ((void (*)(val*))(var4->class->vft[COLOR_kernel__Object__init]))(var4) /* init on <var4:Array[String]>*/;
477 }
478 {
479 { /* Inline opts#Option#names= (self,var4) on <self:Option> */
480 self->attrs[COLOR_opts__Option___names].val = var4; /* _names on <self:Option> */
481 RET_LABEL5:(void)0;
482 }
483 }
484 } else {
485 {
486 var6 = array__Collection__to_a(var_names);
487 }
488 {
489 { /* Inline opts#Option#names= (self,var6) on <self:Option> */
490 self->attrs[COLOR_opts__Option___names].val = var6; /* _names on <self:Option> */
491 RET_LABEL7:(void)0;
492 }
493 }
494 }
495 {
496 { /* Inline opts#Option#helptext= (self,var_help) on <self:Option> */
497 self->attrs[COLOR_opts__Option___helptext].val = var_help; /* _helptext on <self:Option> */
498 RET_LABEL8:(void)0;
499 }
500 }
501 {
502 { /* Inline opts#Option#default_value= (self,var_default) on <self:Option> */
503 /* Covariant cast for argument 0 (default_value) <var_default:nullable Object> isa VALUE */
504 /* <var_default:nullable Object> isa VALUE */
505 type_struct13 = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
506 cltype11 = type_struct13->color;
507 idtype12 = type_struct13->id;
508 is_nullable14 = type_struct13->is_nullable;
509 if(var_default == NULL) {
510 var10 = is_nullable14;
511 } else {
512 if(cltype11 >= var_default->type->table_size) {
513 var10 = 0;
514 } else {
515 var10 = var_default->type->type_table[cltype11] == idtype12;
516 }
517 }
518 if (unlikely(!var10)) {
519 var_class_name15 = var_default == NULL ? "null" : var_default->type->name;
520 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name15);
521 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 43);
522 show_backtrace(1);
523 }
524 self->attrs[COLOR_opts__Option___default_value].val = var_default; /* _default_value on <self:Option> */
525 RET_LABEL9:(void)0;
526 }
527 }
528 {
529 { /* Inline opts#Option#value= (self,var_default) on <self:Option> */
530 /* Covariant cast for argument 0 (value) <var_default:nullable Object> isa VALUE */
531 /* <var_default:nullable Object> isa VALUE */
532 type_struct20 = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
533 cltype18 = type_struct20->color;
534 idtype19 = type_struct20->id;
535 is_nullable21 = type_struct20->is_nullable;
536 if(var_default == NULL) {
537 var17 = is_nullable21;
538 } else {
539 if(cltype18 >= var_default->type->table_size) {
540 var17 = 0;
541 } else {
542 var17 = var_default->type->type_table[cltype18] == idtype19;
543 }
544 }
545 if (unlikely(!var17)) {
546 var_class_name22 = var_default == NULL ? "null" : var_default->type->name;
547 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name22);
548 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 40);
549 show_backtrace(1);
550 }
551 self->attrs[COLOR_opts__Option___value].val = var_default; /* _value on <self:Option> */
552 RET_LABEL16:(void)0;
553 }
554 }
555 RET_LABEL:;
556 }
557 /* method opts#Option#init_opt for (self: Object, String, nullable Object, nullable Array[String]) */
558 void VIRTUAL_opts__Option__init_opt(val* self, val* p0, val* p1, val* p2) {
559 opts__Option__init_opt(self, p0, p1, p2); /* Direct call opts#Option#init_opt on <self:Object(Option)>*/
560 RET_LABEL:;
561 }
562 /* method opts#Option#to_s for (self: Option): String */
563 val* opts__Option__to_s(val* self) {
564 val* var /* : String */;
565 long var1 /* : Int */;
566 val* var2 /* : String */;
567 var1 = 2;
568 {
569 var2 = opts__Option__pretty(self, var1);
570 }
571 var = var2;
572 goto RET_LABEL;
573 RET_LABEL:;
574 return var;
575 }
576 /* method opts#Option#to_s for (self: Object): String */
577 val* VIRTUAL_opts__Option__to_s(val* self) {
578 val* var /* : String */;
579 val* var1 /* : String */;
580 var1 = opts__Option__to_s(self);
581 var = var1;
582 RET_LABEL:;
583 return var;
584 }
585 /* method opts#Option#pretty for (self: Option, Int): String */
586 val* opts__Option__pretty(val* self, long p0) {
587 val* var /* : String */;
588 long var_off /* var off: Int */;
589 val* var1 /* : FlatBuffer */;
590 static val* varonce;
591 val* var2 /* : String */;
592 char* var3 /* : NativeString */;
593 long var4 /* : Int */;
594 val* var5 /* : FlatString */;
595 val* var_text /* var text: FlatBuffer */;
596 val* var6 /* : Array[String] */;
597 val* var8 /* : Array[String] */;
598 static val* varonce9;
599 val* var10 /* : String */;
600 char* var11 /* : NativeString */;
601 long var12 /* : Int */;
602 val* var13 /* : FlatString */;
603 val* var14 /* : String */;
604 static val* varonce15;
605 val* var16 /* : String */;
606 char* var17 /* : NativeString */;
607 long var18 /* : Int */;
608 val* var19 /* : FlatString */;
609 long var20 /* : Int */;
610 long var22 /* : Int */;
611 long var23 /* : Int */;
612 short int var25 /* : Bool */;
613 int cltype;
614 int idtype;
615 const char* var_class_name;
616 long var26 /* : Int */;
617 long var_rest /* var rest: Int */;
618 long var27 /* : Int */;
619 short int var28 /* : Bool */;
620 short int var30 /* : Bool */;
621 int cltype31;
622 int idtype32;
623 const char* var_class_name33;
624 short int var34 /* : Bool */;
625 static val* varonce35;
626 val* var36 /* : String */;
627 char* var37 /* : NativeString */;
628 long var38 /* : Int */;
629 val* var39 /* : FlatString */;
630 val* var40 /* : String */;
631 val* var41 /* : String */;
632 val* var43 /* : String */;
633 val* var44 /* : String */;
634 var_off = p0;
635 var1 = NEW_string__FlatBuffer(&type_string__FlatBuffer);
636 if (varonce) {
637 var2 = varonce;
638 } else {
639 var3 = " ";
640 var4 = 2;
641 var5 = string__NativeString__to_s_with_length(var3, var4);
642 var2 = var5;
643 varonce = var2;
644 }
645 {
646 string__FlatBuffer__from(var1, var2); /* Direct call string#FlatBuffer#from on <var1:FlatBuffer>*/
647 }
648 var_text = var1;
649 {
650 { /* Inline opts#Option#names (self) on <self:Option> */
651 var8 = self->attrs[COLOR_opts__Option___names].val; /* _names on <self:Option> */
652 if (unlikely(var8 == NULL)) {
653 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
654 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 19);
655 show_backtrace(1);
656 }
657 var6 = var8;
658 RET_LABEL7:(void)0;
659 }
660 }
661 if (varonce9) {
662 var10 = varonce9;
663 } else {
664 var11 = ", ";
665 var12 = 2;
666 var13 = string__NativeString__to_s_with_length(var11, var12);
667 var10 = var13;
668 varonce9 = var10;
669 }
670 {
671 var14 = string__Collection__join(var6, var10);
672 }
673 {
674 string__FlatBuffer__append(var_text, var14); /* Direct call string#FlatBuffer#append on <var_text:FlatBuffer>*/
675 }
676 if (varonce15) {
677 var16 = varonce15;
678 } else {
679 var17 = " ";
680 var18 = 2;
681 var19 = string__NativeString__to_s_with_length(var17, var18);
682 var16 = var19;
683 varonce15 = var16;
684 }
685 {
686 string__FlatBuffer__append(var_text, var16); /* Direct call string#FlatBuffer#append on <var_text:FlatBuffer>*/
687 }
688 {
689 { /* Inline string#FlatText#length (var_text) on <var_text:FlatBuffer> */
690 var22 = var_text->attrs[COLOR_string__FlatText___length].l; /* _length on <var_text:FlatBuffer> */
691 var20 = var22;
692 RET_LABEL21:(void)0;
693 }
694 }
695 {
696 { /* Inline kernel#Int#- (var_off,var20) on <var_off:Int> */
697 /* Covariant cast for argument 0 (i) <var20:Int> isa OTHER */
698 /* <var20:Int> isa OTHER */
699 var25 = 1; /* easy <var20:Int> isa OTHER*/
700 if (unlikely(!var25)) {
701 var_class_name = type_kernel__Int.name;
702 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
703 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377);
704 show_backtrace(1);
705 }
706 var26 = var_off - var20;
707 var23 = var26;
708 goto RET_LABEL24;
709 RET_LABEL24:(void)0;
710 }
711 }
712 var_rest = var23;
713 var27 = 0;
714 {
715 { /* Inline kernel#Int#> (var_rest,var27) on <var_rest:Int> */
716 /* Covariant cast for argument 0 (i) <var27:Int> isa OTHER */
717 /* <var27:Int> isa OTHER */
718 var30 = 1; /* easy <var27:Int> isa OTHER*/
719 if (unlikely(!var30)) {
720 var_class_name33 = type_kernel__Int.name;
721 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name33);
722 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
723 show_backtrace(1);
724 }
725 var34 = var_rest > var27;
726 var28 = var34;
727 goto RET_LABEL29;
728 RET_LABEL29:(void)0;
729 }
730 }
731 if (var28){
732 if (varonce35) {
733 var36 = varonce35;
734 } else {
735 var37 = " ";
736 var38 = 1;
737 var39 = string__NativeString__to_s_with_length(var37, var38);
738 var36 = var39;
739 varonce35 = var36;
740 }
741 {
742 var40 = string__FlatString___42d(var36, var_rest);
743 }
744 {
745 string__FlatBuffer__append(var_text, var40); /* Direct call string#FlatBuffer#append on <var_text:FlatBuffer>*/
746 }
747 } else {
748 }
749 {
750 { /* Inline opts#Option#helptext (self) on <self:Option> */
751 var43 = self->attrs[COLOR_opts__Option___helptext].val; /* _helptext on <self:Option> */
752 if (unlikely(var43 == NULL)) {
753 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _helptext");
754 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 25);
755 show_backtrace(1);
756 }
757 var41 = var43;
758 RET_LABEL42:(void)0;
759 }
760 }
761 {
762 string__FlatBuffer__append(var_text, var41); /* Direct call string#FlatBuffer#append on <var_text:FlatBuffer>*/
763 }
764 {
765 var44 = string__FlatBuffer__to_s(var_text);
766 }
767 var = var44;
768 goto RET_LABEL;
769 RET_LABEL:;
770 return var;
771 }
772 /* method opts#Option#pretty for (self: Object, Int): String */
773 val* VIRTUAL_opts__Option__pretty(val* self, long p0) {
774 val* var /* : String */;
775 val* var1 /* : String */;
776 var1 = opts__Option__pretty(self, p0);
777 var = var1;
778 RET_LABEL:;
779 return var;
780 }
781 /* method opts#Option#read_param for (self: Option, Iterator[String]) */
782 void opts__Option__read_param(val* self, val* p0) {
783 val* var_it /* var it: Iterator[String] */;
784 short int var /* : Bool */;
785 var_it = p0;
786 var = 1;
787 {
788 { /* Inline opts#Option#read= (self,var) on <self:Option> */
789 self->attrs[COLOR_opts__Option___read].s = var; /* _read on <self:Option> */
790 RET_LABEL1:(void)0;
791 }
792 }
793 RET_LABEL:;
794 }
795 /* method opts#Option#read_param for (self: Object, Iterator[String]) */
796 void VIRTUAL_opts__Option__read_param(val* self, val* p0) {
797 opts__Option__read_param(self, p0); /* Direct call opts#Option#read_param on <self:Object(Option)>*/
798 RET_LABEL:;
799 }
800 /* method opts#OptionBool#init for (self: OptionBool, String, Array[String]) */
801 void opts__OptionBool__init(val* self, val* p0, val* p1) {
802 val* var_help /* var help: String */;
803 val* var_names /* var names: Array[String] */;
804 short int var /* : Bool */;
805 val* var1 /* : nullable Object */;
806 var_help = p0;
807 var_names = p1;
808 var = 0;
809 {
810 var1 = BOX_kernel__Bool(var); /* autobox from Bool to nullable Object */
811 opts__Option__init(self, var_help, var1, var_names); /* Direct call opts#Option#init on <self:OptionBool>*/
812 }
813 RET_LABEL:;
814 }
815 /* method opts#OptionBool#init for (self: Object, String, Array[String]) */
816 void VIRTUAL_opts__OptionBool__init(val* self, val* p0, val* p1) {
817 opts__OptionBool__init(self, p0, p1); /* Direct call opts#OptionBool#init on <self:Object(OptionBool)>*/
818 RET_LABEL:;
819 }
820 /* method opts#OptionBool#read_param for (self: OptionBool, Iterator[String]) */
821 void opts__OptionBool__read_param(val* self, val* p0) {
822 val* var_it /* var it: Iterator[String] */;
823 short int var /* : Bool */;
824 short int var2 /* : Bool */;
825 int cltype;
826 int idtype;
827 const struct type* type_struct;
828 const char* var_class_name;
829 val* var3 /* : nullable Object */;
830 var_it = p0;
831 {
832 ((void (*)(val*, val*))(self->class->vft[COLOR_opts__OptionBool__read_param]))(self, p0) /* read_param on <self:OptionBool>*/;
833 }
834 var = 1;
835 {
836 { /* Inline opts#Option#value= (self,var) on <self:OptionBool> */
837 /* Covariant cast for argument 0 (value) <var:Bool> isa VALUE */
838 /* <var:Bool> isa VALUE */
839 type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
840 cltype = type_struct->color;
841 idtype = type_struct->id;
842 if(cltype >= (&type_kernel__Bool)->table_size) {
843 var2 = 0;
844 } else {
845 var2 = (&type_kernel__Bool)->type_table[cltype] == idtype;
846 }
847 if (unlikely(!var2)) {
848 var_class_name = type_kernel__Bool.name;
849 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
850 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 40);
851 show_backtrace(1);
852 }
853 var3 = BOX_kernel__Bool(var); /* autobox from Bool to nullable Object */
854 self->attrs[COLOR_opts__Option___value].val = var3; /* _value on <self:OptionBool> */
855 RET_LABEL1:(void)0;
856 }
857 }
858 RET_LABEL:;
859 }
860 /* method opts#OptionBool#read_param for (self: Object, Iterator[String]) */
861 void VIRTUAL_opts__OptionBool__read_param(val* self, val* p0) {
862 opts__OptionBool__read_param(self, p0); /* Direct call opts#OptionBool#read_param on <self:Object(OptionBool)>*/
863 RET_LABEL:;
864 }
865 /* method opts#OptionCount#init for (self: OptionCount, String, Array[String]) */
866 void opts__OptionCount__init(val* self, val* p0, val* p1) {
867 val* var_help /* var help: String */;
868 val* var_names /* var names: Array[String] */;
869 long var /* : Int */;
870 val* var1 /* : nullable Object */;
871 var_help = p0;
872 var_names = p1;
873 var = 0;
874 {
875 var1 = BOX_kernel__Int(var); /* autobox from Int to nullable Object */
876 opts__Option__init(self, var_help, var1, var_names); /* Direct call opts#Option#init on <self:OptionCount>*/
877 }
878 RET_LABEL:;
879 }
880 /* method opts#OptionCount#init for (self: Object, String, Array[String]) */
881 void VIRTUAL_opts__OptionCount__init(val* self, val* p0, val* p1) {
882 opts__OptionCount__init(self, p0, p1); /* Direct call opts#OptionCount#init on <self:Object(OptionCount)>*/
883 RET_LABEL:;
884 }
885 /* method opts#OptionCount#read_param for (self: OptionCount, Iterator[String]) */
886 void opts__OptionCount__read_param(val* self, val* p0) {
887 val* var_it /* var it: Iterator[String] */;
888 val* var_ /* var : OptionCount */;
889 val* var /* : nullable Object */;
890 val* var2 /* : nullable Object */;
891 long var3 /* : Int */;
892 long var4 /* : Int */;
893 short int var6 /* : Bool */;
894 int cltype;
895 int idtype;
896 const char* var_class_name;
897 long var7 /* : Int */;
898 long var8 /* : Int */;
899 short int var10 /* : Bool */;
900 int cltype11;
901 int idtype12;
902 const struct type* type_struct;
903 const char* var_class_name13;
904 val* var14 /* : nullable Object */;
905 var_it = p0;
906 {
907 ((void (*)(val*, val*))(self->class->vft[COLOR_opts__OptionCount__read_param]))(self, p0) /* read_param on <self:OptionCount>*/;
908 }
909 var_ = self;
910 {
911 { /* Inline opts#Option#value (var_) on <var_:OptionCount> */
912 var2 = var_->attrs[COLOR_opts__Option___value].val; /* _value on <var_:OptionCount> */
913 var = var2;
914 RET_LABEL1:(void)0;
915 }
916 }
917 var3 = 1;
918 {
919 { /* Inline kernel#Int#+ (var,var3) on <var:nullable Object(Int)> */
920 /* Covariant cast for argument 0 (i) <var3:Int> isa OTHER */
921 /* <var3:Int> isa OTHER */
922 var6 = 1; /* easy <var3:Int> isa OTHER*/
923 if (unlikely(!var6)) {
924 var_class_name = type_kernel__Int.name;
925 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
926 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
927 show_backtrace(1);
928 }
929 var7 = ((struct instance_kernel__Int*)var)->value; /* autounbox from nullable Object to Int */;
930 var8 = var7 + var3;
931 var4 = var8;
932 goto RET_LABEL5;
933 RET_LABEL5:(void)0;
934 }
935 }
936 {
937 { /* Inline opts#Option#value= (var_,var4) on <var_:OptionCount> */
938 /* Covariant cast for argument 0 (value) <var4:Int> isa VALUE */
939 /* <var4:Int> isa VALUE */
940 type_struct = var_->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
941 cltype11 = type_struct->color;
942 idtype12 = type_struct->id;
943 if(cltype11 >= (&type_kernel__Int)->table_size) {
944 var10 = 0;
945 } else {
946 var10 = (&type_kernel__Int)->type_table[cltype11] == idtype12;
947 }
948 if (unlikely(!var10)) {
949 var_class_name13 = type_kernel__Int.name;
950 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name13);
951 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 40);
952 show_backtrace(1);
953 }
954 var14 = BOX_kernel__Int(var4); /* autobox from Int to nullable Object */
955 var_->attrs[COLOR_opts__Option___value].val = var14; /* _value on <var_:OptionCount> */
956 RET_LABEL9:(void)0;
957 }
958 }
959 RET_LABEL:;
960 }
961 /* method opts#OptionCount#read_param for (self: Object, Iterator[String]) */
962 void VIRTUAL_opts__OptionCount__read_param(val* self, val* p0) {
963 opts__OptionCount__read_param(self, p0); /* Direct call opts#OptionCount#read_param on <self:Object(OptionCount)>*/
964 RET_LABEL:;
965 }
966 /* method opts#OptionParameter#parameter_mandatory for (self: OptionParameter): Bool */
967 short int opts__OptionParameter__parameter_mandatory(val* self) {
968 short int var /* : Bool */;
969 short int var1 /* : Bool */;
970 var1 = self->attrs[COLOR_opts__OptionParameter___parameter_mandatory].s; /* _parameter_mandatory on <self:OptionParameter> */
971 var = var1;
972 RET_LABEL:;
973 return var;
974 }
975 /* method opts#OptionParameter#parameter_mandatory for (self: Object): Bool */
976 short int VIRTUAL_opts__OptionParameter__parameter_mandatory(val* self) {
977 short int var /* : Bool */;
978 short int var1 /* : Bool */;
979 short int var3 /* : Bool */;
980 { /* Inline opts#OptionParameter#parameter_mandatory (self) on <self:Object(OptionParameter)> */
981 var3 = self->attrs[COLOR_opts__OptionParameter___parameter_mandatory].s; /* _parameter_mandatory on <self:Object(OptionParameter)> */
982 var1 = var3;
983 RET_LABEL2:(void)0;
984 }
985 var = var1;
986 RET_LABEL:;
987 return var;
988 }
989 /* method opts#OptionParameter#read_param for (self: OptionParameter, Iterator[String]) */
990 void opts__OptionParameter__read_param(val* self, val* p0) {
991 val* var_it /* var it: Iterator[String] */;
992 short int var /* : Bool */;
993 short int var1 /* : Bool */;
994 short int var_ /* var : Bool */;
995 val* var2 /* : nullable Object */;
996 val* var3 /* : SequenceRead[Char] */;
997 val* var5 /* : SequenceRead[Char] */;
998 val* var6 /* : nullable Object */;
999 char var7 /* : Char */;
1000 short int var8 /* : Bool */;
1001 short int var9 /* : Bool */;
1002 short int var11 /* : Bool */;
1003 char var12 /* : Char */;
1004 short int var13 /* : Bool */;
1005 val* var14 /* : nullable Object */;
1006 val* var15 /* : nullable Object */;
1007 short int var17 /* : Bool */;
1008 int cltype;
1009 int idtype;
1010 const struct type* type_struct;
1011 short int is_nullable;
1012 const char* var_class_name;
1013 short int var18 /* : Bool */;
1014 short int var20 /* : Bool */;
1015 val* var21 /* : Array[String] */;
1016 val* var23 /* : Array[String] */;
1017 static val* varonce;
1018 val* var24 /* : String */;
1019 char* var25 /* : NativeString */;
1020 long var26 /* : Int */;
1021 val* var27 /* : FlatString */;
1022 val* var28 /* : Array[String] */;
1023 val* var30 /* : Array[String] */;
1024 val* var31 /* : nullable Object */;
1025 static val* varonce32;
1026 val* var33 /* : String */;
1027 char* var34 /* : NativeString */;
1028 long var35 /* : Int */;
1029 val* var36 /* : FlatString */;
1030 val* var37 /* : Array[Object] */;
1031 long var38 /* : Int */;
1032 val* var39 /* : NativeArray[Object] */;
1033 val* var40 /* : String */;
1034 var_it = p0;
1035 {
1036 ((void (*)(val*, val*))(self->class->vft[COLOR_opts__OptionParameter__read_param]))(self, p0) /* read_param on <self:OptionParameter>*/;
1037 }
1038 {
1039 var1 = ((short int (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_it) /* is_ok on <var_it:Iterator[String]>*/;
1040 }
1041 var_ = var1;
1042 if (var1){
1043 {
1044 var2 = ((val* (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__item]))(var_it) /* item on <var_it:Iterator[String]>*/;
1045 }
1046 {
1047 { /* Inline string#FlatString#chars (var2) on <var2:nullable Object(String)> */
1048 var5 = var2->attrs[COLOR_string__FlatString___chars].val; /* _chars on <var2:nullable Object(String)> */
1049 if (unlikely(var5 == NULL)) {
1050 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _chars");
1051 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/string.nit", 939);
1052 show_backtrace(1);
1053 }
1054 var3 = var5;
1055 RET_LABEL4:(void)0;
1056 }
1057 }
1058 {
1059 var6 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Collection__first]))(var3) /* first on <var3:SequenceRead[Char]>*/;
1060 }
1061 var7 = '-';
1062 {
1063 { /* Inline kernel#Char#!= (var6,var7) on <var6:nullable Object(Char)> */
1064 var11 = (var6 != NULL) && (var6->class == &class_kernel__Char);
1065 if (var11) {
1066 var12 = ((struct instance_kernel__Char*)var6)->value; /* autounbox from nullable Object to Char */;
1067 var11 = (var12 == var7);
1068 }
1069 var13 = !var11;
1070 var9 = var13;
1071 goto RET_LABEL10;
1072 RET_LABEL10:(void)0;
1073 }
1074 var8 = var9;
1075 }
1076 var = var8;
1077 } else {
1078 var = var_;
1079 }
1080 if (var){
1081 {
1082 var14 = ((val* (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__item]))(var_it) /* item on <var_it:Iterator[String]>*/;
1083 }
1084 {
1085 var15 = ((val* (*)(val*, val*))(self->class->vft[COLOR_opts__OptionParameter__convert]))(self, var14) /* convert on <self:OptionParameter>*/;
1086 }
1087 {
1088 { /* Inline opts#Option#value= (self,var15) on <self:OptionParameter> */
1089 /* Covariant cast for argument 0 (value) <var15:nullable Object> isa VALUE */
1090 /* <var15:nullable Object> isa VALUE */
1091 type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
1092 cltype = type_struct->color;
1093 idtype = type_struct->id;
1094 is_nullable = type_struct->is_nullable;
1095 if(var15 == NULL) {
1096 var17 = is_nullable;
1097 } else {
1098 if(cltype >= var15->type->table_size) {
1099 var17 = 0;
1100 } else {
1101 var17 = var15->type->type_table[cltype] == idtype;
1102 }
1103 }
1104 if (unlikely(!var17)) {
1105 var_class_name = var15 == NULL ? "null" : var15->type->name;
1106 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
1107 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 40);
1108 show_backtrace(1);
1109 }
1110 self->attrs[COLOR_opts__Option___value].val = var15; /* _value on <self:OptionParameter> */
1111 RET_LABEL16:(void)0;
1112 }
1113 }
1114 {
1115 ((void (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__next]))(var_it) /* next on <var_it:Iterator[String]>*/;
1116 }
1117 } else {
1118 {
1119 { /* Inline opts#OptionParameter#parameter_mandatory (self) on <self:OptionParameter> */
1120 var20 = self->attrs[COLOR_opts__OptionParameter___parameter_mandatory].s; /* _parameter_mandatory on <self:OptionParameter> */
1121 var18 = var20;
1122 RET_LABEL19:(void)0;
1123 }
1124 }
1125 if (var18){
1126 {
1127 { /* Inline opts#Option#errors (self) on <self:OptionParameter> */
1128 var23 = self->attrs[COLOR_opts__Option___errors].val; /* _errors on <self:OptionParameter> */
1129 if (unlikely(var23 == NULL)) {
1130 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _errors");
1131 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 28);
1132 show_backtrace(1);
1133 }
1134 var21 = var23;
1135 RET_LABEL22:(void)0;
1136 }
1137 }
1138 if (varonce) {
1139 var24 = varonce;
1140 } else {
1141 var25 = "Parameter expected for option ";
1142 var26 = 30;
1143 var27 = string__NativeString__to_s_with_length(var25, var26);
1144 var24 = var27;
1145 varonce = var24;
1146 }
1147 {
1148 { /* Inline opts#Option#names (self) on <self:OptionParameter> */
1149 var30 = self->attrs[COLOR_opts__Option___names].val; /* _names on <self:OptionParameter> */
1150 if (unlikely(var30 == NULL)) {
1151 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
1152 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 19);
1153 show_backtrace(1);
1154 }
1155 var28 = var30;
1156 RET_LABEL29:(void)0;
1157 }
1158 }
1159 {
1160 var31 = abstract_collection__SequenceRead__first(var28);
1161 }
1162 if (varonce32) {
1163 var33 = varonce32;
1164 } else {
1165 var34 = ".";
1166 var35 = 1;
1167 var36 = string__NativeString__to_s_with_length(var34, var35);
1168 var33 = var36;
1169 varonce32 = var33;
1170 }
1171 var37 = NEW_array__Array(&type_array__Arraykernel__Object);
1172 { /* var37 = array_instance Array[Object] */
1173 var38 = 3;
1174 var39 = NEW_array__NativeArray(var38, &type_array__NativeArraykernel__Object);
1175 ((struct instance_array__NativeArray*)var39)->values[0] = (val*) var24;
1176 ((struct instance_array__NativeArray*)var39)->values[1] = (val*) var31;
1177 ((struct instance_array__NativeArray*)var39)->values[2] = (val*) var33;
1178 {
1179 ((void (*)(val*, val*, long))(var37->class->vft[COLOR_array__Array__with_native]))(var37, var39, var38) /* with_native on <var37:Array[Object]>*/;
1180 }
1181 }
1182 {
1183 var40 = ((val* (*)(val*))(var37->class->vft[COLOR_string__Object__to_s]))(var37) /* to_s on <var37:Array[Object]>*/;
1184 }
1185 {
1186 array__Array__add(var21, var40); /* Direct call array#Array#add on <var21:Array[String]>*/
1187 }
1188 } else {
1189 }
1190 }
1191 RET_LABEL:;
1192 }
1193 /* method opts#OptionParameter#read_param for (self: Object, Iterator[String]) */
1194 void VIRTUAL_opts__OptionParameter__read_param(val* self, val* p0) {
1195 opts__OptionParameter__read_param(self, p0); /* Direct call opts#OptionParameter#read_param on <self:Object(OptionParameter)>*/
1196 RET_LABEL:;
1197 }
1198 /* method opts#OptionString#init for (self: OptionString, String, Array[String]) */
1199 void opts__OptionString__init(val* self, val* p0, val* p1) {
1200 val* var_help /* var help: String */;
1201 val* var_names /* var names: Array[String] */;
1202 val* var /* : null */;
1203 short int var1 /* : Bool */;
1204 int cltype;
1205 int idtype;
1206 const struct type* type_struct;
1207 short int is_nullable;
1208 const char* var_class_name;
1209 var_help = p0;
1210 var_names = p1;
1211 var = NULL;
1212 /* <var:null> isa VALUE */
1213 type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
1214 cltype = type_struct->color;
1215 idtype = type_struct->id;
1216 is_nullable = type_struct->is_nullable;
1217 if(var == NULL) {
1218 var1 = is_nullable;
1219 } else {
1220 if(cltype >= var->type->table_size) {
1221 var1 = 0;
1222 } else {
1223 var1 = var->type->type_table[cltype] == idtype;
1224 }
1225 }
1226 if (unlikely(!var1)) {
1227 var_class_name = var == NULL ? "null" : var->type->name;
1228 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
1229 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 162);
1230 show_backtrace(1);
1231 }
1232 {
1233 opts__Option__init(self, var_help, var, var_names); /* Direct call opts#Option#init on <self:OptionString>*/
1234 }
1235 RET_LABEL:;
1236 }
1237 /* method opts#OptionString#init for (self: Object, String, Array[String]) */
1238 void VIRTUAL_opts__OptionString__init(val* self, val* p0, val* p1) {
1239 opts__OptionString__init(self, p0, p1); /* Direct call opts#OptionString#init on <self:Object(OptionString)>*/
1240 RET_LABEL:;
1241 }
1242 /* method opts#OptionString#convert for (self: OptionString, String): nullable String */
1243 val* opts__OptionString__convert(val* self, val* p0) {
1244 val* var /* : nullable String */;
1245 val* var_str /* var str: String */;
1246 short int var1 /* : Bool */;
1247 int cltype;
1248 int idtype;
1249 const struct type* type_struct;
1250 const char* var_class_name;
1251 var_str = p0;
1252 /* <var_str:String> isa VALUE */
1253 type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
1254 cltype = type_struct->color;
1255 idtype = type_struct->id;
1256 if(cltype >= var_str->type->table_size) {
1257 var1 = 0;
1258 } else {
1259 var1 = var_str->type->type_table[cltype] == idtype;
1260 }
1261 if (unlikely(!var1)) {
1262 var_class_name = var_str == NULL ? "null" : var_str->type->name;
1263 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
1264 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 164);
1265 show_backtrace(1);
1266 }
1267 var = var_str;
1268 goto RET_LABEL;
1269 RET_LABEL:;
1270 return var;
1271 }
1272 /* method opts#OptionString#convert for (self: Object, String): nullable Object */
1273 val* VIRTUAL_opts__OptionString__convert(val* self, val* p0) {
1274 val* var /* : nullable Object */;
1275 val* var1 /* : nullable String */;
1276 var1 = opts__OptionString__convert(self, p0);
1277 var = var1;
1278 RET_LABEL:;
1279 return var;
1280 }
1281 /* method opts#OptionInt#init for (self: OptionInt, String, Int, Array[String]) */
1282 void opts__OptionInt__init(val* self, val* p0, long p1, val* p2) {
1283 val* var_help /* var help: String */;
1284 long var_default /* var default: Int */;
1285 val* var_names /* var names: Array[String] */;
1286 val* var /* : nullable Object */;
1287 var_help = p0;
1288 var_default = p1;
1289 var_names = p2;
1290 {
1291 var = BOX_kernel__Int(var_default); /* autobox from Int to nullable Object */
1292 opts__Option__init(self, var_help, var, var_names); /* Direct call opts#Option#init on <self:OptionInt>*/
1293 }
1294 RET_LABEL:;
1295 }
1296 /* method opts#OptionInt#init for (self: Object, String, Int, Array[String]) */
1297 void VIRTUAL_opts__OptionInt__init(val* self, val* p0, long p1, val* p2) {
1298 opts__OptionInt__init(self, p0, p1, p2); /* Direct call opts#OptionInt#init on <self:Object(OptionInt)>*/
1299 RET_LABEL:;
1300 }
1301 /* method opts#OptionInt#convert for (self: OptionInt, String): Int */
1302 long opts__OptionInt__convert(val* self, val* p0) {
1303 long var /* : Int */;
1304 val* var_str /* var str: String */;
1305 long var1 /* : Int */;
1306 var_str = p0;
1307 {
1308 var1 = string__Text__to_i(var_str);
1309 }
1310 var = var1;
1311 goto RET_LABEL;
1312 RET_LABEL:;
1313 return var;
1314 }
1315 /* method opts#OptionInt#convert for (self: Object, String): nullable Object */
1316 val* VIRTUAL_opts__OptionInt__convert(val* self, val* p0) {
1317 val* var /* : nullable Object */;
1318 long var1 /* : Int */;
1319 val* var2 /* : nullable Object */;
1320 var1 = opts__OptionInt__convert(self, p0);
1321 var2 = BOX_kernel__Int(var1); /* autobox from Int to nullable Object */
1322 var = var2;
1323 RET_LABEL:;
1324 return var;
1325 }
1326 /* method opts#OptionArray#init for (self: OptionArray, String, Array[String]) */
1327 void opts__OptionArray__init(val* self, val* p0, val* p1) {
1328 val* var_help /* var help: String */;
1329 val* var_names /* var names: Array[String] */;
1330 val* var /* : Array[String] */;
1331 val* var2 /* : Array[String] */;
1332 val* var4 /* : Array[String] */;
1333 short int var5 /* : Bool */;
1334 int cltype;
1335 int idtype;
1336 const struct type* type_struct;
1337 const char* var_class_name;
1338 var_help = p0;
1339 var_names = p1;
1340 var = NEW_array__Array(&type_array__Arraystring__String);
1341 {
1342 ((void (*)(val*))(var->class->vft[COLOR_kernel__Object__init]))(var) /* init on <var:Array[String]>*/;
1343 }
1344 {
1345 { /* Inline opts#OptionArray#values= (self,var) on <self:OptionArray> */
1346 self->attrs[COLOR_opts__OptionArray___values].val = var; /* _values on <self:OptionArray> */
1347 RET_LABEL1:(void)0;
1348 }
1349 }
1350 {
1351 { /* Inline opts#OptionArray#values (self) on <self:OptionArray> */
1352 var4 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on <self:OptionArray> */
1353 if (unlikely(var4 == NULL)) {
1354 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _values");
1355 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 233);
1356 show_backtrace(1);
1357 }
1358 var2 = var4;
1359 RET_LABEL3:(void)0;
1360 }
1361 }
1362 /* <var2:Array[String]> isa VALUE */
1363 type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
1364 cltype = type_struct->color;
1365 idtype = type_struct->id;
1366 if(cltype >= var2->type->table_size) {
1367 var5 = 0;
1368 } else {
1369 var5 = var2->type->type_table[cltype] == idtype;
1370 }
1371 if (unlikely(!var5)) {
1372 var_class_name = var2 == NULL ? "null" : var2->type->name;
1373 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
1374 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 230);
1375 show_backtrace(1);
1376 }
1377 {
1378 opts__Option__init(self, var_help, var2, var_names); /* Direct call opts#Option#init on <self:OptionArray>*/
1379 }
1380 RET_LABEL:;
1381 }
1382 /* method opts#OptionArray#init for (self: Object, String, Array[String]) */
1383 void VIRTUAL_opts__OptionArray__init(val* self, val* p0, val* p1) {
1384 opts__OptionArray__init(self, p0, p1); /* Direct call opts#OptionArray#init on <self:Object(OptionArray)>*/
1385 RET_LABEL:;
1386 }
1387 /* method opts#OptionArray#values for (self: OptionArray): Array[String] */
1388 val* opts__OptionArray__values(val* self) {
1389 val* var /* : Array[String] */;
1390 val* var1 /* : Array[String] */;
1391 var1 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on <self:OptionArray> */
1392 if (unlikely(var1 == NULL)) {
1393 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _values");
1394 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 233);
1395 show_backtrace(1);
1396 }
1397 var = var1;
1398 RET_LABEL:;
1399 return var;
1400 }
1401 /* method opts#OptionArray#values for (self: Object): Array[String] */
1402 val* VIRTUAL_opts__OptionArray__values(val* self) {
1403 val* var /* : Array[String] */;
1404 val* var1 /* : Array[String] */;
1405 val* var3 /* : Array[String] */;
1406 { /* Inline opts#OptionArray#values (self) on <self:Object(OptionArray)> */
1407 var3 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on <self:Object(OptionArray)> */
1408 if (unlikely(var3 == NULL)) {
1409 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _values");
1410 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 233);
1411 show_backtrace(1);
1412 }
1413 var1 = var3;
1414 RET_LABEL2:(void)0;
1415 }
1416 var = var1;
1417 RET_LABEL:;
1418 return var;
1419 }
1420 /* method opts#OptionArray#values= for (self: OptionArray, Array[String]) */
1421 void opts__OptionArray__values_61d(val* self, val* p0) {
1422 self->attrs[COLOR_opts__OptionArray___values].val = p0; /* _values on <self:OptionArray> */
1423 RET_LABEL:;
1424 }
1425 /* method opts#OptionArray#values= for (self: Object, Array[String]) */
1426 void VIRTUAL_opts__OptionArray__values_61d(val* self, val* p0) {
1427 { /* Inline opts#OptionArray#values= (self,p0) on <self:Object(OptionArray)> */
1428 self->attrs[COLOR_opts__OptionArray___values].val = p0; /* _values on <self:Object(OptionArray)> */
1429 RET_LABEL1:(void)0;
1430 }
1431 RET_LABEL:;
1432 }
1433 /* method opts#OptionArray#convert for (self: OptionArray, String): Array[String] */
1434 val* opts__OptionArray__convert(val* self, val* p0) {
1435 val* var /* : Array[String] */;
1436 val* var_str /* var str: String */;
1437 val* var1 /* : Array[String] */;
1438 val* var3 /* : Array[String] */;
1439 val* var4 /* : Array[String] */;
1440 val* var6 /* : Array[String] */;
1441 short int var7 /* : Bool */;
1442 int cltype;
1443 int idtype;
1444 const struct type* type_struct;
1445 const char* var_class_name;
1446 var_str = p0;
1447 {
1448 { /* Inline opts#OptionArray#values (self) on <self:OptionArray> */
1449 var3 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on <self:OptionArray> */
1450 if (unlikely(var3 == NULL)) {
1451 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _values");
1452 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 233);
1453 show_backtrace(1);
1454 }
1455 var1 = var3;
1456 RET_LABEL2:(void)0;
1457 }
1458 }
1459 {
1460 array__Array__add(var1, var_str); /* Direct call array#Array#add on <var1:Array[String]>*/
1461 }
1462 {
1463 { /* Inline opts#OptionArray#values (self) on <self:OptionArray> */
1464 var6 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on <self:OptionArray> */
1465 if (unlikely(var6 == NULL)) {
1466 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _values");
1467 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 233);
1468 show_backtrace(1);
1469 }
1470 var4 = var6;
1471 RET_LABEL5:(void)0;
1472 }
1473 }
1474 /* <var4:Array[String]> isa VALUE */
1475 type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
1476 cltype = type_struct->color;
1477 idtype = type_struct->id;
1478 if(cltype >= var4->type->table_size) {
1479 var7 = 0;
1480 } else {
1481 var7 = var4->type->type_table[cltype] == idtype;
1482 }
1483 if (unlikely(!var7)) {
1484 var_class_name = var4 == NULL ? "null" : var4->type->name;
1485 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
1486 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 237);
1487 show_backtrace(1);
1488 }
1489 var = var4;
1490 goto RET_LABEL;
1491 RET_LABEL:;
1492 return var;
1493 }
1494 /* method opts#OptionArray#convert for (self: Object, String): nullable Object */
1495 val* VIRTUAL_opts__OptionArray__convert(val* self, val* p0) {
1496 val* var /* : nullable Object */;
1497 val* var1 /* : Array[String] */;
1498 var1 = opts__OptionArray__convert(self, p0);
1499 var = var1;
1500 RET_LABEL:;
1501 return var;
1502 }
1503 /* method opts#OptionContext#options for (self: OptionContext): Array[Option] */
1504 val* opts__OptionContext__options(val* self) {
1505 val* var /* : Array[Option] */;
1506 val* var1 /* : Array[Option] */;
1507 var1 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
1508 if (unlikely(var1 == NULL)) {
1509 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
1510 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 243);
1511 show_backtrace(1);
1512 }
1513 var = var1;
1514 RET_LABEL:;
1515 return var;
1516 }
1517 /* method opts#OptionContext#options for (self: Object): Array[Option] */
1518 val* VIRTUAL_opts__OptionContext__options(val* self) {
1519 val* var /* : Array[Option] */;
1520 val* var1 /* : Array[Option] */;
1521 val* var3 /* : Array[Option] */;
1522 { /* Inline opts#OptionContext#options (self) on <self:Object(OptionContext)> */
1523 var3 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:Object(OptionContext)> */
1524 if (unlikely(var3 == NULL)) {
1525 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
1526 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 243);
1527 show_backtrace(1);
1528 }
1529 var1 = var3;
1530 RET_LABEL2:(void)0;
1531 }
1532 var = var1;
1533 RET_LABEL:;
1534 return var;
1535 }
1536 /* method opts#OptionContext#rest for (self: OptionContext): Array[String] */
1537 val* opts__OptionContext__rest(val* self) {
1538 val* var /* : Array[String] */;
1539 val* var1 /* : Array[String] */;
1540 var1 = self->attrs[COLOR_opts__OptionContext___rest].val; /* _rest on <self:OptionContext> */
1541 if (unlikely(var1 == NULL)) {
1542 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _rest");
1543 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 246);
1544 show_backtrace(1);
1545 }
1546 var = var1;
1547 RET_LABEL:;
1548 return var;
1549 }
1550 /* method opts#OptionContext#rest for (self: Object): Array[String] */
1551 val* VIRTUAL_opts__OptionContext__rest(val* self) {
1552 val* var /* : Array[String] */;
1553 val* var1 /* : Array[String] */;
1554 val* var3 /* : Array[String] */;
1555 { /* Inline opts#OptionContext#rest (self) on <self:Object(OptionContext)> */
1556 var3 = self->attrs[COLOR_opts__OptionContext___rest].val; /* _rest on <self:Object(OptionContext)> */
1557 if (unlikely(var3 == NULL)) {
1558 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _rest");
1559 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 246);
1560 show_backtrace(1);
1561 }
1562 var1 = var3;
1563 RET_LABEL2:(void)0;
1564 }
1565 var = var1;
1566 RET_LABEL:;
1567 return var;
1568 }
1569 /* method opts#OptionContext#errors for (self: OptionContext): Array[String] */
1570 val* opts__OptionContext__errors(val* self) {
1571 val* var /* : Array[String] */;
1572 val* var1 /* : Array[String] */;
1573 var1 = self->attrs[COLOR_opts__OptionContext___errors].val; /* _errors on <self:OptionContext> */
1574 if (unlikely(var1 == NULL)) {
1575 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _errors");
1576 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 249);
1577 show_backtrace(1);
1578 }
1579 var = var1;
1580 RET_LABEL:;
1581 return var;
1582 }
1583 /* method opts#OptionContext#errors for (self: Object): Array[String] */
1584 val* VIRTUAL_opts__OptionContext__errors(val* self) {
1585 val* var /* : Array[String] */;
1586 val* var1 /* : Array[String] */;
1587 val* var3 /* : Array[String] */;
1588 { /* Inline opts#OptionContext#errors (self) on <self:Object(OptionContext)> */
1589 var3 = self->attrs[COLOR_opts__OptionContext___errors].val; /* _errors on <self:Object(OptionContext)> */
1590 if (unlikely(var3 == NULL)) {
1591 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _errors");
1592 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 249);
1593 show_backtrace(1);
1594 }
1595 var1 = var3;
1596 RET_LABEL2:(void)0;
1597 }
1598 var = var1;
1599 RET_LABEL:;
1600 return var;
1601 }
1602 /* method opts#OptionContext#optmap for (self: OptionContext): HashMap[String, Option] */
1603 val* opts__OptionContext__optmap(val* self) {
1604 val* var /* : HashMap[String, Option] */;
1605 val* var1 /* : HashMap[String, Option] */;
1606 var1 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
1607 if (unlikely(var1 == NULL)) {
1608 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap");
1609 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 252);
1610 show_backtrace(1);
1611 }
1612 var = var1;
1613 RET_LABEL:;
1614 return var;
1615 }
1616 /* method opts#OptionContext#optmap for (self: Object): HashMap[String, Option] */
1617 val* VIRTUAL_opts__OptionContext__optmap(val* self) {
1618 val* var /* : HashMap[String, Option] */;
1619 val* var1 /* : HashMap[String, Option] */;
1620 val* var3 /* : HashMap[String, Option] */;
1621 { /* Inline opts#OptionContext#optmap (self) on <self:Object(OptionContext)> */
1622 var3 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:Object(OptionContext)> */
1623 if (unlikely(var3 == NULL)) {
1624 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap");
1625 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 252);
1626 show_backtrace(1);
1627 }
1628 var1 = var3;
1629 RET_LABEL2:(void)0;
1630 }
1631 var = var1;
1632 RET_LABEL:;
1633 return var;
1634 }
1635 /* method opts#OptionContext#add_option for (self: OptionContext, Array[Option]) */
1636 void opts__OptionContext__add_option(val* self, val* p0) {
1637 val* var_opts /* var opts: Array[Option] */;
1638 val* var /* : Array[Option] */;
1639 val* var2 /* : Array[Option] */;
1640 var_opts = p0;
1641 {
1642 { /* Inline opts#OptionContext#options (self) on <self:OptionContext> */
1643 var2 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
1644 if (unlikely(var2 == NULL)) {
1645 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
1646 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 243);
1647 show_backtrace(1);
1648 }
1649 var = var2;
1650 RET_LABEL1:(void)0;
1651 }
1652 }
1653 {
1654 abstract_collection__SimpleCollection__add_all(var, var_opts); /* Direct call abstract_collection#SimpleCollection#add_all on <var:Array[Option]>*/
1655 }
1656 RET_LABEL:;
1657 }
1658 /* method opts#OptionContext#add_option for (self: Object, Array[Option]) */
1659 void VIRTUAL_opts__OptionContext__add_option(val* self, val* p0) {
1660 opts__OptionContext__add_option(self, p0); /* Direct call opts#OptionContext#add_option on <self:Object(OptionContext)>*/
1661 RET_LABEL:;
1662 }
1663 /* method opts#OptionContext#usage for (self: OptionContext) */
1664 void opts__OptionContext__usage(val* self) {
1665 long var /* : Int */;
1666 long var_lmax /* var lmax: Int */;
1667 val* var1 /* : Array[Option] */;
1668 val* var3 /* : Array[Option] */;
1669 val* var_ /* var : Array[Option] */;
1670 val* var4 /* : ArrayIterator[nullable Object] */;
1671 val* var_5 /* var : ArrayIterator[Option] */;
1672 short int var6 /* : Bool */;
1673 val* var7 /* : nullable Object */;
1674 val* var_i /* var i: Option */;
1675 long var8 /* : Int */;
1676 long var_l /* var l: Int */;
1677 val* var9 /* : Array[String] */;
1678 val* var11 /* : Array[String] */;
1679 val* var_12 /* var : Array[String] */;
1680 val* var13 /* : ArrayIterator[nullable Object] */;
1681 val* var_14 /* var : ArrayIterator[String] */;
1682 short int var15 /* : Bool */;
1683 val* var16 /* : nullable Object */;
1684 val* var_n /* var n: String */;
1685 long var17 /* : Int */;
1686 long var19 /* : Int */;
1687 long var20 /* : Int */;
1688 long var21 /* : Int */;
1689 short int var23 /* : Bool */;
1690 int cltype;
1691 int idtype;
1692 const char* var_class_name;
1693 long var24 /* : Int */;
1694 long var25 /* : Int */;
1695 short int var27 /* : Bool */;
1696 int cltype28;
1697 int idtype29;
1698 const char* var_class_name30;
1699 long var31 /* : Int */;
1700 short int var33 /* : Bool */;
1701 short int var35 /* : Bool */;
1702 int cltype36;
1703 int idtype37;
1704 const char* var_class_name38;
1705 short int var39 /* : Bool */;
1706 val* var42 /* : Array[Option] */;
1707 val* var44 /* : Array[Option] */;
1708 val* var_45 /* var : Array[Option] */;
1709 val* var46 /* : ArrayIterator[nullable Object] */;
1710 val* var_47 /* var : ArrayIterator[Option] */;
1711 short int var48 /* : Bool */;
1712 val* var49 /* : nullable Object */;
1713 val* var_i50 /* var i: Option */;
1714 short int var51 /* : Bool */;
1715 short int var53 /* : Bool */;
1716 short int var54 /* : Bool */;
1717 val* var55 /* : String */;
1718 var = 1;
1719 var_lmax = var;
1720 {
1721 { /* Inline opts#OptionContext#options (self) on <self:OptionContext> */
1722 var3 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
1723 if (unlikely(var3 == NULL)) {
1724 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
1725 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 243);
1726 show_backtrace(1);
1727 }
1728 var1 = var3;
1729 RET_LABEL2:(void)0;
1730 }
1731 }
1732 var_ = var1;
1733 {
1734 var4 = array__AbstractArrayRead__iterator(var_);
1735 }
1736 var_5 = var4;
1737 for(;;) {
1738 {
1739 var6 = array__ArrayIterator__is_ok(var_5);
1740 }
1741 if (var6){
1742 {
1743 var7 = array__ArrayIterator__item(var_5);
1744 }
1745 var_i = var7;
1746 var8 = 3;
1747 var_l = var8;
1748 {
1749 { /* Inline opts#Option#names (var_i) on <var_i:Option> */
1750 var11 = var_i->attrs[COLOR_opts__Option___names].val; /* _names on <var_i:Option> */
1751 if (unlikely(var11 == NULL)) {
1752 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
1753 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 19);
1754 show_backtrace(1);
1755 }
1756 var9 = var11;
1757 RET_LABEL10:(void)0;
1758 }
1759 }
1760 var_12 = var9;
1761 {
1762 var13 = array__AbstractArrayRead__iterator(var_12);
1763 }
1764 var_14 = var13;
1765 for(;;) {
1766 {
1767 var15 = array__ArrayIterator__is_ok(var_14);
1768 }
1769 if (var15){
1770 {
1771 var16 = array__ArrayIterator__item(var_14);
1772 }
1773 var_n = var16;
1774 {
1775 { /* Inline string#FlatText#length (var_n) on <var_n:String> */
1776 var19 = var_n->attrs[COLOR_string__FlatText___length].l; /* _length on <var_n:String> */
1777 var17 = var19;
1778 RET_LABEL18:(void)0;
1779 }
1780 }
1781 var20 = 2;
1782 {
1783 { /* Inline kernel#Int#+ (var17,var20) on <var17:Int> */
1784 /* Covariant cast for argument 0 (i) <var20:Int> isa OTHER */
1785 /* <var20:Int> isa OTHER */
1786 var23 = 1; /* easy <var20:Int> isa OTHER*/
1787 if (unlikely(!var23)) {
1788 var_class_name = type_kernel__Int.name;
1789 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1790 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
1791 show_backtrace(1);
1792 }
1793 var24 = var17 + var20;
1794 var21 = var24;
1795 goto RET_LABEL22;
1796 RET_LABEL22:(void)0;
1797 }
1798 }
1799 {
1800 { /* Inline kernel#Int#+ (var_l,var21) on <var_l:Int> */
1801 /* Covariant cast for argument 0 (i) <var21:Int> isa OTHER */
1802 /* <var21:Int> isa OTHER */
1803 var27 = 1; /* easy <var21:Int> isa OTHER*/
1804 if (unlikely(!var27)) {
1805 var_class_name30 = type_kernel__Int.name;
1806 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name30);
1807 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
1808 show_backtrace(1);
1809 }
1810 var31 = var_l + var21;
1811 var25 = var31;
1812 goto RET_LABEL26;
1813 RET_LABEL26:(void)0;
1814 }
1815 }
1816 var_l = var25;
1817 {
1818 array__ArrayIterator__next(var_14); /* Direct call array#ArrayIterator#next on <var_14:ArrayIterator[String]>*/
1819 }
1820 } else {
1821 goto BREAK_label;
1822 }
1823 }
1824 BREAK_label: (void)0;
1825 {
1826 { /* Inline abstract_collection#Iterator#finish (var_14) on <var_14:ArrayIterator[String]> */
1827 RET_LABEL32:(void)0;
1828 }
1829 }
1830 {
1831 { /* Inline kernel#Int#< (var_lmax,var_l) on <var_lmax:Int> */
1832 /* Covariant cast for argument 0 (i) <var_l:Int> isa OTHER */
1833 /* <var_l:Int> isa OTHER */
1834 var35 = 1; /* easy <var_l:Int> isa OTHER*/
1835 if (unlikely(!var35)) {
1836 var_class_name38 = type_kernel__Int.name;
1837 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name38);
1838 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
1839 show_backtrace(1);
1840 }
1841 var39 = var_lmax < var_l;
1842 var33 = var39;
1843 goto RET_LABEL34;
1844 RET_LABEL34:(void)0;
1845 }
1846 }
1847 if (var33){
1848 var_lmax = var_l;
1849 } else {
1850 }
1851 {
1852 array__ArrayIterator__next(var_5); /* Direct call array#ArrayIterator#next on <var_5:ArrayIterator[Option]>*/
1853 }
1854 } else {
1855 goto BREAK_label40;
1856 }
1857 }
1858 BREAK_label40: (void)0;
1859 {
1860 { /* Inline abstract_collection#Iterator#finish (var_5) on <var_5:ArrayIterator[Option]> */
1861 RET_LABEL41:(void)0;
1862 }
1863 }
1864 {
1865 { /* Inline opts#OptionContext#options (self) on <self:OptionContext> */
1866 var44 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
1867 if (unlikely(var44 == NULL)) {
1868 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
1869 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 243);
1870 show_backtrace(1);
1871 }
1872 var42 = var44;
1873 RET_LABEL43:(void)0;
1874 }
1875 }
1876 var_45 = var42;
1877 {
1878 var46 = array__AbstractArrayRead__iterator(var_45);
1879 }
1880 var_47 = var46;
1881 for(;;) {
1882 {
1883 var48 = array__ArrayIterator__is_ok(var_47);
1884 }
1885 if (var48){
1886 {
1887 var49 = array__ArrayIterator__item(var_47);
1888 }
1889 var_i50 = var49;
1890 {
1891 { /* Inline opts#Option#hidden (var_i50) on <var_i50:Option> */
1892 var53 = var_i50->attrs[COLOR_opts__Option___hidden].s; /* _hidden on <var_i50:Option> */
1893 var51 = var53;
1894 RET_LABEL52:(void)0;
1895 }
1896 }
1897 var54 = !var51;
1898 if (var54){
1899 {
1900 var55 = opts__Option__pretty(var_i50, var_lmax);
1901 }
1902 {
1903 file__Object__print(self, var55); /* Direct call file#Object#print on <self:OptionContext>*/
1904 }
1905 } else {
1906 }
1907 {
1908 array__ArrayIterator__next(var_47); /* Direct call array#ArrayIterator#next on <var_47:ArrayIterator[Option]>*/
1909 }
1910 } else {
1911 goto BREAK_label56;
1912 }
1913 }
1914 BREAK_label56: (void)0;
1915 {
1916 { /* Inline abstract_collection#Iterator#finish (var_47) on <var_47:ArrayIterator[Option]> */
1917 RET_LABEL57:(void)0;
1918 }
1919 }
1920 RET_LABEL:;
1921 }
1922 /* method opts#OptionContext#usage for (self: Object) */
1923 void VIRTUAL_opts__OptionContext__usage(val* self) {
1924 opts__OptionContext__usage(self); /* Direct call opts#OptionContext#usage on <self:Object(OptionContext)>*/
1925 RET_LABEL:;
1926 }
1927 /* method opts#OptionContext#parse for (self: OptionContext, Collection[String]) */
1928 void opts__OptionContext__parse(val* self, val* p0) {
1929 val* var_argv /* var argv: Collection[String] */;
1930 val* var /* : Iterator[nullable Object] */;
1931 val* var_it /* var it: Iterator[String] */;
1932 var_argv = p0;
1933 {
1934 var = ((val* (*)(val*))(var_argv->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_argv) /* iterator on <var_argv:Collection[String]>*/;
1935 }
1936 var_it = var;
1937 {
1938 opts__OptionContext__parse_intern(self, var_it); /* Direct call opts#OptionContext#parse_intern on <self:OptionContext>*/
1939 }
1940 RET_LABEL:;
1941 }
1942 /* method opts#OptionContext#parse for (self: Object, Collection[String]) */
1943 void VIRTUAL_opts__OptionContext__parse(val* self, val* p0) {
1944 opts__OptionContext__parse(self, p0); /* Direct call opts#OptionContext#parse on <self:Object(OptionContext)>*/
1945 RET_LABEL:;
1946 }
1947 /* method opts#OptionContext#parse_intern for (self: OptionContext, Iterator[String]) */
1948 void opts__OptionContext__parse_intern(val* self, val* p0) {
1949 val* var_it /* var it: Iterator[String] */;
1950 short int var /* : Bool */;
1951 short int var_parseargs /* var parseargs: Bool */;
1952 val* var1 /* : Array[String] */;
1953 val* var3 /* : Array[String] */;
1954 val* var_rest /* var rest: Array[String] */;
1955 short int var4 /* : Bool */;
1956 short int var_ /* var : Bool */;
1957 short int var5 /* : Bool */;
1958 val* var6 /* : nullable Object */;
1959 val* var_str /* var str: String */;
1960 static val* varonce;
1961 val* var7 /* : String */;
1962 char* var8 /* : NativeString */;
1963 long var9 /* : Int */;
1964 val* var10 /* : FlatString */;
1965 short int var11 /* : Bool */;
1966 short int var12 /* : Bool */;
1967 val* var13 /* : Array[nullable Object] */;
1968 short int var14 /* : Bool */;
1969 short int var15 /* : Bool */;
1970 val* var16 /* : SequenceRead[Char] */;
1971 val* var18 /* : SequenceRead[Char] */;
1972 char var19 /* : Char */;
1973 long var20 /* : Int */;
1974 val* var21 /* : nullable Object */;
1975 long var22 /* : Int */;
1976 short int var23 /* : Bool */;
1977 short int var24 /* : Bool */;
1978 short int var26 /* : Bool */;
1979 short int var_27 /* var : Bool */;
1980 long var28 /* : Int */;
1981 long var30 /* : Int */;
1982 long var31 /* : Int */;
1983 short int var32 /* : Bool */;
1984 short int var34 /* : Bool */;
1985 int cltype;
1986 int idtype;
1987 const char* var_class_name;
1988 short int var35 /* : Bool */;
1989 short int var36 /* : Bool */;
1990 short int var_next_called /* var next_called: Bool */;
1991 long var37 /* : Int */;
1992 long var_i /* var i: Int */;
1993 long var38 /* : Int */;
1994 long var40 /* : Int */;
1995 long var_41 /* var : Int */;
1996 short int var42 /* : Bool */;
1997 short int var44 /* : Bool */;
1998 int cltype45;
1999 int idtype46;
2000 const char* var_class_name47;
2001 short int var48 /* : Bool */;
2002 static val* varonce49;
2003 val* var50 /* : String */;
2004 char* var51 /* : NativeString */;
2005 long var52 /* : Int */;
2006 val* var53 /* : FlatString */;
2007 val* var54 /* : SequenceRead[Char] */;
2008 val* var56 /* : SequenceRead[Char] */;
2009 val* var57 /* : nullable Object */;
2010 val* var58 /* : String */;
2011 char var59 /* : Char */;
2012 val* var60 /* : String */;
2013 val* var_short_opt /* var short_opt: String */;
2014 val* var61 /* : HashMap[String, Option] */;
2015 val* var63 /* : HashMap[String, Option] */;
2016 short int var64 /* : Bool */;
2017 val* var65 /* : HashMap[String, Option] */;
2018 val* var67 /* : HashMap[String, Option] */;
2019 val* var68 /* : nullable Object */;
2020 val* var_option /* var option: Option */;
2021 short int var69 /* : Bool */;
2022 int cltype70;
2023 int idtype71;
2024 short int var72 /* : Bool */;
2025 long var73 /* : Int */;
2026 long var74 /* : Int */;
2027 short int var75 /* : Bool */;
2028 val* var76 /* : HashMap[String, Option] */;
2029 val* var78 /* : HashMap[String, Option] */;
2030 short int var79 /* : Bool */;
2031 val* var80 /* : HashMap[String, Option] */;
2032 val* var82 /* : HashMap[String, Option] */;
2033 val* var83 /* : nullable Object */;
2034 val* var_opt /* var opt: Option */;
2035 val* var84 /* : nullable Object */;
2036 val* var86 /* : Array[Option] */;
2037 val* var88 /* : Array[Option] */;
2038 val* var_89 /* var : Array[Option] */;
2039 val* var90 /* : ArrayIterator[nullable Object] */;
2040 val* var_91 /* var : ArrayIterator[Option] */;
2041 short int var92 /* : Bool */;
2042 val* var93 /* : nullable Object */;
2043 val* var_opt94 /* var opt: Option */;
2044 short int var95 /* : Bool */;
2045 short int var96 /* : Bool */;
2046 short int var98 /* : Bool */;
2047 short int var_99 /* var : Bool */;
2048 short int var100 /* : Bool */;
2049 short int var102 /* : Bool */;
2050 short int var103 /* : Bool */;
2051 val* var104 /* : Array[String] */;
2052 val* var106 /* : Array[String] */;
2053 static val* varonce107;
2054 val* var108 /* : String */;
2055 char* var109 /* : NativeString */;
2056 long var110 /* : Int */;
2057 val* var111 /* : FlatString */;
2058 val* var112 /* : Array[String] */;
2059 val* var114 /* : Array[String] */;
2060 static val* varonce115;
2061 val* var116 /* : String */;
2062 char* var117 /* : NativeString */;
2063 long var118 /* : Int */;
2064 val* var119 /* : FlatString */;
2065 val* var120 /* : String */;
2066 static val* varonce121;
2067 val* var122 /* : String */;
2068 char* var123 /* : NativeString */;
2069 long var124 /* : Int */;
2070 val* var125 /* : FlatString */;
2071 val* var126 /* : Array[Object] */;
2072 long var127 /* : Int */;
2073 val* var128 /* : NativeArray[Object] */;
2074 val* var129 /* : String */;
2075 var_it = p0;
2076 var = 1;
2077 var_parseargs = var;
2078 {
2079 opts__OptionContext__build(self); /* Direct call opts#OptionContext#build on <self:OptionContext>*/
2080 }
2081 {
2082 { /* Inline opts#OptionContext#rest (self) on <self:OptionContext> */
2083 var3 = self->attrs[COLOR_opts__OptionContext___rest].val; /* _rest on <self:OptionContext> */
2084 if (unlikely(var3 == NULL)) {
2085 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _rest");
2086 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 246);
2087 show_backtrace(1);
2088 }
2089 var1 = var3;
2090 RET_LABEL2:(void)0;
2091 }
2092 }
2093 var_rest = var1;
2094 for(;;) {
2095 var_ = var_parseargs;
2096 if (var_parseargs){
2097 {
2098 var5 = ((short int (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_it) /* is_ok on <var_it:Iterator[String]>*/;
2099 }
2100 var4 = var5;
2101 } else {
2102 var4 = var_;
2103 }
2104 if (var4){
2105 {
2106 var6 = ((val* (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__item]))(var_it) /* item on <var_it:Iterator[String]>*/;
2107 }
2108 var_str = var6;
2109 if (varonce) {
2110 var7 = varonce;
2111 } else {
2112 var8 = "--";
2113 var9 = 2;
2114 var10 = string__NativeString__to_s_with_length(var8, var9);
2115 var7 = var10;
2116 varonce = var7;
2117 }
2118 {
2119 var12 = string__FlatString___61d_61d(var_str, var7);
2120 var11 = var12;
2121 }
2122 if (var11){
2123 {
2124 ((void (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__next]))(var_it) /* next on <var_it:Iterator[String]>*/;
2125 }
2126 {
2127 var13 = array__Iterator__to_a(var_it);
2128 }
2129 {
2130 abstract_collection__SimpleCollection__add_all(var_rest, var13); /* Direct call abstract_collection#SimpleCollection#add_all on <var_rest:Array[String]>*/
2131 }
2132 var14 = 0;
2133 var_parseargs = var14;
2134 } else {
2135 {
2136 { /* Inline string#FlatString#chars (var_str) on <var_str:String> */
2137 var18 = var_str->attrs[COLOR_string__FlatString___chars].val; /* _chars on <var_str:String> */
2138 if (unlikely(var18 == NULL)) {
2139 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _chars");
2140 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/string.nit", 939);
2141 show_backtrace(1);
2142 }
2143 var16 = var18;
2144 RET_LABEL17:(void)0;
2145 }
2146 }
2147 var19 = '-';
2148 {
2149 var21 = BOX_kernel__Char(var19); /* autobox from Char to nullable Object */
2150 var20 = ((long (*)(val*, val*))(var16->class->vft[COLOR_abstract_collection__SequenceRead__last_index_of]))(var16, var21) /* last_index_of on <var16:SequenceRead[Char]>*/;
2151 }
2152 var22 = 0;
2153 {
2154 { /* Inline kernel#Int#== (var20,var22) on <var20:Int> */
2155 var26 = var20 == var22;
2156 var24 = var26;
2157 goto RET_LABEL25;
2158 RET_LABEL25:(void)0;
2159 }
2160 var23 = var24;
2161 }
2162 var_27 = var23;
2163 if (var23){
2164 {
2165 { /* Inline string#FlatText#length (var_str) on <var_str:String> */
2166 var30 = var_str->attrs[COLOR_string__FlatText___length].l; /* _length on <var_str:String> */
2167 var28 = var30;
2168 RET_LABEL29:(void)0;
2169 }
2170 }
2171 var31 = 2;
2172 {
2173 { /* Inline kernel#Int#> (var28,var31) on <var28:Int> */
2174 /* Covariant cast for argument 0 (i) <var31:Int> isa OTHER */
2175 /* <var31:Int> isa OTHER */
2176 var34 = 1; /* easy <var31:Int> isa OTHER*/
2177 if (unlikely(!var34)) {
2178 var_class_name = type_kernel__Int.name;
2179 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2180 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
2181 show_backtrace(1);
2182 }
2183 var35 = var28 > var31;
2184 var32 = var35;
2185 goto RET_LABEL33;
2186 RET_LABEL33:(void)0;
2187 }
2188 }
2189 var15 = var32;
2190 } else {
2191 var15 = var_27;
2192 }
2193 if (var15){
2194 var36 = 0;
2195 var_next_called = var36;
2196 var37 = 1;
2197 var_i = var37;
2198 {
2199 { /* Inline string#FlatText#length (var_str) on <var_str:String> */
2200 var40 = var_str->attrs[COLOR_string__FlatText___length].l; /* _length on <var_str:String> */
2201 var38 = var40;
2202 RET_LABEL39:(void)0;
2203 }
2204 }
2205 var_41 = var38;
2206 for(;;) {
2207 {
2208 { /* Inline kernel#Int#< (var_i,var_41) on <var_i:Int> */
2209 /* Covariant cast for argument 0 (i) <var_41:Int> isa OTHER */
2210 /* <var_41:Int> isa OTHER */
2211 var44 = 1; /* easy <var_41:Int> isa OTHER*/
2212 if (unlikely(!var44)) {
2213 var_class_name47 = type_kernel__Int.name;
2214 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name47);
2215 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
2216 show_backtrace(1);
2217 }
2218 var48 = var_i < var_41;
2219 var42 = var48;
2220 goto RET_LABEL43;
2221 RET_LABEL43:(void)0;
2222 }
2223 }
2224 if (var42){
2225 if (varonce49) {
2226 var50 = varonce49;
2227 } else {
2228 var51 = "-";
2229 var52 = 1;
2230 var53 = string__NativeString__to_s_with_length(var51, var52);
2231 var50 = var53;
2232 varonce49 = var50;
2233 }
2234 {
2235 { /* Inline string#FlatString#chars (var_str) on <var_str:String> */
2236 var56 = var_str->attrs[COLOR_string__FlatString___chars].val; /* _chars on <var_str:String> */
2237 if (unlikely(var56 == NULL)) {
2238 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _chars");
2239 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/string.nit", 939);
2240 show_backtrace(1);
2241 }
2242 var54 = var56;
2243 RET_LABEL55:(void)0;
2244 }
2245 }
2246 {
2247 var57 = ((val* (*)(val*, long))(var54->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var54, var_i) /* [] on <var54:SequenceRead[Char]>*/;
2248 }
2249 {
2250 var59 = ((struct instance_kernel__Char*)var57)->value; /* autounbox from nullable Object to Char */;
2251 var58 = string__Char__to_s(var59);
2252 }
2253 {
2254 var60 = string__FlatString___43d(var50, var58);
2255 }
2256 var_short_opt = var60;
2257 {
2258 { /* Inline opts#OptionContext#optmap (self) on <self:OptionContext> */
2259 var63 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
2260 if (unlikely(var63 == NULL)) {
2261 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap");
2262 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 252);
2263 show_backtrace(1);
2264 }
2265 var61 = var63;
2266 RET_LABEL62:(void)0;
2267 }
2268 }
2269 {
2270 var64 = abstract_collection__MapRead__has_key(var61, var_short_opt);
2271 }
2272 if (var64){
2273 {
2274 { /* Inline opts#OptionContext#optmap (self) on <self:OptionContext> */
2275 var67 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
2276 if (unlikely(var67 == NULL)) {
2277 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap");
2278 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 252);
2279 show_backtrace(1);
2280 }
2281 var65 = var67;
2282 RET_LABEL66:(void)0;
2283 }
2284 }
2285 {
2286 var68 = hash_collection__HashMap___91d_93d(var65, var_short_opt);
2287 }
2288 var_option = var68;
2289 /* <var_option:Option> isa OptionParameter */
2290 cltype70 = type_opts__OptionParameter.color;
2291 idtype71 = type_opts__OptionParameter.id;
2292 if(cltype70 >= var_option->type->table_size) {
2293 var69 = 0;
2294 } else {
2295 var69 = var_option->type->type_table[cltype70] == idtype71;
2296 }
2297 if (var69){
2298 {
2299 ((void (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__next]))(var_it) /* next on <var_it:Iterator[String]>*/;
2300 }
2301 var72 = 1;
2302 var_next_called = var72;
2303 } else {
2304 }
2305 {
2306 ((void (*)(val*, val*))(var_option->class->vft[COLOR_opts__Option__read_param]))(var_option, var_it) /* read_param on <var_option:Option>*/;
2307 }
2308 } else {
2309 }
2310 var73 = 1;
2311 {
2312 var74 = kernel__Int__successor(var_i, var73);
2313 }
2314 var_i = var74;
2315 } else {
2316 goto BREAK_label;
2317 }
2318 }
2319 BREAK_label: (void)0;
2320 var75 = !var_next_called;
2321 if (var75){
2322 {
2323 ((void (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__next]))(var_it) /* next on <var_it:Iterator[String]>*/;
2324 }
2325 } else {
2326 }
2327 } else {
2328 {
2329 { /* Inline opts#OptionContext#optmap (self) on <self:OptionContext> */
2330 var78 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
2331 if (unlikely(var78 == NULL)) {
2332 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap");
2333 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 252);
2334 show_backtrace(1);
2335 }
2336 var76 = var78;
2337 RET_LABEL77:(void)0;
2338 }
2339 }
2340 {
2341 var79 = abstract_collection__MapRead__has_key(var76, var_str);
2342 }
2343 if (var79){
2344 {
2345 { /* Inline opts#OptionContext#optmap (self) on <self:OptionContext> */
2346 var82 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
2347 if (unlikely(var82 == NULL)) {
2348 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap");
2349 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 252);
2350 show_backtrace(1);
2351 }
2352 var80 = var82;
2353 RET_LABEL81:(void)0;
2354 }
2355 }
2356 {
2357 var83 = hash_collection__HashMap___91d_93d(var80, var_str);
2358 }
2359 var_opt = var83;
2360 {
2361 ((void (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__next]))(var_it) /* next on <var_it:Iterator[String]>*/;
2362 }
2363 {
2364 ((void (*)(val*, val*))(var_opt->class->vft[COLOR_opts__Option__read_param]))(var_opt, var_it) /* read_param on <var_opt:Option>*/;
2365 }
2366 } else {
2367 {
2368 var84 = ((val* (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__item]))(var_it) /* item on <var_it:Iterator[String]>*/;
2369 }
2370 {
2371 array__Array__add(var_rest, var84); /* Direct call array#Array#add on <var_rest:Array[String]>*/
2372 }
2373 {
2374 ((void (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__next]))(var_it) /* next on <var_it:Iterator[String]>*/;
2375 }
2376 }
2377 }
2378 }
2379 } else {
2380 goto BREAK_label85;
2381 }
2382 }
2383 BREAK_label85: (void)0;
2384 {
2385 { /* Inline opts#OptionContext#options (self) on <self:OptionContext> */
2386 var88 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
2387 if (unlikely(var88 == NULL)) {
2388 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
2389 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 243);
2390 show_backtrace(1);
2391 }
2392 var86 = var88;
2393 RET_LABEL87:(void)0;
2394 }
2395 }
2396 var_89 = var86;
2397 {
2398 var90 = array__AbstractArrayRead__iterator(var_89);
2399 }
2400 var_91 = var90;
2401 for(;;) {
2402 {
2403 var92 = array__ArrayIterator__is_ok(var_91);
2404 }
2405 if (var92){
2406 {
2407 var93 = array__ArrayIterator__item(var_91);
2408 }
2409 var_opt94 = var93;
2410 {
2411 { /* Inline opts#Option#mandatory (var_opt94) on <var_opt94:Option> */
2412 var98 = var_opt94->attrs[COLOR_opts__Option___mandatory].s; /* _mandatory on <var_opt94:Option> */
2413 var96 = var98;
2414 RET_LABEL97:(void)0;
2415 }
2416 }
2417 var_99 = var96;
2418 if (var96){
2419 {
2420 { /* Inline opts#Option#read (var_opt94) on <var_opt94:Option> */
2421 var102 = var_opt94->attrs[COLOR_opts__Option___read].s; /* _read on <var_opt94:Option> */
2422 var100 = var102;
2423 RET_LABEL101:(void)0;
2424 }
2425 }
2426 var103 = !var100;
2427 var95 = var103;
2428 } else {
2429 var95 = var_99;
2430 }
2431 if (var95){
2432 {
2433 { /* Inline opts#OptionContext#errors (self) on <self:OptionContext> */
2434 var106 = self->attrs[COLOR_opts__OptionContext___errors].val; /* _errors on <self:OptionContext> */
2435 if (unlikely(var106 == NULL)) {
2436 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _errors");
2437 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 249);
2438 show_backtrace(1);
2439 }
2440 var104 = var106;
2441 RET_LABEL105:(void)0;
2442 }
2443 }
2444 if (varonce107) {
2445 var108 = varonce107;
2446 } else {
2447 var109 = "Mandatory option ";
2448 var110 = 17;
2449 var111 = string__NativeString__to_s_with_length(var109, var110);
2450 var108 = var111;
2451 varonce107 = var108;
2452 }
2453 {
2454 { /* Inline opts#Option#names (var_opt94) on <var_opt94:Option> */
2455 var114 = var_opt94->attrs[COLOR_opts__Option___names].val; /* _names on <var_opt94:Option> */
2456 if (unlikely(var114 == NULL)) {
2457 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
2458 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 19);
2459 show_backtrace(1);
2460 }
2461 var112 = var114;
2462 RET_LABEL113:(void)0;
2463 }
2464 }
2465 if (varonce115) {
2466 var116 = varonce115;
2467 } else {
2468 var117 = ", ";
2469 var118 = 2;
2470 var119 = string__NativeString__to_s_with_length(var117, var118);
2471 var116 = var119;
2472 varonce115 = var116;
2473 }
2474 {
2475 var120 = string__Collection__join(var112, var116);
2476 }
2477 if (varonce121) {
2478 var122 = varonce121;
2479 } else {
2480 var123 = " not found.";
2481 var124 = 11;
2482 var125 = string__NativeString__to_s_with_length(var123, var124);
2483 var122 = var125;
2484 varonce121 = var122;
2485 }
2486 var126 = NEW_array__Array(&type_array__Arraykernel__Object);
2487 { /* var126 = array_instance Array[Object] */
2488 var127 = 3;
2489 var128 = NEW_array__NativeArray(var127, &type_array__NativeArraykernel__Object);
2490 ((struct instance_array__NativeArray*)var128)->values[0] = (val*) var108;
2491 ((struct instance_array__NativeArray*)var128)->values[1] = (val*) var120;
2492 ((struct instance_array__NativeArray*)var128)->values[2] = (val*) var122;
2493 {
2494 ((void (*)(val*, val*, long))(var126->class->vft[COLOR_array__Array__with_native]))(var126, var128, var127) /* with_native on <var126:Array[Object]>*/;
2495 }
2496 }
2497 {
2498 var129 = ((val* (*)(val*))(var126->class->vft[COLOR_string__Object__to_s]))(var126) /* to_s on <var126:Array[Object]>*/;
2499 }
2500 {
2501 array__Array__add(var104, var129); /* Direct call array#Array#add on <var104:Array[String]>*/
2502 }
2503 } else {
2504 }
2505 {
2506 array__ArrayIterator__next(var_91); /* Direct call array#ArrayIterator#next on <var_91:ArrayIterator[Option]>*/
2507 }
2508 } else {
2509 goto BREAK_label130;
2510 }
2511 }
2512 BREAK_label130: (void)0;
2513 {
2514 { /* Inline abstract_collection#Iterator#finish (var_91) on <var_91:ArrayIterator[Option]> */
2515 RET_LABEL131:(void)0;
2516 }
2517 }
2518 RET_LABEL:;
2519 }
2520 /* method opts#OptionContext#parse_intern for (self: Object, Iterator[String]) */
2521 void VIRTUAL_opts__OptionContext__parse_intern(val* self, val* p0) {
2522 opts__OptionContext__parse_intern(self, p0); /* Direct call opts#OptionContext#parse_intern on <self:Object(OptionContext)>*/
2523 RET_LABEL:;
2524 }
2525 /* method opts#OptionContext#build for (self: OptionContext) */
2526 void opts__OptionContext__build(val* self) {
2527 val* var /* : Array[Option] */;
2528 val* var2 /* : Array[Option] */;
2529 val* var_ /* var : Array[Option] */;
2530 val* var3 /* : ArrayIterator[nullable Object] */;
2531 val* var_4 /* var : ArrayIterator[Option] */;
2532 short int var5 /* : Bool */;
2533 val* var6 /* : nullable Object */;
2534 val* var_o /* var o: Option */;
2535 val* var7 /* : Array[String] */;
2536 val* var9 /* : Array[String] */;
2537 val* var_10 /* var : Array[String] */;
2538 val* var11 /* : ArrayIterator[nullable Object] */;
2539 val* var_12 /* var : ArrayIterator[String] */;
2540 short int var13 /* : Bool */;
2541 val* var14 /* : nullable Object */;
2542 val* var_n /* var n: String */;
2543 val* var15 /* : HashMap[String, Option] */;
2544 val* var17 /* : HashMap[String, Option] */;
2545 {
2546 { /* Inline opts#OptionContext#options (self) on <self:OptionContext> */
2547 var2 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
2548 if (unlikely(var2 == NULL)) {
2549 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
2550 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 243);
2551 show_backtrace(1);
2552 }
2553 var = var2;
2554 RET_LABEL1:(void)0;
2555 }
2556 }
2557 var_ = var;
2558 {
2559 var3 = array__AbstractArrayRead__iterator(var_);
2560 }
2561 var_4 = var3;
2562 for(;;) {
2563 {
2564 var5 = array__ArrayIterator__is_ok(var_4);
2565 }
2566 if (var5){
2567 {
2568 var6 = array__ArrayIterator__item(var_4);
2569 }
2570 var_o = var6;
2571 {
2572 { /* Inline opts#Option#names (var_o) on <var_o:Option> */
2573 var9 = var_o->attrs[COLOR_opts__Option___names].val; /* _names on <var_o:Option> */
2574 if (unlikely(var9 == NULL)) {
2575 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
2576 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 19);
2577 show_backtrace(1);
2578 }
2579 var7 = var9;
2580 RET_LABEL8:(void)0;
2581 }
2582 }
2583 var_10 = var7;
2584 {
2585 var11 = array__AbstractArrayRead__iterator(var_10);
2586 }
2587 var_12 = var11;
2588 for(;;) {
2589 {
2590 var13 = array__ArrayIterator__is_ok(var_12);
2591 }
2592 if (var13){
2593 {
2594 var14 = array__ArrayIterator__item(var_12);
2595 }
2596 var_n = var14;
2597 {
2598 { /* Inline opts#OptionContext#optmap (self) on <self:OptionContext> */
2599 var17 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
2600 if (unlikely(var17 == NULL)) {
2601 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap");
2602 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 252);
2603 show_backtrace(1);
2604 }
2605 var15 = var17;
2606 RET_LABEL16:(void)0;
2607 }
2608 }
2609 {
2610 hash_collection__HashMap___91d_93d_61d(var15, var_n, var_o); /* Direct call hash_collection#HashMap#[]= on <var15:HashMap[String, Option]>*/
2611 }
2612 {
2613 array__ArrayIterator__next(var_12); /* Direct call array#ArrayIterator#next on <var_12:ArrayIterator[String]>*/
2614 }
2615 } else {
2616 goto BREAK_label;
2617 }
2618 }
2619 BREAK_label: (void)0;
2620 {
2621 { /* Inline abstract_collection#Iterator#finish (var_12) on <var_12:ArrayIterator[String]> */
2622 RET_LABEL18:(void)0;
2623 }
2624 }
2625 {
2626 array__ArrayIterator__next(var_4); /* Direct call array#ArrayIterator#next on <var_4:ArrayIterator[Option]>*/
2627 }
2628 } else {
2629 goto BREAK_label19;
2630 }
2631 }
2632 BREAK_label19: (void)0;
2633 {
2634 { /* Inline abstract_collection#Iterator#finish (var_4) on <var_4:ArrayIterator[Option]> */
2635 RET_LABEL20:(void)0;
2636 }
2637 }
2638 RET_LABEL:;
2639 }
2640 /* method opts#OptionContext#build for (self: Object) */
2641 void VIRTUAL_opts__OptionContext__build(val* self) {
2642 opts__OptionContext__build(self); /* Direct call opts#OptionContext#build on <self:Object(OptionContext)>*/
2643 RET_LABEL:;
2644 }
2645 /* method opts#OptionContext#get_errors for (self: OptionContext): Array[String] */
2646 val* opts__OptionContext__get_errors(val* self) {
2647 val* var /* : Array[String] */;
2648 val* var1 /* : Array[String] */;
2649 val* var_errors /* var errors: Array[String] */;
2650 val* var2 /* : Array[Option] */;
2651 val* var4 /* : Array[Option] */;
2652 val* var_ /* var : Array[Option] */;
2653 val* var5 /* : ArrayIterator[nullable Object] */;
2654 val* var_6 /* var : ArrayIterator[Option] */;
2655 short int var7 /* : Bool */;
2656 val* var8 /* : nullable Object */;
2657 val* var_o /* var o: Option */;
2658 val* var9 /* : Array[String] */;
2659 val* var11 /* : Array[String] */;
2660 val* var_12 /* var : Array[String] */;
2661 val* var13 /* : ArrayIterator[nullable Object] */;
2662 val* var_14 /* var : ArrayIterator[String] */;
2663 short int var15 /* : Bool */;
2664 val* var16 /* : nullable Object */;
2665 val* var_e /* var e: String */;
2666 var1 = NEW_array__Array(&type_array__Arraystring__String);
2667 {
2668 ((void (*)(val*))(var1->class->vft[COLOR_kernel__Object__init]))(var1) /* init on <var1:Array[String]>*/;
2669 }
2670 var_errors = var1;
2671 {
2672 abstract_collection__SimpleCollection__add_all(var_errors, var_errors); /* Direct call abstract_collection#SimpleCollection#add_all on <var_errors:Array[String]>*/
2673 }
2674 {
2675 { /* Inline opts#OptionContext#options (self) on <self:OptionContext> */
2676 var4 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
2677 if (unlikely(var4 == NULL)) {
2678 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
2679 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 243);
2680 show_backtrace(1);
2681 }
2682 var2 = var4;
2683 RET_LABEL3:(void)0;
2684 }
2685 }
2686 var_ = var2;
2687 {
2688 var5 = array__AbstractArrayRead__iterator(var_);
2689 }
2690 var_6 = var5;
2691 for(;;) {
2692 {
2693 var7 = array__ArrayIterator__is_ok(var_6);
2694 }
2695 if (var7){
2696 {
2697 var8 = array__ArrayIterator__item(var_6);
2698 }
2699 var_o = var8;
2700 {
2701 { /* Inline opts#Option#errors (var_o) on <var_o:Option> */
2702 var11 = var_o->attrs[COLOR_opts__Option___errors].val; /* _errors on <var_o:Option> */
2703 if (unlikely(var11 == NULL)) {
2704 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _errors");
2705 PRINT_ERROR(" (%s:%d)\n", "../lib/opts.nit", 28);
2706 show_backtrace(1);
2707 }
2708 var9 = var11;
2709 RET_LABEL10:(void)0;
2710 }
2711 }
2712 var_12 = var9;
2713 {
2714 var13 = array__AbstractArrayRead__iterator(var_12);
2715 }
2716 var_14 = var13;
2717 for(;;) {
2718 {
2719 var15 = array__ArrayIterator__is_ok(var_14);
2720 }
2721 if (var15){
2722 {
2723 var16 = array__ArrayIterator__item(var_14);
2724 }
2725 var_e = var16;
2726 {
2727 array__Array__add(var_errors, var_e); /* Direct call array#Array#add on <var_errors:Array[String]>*/
2728 }
2729 {
2730 array__ArrayIterator__next(var_14); /* Direct call array#ArrayIterator#next on <var_14:ArrayIterator[String]>*/
2731 }
2732 } else {
2733 goto BREAK_label;
2734 }
2735 }
2736 BREAK_label: (void)0;
2737 {
2738 { /* Inline abstract_collection#Iterator#finish (var_14) on <var_14:ArrayIterator[String]> */
2739 RET_LABEL17:(void)0;
2740 }
2741 }
2742 {
2743 array__ArrayIterator__next(var_6); /* Direct call array#ArrayIterator#next on <var_6:ArrayIterator[Option]>*/
2744 }
2745 } else {
2746 goto BREAK_label18;
2747 }
2748 }
2749 BREAK_label18: (void)0;
2750 {
2751 { /* Inline abstract_collection#Iterator#finish (var_6) on <var_6:ArrayIterator[Option]> */
2752 RET_LABEL19:(void)0;
2753 }
2754 }
2755 var = var_errors;
2756 goto RET_LABEL;
2757 RET_LABEL:;
2758 return var;
2759 }
2760 /* method opts#OptionContext#get_errors for (self: Object): Array[String] */
2761 val* VIRTUAL_opts__OptionContext__get_errors(val* self) {
2762 val* var /* : Array[String] */;
2763 val* var1 /* : Array[String] */;
2764 var1 = opts__OptionContext__get_errors(self);
2765 var = var1;
2766 RET_LABEL:;
2767 return var;
2768 }