c_src: update
[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 = abstract_collection__SequenceRead___61d_61d(var_names, var1);
471 var2 = var3;
472 }
473 if (var2){
474 var4 = NEW_array__Array(&type_array__Arraystring__String);
475 {
476 array__Array__init(var4); /* Direct call array#Array#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", 331);
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", 327);
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", 328);
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", 746);
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#OptionArray#init for (self: OptionArray, String, Array[String]) */
1282 void opts__OptionArray__init(val* self, val* p0, val* p1) {
1283 val* var_help /* var help: String */;
1284 val* var_names /* var names: Array[String] */;
1285 val* var /* : Array[String] */;
1286 val* var2 /* : Array[String] */;
1287 val* var4 /* : Array[String] */;
1288 short int var5 /* : Bool */;
1289 int cltype;
1290 int idtype;
1291 const struct type* type_struct;
1292 const char* var_class_name;
1293 var_help = p0;
1294 var_names = p1;
1295 var = NEW_array__Array(&type_array__Arraystring__String);
1296 {
1297 array__Array__init(var); /* Direct call array#Array#init on <var:Array[String]>*/
1298 }
1299 {
1300 { /* Inline opts#OptionArray#values= (self,var) on <self:OptionArray> */
1301 self->attrs[COLOR_opts__OptionArray___values].val = var; /* _values on <self:OptionArray> */
1302 RET_LABEL1:(void)0;
1303 }
1304 }
1305 {
1306 { /* Inline opts#OptionArray#values (self) on <self:OptionArray> */
1307 var4 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on <self:OptionArray> */
1308 if (unlikely(var4 == NULL)) {
1309 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _values");
1310 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 237);
1311 show_backtrace(1);
1312 }
1313 var2 = var4;
1314 RET_LABEL3:(void)0;
1315 }
1316 }
1317 /* <var2:Array[String]> isa VALUE */
1318 type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
1319 cltype = type_struct->color;
1320 idtype = type_struct->id;
1321 if(cltype >= var2->type->table_size) {
1322 var5 = 0;
1323 } else {
1324 var5 = var2->type->type_table[cltype] == idtype;
1325 }
1326 if (unlikely(!var5)) {
1327 var_class_name = var2 == NULL ? "null" : var2->type->name;
1328 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
1329 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 234);
1330 show_backtrace(1);
1331 }
1332 {
1333 opts__Option__init(self, var_help, var2, var_names); /* Direct call opts#Option#init on <self:OptionArray>*/
1334 }
1335 RET_LABEL:;
1336 }
1337 /* method opts#OptionArray#init for (self: Object, String, Array[String]) */
1338 void VIRTUAL_opts__OptionArray__init(val* self, val* p0, val* p1) {
1339 opts__OptionArray__init(self, p0, p1); /* Direct call opts#OptionArray#init on <self:Object(OptionArray)>*/
1340 RET_LABEL:;
1341 }
1342 /* method opts#OptionArray#values for (self: OptionArray): Array[String] */
1343 val* opts__OptionArray__values(val* self) {
1344 val* var /* : Array[String] */;
1345 val* var1 /* : Array[String] */;
1346 var1 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on <self:OptionArray> */
1347 if (unlikely(var1 == NULL)) {
1348 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _values");
1349 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 237);
1350 show_backtrace(1);
1351 }
1352 var = var1;
1353 RET_LABEL:;
1354 return var;
1355 }
1356 /* method opts#OptionArray#values for (self: Object): Array[String] */
1357 val* VIRTUAL_opts__OptionArray__values(val* self) {
1358 val* var /* : Array[String] */;
1359 val* var1 /* : Array[String] */;
1360 val* var3 /* : Array[String] */;
1361 { /* Inline opts#OptionArray#values (self) on <self:Object(OptionArray)> */
1362 var3 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on <self:Object(OptionArray)> */
1363 if (unlikely(var3 == NULL)) {
1364 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _values");
1365 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 237);
1366 show_backtrace(1);
1367 }
1368 var1 = var3;
1369 RET_LABEL2:(void)0;
1370 }
1371 var = var1;
1372 RET_LABEL:;
1373 return var;
1374 }
1375 /* method opts#OptionArray#values= for (self: OptionArray, Array[String]) */
1376 void opts__OptionArray__values_61d(val* self, val* p0) {
1377 self->attrs[COLOR_opts__OptionArray___values].val = p0; /* _values on <self:OptionArray> */
1378 RET_LABEL:;
1379 }
1380 /* method opts#OptionArray#values= for (self: Object, Array[String]) */
1381 void VIRTUAL_opts__OptionArray__values_61d(val* self, val* p0) {
1382 { /* Inline opts#OptionArray#values= (self,p0) on <self:Object(OptionArray)> */
1383 self->attrs[COLOR_opts__OptionArray___values].val = p0; /* _values on <self:Object(OptionArray)> */
1384 RET_LABEL1:(void)0;
1385 }
1386 RET_LABEL:;
1387 }
1388 /* method opts#OptionArray#convert for (self: OptionArray, String): Array[String] */
1389 val* opts__OptionArray__convert(val* self, val* p0) {
1390 val* var /* : Array[String] */;
1391 val* var_str /* var str: String */;
1392 val* var1 /* : Array[String] */;
1393 val* var3 /* : Array[String] */;
1394 val* var4 /* : Array[String] */;
1395 val* var6 /* : Array[String] */;
1396 short int var7 /* : Bool */;
1397 int cltype;
1398 int idtype;
1399 const struct type* type_struct;
1400 const char* var_class_name;
1401 var_str = p0;
1402 {
1403 { /* Inline opts#OptionArray#values (self) on <self:OptionArray> */
1404 var3 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on <self:OptionArray> */
1405 if (unlikely(var3 == NULL)) {
1406 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _values");
1407 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 237);
1408 show_backtrace(1);
1409 }
1410 var1 = var3;
1411 RET_LABEL2:(void)0;
1412 }
1413 }
1414 {
1415 array__Array__add(var1, var_str); /* Direct call array#Array#add on <var1:Array[String]>*/
1416 }
1417 {
1418 { /* Inline opts#OptionArray#values (self) on <self:OptionArray> */
1419 var6 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on <self:OptionArray> */
1420 if (unlikely(var6 == NULL)) {
1421 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _values");
1422 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 237);
1423 show_backtrace(1);
1424 }
1425 var4 = var6;
1426 RET_LABEL5:(void)0;
1427 }
1428 }
1429 /* <var4:Array[String]> isa VALUE */
1430 type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
1431 cltype = type_struct->color;
1432 idtype = type_struct->id;
1433 if(cltype >= var4->type->table_size) {
1434 var7 = 0;
1435 } else {
1436 var7 = var4->type->type_table[cltype] == idtype;
1437 }
1438 if (unlikely(!var7)) {
1439 var_class_name = var4 == NULL ? "null" : var4->type->name;
1440 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
1441 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 241);
1442 show_backtrace(1);
1443 }
1444 var = var4;
1445 goto RET_LABEL;
1446 RET_LABEL:;
1447 return var;
1448 }
1449 /* method opts#OptionArray#convert for (self: Object, String): nullable Object */
1450 val* VIRTUAL_opts__OptionArray__convert(val* self, val* p0) {
1451 val* var /* : nullable Object */;
1452 val* var1 /* : Array[String] */;
1453 var1 = opts__OptionArray__convert(self, p0);
1454 var = var1;
1455 RET_LABEL:;
1456 return var;
1457 }
1458 /* method opts#OptionContext#options for (self: OptionContext): Array[Option] */
1459 val* opts__OptionContext__options(val* self) {
1460 val* var /* : Array[Option] */;
1461 val* var1 /* : Array[Option] */;
1462 var1 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
1463 if (unlikely(var1 == NULL)) {
1464 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
1465 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 247);
1466 show_backtrace(1);
1467 }
1468 var = var1;
1469 RET_LABEL:;
1470 return var;
1471 }
1472 /* method opts#OptionContext#options for (self: Object): Array[Option] */
1473 val* VIRTUAL_opts__OptionContext__options(val* self) {
1474 val* var /* : Array[Option] */;
1475 val* var1 /* : Array[Option] */;
1476 val* var3 /* : Array[Option] */;
1477 { /* Inline opts#OptionContext#options (self) on <self:Object(OptionContext)> */
1478 var3 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:Object(OptionContext)> */
1479 if (unlikely(var3 == NULL)) {
1480 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
1481 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 247);
1482 show_backtrace(1);
1483 }
1484 var1 = var3;
1485 RET_LABEL2:(void)0;
1486 }
1487 var = var1;
1488 RET_LABEL:;
1489 return var;
1490 }
1491 /* method opts#OptionContext#options= for (self: OptionContext, Array[Option]) */
1492 void opts__OptionContext__options_61d(val* self, val* p0) {
1493 self->attrs[COLOR_opts__OptionContext___options].val = p0; /* _options on <self:OptionContext> */
1494 RET_LABEL:;
1495 }
1496 /* method opts#OptionContext#options= for (self: Object, Array[Option]) */
1497 void VIRTUAL_opts__OptionContext__options_61d(val* self, val* p0) {
1498 { /* Inline opts#OptionContext#options= (self,p0) on <self:Object(OptionContext)> */
1499 self->attrs[COLOR_opts__OptionContext___options].val = p0; /* _options on <self:Object(OptionContext)> */
1500 RET_LABEL1:(void)0;
1501 }
1502 RET_LABEL:;
1503 }
1504 /* method opts#OptionContext#rest for (self: OptionContext): Array[String] */
1505 val* opts__OptionContext__rest(val* self) {
1506 val* var /* : Array[String] */;
1507 val* var1 /* : Array[String] */;
1508 var1 = self->attrs[COLOR_opts__OptionContext___rest].val; /* _rest on <self:OptionContext> */
1509 if (unlikely(var1 == NULL)) {
1510 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _rest");
1511 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 250);
1512 show_backtrace(1);
1513 }
1514 var = var1;
1515 RET_LABEL:;
1516 return var;
1517 }
1518 /* method opts#OptionContext#rest for (self: Object): Array[String] */
1519 val* VIRTUAL_opts__OptionContext__rest(val* self) {
1520 val* var /* : Array[String] */;
1521 val* var1 /* : Array[String] */;
1522 val* var3 /* : Array[String] */;
1523 { /* Inline opts#OptionContext#rest (self) on <self:Object(OptionContext)> */
1524 var3 = self->attrs[COLOR_opts__OptionContext___rest].val; /* _rest on <self:Object(OptionContext)> */
1525 if (unlikely(var3 == NULL)) {
1526 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _rest");
1527 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 250);
1528 show_backtrace(1);
1529 }
1530 var1 = var3;
1531 RET_LABEL2:(void)0;
1532 }
1533 var = var1;
1534 RET_LABEL:;
1535 return var;
1536 }
1537 /* method opts#OptionContext#rest= for (self: OptionContext, Array[String]) */
1538 void opts__OptionContext__rest_61d(val* self, val* p0) {
1539 self->attrs[COLOR_opts__OptionContext___rest].val = p0; /* _rest on <self:OptionContext> */
1540 RET_LABEL:;
1541 }
1542 /* method opts#OptionContext#rest= for (self: Object, Array[String]) */
1543 void VIRTUAL_opts__OptionContext__rest_61d(val* self, val* p0) {
1544 { /* Inline opts#OptionContext#rest= (self,p0) on <self:Object(OptionContext)> */
1545 self->attrs[COLOR_opts__OptionContext___rest].val = p0; /* _rest on <self:Object(OptionContext)> */
1546 RET_LABEL1:(void)0;
1547 }
1548 RET_LABEL:;
1549 }
1550 /* method opts#OptionContext#errors for (self: OptionContext): Array[String] */
1551 val* opts__OptionContext__errors(val* self) {
1552 val* var /* : Array[String] */;
1553 val* var1 /* : Array[String] */;
1554 var1 = self->attrs[COLOR_opts__OptionContext___errors].val; /* _errors on <self:OptionContext> */
1555 if (unlikely(var1 == NULL)) {
1556 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _errors");
1557 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 253);
1558 show_backtrace(1);
1559 }
1560 var = var1;
1561 RET_LABEL:;
1562 return var;
1563 }
1564 /* method opts#OptionContext#errors for (self: Object): Array[String] */
1565 val* VIRTUAL_opts__OptionContext__errors(val* self) {
1566 val* var /* : Array[String] */;
1567 val* var1 /* : Array[String] */;
1568 val* var3 /* : Array[String] */;
1569 { /* Inline opts#OptionContext#errors (self) on <self:Object(OptionContext)> */
1570 var3 = self->attrs[COLOR_opts__OptionContext___errors].val; /* _errors on <self:Object(OptionContext)> */
1571 if (unlikely(var3 == NULL)) {
1572 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _errors");
1573 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 253);
1574 show_backtrace(1);
1575 }
1576 var1 = var3;
1577 RET_LABEL2:(void)0;
1578 }
1579 var = var1;
1580 RET_LABEL:;
1581 return var;
1582 }
1583 /* method opts#OptionContext#errors= for (self: OptionContext, Array[String]) */
1584 void opts__OptionContext__errors_61d(val* self, val* p0) {
1585 self->attrs[COLOR_opts__OptionContext___errors].val = p0; /* _errors on <self:OptionContext> */
1586 RET_LABEL:;
1587 }
1588 /* method opts#OptionContext#errors= for (self: Object, Array[String]) */
1589 void VIRTUAL_opts__OptionContext__errors_61d(val* self, val* p0) {
1590 { /* Inline opts#OptionContext#errors= (self,p0) on <self:Object(OptionContext)> */
1591 self->attrs[COLOR_opts__OptionContext___errors].val = p0; /* _errors on <self:Object(OptionContext)> */
1592 RET_LABEL1:(void)0;
1593 }
1594 RET_LABEL:;
1595 }
1596 /* method opts#OptionContext#optmap for (self: OptionContext): Map[String, Option] */
1597 val* opts__OptionContext__optmap(val* self) {
1598 val* var /* : Map[String, Option] */;
1599 val* var1 /* : Map[String, Option] */;
1600 var1 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
1601 if (unlikely(var1 == NULL)) {
1602 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap");
1603 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 256);
1604 show_backtrace(1);
1605 }
1606 var = var1;
1607 RET_LABEL:;
1608 return var;
1609 }
1610 /* method opts#OptionContext#optmap for (self: Object): Map[String, Option] */
1611 val* VIRTUAL_opts__OptionContext__optmap(val* self) {
1612 val* var /* : Map[String, Option] */;
1613 val* var1 /* : Map[String, Option] */;
1614 val* var3 /* : Map[String, Option] */;
1615 { /* Inline opts#OptionContext#optmap (self) on <self:Object(OptionContext)> */
1616 var3 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:Object(OptionContext)> */
1617 if (unlikely(var3 == NULL)) {
1618 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap");
1619 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 256);
1620 show_backtrace(1);
1621 }
1622 var1 = var3;
1623 RET_LABEL2:(void)0;
1624 }
1625 var = var1;
1626 RET_LABEL:;
1627 return var;
1628 }
1629 /* method opts#OptionContext#optmap= for (self: OptionContext, Map[String, Option]) */
1630 void opts__OptionContext__optmap_61d(val* self, val* p0) {
1631 self->attrs[COLOR_opts__OptionContext___optmap].val = p0; /* _optmap on <self:OptionContext> */
1632 RET_LABEL:;
1633 }
1634 /* method opts#OptionContext#optmap= for (self: Object, Map[String, Option]) */
1635 void VIRTUAL_opts__OptionContext__optmap_61d(val* self, val* p0) {
1636 { /* Inline opts#OptionContext#optmap= (self,p0) on <self:Object(OptionContext)> */
1637 self->attrs[COLOR_opts__OptionContext___optmap].val = p0; /* _optmap on <self:Object(OptionContext)> */
1638 RET_LABEL1:(void)0;
1639 }
1640 RET_LABEL:;
1641 }
1642 /* method opts#OptionContext#init for (self: OptionContext) */
1643 void opts__OptionContext__init(val* self) {
1644 val* var /* : Array[Option] */;
1645 val* var2 /* : HashMap[String, Option] */;
1646 val* var4 /* : Array[String] */;
1647 val* var6 /* : Array[String] */;
1648 var = NEW_array__Array(&type_array__Arrayopts__Option);
1649 {
1650 array__Array__init(var); /* Direct call array#Array#init on <var:Array[Option]>*/
1651 }
1652 {
1653 { /* Inline opts#OptionContext#options= (self,var) on <self:OptionContext> */
1654 self->attrs[COLOR_opts__OptionContext___options].val = var; /* _options on <self:OptionContext> */
1655 RET_LABEL1:(void)0;
1656 }
1657 }
1658 var2 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapstring__Stringopts__Option);
1659 {
1660 hash_collection__HashMap__init(var2); /* Direct call hash_collection#HashMap#init on <var2:HashMap[String, Option]>*/
1661 }
1662 {
1663 { /* Inline opts#OptionContext#optmap= (self,var2) on <self:OptionContext> */
1664 self->attrs[COLOR_opts__OptionContext___optmap].val = var2; /* _optmap on <self:OptionContext> */
1665 RET_LABEL3:(void)0;
1666 }
1667 }
1668 var4 = NEW_array__Array(&type_array__Arraystring__String);
1669 {
1670 array__Array__init(var4); /* Direct call array#Array#init on <var4:Array[String]>*/
1671 }
1672 {
1673 { /* Inline opts#OptionContext#rest= (self,var4) on <self:OptionContext> */
1674 self->attrs[COLOR_opts__OptionContext___rest].val = var4; /* _rest on <self:OptionContext> */
1675 RET_LABEL5:(void)0;
1676 }
1677 }
1678 var6 = NEW_array__Array(&type_array__Arraystring__String);
1679 {
1680 array__Array__init(var6); /* Direct call array#Array#init on <var6:Array[String]>*/
1681 }
1682 {
1683 { /* Inline opts#OptionContext#errors= (self,var6) on <self:OptionContext> */
1684 self->attrs[COLOR_opts__OptionContext___errors].val = var6; /* _errors on <self:OptionContext> */
1685 RET_LABEL7:(void)0;
1686 }
1687 }
1688 RET_LABEL:;
1689 }
1690 /* method opts#OptionContext#init for (self: Object) */
1691 void VIRTUAL_opts__OptionContext__init(val* self) {
1692 opts__OptionContext__init(self); /* Direct call opts#OptionContext#init on <self:Object(OptionContext)>*/
1693 RET_LABEL:;
1694 }
1695 /* method opts#OptionContext#add_option for (self: OptionContext, Array[Option]) */
1696 void opts__OptionContext__add_option(val* self, val* p0) {
1697 val* var_opts /* var opts: Array[Option] */;
1698 val* var /* : Array[Option] */;
1699 val* var2 /* : Array[Option] */;
1700 var_opts = p0;
1701 {
1702 { /* Inline opts#OptionContext#options (self) on <self:OptionContext> */
1703 var2 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
1704 if (unlikely(var2 == NULL)) {
1705 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
1706 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 247);
1707 show_backtrace(1);
1708 }
1709 var = var2;
1710 RET_LABEL1:(void)0;
1711 }
1712 }
1713 {
1714 abstract_collection__SimpleCollection__add_all(var, var_opts); /* Direct call abstract_collection#SimpleCollection#add_all on <var:Array[Option]>*/
1715 }
1716 RET_LABEL:;
1717 }
1718 /* method opts#OptionContext#add_option for (self: Object, Array[Option]) */
1719 void VIRTUAL_opts__OptionContext__add_option(val* self, val* p0) {
1720 opts__OptionContext__add_option(self, p0); /* Direct call opts#OptionContext#add_option on <self:Object(OptionContext)>*/
1721 RET_LABEL:;
1722 }
1723 /* method opts#OptionContext#usage for (self: OptionContext) */
1724 void opts__OptionContext__usage(val* self) {
1725 long var /* : Int */;
1726 long var_lmax /* var lmax: Int */;
1727 val* var1 /* : Array[Option] */;
1728 val* var3 /* : Array[Option] */;
1729 val* var4 /* : ArrayIterator[nullable Object] */;
1730 short int var5 /* : Bool */;
1731 val* var6 /* : nullable Object */;
1732 val* var_i /* var i: Option */;
1733 long var7 /* : Int */;
1734 long var_l /* var l: Int */;
1735 val* var8 /* : Array[String] */;
1736 val* var10 /* : Array[String] */;
1737 val* var11 /* : ArrayIterator[nullable Object] */;
1738 short int var12 /* : Bool */;
1739 val* var13 /* : nullable Object */;
1740 val* var_n /* var n: String */;
1741 long var14 /* : Int */;
1742 long var16 /* : Int */;
1743 long var17 /* : Int */;
1744 long var18 /* : Int */;
1745 short int var20 /* : Bool */;
1746 int cltype;
1747 int idtype;
1748 const char* var_class_name;
1749 long var21 /* : Int */;
1750 long var22 /* : Int */;
1751 short int var24 /* : Bool */;
1752 int cltype25;
1753 int idtype26;
1754 const char* var_class_name27;
1755 long var28 /* : Int */;
1756 short int var29 /* : Bool */;
1757 short int var31 /* : Bool */;
1758 int cltype32;
1759 int idtype33;
1760 const char* var_class_name34;
1761 short int var35 /* : Bool */;
1762 val* var37 /* : Array[Option] */;
1763 val* var39 /* : Array[Option] */;
1764 val* var40 /* : ArrayIterator[nullable Object] */;
1765 short int var41 /* : Bool */;
1766 val* var42 /* : nullable Object */;
1767 val* var_i43 /* var i: Option */;
1768 short int var44 /* : Bool */;
1769 short int var46 /* : Bool */;
1770 short int var47 /* : Bool */;
1771 val* var48 /* : String */;
1772 var = 1;
1773 var_lmax = var;
1774 {
1775 { /* Inline opts#OptionContext#options (self) on <self:OptionContext> */
1776 var3 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
1777 if (unlikely(var3 == NULL)) {
1778 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
1779 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 247);
1780 show_backtrace(1);
1781 }
1782 var1 = var3;
1783 RET_LABEL2:(void)0;
1784 }
1785 }
1786 {
1787 var4 = array__AbstractArrayRead__iterator(var1);
1788 }
1789 for(;;) {
1790 {
1791 var5 = array__ArrayIterator__is_ok(var4);
1792 }
1793 if(!var5) break;
1794 {
1795 var6 = array__ArrayIterator__item(var4);
1796 }
1797 var_i = var6;
1798 var7 = 3;
1799 var_l = var7;
1800 {
1801 { /* Inline opts#Option#names (var_i) on <var_i:Option> */
1802 var10 = var_i->attrs[COLOR_opts__Option___names].val; /* _names on <var_i:Option> */
1803 if (unlikely(var10 == NULL)) {
1804 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
1805 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 19);
1806 show_backtrace(1);
1807 }
1808 var8 = var10;
1809 RET_LABEL9:(void)0;
1810 }
1811 }
1812 {
1813 var11 = array__AbstractArrayRead__iterator(var8);
1814 }
1815 for(;;) {
1816 {
1817 var12 = array__ArrayIterator__is_ok(var11);
1818 }
1819 if(!var12) break;
1820 {
1821 var13 = array__ArrayIterator__item(var11);
1822 }
1823 var_n = var13;
1824 {
1825 { /* Inline string#FlatText#length (var_n) on <var_n:String> */
1826 var16 = var_n->attrs[COLOR_string__FlatText___length].l; /* _length on <var_n:String> */
1827 var14 = var16;
1828 RET_LABEL15:(void)0;
1829 }
1830 }
1831 var17 = 2;
1832 {
1833 { /* Inline kernel#Int#+ (var14,var17) on <var14:Int> */
1834 /* Covariant cast for argument 0 (i) <var17:Int> isa OTHER */
1835 /* <var17:Int> isa OTHER */
1836 var20 = 1; /* easy <var17:Int> isa OTHER*/
1837 if (unlikely(!var20)) {
1838 var_class_name = type_kernel__Int.name;
1839 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1840 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
1841 show_backtrace(1);
1842 }
1843 var21 = var14 + var17;
1844 var18 = var21;
1845 goto RET_LABEL19;
1846 RET_LABEL19:(void)0;
1847 }
1848 }
1849 {
1850 { /* Inline kernel#Int#+ (var_l,var18) on <var_l:Int> */
1851 /* Covariant cast for argument 0 (i) <var18:Int> isa OTHER */
1852 /* <var18:Int> isa OTHER */
1853 var24 = 1; /* easy <var18:Int> isa OTHER*/
1854 if (unlikely(!var24)) {
1855 var_class_name27 = type_kernel__Int.name;
1856 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name27);
1857 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
1858 show_backtrace(1);
1859 }
1860 var28 = var_l + var18;
1861 var22 = var28;
1862 goto RET_LABEL23;
1863 RET_LABEL23:(void)0;
1864 }
1865 }
1866 var_l = var22;
1867 CONTINUE_label: (void)0;
1868 {
1869 array__ArrayIterator__next(var11); /* Direct call array#ArrayIterator#next on <var11:ArrayIterator[nullable Object]>*/
1870 }
1871 }
1872 BREAK_label: (void)0;
1873 {
1874 { /* Inline kernel#Int#< (var_lmax,var_l) on <var_lmax:Int> */
1875 /* Covariant cast for argument 0 (i) <var_l:Int> isa OTHER */
1876 /* <var_l:Int> isa OTHER */
1877 var31 = 1; /* easy <var_l:Int> isa OTHER*/
1878 if (unlikely(!var31)) {
1879 var_class_name34 = type_kernel__Int.name;
1880 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name34);
1881 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 325);
1882 show_backtrace(1);
1883 }
1884 var35 = var_lmax < var_l;
1885 var29 = var35;
1886 goto RET_LABEL30;
1887 RET_LABEL30:(void)0;
1888 }
1889 }
1890 if (var29){
1891 var_lmax = var_l;
1892 } else {
1893 }
1894 CONTINUE_label36: (void)0;
1895 {
1896 array__ArrayIterator__next(var4); /* Direct call array#ArrayIterator#next on <var4:ArrayIterator[nullable Object]>*/
1897 }
1898 }
1899 BREAK_label36: (void)0;
1900 {
1901 { /* Inline opts#OptionContext#options (self) on <self:OptionContext> */
1902 var39 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
1903 if (unlikely(var39 == NULL)) {
1904 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
1905 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 247);
1906 show_backtrace(1);
1907 }
1908 var37 = var39;
1909 RET_LABEL38:(void)0;
1910 }
1911 }
1912 {
1913 var40 = array__AbstractArrayRead__iterator(var37);
1914 }
1915 for(;;) {
1916 {
1917 var41 = array__ArrayIterator__is_ok(var40);
1918 }
1919 if(!var41) break;
1920 {
1921 var42 = array__ArrayIterator__item(var40);
1922 }
1923 var_i43 = var42;
1924 {
1925 { /* Inline opts#Option#hidden (var_i43) on <var_i43:Option> */
1926 var46 = var_i43->attrs[COLOR_opts__Option___hidden].s; /* _hidden on <var_i43:Option> */
1927 var44 = var46;
1928 RET_LABEL45:(void)0;
1929 }
1930 }
1931 var47 = !var44;
1932 if (var47){
1933 {
1934 var48 = opts__Option__pretty(var_i43, var_lmax);
1935 }
1936 {
1937 file__Object__print(self, var48); /* Direct call file#Object#print on <self:OptionContext>*/
1938 }
1939 } else {
1940 }
1941 CONTINUE_label49: (void)0;
1942 {
1943 array__ArrayIterator__next(var40); /* Direct call array#ArrayIterator#next on <var40:ArrayIterator[nullable Object]>*/
1944 }
1945 }
1946 BREAK_label49: (void)0;
1947 RET_LABEL:;
1948 }
1949 /* method opts#OptionContext#usage for (self: Object) */
1950 void VIRTUAL_opts__OptionContext__usage(val* self) {
1951 opts__OptionContext__usage(self); /* Direct call opts#OptionContext#usage on <self:Object(OptionContext)>*/
1952 RET_LABEL:;
1953 }
1954 /* method opts#OptionContext#parse for (self: OptionContext, Collection[String]) */
1955 void opts__OptionContext__parse(val* self, val* p0) {
1956 val* var_argv /* var argv: Collection[String] */;
1957 val* var /* : Iterator[nullable Object] */;
1958 val* var_it /* var it: Iterator[String] */;
1959 var_argv = p0;
1960 {
1961 var = ((val* (*)(val*))(var_argv->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_argv) /* iterator on <var_argv:Collection[String]>*/;
1962 }
1963 var_it = var;
1964 {
1965 opts__OptionContext__parse_intern(self, var_it); /* Direct call opts#OptionContext#parse_intern on <self:OptionContext>*/
1966 }
1967 RET_LABEL:;
1968 }
1969 /* method opts#OptionContext#parse for (self: Object, Collection[String]) */
1970 void VIRTUAL_opts__OptionContext__parse(val* self, val* p0) {
1971 opts__OptionContext__parse(self, p0); /* Direct call opts#OptionContext#parse on <self:Object(OptionContext)>*/
1972 RET_LABEL:;
1973 }
1974 /* method opts#OptionContext#parse_intern for (self: OptionContext, Iterator[String]) */
1975 void opts__OptionContext__parse_intern(val* self, val* p0) {
1976 val* var_it /* var it: Iterator[String] */;
1977 short int var /* : Bool */;
1978 short int var_parseargs /* var parseargs: Bool */;
1979 val* var1 /* : Array[String] */;
1980 val* var3 /* : Array[String] */;
1981 val* var_rest /* var rest: Array[String] */;
1982 short int var4 /* : Bool */;
1983 short int var_ /* var : Bool */;
1984 short int var5 /* : Bool */;
1985 val* var6 /* : nullable Object */;
1986 val* var_str /* var str: String */;
1987 static val* varonce;
1988 val* var7 /* : String */;
1989 char* var8 /* : NativeString */;
1990 long var9 /* : Int */;
1991 val* var10 /* : FlatString */;
1992 short int var11 /* : Bool */;
1993 short int var12 /* : Bool */;
1994 val* var13 /* : Array[nullable Object] */;
1995 short int var14 /* : Bool */;
1996 short int var15 /* : Bool */;
1997 val* var16 /* : SequenceRead[Char] */;
1998 val* var18 /* : SequenceRead[Char] */;
1999 char var19 /* : Char */;
2000 long var20 /* : Int */;
2001 val* var21 /* : nullable Object */;
2002 long var22 /* : Int */;
2003 short int var23 /* : Bool */;
2004 short int var24 /* : Bool */;
2005 short int var26 /* : Bool */;
2006 short int var_27 /* var : Bool */;
2007 long var28 /* : Int */;
2008 long var30 /* : Int */;
2009 long var31 /* : Int */;
2010 short int var32 /* : Bool */;
2011 short int var34 /* : Bool */;
2012 int cltype;
2013 int idtype;
2014 const char* var_class_name;
2015 short int var35 /* : Bool */;
2016 short int var36 /* : Bool */;
2017 short int var_next_called /* var next_called: Bool */;
2018 val* var37 /* : Range[Int] */;
2019 long var38 /* : Int */;
2020 long var39 /* : Int */;
2021 long var41 /* : Int */;
2022 val* var42 /* : Discrete */;
2023 val* var43 /* : Discrete */;
2024 val* var44 /* : Iterator[Discrete] */;
2025 short int var45 /* : Bool */;
2026 val* var46 /* : nullable Object */;
2027 long var_i /* var i: Int */;
2028 long var47 /* : Int */;
2029 static val* varonce48;
2030 val* var49 /* : String */;
2031 char* var50 /* : NativeString */;
2032 long var51 /* : Int */;
2033 val* var52 /* : FlatString */;
2034 val* var53 /* : SequenceRead[Char] */;
2035 val* var55 /* : SequenceRead[Char] */;
2036 val* var56 /* : nullable Object */;
2037 val* var57 /* : String */;
2038 char var58 /* : Char */;
2039 val* var59 /* : String */;
2040 val* var_short_opt /* var short_opt: String */;
2041 val* var60 /* : Map[String, Option] */;
2042 val* var62 /* : Map[String, Option] */;
2043 short int var63 /* : Bool */;
2044 val* var64 /* : Map[String, Option] */;
2045 val* var66 /* : Map[String, Option] */;
2046 val* var67 /* : nullable Object */;
2047 val* var_option /* var option: Option */;
2048 short int var68 /* : Bool */;
2049 int cltype69;
2050 int idtype70;
2051 short int var71 /* : Bool */;
2052 short int var72 /* : Bool */;
2053 val* var73 /* : Map[String, Option] */;
2054 val* var75 /* : Map[String, Option] */;
2055 short int var76 /* : Bool */;
2056 val* var77 /* : Map[String, Option] */;
2057 val* var79 /* : Map[String, Option] */;
2058 val* var80 /* : nullable Object */;
2059 val* var_opt /* var opt: Option */;
2060 val* var81 /* : nullable Object */;
2061 val* var83 /* : Array[Option] */;
2062 val* var85 /* : Array[Option] */;
2063 val* var86 /* : ArrayIterator[nullable Object] */;
2064 short int var87 /* : Bool */;
2065 val* var88 /* : nullable Object */;
2066 val* var_opt89 /* var opt: Option */;
2067 short int var90 /* : Bool */;
2068 short int var91 /* : Bool */;
2069 short int var93 /* : Bool */;
2070 short int var_94 /* var : Bool */;
2071 short int var95 /* : Bool */;
2072 short int var97 /* : Bool */;
2073 short int var98 /* : Bool */;
2074 val* var99 /* : Array[String] */;
2075 val* var101 /* : Array[String] */;
2076 static val* varonce102;
2077 val* var103 /* : String */;
2078 char* var104 /* : NativeString */;
2079 long var105 /* : Int */;
2080 val* var106 /* : FlatString */;
2081 val* var107 /* : Array[String] */;
2082 val* var109 /* : Array[String] */;
2083 static val* varonce110;
2084 val* var111 /* : String */;
2085 char* var112 /* : NativeString */;
2086 long var113 /* : Int */;
2087 val* var114 /* : FlatString */;
2088 val* var115 /* : String */;
2089 static val* varonce116;
2090 val* var117 /* : String */;
2091 char* var118 /* : NativeString */;
2092 long var119 /* : Int */;
2093 val* var120 /* : FlatString */;
2094 val* var121 /* : Array[Object] */;
2095 long var122 /* : Int */;
2096 val* var123 /* : NativeArray[Object] */;
2097 val* var124 /* : String */;
2098 var_it = p0;
2099 var = 1;
2100 var_parseargs = var;
2101 {
2102 opts__OptionContext__build(self); /* Direct call opts#OptionContext#build on <self:OptionContext>*/
2103 }
2104 {
2105 { /* Inline opts#OptionContext#rest (self) on <self:OptionContext> */
2106 var3 = self->attrs[COLOR_opts__OptionContext___rest].val; /* _rest on <self:OptionContext> */
2107 if (unlikely(var3 == NULL)) {
2108 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _rest");
2109 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 250);
2110 show_backtrace(1);
2111 }
2112 var1 = var3;
2113 RET_LABEL2:(void)0;
2114 }
2115 }
2116 var_rest = var1;
2117 for(;;) {
2118 var_ = var_parseargs;
2119 if (var_parseargs){
2120 {
2121 var5 = ((short int (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_it) /* is_ok on <var_it:Iterator[String]>*/;
2122 }
2123 var4 = var5;
2124 } else {
2125 var4 = var_;
2126 }
2127 if (!var4) break;
2128 {
2129 var6 = ((val* (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__item]))(var_it) /* item on <var_it:Iterator[String]>*/;
2130 }
2131 var_str = var6;
2132 if (varonce) {
2133 var7 = varonce;
2134 } else {
2135 var8 = "--";
2136 var9 = 2;
2137 var10 = string__NativeString__to_s_with_length(var8, var9);
2138 var7 = var10;
2139 varonce = var7;
2140 }
2141 {
2142 var12 = string__FlatString___61d_61d(var_str, var7);
2143 var11 = var12;
2144 }
2145 if (var11){
2146 {
2147 ((void (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__next]))(var_it) /* next on <var_it:Iterator[String]>*/;
2148 }
2149 {
2150 var13 = array__Iterator__to_a(var_it);
2151 }
2152 {
2153 abstract_collection__SimpleCollection__add_all(var_rest, var13); /* Direct call abstract_collection#SimpleCollection#add_all on <var_rest:Array[String]>*/
2154 }
2155 var14 = 0;
2156 var_parseargs = var14;
2157 } else {
2158 {
2159 { /* Inline string#FlatString#chars (var_str) on <var_str:String> */
2160 var18 = var_str->attrs[COLOR_string__FlatString___chars].val; /* _chars on <var_str:String> */
2161 if (unlikely(var18 == NULL)) {
2162 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _chars");
2163 PRINT_ERROR(" (%s:%d)\n", "lib/standard/string.nit", 746);
2164 show_backtrace(1);
2165 }
2166 var16 = var18;
2167 RET_LABEL17:(void)0;
2168 }
2169 }
2170 var19 = '-';
2171 {
2172 var21 = BOX_kernel__Char(var19); /* autobox from Char to nullable Object */
2173 var20 = ((long (*)(val*, val*))(var16->class->vft[COLOR_abstract_collection__SequenceRead__last_index_of]))(var16, var21) /* last_index_of on <var16:SequenceRead[Char]>*/;
2174 }
2175 var22 = 0;
2176 {
2177 { /* Inline kernel#Int#== (var20,var22) on <var20:Int> */
2178 var26 = var20 == var22;
2179 var24 = var26;
2180 goto RET_LABEL25;
2181 RET_LABEL25:(void)0;
2182 }
2183 var23 = var24;
2184 }
2185 var_27 = var23;
2186 if (var23){
2187 {
2188 { /* Inline string#FlatText#length (var_str) on <var_str:String> */
2189 var30 = var_str->attrs[COLOR_string__FlatText___length].l; /* _length on <var_str:String> */
2190 var28 = var30;
2191 RET_LABEL29:(void)0;
2192 }
2193 }
2194 var31 = 2;
2195 {
2196 { /* Inline kernel#Int#> (var28,var31) on <var28:Int> */
2197 /* Covariant cast for argument 0 (i) <var31:Int> isa OTHER */
2198 /* <var31:Int> isa OTHER */
2199 var34 = 1; /* easy <var31:Int> isa OTHER*/
2200 if (unlikely(!var34)) {
2201 var_class_name = type_kernel__Int.name;
2202 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2203 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 327);
2204 show_backtrace(1);
2205 }
2206 var35 = var28 > var31;
2207 var32 = var35;
2208 goto RET_LABEL33;
2209 RET_LABEL33:(void)0;
2210 }
2211 }
2212 var15 = var32;
2213 } else {
2214 var15 = var_27;
2215 }
2216 if (var15){
2217 var36 = 0;
2218 var_next_called = var36;
2219 var37 = NEW_range__Range(&type_range__Rangekernel__Int);
2220 var38 = 1;
2221 {
2222 { /* Inline string#FlatText#length (var_str) on <var_str:String> */
2223 var41 = var_str->attrs[COLOR_string__FlatText___length].l; /* _length on <var_str:String> */
2224 var39 = var41;
2225 RET_LABEL40:(void)0;
2226 }
2227 }
2228 {
2229 var42 = BOX_kernel__Int(var38); /* autobox from Int to Discrete */
2230 var43 = BOX_kernel__Int(var39); /* autobox from Int to Discrete */
2231 range__Range__without_last(var37, var42, var43); /* Direct call range#Range#without_last on <var37:Range[Int]>*/
2232 }
2233 {
2234 var44 = range__Range__iterator(var37);
2235 }
2236 for(;;) {
2237 {
2238 var45 = ((short int (*)(val*))(var44->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var44) /* is_ok on <var44:Iterator[Discrete]>*/;
2239 }
2240 if(!var45) break;
2241 {
2242 var46 = ((val* (*)(val*))(var44->class->vft[COLOR_abstract_collection__Iterator__item]))(var44) /* item on <var44:Iterator[Discrete]>*/;
2243 }
2244 var47 = ((struct instance_kernel__Int*)var46)->value; /* autounbox from nullable Object to Int */;
2245 var_i = var47;
2246 if (varonce48) {
2247 var49 = varonce48;
2248 } else {
2249 var50 = "-";
2250 var51 = 1;
2251 var52 = string__NativeString__to_s_with_length(var50, var51);
2252 var49 = var52;
2253 varonce48 = var49;
2254 }
2255 {
2256 { /* Inline string#FlatString#chars (var_str) on <var_str:String> */
2257 var55 = var_str->attrs[COLOR_string__FlatString___chars].val; /* _chars on <var_str:String> */
2258 if (unlikely(var55 == NULL)) {
2259 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _chars");
2260 PRINT_ERROR(" (%s:%d)\n", "lib/standard/string.nit", 746);
2261 show_backtrace(1);
2262 }
2263 var53 = var55;
2264 RET_LABEL54:(void)0;
2265 }
2266 }
2267 {
2268 var56 = ((val* (*)(val*, long))(var53->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var53, var_i) /* [] on <var53:SequenceRead[Char]>*/;
2269 }
2270 {
2271 var58 = ((struct instance_kernel__Char*)var56)->value; /* autounbox from nullable Object to Char */;
2272 var57 = string__Char__to_s(var58);
2273 }
2274 {
2275 var59 = string__FlatString___43d(var49, var57);
2276 }
2277 var_short_opt = var59;
2278 {
2279 { /* Inline opts#OptionContext#optmap (self) on <self:OptionContext> */
2280 var62 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
2281 if (unlikely(var62 == NULL)) {
2282 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap");
2283 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 256);
2284 show_backtrace(1);
2285 }
2286 var60 = var62;
2287 RET_LABEL61:(void)0;
2288 }
2289 }
2290 {
2291 var63 = abstract_collection__MapRead__has_key(var60, var_short_opt);
2292 }
2293 if (var63){
2294 {
2295 { /* Inline opts#OptionContext#optmap (self) on <self:OptionContext> */
2296 var66 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
2297 if (unlikely(var66 == NULL)) {
2298 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap");
2299 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 256);
2300 show_backtrace(1);
2301 }
2302 var64 = var66;
2303 RET_LABEL65:(void)0;
2304 }
2305 }
2306 {
2307 var67 = ((val* (*)(val*, val*))(var64->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var64, var_short_opt) /* [] on <var64:Map[String, Option]>*/;
2308 }
2309 var_option = var67;
2310 /* <var_option:Option> isa OptionParameter */
2311 cltype69 = type_opts__OptionParameter.color;
2312 idtype70 = type_opts__OptionParameter.id;
2313 if(cltype69 >= var_option->type->table_size) {
2314 var68 = 0;
2315 } else {
2316 var68 = var_option->type->type_table[cltype69] == idtype70;
2317 }
2318 if (var68){
2319 {
2320 ((void (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__next]))(var_it) /* next on <var_it:Iterator[String]>*/;
2321 }
2322 var71 = 1;
2323 var_next_called = var71;
2324 } else {
2325 }
2326 {
2327 ((void (*)(val*, val*))(var_option->class->vft[COLOR_opts__Option__read_param]))(var_option, var_it) /* read_param on <var_option:Option>*/;
2328 }
2329 } else {
2330 }
2331 CONTINUE_label: (void)0;
2332 {
2333 ((void (*)(val*))(var44->class->vft[COLOR_abstract_collection__Iterator__next]))(var44) /* next on <var44:Iterator[Discrete]>*/;
2334 }
2335 }
2336 BREAK_label: (void)0;
2337 var72 = !var_next_called;
2338 if (var72){
2339 {
2340 ((void (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__next]))(var_it) /* next on <var_it:Iterator[String]>*/;
2341 }
2342 } else {
2343 }
2344 } else {
2345 {
2346 { /* Inline opts#OptionContext#optmap (self) on <self:OptionContext> */
2347 var75 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
2348 if (unlikely(var75 == NULL)) {
2349 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap");
2350 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 256);
2351 show_backtrace(1);
2352 }
2353 var73 = var75;
2354 RET_LABEL74:(void)0;
2355 }
2356 }
2357 {
2358 var76 = abstract_collection__MapRead__has_key(var73, var_str);
2359 }
2360 if (var76){
2361 {
2362 { /* Inline opts#OptionContext#optmap (self) on <self:OptionContext> */
2363 var79 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
2364 if (unlikely(var79 == NULL)) {
2365 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap");
2366 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 256);
2367 show_backtrace(1);
2368 }
2369 var77 = var79;
2370 RET_LABEL78:(void)0;
2371 }
2372 }
2373 {
2374 var80 = ((val* (*)(val*, val*))(var77->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var77, var_str) /* [] on <var77:Map[String, Option]>*/;
2375 }
2376 var_opt = var80;
2377 {
2378 ((void (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__next]))(var_it) /* next on <var_it:Iterator[String]>*/;
2379 }
2380 {
2381 ((void (*)(val*, val*))(var_opt->class->vft[COLOR_opts__Option__read_param]))(var_opt, var_it) /* read_param on <var_opt:Option>*/;
2382 }
2383 } else {
2384 {
2385 var81 = ((val* (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__item]))(var_it) /* item on <var_it:Iterator[String]>*/;
2386 }
2387 {
2388 array__Array__add(var_rest, var81); /* Direct call array#Array#add on <var_rest:Array[String]>*/
2389 }
2390 {
2391 ((void (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__next]))(var_it) /* next on <var_it:Iterator[String]>*/;
2392 }
2393 }
2394 }
2395 }
2396 CONTINUE_label82: (void)0;
2397 }
2398 BREAK_label82: (void)0;
2399 {
2400 { /* Inline opts#OptionContext#options (self) on <self:OptionContext> */
2401 var85 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
2402 if (unlikely(var85 == NULL)) {
2403 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
2404 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 247);
2405 show_backtrace(1);
2406 }
2407 var83 = var85;
2408 RET_LABEL84:(void)0;
2409 }
2410 }
2411 {
2412 var86 = array__AbstractArrayRead__iterator(var83);
2413 }
2414 for(;;) {
2415 {
2416 var87 = array__ArrayIterator__is_ok(var86);
2417 }
2418 if(!var87) break;
2419 {
2420 var88 = array__ArrayIterator__item(var86);
2421 }
2422 var_opt89 = var88;
2423 {
2424 { /* Inline opts#Option#mandatory (var_opt89) on <var_opt89:Option> */
2425 var93 = var_opt89->attrs[COLOR_opts__Option___mandatory].s; /* _mandatory on <var_opt89:Option> */
2426 var91 = var93;
2427 RET_LABEL92:(void)0;
2428 }
2429 }
2430 var_94 = var91;
2431 if (var91){
2432 {
2433 { /* Inline opts#Option#read (var_opt89) on <var_opt89:Option> */
2434 var97 = var_opt89->attrs[COLOR_opts__Option___read].s; /* _read on <var_opt89:Option> */
2435 var95 = var97;
2436 RET_LABEL96:(void)0;
2437 }
2438 }
2439 var98 = !var95;
2440 var90 = var98;
2441 } else {
2442 var90 = var_94;
2443 }
2444 if (var90){
2445 {
2446 { /* Inline opts#OptionContext#errors (self) on <self:OptionContext> */
2447 var101 = self->attrs[COLOR_opts__OptionContext___errors].val; /* _errors on <self:OptionContext> */
2448 if (unlikely(var101 == NULL)) {
2449 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _errors");
2450 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 253);
2451 show_backtrace(1);
2452 }
2453 var99 = var101;
2454 RET_LABEL100:(void)0;
2455 }
2456 }
2457 if (varonce102) {
2458 var103 = varonce102;
2459 } else {
2460 var104 = "Mandatory option ";
2461 var105 = 17;
2462 var106 = string__NativeString__to_s_with_length(var104, var105);
2463 var103 = var106;
2464 varonce102 = var103;
2465 }
2466 {
2467 { /* Inline opts#Option#names (var_opt89) on <var_opt89:Option> */
2468 var109 = var_opt89->attrs[COLOR_opts__Option___names].val; /* _names on <var_opt89:Option> */
2469 if (unlikely(var109 == NULL)) {
2470 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
2471 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 19);
2472 show_backtrace(1);
2473 }
2474 var107 = var109;
2475 RET_LABEL108:(void)0;
2476 }
2477 }
2478 if (varonce110) {
2479 var111 = varonce110;
2480 } else {
2481 var112 = ", ";
2482 var113 = 2;
2483 var114 = string__NativeString__to_s_with_length(var112, var113);
2484 var111 = var114;
2485 varonce110 = var111;
2486 }
2487 {
2488 var115 = string__Collection__join(var107, var111);
2489 }
2490 if (varonce116) {
2491 var117 = varonce116;
2492 } else {
2493 var118 = " not found.";
2494 var119 = 11;
2495 var120 = string__NativeString__to_s_with_length(var118, var119);
2496 var117 = var120;
2497 varonce116 = var117;
2498 }
2499 var121 = NEW_array__Array(&type_array__Arraykernel__Object);
2500 { /* var121 = array_instance Array[Object] */
2501 var122 = 3;
2502 var123 = NEW_array__NativeArray(var122, &type_array__NativeArraykernel__Object);
2503 ((struct instance_array__NativeArray*)var123)->values[0] = (val*) var103;
2504 ((struct instance_array__NativeArray*)var123)->values[1] = (val*) var115;
2505 ((struct instance_array__NativeArray*)var123)->values[2] = (val*) var117;
2506 {
2507 ((void (*)(val*, val*, long))(var121->class->vft[COLOR_array__Array__with_native]))(var121, var123, var122) /* with_native on <var121:Array[Object]>*/;
2508 }
2509 }
2510 {
2511 var124 = ((val* (*)(val*))(var121->class->vft[COLOR_string__Object__to_s]))(var121) /* to_s on <var121:Array[Object]>*/;
2512 }
2513 {
2514 array__Array__add(var99, var124); /* Direct call array#Array#add on <var99:Array[String]>*/
2515 }
2516 } else {
2517 }
2518 CONTINUE_label125: (void)0;
2519 {
2520 array__ArrayIterator__next(var86); /* Direct call array#ArrayIterator#next on <var86:ArrayIterator[nullable Object]>*/
2521 }
2522 }
2523 BREAK_label125: (void)0;
2524 RET_LABEL:;
2525 }
2526 /* method opts#OptionContext#parse_intern for (self: Object, Iterator[String]) */
2527 void VIRTUAL_opts__OptionContext__parse_intern(val* self, val* p0) {
2528 opts__OptionContext__parse_intern(self, p0); /* Direct call opts#OptionContext#parse_intern on <self:Object(OptionContext)>*/
2529 RET_LABEL:;
2530 }
2531 /* method opts#OptionContext#build for (self: OptionContext) */
2532 void opts__OptionContext__build(val* self) {
2533 val* var /* : Array[Option] */;
2534 val* var2 /* : Array[Option] */;
2535 val* var3 /* : ArrayIterator[nullable Object] */;
2536 short int var4 /* : Bool */;
2537 val* var5 /* : nullable Object */;
2538 val* var_o /* var o: Option */;
2539 val* var6 /* : Array[String] */;
2540 val* var8 /* : Array[String] */;
2541 val* var9 /* : ArrayIterator[nullable Object] */;
2542 short int var10 /* : Bool */;
2543 val* var11 /* : nullable Object */;
2544 val* var_n /* var n: String */;
2545 val* var12 /* : Map[String, Option] */;
2546 val* var14 /* : Map[String, Option] */;
2547 {
2548 { /* Inline opts#OptionContext#options (self) on <self:OptionContext> */
2549 var2 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
2550 if (unlikely(var2 == NULL)) {
2551 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
2552 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 247);
2553 show_backtrace(1);
2554 }
2555 var = var2;
2556 RET_LABEL1:(void)0;
2557 }
2558 }
2559 {
2560 var3 = array__AbstractArrayRead__iterator(var);
2561 }
2562 for(;;) {
2563 {
2564 var4 = array__ArrayIterator__is_ok(var3);
2565 }
2566 if(!var4) break;
2567 {
2568 var5 = array__ArrayIterator__item(var3);
2569 }
2570 var_o = var5;
2571 {
2572 { /* Inline opts#Option#names (var_o) on <var_o:Option> */
2573 var8 = var_o->attrs[COLOR_opts__Option___names].val; /* _names on <var_o:Option> */
2574 if (unlikely(var8 == 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 var6 = var8;
2580 RET_LABEL7:(void)0;
2581 }
2582 }
2583 {
2584 var9 = array__AbstractArrayRead__iterator(var6);
2585 }
2586 for(;;) {
2587 {
2588 var10 = array__ArrayIterator__is_ok(var9);
2589 }
2590 if(!var10) break;
2591 {
2592 var11 = array__ArrayIterator__item(var9);
2593 }
2594 var_n = var11;
2595 {
2596 { /* Inline opts#OptionContext#optmap (self) on <self:OptionContext> */
2597 var14 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
2598 if (unlikely(var14 == NULL)) {
2599 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap");
2600 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 256);
2601 show_backtrace(1);
2602 }
2603 var12 = var14;
2604 RET_LABEL13:(void)0;
2605 }
2606 }
2607 {
2608 ((void (*)(val*, val*, val*))(var12->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var12, var_n, var_o) /* []= on <var12:Map[String, Option]>*/;
2609 }
2610 CONTINUE_label: (void)0;
2611 {
2612 array__ArrayIterator__next(var9); /* Direct call array#ArrayIterator#next on <var9:ArrayIterator[nullable Object]>*/
2613 }
2614 }
2615 BREAK_label: (void)0;
2616 CONTINUE_label15: (void)0;
2617 {
2618 array__ArrayIterator__next(var3); /* Direct call array#ArrayIterator#next on <var3:ArrayIterator[nullable Object]>*/
2619 }
2620 }
2621 BREAK_label15: (void)0;
2622 RET_LABEL:;
2623 }
2624 /* method opts#OptionContext#build for (self: Object) */
2625 void VIRTUAL_opts__OptionContext__build(val* self) {
2626 opts__OptionContext__build(self); /* Direct call opts#OptionContext#build on <self:Object(OptionContext)>*/
2627 RET_LABEL:;
2628 }
2629 /* method opts#OptionContext#get_errors for (self: OptionContext): Array[String] */
2630 val* opts__OptionContext__get_errors(val* self) {
2631 val* var /* : Array[String] */;
2632 val* var1 /* : Array[String] */;
2633 val* var_errors /* var errors: Array[String] */;
2634 val* var2 /* : Array[Option] */;
2635 val* var4 /* : Array[Option] */;
2636 val* var5 /* : ArrayIterator[nullable Object] */;
2637 short int var6 /* : Bool */;
2638 val* var7 /* : nullable Object */;
2639 val* var_o /* var o: Option */;
2640 val* var8 /* : Array[String] */;
2641 val* var10 /* : Array[String] */;
2642 val* var11 /* : ArrayIterator[nullable Object] */;
2643 short int var12 /* : Bool */;
2644 val* var13 /* : nullable Object */;
2645 val* var_e /* var e: String */;
2646 var1 = NEW_array__Array(&type_array__Arraystring__String);
2647 {
2648 array__Array__init(var1); /* Direct call array#Array#init on <var1:Array[String]>*/
2649 }
2650 var_errors = var1;
2651 {
2652 abstract_collection__SimpleCollection__add_all(var_errors, var_errors); /* Direct call abstract_collection#SimpleCollection#add_all on <var_errors:Array[String]>*/
2653 }
2654 {
2655 { /* Inline opts#OptionContext#options (self) on <self:OptionContext> */
2656 var4 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
2657 if (unlikely(var4 == NULL)) {
2658 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
2659 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 247);
2660 show_backtrace(1);
2661 }
2662 var2 = var4;
2663 RET_LABEL3:(void)0;
2664 }
2665 }
2666 {
2667 var5 = array__AbstractArrayRead__iterator(var2);
2668 }
2669 for(;;) {
2670 {
2671 var6 = array__ArrayIterator__is_ok(var5);
2672 }
2673 if(!var6) break;
2674 {
2675 var7 = array__ArrayIterator__item(var5);
2676 }
2677 var_o = var7;
2678 {
2679 { /* Inline opts#Option#errors (var_o) on <var_o:Option> */
2680 var10 = var_o->attrs[COLOR_opts__Option___errors].val; /* _errors on <var_o:Option> */
2681 if (unlikely(var10 == NULL)) {
2682 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _errors");
2683 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 28);
2684 show_backtrace(1);
2685 }
2686 var8 = var10;
2687 RET_LABEL9:(void)0;
2688 }
2689 }
2690 {
2691 var11 = array__AbstractArrayRead__iterator(var8);
2692 }
2693 for(;;) {
2694 {
2695 var12 = array__ArrayIterator__is_ok(var11);
2696 }
2697 if(!var12) break;
2698 {
2699 var13 = array__ArrayIterator__item(var11);
2700 }
2701 var_e = var13;
2702 {
2703 array__Array__add(var_errors, var_e); /* Direct call array#Array#add on <var_errors:Array[String]>*/
2704 }
2705 CONTINUE_label: (void)0;
2706 {
2707 array__ArrayIterator__next(var11); /* Direct call array#ArrayIterator#next on <var11:ArrayIterator[nullable Object]>*/
2708 }
2709 }
2710 BREAK_label: (void)0;
2711 CONTINUE_label14: (void)0;
2712 {
2713 array__ArrayIterator__next(var5); /* Direct call array#ArrayIterator#next on <var5:ArrayIterator[nullable Object]>*/
2714 }
2715 }
2716 BREAK_label14: (void)0;
2717 var = var_errors;
2718 goto RET_LABEL;
2719 RET_LABEL:;
2720 return var;
2721 }
2722 /* method opts#OptionContext#get_errors for (self: Object): Array[String] */
2723 val* VIRTUAL_opts__OptionContext__get_errors(val* self) {
2724 val* var /* : Array[String] */;
2725 val* var1 /* : Array[String] */;
2726 var1 = opts__OptionContext__get_errors(self);
2727 var = var1;
2728 RET_LABEL:;
2729 return var;
2730 }