X-Git-Url: http://nitlanguage.org diff --git a/c_src/opts.sep.1.c b/c_src/opts.sep.1.c index 3904ab7..ff06e30 100644 --- a/c_src/opts.sep.1.c +++ b/c_src/opts.sep.1.c @@ -1,72 +1,58 @@ #include "opts.sep.0.h" /* method opts#Option#names for (self: Option): Array[String] */ -val* opts__Option__names(val* self) { +val* opts___opts__Option___names(val* self) { val* var /* : Array[String] */; val* var1 /* : Array[String] */; var1 = self->attrs[COLOR_opts__Option___names].val; /* _names on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _names", "lib/opts.nit", 19); -exit(1); +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 19); +fatal_exit(1); } var = var1; RET_LABEL:; return var; } -/* method opts#Option#names for (self: Object): Array[String] */ -val* VIRTUAL_opts__Option__names(val* self) { -val* var /* : Array[String] */; -val* var1 /* : Array[String] */; -var1 = opts__Option__names(self); -var = var1; +/* method opts#Option#names= for (self: Option, Array[String]) */ +void opts___opts__Option___names_61d(val* self, val* p0) { +self->attrs[COLOR_opts__Option___names].val = p0; /* _names on */ RET_LABEL:; -return var; } /* method opts#Option#helptext for (self: Option): String */ -val* opts__Option__helptext(val* self) { +val* opts___opts__Option___helptext(val* self) { val* var /* : String */; val* var1 /* : String */; var1 = self->attrs[COLOR_opts__Option___helptext].val; /* _helptext on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _helptext", "lib/opts.nit", 25); -exit(1); +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _helptext"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 25); +fatal_exit(1); } var = var1; RET_LABEL:; return var; } -/* method opts#Option#helptext for (self: Object): String */ -val* VIRTUAL_opts__Option__helptext(val* self) { -val* var /* : String */; -val* var1 /* : String */; -var1 = opts__Option__helptext(self); -var = var1; +/* method opts#Option#helptext= for (self: Option, String) */ +void opts___opts__Option___helptext_61d(val* self, val* p0) { +self->attrs[COLOR_opts__Option___helptext].val = p0; /* _helptext on */ RET_LABEL:; -return var; } /* method opts#Option#errors for (self: Option): Array[String] */ -val* opts__Option__errors(val* self) { +val* opts___opts__Option___errors(val* self) { val* var /* : Array[String] */; val* var1 /* : Array[String] */; var1 = self->attrs[COLOR_opts__Option___errors].val; /* _errors on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _errors", "lib/opts.nit", 28); -exit(1); +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _errors"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 28); +fatal_exit(1); } var = var1; RET_LABEL:; return var; } -/* method opts#Option#errors for (self: Object): Array[String] */ -val* VIRTUAL_opts__Option__errors(val* self) { -val* var /* : Array[String] */; -val* var1 /* : Array[String] */; -var1 = opts__Option__errors(self); -var = var1; -RET_LABEL:; -return var; -} /* method opts#Option#mandatory for (self: Option): Bool */ -short int opts__Option__mandatory(val* self) { +short int opts___opts__Option___mandatory(val* self) { short int var /* : Bool */; short int var1 /* : Bool */; var1 = self->attrs[COLOR_opts__Option___mandatory].s; /* _mandatory on */ @@ -74,27 +60,22 @@ var = var1; RET_LABEL:; return var; } -/* method opts#Option#mandatory for (self: Object): Bool */ -short int VIRTUAL_opts__Option__mandatory(val* self) { +/* method opts#Option#hidden for (self: Option): Bool */ +short int opts___opts__Option___hidden(val* self) { short int var /* : Bool */; short int var1 /* : Bool */; -var1 = opts__Option__mandatory(self); +var1 = self->attrs[COLOR_opts__Option___hidden].s; /* _hidden on */ var = var1; RET_LABEL:; return var; } -/* method opts#Option#mandatory= for (self: Option, Bool) */ -void opts__Option__mandatory_61d(val* self, short int p0) { -self->attrs[COLOR_opts__Option___mandatory].s = p0; /* _mandatory on */ -RET_LABEL:; -} -/* method opts#Option#mandatory= for (self: Object, Bool) */ -void VIRTUAL_opts__Option__mandatory_61d(val* self, short int p0) { -opts__Option__mandatory_61d(self, p0); +/* method opts#Option#hidden= for (self: Option, Bool) */ +void opts___opts__Option___hidden_61d(val* self, short int p0) { +self->attrs[COLOR_opts__Option___hidden].s = p0; /* _hidden on */ RET_LABEL:; } /* method opts#Option#read for (self: Option): Bool */ -short int opts__Option__read(val* self) { +short int opts___opts__Option___read(val* self) { short int var /* : Bool */; short int var1 /* : Bool */; var1 = self->attrs[COLOR_opts__Option___read].s; /* _read on */ @@ -102,644 +83,620 @@ var = var1; RET_LABEL:; return var; } -/* method opts#Option#read for (self: Object): Bool */ -short int VIRTUAL_opts__Option__read(val* self) { -short int var /* : Bool */; -short int var1 /* : Bool */; -var1 = opts__Option__read(self); +/* method opts#Option#read= for (self: Option, Bool) */ +void opts___opts__Option___read_61d(val* self, short int p0) { +self->attrs[COLOR_opts__Option___read].s = p0; /* _read on */ +RET_LABEL:; +} +/* method opts#Option#value for (self: Option): nullable Object */ +val* opts___opts__Option___value(val* self) { +val* var /* : nullable Object */; +val* var1 /* : nullable Object */; +var1 = self->attrs[COLOR_opts__Option___value].val; /* _value on */ var = var1; RET_LABEL:; return var; } /* method opts#Option#value= for (self: Option, nullable Object) */ -void opts__Option__value_61d(val* self, val* p0) { +void opts___opts__Option___value_61d(val* self, val* p0) { short int var /* : Bool */; int cltype; int idtype; const struct type* type_struct; -/* Covariant cast for argument 0 (value) isa nullable VALUE */ -/* isa nullable VALUE */ -type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE]; +short int is_nullable; +const char* var_class_name; +/* Covariant cast for argument 0 (value) isa VALUE */ +/* isa VALUE */ +type_struct = self->type->resolution_table->types[COLOR_opts__Option__VALUE]; cltype = type_struct->color; idtype = type_struct->id; +is_nullable = type_struct->is_nullable; if(p0 == NULL) { -var = 1; +var = is_nullable; } else { -if(cltype >= p0->type->table_size) { +if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) { var = 0; } else { -var = p0->type->type_table[cltype] == idtype; +var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype; } } -if (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/opts.nit", 37); -exit(1); +if (unlikely(!var)) { +var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 40); +fatal_exit(1); } self->attrs[COLOR_opts__Option___value].val = p0; /* _value on */ RET_LABEL:; } -/* method opts#Option#value= for (self: Object, nullable Object) */ -void VIRTUAL_opts__Option__value_61d(val* self, val* p0) { -opts__Option__value_61d(self, p0); -RET_LABEL:; -} -/* method opts#Option#value for (self: Option): nullable Object */ -val* opts__Option__value(val* self) { -val* var /* : nullable Object */; -val* var1 /* : nullable Object */; -short int var2 /* : Bool */; +/* method opts#Option#default_value= for (self: Option, nullable Object) */ +void opts___opts__Option___default_value_61d(val* self, val* p0) { +short int var /* : Bool */; int cltype; int idtype; const struct type* type_struct; short int is_nullable; -var1 = self->attrs[COLOR_opts__Option___value].val; /* _value on */ -/* isa VALUE */ -type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE]; +const char* var_class_name; +/* Covariant cast for argument 0 (default_value) isa VALUE */ +/* isa VALUE */ +type_struct = self->type->resolution_table->types[COLOR_opts__Option__VALUE]; cltype = type_struct->color; idtype = type_struct->id; is_nullable = type_struct->is_nullable; -if(var1 == NULL) { -var2 = is_nullable; +if(p0 == NULL) { +var = is_nullable; } else { -if(cltype >= var1->type->table_size) { -var2 = 0; +if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) { +var = 0; } else { -var2 = var1->type->type_table[cltype] == idtype; -} -} -if (!var2) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/opts.nit", 41); -exit(1); -} -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; +var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype; } -/* method opts#Option#value for (self: Object): nullable Object */ -val* VIRTUAL_opts__Option__value(val* self) { -val* var /* : nullable Object */; -val* var1 /* : nullable Object */; -var1 = opts__Option__value(self); -var = var1; -RET_LABEL:; -return var; } -/* method opts#Option#default_value for (self: Option): nullable Object */ -val* opts__Option__default_value(val* self) { -val* var /* : nullable Object */; -val* var1 /* : nullable Object */; -var1 = self->attrs[COLOR_opts__Option___default_value].val; /* _default_value on */ -var = var1; -RET_LABEL:; -return var; +if (unlikely(!var)) { +var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 43); +fatal_exit(1); } -/* method opts#Option#default_value for (self: Object): nullable Object */ -val* VIRTUAL_opts__Option__default_value(val* self) { -val* var /* : nullable Object */; -val* var1 /* : nullable Object */; -var1 = opts__Option__default_value(self); -var = var1; +self->attrs[COLOR_opts__Option___default_value].val = p0; /* _default_value on */ RET_LABEL:; -return var; } -/* method opts#Option#default_value= for (self: Option, nullable Object) */ -void opts__Option__default_value_61d(val* self, val* p0) { +/* method opts#Option#init for (self: Option, String, nullable Object, nullable Array[String]) */ +void opts___opts__Option___init(val* self, val* p0, val* p1, val* p2) { short int var /* : Bool */; int cltype; int idtype; const struct type* type_struct; -/* Covariant cast for argument 0 (default_value) isa nullable VALUE */ -/* isa nullable VALUE */ -type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE]; +short int is_nullable; +const char* var_class_name; +val* var_help /* var help: String */; +val* var_default /* var default: nullable Object */; +val* var_names /* var names: nullable Array[String] */; +/* Covariant cast for argument 1 (default) isa VALUE */ +/* isa VALUE */ +type_struct = self->type->resolution_table->types[COLOR_opts__Option__VALUE]; cltype = type_struct->color; idtype = type_struct->id; -if(p0 == NULL) { -var = 1; +is_nullable = type_struct->is_nullable; +if(p1 == NULL) { +var = is_nullable; } else { -if(cltype >= p0->type->table_size) { +if(cltype >= (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->table_size) { var = 0; } else { -var = p0->type->type_table[cltype] == idtype; +var = (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->type_table[cltype] == idtype; } } -if (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/opts.nit", 43); -exit(1); +if (unlikely(!var)) { +var_class_name = p1 == NULL ? "null" : (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 46); +fatal_exit(1); } -self->attrs[COLOR_opts__Option___default_value].val = p0; /* _default_value on */ -RET_LABEL:; +{ +{ /* Inline kernel#Object#init (self) on */ +RET_LABEL1:(void)0; +} +} +var_help = p0; +var_default = p1; +var_names = p2; +{ +opts___opts__Option___init_opt(self, var_help, var_default, var_names); /* Direct call opts#Option#init_opt on */ } -/* method opts#Option#default_value= for (self: Object, nullable Object) */ -void VIRTUAL_opts__Option__default_value_61d(val* self, val* p0) { -opts__Option__default_value_61d(self, p0); RET_LABEL:; } /* method opts#Option#init_opt for (self: Option, String, nullable Object, nullable Array[String]) */ -void opts__Option__init_opt(val* self, val* p0, val* p1, val* p2) { +void opts___opts__Option___init_opt(val* self, val* p0, val* p1, val* p2) { short int var /* : Bool */; int cltype; int idtype; const struct type* type_struct; +short int is_nullable; +const char* var_class_name; val* var_help /* var help: String */; val* var_default /* var default: nullable Object */; val* var_names /* var names: nullable Array[String] */; -val* var1 /* : null */; +short int var1 /* : Bool */; short int var2 /* : Bool */; val* var3 /* : Array[String] */; -val* var4 /* : Array[nullable Object] */; -short int var5 /* : Bool */; -short int var6 /* : Bool */; -val* var7 /* : Array[String] */; -/* Covariant cast for argument 1 (default) isa nullable VALUE */ -/* isa nullable VALUE */ -type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE]; +val* var5 /* : Array[nullable Object] */; +short int var9 /* : Bool */; +int cltype10; +int idtype11; +const struct type* type_struct12; +short int is_nullable13; +const char* var_class_name14; +short int var16 /* : Bool */; +int cltype17; +int idtype18; +const struct type* type_struct19; +short int is_nullable20; +const char* var_class_name21; +/* Covariant cast for argument 1 (default) isa VALUE */ +/* isa VALUE */ +type_struct = self->type->resolution_table->types[COLOR_opts__Option__VALUE]; cltype = type_struct->color; idtype = type_struct->id; +is_nullable = type_struct->is_nullable; if(p1 == NULL) { -var = 1; +var = is_nullable; } else { -if(cltype >= p1->type->table_size) { +if(cltype >= (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->table_size) { var = 0; } else { -var = p1->type->type_table[cltype] == idtype; +var = (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->type_table[cltype] == idtype; } } -if (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/opts.nit", 46); -exit(1); +if (unlikely(!var)) { +var_class_name = p1 == NULL ? "null" : (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 51); +fatal_exit(1); } var_help = p0; var_default = p1; var_names = p2; -var1 = NULL; if (var_names == NULL) { -var2 = 1; /* is null */ +var1 = 1; /* is null */ } else { -var2 = 0; /* arg is null but recv is not */ +var1 = 0; /* arg is null but recv is not */ } -if (var2){ -var3 = NEW_array__Array(&type_array__Arraystring__String); -((void (*)(val*))(var3->class->vft[COLOR_array__Array__init]))(var3) /* init on */; -CHECK_NEW_array__Array(var3); +if (0) { +var2 = core___core__Array___core__kernel__Object___61d_61d(var_names, ((val*)NULL)); +var1 = var2; +} +if (var1){ +var3 = NEW_core__Array(&type_core__Array__core__String); +{ +core___core__Array___core__kernel__Object__init(var3); /* Direct call array#Array#init on */ +} +{ +{ /* Inline opts#Option#names= (self,var3) on */ self->attrs[COLOR_opts__Option___names].val = var3; /* _names on */ +RET_LABEL4:(void)0; +} +} } else { -var4 = ((val* (*)(val*))(var_names->class->vft[COLOR_array__Collection__to_a]))(var_names) /* to_a on */; -self->attrs[COLOR_opts__Option___names].val = var4; /* _names on */ +{ +var5 = core__array___Collection___to_a(var_names); +} +{ +{ /* Inline opts#Option#names= (self,var5) on */ +self->attrs[COLOR_opts__Option___names].val = var5; /* _names on */ +RET_LABEL6:(void)0; +} } +} +{ +{ /* Inline opts#Option#helptext= (self,var_help) on */ self->attrs[COLOR_opts__Option___helptext].val = var_help; /* _helptext on */ -var5 = 0; -self->attrs[COLOR_opts__Option___mandatory].s = var5; /* _mandatory on */ -var6 = 0; -self->attrs[COLOR_opts__Option___read].s = var6; /* _read on */ +RET_LABEL7:(void)0; +} +} +{ +{ /* Inline opts#Option#default_value= (self,var_default) on */ +/* Covariant cast for argument 0 (default_value) isa VALUE */ +/* isa VALUE */ +type_struct12 = self->type->resolution_table->types[COLOR_opts__Option__VALUE]; +cltype10 = type_struct12->color; +idtype11 = type_struct12->id; +is_nullable13 = type_struct12->is_nullable; +if(var_default == NULL) { +var9 = is_nullable13; +} else { +if(cltype10 >= (((long)var_default&3)?type_info[((long)var_default&3)]:var_default->type)->table_size) { +var9 = 0; +} else { +var9 = (((long)var_default&3)?type_info[((long)var_default&3)]:var_default->type)->type_table[cltype10] == idtype11; +} +} +if (unlikely(!var9)) { +var_class_name14 = var_default == NULL ? "null" : (((long)var_default&3)?type_info[((long)var_default&3)]:var_default->type)->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name14); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 43); +fatal_exit(1); +} self->attrs[COLOR_opts__Option___default_value].val = var_default; /* _default_value on */ -self->attrs[COLOR_opts__Option___value].val = var_default; /* _value on */ -var7 = NEW_array__Array(&type_array__Arraystring__String); -((void (*)(val*))(var7->class->vft[COLOR_array__Array__init]))(var7) /* init on */; -CHECK_NEW_array__Array(var7); -self->attrs[COLOR_opts__Option___errors].val = var7; /* _errors on */ -RET_LABEL:; +RET_LABEL8:(void)0; } -/* method opts#Option#init_opt for (self: Object, String, nullable Object, nullable Array[String]) */ -void VIRTUAL_opts__Option__init_opt(val* self, val* p0, val* p1, val* p2) { -opts__Option__init_opt(self, p0, p1, p2); -RET_LABEL:; } -/* method opts#Option#add_aliases for (self: Option, Array[String]) */ -void opts__Option__add_aliases(val* self, val* p0) { -val* var_names /* var names: Array[String] */; -val* var /* : Array[String] */; -var_names = p0; -var = self->attrs[COLOR_opts__Option___names].val; /* _names on */ -if (var == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _names", "lib/opts.nit", 63); -exit(1); +{ +{ /* Inline opts#Option#value= (self,var_default) on */ +/* Covariant cast for argument 0 (value) isa VALUE */ +/* isa VALUE */ +type_struct19 = self->type->resolution_table->types[COLOR_opts__Option__VALUE]; +cltype17 = type_struct19->color; +idtype18 = type_struct19->id; +is_nullable20 = type_struct19->is_nullable; +if(var_default == NULL) { +var16 = is_nullable20; +} else { +if(cltype17 >= (((long)var_default&3)?type_info[((long)var_default&3)]:var_default->type)->table_size) { +var16 = 0; +} else { +var16 = (((long)var_default&3)?type_info[((long)var_default&3)]:var_default->type)->type_table[cltype17] == idtype18; } -((void (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var, var_names) /* add_all on */; -RET_LABEL:; } -/* method opts#Option#add_aliases for (self: Object, Array[String]) */ -void VIRTUAL_opts__Option__add_aliases(val* self, val* p0) { -opts__Option__add_aliases(self, p0); -RET_LABEL:; +if (unlikely(!var16)) { +var_class_name21 = var_default == NULL ? "null" : (((long)var_default&3)?type_info[((long)var_default&3)]:var_default->type)->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name21); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 40); +fatal_exit(1); +} +self->attrs[COLOR_opts__Option___value].val = var_default; /* _value on */ +RET_LABEL15:(void)0; +} } -/* method opts#Option#to_s for (self: Option): String */ -val* opts__Option__to_s(val* self) { -val* var /* : String */; -long var1 /* : Int */; -val* var2 /* : String */; -var1 = 2; -var2 = ((val* (*)(val*, long))(self->class->vft[COLOR_opts__Option__pretty]))(self, var1) /* pretty on */; -var = var2; -goto RET_LABEL; RET_LABEL:; -return var; } -/* method opts#Option#to_s for (self: Object): String */ -val* VIRTUAL_opts__Option__to_s(val* self) { +/* method opts#Option#to_s for (self: Option): String */ +val* opts___opts__Option___core__abstract_text__Object__to_s(val* self) { val* var /* : String */; val* var1 /* : String */; -var1 = opts__Option__to_s(self); +{ +var1 = opts___opts__Option___pretty(self, 2l); +} var = var1; +goto RET_LABEL; RET_LABEL:; return var; } /* method opts#Option#pretty for (self: Option, Int): String */ -val* opts__Option__pretty(val* self, long p0) { +val* opts___opts__Option___pretty(val* self, long p0) { val* var /* : String */; long var_off /* var off: Int */; -val* var1 /* : Buffer */; +val* var1 /* : FlatBuffer */; static val* varonce; val* var2 /* : String */; char* var3 /* : NativeString */; -long var4 /* : Int */; -val* var5 /* : String */; -val* var_text /* var text: Buffer */; -val* var6 /* : Array[String] */; -static val* varonce7; -val* var8 /* : String */; -char* var9 /* : NativeString */; -long var10 /* : Int */; +val* var4 /* : String */; +val* var_text /* var text: FlatBuffer */; +val* var5 /* : Array[String] */; +val* var7 /* : Array[String] */; +static val* varonce8; +val* var9 /* : String */; +char* var10 /* : NativeString */; val* var11 /* : String */; val* var12 /* : String */; static val* varonce13; val* var14 /* : String */; char* var15 /* : NativeString */; -long var16 /* : Int */; -val* var17 /* : String */; -long var18 /* : Int */; +val* var16 /* : String */; +long var17 /* : Int */; long var19 /* : Int */; -long var21 /* : Int */; -long var_rest /* var rest: Int */; -long var22 /* : Int */; -short int var23 /* : Bool */; -short int var25 /* : Bool */; +long var20 /* : Int */; +short int var22 /* : Bool */; int cltype; int idtype; +const char* var_class_name; +long var23 /* : Int */; +long var_rest /* var rest: Int */; +short int var24 /* : Bool */; short int var26 /* : Bool */; -static val* varonce27; -val* var28 /* : String */; -char* var29 /* : NativeString */; -long var30 /* : Int */; -val* var31 /* : String */; +int cltype27; +int idtype28; +const char* var_class_name29; +short int var30 /* : Bool */; +static val* varonce31; val* var32 /* : String */; -val* var33 /* : String */; +char* var33 /* : NativeString */; val* var34 /* : String */; +val* var35 /* : String */; +val* var36 /* : String */; +val* var38 /* : String */; +val* var39 /* : String */; var_off = p0; -var1 = NEW_string__Buffer(&type_string__Buffer); -if (varonce) { +var1 = NEW_core__FlatBuffer(&type_core__FlatBuffer); +if (likely(varonce!=NULL)) { var2 = varonce; } else { var3 = " "; -var4 = 2; -var5 = string__NativeString__to_s_with_length(var3, var4); -var2 = var5; +var4 = core__flat___NativeString___to_s_full(var3, 2l, 2l); +var2 = var4; varonce = var2; } -((void (*)(val*, val*))(var1->class->vft[COLOR_string__Buffer__from]))(var1, var2) /* from on */; -CHECK_NEW_string__Buffer(var1); +{ +core___core__FlatBuffer___from(var1, var2); /* Direct call flat#FlatBuffer#from on */ +} var_text = var1; -var6 = self->attrs[COLOR_opts__Option___names].val; /* _names on */ -if (var6 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _names", "lib/opts.nit", 72); -exit(1); -} -if (varonce7) { -var8 = varonce7; -} else { -var9 = ", "; -var10 = 2; -var11 = string__NativeString__to_s_with_length(var9, var10); -var8 = var11; -varonce7 = var8; -} -var12 = ((val* (*)(val*, val*))(var6->class->vft[COLOR_string__Collection__join]))(var6, var8) /* join on */; -((void (*)(val*, val*))(var_text->class->vft[COLOR_abstract_collection__Sequence__append]))(var_text, var12) /* append on */; -if (varonce13) { +{ +{ /* Inline opts#Option#names (self) on */ +var7 = self->attrs[COLOR_opts__Option___names].val; /* _names on */ +if (unlikely(var7 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 19); +fatal_exit(1); +} +var5 = var7; +RET_LABEL6:(void)0; +} +} +if (likely(varonce8!=NULL)) { +var9 = varonce8; +} else { +var10 = ", "; +var11 = core__flat___NativeString___to_s_full(var10, 2l, 2l); +var9 = var11; +varonce8 = var9; +} +{ +var12 = core__abstract_text___Collection___join(var5, var9); +} +{ +core___core__FlatBuffer___core__abstract_text__Buffer__append(var_text, var12); /* Direct call flat#FlatBuffer#append on */ +} +if (likely(varonce13!=NULL)) { var14 = varonce13; } else { var15 = " "; -var16 = 2; -var17 = string__NativeString__to_s_with_length(var15, var16); -var14 = var17; +var16 = core__flat___NativeString___to_s_full(var15, 2l, 2l); +var14 = var16; varonce13 = var14; } -((void (*)(val*, val*))(var_text->class->vft[COLOR_abstract_collection__Sequence__append]))(var_text, var14) /* append on */; -var18 = ((long (*)(val*))(var_text->class->vft[COLOR_abstract_collection__Collection__length]))(var_text) /* length on */; -{ /* Inline kernel#Int#- (var_off,var18) */ -var21 = var_off - var18; -var19 = var21; -goto RET_LABEL20; -RET_LABEL20:(void)0; -} -var_rest = var19; -var22 = 0; -{ /* Inline kernel#Int#> (var_rest,var22) */ -/* Covariant cast for argument 0 (i) isa OTHER */ -/* isa OTHER */ -var25 = 1; /* easy isa OTHER*/ -if (!var25) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259); -exit(1); -} -var26 = var_rest > var22; -var23 = var26; -goto RET_LABEL24; -RET_LABEL24:(void)0; -} -if (var23){ -if (varonce27) { -var28 = varonce27; -} else { -var29 = " "; -var30 = 1; -var31 = string__NativeString__to_s_with_length(var29, var30); -var28 = var31; -varonce27 = var28; -} -var32 = ((val* (*)(val*, long))(var28->class->vft[COLOR_string__String___42d]))(var28, var_rest) /* * on */; -((void (*)(val*, val*))(var_text->class->vft[COLOR_abstract_collection__Sequence__append]))(var_text, var32) /* append on */; -} else { -} -var33 = ((val* (*)(val*))(self->class->vft[COLOR_opts__Option__helptext]))(self) /* helptext on */; -((void (*)(val*, val*))(var_text->class->vft[COLOR_abstract_collection__Sequence__append]))(var_text, var33) /* append on */; -var34 = ((val* (*)(val*))(var_text->class->vft[COLOR_string__Object__to_s]))(var_text) /* to_s on */; -var = var34; -goto RET_LABEL; -RET_LABEL:; -return var; +{ +core___core__FlatBuffer___core__abstract_text__Buffer__append(var_text, var14); /* Direct call flat#FlatBuffer#append on */ } -/* method opts#Option#pretty for (self: Object, Int): String */ -val* VIRTUAL_opts__Option__pretty(val* self, long p0) { -val* var /* : String */; -val* var1 /* : String */; -var1 = opts__Option__pretty(self, p0); -var = var1; -RET_LABEL:; -return var; +{ +{ /* Inline abstract_text#FlatText#length (var_text) on */ +var19 = var_text->attrs[COLOR_core__abstract_text__FlatText___length].l; /* _length on */ +var17 = var19; +RET_LABEL18:(void)0; } -/* method opts#Option#pretty_default for (self: Option): String */ -val* opts__Option__pretty_default(val* self) { -val* var /* : String */; -val* var1 /* : nullable Object */; -val* var_dv /* var dv: nullable Object */; -val* var2 /* : null */; -short int var3 /* : Bool */; -val* var4 /* : Array[Object] */; -long var5 /* : Int */; -val* var_ /* var : Array[Object] */; -static val* varonce; -val* var6 /* : String */; -char* var7 /* : NativeString */; -long var8 /* : Int */; -val* var9 /* : String */; -static val* varonce10; -val* var11 /* : String */; -char* var12 /* : NativeString */; -long var13 /* : Int */; -val* var14 /* : String */; -val* var15 /* : String */; -static val* varonce16; -val* var17 /* : String */; -char* var18 /* : NativeString */; -long var19 /* : Int */; -val* var20 /* : String */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_opts__Option__default_value]))(self) /* default_value on */; -var_dv = var1; -var2 = NULL; -if (var_dv == NULL) { -var3 = 0; /* is null */ -} else { -var3 = 1; /* arg is null and recv is not */ } -if (var3){ -var4 = NEW_array__Array(&type_array__Arraykernel__Object); -var5 = 3; -((void (*)(val*, long))(var4->class->vft[COLOR_array__Array__with_capacity]))(var4, var5) /* with_capacity on */; -CHECK_NEW_array__Array(var4); -var_ = var4; -if (varonce) { -var6 = varonce; +{ +{ /* Inline kernel#Int#- (var_off,var17) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var22 = 1; /* easy isa OTHER*/ +if (unlikely(!var22)) { +var_class_name = type_core__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734); +fatal_exit(1); +} +var23 = var_off - var17; +var20 = var23; +goto RET_LABEL21; +RET_LABEL21:(void)0; +} +} +var_rest = var20; +{ +{ /* Inline kernel#Int#> (var_rest,0l) on */ +/* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */ +/* <0l:Int> isa OTHER */ +var26 = 1; /* easy <0l:Int> isa OTHER*/ +if (unlikely(!var26)) { +var_class_name29 = type_core__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name29); +PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730); +fatal_exit(1); +} +var30 = var_rest > 0l; +var24 = var30; +goto RET_LABEL25; +RET_LABEL25:(void)0; +} +} +if (var24){ +if (likely(varonce31!=NULL)) { +var32 = varonce31; } else { -var7 = " ("; -var8 = 2; -var9 = string__NativeString__to_s_with_length(var7, var8); -var6 = var9; -varonce = var6; +var33 = " "; +var34 = core__flat___NativeString___to_s_full(var33, 1l, 1l); +var32 = var34; +varonce31 = var32; } -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var6) /* add on */; -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var_dv) /* add on */; -if (varonce10) { -var11 = varonce10; -} else { -var12 = ")"; -var13 = 1; -var14 = string__NativeString__to_s_with_length(var12, var13); -var11 = var14; -varonce10 = var11; +{ +var35 = ((val*(*)(val* self, long p0))(var32->class->vft[COLOR_core__abstract_text__String___42d]))(var32, var_rest); /* * on */ } -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var11) /* add on */; -var15 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on */; -var = var15; -goto RET_LABEL; -} else { +{ +core___core__FlatBuffer___core__abstract_text__Buffer__append(var_text, var35); /* Direct call flat#FlatBuffer#append on */ } -if (varonce16) { -var17 = varonce16; } else { -var18 = ""; -var19 = 0; -var20 = string__NativeString__to_s_with_length(var18, var19); -var17 = var20; -varonce16 = var17; -} -var = var17; -goto RET_LABEL; -RET_LABEL:; -return var; } -/* method opts#Option#pretty_default for (self: Object): String */ -val* VIRTUAL_opts__Option__pretty_default(val* self) { -val* var /* : String */; -val* var1 /* : String */; -var1 = opts__Option__pretty_default(self); -var = var1; -RET_LABEL:; -return var; +{ +{ /* Inline opts#Option#helptext (self) on */ +var38 = self->attrs[COLOR_opts__Option___helptext].val; /* _helptext on */ +if (unlikely(var38 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _helptext"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 25); +fatal_exit(1); } -/* method opts#Option#read_param for (self: Option, Iterator[String]) */ -void opts__Option__read_param(val* self, val* p0) { -val* var_it /* var it: Iterator[String] */; -short int var /* : Bool */; -var_it = p0; -var = 1; -self->attrs[COLOR_opts__Option___read].s = var; /* _read on */ -RET_LABEL:; +var36 = var38; +RET_LABEL37:(void)0; } -/* method opts#Option#read_param for (self: Object, Iterator[String]) */ -void VIRTUAL_opts__Option__read_param(val* self, val* p0) { -opts__Option__read_param(self, p0); -RET_LABEL:; } -/* method opts#OptionText#init for (self: OptionText, String) */ -void opts__OptionText__init(val* self, val* p0) { -val* var_text /* var text: String */; -val* var /* : null */; -val* var1 /* : null */; -var_text = p0; -var = NULL; -var1 = NULL; -((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_opts__Option__init_opt]))(self, var_text, var, var1) /* init_opt on */; -RET_LABEL:; +{ +core___core__FlatBuffer___core__abstract_text__Buffer__append(var_text, var36); /* Direct call flat#FlatBuffer#append on */ } -/* method opts#OptionText#init for (self: Object, String) */ -void VIRTUAL_opts__OptionText__init(val* self, val* p0) { -opts__OptionText__init(self, p0); -RET_LABEL:; +{ +var39 = core___core__FlatBuffer___core__abstract_text__Object__to_s(var_text); } -/* method opts#OptionText#pretty for (self: OptionText, Int): String */ -val* opts__OptionText__pretty(val* self, long p0) { -val* var /* : String */; -long var_off /* var off: Int */; -val* var1 /* : String */; -var_off = p0; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_string__Object__to_s]))(self) /* to_s on */; -var = var1; +var = var39; goto RET_LABEL; RET_LABEL:; return var; } -/* method opts#OptionText#pretty for (self: Object, Int): String */ -val* VIRTUAL_opts__OptionText__pretty(val* self, long p0) { -val* var /* : String */; -val* var1 /* : String */; -var1 = opts__OptionText__pretty(self, p0); -var = var1; -RET_LABEL:; -return var; +/* method opts#Option#read_param for (self: Option, OptionContext, Iterator[String]) */ +void opts___opts__Option___read_param(val* self, val* p0, val* p1) { +val* var_opts /* var opts: OptionContext */; +val* var_it /* var it: Iterator[String] */; +var_opts = p0; +var_it = p1; +{ +{ /* Inline opts#Option#read= (self,1) on */ +self->attrs[COLOR_opts__Option___read].s = 1; /* _read on */ +RET_LABEL1:(void)0; } -/* method opts#OptionText#to_s for (self: OptionText): String */ -val* opts__OptionText__to_s(val* self) { -val* var /* : String */; -val* var1 /* : String */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_opts__Option__helptext]))(self) /* helptext on */; -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; } -/* method opts#OptionText#to_s for (self: Object): String */ -val* VIRTUAL_opts__OptionText__to_s(val* self) { -val* var /* : String */; -val* var1 /* : String */; -var1 = opts__OptionText__to_s(self); -var = var1; RET_LABEL:; -return var; } /* method opts#OptionBool#init for (self: OptionBool, String, Array[String]) */ -void opts__OptionBool__init(val* self, val* p0, val* p1) { +void opts___opts__OptionBool___init(val* self, val* p0, val* p1) { val* var_help /* var help: String */; val* var_names /* var names: Array[String] */; -short int var /* : Bool */; -val* var1 /* : nullable Object */; +val* var /* : nullable Object */; var_help = p0; var_names = p1; -var = 0; -var1 = BOX_kernel__Bool(var); /* autobox from Bool to nullable Object */ -((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_opts__Option__init_opt]))(self, var_help, var1, var_names) /* init_opt on */; -RET_LABEL:; +{ +var = (val*)((long)(0)<<2|3); +opts___opts__Option___init(self, var_help, var, var_names); /* Direct call opts#Option#init on */ } -/* method opts#OptionBool#init for (self: Object, String, Array[String]) */ -void VIRTUAL_opts__OptionBool__init(val* self, val* p0, val* p1) { -opts__OptionBool__init(self, p0, p1); RET_LABEL:; } -/* method opts#OptionBool#read_param for (self: OptionBool, Iterator[String]) */ -void opts__OptionBool__read_param(val* self, val* p0) { +/* method opts#OptionBool#read_param for (self: OptionBool, OptionContext, Iterator[String]) */ +void opts___opts__OptionBool___Option__read_param(val* self, val* p0, val* p1) { +val* var_opts /* var opts: OptionContext */; val* var_it /* var it: Iterator[String] */; short int var /* : Bool */; -val* var1 /* : nullable Object */; -var_it = p0; -((void (*)(val*, val*))(self->class->vft[COLOR_opts__OptionBool__read_param]))(self, p0) /* read_param on */; -var = 1; -var1 = BOX_kernel__Bool(var); /* autobox from Bool to nullable Object */ -((void (*)(val*, val*))(self->class->vft[COLOR_opts__Option__value_61d]))(self, var1) /* value= on */; -RET_LABEL:; +int cltype; +int idtype; +const struct type* type_struct; +const char* var_class_name; +val* var2 /* : nullable Object */; +var_opts = p0; +var_it = p1; +{ +((void(*)(val* self, val* p0, val* p1))(self->class->vft[COLOR_opts___opts__OptionBool___Option__read_param]))(self, p0, p1); /* read_param on */ +} +{ +{ /* Inline opts#Option#value= (self,1) on */ +/* Covariant cast for argument 0 (value) <1:Bool> isa VALUE */ +/* <1:Bool> isa VALUE */ +type_struct = self->type->resolution_table->types[COLOR_opts__Option__VALUE]; +cltype = type_struct->color; +idtype = type_struct->id; +if(cltype >= (&type_core__Bool)->table_size) { +var = 0; +} else { +var = (&type_core__Bool)->type_table[cltype] == idtype; +} +if (unlikely(!var)) { +var_class_name = type_core__Bool.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 40); +fatal_exit(1); +} +var2 = (val*)((long)(1)<<2|3); +self->attrs[COLOR_opts__Option___value].val = var2; /* _value on */ +RET_LABEL1:(void)0; +} } -/* method opts#OptionBool#read_param for (self: Object, Iterator[String]) */ -void VIRTUAL_opts__OptionBool__read_param(val* self, val* p0) { -opts__OptionBool__read_param(self, p0); RET_LABEL:; } /* method opts#OptionCount#init for (self: OptionCount, String, Array[String]) */ -void opts__OptionCount__init(val* self, val* p0, val* p1) { +void opts___opts__OptionCount___init(val* self, val* p0, val* p1) { val* var_help /* var help: String */; val* var_names /* var names: Array[String] */; -long var /* : Int */; -val* var1 /* : nullable Object */; +val* var /* : nullable Object */; var_help = p0; var_names = p1; -var = 0; -var1 = BOX_kernel__Int(var); /* autobox from Int to nullable Object */ -((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_opts__Option__init_opt]))(self, var_help, var1, var_names) /* init_opt on */; -RET_LABEL:; +{ +var = (val*)(0l<<2|1); +opts___opts__Option___init(self, var_help, var, var_names); /* Direct call opts#Option#init on */ } -/* method opts#OptionCount#init for (self: Object, String, Array[String]) */ -void VIRTUAL_opts__OptionCount__init(val* self, val* p0, val* p1) { -opts__OptionCount__init(self, p0, p1); RET_LABEL:; } -/* method opts#OptionCount#read_param for (self: OptionCount, Iterator[String]) */ -void opts__OptionCount__read_param(val* self, val* p0) { +/* method opts#OptionCount#read_param for (self: OptionCount, OptionContext, Iterator[String]) */ +void opts___opts__OptionCount___Option__read_param(val* self, val* p0, val* p1) { +val* var_opts /* var opts: OptionContext */; val* var_it /* var it: Iterator[String] */; val* var_ /* var : OptionCount */; val* var /* : nullable Object */; -long var1 /* : Int */; -long var2 /* : Int */; -long var4 /* : Int */; -long var5 /* : Int */; -val* var6 /* : nullable Object */; -var_it = p0; -((void (*)(val*, val*))(self->class->vft[COLOR_opts__OptionCount__read_param]))(self, p0) /* read_param on */; +val* var2 /* : nullable Object */; +long var3 /* : Int */; +short int var5 /* : Bool */; +int cltype; +int idtype; +const char* var_class_name; +long var6 /* : Int */; +long var7 /* : Int */; +short int var9 /* : Bool */; +int cltype10; +int idtype11; +const struct type* type_struct; +const char* var_class_name12; +val* var13 /* : nullable Object */; +var_opts = p0; +var_it = p1; +{ +((void(*)(val* self, val* p0, val* p1))(self->class->vft[COLOR_opts___opts__OptionCount___Option__read_param]))(self, p0, p1); /* read_param on */ +} var_ = self; -var = ((val* (*)(val*))(var_->class->vft[COLOR_opts__Option__value]))(var_) /* value on */; -var1 = 1; -{ /* Inline kernel#Int#+ (var,var1) */ -var4 = ((struct instance_kernel__Int*)var)->value; /* autounbox from nullable Object to Int */; -var5 = var4 + var1; -var2 = var5; -goto RET_LABEL3; -RET_LABEL3:(void)0; +{ +{ /* Inline opts#Option#value (var_) on */ +var2 = var_->attrs[COLOR_opts__Option___value].val; /* _value on */ +var = var2; +RET_LABEL1:(void)0; +} +} +{ +{ /* Inline kernel#Int#+ (var,1l) on */ +/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */ +/* <1l:Int> isa OTHER */ +var5 = 1; /* easy <1l:Int> isa OTHER*/ +if (unlikely(!var5)) { +var_class_name = type_core__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731); +fatal_exit(1); +} +var6 = (long)(var)>>2; +var7 = var6 + 1l; +var3 = var7; +goto RET_LABEL4; +RET_LABEL4:(void)0; +} +} +{ +{ /* Inline opts#Option#value= (var_,var3) on */ +/* Covariant cast for argument 0 (value) isa VALUE */ +/* isa VALUE */ +type_struct = var_->type->resolution_table->types[COLOR_opts__Option__VALUE]; +cltype10 = type_struct->color; +idtype11 = type_struct->id; +if(cltype10 >= (&type_core__Int)->table_size) { +var9 = 0; +} else { +var9 = (&type_core__Int)->type_table[cltype10] == idtype11; } -var6 = BOX_kernel__Int(var2); /* autobox from Int to nullable Object */ -((void (*)(val*, val*))(var_->class->vft[COLOR_opts__Option__value_61d]))(var_, var6) /* value= on */; -RET_LABEL:; +if (unlikely(!var9)) { +var_class_name12 = type_core__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name12); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 40); +fatal_exit(1); } -/* method opts#OptionCount#read_param for (self: Object, Iterator[String]) */ -void VIRTUAL_opts__OptionCount__read_param(val* self, val* p0) { -opts__OptionCount__read_param(self, p0); -RET_LABEL:; +var13 = (val*)(var3<<2|1); +var_->attrs[COLOR_opts__Option___value].val = var13; /* _value on */ +RET_LABEL8:(void)0; } -/* method opts#OptionParameter#convert for (self: OptionParameter, String): nullable Object */ -val* opts__OptionParameter__convert(val* self, val* p0) { -val* var /* : nullable Object */; -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "lib/opts.nit", 133); -exit(1); -RET_LABEL:; -return var; } -/* method opts#OptionParameter#convert for (self: Object, String): nullable Object */ -val* VIRTUAL_opts__OptionParameter__convert(val* self, val* p0) { -val* var /* : nullable Object */; -val* var1 /* : nullable Object */; -var1 = opts__OptionParameter__convert(self, p0); -var = var1; RET_LABEL:; -return var; } /* method opts#OptionParameter#parameter_mandatory for (self: OptionParameter): Bool */ -short int opts__OptionParameter__parameter_mandatory(val* self) { +short int opts___opts__OptionParameter___parameter_mandatory(val* self) { short int var /* : Bool */; short int var1 /* : Bool */; var1 = self->attrs[COLOR_opts__OptionParameter___parameter_mandatory].s; /* _parameter_mandatory on */ @@ -747,204 +704,338 @@ var = var1; RET_LABEL:; return var; } -/* method opts#OptionParameter#parameter_mandatory for (self: Object): Bool */ -short int VIRTUAL_opts__OptionParameter__parameter_mandatory(val* self) { -short int var /* : Bool */; -short int var1 /* : Bool */; -var1 = opts__OptionParameter__parameter_mandatory(self); -var = var1; -RET_LABEL:; -return var; -} -/* method opts#OptionParameter#parameter_mandatory= for (self: OptionParameter, Bool) */ -void opts__OptionParameter__parameter_mandatory_61d(val* self, short int p0) { -self->attrs[COLOR_opts__OptionParameter___parameter_mandatory].s = p0; /* _parameter_mandatory on */ -RET_LABEL:; -} -/* method opts#OptionParameter#parameter_mandatory= for (self: Object, Bool) */ -void VIRTUAL_opts__OptionParameter__parameter_mandatory_61d(val* self, short int p0) { -opts__OptionParameter__parameter_mandatory_61d(self, p0); -RET_LABEL:; -} -/* method opts#OptionParameter#read_param for (self: OptionParameter, Iterator[String]) */ -void opts__OptionParameter__read_param(val* self, val* p0) { +/* method opts#OptionParameter#read_param for (self: OptionParameter, OptionContext, Iterator[String]) */ +void opts___opts__OptionParameter___Option__read_param(val* self, val* p0, val* p1) { +val* var_opts /* var opts: OptionContext */; val* var_it /* var it: Iterator[String] */; short int var /* : Bool */; +short int var_ok /* var ok: Bool */; short int var1 /* : Bool */; +short int var2 /* : Bool */; +short int var3 /* : Bool */; short int var_ /* var : Bool */; -val* var2 /* : nullable Object */; -val* var3 /* : nullable Object */; -char var4 /* : Char */; -short int var5 /* : Bool */; +short int var4 /* : Bool */; +short int var6 /* : Bool */; short int var7 /* : Bool */; -char var8 /* : Char */; -short int var9 /* : Bool */; -val* var10 /* : nullable Object */; -val* var11 /* : nullable Object */; -short int var12 /* : Bool */; -val* var13 /* : Array[String] */; +short int var_8 /* var : Bool */; +val* var9 /* : nullable Object */; +short int var10 /* : Bool */; +short int var11 /* : Bool */; +short int var_12 /* var : Bool */; +val* var13 /* : nullable Object */; +val* var14 /* : SequenceRead[Char] */; +val* var15 /* : nullable Object */; +short int var16 /* : Bool */; +short int var18 /* : Bool */; +uint32_t var19 /* : Char */; +val* var20 /* : Array[Option] */; +val* var22 /* : Array[Option] */; +val* var_23 /* var : Array[Option] */; +val* var24 /* : IndexedIterator[nullable Object] */; +val* var_25 /* var : IndexedIterator[Option] */; +short int var26 /* : Bool */; +val* var27 /* : nullable Object */; +val* var_opt /* var opt: Option */; +val* var28 /* : Array[String] */; +val* var30 /* : Array[String] */; +val* var31 /* : nullable Object */; +short int var32 /* : Bool */; +val* var33 /* : nullable Object */; +val* var34 /* : nullable Object */; +short int var36 /* : Bool */; +int cltype; +int idtype; +const struct type* type_struct; +short int is_nullable; +const char* var_class_name; +val* var37 /* : Array[String] */; +val* var39 /* : Array[String] */; +val* var40 /* : NativeArray[String] */; static val* varonce; -val* var14 /* : String */; -char* var15 /* : NativeString */; -long var16 /* : Int */; -val* var17 /* : String */; -val* var18 /* : Array[String] */; -val* var19 /* : nullable Object */; -static val* varonce20; -val* var21 /* : String */; -char* var22 /* : NativeString */; -long var23 /* : Int */; -val* var24 /* : String */; -val* var25 /* : Array[Object] */; -long var26 /* : Int */; -val* var27 /* : NativeArray[Object] */; -val* var28 /* : String */; -var_it = p0; -((void (*)(val*, val*))(self->class->vft[COLOR_opts__OptionParameter__read_param]))(self, p0) /* read_param on */; -var1 = ((short int (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_it) /* is_ok on */; -var_ = var1; +static val* varonce41; +val* var42 /* : String */; +char* var43 /* : NativeString */; +val* var44 /* : String */; +static val* varonce45; +val* var46 /* : String */; +char* var47 /* : NativeString */; +val* var48 /* : String */; +val* var49 /* : Array[String] */; +val* var51 /* : Array[String] */; +val* var52 /* : nullable Object */; +val* var53 /* : String */; +var_opts = p0; +var_it = p1; +{ +((void(*)(val* self, val* p0, val* p1))(self->class->vft[COLOR_opts___opts__OptionParameter___Option__read_param]))(self, p0, p1); /* read_param on */ +} +{ +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_ok = var; +var_ = var_ok; +if (var_ok){ +{ +{ /* Inline opts#OptionParameter#parameter_mandatory (self) on */ +var6 = self->attrs[COLOR_opts__OptionParameter___parameter_mandatory].s; /* _parameter_mandatory on */ +var4 = var6; +RET_LABEL5:(void)0; +} +} +var7 = !var4; +var3 = var7; +} else { +var3 = var_; +} +var_8 = var3; +if (var3){ +{ +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 */ +} +{ +var10 = ((short int(*)(val* self))(var9->class->vft[COLOR_core__abstract_text__Text__is_empty]))(var9); /* is_empty on */ +} +var11 = !var10; +var2 = var11; +} else { +var2 = var_8; +} +var_12 = var2; +if (var2){ +{ +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 */ +} +{ +var14 = ((val*(*)(val* self))(var13->class->vft[COLOR_core__abstract_text__Text__chars]))(var13); /* chars on */ +} +{ +var15 = ((val*(*)(val* self))((((long)var14&3)?class_info[((long)var14&3)]:var14->class)->vft[COLOR_core__abstract_collection__Collection__first]))(var14); /* first on */ +} +{ +{ /* Inline kernel#Char#== (var15,'-') on */ +var19 = (uint32_t)((long)(var15)>>2); +var18 = var19 == '-'; +var16 = var18; +goto RET_LABEL17; +RET_LABEL17:(void)0; +} +} +var1 = var16; +} else { +var1 = var_12; +} if (var1){ -var2 = ((val* (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__item]))(var_it) /* item on */; -var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__first]))(var2) /* first on */; -var4 = '-'; -{ /* Inline kernel#Char#!= (var3,var4) */ -var7 = (var3 != NULL) && (var3->class == &class_kernel__Char); -if (var7) { -var8 = ((struct instance_kernel__Char*)var3)->value; /* autounbox from nullable Object to Char */; -var7 = (var8 == var4); -} -var9 = !var7; -var5 = var9; -goto RET_LABEL6; -RET_LABEL6:(void)0; +{ +{ /* Inline opts#OptionContext#options (var_opts) on */ +var22 = var_opts->attrs[COLOR_opts__OptionContext___options].val; /* _options on */ +if (unlikely(var22 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 277); +fatal_exit(1); +} +var20 = var22; +RET_LABEL21:(void)0; } -var = var5; +} +var_23 = var20; +{ +var24 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_23); +} +var_25 = var24; +for(;;) { +{ +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 */ +} +if (var26){ } else { -var = var_; +goto BREAK_label; } -if (var){ -var10 = ((val* (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__item]))(var_it) /* item on */; -var11 = ((val* (*)(val*, val*))(self->class->vft[COLOR_opts__OptionParameter__convert]))(self, var10) /* convert on */; -((void (*)(val*, val*))(self->class->vft[COLOR_opts__Option__value_61d]))(self, var11) /* value= on */; -((void (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__next]))(var_it) /* next on */; -} else { -var12 = self->attrs[COLOR_opts__OptionParameter___parameter_mandatory].s; /* _parameter_mandatory on */ -if (var12){ -var13 = self->attrs[COLOR_opts__Option___errors].val; /* _errors on */ -if (var13 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _errors", "lib/opts.nit", 146); -exit(1); -} -if (varonce) { -var14 = varonce; -} else { -var15 = "Parameter expected for option "; -var16 = 30; -var17 = string__NativeString__to_s_with_length(var15, var16); -var14 = var17; -varonce = var14; -} -var18 = ((val* (*)(val*))(self->class->vft[COLOR_opts__Option__names]))(self) /* names on */; -var19 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_collection__Collection__first]))(var18) /* first on */; -if (varonce20) { -var21 = varonce20; -} else { -var22 = "."; -var23 = 1; -var24 = string__NativeString__to_s_with_length(var22, var23); -var21 = var24; -varonce20 = var21; -} -var25 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var25 = array_instance Array[Object] */ -var26 = 3; -var27 = NEW_array__NativeArray(var26, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var27)->values[0] = (val*) var14; -((struct instance_array__NativeArray*)var27)->values[1] = (val*) var19; -((struct instance_array__NativeArray*)var27)->values[2] = (val*) var21; -((void (*)(val*, val*, long))(var25->class->vft[COLOR_array__Array__with_native]))(var25, var27, var26) /* with_native on */; -CHECK_NEW_array__Array(var25); -} -var28 = ((val* (*)(val*))(var25->class->vft[COLOR_string__Object__to_s]))(var25) /* to_s on */; -((void (*)(val*, val*))(var13->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var13, var28) /* add on */; +{ +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_opt = var27; +{ +{ /* Inline opts#Option#names (var_opt) on */ +var30 = var_opt->attrs[COLOR_opts__Option___names].val; /* _names on */ +if (unlikely(var30 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 19); +fatal_exit(1); +} +var28 = var30; +RET_LABEL29:(void)0; +} +} +{ +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 */ +} +{ +var32 = core___core__AbstractArrayRead___core__abstract_collection__Collection__has(var28, var31); +} +if (var32){ +var_ok = 0; +goto BREAK_label; } else { } +{ +((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 */ } -RET_LABEL:; } -/* method opts#OptionParameter#read_param for (self: Object, Iterator[String]) */ -void VIRTUAL_opts__OptionParameter__read_param(val* self, val* p0) { -opts__OptionParameter__read_param(self, p0); -RET_LABEL:; +BREAK_label: (void)0; +{ +((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 */ } -/* method opts#OptionParameter#init_opt for (self: OptionParameter, String, nullable Object, nullable Array[String]) */ -void opts__OptionParameter__init_opt(val* self, val* p0, val* p1, val* p2) { -short int var /* : Bool */; -int cltype; -int idtype; -const struct type* type_struct; -val* var_h /* var h: String */; -val* var_d /* var d: nullable Object */; -val* var_n /* var n: nullable Array[String] */; -short int var1 /* : Bool */; -/* Covariant cast for argument 1 (d) isa nullable VALUE */ -/* isa nullable VALUE */ -type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE]; +} else { +} +if (var_ok){ +{ +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 */ +} +{ +var34 = ((val*(*)(val* self, val* p0))(self->class->vft[COLOR_opts__OptionParameter__convert]))(self, var33); /* convert on */ +} +{ +{ /* Inline opts#Option#value= (self,var34) on */ +/* Covariant cast for argument 0 (value) isa VALUE */ +/* isa VALUE */ +type_struct = self->type->resolution_table->types[COLOR_opts__Option__VALUE]; cltype = type_struct->color; idtype = type_struct->id; -if(p1 == NULL) { -var = 1; +is_nullable = type_struct->is_nullable; +if(var34 == NULL) { +var36 = is_nullable; } else { -if(cltype >= p1->type->table_size) { -var = 0; +if(cltype >= (((long)var34&3)?type_info[((long)var34&3)]:var34->type)->table_size) { +var36 = 0; } else { -var = p1->type->type_table[cltype] == idtype; +var36 = (((long)var34&3)?type_info[((long)var34&3)]:var34->type)->type_table[cltype] == idtype; } } -if (!var) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/opts.nit", 151); -exit(1); +if (unlikely(!var36)) { +var_class_name = var34 == NULL ? "null" : (((long)var34&3)?type_info[((long)var34&3)]:var34->type)->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 40); +fatal_exit(1); +} +self->attrs[COLOR_opts__Option___value].val = var34; /* _value on */ +RET_LABEL35:(void)0; +} +} +{ +((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 */ +} +} else { +{ +{ /* Inline opts#Option#errors (self) on */ +var39 = self->attrs[COLOR_opts__Option___errors].val; /* _errors on */ +if (unlikely(var39 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _errors"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 28); +fatal_exit(1); +} +var37 = var39; +RET_LABEL38:(void)0; +} +} +if (unlikely(varonce==NULL)) { +var40 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String); +if (likely(varonce41!=NULL)) { +var42 = varonce41; +} else { +var43 = "Parameter expected for option "; +var44 = core__flat___NativeString___to_s_full(var43, 30l, 30l); +var42 = var44; +varonce41 = var42; +} +((struct instance_core__NativeArray*)var40)->values[0]=var42; +if (likely(varonce45!=NULL)) { +var46 = varonce45; +} else { +var47 = "."; +var48 = core__flat___NativeString___to_s_full(var47, 1l, 1l); +var46 = var48; +varonce45 = var46; +} +((struct instance_core__NativeArray*)var40)->values[2]=var46; +} else { +var40 = varonce; +varonce = NULL; +} +{ +{ /* Inline opts#Option#names (self) on */ +var51 = self->attrs[COLOR_opts__Option___names].val; /* _names on */ +if (unlikely(var51 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 19); +fatal_exit(1); +} +var49 = var51; +RET_LABEL50:(void)0; +} +} +{ +var52 = core___core__SequenceRead___Collection__first(var49); +} +((struct instance_core__NativeArray*)var40)->values[1]=var52; +{ +var53 = ((val*(*)(val* self))(var40->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var40); /* native_to_s on */ +} +varonce = var40; +{ +core___core__Array___core__abstract_collection__SimpleCollection__add(var37, var53); /* Direct call array#Array#add on */ } -var_h = p0; -var_d = p1; -var_n = p2; -((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_opts__Option__init_opt]))(self, p0, p1, p2) /* init_opt on */; -var1 = 1; -self->attrs[COLOR_opts__OptionParameter___parameter_mandatory].s = var1; /* _parameter_mandatory on */ -RET_LABEL:; } -/* method opts#OptionParameter#init_opt for (self: Object, String, nullable Object, nullable Array[String]) */ -void VIRTUAL_opts__OptionParameter__init_opt(val* self, val* p0, val* p1, val* p2) { -opts__OptionParameter__init_opt(self, p0, p1, p2); RET_LABEL:; } /* method opts#OptionString#init for (self: OptionString, String, Array[String]) */ -void opts__OptionString__init(val* self, val* p0, val* p1) { +void opts___opts__OptionString___init(val* self, val* p0, val* p1) { val* var_help /* var help: String */; val* var_names /* var names: Array[String] */; -val* var /* : null */; +short int var /* : Bool */; +int cltype; +int idtype; +const struct type* type_struct; +short int is_nullable; +const char* var_class_name; var_help = p0; var_names = p1; -var = NULL; -((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_opts__OptionParameter__init_opt]))(self, var_help, var, var_names) /* init_opt on */; -RET_LABEL:; +/* <((val*)NULL):null> isa VALUE */ +type_struct = self->type->resolution_table->types[COLOR_opts__Option__VALUE]; +cltype = type_struct->color; +idtype = type_struct->id; +is_nullable = type_struct->is_nullable; +if(((val*)NULL) == NULL) { +var = is_nullable; +} else { +if(cltype >= ((val*)NULL)->type->table_size) { +var = 0; +} else { +var = ((val*)NULL)->type->type_table[cltype] == idtype; +} +} +if (unlikely(!var)) { +var_class_name = ((val*)NULL) == NULL ? "null" : ((val*)NULL)->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 184); +fatal_exit(1); +} +{ +opts___opts__Option___init(self, var_help, ((val*)NULL), var_names); /* Direct call opts#Option#init on */ } -/* method opts#OptionString#init for (self: Object, String, Array[String]) */ -void VIRTUAL_opts__OptionString__init(val* self, val* p0, val* p1) { -opts__OptionString__init(self, p0, p1); RET_LABEL:; } /* method opts#OptionString#convert for (self: OptionString, String): nullable String */ -val* opts__OptionString__convert(val* self, val* p0) { +val* opts___opts__OptionString___OptionParameter__convert(val* self, val* p0) { val* var /* : nullable String */; val* var_str /* var str: String */; short int var1 /* : Bool */; int cltype; int idtype; const struct type* type_struct; +const char* var_class_name; var_str = p0; /* isa VALUE */ -type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE]; +type_struct = self->type->resolution_table->types[COLOR_opts__Option__VALUE]; cltype = type_struct->color; idtype = type_struct->id; if(cltype >= var_str->type->table_size) { @@ -952,457 +1043,19 @@ var1 = 0; } else { var1 = var_str->type->type_table[cltype] == idtype; } -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/opts.nit", 164); -exit(1); +if (unlikely(!var1)) { +var_class_name = var_str == NULL ? "null" : var_str->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 186); +fatal_exit(1); } var = var_str; goto RET_LABEL; RET_LABEL:; return var; } -/* method opts#OptionString#convert for (self: Object, String): nullable Object */ -val* VIRTUAL_opts__OptionString__convert(val* self, val* p0) { -val* var /* : nullable Object */; -val* var1 /* : nullable String */; -var1 = opts__OptionString__convert(self, p0); -var = var1; -RET_LABEL:; -return var; -} -/* method opts#OptionEnum#init for (self: OptionEnum, Array[String], String, Int, Array[String]) */ -void opts__OptionEnum__init(val* self, val* p0, val* p1, long p2, val* p3) { -val* var_values /* var values: Array[String] */; -val* var_help /* var help: String */; -long var_default /* var default: Int */; -val* var_names /* var names: Array[String] */; -long var /* : Int */; -long var1 /* : Int */; -short int var2 /* : Bool */; -short int var4 /* : Bool */; -int cltype; -int idtype; -short int var5 /* : Bool */; -val* var6 /* : Array[nullable Object] */; -static val* varonce; -val* var7 /* : String */; -char* var8 /* : NativeString */; -long var9 /* : Int */; -val* var10 /* : String */; -static val* varonce11; -val* var12 /* : String */; -char* var13 /* : NativeString */; -long var14 /* : Int */; -val* var15 /* : String */; -val* var16 /* : String */; -static val* varonce17; -val* var18 /* : String */; -char* var19 /* : NativeString */; -long var20 /* : Int */; -val* var21 /* : String */; -val* var22 /* : Array[Object] */; -long var23 /* : Int */; -val* var24 /* : NativeArray[Object] */; -val* var25 /* : String */; -val* var26 /* : nullable Object */; -var_values = p0; -var_help = p1; -var_default = p2; -var_names = p3; -var = ((long (*)(val*))(var_values->class->vft[COLOR_abstract_collection__Collection__length]))(var_values) /* length on */; -var1 = 0; -{ /* Inline kernel#Int#> (var,var1) */ -/* Covariant cast for argument 0 (i) isa OTHER */ -/* isa OTHER */ -var4 = 1; /* easy isa OTHER*/ -if (!var4) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259); -exit(1); -} -var5 = var > var1; -var2 = var5; -goto RET_LABEL3; -RET_LABEL3:(void)0; -} -if (!var2) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "lib/opts.nit", 174); -exit(1); -} -var6 = ((val* (*)(val*))(var_values->class->vft[COLOR_array__Collection__to_a]))(var_values) /* to_a on */; -self->attrs[COLOR_opts__OptionEnum___values].val = var6; /* _values on */ -if (varonce) { -var7 = varonce; -} else { -var8 = " <"; -var9 = 2; -var10 = string__NativeString__to_s_with_length(var8, var9); -var7 = var10; -varonce = var7; -} -if (varonce11) { -var12 = varonce11; -} else { -var13 = ", "; -var14 = 2; -var15 = string__NativeString__to_s_with_length(var13, var14); -var12 = var15; -varonce11 = var12; -} -var16 = ((val* (*)(val*, val*))(var_values->class->vft[COLOR_string__Collection__join]))(var_values, var12) /* join on */; -if (varonce17) { -var18 = varonce17; -} else { -var19 = ">"; -var20 = 1; -var21 = string__NativeString__to_s_with_length(var19, var20); -var18 = var21; -varonce17 = var18; -} -var22 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var22 = array_instance Array[Object] */ -var23 = 4; -var24 = NEW_array__NativeArray(var23, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var24)->values[0] = (val*) var_help; -((struct instance_array__NativeArray*)var24)->values[1] = (val*) var7; -((struct instance_array__NativeArray*)var24)->values[2] = (val*) var16; -((struct instance_array__NativeArray*)var24)->values[3] = (val*) var18; -((void (*)(val*, val*, long))(var22->class->vft[COLOR_array__Array__with_native]))(var22, var24, var23) /* with_native on */; -CHECK_NEW_array__Array(var22); -} -var25 = ((val* (*)(val*))(var22->class->vft[COLOR_string__Object__to_s]))(var22) /* to_s on */; -var26 = BOX_kernel__Int(var_default); /* autobox from Int to nullable Object */ -((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_opts__OptionParameter__init_opt]))(self, var25, var26, var_names) /* init_opt on */; -RET_LABEL:; -} -/* method opts#OptionEnum#init for (self: Object, Array[String], String, Int, Array[String]) */ -void VIRTUAL_opts__OptionEnum__init(val* self, val* p0, val* p1, long p2, val* p3) { -opts__OptionEnum__init(self, p0, p1, p2, p3); -RET_LABEL:; -} -/* method opts#OptionEnum#convert for (self: OptionEnum, String): Int */ -long opts__OptionEnum__convert(val* self, val* p0) { -long var /* : Int */; -val* var_str /* var str: String */; -val* var1 /* : Array[String] */; -long var2 /* : Int */; -long var_id /* var id: Int */; -long var3 /* : Int */; -long var4 /* : Int */; -long var6 /* : Int */; -short int var7 /* : Bool */; -short int var9 /* : Bool */; -val* var10 /* : Array[Object] */; -long var11 /* : Int */; -val* var_ /* var : Array[Object] */; -static val* varonce; -val* var12 /* : String */; -char* var13 /* : NativeString */; -long var14 /* : Int */; -val* var15 /* : String */; -val* var16 /* : Array[String] */; -static val* varonce17; -val* var18 /* : String */; -char* var19 /* : NativeString */; -long var20 /* : Int */; -val* var21 /* : String */; -val* var22 /* : String */; -static val* varonce23; -val* var24 /* : String */; -char* var25 /* : NativeString */; -long var26 /* : Int */; -val* var27 /* : String */; -val* var28 /* : String */; -val* var_e /* var e: String */; -val* var29 /* : Array[Object] */; -long var30 /* : Int */; -val* var_31 /* var : Array[Object] */; -static val* varonce32; -val* var33 /* : String */; -char* var34 /* : NativeString */; -long var35 /* : Int */; -val* var36 /* : String */; -val* var37 /* : Array[String] */; -static val* varonce38; -val* var39 /* : String */; -char* var40 /* : NativeString */; -long var41 /* : Int */; -val* var42 /* : String */; -val* var43 /* : String */; -static val* varonce44; -val* var45 /* : String */; -char* var46 /* : NativeString */; -long var47 /* : Int */; -val* var48 /* : String */; -val* var49 /* : String */; -val* var50 /* : String */; -val* var51 /* : Array[String] */; -var_str = p0; -var1 = self->attrs[COLOR_opts__OptionEnum___values].val; /* _values on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _values", "lib/opts.nit", 181); -exit(1); -} -var2 = ((long (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__SequenceRead__index_of]))(var1, var_str) /* index_of on */; -var_id = var2; -var3 = 1; -{ /* Inline kernel#Int#unary - (var3) */ -var6 = -var3; -var4 = var6; -goto RET_LABEL5; -RET_LABEL5:(void)0; -} -{ /* Inline kernel#Int#== (var_id,var4) */ -var9 = var_id == var4; -var7 = var9; -goto RET_LABEL8; -RET_LABEL8:(void)0; -} -if (var7){ -var10 = NEW_array__Array(&type_array__Arraykernel__Object); -var11 = 3; -((void (*)(val*, long))(var10->class->vft[COLOR_array__Array__with_capacity]))(var10, var11) /* with_capacity on */; -CHECK_NEW_array__Array(var10); -var_ = var10; -if (varonce) { -var12 = varonce; -} else { -var13 = "Unrecognized value for option "; -var14 = 30; -var15 = string__NativeString__to_s_with_length(var13, var14); -var12 = var15; -varonce = var12; -} -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var12) /* add on */; -var16 = self->attrs[COLOR_opts__Option___names].val; /* _names on */ -if (var16 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _names", "lib/opts.nit", 183); -exit(1); -} -if (varonce17) { -var18 = varonce17; -} else { -var19 = ", "; -var20 = 2; -var21 = string__NativeString__to_s_with_length(var19, var20); -var18 = var21; -varonce17 = var18; -} -var22 = ((val* (*)(val*, val*))(var16->class->vft[COLOR_string__Collection__join]))(var16, var18) /* join on */; -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var22) /* add on */; -if (varonce23) { -var24 = varonce23; -} else { -var25 = ".\n"; -var26 = 2; -var27 = string__NativeString__to_s_with_length(var25, var26); -var24 = var27; -varonce23 = var24; -} -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var24) /* add on */; -var28 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on */; -var_e = var28; -var29 = NEW_array__Array(&type_array__Arraykernel__Object); -var30 = 3; -((void (*)(val*, long))(var29->class->vft[COLOR_array__Array__with_capacity]))(var29, var30) /* with_capacity on */; -CHECK_NEW_array__Array(var29); -var_31 = var29; -if (varonce32) { -var33 = varonce32; -} else { -var34 = "Expected values are: "; -var35 = 21; -var36 = string__NativeString__to_s_with_length(var34, var35); -var33 = var36; -varonce32 = var33; -} -((void (*)(val*, val*))(var_31->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_31, var33) /* add on */; -var37 = self->attrs[COLOR_opts__OptionEnum___values].val; /* _values on */ -if (var37 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _values", "lib/opts.nit", 184); -exit(1); -} -if (varonce38) { -var39 = varonce38; -} else { -var40 = ", "; -var41 = 2; -var42 = string__NativeString__to_s_with_length(var40, var41); -var39 = var42; -varonce38 = var39; -} -var43 = ((val* (*)(val*, val*))(var37->class->vft[COLOR_string__Collection__join]))(var37, var39) /* join on */; -((void (*)(val*, val*))(var_31->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_31, var43) /* add on */; -if (varonce44) { -var45 = varonce44; -} else { -var46 = "."; -var47 = 1; -var48 = string__NativeString__to_s_with_length(var46, var47); -var45 = var48; -varonce44 = var45; -} -((void (*)(val*, val*))(var_31->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_31, var45) /* add on */; -var49 = ((val* (*)(val*))(var_31->class->vft[COLOR_string__Object__to_s]))(var_31) /* to_s on */; -var50 = ((val* (*)(val*, val*))(var_e->class->vft[COLOR_string__String___43d]))(var_e, var49) /* + on */; -var_e = var50; -var51 = self->attrs[COLOR_opts__Option___errors].val; /* _errors on */ -if (var51 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _errors", "lib/opts.nit", 185); -exit(1); -} -((void (*)(val*, val*))(var51->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var51, var_e) /* add on */; -} else { -} -var = var_id; -goto RET_LABEL; -RET_LABEL:; -return var; -} -/* method opts#OptionEnum#convert for (self: Object, String): nullable Object */ -val* VIRTUAL_opts__OptionEnum__convert(val* self, val* p0) { -val* var /* : nullable Object */; -long var1 /* : Int */; -val* var2 /* : nullable Object */; -var1 = opts__OptionEnum__convert(self, p0); -var2 = BOX_kernel__Int(var1); /* autobox from Int to nullable Object */ -var = var2; -RET_LABEL:; -return var; -} -/* method opts#OptionEnum#value_name for (self: OptionEnum): String */ -val* opts__OptionEnum__value_name(val* self) { -val* var /* : String */; -val* var1 /* : Array[String] */; -val* var2 /* : nullable Object */; -val* var3 /* : nullable Object */; -long var4 /* : Int */; -var1 = self->attrs[COLOR_opts__OptionEnum___values].val; /* _values on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _values", "lib/opts.nit", 190); -exit(1); -} -var2 = ((val* (*)(val*))(self->class->vft[COLOR_opts__Option__value]))(self) /* value on */; -var4 = ((struct instance_kernel__Int*)var2)->value; /* autounbox from nullable Object to Int */; -var3 = ((val* (*)(val*, long))(var1->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var1, var4) /* [] on */; -var = var3; -goto RET_LABEL; -RET_LABEL:; -return var; -} -/* method opts#OptionEnum#value_name for (self: Object): String */ -val* VIRTUAL_opts__OptionEnum__value_name(val* self) { -val* var /* : String */; -val* var1 /* : String */; -var1 = opts__OptionEnum__value_name(self); -var = var1; -RET_LABEL:; -return var; -} -/* method opts#OptionEnum#pretty_default for (self: OptionEnum): String */ -val* opts__OptionEnum__pretty_default(val* self) { -val* var /* : String */; -val* var1 /* : nullable Object */; -val* var2 /* : null */; -short int var3 /* : Bool */; -val* var4 /* : Array[Object] */; -long var5 /* : Int */; -val* var_ /* var : Array[Object] */; -static val* varonce; -val* var6 /* : String */; -char* var7 /* : NativeString */; -long var8 /* : Int */; -val* var9 /* : String */; -val* var10 /* : Array[String] */; -val* var11 /* : nullable Object */; -val* var12 /* : nullable Object */; -long var13 /* : Int */; -static val* varonce14; -val* var15 /* : String */; -char* var16 /* : NativeString */; -long var17 /* : Int */; -val* var18 /* : String */; -val* var19 /* : String */; -static val* varonce20; -val* var21 /* : String */; -char* var22 /* : NativeString */; -long var23 /* : Int */; -val* var24 /* : String */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_opts__Option__default_value]))(self) /* default_value on */; -var2 = NULL; -if (var1 == NULL) { -var3 = 0; /* is null */ -} else { -var3 = 1; /* arg is null and recv is not */ -} -if (var3){ -var4 = NEW_array__Array(&type_array__Arraykernel__Object); -var5 = 3; -((void (*)(val*, long))(var4->class->vft[COLOR_array__Array__with_capacity]))(var4, var5) /* with_capacity on */; -CHECK_NEW_array__Array(var4); -var_ = var4; -if (varonce) { -var6 = varonce; -} else { -var7 = " ("; -var8 = 2; -var9 = string__NativeString__to_s_with_length(var7, var8); -var6 = var9; -varonce = var6; -} -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var6) /* add on */; -var10 = self->attrs[COLOR_opts__OptionEnum___values].val; /* _values on */ -if (var10 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _values", "lib/opts.nit", 195); -exit(1); -} -var11 = ((val* (*)(val*))(self->class->vft[COLOR_opts__Option__default_value]))(self) /* default_value on */; -if (var11 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/opts.nit", 195); -exit(1); -} -var13 = ((struct instance_kernel__Int*)var11)->value; /* autounbox from nullable Int to Int */; -var12 = ((val* (*)(val*, long))(var10->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var10, var13) /* [] on */; -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var12) /* add on */; -if (varonce14) { -var15 = varonce14; -} else { -var16 = ")"; -var17 = 1; -var18 = string__NativeString__to_s_with_length(var16, var17); -var15 = var18; -varonce14 = var15; -} -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var15) /* add on */; -var19 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on */; -var = var19; -goto RET_LABEL; -} else { -if (varonce20) { -var21 = varonce20; -} else { -var22 = ""; -var23 = 0; -var24 = string__NativeString__to_s_with_length(var22, var23); -var21 = var24; -varonce20 = var21; -} -var = var21; -goto RET_LABEL; -} -RET_LABEL:; -return var; -} -/* method opts#OptionEnum#pretty_default for (self: Object): String */ -val* VIRTUAL_opts__OptionEnum__pretty_default(val* self) { -val* var /* : String */; -val* var1 /* : String */; -var1 = opts__OptionEnum__pretty_default(self); -var = var1; -RET_LABEL:; -return var; -} /* method opts#OptionInt#init for (self: OptionInt, String, Int, Array[String]) */ -void opts__OptionInt__init(val* self, val* p0, long p1, val* p2) { +void opts___opts__OptionInt___init(val* self, val* p0, long p1, val* p2) { val* var_help /* var help: String */; long var_default /* var default: Int */; val* var_names /* var names: Array[String] */; @@ -1410,548 +1063,830 @@ val* var /* : nullable Object */; var_help = p0; var_default = p1; var_names = p2; -var = BOX_kernel__Int(var_default); /* autobox from Int to nullable Object */ -((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_opts__OptionParameter__init_opt]))(self, var_help, var, var_names) /* init_opt on */; -RET_LABEL:; +{ +var = (val*)(var_default<<2|1); +opts___opts__Option___init(self, var_help, var, var_names); /* Direct call opts#Option#init on */ } -/* method opts#OptionInt#init for (self: Object, String, Int, Array[String]) */ -void VIRTUAL_opts__OptionInt__init(val* self, val* p0, long p1, val* p2) { -opts__OptionInt__init(self, p0, p1, p2); RET_LABEL:; } /* method opts#OptionInt#convert for (self: OptionInt, String): Int */ -long opts__OptionInt__convert(val* self, val* p0) { +long opts___opts__OptionInt___OptionParameter__convert(val* self, val* p0) { long var /* : Int */; val* var_str /* var str: String */; long var1 /* : Int */; var_str = p0; -var1 = ((long (*)(val*))(var_str->class->vft[COLOR_string__AbstractString__to_i]))(var_str) /* to_i on */; +{ +var1 = core__fixed_ints___Text___to_i(var_str); +} var = var1; goto RET_LABEL; RET_LABEL:; return var; } -/* method opts#OptionInt#convert for (self: Object, String): nullable Object */ -val* VIRTUAL_opts__OptionInt__convert(val* self, val* p0) { +/* method opts#OptionInt#convert for (self: OptionParameter, String): nullable Object */ +val* VIRTUAL_opts___opts__OptionInt___OptionParameter__convert(val* self, val* p0) { val* var /* : nullable Object */; long var1 /* : Int */; val* var2 /* : nullable Object */; -var1 = opts__OptionInt__convert(self, p0); -var2 = BOX_kernel__Int(var1); /* autobox from Int to nullable Object */ +var1 = opts___opts__OptionInt___OptionParameter__convert(self, p0); +var2 = (val*)(var1<<2|1); var = var2; RET_LABEL:; return var; } /* method opts#OptionArray#init for (self: OptionArray, String, Array[String]) */ -void opts__OptionArray__init(val* self, val* p0, val* p1) { +void opts___opts__OptionArray___init(val* self, val* p0, val* p1) { val* var_help /* var help: String */; val* var_names /* var names: Array[String] */; val* var /* : Array[String] */; -val* var1 /* : Array[String] */; -short int var2 /* : Bool */; +val* var2 /* : Array[String] */; +val* var4 /* : Array[String] */; +short int var5 /* : Bool */; int cltype; int idtype; const struct type* type_struct; +const char* var_class_name; var_help = p0; var_names = p1; -var = NEW_array__Array(&type_array__Arraystring__String); -((void (*)(val*))(var->class->vft[COLOR_array__Array__init]))(var) /* init on */; -CHECK_NEW_array__Array(var); +var = NEW_core__Array(&type_core__Array__core__String); +{ +core___core__Array___core__kernel__Object__init(var); /* Direct call array#Array#init on */ +} +{ +{ /* Inline opts#OptionArray#values= (self,var) on */ self->attrs[COLOR_opts__OptionArray___values].val = var; /* _values on */ -var1 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _values", "lib/opts.nit", 218); -exit(1); +RET_LABEL1:(void)0; } -/* isa nullable VALUE */ -type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE]; +} +{ +{ /* Inline opts#OptionArray#values (self) on */ +var4 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on */ +if (unlikely(var4 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _values"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 267); +fatal_exit(1); +} +var2 = var4; +RET_LABEL3:(void)0; +} +} +/* isa VALUE */ +type_struct = self->type->resolution_table->types[COLOR_opts__Option__VALUE]; cltype = type_struct->color; idtype = type_struct->id; -if(cltype >= var1->type->table_size) { -var2 = 0; +if(cltype >= var2->type->table_size) { +var5 = 0; } else { -var2 = var1->type->type_table[cltype] == idtype; +var5 = var2->type->type_table[cltype] == idtype; +} +if (unlikely(!var5)) { +var_class_name = var2 == NULL ? "null" : var2->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 264); +fatal_exit(1); +} +{ +opts___opts__Option___init(self, var_help, var2, var_names); /* Direct call opts#Option#init on */ +} +RET_LABEL:; } -if (!var2) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/opts.nit", 218); -exit(1); +/* method opts#OptionArray#values for (self: OptionArray): Array[String] */ +val* opts___opts__OptionArray___values(val* self) { +val* var /* : Array[String] */; +val* var1 /* : Array[String] */; +var1 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _values"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 267); +fatal_exit(1); } -((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_opts__OptionParameter__init_opt]))(self, var_help, var1, var_names) /* init_opt on */; +var = var1; RET_LABEL:; +return var; } -/* method opts#OptionArray#init for (self: Object, String, Array[String]) */ -void VIRTUAL_opts__OptionArray__init(val* self, val* p0, val* p1) { -opts__OptionArray__init(self, p0, p1); +/* method opts#OptionArray#values= for (self: OptionArray, Array[String]) */ +void opts___opts__OptionArray___values_61d(val* self, val* p0) { +self->attrs[COLOR_opts__OptionArray___values].val = p0; /* _values on */ RET_LABEL:; } /* method opts#OptionArray#convert for (self: OptionArray, String): Array[String] */ -val* opts__OptionArray__convert(val* self, val* p0) { +val* opts___opts__OptionArray___OptionParameter__convert(val* self, val* p0) { val* var /* : Array[String] */; val* var_str /* var str: String */; val* var1 /* : Array[String] */; -val* var2 /* : Array[String] */; -short int var3 /* : Bool */; +val* var3 /* : Array[String] */; +val* var4 /* : Array[String] */; +val* var6 /* : Array[String] */; +short int var7 /* : Bool */; int cltype; int idtype; const struct type* type_struct; +const char* var_class_name; var_str = p0; -var1 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _values", "lib/opts.nit", 224); -exit(1); +{ +{ /* Inline opts#OptionArray#values (self) on */ +var3 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _values"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 267); +fatal_exit(1); } -((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var1, var_str) /* add on */; -var2 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on */ -if (var2 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _values", "lib/opts.nit", 225); -exit(1); +var1 = var3; +RET_LABEL2:(void)0; } -/* isa VALUE */ -type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE]; +} +{ +core___core__Array___core__abstract_collection__SimpleCollection__add(var1, var_str); /* Direct call array#Array#add on */ +} +{ +{ /* Inline opts#OptionArray#values (self) on */ +var6 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _values"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 267); +fatal_exit(1); +} +var4 = var6; +RET_LABEL5:(void)0; +} +} +/* isa VALUE */ +type_struct = self->type->resolution_table->types[COLOR_opts__Option__VALUE]; cltype = type_struct->color; idtype = type_struct->id; -if(cltype >= var2->type->table_size) { -var3 = 0; +if(cltype >= var4->type->table_size) { +var7 = 0; } else { -var3 = var2->type->type_table[cltype] == idtype; +var7 = var4->type->type_table[cltype] == idtype; } -if (!var3) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/opts.nit", 225); -exit(1); +if (unlikely(!var7)) { +var_class_name = var4 == NULL ? "null" : var4->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 271); +fatal_exit(1); } -var = var2; +var = var4; goto RET_LABEL; RET_LABEL:; return var; } -/* method opts#OptionArray#convert for (self: Object, String): nullable Object */ -val* VIRTUAL_opts__OptionArray__convert(val* self, val* p0) { -val* var /* : nullable Object */; -val* var1 /* : Array[String] */; -var1 = opts__OptionArray__convert(self, p0); -var = var1; -RET_LABEL:; -return var; -} /* method opts#OptionContext#options for (self: OptionContext): Array[Option] */ -val* opts__OptionContext__options(val* self) { +val* opts___opts__OptionContext___options(val* self) { val* var /* : Array[Option] */; val* var1 /* : Array[Option] */; var1 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _options", "lib/opts.nit", 230); -exit(1); -} -var = var1; -RET_LABEL:; -return var; +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 277); +fatal_exit(1); } -/* method opts#OptionContext#options for (self: Object): Array[Option] */ -val* VIRTUAL_opts__OptionContext__options(val* self) { -val* var /* : Array[Option] */; -val* var1 /* : Array[Option] */; -var1 = opts__OptionContext__options(self); var = var1; RET_LABEL:; return var; } /* method opts#OptionContext#rest for (self: OptionContext): Array[String] */ -val* opts__OptionContext__rest(val* self) { +val* opts___opts__OptionContext___rest(val* self) { val* var /* : Array[String] */; val* var1 /* : Array[String] */; var1 = self->attrs[COLOR_opts__OptionContext___rest].val; /* _rest on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _rest", "lib/opts.nit", 231); -exit(1); +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _rest"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 280); +fatal_exit(1); } var = var1; RET_LABEL:; return var; } -/* method opts#OptionContext#rest for (self: Object): Array[String] */ -val* VIRTUAL_opts__OptionContext__rest(val* self) { +/* method opts#OptionContext#context_errors for (self: OptionContext): Array[String] */ +val* opts___opts__OptionContext___context_errors(val* self) { val* var /* : Array[String] */; val* var1 /* : Array[String] */; -var1 = opts__OptionContext__rest(self); +var1 = self->attrs[COLOR_opts__OptionContext___context_errors].val; /* _context_errors on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _context_errors"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 283); +fatal_exit(1); +} var = var1; RET_LABEL:; return var; } -/* method opts#OptionContext#errors for (self: OptionContext): Array[String] */ -val* opts__OptionContext__errors(val* self) { -val* var /* : Array[String] */; -val* var1 /* : Array[String] */; -var1 = self->attrs[COLOR_opts__OptionContext___errors].val; /* _errors on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _errors", "lib/opts.nit", 232); -exit(1); +/* method opts#OptionContext#optmap for (self: OptionContext): HashMap[String, Option] */ +val* opts___opts__OptionContext___optmap(val* self) { +val* var /* : HashMap[String, Option] */; +val* var1 /* : HashMap[String, Option] */; +var1 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 286); +fatal_exit(1); } var = var1; RET_LABEL:; return var; } -/* method opts#OptionContext#errors for (self: Object): Array[String] */ -val* VIRTUAL_opts__OptionContext__errors(val* self) { -val* var /* : Array[String] */; -val* var1 /* : Array[String] */; -var1 = opts__OptionContext__errors(self); -var = var1; +/* method opts#OptionContext#add_option for (self: OptionContext, Array[Option]) */ +void opts___opts__OptionContext___add_option(val* self, val* p0) { +val* var_opts /* var opts: Array[Option] */; +val* var /* : Array[Option] */; +val* var2 /* : Array[Option] */; +var_opts = p0; +{ +{ /* Inline opts#OptionContext#options (self) on */ +var2 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 277); +fatal_exit(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +core___core__Array___core__abstract_collection__SimpleCollection__add_all(var, var_opts); /* Direct call array#Array#add_all on */ +} RET_LABEL:; -return var; } /* method opts#OptionContext#usage for (self: OptionContext) */ -void opts__OptionContext__usage(val* self) { -long var /* : Int */; +void opts___opts__OptionContext___usage(val* self) { long var_lmax /* var lmax: Int */; -val* var1 /* : Array[Option] */; -val* var2 /* : Iterator[nullable Object] */; -short int var3 /* : Bool */; -val* var4 /* : nullable Object */; +val* var /* : Array[Option] */; +val* var2 /* : Array[Option] */; +val* var_ /* var : Array[Option] */; +val* var3 /* : IndexedIterator[nullable Object] */; +val* var_4 /* var : IndexedIterator[Option] */; +short int var5 /* : Bool */; +val* var6 /* : nullable Object */; val* var_i /* var i: Option */; -long var5 /* : Int */; long var_l /* var l: Int */; -val* var6 /* : Array[String] */; -val* var7 /* : Iterator[nullable Object] */; -short int var8 /* : Bool */; -val* var9 /* : nullable Object */; +val* var7 /* : Array[String] */; +val* var9 /* : Array[String] */; +val* var_10 /* var : Array[String] */; +val* var11 /* : IndexedIterator[nullable Object] */; +val* var_12 /* var : IndexedIterator[String] */; +short int var13 /* : Bool */; +val* var15 /* : nullable Object */; val* var_n /* var n: String */; -long var10 /* : Int */; -long var11 /* : Int */; -long var12 /* : Int */; -long var14 /* : Int */; -long var15 /* : Int */; +long var16 /* : Int */; long var17 /* : Int */; -short int var18 /* : Bool */; -short int var20 /* : Bool */; +short int var19 /* : Bool */; int cltype; int idtype; -short int var21 /* : Bool */; -val* var23 /* : Array[Option] */; -val* var24 /* : Iterator[nullable Object] */; -short int var25 /* : Bool */; -val* var26 /* : nullable Object */; -val* var_i27 /* var i: Option */; -val* var28 /* : String */; -var = 1; -var_lmax = var; -var1 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _options", "lib/opts.nit", 239); -exit(1); +const char* var_class_name; +long var20 /* : Int */; +long var21 /* : Int */; +short int var23 /* : Bool */; +int cltype24; +int idtype25; +const char* var_class_name26; +long var27 /* : Int */; +short int var28 /* : Bool */; +short int var30 /* : Bool */; +int cltype31; +int idtype32; +const char* var_class_name33; +short int var34 /* : Bool */; +val* var35 /* : Array[Option] */; +val* var37 /* : Array[Option] */; +val* var_38 /* var : Array[Option] */; +val* var39 /* : IndexedIterator[nullable Object] */; +val* var_40 /* var : IndexedIterator[Option] */; +short int var41 /* : Bool */; +val* var43 /* : nullable Object */; +val* var_i44 /* var i: Option */; +short int var45 /* : Bool */; +short int var47 /* : Bool */; +short int var48 /* : Bool */; +val* var49 /* : Sys */; +val* var50 /* : String */; +var_lmax = 1l; +{ +{ /* Inline opts#OptionContext#options (self) on */ +var2 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 277); +fatal_exit(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +var_ = var; +{ +var3 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_); +} +var_4 = var3; +for(;;) { +{ +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 */ +} +if (var5){ +} else { +goto BREAK_label; +} +{ +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_i = var6; +var_l = 3l; +{ +{ /* Inline opts#Option#names (var_i) on */ +var9 = var_i->attrs[COLOR_opts__Option___names].val; /* _names on */ +if (unlikely(var9 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 19); +fatal_exit(1); +} +var7 = var9; +RET_LABEL8:(void)0; +} +} +var_10 = var7; +{ +var11 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_10); +} +var_12 = var11; +for(;;) { +{ +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 */ +} +if (var13){ +} else { +goto BREAK_label14; +} +{ +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_n = var15; +{ +var16 = ((long(*)(val* self))(var_n->class->vft[COLOR_core__abstract_text__Text__length]))(var_n); /* length on */ +} +{ +{ /* Inline kernel#Int#+ (var16,2l) on */ +/* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */ +/* <2l:Int> isa OTHER */ +var19 = 1; /* easy <2l:Int> isa OTHER*/ +if (unlikely(!var19)) { +var_class_name = type_core__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731); +fatal_exit(1); +} +var20 = var16 + 2l; +var17 = var20; +goto RET_LABEL18; +RET_LABEL18:(void)0; +} +} +{ +{ /* Inline kernel#Int#+ (var_l,var17) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var23 = 1; /* easy isa OTHER*/ +if (unlikely(!var23)) { +var_class_name26 = type_core__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name26); +PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731); +fatal_exit(1); +} +var27 = var_l + var17; +var21 = var27; +goto RET_LABEL22; +RET_LABEL22:(void)0; +} +} +var_l = var21; +{ +((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 */ +} +} +BREAK_label14: (void)0; +{ +((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 */ +} +{ +{ /* Inline kernel#Int#< (var_lmax,var_l) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var30 = 1; /* easy isa OTHER*/ +if (unlikely(!var30)) { +var_class_name33 = type_core__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name33); +PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728); +fatal_exit(1); +} +var34 = var_lmax < var_l; +var28 = var34; +goto RET_LABEL29; +RET_LABEL29:(void)0; +} +} +if (var28){ +var_lmax = var_l; +} else { +} +{ +((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 */ +} +} +BREAK_label: (void)0; +{ +((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 */ +} +{ +{ /* Inline opts#OptionContext#options (self) on */ +var37 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on */ +if (unlikely(var37 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 277); +fatal_exit(1); +} +var35 = var37; +RET_LABEL36:(void)0; +} +} +var_38 = var35; +{ +var39 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_38); +} +var_40 = var39; +for(;;) { +{ +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 */ +} +if (var41){ +} else { +goto BREAK_label42; } -var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__iterator]))(var1) /* iterator on */; -for(;;) { -var3 = ((short int (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var2) /* is_ok on */; -if(!var3) break; -var4 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__item]))(var2) /* item on */; -var_i = var4; -var5 = 3; -var_l = var5; -var6 = ((val* (*)(val*))(var_i->class->vft[COLOR_opts__Option__names]))(var_i) /* names on */; -var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Collection__iterator]))(var6) /* iterator on */; -for(;;) { -var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on */; -if(!var8) break; -var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on */; -var_n = var9; -var10 = ((long (*)(val*))(var_n->class->vft[COLOR_abstract_collection__Collection__length]))(var_n) /* length on */; -var11 = 2; -{ /* Inline kernel#Int#+ (var10,var11) */ -var14 = var10 + var11; -var12 = var14; -goto RET_LABEL13; -RET_LABEL13:(void)0; +{ +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 */ } -{ /* Inline kernel#Int#+ (var_l,var12) */ -var17 = var_l + var12; -var15 = var17; -goto RET_LABEL16; -RET_LABEL16:(void)0; +var_i44 = var43; +{ +{ /* Inline opts#Option#hidden (var_i44) on */ +var47 = var_i44->attrs[COLOR_opts__Option___hidden].s; /* _hidden on */ +var45 = var47; +RET_LABEL46:(void)0; } -var_l = var15; -CONTINUE_label: (void)0; -((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on */; } -BREAK_label: (void)0; -{ /* Inline kernel#Int#< (var_lmax,var_l) */ -/* Covariant cast for argument 0 (i) isa OTHER */ -/* isa OTHER */ -var20 = 1; /* easy isa OTHER*/ -if (!var20) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 257); -exit(1); +var48 = !var45; +if (var48){ +var49 = glob_sys; +{ +var50 = opts___opts__Option___pretty(var_i44, var_lmax); } -var21 = var_lmax < var_l; -var18 = var21; -goto RET_LABEL19; -RET_LABEL19:(void)0; +{ +core__file___Sys___print(var49, var50); /* Direct call file#Sys#print on */ } -if (var18){ -var_lmax = var_l; } else { } -CONTINUE_label22: (void)0; -((void (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__next]))(var2) /* next on */; +{ +((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 */ } -BREAK_label22: (void)0; -var23 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on */ -if (var23 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _options", "lib/opts.nit", 247); -exit(1); } -var24 = ((val* (*)(val*))(var23->class->vft[COLOR_abstract_collection__Collection__iterator]))(var23) /* iterator on */; -for(;;) { -var25 = ((short int (*)(val*))(var24->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var24) /* is_ok on */; -if(!var25) break; -var26 = ((val* (*)(val*))(var24->class->vft[COLOR_abstract_collection__Iterator__item]))(var24) /* item on */; -var_i27 = var26; -var28 = ((val* (*)(val*, long))(var_i27->class->vft[COLOR_opts__Option__pretty]))(var_i27, var_lmax) /* pretty on */; -((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var28) /* print on */; -CONTINUE_label29: (void)0; -((void (*)(val*))(var24->class->vft[COLOR_abstract_collection__Iterator__next]))(var24) /* next on */; -} -BREAK_label29: (void)0; -RET_LABEL:; +BREAK_label42: (void)0; +{ +((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 */ } -/* method opts#OptionContext#usage for (self: Object) */ -void VIRTUAL_opts__OptionContext__usage(val* self) { -opts__OptionContext__usage(self); RET_LABEL:; } -/* method opts#OptionContext#parse for (self: OptionContext, Collection[String]) */ -void opts__OptionContext__parse(val* self, val* p0) { -val* var_argv /* var argv: Collection[String] */; -val* var /* : Iterator[nullable Object] */; +/* method opts#OptionContext#parse for (self: OptionContext, nullable Collection[String]) */ +void opts___opts__OptionContext___parse(val* self, val* p0) { +val* var_argv /* var argv: nullable Collection[String] */; +short int var /* : Bool */; +short int var1 /* : Bool */; +val* var2 /* : Sys */; +val* var3 /* : Sequence[String] */; +val* var4 /* : Iterator[nullable Object] */; val* var_it /* var it: Iterator[String] */; var_argv = p0; -var = ((val* (*)(val*))(var_argv->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_argv) /* iterator on */; -var_it = var; -((void (*)(val*, val*))(self->class->vft[COLOR_opts__OptionContext__parse_intern]))(self, var_it) /* parse_intern on */; +if (var_argv == NULL) { +var = 1; /* is null */ +} else { +var = 0; /* arg is null but recv is not */ +} +if (0) { +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 = var1; +} +if (var){ +var2 = glob_sys; +{ +var3 = core__abstract_text___Sys___args(var2); +} +var_argv = var3; +} else { +} +{ +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_it = var4; +{ +opts___opts__OptionContext___parse_intern(self, var_it); /* Direct call opts#OptionContext#parse_intern on */ +} RET_LABEL:; } -/* method opts#OptionContext#parse for (self: Object, Collection[String]) */ -void VIRTUAL_opts__OptionContext__parse(val* self, val* p0) { -opts__OptionContext__parse(self, p0); +/* method opts#OptionContext#options_before_rest for (self: OptionContext): Bool */ +short int opts___opts__OptionContext___options_before_rest(val* self) { +short int var /* : Bool */; +short int var1 /* : Bool */; +var1 = self->attrs[COLOR_opts__OptionContext___options_before_rest].s; /* _options_before_rest on */ +var = var1; RET_LABEL:; +return var; } /* method opts#OptionContext#parse_intern for (self: OptionContext, Iterator[String]) */ -void opts__OptionContext__parse_intern(val* self, val* p0) { +void opts___opts__OptionContext___parse_intern(val* self, val* p0) { val* var_it /* var it: Iterator[String] */; -short int var /* : Bool */; short int var_parseargs /* var parseargs: Bool */; -val* var1 /* : Array[String] */; +val* var /* : Array[String] */; +val* var2 /* : Array[String] */; val* var_rest /* var rest: Array[String] */; -short int var2 /* : Bool */; -short int var_ /* var : Bool */; short int var3 /* : Bool */; -val* var4 /* : nullable Object */; +short int var_ /* var : Bool */; +short int var4 /* : Bool */; +val* var5 /* : nullable Object */; val* var_str /* var str: String */; static val* varonce; -val* var5 /* : String */; -char* var6 /* : NativeString */; -long var7 /* : Int */; +val* var6 /* : String */; +char* var7 /* : NativeString */; val* var8 /* : String */; short int var9 /* : Bool */; val* var10 /* : Array[nullable Object] */; short int var11 /* : Bool */; -short int var12 /* : Bool */; -char var13 /* : Char */; +val* var12 /* : SequenceRead[Char] */; +val* var13 /* : nullable Object */; long var14 /* : Int */; -val* var15 /* : nullable Object */; -long var16 /* : Int */; +short int var15 /* : Bool */; short int var17 /* : Bool */; -short int var19 /* : Bool */; -short int var_20 /* var : Bool */; -long var21 /* : Int */; -long var22 /* : Int */; -short int var23 /* : Bool */; -short int var25 /* : Bool */; +short int var_18 /* var : Bool */; +long var19 /* : Int */; +short int var20 /* : Bool */; +short int var22 /* : Bool */; int cltype; int idtype; -short int var26 /* : Bool */; -short int var27 /* : Bool */; +const char* var_class_name; +short int var23 /* : Bool */; short int var_next_called /* var next_called: Bool */; -val* var28 /* : Range[Int] */; -long var29 /* : Int */; -long var30 /* : Int */; -val* var31 /* : Discrete */; -val* var32 /* : Discrete */; -val* var33 /* : Iterator[nullable Object] */; -short int var34 /* : Bool */; -val* var35 /* : nullable Object */; long var_i /* var i: Int */; -long var36 /* : Int */; -static val* varonce37; -val* var38 /* : String */; -char* var39 /* : NativeString */; -long var40 /* : Int */; +long var24 /* : Int */; +long var_25 /* var : Int */; +short int var26 /* : Bool */; +short int var28 /* : Bool */; +int cltype29; +int idtype30; +const char* var_class_name31; +short int var32 /* : Bool */; +static val* varonce33; +val* var34 /* : String */; +char* var35 /* : NativeString */; +val* var36 /* : String */; +val* var37 /* : SequenceRead[Char] */; +val* var38 /* : nullable Object */; +val* var39 /* : String */; +uint32_t var40 /* : Char */; val* var41 /* : String */; -val* var42 /* : nullable Object */; -val* var43 /* : String */; -char var44 /* : Char */; -val* var45 /* : String */; val* var_short_opt /* var short_opt: String */; -val* var46 /* : Map[String, Option] */; -short int var47 /* : Bool */; -val* var48 /* : Map[String, Option] */; +val* var42 /* : HashMap[String, Option] */; +val* var44 /* : HashMap[String, Option] */; +short int var45 /* : Bool */; +val* var46 /* : HashMap[String, Option] */; +val* var48 /* : HashMap[String, Option] */; val* var49 /* : nullable Object */; val* var_option /* var option: Option */; short int var50 /* : Bool */; int cltype51; int idtype52; -short int var53 /* : Bool */; +long var53 /* : Int */; short int var54 /* : Bool */; -val* var55 /* : Map[String, Option] */; -short int var56 /* : Bool */; -val* var57 /* : Map[String, Option] */; -val* var58 /* : nullable Object */; +val* var55 /* : HashMap[String, Option] */; +val* var57 /* : HashMap[String, Option] */; +short int var58 /* : Bool */; +val* var59 /* : HashMap[String, Option] */; +val* var61 /* : HashMap[String, Option] */; +val* var62 /* : nullable Object */; val* var_opt /* var opt: Option */; -val* var59 /* : nullable Object */; -val* var61 /* : Array[Option] */; -val* var62 /* : Iterator[nullable Object] */; -short int var63 /* : Bool */; -val* var64 /* : nullable Object */; -val* var_opt65 /* var opt: Option */; +val* var63 /* : nullable Object */; +short int var64 /* : Bool */; short int var66 /* : Bool */; -short int var67 /* : Bool */; -short int var_68 /* var : Bool */; -short int var69 /* : Bool */; -short int var70 /* : Bool */; -val* var71 /* : Array[String] */; -static val* varonce72; -val* var73 /* : String */; -char* var74 /* : NativeString */; -long var75 /* : Int */; -val* var76 /* : String */; -val* var77 /* : Array[String] */; -static val* varonce78; -val* var79 /* : String */; -char* var80 /* : NativeString */; -long var81 /* : Int */; -val* var82 /* : String */; -val* var83 /* : String */; -static val* varonce84; -val* var85 /* : String */; -char* var86 /* : NativeString */; -long var87 /* : Int */; -val* var88 /* : String */; -val* var89 /* : Array[Object] */; -long var90 /* : Int */; -val* var91 /* : NativeArray[Object] */; -val* var92 /* : String */; +val* var67 /* : Array[nullable Object] */; +val* var69 /* : Array[Option] */; +val* var71 /* : Array[Option] */; +val* var_72 /* var : Array[Option] */; +val* var73 /* : IndexedIterator[nullable Object] */; +val* var_74 /* var : IndexedIterator[Option] */; +short int var75 /* : Bool */; +val* var77 /* : nullable Object */; +val* var_opt78 /* var opt: Option */; +short int var79 /* : Bool */; +short int var80 /* : Bool */; +short int var82 /* : Bool */; +short int var_83 /* var : Bool */; +short int var84 /* : Bool */; +short int var86 /* : Bool */; +short int var87 /* : Bool */; +val* var88 /* : Array[String] */; +val* var90 /* : Array[String] */; +val* var92 /* : NativeArray[String] */; +static val* varonce91; +static val* varonce93; +val* var94 /* : String */; +char* var95 /* : NativeString */; +val* var96 /* : String */; +static val* varonce97; +val* var98 /* : String */; +char* var99 /* : NativeString */; +val* var100 /* : String */; +val* var101 /* : Array[String] */; +val* var103 /* : Array[String] */; +static val* varonce104; +val* var105 /* : String */; +char* var106 /* : NativeString */; +val* var107 /* : String */; +val* var108 /* : String */; +val* var109 /* : String */; var_it = p0; -var = 1; -var_parseargs = var; -((void (*)(val*))(self->class->vft[COLOR_opts__OptionContext__build]))(self) /* build on */; -var1 = self->attrs[COLOR_opts__OptionContext___rest].val; /* _rest on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _rest", "lib/opts.nit", 263); -exit(1); +var_parseargs = 1; +{ +opts___opts__OptionContext___build(self); /* Direct call opts#OptionContext#build on */ +} +{ +{ /* Inline opts#OptionContext#rest (self) on */ +var2 = self->attrs[COLOR_opts__OptionContext___rest].val; /* _rest on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _rest"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 280); +fatal_exit(1); +} +var = var2; +RET_LABEL1:(void)0; +} } -var_rest = var1; +var_rest = var; for(;;) { var_ = var_parseargs; if (var_parseargs){ -var3 = ((short int (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_it) /* is_ok on */; -var2 = var3; +{ +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 */ +} +var3 = var4; } else { -var2 = var_; +var3 = var_; +} +if (var3){ +{ +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 */ } -if (!var2) break; -var4 = ((val* (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__item]))(var_it) /* item on */; -var_str = var4; -if (varonce) { -var5 = varonce; +var_str = var5; +if (likely(varonce!=NULL)) { +var6 = varonce; } else { -var6 = "--"; -var7 = 2; -var8 = string__NativeString__to_s_with_length(var6, var7); -var5 = var8; -varonce = var5; +var7 = "--"; +var8 = core__flat___NativeString___to_s_full(var7, 2l, 2l); +var6 = var8; +varonce = var6; +} +{ +var9 = ((short int(*)(val* self, val* p0))(var_str->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_str, var6); /* == on */ } -var9 = ((short int (*)(val*, val*))(var_str->class->vft[COLOR_kernel__Object___61d_61d]))(var_str, var5) /* == on */; if (var9){ -((void (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__next]))(var_it) /* next on */; -var10 = ((val* (*)(val*))(var_it->class->vft[COLOR_array__Iterator__to_a]))(var_it) /* to_a on */; -((void (*)(val*, val*))(var_rest->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_rest, var10) /* add_all on */; -var11 = 0; -var_parseargs = var11; -} else { -var13 = '-'; -var15 = BOX_kernel__Char(var13); /* autobox from Char to nullable Object */ -var14 = ((long (*)(val*, val*))(var_str->class->vft[COLOR_array__AbstractArrayRead__last_index_of]))(var_str, var15) /* last_index_of on */; -var16 = 0; -{ /* Inline kernel#Int#== (var14,var16) */ -var19 = var14 == var16; -var17 = var19; -goto RET_LABEL18; -RET_LABEL18:(void)0; +{ +((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 */ +} +{ +var10 = core__array___Iterator___to_a(var_it); +} +{ +core___core__Array___core__abstract_collection__SimpleCollection__add_all(var_rest, var10); /* Direct call array#Array#add_all on */ +} +var_parseargs = 0; +} else { +{ +var12 = ((val*(*)(val* self))(var_str->class->vft[COLOR_core__abstract_text__Text__chars]))(var_str); /* chars on */ +} +{ +var13 = (val*)((long)('-')<<2|2); +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 */ +} +{ +{ /* Inline kernel#Int#== (var14,0l) on */ +var17 = var14 == 0l; +var15 = var17; +goto RET_LABEL16; +RET_LABEL16:(void)0; +} +} +var_18 = var15; +if (var15){ +{ +var19 = ((long(*)(val* self))(var_str->class->vft[COLOR_core__abstract_text__Text__length]))(var_str); /* length on */ +} +{ +{ /* Inline kernel#Int#> (var19,2l) on */ +/* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */ +/* <2l:Int> isa OTHER */ +var22 = 1; /* easy <2l:Int> isa OTHER*/ +if (unlikely(!var22)) { +var_class_name = type_core__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730); +fatal_exit(1); +} +var23 = var19 > 2l; +var20 = var23; +goto RET_LABEL21; +RET_LABEL21:(void)0; +} +} +var11 = var20; +} else { +var11 = var_18; } -var_20 = var17; -if (var17){ -var21 = ((long (*)(val*))(var_str->class->vft[COLOR_abstract_collection__Collection__length]))(var_str) /* length on */; -var22 = 2; -{ /* Inline kernel#Int#> (var21,var22) */ -/* Covariant cast for argument 0 (i) isa OTHER */ -/* isa OTHER */ -var25 = 1; /* easy isa OTHER*/ -if (!var25) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259); -exit(1); -} -var26 = var21 > var22; -var23 = var26; -goto RET_LABEL24; -RET_LABEL24:(void)0; -} -var12 = var23; -} else { -var12 = var_20; -} -if (var12){ -var27 = 0; -var_next_called = var27; -var28 = NEW_range__Range(&type_range__Rangekernel__Int); -var29 = 1; -var30 = ((long (*)(val*))(var_str->class->vft[COLOR_abstract_collection__Collection__length]))(var_str) /* length on */; -var31 = BOX_kernel__Int(var29); /* autobox from Int to Discrete */ -var32 = BOX_kernel__Int(var30); /* autobox from Int to Discrete */ -((void (*)(val*, val*, val*))(var28->class->vft[COLOR_range__Range__init]))(var28, var31, var32) /* init on */; -CHECK_NEW_range__Range(var28); -var33 = ((val* (*)(val*))(var28->class->vft[COLOR_abstract_collection__Collection__iterator]))(var28) /* iterator on */; +if (var11){ +var_next_called = 0; +var_i = 1l; +{ +var24 = ((long(*)(val* self))(var_str->class->vft[COLOR_core__abstract_text__Text__length]))(var_str); /* length on */ +} +var_25 = var24; for(;;) { -var34 = ((short int (*)(val*))(var33->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var33) /* is_ok on */; -if(!var34) break; -var35 = ((val* (*)(val*))(var33->class->vft[COLOR_abstract_collection__Iterator__item]))(var33) /* item on */; -var36 = ((struct instance_kernel__Int*)var35)->value; /* autounbox from nullable Object to Int */; -var_i = var36; -if (varonce37) { -var38 = varonce37; -} else { -var39 = "-"; -var40 = 1; -var41 = string__NativeString__to_s_with_length(var39, var40); -var38 = var41; -varonce37 = var38; -} -var42 = ((val* (*)(val*, long))(var_str->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_str, var_i) /* [] on */; -var44 = ((struct instance_kernel__Char*)var42)->value; /* autounbox from nullable Object to Char */; -var43 = string__Char__to_s(var44); -var45 = ((val* (*)(val*, val*))(var38->class->vft[COLOR_string__String___43d]))(var38, var43) /* + on */; -var_short_opt = var45; -var46 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on */ -if (var46 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _optmap", "lib/opts.nit", 277); -exit(1); -} -var47 = ((short int (*)(val*, val*))(var46->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var46, var_short_opt) /* has_key on */; -if (var47){ +{ +{ /* Inline kernel#Int#< (var_i,var_25) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var28 = 1; /* easy isa OTHER*/ +if (unlikely(!var28)) { +var_class_name31 = type_core__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name31); +PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728); +fatal_exit(1); +} +var32 = var_i < var_25; +var26 = var32; +goto RET_LABEL27; +RET_LABEL27:(void)0; +} +} +if (var26){ +} else { +goto BREAK_label; +} +if (likely(varonce33!=NULL)) { +var34 = varonce33; +} else { +var35 = "-"; +var36 = core__flat___NativeString___to_s_full(var35, 1l, 1l); +var34 = var36; +varonce33 = var34; +} +{ +var37 = ((val*(*)(val* self))(var_str->class->vft[COLOR_core__abstract_text__Text__chars]))(var_str); /* chars on */ +} +{ +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 */ +} +{ +var40 = (uint32_t)((long)(var38)>>2); +var39 = core__abstract_text___Char___Object__to_s(var40); +} +{ +var41 = ((val*(*)(val* self, val* p0))(var34->class->vft[COLOR_core__abstract_text__String___43d]))(var34, var39); /* + on */ +} +var_short_opt = var41; +{ +{ /* Inline opts#OptionContext#optmap (self) on */ +var44 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on */ +if (unlikely(var44 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 286); +fatal_exit(1); +} +var42 = var44; +RET_LABEL43:(void)0; +} +} +{ +var45 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var42, var_short_opt); +} +if (var45){ +{ +{ /* Inline opts#OptionContext#optmap (self) on */ var48 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on */ -if (var48 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _optmap", "lib/opts.nit", 278); -exit(1); +if (unlikely(var48 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 286); +fatal_exit(1); +} +var46 = var48; +RET_LABEL47:(void)0; +} +} +{ +var49 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var46, var_short_opt); } -var49 = ((val* (*)(val*, val*))(var48->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var48, var_short_opt) /* [] on */; var_option = var49; /* isa OptionParameter */ cltype51 = type_opts__OptionParameter.color; @@ -1962,307 +1897,467 @@ var50 = 0; var50 = var_option->type->type_table[cltype51] == idtype52; } if (var50){ -((void (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__next]))(var_it) /* next on */; -var53 = 1; -var_next_called = var53; +{ +((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_next_called = 1; } else { } -((void (*)(val*, val*))(var_option->class->vft[COLOR_opts__Option__read_param]))(var_option, var_it) /* read_param on */; +{ +((void(*)(val* self, val* p0, val* p1))(var_option->class->vft[COLOR_opts__Option__read_param]))(var_option, self, var_it); /* read_param on */ +} } else { } -CONTINUE_label: (void)0; -((void (*)(val*))(var33->class->vft[COLOR_abstract_collection__Iterator__next]))(var33) /* next on */; +{ +var53 = core___core__Int___Discrete__successor(var_i, 1l); +} +var_i = var53; } BREAK_label: (void)0; var54 = !var_next_called; if (var54){ -((void (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__next]))(var_it) /* next on */; -} else { +{ +((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 */ } } else { -var55 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on */ -if (var55 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _optmap", "lib/opts.nit", 288); -exit(1); } -var56 = ((short int (*)(val*, val*))(var55->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var55, var_str) /* has_key on */; -if (var56){ +} else { +{ +{ /* Inline opts#OptionContext#optmap (self) on */ var57 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on */ -if (var57 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _optmap", "lib/opts.nit", 289); -exit(1); +if (unlikely(var57 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 286); +fatal_exit(1); +} +var55 = var57; +RET_LABEL56:(void)0; +} +} +{ +var58 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var55, var_str); +} +if (var58){ +{ +{ /* Inline opts#OptionContext#optmap (self) on */ +var61 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on */ +if (unlikely(var61 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 286); +fatal_exit(1); +} +var59 = var61; +RET_LABEL60:(void)0; +} +} +{ +var62 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var59, var_str); +} +var_opt = var62; +{ +((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 */ +} +{ +((void(*)(val* self, val* p0, val* p1))(var_opt->class->vft[COLOR_opts__Option__read_param]))(var_opt, self, var_it); /* read_param on */ } -var58 = ((val* (*)(val*, val*))(var57->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var57, var_str) /* [] on */; -var_opt = var58; -((void (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__next]))(var_it) /* next on */; -((void (*)(val*, val*))(var_opt->class->vft[COLOR_opts__Option__read_param]))(var_opt, var_it) /* read_param on */; } else { -var59 = ((val* (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__item]))(var_it) /* item on */; -((void (*)(val*, val*))(var_rest->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_rest, var59) /* add on */; -((void (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__next]))(var_it) /* next on */; +{ +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 */ } +{ +core___core__Array___core__abstract_collection__SimpleCollection__add(var_rest, var63); /* Direct call array#Array#add on */ } +{ +((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 */ } -CONTINUE_label60: (void)0; +{ +{ /* Inline opts#OptionContext#options_before_rest (self) on */ +var66 = self->attrs[COLOR_opts__OptionContext___options_before_rest].s; /* _options_before_rest on */ +var64 = var66; +RET_LABEL65:(void)0; } -BREAK_label60: (void)0; -var61 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on */ -if (var61 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _options", "lib/opts.nit", 300); -exit(1); } -var62 = ((val* (*)(val*))(var61->class->vft[COLOR_abstract_collection__Collection__iterator]))(var61) /* iterator on */; -for(;;) { -var63 = ((short int (*)(val*))(var62->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var62) /* is_ok on */; -if(!var63) break; -var64 = ((val* (*)(val*))(var62->class->vft[COLOR_abstract_collection__Iterator__item]))(var62) /* item on */; -var_opt65 = var64; -var67 = ((short int (*)(val*))(var_opt65->class->vft[COLOR_opts__Option__mandatory]))(var_opt65) /* mandatory on */; -var_68 = var67; -if (var67){ -var69 = ((short int (*)(val*))(var_opt65->class->vft[COLOR_opts__Option__read]))(var_opt65) /* read on */; -var70 = !var69; -var66 = var70; -} else { -var66 = var_68; -} -if (var66){ -var71 = self->attrs[COLOR_opts__OptionContext___errors].val; /* _errors on */ -if (var71 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _errors", "lib/opts.nit", 302); -exit(1); -} -if (varonce72) { -var73 = varonce72; -} else { -var74 = "Mandatory option "; -var75 = 17; -var76 = string__NativeString__to_s_with_length(var74, var75); -var73 = var76; -varonce72 = var73; -} -var77 = ((val* (*)(val*))(var_opt65->class->vft[COLOR_opts__Option__names]))(var_opt65) /* names on */; -if (varonce78) { -var79 = varonce78; -} else { -var80 = ", "; -var81 = 2; -var82 = string__NativeString__to_s_with_length(var80, var81); -var79 = var82; -varonce78 = var79; -} -var83 = ((val* (*)(val*, val*))(var77->class->vft[COLOR_string__Collection__join]))(var77, var79) /* join on */; -if (varonce84) { -var85 = varonce84; -} else { -var86 = " not found."; -var87 = 11; -var88 = string__NativeString__to_s_with_length(var86, var87); -var85 = var88; -varonce84 = var85; -} -var89 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var89 = array_instance Array[Object] */ -var90 = 3; -var91 = NEW_array__NativeArray(var90, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var91)->values[0] = (val*) var73; -((struct instance_array__NativeArray*)var91)->values[1] = (val*) var83; -((struct instance_array__NativeArray*)var91)->values[2] = (val*) var85; -((void (*)(val*, val*, long))(var89->class->vft[COLOR_array__Array__with_native]))(var89, var91, var90) /* with_native on */; -CHECK_NEW_array__Array(var89); -} -var92 = ((val* (*)(val*))(var89->class->vft[COLOR_string__Object__to_s]))(var89) /* to_s on */; -((void (*)(val*, val*))(var71->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var71, var92) /* add on */; -} else { -} -CONTINUE_label93: (void)0; -((void (*)(val*))(var62->class->vft[COLOR_abstract_collection__Iterator__next]))(var62) /* next on */; -} -BREAK_label93: (void)0; -RET_LABEL:; +if (var64){ +{ +var67 = core__array___Iterator___to_a(var_it); } -/* method opts#OptionContext#parse_intern for (self: Object, Iterator[String]) */ -void VIRTUAL_opts__OptionContext__parse_intern(val* self, val* p0) { -opts__OptionContext__parse_intern(self, p0); -RET_LABEL:; +{ +core___core__Array___core__abstract_collection__SimpleCollection__add_all(var_rest, var67); /* Direct call array#Array#add_all on */ } -/* method opts#OptionContext#add_option for (self: OptionContext, Array[Option]) */ -void opts__OptionContext__add_option(val* self, val* p0) { -val* var_opts /* var opts: Array[Option] */; -val* var /* : Iterator[nullable Object] */; -short int var1 /* : Bool */; -val* var2 /* : nullable Object */; -val* var_opt /* var opt: Option */; -val* var3 /* : Array[Option] */; -var_opts = p0; -var = ((val* (*)(val*))(var_opts->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_opts) /* iterator on */; +var_parseargs = 0; +} else { +} +} +} +} +} else { +goto BREAK_label68; +} +} +BREAK_label68: (void)0; +{ +{ /* Inline opts#OptionContext#options (self) on */ +var71 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on */ +if (unlikely(var71 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 277); +fatal_exit(1); +} +var69 = var71; +RET_LABEL70:(void)0; +} +} +var_72 = var69; +{ +var73 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_72); +} +var_74 = var73; for(;;) { -var1 = ((short int (*)(val*))(var->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var) /* is_ok on */; -if(!var1) break; -var2 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_collection__Iterator__item]))(var) /* item on */; -var_opt = var2; -var3 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on */ -if (var3 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _options", "lib/opts.nit", 310); -exit(1); -} -((void (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var3, var_opt) /* add on */; -CONTINUE_label: (void)0; -((void (*)(val*))(var->class->vft[COLOR_abstract_collection__Iterator__next]))(var) /* next on */; +{ +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 */ } -BREAK_label: (void)0; -RET_LABEL:; +if (var75){ +} else { +goto BREAK_label76; } -/* method opts#OptionContext#add_option for (self: Object, Array[Option]) */ -void VIRTUAL_opts__OptionContext__add_option(val* self, val* p0) { -opts__OptionContext__add_option(self, p0); -RET_LABEL:; +{ +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 */ } -/* method opts#OptionContext#init for (self: OptionContext) */ -void opts__OptionContext__init(val* self) { -val* var /* : Array[Option] */; -val* var1 /* : HashMap[String, Option] */; -val* var2 /* : Array[String] */; -val* var3 /* : Array[String] */; -var = NEW_array__Array(&type_array__Arrayopts__Option); -((void (*)(val*))(var->class->vft[COLOR_array__Array__init]))(var) /* init on */; -CHECK_NEW_array__Array(var); -self->attrs[COLOR_opts__OptionContext___options].val = var; /* _options on */ -var1 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapstring__Stringopts__Option); -((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashMap__init]))(var1) /* init on */; -CHECK_NEW_hash_collection__HashMap(var1); -self->attrs[COLOR_opts__OptionContext___optmap].val = var1; /* _optmap on */ -var2 = NEW_array__Array(&type_array__Arraystring__String); -((void (*)(val*))(var2->class->vft[COLOR_array__Array__init]))(var2) /* init on */; -CHECK_NEW_array__Array(var2); -self->attrs[COLOR_opts__OptionContext___rest].val = var2; /* _rest on */ -var3 = NEW_array__Array(&type_array__Arraystring__String); -((void (*)(val*))(var3->class->vft[COLOR_array__Array__init]))(var3) /* init on */; -CHECK_NEW_array__Array(var3); -self->attrs[COLOR_opts__OptionContext___errors].val = var3; /* _errors on */ -RET_LABEL:; +var_opt78 = var77; +{ +{ /* Inline opts#Option#mandatory (var_opt78) on */ +var82 = var_opt78->attrs[COLOR_opts__Option___mandatory].s; /* _mandatory on */ +var80 = var82; +RET_LABEL81:(void)0; +} +} +var_83 = var80; +if (var80){ +{ +{ /* Inline opts#Option#read (var_opt78) on */ +var86 = var_opt78->attrs[COLOR_opts__Option___read].s; /* _read on */ +var84 = var86; +RET_LABEL85:(void)0; +} +} +var87 = !var84; +var79 = var87; +} else { +var79 = var_83; +} +if (var79){ +{ +{ /* Inline opts#OptionContext#context_errors (self) on */ +var90 = self->attrs[COLOR_opts__OptionContext___context_errors].val; /* _context_errors on */ +if (unlikely(var90 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _context_errors"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 283); +fatal_exit(1); +} +var88 = var90; +RET_LABEL89:(void)0; +} +} +if (unlikely(varonce91==NULL)) { +var92 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String); +if (likely(varonce93!=NULL)) { +var94 = varonce93; +} else { +var95 = "Mandatory option "; +var96 = core__flat___NativeString___to_s_full(var95, 17l, 17l); +var94 = var96; +varonce93 = var94; +} +((struct instance_core__NativeArray*)var92)->values[0]=var94; +if (likely(varonce97!=NULL)) { +var98 = varonce97; +} else { +var99 = " not found."; +var100 = core__flat___NativeString___to_s_full(var99, 11l, 11l); +var98 = var100; +varonce97 = var98; +} +((struct instance_core__NativeArray*)var92)->values[2]=var98; +} else { +var92 = varonce91; +varonce91 = NULL; +} +{ +{ /* Inline opts#Option#names (var_opt78) on */ +var103 = var_opt78->attrs[COLOR_opts__Option___names].val; /* _names on */ +if (unlikely(var103 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 19); +fatal_exit(1); +} +var101 = var103; +RET_LABEL102:(void)0; +} +} +if (likely(varonce104!=NULL)) { +var105 = varonce104; +} else { +var106 = ", "; +var107 = core__flat___NativeString___to_s_full(var106, 2l, 2l); +var105 = var107; +varonce104 = var105; +} +{ +var108 = core__abstract_text___Collection___join(var101, var105); +} +((struct instance_core__NativeArray*)var92)->values[1]=var108; +{ +var109 = ((val*(*)(val* self))(var92->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var92); /* native_to_s on */ +} +varonce91 = var92; +{ +core___core__Array___core__abstract_collection__SimpleCollection__add(var88, var109); /* Direct call array#Array#add on */ +} +} else { +} +{ +((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 */ +} +} +BREAK_label76: (void)0; +{ +((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 */ } -/* method opts#OptionContext#init for (self: Object) */ -void VIRTUAL_opts__OptionContext__init(val* self) { -opts__OptionContext__init(self); RET_LABEL:; } /* method opts#OptionContext#build for (self: OptionContext) */ -void opts__OptionContext__build(val* self) { +void opts___opts__OptionContext___build(val* self) { val* var /* : Array[Option] */; -val* var1 /* : Iterator[nullable Object] */; -short int var2 /* : Bool */; -val* var3 /* : nullable Object */; +val* var2 /* : Array[Option] */; +val* var_ /* var : Array[Option] */; +val* var3 /* : IndexedIterator[nullable Object] */; +val* var_4 /* var : IndexedIterator[Option] */; +short int var5 /* : Bool */; +val* var6 /* : nullable Object */; val* var_o /* var o: Option */; -val* var4 /* : Array[String] */; -val* var5 /* : Iterator[nullable Object] */; -short int var6 /* : Bool */; -val* var7 /* : nullable Object */; +val* var7 /* : Array[String] */; +val* var9 /* : Array[String] */; +val* var_10 /* var : Array[String] */; +val* var11 /* : IndexedIterator[nullable Object] */; +val* var_12 /* var : IndexedIterator[String] */; +short int var13 /* : Bool */; +val* var15 /* : nullable Object */; val* var_n /* var n: String */; -val* var8 /* : Map[String, Option] */; -var = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on */ -if (var == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _options", "lib/opts.nit", 324); -exit(1); +val* var16 /* : HashMap[String, Option] */; +val* var18 /* : HashMap[String, Option] */; +{ +{ /* Inline opts#OptionContext#options (self) on */ +var2 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 277); +fatal_exit(1); +} +var = var2; +RET_LABEL1:(void)0; +} } -var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_collection__Collection__iterator]))(var) /* iterator on */; +var_ = var; +{ +var3 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_); +} +var_4 = var3; for(;;) { -var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var1) /* is_ok on */; -if(!var2) break; -var3 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__item]))(var1) /* item on */; -var_o = var3; -var4 = ((val* (*)(val*))(var_o->class->vft[COLOR_opts__Option__names]))(var_o) /* names on */; -var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Collection__iterator]))(var4) /* iterator on */; +{ +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 */ +} +if (var5){ +} else { +goto BREAK_label; +} +{ +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_o = var6; +{ +{ /* Inline opts#Option#names (var_o) on */ +var9 = var_o->attrs[COLOR_opts__Option___names].val; /* _names on */ +if (unlikely(var9 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 19); +fatal_exit(1); +} +var7 = var9; +RET_LABEL8:(void)0; +} +} +var_10 = var7; +{ +var11 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_10); +} +var_12 = var11; for(;;) { -var6 = ((short int (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var5) /* is_ok on */; -if(!var6) break; -var7 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__item]))(var5) /* item on */; -var_n = var7; -var8 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on */ -if (var8 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _optmap", "lib/opts.nit", 326); -exit(1); -} -((void (*)(val*, val*, val*))(var8->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var8, var_n, var_o) /* []= on */; -CONTINUE_label: (void)0; -((void (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__next]))(var5) /* next on */; +{ +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 */ } -BREAK_label: (void)0; -CONTINUE_label9: (void)0; -((void (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__next]))(var1) /* next on */; +if (var13){ +} else { +goto BREAK_label14; +} +{ +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_n = var15; +{ +{ /* Inline opts#OptionContext#optmap (self) on */ +var18 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on */ +if (unlikely(var18 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 286); +fatal_exit(1); +} +var16 = var18; +RET_LABEL17:(void)0; +} +} +{ +core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var16, var_n, var_o); /* Direct call hash_collection#HashMap#[]= on */ +} +{ +((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 */ +} +} +BREAK_label14: (void)0; +{ +((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 */ +} +{ +((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 */ } -BREAK_label9: (void)0; -RET_LABEL:; } -/* method opts#OptionContext#build for (self: Object) */ -void VIRTUAL_opts__OptionContext__build(val* self) { -opts__OptionContext__build(self); +BREAK_label: (void)0; +{ +((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 */ +} RET_LABEL:; } -/* method opts#OptionContext#get_errors for (self: OptionContext): Array[String] */ -val* opts__OptionContext__get_errors(val* self) { +/* method opts#OptionContext#errors for (self: OptionContext): Array[String] */ +val* opts___opts__OptionContext___errors(val* self) { val* var /* : Array[String] */; val* var1 /* : Array[String] */; val* var_errors /* var errors: Array[String] */; val* var2 /* : Array[String] */; -val* var3 /* : Array[Option] */; -val* var4 /* : Iterator[nullable Object] */; -short int var5 /* : Bool */; -val* var6 /* : nullable Object */; +val* var4 /* : Array[String] */; +val* var5 /* : Array[Option] */; +val* var7 /* : Array[Option] */; +val* var_ /* var : Array[Option] */; +val* var8 /* : IndexedIterator[nullable Object] */; +val* var_9 /* var : IndexedIterator[Option] */; +short int var10 /* : Bool */; +val* var11 /* : nullable Object */; val* var_o /* var o: Option */; -val* var7 /* : Array[String] */; -val* var8 /* : Iterator[nullable Object] */; -short int var9 /* : Bool */; -val* var10 /* : nullable Object */; +val* var12 /* : Array[String] */; +val* var14 /* : Array[String] */; +val* var_15 /* var : Array[String] */; +val* var16 /* : IndexedIterator[nullable Object] */; +val* var_17 /* var : IndexedIterator[String] */; +short int var18 /* : Bool */; +val* var20 /* : nullable Object */; val* var_e /* var e: String */; -var1 = NEW_array__Array(&type_array__Arraystring__String); -((void (*)(val*))(var1->class->vft[COLOR_array__Array__init]))(var1) /* init on */; -CHECK_NEW_array__Array(var1); +var1 = NEW_core__Array(&type_core__Array__core__String); +{ +core___core__Array___core__kernel__Object__init(var1); /* Direct call array#Array#init on */ +} var_errors = var1; -var2 = self->attrs[COLOR_opts__OptionContext___errors].val; /* _errors on */ -if (var2 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _errors", "lib/opts.nit", 335); -exit(1); -} -((void (*)(val*, val*))(var_errors->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_errors, var2) /* add_all on */; -var3 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on */ -if (var3 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _options", "lib/opts.nit", 337); -exit(1); -} -var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Collection__iterator]))(var3) /* iterator on */; +{ +{ /* Inline opts#OptionContext#context_errors (self) on */ +var4 = self->attrs[COLOR_opts__OptionContext___context_errors].val; /* _context_errors on */ +if (unlikely(var4 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _context_errors"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 283); +fatal_exit(1); +} +var2 = var4; +RET_LABEL3:(void)0; +} +} +{ +core___core__Array___core__abstract_collection__SimpleCollection__add_all(var_errors, var2); /* Direct call array#Array#add_all on */ +} +{ +{ /* Inline opts#OptionContext#options (self) on */ +var7 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on */ +if (unlikely(var7 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 277); +fatal_exit(1); +} +var5 = var7; +RET_LABEL6:(void)0; +} +} +var_ = var5; +{ +var8 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_); +} +var_9 = var8; for(;;) { -var5 = ((short int (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var4) /* is_ok on */; -if(!var5) break; -var6 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__item]))(var4) /* item on */; -var_o = var6; -var7 = ((val* (*)(val*))(var_o->class->vft[COLOR_opts__Option__errors]))(var_o) /* errors on */; -var8 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Collection__iterator]))(var7) /* iterator on */; +{ +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 */ +} +if (var10){ +} else { +goto BREAK_label; +} +{ +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_o = var11; +{ +{ /* Inline opts#Option#errors (var_o) on */ +var14 = var_o->attrs[COLOR_opts__Option___errors].val; /* _errors on */ +if (unlikely(var14 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _errors"); +PRINT_ERROR(" (%s:%d)\n", FILE_opts, 28); +fatal_exit(1); +} +var12 = var14; +RET_LABEL13:(void)0; +} +} +var_15 = var12; +{ +var16 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_15); +} +var_17 = var16; for(;;) { -var9 = ((short int (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var8) /* is_ok on */; -if(!var9) break; -var10 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__item]))(var8) /* item on */; -var_e = var10; -((void (*)(val*, val*))(var_errors->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_errors, var_e) /* add on */; -CONTINUE_label: (void)0; -((void (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__next]))(var8) /* next on */; +{ +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 */ +} +if (var18){ +} else { +goto BREAK_label19; +} +{ +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_e = var20; +{ +core___core__Array___core__abstract_collection__SimpleCollection__add(var_errors, var_e); /* Direct call array#Array#add on */ +} +{ +((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 */ +} +} +BREAK_label19: (void)0; +{ +((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 */ +} +{ +((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 */ +} } BREAK_label: (void)0; -CONTINUE_label11: (void)0; -((void (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__next]))(var4) /* next on */; +{ +((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 */ } -BREAK_label11: (void)0; var = var_errors; goto RET_LABEL; RET_LABEL:; return var; } -/* method opts#OptionContext#get_errors for (self: Object): Array[String] */ -val* VIRTUAL_opts__OptionContext__get_errors(val* self) { -val* var /* : Array[String] */; -val* var1 /* : Array[String] */; -var1 = opts__OptionContext__get_errors(self); -var = var1; -RET_LABEL:; -return var; -}