tests: update more sav because of the improved null-aware adaptive typing
[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___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", FILE_opts, 19);
10 fatal_exit(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method opts#Option#names= for (self: Option, Array[String]) */
17 void opts___opts__Option___names_61d(val* self, val* p0) {
18 self->attrs[COLOR_opts__Option___names].val = p0; /* _names on <self:Option> */
19 RET_LABEL:;
20 }
21 /* method opts#Option#helptext for (self: Option): String */
22 val* opts___opts__Option___helptext(val* self) {
23 val* var /* : String */;
24 val* var1 /* : String */;
25 var1 = self->attrs[COLOR_opts__Option___helptext].val; /* _helptext on <self:Option> */
26 if (unlikely(var1 == NULL)) {
27 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _helptext");
28 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 25);
29 fatal_exit(1);
30 }
31 var = var1;
32 RET_LABEL:;
33 return var;
34 }
35 /* method opts#Option#helptext= for (self: Option, String) */
36 void opts___opts__Option___helptext_61d(val* self, val* p0) {
37 self->attrs[COLOR_opts__Option___helptext].val = p0; /* _helptext on <self:Option> */
38 RET_LABEL:;
39 }
40 /* method opts#Option#errors for (self: Option): Array[String] */
41 val* opts___opts__Option___errors(val* self) {
42 val* var /* : Array[String] */;
43 val* var1 /* : Array[String] */;
44 var1 = self->attrs[COLOR_opts__Option___errors].val; /* _errors on <self:Option> */
45 if (unlikely(var1 == NULL)) {
46 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _errors");
47 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 28);
48 fatal_exit(1);
49 }
50 var = var1;
51 RET_LABEL:;
52 return var;
53 }
54 /* method opts#Option#mandatory for (self: Option): Bool */
55 short int opts___opts__Option___mandatory(val* self) {
56 short int var /* : Bool */;
57 short int var1 /* : Bool */;
58 var1 = self->attrs[COLOR_opts__Option___mandatory].s; /* _mandatory on <self:Option> */
59 var = var1;
60 RET_LABEL:;
61 return var;
62 }
63 /* method opts#Option#hidden for (self: Option): Bool */
64 short int opts___opts__Option___hidden(val* self) {
65 short int var /* : Bool */;
66 short int var1 /* : Bool */;
67 var1 = self->attrs[COLOR_opts__Option___hidden].s; /* _hidden on <self:Option> */
68 var = var1;
69 RET_LABEL:;
70 return var;
71 }
72 /* method opts#Option#hidden= for (self: Option, Bool) */
73 void opts___opts__Option___hidden_61d(val* self, short int p0) {
74 self->attrs[COLOR_opts__Option___hidden].s = p0; /* _hidden on <self:Option> */
75 RET_LABEL:;
76 }
77 /* method opts#Option#read for (self: Option): Bool */
78 short int opts___opts__Option___read(val* self) {
79 short int var /* : Bool */;
80 short int var1 /* : Bool */;
81 var1 = self->attrs[COLOR_opts__Option___read].s; /* _read on <self:Option> */
82 var = var1;
83 RET_LABEL:;
84 return var;
85 }
86 /* method opts#Option#read= for (self: Option, Bool) */
87 void opts___opts__Option___read_61d(val* self, short int p0) {
88 self->attrs[COLOR_opts__Option___read].s = p0; /* _read on <self:Option> */
89 RET_LABEL:;
90 }
91 /* method opts#Option#value for (self: Option): nullable Object */
92 val* opts___opts__Option___value(val* self) {
93 val* var /* : nullable Object */;
94 val* var1 /* : nullable Object */;
95 var1 = self->attrs[COLOR_opts__Option___value].val; /* _value on <self:Option> */
96 var = var1;
97 RET_LABEL:;
98 return var;
99 }
100 /* method opts#Option#value= for (self: Option, nullable Object) */
101 void opts___opts__Option___value_61d(val* self, val* p0) {
102 short int var /* : Bool */;
103 int cltype;
104 int idtype;
105 const struct type* type_struct;
106 short int is_nullable;
107 const char* var_class_name;
108 /* Covariant cast for argument 0 (value) <p0:nullable Object> isa VALUE */
109 /* <p0:nullable Object> isa VALUE */
110 type_struct = self->type->resolution_table->types[COLOR_opts__Option__VALUE];
111 cltype = type_struct->color;
112 idtype = type_struct->id;
113 is_nullable = type_struct->is_nullable;
114 if(p0 == NULL) {
115 var = is_nullable;
116 } else {
117 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
118 var = 0;
119 } else {
120 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
121 }
122 }
123 if (unlikely(!var)) {
124 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
125 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
126 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 40);
127 fatal_exit(1);
128 }
129 self->attrs[COLOR_opts__Option___value].val = p0; /* _value on <self:Option> */
130 RET_LABEL:;
131 }
132 /* method opts#Option#default_value= for (self: Option, nullable Object) */
133 void opts___opts__Option___default_value_61d(val* self, val* p0) {
134 short int var /* : Bool */;
135 int cltype;
136 int idtype;
137 const struct type* type_struct;
138 short int is_nullable;
139 const char* var_class_name;
140 /* Covariant cast for argument 0 (default_value) <p0:nullable Object> isa VALUE */
141 /* <p0:nullable Object> isa VALUE */
142 type_struct = self->type->resolution_table->types[COLOR_opts__Option__VALUE];
143 cltype = type_struct->color;
144 idtype = type_struct->id;
145 is_nullable = type_struct->is_nullable;
146 if(p0 == NULL) {
147 var = is_nullable;
148 } else {
149 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
150 var = 0;
151 } else {
152 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
153 }
154 }
155 if (unlikely(!var)) {
156 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
157 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
158 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 43);
159 fatal_exit(1);
160 }
161 self->attrs[COLOR_opts__Option___default_value].val = p0; /* _default_value on <self:Option> */
162 RET_LABEL:;
163 }
164 /* method opts#Option#init for (self: Option, String, nullable Object, nullable Array[String]) */
165 void opts___opts__Option___init(val* self, val* p0, val* p1, val* p2) {
166 short int var /* : Bool */;
167 int cltype;
168 int idtype;
169 const struct type* type_struct;
170 short int is_nullable;
171 const char* var_class_name;
172 val* var_help /* var help: String */;
173 val* var_default /* var default: nullable Object */;
174 val* var_names /* var names: nullable Array[String] */;
175 /* Covariant cast for argument 1 (default) <p1:nullable Object> isa VALUE */
176 /* <p1:nullable Object> isa VALUE */
177 type_struct = self->type->resolution_table->types[COLOR_opts__Option__VALUE];
178 cltype = type_struct->color;
179 idtype = type_struct->id;
180 is_nullable = type_struct->is_nullable;
181 if(p1 == NULL) {
182 var = is_nullable;
183 } else {
184 if(cltype >= (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->table_size) {
185 var = 0;
186 } else {
187 var = (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->type_table[cltype] == idtype;
188 }
189 }
190 if (unlikely(!var)) {
191 var_class_name = p1 == NULL ? "null" : (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->name;
192 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
193 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 46);
194 fatal_exit(1);
195 }
196 {
197 { /* Inline kernel#Object#init (self) on <self:Option> */
198 RET_LABEL1:(void)0;
199 }
200 }
201 var_help = p0;
202 var_default = p1;
203 var_names = p2;
204 {
205 opts___opts__Option___init_opt(self, var_help, var_default, var_names); /* Direct call opts#Option#init_opt on <self:Option>*/
206 }
207 RET_LABEL:;
208 }
209 /* method opts#Option#init_opt for (self: Option, String, nullable Object, nullable Array[String]) */
210 void opts___opts__Option___init_opt(val* self, val* p0, val* p1, val* p2) {
211 short int var /* : Bool */;
212 int cltype;
213 int idtype;
214 const struct type* type_struct;
215 short int is_nullable;
216 const char* var_class_name;
217 val* var_help /* var help: String */;
218 val* var_default /* var default: nullable Object */;
219 val* var_names /* var names: nullable Array[String] */;
220 short int var1 /* : Bool */;
221 short int var2 /* : Bool */;
222 val* var3 /* : Array[String] */;
223 val* var5 /* : Array[nullable Object] */;
224 short int var9 /* : Bool */;
225 int cltype10;
226 int idtype11;
227 const struct type* type_struct12;
228 short int is_nullable13;
229 const char* var_class_name14;
230 short int var16 /* : Bool */;
231 int cltype17;
232 int idtype18;
233 const struct type* type_struct19;
234 short int is_nullable20;
235 const char* var_class_name21;
236 /* Covariant cast for argument 1 (default) <p1:nullable Object> isa VALUE */
237 /* <p1:nullable Object> isa VALUE */
238 type_struct = self->type->resolution_table->types[COLOR_opts__Option__VALUE];
239 cltype = type_struct->color;
240 idtype = type_struct->id;
241 is_nullable = type_struct->is_nullable;
242 if(p1 == NULL) {
243 var = is_nullable;
244 } else {
245 if(cltype >= (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->table_size) {
246 var = 0;
247 } else {
248 var = (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->type_table[cltype] == idtype;
249 }
250 }
251 if (unlikely(!var)) {
252 var_class_name = p1 == NULL ? "null" : (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->name;
253 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
254 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 51);
255 fatal_exit(1);
256 }
257 var_help = p0;
258 var_default = p1;
259 var_names = p2;
260 if (var_names == NULL) {
261 var1 = 1; /* is null */
262 } else {
263 var1 = 0; /* arg is null but recv is not */
264 }
265 if (0) {
266 var2 = core___core__Array___core__kernel__Object___61d_61d(var_names, ((val*)NULL));
267 var1 = var2;
268 }
269 if (var1){
270 var3 = NEW_core__Array(&type_core__Array__core__String);
271 {
272 core___core__Array___core__kernel__Object__init(var3); /* Direct call array#Array#init on <var3:Array[String]>*/
273 }
274 {
275 { /* Inline opts#Option#names= (self,var3) on <self:Option> */
276 self->attrs[COLOR_opts__Option___names].val = var3; /* _names on <self:Option> */
277 RET_LABEL4:(void)0;
278 }
279 }
280 } else {
281 {
282 var5 = core__array___Collection___to_a(var_names);
283 }
284 {
285 { /* Inline opts#Option#names= (self,var5) on <self:Option> */
286 self->attrs[COLOR_opts__Option___names].val = var5; /* _names on <self:Option> */
287 RET_LABEL6:(void)0;
288 }
289 }
290 }
291 {
292 { /* Inline opts#Option#helptext= (self,var_help) on <self:Option> */
293 self->attrs[COLOR_opts__Option___helptext].val = var_help; /* _helptext on <self:Option> */
294 RET_LABEL7:(void)0;
295 }
296 }
297 {
298 { /* Inline opts#Option#default_value= (self,var_default) on <self:Option> */
299 /* Covariant cast for argument 0 (default_value) <var_default:nullable Object> isa VALUE */
300 /* <var_default:nullable Object> isa VALUE */
301 type_struct12 = self->type->resolution_table->types[COLOR_opts__Option__VALUE];
302 cltype10 = type_struct12->color;
303 idtype11 = type_struct12->id;
304 is_nullable13 = type_struct12->is_nullable;
305 if(var_default == NULL) {
306 var9 = is_nullable13;
307 } else {
308 if(cltype10 >= (((long)var_default&3)?type_info[((long)var_default&3)]:var_default->type)->table_size) {
309 var9 = 0;
310 } else {
311 var9 = (((long)var_default&3)?type_info[((long)var_default&3)]:var_default->type)->type_table[cltype10] == idtype11;
312 }
313 }
314 if (unlikely(!var9)) {
315 var_class_name14 = var_default == NULL ? "null" : (((long)var_default&3)?type_info[((long)var_default&3)]:var_default->type)->name;
316 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name14);
317 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 43);
318 fatal_exit(1);
319 }
320 self->attrs[COLOR_opts__Option___default_value].val = var_default; /* _default_value on <self:Option> */
321 RET_LABEL8:(void)0;
322 }
323 }
324 {
325 { /* Inline opts#Option#value= (self,var_default) on <self:Option> */
326 /* Covariant cast for argument 0 (value) <var_default:nullable Object> isa VALUE */
327 /* <var_default:nullable Object> isa VALUE */
328 type_struct19 = self->type->resolution_table->types[COLOR_opts__Option__VALUE];
329 cltype17 = type_struct19->color;
330 idtype18 = type_struct19->id;
331 is_nullable20 = type_struct19->is_nullable;
332 if(var_default == NULL) {
333 var16 = is_nullable20;
334 } else {
335 if(cltype17 >= (((long)var_default&3)?type_info[((long)var_default&3)]:var_default->type)->table_size) {
336 var16 = 0;
337 } else {
338 var16 = (((long)var_default&3)?type_info[((long)var_default&3)]:var_default->type)->type_table[cltype17] == idtype18;
339 }
340 }
341 if (unlikely(!var16)) {
342 var_class_name21 = var_default == NULL ? "null" : (((long)var_default&3)?type_info[((long)var_default&3)]:var_default->type)->name;
343 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name21);
344 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 40);
345 fatal_exit(1);
346 }
347 self->attrs[COLOR_opts__Option___value].val = var_default; /* _value on <self:Option> */
348 RET_LABEL15:(void)0;
349 }
350 }
351 RET_LABEL:;
352 }
353 /* method opts#Option#to_s for (self: Option): String */
354 val* opts___opts__Option___core__abstract_text__Object__to_s(val* self) {
355 val* var /* : String */;
356 val* var1 /* : String */;
357 {
358 var1 = opts___opts__Option___pretty(self, 2l);
359 }
360 var = var1;
361 goto RET_LABEL;
362 RET_LABEL:;
363 return var;
364 }
365 /* method opts#Option#pretty for (self: Option, Int): String */
366 val* opts___opts__Option___pretty(val* self, long p0) {
367 val* var /* : String */;
368 long var_off /* var off: Int */;
369 val* var1 /* : FlatBuffer */;
370 static val* varonce;
371 val* var2 /* : String */;
372 char* var3 /* : NativeString */;
373 val* var4 /* : String */;
374 val* var_text /* var text: FlatBuffer */;
375 val* var5 /* : Array[String] */;
376 val* var7 /* : Array[String] */;
377 static val* varonce8;
378 val* var9 /* : String */;
379 char* var10 /* : NativeString */;
380 val* var11 /* : String */;
381 val* var12 /* : String */;
382 static val* varonce13;
383 val* var14 /* : String */;
384 char* var15 /* : NativeString */;
385 val* var16 /* : String */;
386 long var17 /* : Int */;
387 long var19 /* : Int */;
388 long var20 /* : Int */;
389 short int var22 /* : Bool */;
390 int cltype;
391 int idtype;
392 const char* var_class_name;
393 long var23 /* : Int */;
394 long var_rest /* var rest: Int */;
395 short int var24 /* : Bool */;
396 short int var26 /* : Bool */;
397 int cltype27;
398 int idtype28;
399 const char* var_class_name29;
400 short int var30 /* : Bool */;
401 static val* varonce31;
402 val* var32 /* : String */;
403 char* var33 /* : NativeString */;
404 val* var34 /* : String */;
405 val* var35 /* : String */;
406 val* var36 /* : String */;
407 val* var38 /* : String */;
408 val* var39 /* : String */;
409 var_off = p0;
410 var1 = NEW_core__FlatBuffer(&type_core__FlatBuffer);
411 if (likely(varonce!=NULL)) {
412 var2 = varonce;
413 } else {
414 var3 = " ";
415 var4 = core__flat___NativeString___to_s_full(var3, 2l, 2l);
416 var2 = var4;
417 varonce = var2;
418 }
419 {
420 core___core__FlatBuffer___from(var1, var2); /* Direct call flat#FlatBuffer#from on <var1:FlatBuffer>*/
421 }
422 var_text = var1;
423 {
424 { /* Inline opts#Option#names (self) on <self:Option> */
425 var7 = self->attrs[COLOR_opts__Option___names].val; /* _names on <self:Option> */
426 if (unlikely(var7 == NULL)) {
427 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
428 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 19);
429 fatal_exit(1);
430 }
431 var5 = var7;
432 RET_LABEL6:(void)0;
433 }
434 }
435 if (likely(varonce8!=NULL)) {
436 var9 = varonce8;
437 } else {
438 var10 = ", ";
439 var11 = core__flat___NativeString___to_s_full(var10, 2l, 2l);
440 var9 = var11;
441 varonce8 = var9;
442 }
443 {
444 var12 = core__abstract_text___Collection___join(var5, var9);
445 }
446 {
447 core___core__FlatBuffer___core__abstract_text__Buffer__append(var_text, var12); /* Direct call flat#FlatBuffer#append on <var_text:FlatBuffer>*/
448 }
449 if (likely(varonce13!=NULL)) {
450 var14 = varonce13;
451 } else {
452 var15 = " ";
453 var16 = core__flat___NativeString___to_s_full(var15, 2l, 2l);
454 var14 = var16;
455 varonce13 = var14;
456 }
457 {
458 core___core__FlatBuffer___core__abstract_text__Buffer__append(var_text, var14); /* Direct call flat#FlatBuffer#append on <var_text:FlatBuffer>*/
459 }
460 {
461 { /* Inline abstract_text#FlatText#length (var_text) on <var_text:FlatBuffer> */
462 var19 = var_text->attrs[COLOR_core__abstract_text__FlatText___length].l; /* _length on <var_text:FlatBuffer> */
463 var17 = var19;
464 RET_LABEL18:(void)0;
465 }
466 }
467 {
468 { /* Inline kernel#Int#- (var_off,var17) on <var_off:Int> */
469 /* Covariant cast for argument 0 (i) <var17:Int> isa OTHER */
470 /* <var17:Int> isa OTHER */
471 var22 = 1; /* easy <var17:Int> isa OTHER*/
472 if (unlikely(!var22)) {
473 var_class_name = type_core__Int.name;
474 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
475 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
476 fatal_exit(1);
477 }
478 var23 = var_off - var17;
479 var20 = var23;
480 goto RET_LABEL21;
481 RET_LABEL21:(void)0;
482 }
483 }
484 var_rest = var20;
485 {
486 { /* Inline kernel#Int#> (var_rest,0l) on <var_rest:Int> */
487 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
488 /* <0l:Int> isa OTHER */
489 var26 = 1; /* easy <0l:Int> isa OTHER*/
490 if (unlikely(!var26)) {
491 var_class_name29 = type_core__Int.name;
492 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name29);
493 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
494 fatal_exit(1);
495 }
496 var30 = var_rest > 0l;
497 var24 = var30;
498 goto RET_LABEL25;
499 RET_LABEL25:(void)0;
500 }
501 }
502 if (var24){
503 if (likely(varonce31!=NULL)) {
504 var32 = varonce31;
505 } else {
506 var33 = " ";
507 var34 = core__flat___NativeString___to_s_full(var33, 1l, 1l);
508 var32 = var34;
509 varonce31 = var32;
510 }
511 {
512 var35 = ((val*(*)(val* self, long p0))(var32->class->vft[COLOR_core__abstract_text__String___42d]))(var32, var_rest); /* * on <var32:String>*/
513 }
514 {
515 core___core__FlatBuffer___core__abstract_text__Buffer__append(var_text, var35); /* Direct call flat#FlatBuffer#append on <var_text:FlatBuffer>*/
516 }
517 } else {
518 }
519 {
520 { /* Inline opts#Option#helptext (self) on <self:Option> */
521 var38 = self->attrs[COLOR_opts__Option___helptext].val; /* _helptext on <self:Option> */
522 if (unlikely(var38 == NULL)) {
523 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _helptext");
524 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 25);
525 fatal_exit(1);
526 }
527 var36 = var38;
528 RET_LABEL37:(void)0;
529 }
530 }
531 {
532 core___core__FlatBuffer___core__abstract_text__Buffer__append(var_text, var36); /* Direct call flat#FlatBuffer#append on <var_text:FlatBuffer>*/
533 }
534 {
535 var39 = core___core__FlatBuffer___core__abstract_text__Object__to_s(var_text);
536 }
537 var = var39;
538 goto RET_LABEL;
539 RET_LABEL:;
540 return var;
541 }
542 /* method opts#Option#read_param for (self: Option, OptionContext, Iterator[String]) */
543 void opts___opts__Option___read_param(val* self, val* p0, val* p1) {
544 val* var_opts /* var opts: OptionContext */;
545 val* var_it /* var it: Iterator[String] */;
546 var_opts = p0;
547 var_it = p1;
548 {
549 { /* Inline opts#Option#read= (self,1) on <self:Option> */
550 self->attrs[COLOR_opts__Option___read].s = 1; /* _read on <self:Option> */
551 RET_LABEL1:(void)0;
552 }
553 }
554 RET_LABEL:;
555 }
556 /* method opts#OptionBool#init for (self: OptionBool, String, Array[String]) */
557 void opts___opts__OptionBool___init(val* self, val* p0, val* p1) {
558 val* var_help /* var help: String */;
559 val* var_names /* var names: Array[String] */;
560 val* var /* : nullable Object */;
561 var_help = p0;
562 var_names = p1;
563 {
564 var = (val*)((long)(0)<<2|3);
565 opts___opts__Option___init(self, var_help, var, var_names); /* Direct call opts#Option#init on <self:OptionBool>*/
566 }
567 RET_LABEL:;
568 }
569 /* method opts#OptionBool#read_param for (self: OptionBool, OptionContext, Iterator[String]) */
570 void opts___opts__OptionBool___Option__read_param(val* self, val* p0, val* p1) {
571 val* var_opts /* var opts: OptionContext */;
572 val* var_it /* var it: Iterator[String] */;
573 short int var /* : Bool */;
574 int cltype;
575 int idtype;
576 const struct type* type_struct;
577 const char* var_class_name;
578 val* var2 /* : nullable Object */;
579 var_opts = p0;
580 var_it = p1;
581 {
582 ((void(*)(val* self, val* p0, val* p1))(self->class->vft[COLOR_opts___opts__OptionBool___Option__read_param]))(self, p0, p1); /* read_param on <self:OptionBool>*/
583 }
584 {
585 { /* Inline opts#Option#value= (self,1) on <self:OptionBool> */
586 /* Covariant cast for argument 0 (value) <1:Bool> isa VALUE */
587 /* <1:Bool> isa VALUE */
588 type_struct = self->type->resolution_table->types[COLOR_opts__Option__VALUE];
589 cltype = type_struct->color;
590 idtype = type_struct->id;
591 if(cltype >= (&type_core__Bool)->table_size) {
592 var = 0;
593 } else {
594 var = (&type_core__Bool)->type_table[cltype] == idtype;
595 }
596 if (unlikely(!var)) {
597 var_class_name = type_core__Bool.name;
598 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
599 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 40);
600 fatal_exit(1);
601 }
602 var2 = (val*)((long)(1)<<2|3);
603 self->attrs[COLOR_opts__Option___value].val = var2; /* _value on <self:OptionBool> */
604 RET_LABEL1:(void)0;
605 }
606 }
607 RET_LABEL:;
608 }
609 /* method opts#OptionCount#init for (self: OptionCount, String, Array[String]) */
610 void opts___opts__OptionCount___init(val* self, val* p0, val* p1) {
611 val* var_help /* var help: String */;
612 val* var_names /* var names: Array[String] */;
613 val* var /* : nullable Object */;
614 var_help = p0;
615 var_names = p1;
616 {
617 var = (val*)(0l<<2|1);
618 opts___opts__Option___init(self, var_help, var, var_names); /* Direct call opts#Option#init on <self:OptionCount>*/
619 }
620 RET_LABEL:;
621 }
622 /* method opts#OptionCount#read_param for (self: OptionCount, OptionContext, Iterator[String]) */
623 void opts___opts__OptionCount___Option__read_param(val* self, val* p0, val* p1) {
624 val* var_opts /* var opts: OptionContext */;
625 val* var_it /* var it: Iterator[String] */;
626 val* var_ /* var : OptionCount */;
627 val* var /* : nullable Object */;
628 val* var2 /* : nullable Object */;
629 long var3 /* : Int */;
630 short int var5 /* : Bool */;
631 int cltype;
632 int idtype;
633 const char* var_class_name;
634 long var6 /* : Int */;
635 long var7 /* : Int */;
636 short int var9 /* : Bool */;
637 int cltype10;
638 int idtype11;
639 const struct type* type_struct;
640 const char* var_class_name12;
641 val* var13 /* : nullable Object */;
642 var_opts = p0;
643 var_it = p1;
644 {
645 ((void(*)(val* self, val* p0, val* p1))(self->class->vft[COLOR_opts___opts__OptionCount___Option__read_param]))(self, p0, p1); /* read_param on <self:OptionCount>*/
646 }
647 var_ = self;
648 {
649 { /* Inline opts#Option#value (var_) on <var_:OptionCount> */
650 var2 = var_->attrs[COLOR_opts__Option___value].val; /* _value on <var_:OptionCount> */
651 var = var2;
652 RET_LABEL1:(void)0;
653 }
654 }
655 {
656 { /* Inline kernel#Int#+ (var,1l) on <var:nullable Object(Int)> */
657 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
658 /* <1l:Int> isa OTHER */
659 var5 = 1; /* easy <1l:Int> isa OTHER*/
660 if (unlikely(!var5)) {
661 var_class_name = type_core__Int.name;
662 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
663 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
664 fatal_exit(1);
665 }
666 var6 = (long)(var)>>2;
667 var7 = var6 + 1l;
668 var3 = var7;
669 goto RET_LABEL4;
670 RET_LABEL4:(void)0;
671 }
672 }
673 {
674 { /* Inline opts#Option#value= (var_,var3) on <var_:OptionCount> */
675 /* Covariant cast for argument 0 (value) <var3:Int> isa VALUE */
676 /* <var3:Int> isa VALUE */
677 type_struct = var_->type->resolution_table->types[COLOR_opts__Option__VALUE];
678 cltype10 = type_struct->color;
679 idtype11 = type_struct->id;
680 if(cltype10 >= (&type_core__Int)->table_size) {
681 var9 = 0;
682 } else {
683 var9 = (&type_core__Int)->type_table[cltype10] == idtype11;
684 }
685 if (unlikely(!var9)) {
686 var_class_name12 = type_core__Int.name;
687 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name12);
688 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 40);
689 fatal_exit(1);
690 }
691 var13 = (val*)(var3<<2|1);
692 var_->attrs[COLOR_opts__Option___value].val = var13; /* _value on <var_:OptionCount> */
693 RET_LABEL8:(void)0;
694 }
695 }
696 RET_LABEL:;
697 }
698 /* method opts#OptionParameter#parameter_mandatory for (self: OptionParameter): Bool */
699 short int opts___opts__OptionParameter___parameter_mandatory(val* self) {
700 short int var /* : Bool */;
701 short int var1 /* : Bool */;
702 var1 = self->attrs[COLOR_opts__OptionParameter___parameter_mandatory].s; /* _parameter_mandatory on <self:OptionParameter> */
703 var = var1;
704 RET_LABEL:;
705 return var;
706 }
707 /* method opts#OptionParameter#read_param for (self: OptionParameter, OptionContext, Iterator[String]) */
708 void opts___opts__OptionParameter___Option__read_param(val* self, val* p0, val* p1) {
709 val* var_opts /* var opts: OptionContext */;
710 val* var_it /* var it: Iterator[String] */;
711 short int var /* : Bool */;
712 short int var_ok /* var ok: Bool */;
713 short int var1 /* : Bool */;
714 short int var2 /* : Bool */;
715 short int var3 /* : Bool */;
716 short int var_ /* var : Bool */;
717 short int var4 /* : Bool */;
718 short int var6 /* : Bool */;
719 short int var7 /* : Bool */;
720 short int var_8 /* var : Bool */;
721 val* var9 /* : nullable Object */;
722 short int var10 /* : Bool */;
723 short int var11 /* : Bool */;
724 short int var_12 /* var : Bool */;
725 val* var13 /* : nullable Object */;
726 val* var14 /* : SequenceRead[Char] */;
727 val* var15 /* : nullable Object */;
728 short int var16 /* : Bool */;
729 short int var18 /* : Bool */;
730 uint32_t var19 /* : Char */;
731 val* var20 /* : Array[Option] */;
732 val* var22 /* : Array[Option] */;
733 val* var_23 /* var : Array[Option] */;
734 val* var24 /* : IndexedIterator[nullable Object] */;
735 val* var_25 /* var : IndexedIterator[Option] */;
736 short int var26 /* : Bool */;
737 val* var27 /* : nullable Object */;
738 val* var_opt /* var opt: Option */;
739 val* var28 /* : Array[String] */;
740 val* var30 /* : Array[String] */;
741 val* var31 /* : nullable Object */;
742 short int var32 /* : Bool */;
743 val* var33 /* : nullable Object */;
744 val* var34 /* : nullable Object */;
745 short int var36 /* : Bool */;
746 int cltype;
747 int idtype;
748 const struct type* type_struct;
749 short int is_nullable;
750 const char* var_class_name;
751 val* var37 /* : Array[String] */;
752 val* var39 /* : Array[String] */;
753 val* var40 /* : NativeArray[String] */;
754 static val* varonce;
755 static val* varonce41;
756 val* var42 /* : String */;
757 char* var43 /* : NativeString */;
758 val* var44 /* : String */;
759 static val* varonce45;
760 val* var46 /* : String */;
761 char* var47 /* : NativeString */;
762 val* var48 /* : String */;
763 val* var49 /* : Array[String] */;
764 val* var51 /* : Array[String] */;
765 val* var52 /* : nullable Object */;
766 val* var53 /* : String */;
767 var_opts = p0;
768 var_it = p1;
769 {
770 ((void(*)(val* self, val* p0, val* p1))(self->class->vft[COLOR_opts___opts__OptionParameter___Option__read_param]))(self, p0, p1); /* read_param on <self:OptionParameter>*/
771 }
772 {
773 var = ((short int(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_it); /* is_ok on <var_it:Iterator[String]>*/
774 }
775 var_ok = var;
776 var_ = var_ok;
777 if (var_ok){
778 {
779 { /* Inline opts#OptionParameter#parameter_mandatory (self) on <self:OptionParameter> */
780 var6 = self->attrs[COLOR_opts__OptionParameter___parameter_mandatory].s; /* _parameter_mandatory on <self:OptionParameter> */
781 var4 = var6;
782 RET_LABEL5:(void)0;
783 }
784 }
785 var7 = !var4;
786 var3 = var7;
787 } else {
788 var3 = var_;
789 }
790 var_8 = var3;
791 if (var3){
792 {
793 var9 = ((val*(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_it); /* item on <var_it:Iterator[String]>*/
794 }
795 {
796 var10 = ((short int(*)(val* self))(var9->class->vft[COLOR_core__abstract_text__Text__is_empty]))(var9); /* is_empty on <var9:nullable Object(String)>*/
797 }
798 var11 = !var10;
799 var2 = var11;
800 } else {
801 var2 = var_8;
802 }
803 var_12 = var2;
804 if (var2){
805 {
806 var13 = ((val*(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_it); /* item on <var_it:Iterator[String]>*/
807 }
808 {
809 var14 = ((val*(*)(val* self))(var13->class->vft[COLOR_core__abstract_text__Text__chars]))(var13); /* chars on <var13:nullable Object(String)>*/
810 }
811 {
812 var15 = ((val*(*)(val* self))((((long)var14&3)?class_info[((long)var14&3)]:var14->class)->vft[COLOR_core__abstract_collection__Collection__first]))(var14); /* first on <var14:SequenceRead[Char]>*/
813 }
814 {
815 { /* Inline kernel#Char#== (var15,'-') on <var15:nullable Object(Char)> */
816 var19 = (uint32_t)((long)(var15)>>2);
817 var18 = var19 == '-';
818 var16 = var18;
819 goto RET_LABEL17;
820 RET_LABEL17:(void)0;
821 }
822 }
823 var1 = var16;
824 } else {
825 var1 = var_12;
826 }
827 if (var1){
828 {
829 { /* Inline opts#OptionContext#options (var_opts) on <var_opts:OptionContext> */
830 var22 = var_opts->attrs[COLOR_opts__OptionContext___options].val; /* _options on <var_opts:OptionContext> */
831 if (unlikely(var22 == NULL)) {
832 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
833 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 277);
834 fatal_exit(1);
835 }
836 var20 = var22;
837 RET_LABEL21:(void)0;
838 }
839 }
840 var_23 = var20;
841 {
842 var24 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_23);
843 }
844 var_25 = var24;
845 for(;;) {
846 {
847 var26 = ((short int(*)(val* self))((((long)var_25&3)?class_info[((long)var_25&3)]:var_25->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_25); /* is_ok on <var_25:IndexedIterator[Option]>*/
848 }
849 if (var26){
850 } else {
851 goto BREAK_label;
852 }
853 {
854 var27 = ((val*(*)(val* self))((((long)var_25&3)?class_info[((long)var_25&3)]:var_25->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_25); /* item on <var_25:IndexedIterator[Option]>*/
855 }
856 var_opt = var27;
857 {
858 { /* Inline opts#Option#names (var_opt) on <var_opt:Option> */
859 var30 = var_opt->attrs[COLOR_opts__Option___names].val; /* _names on <var_opt:Option> */
860 if (unlikely(var30 == NULL)) {
861 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
862 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 19);
863 fatal_exit(1);
864 }
865 var28 = var30;
866 RET_LABEL29:(void)0;
867 }
868 }
869 {
870 var31 = ((val*(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_it); /* item on <var_it:Iterator[String]>*/
871 }
872 {
873 var32 = core___core__AbstractArrayRead___core__abstract_collection__Collection__has(var28, var31);
874 }
875 if (var32){
876 var_ok = 0;
877 goto BREAK_label;
878 } else {
879 }
880 {
881 ((void(*)(val* self))((((long)var_25&3)?class_info[((long)var_25&3)]:var_25->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_25); /* next on <var_25:IndexedIterator[Option]>*/
882 }
883 }
884 BREAK_label: (void)0;
885 {
886 ((void(*)(val* self))((((long)var_25&3)?class_info[((long)var_25&3)]:var_25->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_25); /* finish on <var_25:IndexedIterator[Option]>*/
887 }
888 } else {
889 }
890 if (var_ok){
891 {
892 var33 = ((val*(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_it); /* item on <var_it:Iterator[String]>*/
893 }
894 {
895 var34 = ((val*(*)(val* self, val* p0))(self->class->vft[COLOR_opts__OptionParameter__convert]))(self, var33); /* convert on <self:OptionParameter>*/
896 }
897 {
898 { /* Inline opts#Option#value= (self,var34) on <self:OptionParameter> */
899 /* Covariant cast for argument 0 (value) <var34:nullable Object> isa VALUE */
900 /* <var34:nullable Object> isa VALUE */
901 type_struct = self->type->resolution_table->types[COLOR_opts__Option__VALUE];
902 cltype = type_struct->color;
903 idtype = type_struct->id;
904 is_nullable = type_struct->is_nullable;
905 if(var34 == NULL) {
906 var36 = is_nullable;
907 } else {
908 if(cltype >= (((long)var34&3)?type_info[((long)var34&3)]:var34->type)->table_size) {
909 var36 = 0;
910 } else {
911 var36 = (((long)var34&3)?type_info[((long)var34&3)]:var34->type)->type_table[cltype] == idtype;
912 }
913 }
914 if (unlikely(!var36)) {
915 var_class_name = var34 == NULL ? "null" : (((long)var34&3)?type_info[((long)var34&3)]:var34->type)->name;
916 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
917 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 40);
918 fatal_exit(1);
919 }
920 self->attrs[COLOR_opts__Option___value].val = var34; /* _value on <self:OptionParameter> */
921 RET_LABEL35:(void)0;
922 }
923 }
924 {
925 ((void(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_it); /* next on <var_it:Iterator[String]>*/
926 }
927 } else {
928 {
929 { /* Inline opts#Option#errors (self) on <self:OptionParameter> */
930 var39 = self->attrs[COLOR_opts__Option___errors].val; /* _errors on <self:OptionParameter> */
931 if (unlikely(var39 == NULL)) {
932 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _errors");
933 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 28);
934 fatal_exit(1);
935 }
936 var37 = var39;
937 RET_LABEL38:(void)0;
938 }
939 }
940 if (unlikely(varonce==NULL)) {
941 var40 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
942 if (likely(varonce41!=NULL)) {
943 var42 = varonce41;
944 } else {
945 var43 = "Parameter expected for option ";
946 var44 = core__flat___NativeString___to_s_full(var43, 30l, 30l);
947 var42 = var44;
948 varonce41 = var42;
949 }
950 ((struct instance_core__NativeArray*)var40)->values[0]=var42;
951 if (likely(varonce45!=NULL)) {
952 var46 = varonce45;
953 } else {
954 var47 = ".";
955 var48 = core__flat___NativeString___to_s_full(var47, 1l, 1l);
956 var46 = var48;
957 varonce45 = var46;
958 }
959 ((struct instance_core__NativeArray*)var40)->values[2]=var46;
960 } else {
961 var40 = varonce;
962 varonce = NULL;
963 }
964 {
965 { /* Inline opts#Option#names (self) on <self:OptionParameter> */
966 var51 = self->attrs[COLOR_opts__Option___names].val; /* _names on <self:OptionParameter> */
967 if (unlikely(var51 == NULL)) {
968 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
969 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 19);
970 fatal_exit(1);
971 }
972 var49 = var51;
973 RET_LABEL50:(void)0;
974 }
975 }
976 {
977 var52 = core___core__SequenceRead___Collection__first(var49);
978 }
979 ((struct instance_core__NativeArray*)var40)->values[1]=var52;
980 {
981 var53 = ((val*(*)(val* self))(var40->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var40); /* native_to_s on <var40:NativeArray[String]>*/
982 }
983 varonce = var40;
984 {
985 core___core__Array___core__abstract_collection__SimpleCollection__add(var37, var53); /* Direct call array#Array#add on <var37:Array[String]>*/
986 }
987 }
988 RET_LABEL:;
989 }
990 /* method opts#OptionString#init for (self: OptionString, String, Array[String]) */
991 void opts___opts__OptionString___init(val* self, val* p0, val* p1) {
992 val* var_help /* var help: String */;
993 val* var_names /* var names: Array[String] */;
994 short int var /* : Bool */;
995 int cltype;
996 int idtype;
997 const struct type* type_struct;
998 short int is_nullable;
999 const char* var_class_name;
1000 var_help = p0;
1001 var_names = p1;
1002 /* <((val*)NULL):null> isa VALUE */
1003 type_struct = self->type->resolution_table->types[COLOR_opts__Option__VALUE];
1004 cltype = type_struct->color;
1005 idtype = type_struct->id;
1006 is_nullable = type_struct->is_nullable;
1007 if(((val*)NULL) == NULL) {
1008 var = is_nullable;
1009 } else {
1010 if(cltype >= ((val*)NULL)->type->table_size) {
1011 var = 0;
1012 } else {
1013 var = ((val*)NULL)->type->type_table[cltype] == idtype;
1014 }
1015 }
1016 if (unlikely(!var)) {
1017 var_class_name = ((val*)NULL) == NULL ? "null" : ((val*)NULL)->type->name;
1018 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
1019 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 184);
1020 fatal_exit(1);
1021 }
1022 {
1023 opts___opts__Option___init(self, var_help, ((val*)NULL), var_names); /* Direct call opts#Option#init on <self:OptionString>*/
1024 }
1025 RET_LABEL:;
1026 }
1027 /* method opts#OptionString#convert for (self: OptionString, String): nullable String */
1028 val* opts___opts__OptionString___OptionParameter__convert(val* self, val* p0) {
1029 val* var /* : nullable String */;
1030 val* var_str /* var str: String */;
1031 short int var1 /* : Bool */;
1032 int cltype;
1033 int idtype;
1034 const struct type* type_struct;
1035 const char* var_class_name;
1036 var_str = p0;
1037 /* <var_str:String> isa VALUE */
1038 type_struct = self->type->resolution_table->types[COLOR_opts__Option__VALUE];
1039 cltype = type_struct->color;
1040 idtype = type_struct->id;
1041 if(cltype >= var_str->type->table_size) {
1042 var1 = 0;
1043 } else {
1044 var1 = var_str->type->type_table[cltype] == idtype;
1045 }
1046 if (unlikely(!var1)) {
1047 var_class_name = var_str == NULL ? "null" : var_str->type->name;
1048 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
1049 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 186);
1050 fatal_exit(1);
1051 }
1052 var = var_str;
1053 goto RET_LABEL;
1054 RET_LABEL:;
1055 return var;
1056 }
1057 /* method opts#OptionInt#init for (self: OptionInt, String, Int, Array[String]) */
1058 void opts___opts__OptionInt___init(val* self, val* p0, long p1, val* p2) {
1059 val* var_help /* var help: String */;
1060 long var_default /* var default: Int */;
1061 val* var_names /* var names: Array[String] */;
1062 val* var /* : nullable Object */;
1063 var_help = p0;
1064 var_default = p1;
1065 var_names = p2;
1066 {
1067 var = (val*)(var_default<<2|1);
1068 opts___opts__Option___init(self, var_help, var, var_names); /* Direct call opts#Option#init on <self:OptionInt>*/
1069 }
1070 RET_LABEL:;
1071 }
1072 /* method opts#OptionInt#convert for (self: OptionInt, String): Int */
1073 long opts___opts__OptionInt___OptionParameter__convert(val* self, val* p0) {
1074 long var /* : Int */;
1075 val* var_str /* var str: String */;
1076 long var1 /* : Int */;
1077 var_str = p0;
1078 {
1079 var1 = core__fixed_ints___Text___to_i(var_str);
1080 }
1081 var = var1;
1082 goto RET_LABEL;
1083 RET_LABEL:;
1084 return var;
1085 }
1086 /* method opts#OptionInt#convert for (self: OptionParameter, String): nullable Object */
1087 val* VIRTUAL_opts___opts__OptionInt___OptionParameter__convert(val* self, val* p0) {
1088 val* var /* : nullable Object */;
1089 long var1 /* : Int */;
1090 val* var2 /* : nullable Object */;
1091 var1 = opts___opts__OptionInt___OptionParameter__convert(self, p0);
1092 var2 = (val*)(var1<<2|1);
1093 var = var2;
1094 RET_LABEL:;
1095 return var;
1096 }
1097 /* method opts#OptionArray#init for (self: OptionArray, String, Array[String]) */
1098 void opts___opts__OptionArray___init(val* self, val* p0, val* p1) {
1099 val* var_help /* var help: String */;
1100 val* var_names /* var names: Array[String] */;
1101 val* var /* : Array[String] */;
1102 val* var2 /* : Array[String] */;
1103 val* var4 /* : Array[String] */;
1104 short int var5 /* : Bool */;
1105 int cltype;
1106 int idtype;
1107 const struct type* type_struct;
1108 const char* var_class_name;
1109 var_help = p0;
1110 var_names = p1;
1111 var = NEW_core__Array(&type_core__Array__core__String);
1112 {
1113 core___core__Array___core__kernel__Object__init(var); /* Direct call array#Array#init on <var:Array[String]>*/
1114 }
1115 {
1116 { /* Inline opts#OptionArray#values= (self,var) on <self:OptionArray> */
1117 self->attrs[COLOR_opts__OptionArray___values].val = var; /* _values on <self:OptionArray> */
1118 RET_LABEL1:(void)0;
1119 }
1120 }
1121 {
1122 { /* Inline opts#OptionArray#values (self) on <self:OptionArray> */
1123 var4 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on <self:OptionArray> */
1124 if (unlikely(var4 == NULL)) {
1125 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _values");
1126 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 267);
1127 fatal_exit(1);
1128 }
1129 var2 = var4;
1130 RET_LABEL3:(void)0;
1131 }
1132 }
1133 /* <var2:Array[String]> isa VALUE */
1134 type_struct = self->type->resolution_table->types[COLOR_opts__Option__VALUE];
1135 cltype = type_struct->color;
1136 idtype = type_struct->id;
1137 if(cltype >= var2->type->table_size) {
1138 var5 = 0;
1139 } else {
1140 var5 = var2->type->type_table[cltype] == idtype;
1141 }
1142 if (unlikely(!var5)) {
1143 var_class_name = var2 == NULL ? "null" : var2->type->name;
1144 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
1145 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 264);
1146 fatal_exit(1);
1147 }
1148 {
1149 opts___opts__Option___init(self, var_help, var2, var_names); /* Direct call opts#Option#init on <self:OptionArray>*/
1150 }
1151 RET_LABEL:;
1152 }
1153 /* method opts#OptionArray#values for (self: OptionArray): Array[String] */
1154 val* opts___opts__OptionArray___values(val* self) {
1155 val* var /* : Array[String] */;
1156 val* var1 /* : Array[String] */;
1157 var1 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on <self:OptionArray> */
1158 if (unlikely(var1 == NULL)) {
1159 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _values");
1160 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 267);
1161 fatal_exit(1);
1162 }
1163 var = var1;
1164 RET_LABEL:;
1165 return var;
1166 }
1167 /* method opts#OptionArray#values= for (self: OptionArray, Array[String]) */
1168 void opts___opts__OptionArray___values_61d(val* self, val* p0) {
1169 self->attrs[COLOR_opts__OptionArray___values].val = p0; /* _values on <self:OptionArray> */
1170 RET_LABEL:;
1171 }
1172 /* method opts#OptionArray#convert for (self: OptionArray, String): Array[String] */
1173 val* opts___opts__OptionArray___OptionParameter__convert(val* self, val* p0) {
1174 val* var /* : Array[String] */;
1175 val* var_str /* var str: String */;
1176 val* var1 /* : Array[String] */;
1177 val* var3 /* : Array[String] */;
1178 val* var4 /* : Array[String] */;
1179 val* var6 /* : Array[String] */;
1180 short int var7 /* : Bool */;
1181 int cltype;
1182 int idtype;
1183 const struct type* type_struct;
1184 const char* var_class_name;
1185 var_str = p0;
1186 {
1187 { /* Inline opts#OptionArray#values (self) on <self:OptionArray> */
1188 var3 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on <self:OptionArray> */
1189 if (unlikely(var3 == NULL)) {
1190 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _values");
1191 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 267);
1192 fatal_exit(1);
1193 }
1194 var1 = var3;
1195 RET_LABEL2:(void)0;
1196 }
1197 }
1198 {
1199 core___core__Array___core__abstract_collection__SimpleCollection__add(var1, var_str); /* Direct call array#Array#add on <var1:Array[String]>*/
1200 }
1201 {
1202 { /* Inline opts#OptionArray#values (self) on <self:OptionArray> */
1203 var6 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on <self:OptionArray> */
1204 if (unlikely(var6 == NULL)) {
1205 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _values");
1206 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 267);
1207 fatal_exit(1);
1208 }
1209 var4 = var6;
1210 RET_LABEL5:(void)0;
1211 }
1212 }
1213 /* <var4:Array[String]> isa VALUE */
1214 type_struct = self->type->resolution_table->types[COLOR_opts__Option__VALUE];
1215 cltype = type_struct->color;
1216 idtype = type_struct->id;
1217 if(cltype >= var4->type->table_size) {
1218 var7 = 0;
1219 } else {
1220 var7 = var4->type->type_table[cltype] == idtype;
1221 }
1222 if (unlikely(!var7)) {
1223 var_class_name = var4 == NULL ? "null" : var4->type->name;
1224 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
1225 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 271);
1226 fatal_exit(1);
1227 }
1228 var = var4;
1229 goto RET_LABEL;
1230 RET_LABEL:;
1231 return var;
1232 }
1233 /* method opts#OptionContext#options for (self: OptionContext): Array[Option] */
1234 val* opts___opts__OptionContext___options(val* self) {
1235 val* var /* : Array[Option] */;
1236 val* var1 /* : Array[Option] */;
1237 var1 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
1238 if (unlikely(var1 == NULL)) {
1239 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
1240 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 277);
1241 fatal_exit(1);
1242 }
1243 var = var1;
1244 RET_LABEL:;
1245 return var;
1246 }
1247 /* method opts#OptionContext#rest for (self: OptionContext): Array[String] */
1248 val* opts___opts__OptionContext___rest(val* self) {
1249 val* var /* : Array[String] */;
1250 val* var1 /* : Array[String] */;
1251 var1 = self->attrs[COLOR_opts__OptionContext___rest].val; /* _rest on <self:OptionContext> */
1252 if (unlikely(var1 == NULL)) {
1253 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _rest");
1254 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 280);
1255 fatal_exit(1);
1256 }
1257 var = var1;
1258 RET_LABEL:;
1259 return var;
1260 }
1261 /* method opts#OptionContext#context_errors for (self: OptionContext): Array[String] */
1262 val* opts___opts__OptionContext___context_errors(val* self) {
1263 val* var /* : Array[String] */;
1264 val* var1 /* : Array[String] */;
1265 var1 = self->attrs[COLOR_opts__OptionContext___context_errors].val; /* _context_errors on <self:OptionContext> */
1266 if (unlikely(var1 == NULL)) {
1267 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _context_errors");
1268 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 283);
1269 fatal_exit(1);
1270 }
1271 var = var1;
1272 RET_LABEL:;
1273 return var;
1274 }
1275 /* method opts#OptionContext#optmap for (self: OptionContext): HashMap[String, Option] */
1276 val* opts___opts__OptionContext___optmap(val* self) {
1277 val* var /* : HashMap[String, Option] */;
1278 val* var1 /* : HashMap[String, Option] */;
1279 var1 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
1280 if (unlikely(var1 == NULL)) {
1281 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap");
1282 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 286);
1283 fatal_exit(1);
1284 }
1285 var = var1;
1286 RET_LABEL:;
1287 return var;
1288 }
1289 /* method opts#OptionContext#add_option for (self: OptionContext, Array[Option]) */
1290 void opts___opts__OptionContext___add_option(val* self, val* p0) {
1291 val* var_opts /* var opts: Array[Option] */;
1292 val* var /* : Array[Option] */;
1293 val* var2 /* : Array[Option] */;
1294 var_opts = p0;
1295 {
1296 { /* Inline opts#OptionContext#options (self) on <self:OptionContext> */
1297 var2 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
1298 if (unlikely(var2 == NULL)) {
1299 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
1300 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 277);
1301 fatal_exit(1);
1302 }
1303 var = var2;
1304 RET_LABEL1:(void)0;
1305 }
1306 }
1307 {
1308 core___core__Array___core__abstract_collection__SimpleCollection__add_all(var, var_opts); /* Direct call array#Array#add_all on <var:Array[Option]>*/
1309 }
1310 RET_LABEL:;
1311 }
1312 /* method opts#OptionContext#usage for (self: OptionContext) */
1313 void opts___opts__OptionContext___usage(val* self) {
1314 long var_lmax /* var lmax: Int */;
1315 val* var /* : Array[Option] */;
1316 val* var2 /* : Array[Option] */;
1317 val* var_ /* var : Array[Option] */;
1318 val* var3 /* : IndexedIterator[nullable Object] */;
1319 val* var_4 /* var : IndexedIterator[Option] */;
1320 short int var5 /* : Bool */;
1321 val* var6 /* : nullable Object */;
1322 val* var_i /* var i: Option */;
1323 long var_l /* var l: Int */;
1324 val* var7 /* : Array[String] */;
1325 val* var9 /* : Array[String] */;
1326 val* var_10 /* var : Array[String] */;
1327 val* var11 /* : IndexedIterator[nullable Object] */;
1328 val* var_12 /* var : IndexedIterator[String] */;
1329 short int var13 /* : Bool */;
1330 val* var15 /* : nullable Object */;
1331 val* var_n /* var n: String */;
1332 long var16 /* : Int */;
1333 long var17 /* : Int */;
1334 short int var19 /* : Bool */;
1335 int cltype;
1336 int idtype;
1337 const char* var_class_name;
1338 long var20 /* : Int */;
1339 long var21 /* : Int */;
1340 short int var23 /* : Bool */;
1341 int cltype24;
1342 int idtype25;
1343 const char* var_class_name26;
1344 long var27 /* : Int */;
1345 short int var28 /* : Bool */;
1346 short int var30 /* : Bool */;
1347 int cltype31;
1348 int idtype32;
1349 const char* var_class_name33;
1350 short int var34 /* : Bool */;
1351 val* var35 /* : Array[Option] */;
1352 val* var37 /* : Array[Option] */;
1353 val* var_38 /* var : Array[Option] */;
1354 val* var39 /* : IndexedIterator[nullable Object] */;
1355 val* var_40 /* var : IndexedIterator[Option] */;
1356 short int var41 /* : Bool */;
1357 val* var43 /* : nullable Object */;
1358 val* var_i44 /* var i: Option */;
1359 short int var45 /* : Bool */;
1360 short int var47 /* : Bool */;
1361 short int var48 /* : Bool */;
1362 val* var49 /* : Sys */;
1363 val* var50 /* : String */;
1364 var_lmax = 1l;
1365 {
1366 { /* Inline opts#OptionContext#options (self) on <self:OptionContext> */
1367 var2 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
1368 if (unlikely(var2 == NULL)) {
1369 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
1370 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 277);
1371 fatal_exit(1);
1372 }
1373 var = var2;
1374 RET_LABEL1:(void)0;
1375 }
1376 }
1377 var_ = var;
1378 {
1379 var3 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
1380 }
1381 var_4 = var3;
1382 for(;;) {
1383 {
1384 var5 = ((short int(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_4); /* is_ok on <var_4:IndexedIterator[Option]>*/
1385 }
1386 if (var5){
1387 } else {
1388 goto BREAK_label;
1389 }
1390 {
1391 var6 = ((val*(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_4); /* item on <var_4:IndexedIterator[Option]>*/
1392 }
1393 var_i = var6;
1394 var_l = 3l;
1395 {
1396 { /* Inline opts#Option#names (var_i) on <var_i:Option> */
1397 var9 = var_i->attrs[COLOR_opts__Option___names].val; /* _names on <var_i:Option> */
1398 if (unlikely(var9 == NULL)) {
1399 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
1400 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 19);
1401 fatal_exit(1);
1402 }
1403 var7 = var9;
1404 RET_LABEL8:(void)0;
1405 }
1406 }
1407 var_10 = var7;
1408 {
1409 var11 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_10);
1410 }
1411 var_12 = var11;
1412 for(;;) {
1413 {
1414 var13 = ((short int(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_12); /* is_ok on <var_12:IndexedIterator[String]>*/
1415 }
1416 if (var13){
1417 } else {
1418 goto BREAK_label14;
1419 }
1420 {
1421 var15 = ((val*(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_12); /* item on <var_12:IndexedIterator[String]>*/
1422 }
1423 var_n = var15;
1424 {
1425 var16 = ((long(*)(val* self))(var_n->class->vft[COLOR_core__abstract_text__Text__length]))(var_n); /* length on <var_n:String>*/
1426 }
1427 {
1428 { /* Inline kernel#Int#+ (var16,2l) on <var16:Int> */
1429 /* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
1430 /* <2l:Int> isa OTHER */
1431 var19 = 1; /* easy <2l:Int> isa OTHER*/
1432 if (unlikely(!var19)) {
1433 var_class_name = type_core__Int.name;
1434 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1435 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
1436 fatal_exit(1);
1437 }
1438 var20 = var16 + 2l;
1439 var17 = var20;
1440 goto RET_LABEL18;
1441 RET_LABEL18:(void)0;
1442 }
1443 }
1444 {
1445 { /* Inline kernel#Int#+ (var_l,var17) on <var_l:Int> */
1446 /* Covariant cast for argument 0 (i) <var17:Int> isa OTHER */
1447 /* <var17:Int> isa OTHER */
1448 var23 = 1; /* easy <var17:Int> isa OTHER*/
1449 if (unlikely(!var23)) {
1450 var_class_name26 = type_core__Int.name;
1451 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name26);
1452 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
1453 fatal_exit(1);
1454 }
1455 var27 = var_l + var17;
1456 var21 = var27;
1457 goto RET_LABEL22;
1458 RET_LABEL22:(void)0;
1459 }
1460 }
1461 var_l = var21;
1462 {
1463 ((void(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_12); /* next on <var_12:IndexedIterator[String]>*/
1464 }
1465 }
1466 BREAK_label14: (void)0;
1467 {
1468 ((void(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_12); /* finish on <var_12:IndexedIterator[String]>*/
1469 }
1470 {
1471 { /* Inline kernel#Int#< (var_lmax,var_l) on <var_lmax:Int> */
1472 /* Covariant cast for argument 0 (i) <var_l:Int> isa OTHER */
1473 /* <var_l:Int> isa OTHER */
1474 var30 = 1; /* easy <var_l:Int> isa OTHER*/
1475 if (unlikely(!var30)) {
1476 var_class_name33 = type_core__Int.name;
1477 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name33);
1478 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
1479 fatal_exit(1);
1480 }
1481 var34 = var_lmax < var_l;
1482 var28 = var34;
1483 goto RET_LABEL29;
1484 RET_LABEL29:(void)0;
1485 }
1486 }
1487 if (var28){
1488 var_lmax = var_l;
1489 } else {
1490 }
1491 {
1492 ((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_4); /* next on <var_4:IndexedIterator[Option]>*/
1493 }
1494 }
1495 BREAK_label: (void)0;
1496 {
1497 ((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_4); /* finish on <var_4:IndexedIterator[Option]>*/
1498 }
1499 {
1500 { /* Inline opts#OptionContext#options (self) on <self:OptionContext> */
1501 var37 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
1502 if (unlikely(var37 == NULL)) {
1503 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
1504 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 277);
1505 fatal_exit(1);
1506 }
1507 var35 = var37;
1508 RET_LABEL36:(void)0;
1509 }
1510 }
1511 var_38 = var35;
1512 {
1513 var39 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_38);
1514 }
1515 var_40 = var39;
1516 for(;;) {
1517 {
1518 var41 = ((short int(*)(val* self))((((long)var_40&3)?class_info[((long)var_40&3)]:var_40->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_40); /* is_ok on <var_40:IndexedIterator[Option]>*/
1519 }
1520 if (var41){
1521 } else {
1522 goto BREAK_label42;
1523 }
1524 {
1525 var43 = ((val*(*)(val* self))((((long)var_40&3)?class_info[((long)var_40&3)]:var_40->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_40); /* item on <var_40:IndexedIterator[Option]>*/
1526 }
1527 var_i44 = var43;
1528 {
1529 { /* Inline opts#Option#hidden (var_i44) on <var_i44:Option> */
1530 var47 = var_i44->attrs[COLOR_opts__Option___hidden].s; /* _hidden on <var_i44:Option> */
1531 var45 = var47;
1532 RET_LABEL46:(void)0;
1533 }
1534 }
1535 var48 = !var45;
1536 if (var48){
1537 var49 = glob_sys;
1538 {
1539 var50 = opts___opts__Option___pretty(var_i44, var_lmax);
1540 }
1541 {
1542 core__file___Sys___print(var49, var50); /* Direct call file#Sys#print on <var49:Sys>*/
1543 }
1544 } else {
1545 }
1546 {
1547 ((void(*)(val* self))((((long)var_40&3)?class_info[((long)var_40&3)]:var_40->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_40); /* next on <var_40:IndexedIterator[Option]>*/
1548 }
1549 }
1550 BREAK_label42: (void)0;
1551 {
1552 ((void(*)(val* self))((((long)var_40&3)?class_info[((long)var_40&3)]:var_40->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_40); /* finish on <var_40:IndexedIterator[Option]>*/
1553 }
1554 RET_LABEL:;
1555 }
1556 /* method opts#OptionContext#parse for (self: OptionContext, nullable Collection[String]) */
1557 void opts___opts__OptionContext___parse(val* self, val* p0) {
1558 val* var_argv /* var argv: nullable Collection[String] */;
1559 short int var /* : Bool */;
1560 short int var1 /* : Bool */;
1561 val* var2 /* : Sys */;
1562 val* var3 /* : Sequence[String] */;
1563 val* var4 /* : Iterator[nullable Object] */;
1564 val* var_it /* var it: Iterator[String] */;
1565 var_argv = p0;
1566 if (var_argv == NULL) {
1567 var = 1; /* is null */
1568 } else {
1569 var = 0; /* arg is null but recv is not */
1570 }
1571 if (0) {
1572 var1 = ((short int(*)(val* self, val* p0))((((long)var_argv&3)?class_info[((long)var_argv&3)]:var_argv->class)->vft[COLOR_core__kernel__Object___61d_61d]))(var_argv, ((val*)NULL)); /* == on <var_argv:nullable Collection[String]>*/
1573 var = var1;
1574 }
1575 if (var){
1576 var2 = glob_sys;
1577 {
1578 var3 = core__abstract_text___Sys___args(var2);
1579 }
1580 var_argv = var3;
1581 } else {
1582 }
1583 {
1584 var4 = ((val*(*)(val* self))((((long)var_argv&3)?class_info[((long)var_argv&3)]:var_argv->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_argv); /* iterator on <var_argv:nullable Collection[String](Collection[String])>*/
1585 }
1586 var_it = var4;
1587 {
1588 opts___opts__OptionContext___parse_intern(self, var_it); /* Direct call opts#OptionContext#parse_intern on <self:OptionContext>*/
1589 }
1590 RET_LABEL:;
1591 }
1592 /* method opts#OptionContext#options_before_rest for (self: OptionContext): Bool */
1593 short int opts___opts__OptionContext___options_before_rest(val* self) {
1594 short int var /* : Bool */;
1595 short int var1 /* : Bool */;
1596 var1 = self->attrs[COLOR_opts__OptionContext___options_before_rest].s; /* _options_before_rest on <self:OptionContext> */
1597 var = var1;
1598 RET_LABEL:;
1599 return var;
1600 }
1601 /* method opts#OptionContext#parse_intern for (self: OptionContext, Iterator[String]) */
1602 void opts___opts__OptionContext___parse_intern(val* self, val* p0) {
1603 val* var_it /* var it: Iterator[String] */;
1604 short int var_parseargs /* var parseargs: Bool */;
1605 val* var /* : Array[String] */;
1606 val* var2 /* : Array[String] */;
1607 val* var_rest /* var rest: Array[String] */;
1608 short int var3 /* : Bool */;
1609 short int var_ /* var : Bool */;
1610 short int var4 /* : Bool */;
1611 val* var5 /* : nullable Object */;
1612 val* var_str /* var str: String */;
1613 static val* varonce;
1614 val* var6 /* : String */;
1615 char* var7 /* : NativeString */;
1616 val* var8 /* : String */;
1617 short int var9 /* : Bool */;
1618 val* var10 /* : Array[nullable Object] */;
1619 short int var11 /* : Bool */;
1620 val* var12 /* : SequenceRead[Char] */;
1621 val* var13 /* : nullable Object */;
1622 long var14 /* : Int */;
1623 short int var15 /* : Bool */;
1624 short int var17 /* : Bool */;
1625 short int var_18 /* var : Bool */;
1626 long var19 /* : Int */;
1627 short int var20 /* : Bool */;
1628 short int var22 /* : Bool */;
1629 int cltype;
1630 int idtype;
1631 const char* var_class_name;
1632 short int var23 /* : Bool */;
1633 short int var_next_called /* var next_called: Bool */;
1634 long var_i /* var i: Int */;
1635 long var24 /* : Int */;
1636 long var_25 /* var : Int */;
1637 short int var26 /* : Bool */;
1638 short int var28 /* : Bool */;
1639 int cltype29;
1640 int idtype30;
1641 const char* var_class_name31;
1642 short int var32 /* : Bool */;
1643 static val* varonce33;
1644 val* var34 /* : String */;
1645 char* var35 /* : NativeString */;
1646 val* var36 /* : String */;
1647 val* var37 /* : SequenceRead[Char] */;
1648 val* var38 /* : nullable Object */;
1649 val* var39 /* : String */;
1650 uint32_t var40 /* : Char */;
1651 val* var41 /* : String */;
1652 val* var_short_opt /* var short_opt: String */;
1653 val* var42 /* : HashMap[String, Option] */;
1654 val* var44 /* : HashMap[String, Option] */;
1655 short int var45 /* : Bool */;
1656 val* var46 /* : HashMap[String, Option] */;
1657 val* var48 /* : HashMap[String, Option] */;
1658 val* var49 /* : nullable Object */;
1659 val* var_option /* var option: Option */;
1660 short int var50 /* : Bool */;
1661 int cltype51;
1662 int idtype52;
1663 long var53 /* : Int */;
1664 short int var54 /* : Bool */;
1665 val* var55 /* : HashMap[String, Option] */;
1666 val* var57 /* : HashMap[String, Option] */;
1667 short int var58 /* : Bool */;
1668 val* var59 /* : HashMap[String, Option] */;
1669 val* var61 /* : HashMap[String, Option] */;
1670 val* var62 /* : nullable Object */;
1671 val* var_opt /* var opt: Option */;
1672 val* var63 /* : nullable Object */;
1673 short int var64 /* : Bool */;
1674 short int var66 /* : Bool */;
1675 val* var67 /* : Array[nullable Object] */;
1676 val* var69 /* : Array[Option] */;
1677 val* var71 /* : Array[Option] */;
1678 val* var_72 /* var : Array[Option] */;
1679 val* var73 /* : IndexedIterator[nullable Object] */;
1680 val* var_74 /* var : IndexedIterator[Option] */;
1681 short int var75 /* : Bool */;
1682 val* var77 /* : nullable Object */;
1683 val* var_opt78 /* var opt: Option */;
1684 short int var79 /* : Bool */;
1685 short int var80 /* : Bool */;
1686 short int var82 /* : Bool */;
1687 short int var_83 /* var : Bool */;
1688 short int var84 /* : Bool */;
1689 short int var86 /* : Bool */;
1690 short int var87 /* : Bool */;
1691 val* var88 /* : Array[String] */;
1692 val* var90 /* : Array[String] */;
1693 val* var92 /* : NativeArray[String] */;
1694 static val* varonce91;
1695 static val* varonce93;
1696 val* var94 /* : String */;
1697 char* var95 /* : NativeString */;
1698 val* var96 /* : String */;
1699 static val* varonce97;
1700 val* var98 /* : String */;
1701 char* var99 /* : NativeString */;
1702 val* var100 /* : String */;
1703 val* var101 /* : Array[String] */;
1704 val* var103 /* : Array[String] */;
1705 static val* varonce104;
1706 val* var105 /* : String */;
1707 char* var106 /* : NativeString */;
1708 val* var107 /* : String */;
1709 val* var108 /* : String */;
1710 val* var109 /* : String */;
1711 var_it = p0;
1712 var_parseargs = 1;
1713 {
1714 opts___opts__OptionContext___build(self); /* Direct call opts#OptionContext#build on <self:OptionContext>*/
1715 }
1716 {
1717 { /* Inline opts#OptionContext#rest (self) on <self:OptionContext> */
1718 var2 = self->attrs[COLOR_opts__OptionContext___rest].val; /* _rest on <self:OptionContext> */
1719 if (unlikely(var2 == NULL)) {
1720 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _rest");
1721 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 280);
1722 fatal_exit(1);
1723 }
1724 var = var2;
1725 RET_LABEL1:(void)0;
1726 }
1727 }
1728 var_rest = var;
1729 for(;;) {
1730 var_ = var_parseargs;
1731 if (var_parseargs){
1732 {
1733 var4 = ((short int(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_it); /* is_ok on <var_it:Iterator[String]>*/
1734 }
1735 var3 = var4;
1736 } else {
1737 var3 = var_;
1738 }
1739 if (var3){
1740 {
1741 var5 = ((val*(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_it); /* item on <var_it:Iterator[String]>*/
1742 }
1743 var_str = var5;
1744 if (likely(varonce!=NULL)) {
1745 var6 = varonce;
1746 } else {
1747 var7 = "--";
1748 var8 = core__flat___NativeString___to_s_full(var7, 2l, 2l);
1749 var6 = var8;
1750 varonce = var6;
1751 }
1752 {
1753 var9 = ((short int(*)(val* self, val* p0))(var_str->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_str, var6); /* == on <var_str:String>*/
1754 }
1755 if (var9){
1756 {
1757 ((void(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_it); /* next on <var_it:Iterator[String]>*/
1758 }
1759 {
1760 var10 = core__array___Iterator___to_a(var_it);
1761 }
1762 {
1763 core___core__Array___core__abstract_collection__SimpleCollection__add_all(var_rest, var10); /* Direct call array#Array#add_all on <var_rest:Array[String]>*/
1764 }
1765 var_parseargs = 0;
1766 } else {
1767 {
1768 var12 = ((val*(*)(val* self))(var_str->class->vft[COLOR_core__abstract_text__Text__chars]))(var_str); /* chars on <var_str:String>*/
1769 }
1770 {
1771 var13 = (val*)((long)('-')<<2|2);
1772 var14 = ((long(*)(val* self, val* p0))((((long)var12&3)?class_info[((long)var12&3)]:var12->class)->vft[COLOR_core__abstract_collection__SequenceRead__last_index_of]))(var12, var13); /* last_index_of on <var12:SequenceRead[Char]>*/
1773 }
1774 {
1775 { /* Inline kernel#Int#== (var14,0l) on <var14:Int> */
1776 var17 = var14 == 0l;
1777 var15 = var17;
1778 goto RET_LABEL16;
1779 RET_LABEL16:(void)0;
1780 }
1781 }
1782 var_18 = var15;
1783 if (var15){
1784 {
1785 var19 = ((long(*)(val* self))(var_str->class->vft[COLOR_core__abstract_text__Text__length]))(var_str); /* length on <var_str:String>*/
1786 }
1787 {
1788 { /* Inline kernel#Int#> (var19,2l) on <var19:Int> */
1789 /* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
1790 /* <2l:Int> isa OTHER */
1791 var22 = 1; /* easy <2l:Int> isa OTHER*/
1792 if (unlikely(!var22)) {
1793 var_class_name = type_core__Int.name;
1794 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1795 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
1796 fatal_exit(1);
1797 }
1798 var23 = var19 > 2l;
1799 var20 = var23;
1800 goto RET_LABEL21;
1801 RET_LABEL21:(void)0;
1802 }
1803 }
1804 var11 = var20;
1805 } else {
1806 var11 = var_18;
1807 }
1808 if (var11){
1809 var_next_called = 0;
1810 var_i = 1l;
1811 {
1812 var24 = ((long(*)(val* self))(var_str->class->vft[COLOR_core__abstract_text__Text__length]))(var_str); /* length on <var_str:String>*/
1813 }
1814 var_25 = var24;
1815 for(;;) {
1816 {
1817 { /* Inline kernel#Int#< (var_i,var_25) on <var_i:Int> */
1818 /* Covariant cast for argument 0 (i) <var_25:Int> isa OTHER */
1819 /* <var_25:Int> isa OTHER */
1820 var28 = 1; /* easy <var_25:Int> isa OTHER*/
1821 if (unlikely(!var28)) {
1822 var_class_name31 = type_core__Int.name;
1823 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name31);
1824 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
1825 fatal_exit(1);
1826 }
1827 var32 = var_i < var_25;
1828 var26 = var32;
1829 goto RET_LABEL27;
1830 RET_LABEL27:(void)0;
1831 }
1832 }
1833 if (var26){
1834 } else {
1835 goto BREAK_label;
1836 }
1837 if (likely(varonce33!=NULL)) {
1838 var34 = varonce33;
1839 } else {
1840 var35 = "-";
1841 var36 = core__flat___NativeString___to_s_full(var35, 1l, 1l);
1842 var34 = var36;
1843 varonce33 = var34;
1844 }
1845 {
1846 var37 = ((val*(*)(val* self))(var_str->class->vft[COLOR_core__abstract_text__Text__chars]))(var_str); /* chars on <var_str:String>*/
1847 }
1848 {
1849 var38 = ((val*(*)(val* self, long p0))((((long)var37&3)?class_info[((long)var37&3)]:var37->class)->vft[COLOR_core__abstract_collection__SequenceRead___91d_93d]))(var37, var_i); /* [] on <var37:SequenceRead[Char]>*/
1850 }
1851 {
1852 var40 = (uint32_t)((long)(var38)>>2);
1853 var39 = core__abstract_text___Char___Object__to_s(var40);
1854 }
1855 {
1856 var41 = ((val*(*)(val* self, val* p0))(var34->class->vft[COLOR_core__abstract_text__String___43d]))(var34, var39); /* + on <var34:String>*/
1857 }
1858 var_short_opt = var41;
1859 {
1860 { /* Inline opts#OptionContext#optmap (self) on <self:OptionContext> */
1861 var44 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
1862 if (unlikely(var44 == NULL)) {
1863 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap");
1864 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 286);
1865 fatal_exit(1);
1866 }
1867 var42 = var44;
1868 RET_LABEL43:(void)0;
1869 }
1870 }
1871 {
1872 var45 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var42, var_short_opt);
1873 }
1874 if (var45){
1875 {
1876 { /* Inline opts#OptionContext#optmap (self) on <self:OptionContext> */
1877 var48 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
1878 if (unlikely(var48 == NULL)) {
1879 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap");
1880 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 286);
1881 fatal_exit(1);
1882 }
1883 var46 = var48;
1884 RET_LABEL47:(void)0;
1885 }
1886 }
1887 {
1888 var49 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var46, var_short_opt);
1889 }
1890 var_option = var49;
1891 /* <var_option:Option> isa OptionParameter */
1892 cltype51 = type_opts__OptionParameter.color;
1893 idtype52 = type_opts__OptionParameter.id;
1894 if(cltype51 >= var_option->type->table_size) {
1895 var50 = 0;
1896 } else {
1897 var50 = var_option->type->type_table[cltype51] == idtype52;
1898 }
1899 if (var50){
1900 {
1901 ((void(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_it); /* next on <var_it:Iterator[String]>*/
1902 }
1903 var_next_called = 1;
1904 } else {
1905 }
1906 {
1907 ((void(*)(val* self, val* p0, val* p1))(var_option->class->vft[COLOR_opts__Option__read_param]))(var_option, self, var_it); /* read_param on <var_option:Option>*/
1908 }
1909 } else {
1910 }
1911 {
1912 var53 = core___core__Int___Discrete__successor(var_i, 1l);
1913 }
1914 var_i = var53;
1915 }
1916 BREAK_label: (void)0;
1917 var54 = !var_next_called;
1918 if (var54){
1919 {
1920 ((void(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_it); /* next on <var_it:Iterator[String]>*/
1921 }
1922 } else {
1923 }
1924 } else {
1925 {
1926 { /* Inline opts#OptionContext#optmap (self) on <self:OptionContext> */
1927 var57 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
1928 if (unlikely(var57 == NULL)) {
1929 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap");
1930 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 286);
1931 fatal_exit(1);
1932 }
1933 var55 = var57;
1934 RET_LABEL56:(void)0;
1935 }
1936 }
1937 {
1938 var58 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var55, var_str);
1939 }
1940 if (var58){
1941 {
1942 { /* Inline opts#OptionContext#optmap (self) on <self:OptionContext> */
1943 var61 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
1944 if (unlikely(var61 == NULL)) {
1945 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap");
1946 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 286);
1947 fatal_exit(1);
1948 }
1949 var59 = var61;
1950 RET_LABEL60:(void)0;
1951 }
1952 }
1953 {
1954 var62 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var59, var_str);
1955 }
1956 var_opt = var62;
1957 {
1958 ((void(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_it); /* next on <var_it:Iterator[String]>*/
1959 }
1960 {
1961 ((void(*)(val* self, val* p0, val* p1))(var_opt->class->vft[COLOR_opts__Option__read_param]))(var_opt, self, var_it); /* read_param on <var_opt:Option>*/
1962 }
1963 } else {
1964 {
1965 var63 = ((val*(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_it); /* item on <var_it:Iterator[String]>*/
1966 }
1967 {
1968 core___core__Array___core__abstract_collection__SimpleCollection__add(var_rest, var63); /* Direct call array#Array#add on <var_rest:Array[String]>*/
1969 }
1970 {
1971 ((void(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_it); /* next on <var_it:Iterator[String]>*/
1972 }
1973 {
1974 { /* Inline opts#OptionContext#options_before_rest (self) on <self:OptionContext> */
1975 var66 = self->attrs[COLOR_opts__OptionContext___options_before_rest].s; /* _options_before_rest on <self:OptionContext> */
1976 var64 = var66;
1977 RET_LABEL65:(void)0;
1978 }
1979 }
1980 if (var64){
1981 {
1982 var67 = core__array___Iterator___to_a(var_it);
1983 }
1984 {
1985 core___core__Array___core__abstract_collection__SimpleCollection__add_all(var_rest, var67); /* Direct call array#Array#add_all on <var_rest:Array[String]>*/
1986 }
1987 var_parseargs = 0;
1988 } else {
1989 }
1990 }
1991 }
1992 }
1993 } else {
1994 goto BREAK_label68;
1995 }
1996 }
1997 BREAK_label68: (void)0;
1998 {
1999 { /* Inline opts#OptionContext#options (self) on <self:OptionContext> */
2000 var71 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
2001 if (unlikely(var71 == NULL)) {
2002 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
2003 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 277);
2004 fatal_exit(1);
2005 }
2006 var69 = var71;
2007 RET_LABEL70:(void)0;
2008 }
2009 }
2010 var_72 = var69;
2011 {
2012 var73 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_72);
2013 }
2014 var_74 = var73;
2015 for(;;) {
2016 {
2017 var75 = ((short int(*)(val* self))((((long)var_74&3)?class_info[((long)var_74&3)]:var_74->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_74); /* is_ok on <var_74:IndexedIterator[Option]>*/
2018 }
2019 if (var75){
2020 } else {
2021 goto BREAK_label76;
2022 }
2023 {
2024 var77 = ((val*(*)(val* self))((((long)var_74&3)?class_info[((long)var_74&3)]:var_74->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_74); /* item on <var_74:IndexedIterator[Option]>*/
2025 }
2026 var_opt78 = var77;
2027 {
2028 { /* Inline opts#Option#mandatory (var_opt78) on <var_opt78:Option> */
2029 var82 = var_opt78->attrs[COLOR_opts__Option___mandatory].s; /* _mandatory on <var_opt78:Option> */
2030 var80 = var82;
2031 RET_LABEL81:(void)0;
2032 }
2033 }
2034 var_83 = var80;
2035 if (var80){
2036 {
2037 { /* Inline opts#Option#read (var_opt78) on <var_opt78:Option> */
2038 var86 = var_opt78->attrs[COLOR_opts__Option___read].s; /* _read on <var_opt78:Option> */
2039 var84 = var86;
2040 RET_LABEL85:(void)0;
2041 }
2042 }
2043 var87 = !var84;
2044 var79 = var87;
2045 } else {
2046 var79 = var_83;
2047 }
2048 if (var79){
2049 {
2050 { /* Inline opts#OptionContext#context_errors (self) on <self:OptionContext> */
2051 var90 = self->attrs[COLOR_opts__OptionContext___context_errors].val; /* _context_errors on <self:OptionContext> */
2052 if (unlikely(var90 == NULL)) {
2053 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _context_errors");
2054 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 283);
2055 fatal_exit(1);
2056 }
2057 var88 = var90;
2058 RET_LABEL89:(void)0;
2059 }
2060 }
2061 if (unlikely(varonce91==NULL)) {
2062 var92 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
2063 if (likely(varonce93!=NULL)) {
2064 var94 = varonce93;
2065 } else {
2066 var95 = "Mandatory option ";
2067 var96 = core__flat___NativeString___to_s_full(var95, 17l, 17l);
2068 var94 = var96;
2069 varonce93 = var94;
2070 }
2071 ((struct instance_core__NativeArray*)var92)->values[0]=var94;
2072 if (likely(varonce97!=NULL)) {
2073 var98 = varonce97;
2074 } else {
2075 var99 = " not found.";
2076 var100 = core__flat___NativeString___to_s_full(var99, 11l, 11l);
2077 var98 = var100;
2078 varonce97 = var98;
2079 }
2080 ((struct instance_core__NativeArray*)var92)->values[2]=var98;
2081 } else {
2082 var92 = varonce91;
2083 varonce91 = NULL;
2084 }
2085 {
2086 { /* Inline opts#Option#names (var_opt78) on <var_opt78:Option> */
2087 var103 = var_opt78->attrs[COLOR_opts__Option___names].val; /* _names on <var_opt78:Option> */
2088 if (unlikely(var103 == NULL)) {
2089 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
2090 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 19);
2091 fatal_exit(1);
2092 }
2093 var101 = var103;
2094 RET_LABEL102:(void)0;
2095 }
2096 }
2097 if (likely(varonce104!=NULL)) {
2098 var105 = varonce104;
2099 } else {
2100 var106 = ", ";
2101 var107 = core__flat___NativeString___to_s_full(var106, 2l, 2l);
2102 var105 = var107;
2103 varonce104 = var105;
2104 }
2105 {
2106 var108 = core__abstract_text___Collection___join(var101, var105);
2107 }
2108 ((struct instance_core__NativeArray*)var92)->values[1]=var108;
2109 {
2110 var109 = ((val*(*)(val* self))(var92->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var92); /* native_to_s on <var92:NativeArray[String]>*/
2111 }
2112 varonce91 = var92;
2113 {
2114 core___core__Array___core__abstract_collection__SimpleCollection__add(var88, var109); /* Direct call array#Array#add on <var88:Array[String]>*/
2115 }
2116 } else {
2117 }
2118 {
2119 ((void(*)(val* self))((((long)var_74&3)?class_info[((long)var_74&3)]:var_74->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_74); /* next on <var_74:IndexedIterator[Option]>*/
2120 }
2121 }
2122 BREAK_label76: (void)0;
2123 {
2124 ((void(*)(val* self))((((long)var_74&3)?class_info[((long)var_74&3)]:var_74->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_74); /* finish on <var_74:IndexedIterator[Option]>*/
2125 }
2126 RET_LABEL:;
2127 }
2128 /* method opts#OptionContext#build for (self: OptionContext) */
2129 void opts___opts__OptionContext___build(val* self) {
2130 val* var /* : Array[Option] */;
2131 val* var2 /* : Array[Option] */;
2132 val* var_ /* var : Array[Option] */;
2133 val* var3 /* : IndexedIterator[nullable Object] */;
2134 val* var_4 /* var : IndexedIterator[Option] */;
2135 short int var5 /* : Bool */;
2136 val* var6 /* : nullable Object */;
2137 val* var_o /* var o: Option */;
2138 val* var7 /* : Array[String] */;
2139 val* var9 /* : Array[String] */;
2140 val* var_10 /* var : Array[String] */;
2141 val* var11 /* : IndexedIterator[nullable Object] */;
2142 val* var_12 /* var : IndexedIterator[String] */;
2143 short int var13 /* : Bool */;
2144 val* var15 /* : nullable Object */;
2145 val* var_n /* var n: String */;
2146 val* var16 /* : HashMap[String, Option] */;
2147 val* var18 /* : HashMap[String, Option] */;
2148 {
2149 { /* Inline opts#OptionContext#options (self) on <self:OptionContext> */
2150 var2 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
2151 if (unlikely(var2 == NULL)) {
2152 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
2153 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 277);
2154 fatal_exit(1);
2155 }
2156 var = var2;
2157 RET_LABEL1:(void)0;
2158 }
2159 }
2160 var_ = var;
2161 {
2162 var3 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
2163 }
2164 var_4 = var3;
2165 for(;;) {
2166 {
2167 var5 = ((short int(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_4); /* is_ok on <var_4:IndexedIterator[Option]>*/
2168 }
2169 if (var5){
2170 } else {
2171 goto BREAK_label;
2172 }
2173 {
2174 var6 = ((val*(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_4); /* item on <var_4:IndexedIterator[Option]>*/
2175 }
2176 var_o = var6;
2177 {
2178 { /* Inline opts#Option#names (var_o) on <var_o:Option> */
2179 var9 = var_o->attrs[COLOR_opts__Option___names].val; /* _names on <var_o:Option> */
2180 if (unlikely(var9 == NULL)) {
2181 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
2182 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 19);
2183 fatal_exit(1);
2184 }
2185 var7 = var9;
2186 RET_LABEL8:(void)0;
2187 }
2188 }
2189 var_10 = var7;
2190 {
2191 var11 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_10);
2192 }
2193 var_12 = var11;
2194 for(;;) {
2195 {
2196 var13 = ((short int(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_12); /* is_ok on <var_12:IndexedIterator[String]>*/
2197 }
2198 if (var13){
2199 } else {
2200 goto BREAK_label14;
2201 }
2202 {
2203 var15 = ((val*(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_12); /* item on <var_12:IndexedIterator[String]>*/
2204 }
2205 var_n = var15;
2206 {
2207 { /* Inline opts#OptionContext#optmap (self) on <self:OptionContext> */
2208 var18 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
2209 if (unlikely(var18 == NULL)) {
2210 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap");
2211 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 286);
2212 fatal_exit(1);
2213 }
2214 var16 = var18;
2215 RET_LABEL17:(void)0;
2216 }
2217 }
2218 {
2219 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var16, var_n, var_o); /* Direct call hash_collection#HashMap#[]= on <var16:HashMap[String, Option]>*/
2220 }
2221 {
2222 ((void(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_12); /* next on <var_12:IndexedIterator[String]>*/
2223 }
2224 }
2225 BREAK_label14: (void)0;
2226 {
2227 ((void(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_12); /* finish on <var_12:IndexedIterator[String]>*/
2228 }
2229 {
2230 ((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_4); /* next on <var_4:IndexedIterator[Option]>*/
2231 }
2232 }
2233 BREAK_label: (void)0;
2234 {
2235 ((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_4); /* finish on <var_4:IndexedIterator[Option]>*/
2236 }
2237 RET_LABEL:;
2238 }
2239 /* method opts#OptionContext#errors for (self: OptionContext): Array[String] */
2240 val* opts___opts__OptionContext___errors(val* self) {
2241 val* var /* : Array[String] */;
2242 val* var1 /* : Array[String] */;
2243 val* var_errors /* var errors: Array[String] */;
2244 val* var2 /* : Array[String] */;
2245 val* var4 /* : Array[String] */;
2246 val* var5 /* : Array[Option] */;
2247 val* var7 /* : Array[Option] */;
2248 val* var_ /* var : Array[Option] */;
2249 val* var8 /* : IndexedIterator[nullable Object] */;
2250 val* var_9 /* var : IndexedIterator[Option] */;
2251 short int var10 /* : Bool */;
2252 val* var11 /* : nullable Object */;
2253 val* var_o /* var o: Option */;
2254 val* var12 /* : Array[String] */;
2255 val* var14 /* : Array[String] */;
2256 val* var_15 /* var : Array[String] */;
2257 val* var16 /* : IndexedIterator[nullable Object] */;
2258 val* var_17 /* var : IndexedIterator[String] */;
2259 short int var18 /* : Bool */;
2260 val* var20 /* : nullable Object */;
2261 val* var_e /* var e: String */;
2262 var1 = NEW_core__Array(&type_core__Array__core__String);
2263 {
2264 core___core__Array___core__kernel__Object__init(var1); /* Direct call array#Array#init on <var1:Array[String]>*/
2265 }
2266 var_errors = var1;
2267 {
2268 { /* Inline opts#OptionContext#context_errors (self) on <self:OptionContext> */
2269 var4 = self->attrs[COLOR_opts__OptionContext___context_errors].val; /* _context_errors on <self:OptionContext> */
2270 if (unlikely(var4 == NULL)) {
2271 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _context_errors");
2272 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 283);
2273 fatal_exit(1);
2274 }
2275 var2 = var4;
2276 RET_LABEL3:(void)0;
2277 }
2278 }
2279 {
2280 core___core__Array___core__abstract_collection__SimpleCollection__add_all(var_errors, var2); /* Direct call array#Array#add_all on <var_errors:Array[String]>*/
2281 }
2282 {
2283 { /* Inline opts#OptionContext#options (self) on <self:OptionContext> */
2284 var7 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
2285 if (unlikely(var7 == NULL)) {
2286 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
2287 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 277);
2288 fatal_exit(1);
2289 }
2290 var5 = var7;
2291 RET_LABEL6:(void)0;
2292 }
2293 }
2294 var_ = var5;
2295 {
2296 var8 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
2297 }
2298 var_9 = var8;
2299 for(;;) {
2300 {
2301 var10 = ((short int(*)(val* self))((((long)var_9&3)?class_info[((long)var_9&3)]:var_9->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_9); /* is_ok on <var_9:IndexedIterator[Option]>*/
2302 }
2303 if (var10){
2304 } else {
2305 goto BREAK_label;
2306 }
2307 {
2308 var11 = ((val*(*)(val* self))((((long)var_9&3)?class_info[((long)var_9&3)]:var_9->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_9); /* item on <var_9:IndexedIterator[Option]>*/
2309 }
2310 var_o = var11;
2311 {
2312 { /* Inline opts#Option#errors (var_o) on <var_o:Option> */
2313 var14 = var_o->attrs[COLOR_opts__Option___errors].val; /* _errors on <var_o:Option> */
2314 if (unlikely(var14 == NULL)) {
2315 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _errors");
2316 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 28);
2317 fatal_exit(1);
2318 }
2319 var12 = var14;
2320 RET_LABEL13:(void)0;
2321 }
2322 }
2323 var_15 = var12;
2324 {
2325 var16 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_15);
2326 }
2327 var_17 = var16;
2328 for(;;) {
2329 {
2330 var18 = ((short int(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_17); /* is_ok on <var_17:IndexedIterator[String]>*/
2331 }
2332 if (var18){
2333 } else {
2334 goto BREAK_label19;
2335 }
2336 {
2337 var20 = ((val*(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_17); /* item on <var_17:IndexedIterator[String]>*/
2338 }
2339 var_e = var20;
2340 {
2341 core___core__Array___core__abstract_collection__SimpleCollection__add(var_errors, var_e); /* Direct call array#Array#add on <var_errors:Array[String]>*/
2342 }
2343 {
2344 ((void(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_17); /* next on <var_17:IndexedIterator[String]>*/
2345 }
2346 }
2347 BREAK_label19: (void)0;
2348 {
2349 ((void(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_17); /* finish on <var_17:IndexedIterator[String]>*/
2350 }
2351 {
2352 ((void(*)(val* self))((((long)var_9&3)?class_info[((long)var_9&3)]:var_9->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_9); /* next on <var_9:IndexedIterator[Option]>*/
2353 }
2354 }
2355 BREAK_label: (void)0;
2356 {
2357 ((void(*)(val* self))((((long)var_9&3)?class_info[((long)var_9&3)]:var_9->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_9); /* finish on <var_9:IndexedIterator[Option]>*/
2358 }
2359 var = var_errors;
2360 goto RET_LABEL;
2361 RET_LABEL:;
2362 return var;
2363 }