X-Git-Url: http://nitlanguage.org diff --git a/c_src/typing._sep.c b/c_src/typing._sep.c index 5072010..209b1c1 100644 --- a/c_src/typing._sep.c +++ b/c_src/typing._sep.c @@ -1,3411 +1,8375 @@ /* This C file is generated by NIT to compile module typing. */ #include "typing._sep.h" void typing___MMSrcModule___do_typing(val_t self, val_t param0) { - struct trace_t trace = {NULL, LOCATE_typing___MMSrcModule___do_typing, 23}; - val_t variable0; - val_t variable1; - val_t variable2; - trace.prev = tracehead; tracehead = &trace; - variable0 = param0; - variable2 = NEW_typing___TypingVisitor___init( variable0 /*tc*/, self); /*new TypingVisitor*/ - variable1 = variable2; - variable2 = ((syntax_base___MMSrcModule___node_t)CALL( self,COLOR_syntax_base___MMSrcModule___node))( self) /*MMSrcModule::node*/; - ((typing___TypingVisitor___visit_t)CALL( variable1 /*tv*/,COLOR_parser_prod___Visitor___visit))( variable1 /*tv*/, variable2) /*TypingVisitor::visit*/; + struct trace_t trace = {NULL, NULL, 25, LOCATE_typing___MMSrcModule___do_typing}; + val_t variable[5]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Method return value and escape marker */ + /* Register variable[3]: Local variable */ + /* Register variable[4]: Result */ + variable[4] = NEW_TypingVisitor_typing___TypingVisitor___init( variable[1] /*tc*/, variable[0]) /*new TypingVisitor*/; + variable[3] = variable[4]; + /* Register variable[4]: Result */ + variable[4] = CALL_syntax_base___MMSrcModule___node(variable[0])(variable[0]) /*MMSrcModule::node*/; + CALL_parser_prod___Visitor___visit( variable[3] /*tv*/)( variable[3] /*tv*/, variable[4]) /*TypingVisitor::visit*/; + return_label0: while(false); tracehead = trace.prev; return; } void typing___TypingVisitor___visit(val_t self, val_t param0) { - struct trace_t trace = {NULL, LOCATE_typing___TypingVisitor___visit, 39}; - val_t variable0; - val_t variable1; - trace.prev = tracehead; tracehead = &trace; - variable0 = param0; - variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ == NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/, NIT_NULL /*null*/) /*PNode::==*/))))))); - if (UNTAG_Bool(variable1)) { /*if*/ - ((typing___PNode___accept_typing_t)CALL( variable0 /*n*/,COLOR_typing___PNode___accept_typing))( variable0 /*n*/, self) /*PNode::accept_typing*/; + struct trace_t trace = {NULL, NULL, 41, LOCATE_typing___TypingVisitor___visit}; + val_t variable[4]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Method return value and escape marker */ + /* Register variable[3]: Result */ + variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ == NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/, NIT_NULL /*null*/) /*Object::==*/))))))); + if (UNTAG_Bool(variable[3])) { /*if*/ + CALL_typing___PNode___accept_typing( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::accept_typing*/; } + return_label1: while(false); tracehead = trace.prev; return; } val_t typing___TypingVisitor___variable_ctx(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___TypingVisitor___variable_ctx, 44}; + struct trace_t trace = {NULL, NULL, 46, LOCATE_typing___TypingVisitor___variable_ctx}; + val_t *variable = NULL; + struct WBT_ **closurevariable = NULL; trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; tracehead = trace.prev; return ATTR_typing___TypingVisitor____variable_ctx( self) /*TypingVisitor::_variable_ctx*/; } void typing___TypingVisitor___variable_ctx__eq(val_t self, val_t param0) { - struct trace_t trace = {NULL, LOCATE_typing___TypingVisitor___variable_ctx__eq, 44}; + struct trace_t trace = {NULL, NULL, 46, LOCATE_typing___TypingVisitor___variable_ctx__eq}; + val_t *variable = NULL; + struct WBT_ **closurevariable = NULL; trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; ATTR_typing___TypingVisitor____variable_ctx( self) /*TypingVisitor::_variable_ctx*/ = param0; tracehead = trace.prev; return; } -val_t typing___TypingVisitor___self_type(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___TypingVisitor___self_type, 47}; +val_t typing___TypingVisitor___base_variable_ctx(val_t self) { + struct trace_t trace = {NULL, NULL, 49, LOCATE_typing___TypingVisitor___base_variable_ctx}; + val_t *variable = NULL; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + tracehead = trace.prev; + return ATTR_typing___TypingVisitor____base_variable_ctx( self) /*TypingVisitor::_base_variable_ctx*/; +} +void typing___TypingVisitor___base_variable_ctx__eq(val_t self, val_t param0) { + struct trace_t trace = {NULL, NULL, 49, LOCATE_typing___TypingVisitor___base_variable_ctx__eq}; + val_t *variable = NULL; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + ATTR_typing___TypingVisitor____base_variable_ctx( self) /*TypingVisitor::_base_variable_ctx*/ = param0; + tracehead = trace.prev; + return; +} +val_t typing___TypingVisitor___escapable_ctx(val_t self) { + struct trace_t trace = {NULL, NULL, 52, LOCATE_typing___TypingVisitor___escapable_ctx}; + val_t *variable = NULL; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + tracehead = trace.prev; + return ATTR_typing___TypingVisitor____escapable_ctx( self) /*TypingVisitor::_escapable_ctx*/; +} +void typing___TypingVisitor___escapable_ctx__eq(val_t self, val_t param0) { + struct trace_t trace = {NULL, NULL, 52, LOCATE_typing___TypingVisitor___escapable_ctx__eq}; + val_t *variable = NULL; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + ATTR_typing___TypingVisitor____escapable_ctx( self) /*TypingVisitor::_escapable_ctx*/ = param0; + tracehead = trace.prev; + return; +} +val_t typing___TypingVisitor___self_var(val_t self) { + struct trace_t trace = {NULL, NULL, 55, LOCATE_typing___TypingVisitor___self_var}; + val_t *variable = NULL; + struct WBT_ **closurevariable = NULL; trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; tracehead = trace.prev; - return ATTR_typing___TypingVisitor____self_type( self) /*TypingVisitor::_self_type*/; + return ATTR_typing___TypingVisitor____self_var( self) /*TypingVisitor::_self_var*/; } -void typing___TypingVisitor___self_type__eq(val_t self, val_t param0) { - struct trace_t trace = {NULL, LOCATE_typing___TypingVisitor___self_type__eq, 47}; +void typing___TypingVisitor___self_var__eq(val_t self, val_t param0) { + struct trace_t trace = {NULL, NULL, 55, LOCATE_typing___TypingVisitor___self_var__eq}; + val_t *variable = NULL; + struct WBT_ **closurevariable = NULL; trace.prev = tracehead; tracehead = &trace; - ATTR_typing___TypingVisitor____self_type( self) /*TypingVisitor::_self_type*/ = param0; + trace.file = LOCATE_typing; + ATTR_typing___TypingVisitor____self_var( self) /*TypingVisitor::_self_var*/ = param0; tracehead = trace.prev; return; } val_t typing___TypingVisitor___top_block(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___TypingVisitor___top_block, 50}; + struct trace_t trace = {NULL, NULL, 58, LOCATE_typing___TypingVisitor___top_block}; + val_t *variable = NULL; + struct WBT_ **closurevariable = NULL; trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; tracehead = trace.prev; return ATTR_typing___TypingVisitor____top_block( self) /*TypingVisitor::_top_block*/; } void typing___TypingVisitor___top_block__eq(val_t self, val_t param0) { - struct trace_t trace = {NULL, LOCATE_typing___TypingVisitor___top_block__eq, 50}; + struct trace_t trace = {NULL, NULL, 58, LOCATE_typing___TypingVisitor___top_block__eq}; + val_t *variable = NULL; + struct WBT_ **closurevariable = NULL; trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; ATTR_typing___TypingVisitor____top_block( self) /*TypingVisitor::_top_block*/ = param0; tracehead = trace.prev; return; } val_t typing___TypingVisitor___explicit_super_init_calls(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___TypingVisitor___explicit_super_init_calls, 53}; + struct trace_t trace = {NULL, NULL, 61, LOCATE_typing___TypingVisitor___explicit_super_init_calls}; + val_t *variable = NULL; + struct WBT_ **closurevariable = NULL; trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; tracehead = trace.prev; return ATTR_typing___TypingVisitor____explicit_super_init_calls( self) /*TypingVisitor::_explicit_super_init_calls*/; } void typing___TypingVisitor___explicit_super_init_calls__eq(val_t self, val_t param0) { - struct trace_t trace = {NULL, LOCATE_typing___TypingVisitor___explicit_super_init_calls__eq, 53}; + struct trace_t trace = {NULL, NULL, 61, LOCATE_typing___TypingVisitor___explicit_super_init_calls__eq}; + val_t *variable = NULL; + struct WBT_ **closurevariable = NULL; trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; ATTR_typing___TypingVisitor____explicit_super_init_calls( self) /*TypingVisitor::_explicit_super_init_calls*/ = param0; tracehead = trace.prev; return; } val_t typing___TypingVisitor___explicit_other_init_call(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___TypingVisitor___explicit_other_init_call, 56}; + struct trace_t trace = {NULL, NULL, 64, LOCATE_typing___TypingVisitor___explicit_other_init_call}; + val_t *variable = NULL; + struct WBT_ **closurevariable = NULL; trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; tracehead = trace.prev; return ATTR_typing___TypingVisitor____explicit_other_init_call( self) /*TypingVisitor::_explicit_other_init_call*/; } void typing___TypingVisitor___explicit_other_init_call__eq(val_t self, val_t param0) { - struct trace_t trace = {NULL, LOCATE_typing___TypingVisitor___explicit_other_init_call__eq, 56}; + struct trace_t trace = {NULL, NULL, 64, LOCATE_typing___TypingVisitor___explicit_other_init_call__eq}; + val_t *variable = NULL; + struct WBT_ **closurevariable = NULL; trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; ATTR_typing___TypingVisitor____explicit_other_init_call( self) /*TypingVisitor::_explicit_other_init_call*/ = param0; tracehead = trace.prev; return; } -void typing___TypingVisitor___init(val_t self, val_t param0, val_t param1, int* init_table) { - struct trace_t trace = {NULL, LOCATE_typing___TypingVisitor___init, 59}; - val_t variable0; - val_t variable1; +void typing___TypingVisitor___use_if_true_variable_ctx(val_t self, val_t param0) { + struct trace_t trace = {NULL, NULL, 67, LOCATE_typing___TypingVisitor___use_if_true_variable_ctx}; + val_t variable[5]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Method return value and escape marker */ + /* Register variable[3]: Local variable */ + /* Register variable[4]: Result */ + variable[4] = CALL_typing___PExpr___if_true_variable_ctx( variable[1] /*e*/)( variable[1] /*e*/) /*PExpr::if_true_variable_ctx*/; + variable[3] = variable[4]; + /* Register variable[4]: Result */ + variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*ctx*/ == NIT_NULL /*null*/) || (( variable[3] /*ctx*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*ctx*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*ctx*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*ctx*/)( variable[3] /*ctx*/, NIT_NULL /*null*/) /*Object::==*/))))))); + if (UNTAG_Bool(variable[4])) { /*if*/ + CALL_typing___TypingVisitor___variable_ctx__eq(variable[0])(variable[0], variable[3] /*ctx*/) /*TypingVisitor::variable_ctx=*/; + } + return_label2: while(false); + tracehead = trace.prev; + return; +} +void typing___TypingVisitor___use_if_false_variable_ctx(val_t self, val_t param0) { + struct trace_t trace = {NULL, NULL, 74, LOCATE_typing___TypingVisitor___use_if_false_variable_ctx}; + val_t variable[5]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Method return value and escape marker */ + /* Register variable[3]: Local variable */ + /* Register variable[4]: Result */ + variable[4] = CALL_typing___PExpr___if_false_variable_ctx( variable[1] /*e*/)( variable[1] /*e*/) /*PExpr::if_false_variable_ctx*/; + variable[3] = variable[4]; + /* Register variable[4]: Result */ + variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*ctx*/ == NIT_NULL /*null*/) || (( variable[3] /*ctx*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*ctx*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*ctx*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*ctx*/)( variable[3] /*ctx*/, NIT_NULL /*null*/) /*Object::==*/))))))); + if (UNTAG_Bool(variable[4])) { /*if*/ + CALL_typing___TypingVisitor___variable_ctx__eq(variable[0])(variable[0], variable[3] /*ctx*/) /*TypingVisitor::variable_ctx=*/; + } + return_label3: while(false); + tracehead = trace.prev; + return; +} +val_t typing___TypingVisitor___once_count(val_t self) { + struct trace_t trace = {NULL, NULL, 81, LOCATE_typing___TypingVisitor___once_count}; + val_t *variable = NULL; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + tracehead = trace.prev; + return ATTR_typing___TypingVisitor____once_count( self) /*TypingVisitor::_once_count*/; +} +void typing___TypingVisitor___once_count__eq(val_t self, val_t param0) { + struct trace_t trace = {NULL, NULL, 81, LOCATE_typing___TypingVisitor___once_count__eq}; + val_t *variable = NULL; + struct WBT_ **closurevariable = NULL; trace.prev = tracehead; tracehead = &trace; - variable0 = param0; - variable1 = param1; - if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_TypingVisitor].i]) return; - ((syntax_base___AbsSyntaxVisitor___init_t)CALL( self,COLOR_syntax_base___AbsSyntaxVisitor___init))( self, param0, param1, init_table /*YYY*/) /*AbsSyntaxVisitor::init*/; - init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_TypingVisitor].i] = 1; + trace.file = LOCATE_typing; + ATTR_typing___TypingVisitor____once_count( self) /*TypingVisitor::_once_count*/ = param0; + tracehead = trace.prev; + return; +} +void typing___TypingVisitor___init(val_t self, val_t param0, val_t param1, int* init_table) { + struct trace_t trace = {NULL, NULL, 84, LOCATE_typing___TypingVisitor___init}; + val_t variable[4]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Local variable */ + variable[2] = param1; + if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_TypingVisitor].i]) return; + /* Register variable[3]: Method return value and escape marker */ + CALL_syntax_base___AbsSyntaxVisitor___init(variable[0])(variable[0], variable[1], variable[2], init_table /*YYY*/) /*AbsSyntaxVisitor::init*/; + return_label4: while(false); + init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_TypingVisitor].i] = 1; tracehead = trace.prev; return; } val_t typing___TypingVisitor___get_default_constructor_for(val_t self, val_t param0, val_t param1, val_t param2) { - struct trace_t trace = {NULL, LOCATE_typing___TypingVisitor___get_default_constructor_for, 61}; - val_t variable0; - val_t variable1; - val_t variable2; - val_t variable3; - val_t variable4; - val_t variable5; - val_t variable6; - val_t variable7; - val_t variable8; - val_t variable9; - val_t variable10; - val_t variable11; - val_t variable12; - val_t variable13; - val_t variable14; - val_t variable15; - val_t variable16; - trace.prev = tracehead; tracehead = &trace; - variable0 = param0; - variable1 = param1; - variable2 = param2; - variable3 = self; - variable5 = NEW_array___Array___init(); /*new Array[MMMethod]*/ - variable4 = variable5; - variable6 = NEW_array___Array___init(); /*new Array[MMMethod]*/ - variable5 = variable6; - variable7 = ((genericity___MMLocalProperty___signature_t)CALL( variable2 /*prop*/,COLOR_static_type___MMLocalProperty___signature))( variable2 /*prop*/) /*MMMethod::signature*/; - variable7 = ((static_type___MMSignature___arity_t)CALL(variable7,COLOR_static_type___MMSignature___arity))(variable7) /*MMSignature::arity*/; - variable6 = variable7; - variable7 = ((abstractmetamodel___MMLocalClass___global_properties_t)CALL( variable1 /*c*/,COLOR_abstractmetamodel___MMLocalClass___global_properties))( variable1 /*c*/) /*MMLocalClass::global_properties*/; - variable7 = ((abstract_collection___Collection___iterator_t)CALL(variable7,COLOR_abstract_collection___Collection___iterator))(variable7) /*Set::iterator*/; + struct trace_t trace = {NULL, NULL, 86, LOCATE_typing___TypingVisitor___get_default_constructor_for}; + static val_t once_value_7; static int once_bool_7; /* Once value for variable[16]*/ + static val_t once_value_8 = NIT_NULL; /* Once value for string variable[16]*/ + static val_t once_value_10 = NIT_NULL; /* Once value for string variable[14]*/ + static val_t once_value_11 = NIT_NULL; /* Once value for string variable[14]*/ + static val_t once_value_12 = NIT_NULL; /* Once value for string variable[14]*/ + static val_t once_value_13 = NIT_NULL; /* Once value for string variable[11]*/ + static val_t once_value_14 = NIT_NULL; /* Once value for string variable[11]*/ + static val_t once_value_15 = NIT_NULL; /* Once value for string variable[11]*/ + static val_t once_value_16 = NIT_NULL; /* Once value for string variable[11]*/ + static val_t once_value_18 = NIT_NULL; /* Once value for string variable[14]*/ + static val_t once_value_19 = NIT_NULL; /* Once value for string variable[14]*/ + static val_t once_value_20 = NIT_NULL; /* Once value for string variable[14]*/ + static val_t once_value_21 = NIT_NULL; /* Once value for string variable[11]*/ + static val_t once_value_22 = NIT_NULL; /* Once value for string variable[11]*/ + static val_t once_value_23 = NIT_NULL; /* Once value for string variable[11]*/ + static val_t once_value_24 = NIT_NULL; /* Once value for string variable[11]*/ + static val_t once_value_25 = NIT_NULL; /* Once value for string variable[10]*/ + static val_t once_value_26 = NIT_NULL; /* Once value for string variable[10]*/ + val_t variable[17]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Local variable */ + variable[2] = param1; + /* Register variable[3]: Local variable */ + variable[3] = param2; + /* Register variable[4]: Method return value and escape marker */ + /* Register variable[5]: Local variable */ + variable[5] = variable[0]; + /* Register variable[6]: Local variable */ + /* Register variable[7]: Result */ + variable[7] = NEW_Array_array___Array___init() /*new Array[MMMethod]*/; + variable[6] = variable[7]; + /* Register variable[7]: Local variable */ + /* Register variable[8]: Result */ + variable[8] = NEW_Array_array___Array___init() /*new Array[MMMethod]*/; + variable[7] = variable[8]; + /* Register variable[8]: Local variable */ + /* Register variable[9]: Result */ + variable[9] = CALL_static_type___MMLocalProperty___signature( variable[3] /*prop*/)( variable[3] /*prop*/) /*MMLocalProperty::signature*/; + /* Register variable[9]: Result */ + variable[9] = CALL_static_type___MMSignature___arity(variable[9])(variable[9]) /*MMSignature::arity*/; + variable[8] = variable[9]; + /* Register variable[9]: Result */ + variable[9] = CALL_abstractmetamodel___MMLocalClass___global_properties( variable[2] /*c*/)( variable[2] /*c*/) /*MMLocalClass::global_properties*/; + /* Register variable[9]: For iterator */ + variable[9] = CALL_abstract_collection___Collection___iterator(variable[9])(variable[9]) /*Collection::iterator*/; while (true) { /*for*/ - variable8 = ((abstract_collection___Iterator___is_ok_t)CALL(variable7,COLOR_abstract_collection___Iterator___is_ok))(variable7) /*Iterator::is_ok*/; - if (!UNTAG_Bool(variable8)) break; /*for*/ - variable8 = ((abstract_collection___Iterator___item_t)CALL(variable7,COLOR_abstract_collection___Iterator___item))(variable7) /*Iterator::item*/; - variable9 = ((abstractmetamodel___MMGlobalProperty___is_init_t)CALL( variable8 /*g*/,COLOR_abstractmetamodel___MMGlobalProperty___is_init))( variable8 /*g*/) /*MMGlobalProperty::is_init*/; - if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable9)))) { /*if*/ - goto continue_4; - } - variable9 = ((abstractmetamodel___MMGlobalProperty___intro_t)CALL( variable8 /*g*/,COLOR_abstractmetamodel___MMGlobalProperty___intro))( variable8 /*g*/) /*MMGlobalProperty::intro*/; - variable9 = ((abstractmetamodel___MMLocalProperty___local_class_t)CALL(variable9,COLOR_abstractmetamodel___MMLocalProperty___local_class))(variable9) /*MMConcreteProperty::local_class*/; - variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable9 == variable1 /*c*/) || ((variable9 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable9,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable9, variable1 /*c*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable9,COLOR_kernel___Object_____eqeq))(variable9, variable1 /*c*/) /*MMLocalClass::==*/))))))); - if (UNTAG_Bool(variable9)) { /*if*/ - goto continue_4; - } - variable10 = ((inheritance___MMLocalClass_____bra_t)CALL( variable1 /*c*/,COLOR_abstractmetamodel___MMLocalClass_____bra))( variable1 /*c*/, variable8 /*g*/) /*MMLocalClass::[]*/; - variable9 = variable10; - variable10 = TAG_Bool(( variable9 /*gp*/==NIT_NULL) || VAL_ISA( variable9 /*gp*/, COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/; - if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_typing___TypingVisitor___get_default_constructor_for, 73); nit_exit(1);} - variable11 = ((abstractmetamodel___MMGlobalProperty___intro_t)CALL( variable8 /*g*/,COLOR_abstractmetamodel___MMGlobalProperty___intro))( variable8 /*g*/) /*MMGlobalProperty::intro*/; - variable11 = ((genericity___MMLocalProperty___signature_t)CALL(variable11,COLOR_static_type___MMLocalProperty___signature))(variable11) /*MMConcreteProperty::signature*/; - variable11 = ((static_type___MMSignature___arity_t)CALL(variable11,COLOR_static_type___MMSignature___arity))(variable11) /*MMSignature::arity*/; - variable10 = variable11; - variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*prop*/ == NIT_NULL /*null*/) || (( variable2 /*prop*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*prop*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*prop*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*prop*/,COLOR_kernel___Object_____eqeq))( variable2 /*prop*/, NIT_NULL /*null*/) /*MMMethod::==*/))))))); - variable12 = variable11; - if (UNTAG_Bool(variable12)) { /* and */ - variable12 = ((abstractmetamodel___MMGlobalProperty___intro_t)CALL( variable8 /*g*/,COLOR_abstractmetamodel___MMGlobalProperty___intro))( variable8 /*g*/) /*MMGlobalProperty::intro*/; - variable12 = ((abstractmetamodel___MMLocalProperty___name_t)CALL(variable12,COLOR_abstractmetamodel___MMLocalProperty___name))(variable12) /*MMConcreteProperty::name*/; - variable13 = ((abstractmetamodel___MMLocalProperty___name_t)CALL( variable2 /*prop*/,COLOR_abstractmetamodel___MMLocalProperty___name))( variable2 /*prop*/) /*MMMethod::name*/; - variable12 = TAG_Bool((variable12 == variable13) || ((variable12 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable12,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable12,variable13)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable12,COLOR_kernel___Object_____eqeq))(variable12, variable13) /*Symbol::==*/))))); - } - variable11 = variable12; - if (UNTAG_Bool(variable11)) { /*if*/ - variable11 = TAG_Bool(( variable10 /*garity*/)==( TAG_Int(0))); - variable12 = variable11; - if (!UNTAG_Bool(variable12)) { /* or */ - variable12 = TAG_Bool(( variable10 /*garity*/)==( variable6 /*parity*/)); - } - variable11 = variable12; - if (UNTAG_Bool(variable11)) { /*if*/ - variable3 = variable9 /*gp*/; - goto return_label3; + /* Register variable[10]: For 'is_ok' result */ + variable[10] = CALL_abstract_collection___Iterator___is_ok(variable[9])(variable[9]) /*Iterator::is_ok*/; + if (!UNTAG_Bool(variable[10])) break; /*for*/ + variable[10] = CALL_abstract_collection___Iterator___item(variable[9])(variable[9]) /*Iterator::item*/ /* Ensure var: For item*/; + /* Register variable[11]: Local variable */ + variable[11] = variable[10]; + /* Register variable[12]: Result */ + variable[12] = CALL_abstractmetamodel___MMGlobalProperty___is_init_for( variable[11] /*g*/)( variable[11] /*g*/, variable[2] /*c*/) /*MMGlobalProperty::is_init_for*/; + if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[12])))) { /*if*/ + goto continue_6; + } + /* Register variable[12]: Local variable */ + /* Register variable[13]: Result */ + variable[13] = CALL_abstractmetamodel___MMLocalClass_____bra( variable[2] /*c*/)( variable[2] /*c*/, variable[11] /*g*/) /*MMLocalClass::[]*/; + variable[12] = variable[13]; + /* Register variable[13]: Local variable */ + /* Register variable[14]: Result */ + variable[14] = CALL_static_type___MMLocalClass___get_type( variable[2] /*c*/)( variable[2] /*c*/) /*MMLocalClass::get_type*/; + /* Register variable[14]: Result */ + variable[14] = CALL_static_type___MMLocalProperty___signature_for( variable[12] /*gp*/)( variable[12] /*gp*/, variable[14]) /*MMLocalProperty::signature_for*/; + variable[13] = variable[14]; + /* Register variable[14]: Result */ + variable[14] = TAG_Bool(( variable[12] /*gp*/==NIT_NULL) || VAL_ISA( variable[12] /*gp*/, COLOR_MMSrcMethod, ID_MMSrcMethod)) /*cast MMSrcMethod*/; + if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_typing___TypingVisitor___get_default_constructor_for, LOCATE_typing, 98); nit_exit(1);} + /* Register variable[14]: Local variable */ + /* Register variable[15]: Result */ + variable[15] = CALL_static_type___MMSignature___arity( variable[13] /*gps*/)( variable[13] /*gps*/) /*MMSignature::arity*/; + variable[14] = variable[15]; + /* Register variable[15]: Result */ + variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*prop*/ == NIT_NULL /*null*/) || (( variable[3] /*prop*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*prop*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*prop*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*prop*/)( variable[3] /*prop*/, NIT_NULL /*null*/) /*Object::==*/))))))); + /* Ensure var variable[15]: Left 'and' operand*/ + if (UNTAG_Bool(variable[15])) { /* and */ + /* Register variable[15]: Result */ + variable[15] = CALL_abstractmetamodel___MMLocalProperty___name( variable[12] /*gp*/)( variable[12] /*gp*/) /*MMLocalProperty::name*/; + /* Register variable[16]: Result */ + variable[16] = CALL_abstractmetamodel___MMLocalProperty___name( variable[3] /*prop*/)( variable[3] /*prop*/) /*MMLocalProperty::name*/; + /* Register variable[15]: Result */ + variable[15] = TAG_Bool((variable[15] == variable[16]) || ((variable[15] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[15])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[15],variable[16])):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[15])(variable[15], variable[16]) /*Object::==*/))))); + } + /* Register variable[15]: Result */ + if (UNTAG_Bool(variable[15])) { /*if*/ + /* Register variable[15]: Result */ + variable[15] = TAG_Bool(( variable[14] /*garity*/)==( TAG_Int(0))); + /* Ensure var variable[15]: Left 'or' operand*/ + if (!UNTAG_Bool(variable[15])) { /* or */ + /* Register variable[15]: Result */ + variable[15] = TAG_Bool(( variable[8] /*parity*/)==( variable[14] /*garity*/)); + /* Ensure var variable[15]: Left 'and' operand*/ + if (UNTAG_Bool(variable[15])) { /* and */ + /* Register variable[15]: Result */ + variable[15] = CALL_static_type___MMLocalProperty___signature( variable[3] /*prop*/)( variable[3] /*prop*/) /*MMLocalProperty::signature*/; + /* Register variable[15]: Result */ + variable[15] = CALL_static_type___MMSignature_____l(variable[15])(variable[15], variable[13] /*gps*/) /*MMSignature::<*/; + } + /* Register variable[15]: Result */ + } + /* Register variable[15]: Result */ + if (UNTAG_Bool(variable[15])) { /*if*/ + variable[4] = variable[12] /*gp*/; + goto return_label5; } else { /*if*/ - ((array___AbstractArray___add_t)CALL( variable5 /*false_candidates*/,COLOR_abstract_collection___SimpleCollection___add))( variable5 /*false_candidates*/, variable9 /*gp*/) /*Array::add*/; + CALL_abstract_collection___SimpleCollection___add( variable[7] /*false_candidates*/)( variable[7] /*false_candidates*/, variable[12] /*gp*/) /*AbstractArray::add*/; } } else { /*if*/ - variable11 = TAG_Bool(( variable10 /*garity*/)==( TAG_Int(0))); - if (UNTAG_Bool(variable11)) { /*if*/ - ((array___AbstractArray___add_t)CALL( variable4 /*candidates*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*candidates*/, variable9 /*gp*/) /*Array::add*/; - ((array___AbstractArray___add_t)CALL( variable5 /*false_candidates*/,COLOR_abstract_collection___SimpleCollection___add))( variable5 /*false_candidates*/, variable9 /*gp*/) /*Array::add*/; + /* Register variable[15]: Result */ + variable[15] = TAG_Bool(( variable[14] /*garity*/)==( TAG_Int(0))); + /* Ensure var variable[15]: Left 'and' operand*/ + if (UNTAG_Bool(variable[15])) { /* and */ + /* Register variable[15]: Result */ + variable[15] = CALL_abstractmetamodel___MMLocalProperty___name( variable[12] /*gp*/)( variable[12] /*gp*/) /*MMLocalProperty::name*/; + /* Register variable[16]: Once expression result */ + if (once_bool_7) variable[16] = once_value_7; + else { + /* Register variable[16]: Once String constant */ + if (once_value_8 != NIT_NULL) variable[16] = once_value_8; + else { + variable[16] = NEW_String_string___String___with_native(BOX_NativeString("init"), TAG_Int(4)) /*new String*/; + once_value_8 = variable[16]; + } + /* Register variable[16]: Result */ + /* Register variable[16]: Result */ + variable[16] = CALL_symbol___String___to_symbol(variable[16])(variable[16]) /*String::to_symbol*/; + once_value_7 = variable[16]; + once_bool_7 = true; + } + /* Register variable[16]: Result */ + /* Register variable[15]: Result */ + variable[15] = TAG_Bool((variable[15] == variable[16]) || ((variable[15] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[15])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[15],variable[16])):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[15])(variable[15], variable[16]) /*Object::==*/))))); + } + /* Register variable[15]: Result */ + if (UNTAG_Bool(variable[15])) { /*if*/ + CALL_abstract_collection___SimpleCollection___add( variable[6] /*candidates*/)( variable[6] /*candidates*/, variable[12] /*gp*/) /*AbstractArray::add*/; + CALL_abstract_collection___SimpleCollection___add( variable[7] /*false_candidates*/)( variable[7] /*false_candidates*/, variable[12] /*gp*/) /*AbstractArray::add*/; } else { /*if*/ - ((array___AbstractArray___add_t)CALL( variable5 /*false_candidates*/,COLOR_abstract_collection___SimpleCollection___add))( variable5 /*false_candidates*/, variable9 /*gp*/) /*Array::add*/; + CALL_abstract_collection___SimpleCollection___add( variable[7] /*false_candidates*/)( variable[7] /*false_candidates*/, variable[12] /*gp*/) /*AbstractArray::add*/; } } - continue_4: while(0); - ((abstract_collection___Iterator___next_t)CALL(variable7,COLOR_abstract_collection___Iterator___next))(variable7) /*Iterator::next*/; + continue_6: while(0); + CALL_abstract_collection___Iterator___next(variable[9])(variable[9]) /*Iterator::next*/; } - break_4: while(0); - variable7 = ((array___AbstractArray___length_t)CALL( variable4 /*candidates*/,COLOR_abstract_collection___Collection___length))( variable4 /*candidates*/) /*Array::length*/; - variable7 = TAG_Bool((variable7)==( TAG_Int(1))); - if (UNTAG_Bool(variable7)) { /*if*/ - variable7 = ((abstract_collection___IndexedCollection___first_t)CALL( variable4 /*candidates*/,COLOR_abstract_collection___Collection___first))( variable4 /*candidates*/) /*Array::first*/; - variable3 = variable7; - goto return_label3; + break_6: while(0); + /* Register variable[9]: Result */ + variable[9] = CALL_abstract_collection___Collection___length( variable[6] /*candidates*/)( variable[6] /*candidates*/) /*AbstractArrayRead::length*/; + /* Register variable[9]: Result */ + variable[9] = TAG_Bool((variable[9])==( TAG_Int(1))); + if (UNTAG_Bool(variable[9])) { /*if*/ + /* Register variable[9]: Result */ + variable[9] = CALL_abstract_collection___Collection___first( variable[6] /*candidates*/)( variable[6] /*candidates*/) /*IndexedCollectionRead::first*/; + variable[4] = variable[9]; + goto return_label5; } else { /*if*/ - variable7 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*false_candidates*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*false_candidates*/) /*Array::is_empty*/; - if (UNTAG_Bool(variable7)) { /*if*/ - variable7 = NEW_string___String___init(); /*new String*/ - variable8 = NEW_string___String___with_native(BOX_NativeString("Fatal error: there is no available constrctor in "), TAG_Int(49)); /*new String*/ - variable9 = variable8; - ((string___String___append_t)CALL(variable7,COLOR_abstract_collection___IndexedCollection___append))(variable7, variable9) /*String::append*/; - variable10 = variable1 /*c*/; - variable10 = ((string___String___to_s_t)CALL(variable10,COLOR_string___Object___to_s))(variable10) /*String::to_s*/; - ((string___String___append_t)CALL(variable7,COLOR_abstract_collection___IndexedCollection___append))(variable7, variable10) /*String::append*/; - variable11 = NEW_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/ - variable12 = variable11; - ((string___String___append_t)CALL(variable7,COLOR_abstract_collection___IndexedCollection___append))(variable7, variable12) /*String::append*/; - ((syntax_base___AbsSyntaxVisitor___warning_t)CALL( variable3 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___warning))( variable3 /*v*/, variable0 /*n*/, variable7) /*TypingVisitor::warning*/; - variable3 = NIT_NULL /*null*/; - goto return_label3; + /* Register variable[9]: Result */ + variable[9] = CALL_abstract_collection___Collection___length( variable[6] /*candidates*/)( variable[6] /*candidates*/) /*AbstractArrayRead::length*/; + /* Register variable[9]: Result */ + variable[9] = TAG_Bool(UNTAG_Int(variable[9])>UNTAG_Int( TAG_Int(0))); + if (UNTAG_Bool(variable[9])) { /*if*/ + /* Register variable[9]: Local variable */ + /* Register variable[10]: Result */ + variable[10] = NEW_Array_array___Array___init() /*new Array[String]*/; + variable[9] = variable[10]; + /* Register variable[10]: For iterator */ + variable[10] = CALL_abstract_collection___Collection___iterator( variable[6] /*candidates*/)( variable[6] /*candidates*/) /*AbstractArrayRead::iterator*/; + while (true) { /*for*/ + /* Register variable[11]: For 'is_ok' result */ + variable[11] = CALL_abstract_collection___Iterator___is_ok(variable[10])(variable[10]) /*ArrayIterator::is_ok*/; + if (!UNTAG_Bool(variable[11])) break; /*for*/ + variable[11] = CALL_abstract_collection___Iterator___item(variable[10])(variable[10]) /*ArrayIterator::item*/ /* Ensure var: For item*/; + /* Register variable[12]: Local variable */ + variable[12] = variable[11]; + variable[13] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/; + /* Register variable[14]: Once String constant */ + if (once_value_10 != NIT_NULL) variable[14] = once_value_10; + else { + variable[14] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/; + once_value_10 = variable[14]; + } + /* Register variable[14]: Result */ + /* Ensure var variable[14]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13], variable[14]) /*AbstractArray::add*/; + /* Register variable[14]: Result */ + variable[14] = CALL_abstractmetamodel___MMLocalProperty___full_name( variable[12] /*p*/)( variable[12] /*p*/) /*MMLocalProperty::full_name*/; + /* Ensure var variable[14]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13], variable[14]) /*AbstractArray::add*/; + /* Register variable[14]: Once String constant */ + if (once_value_11 != NIT_NULL) variable[14] = once_value_11; + else { + variable[14] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/; + once_value_11 = variable[14]; + } + /* Register variable[14]: Result */ + /* Ensure var variable[14]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13], variable[14]) /*AbstractArray::add*/; + /* Register variable[14]: Result */ + variable[14] = CALL_static_type___MMLocalProperty___signature( variable[12] /*p*/)( variable[12] /*p*/) /*MMLocalProperty::signature*/; + /* Ensure var variable[14]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13], CALL_string___Object___to_s(variable[14])(variable[14]) /*Object::to_s*/) /*AbstractArray::add*/; + /* Register variable[14]: Once String constant */ + if (once_value_12 != NIT_NULL) variable[14] = once_value_12; + else { + variable[14] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/; + once_value_12 = variable[14]; + } + /* Register variable[14]: Result */ + /* Ensure var variable[14]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13], variable[14]) /*AbstractArray::add*/; + /* Register variable[13]: Result */ + variable[13] = CALL_string___Object___to_s(variable[13])(variable[13]) /*Object::to_s*/; + CALL_abstract_collection___SimpleCollection___add( variable[9] /*a*/)( variable[9] /*a*/, variable[13]) /*AbstractArray::add*/; + continue_9: while(0); + CALL_abstract_collection___Iterator___next(variable[10])(variable[10]) /*ArrayIterator::next*/; + } + break_9: while(0); + variable[10] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/; + /* Register variable[11]: Once String constant */ + if (once_value_13 != NIT_NULL) variable[11] = once_value_13; + else { + variable[11] = NEW_String_string___String___with_native(BOX_NativeString("Error: Conflicting default constructor to call for "), TAG_Int(51)) /*new String*/; + once_value_13 = variable[11]; + } + /* Register variable[11]: Result */ + /* Ensure var variable[11]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/; + variable[11] = variable[2] /*c*/ /* Ensure var: super-string element*/; + CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], CALL_string___Object___to_s(variable[11])(variable[11]) /*Object::to_s*/) /*AbstractArray::add*/; + /* Register variable[11]: Once String constant */ + if (once_value_14 != NIT_NULL) variable[11] = once_value_14; + else { + variable[11] = NEW_String_string___String___with_native(BOX_NativeString(": "), TAG_Int(2)) /*new String*/; + once_value_14 = variable[11]; + } + /* Register variable[11]: Result */ + /* Ensure var variable[11]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/; + /* Register variable[11]: Once String constant */ + if (once_value_15 != NIT_NULL) variable[11] = once_value_15; + else { + variable[11] = NEW_String_string___String___with_native(BOX_NativeString(", "), TAG_Int(2)) /*new String*/; + once_value_15 = variable[11]; + } + /* Register variable[11]: Result */ + /* Register variable[11]: Result */ + variable[11] = CALL_string___Collection___join( variable[9] /*a*/)( variable[9] /*a*/, variable[11]) /*Collection::join*/; + /* Ensure var variable[11]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/; + /* Register variable[11]: Once String constant */ + if (once_value_16 != NIT_NULL) variable[11] = once_value_16; + else { + variable[11] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/; + once_value_16 = variable[11]; + } + /* Register variable[11]: Result */ + /* Ensure var variable[11]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/; + /* Register variable[10]: Result */ + variable[10] = CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/; + CALL_syntax_base___AbsSyntaxVisitor___error( variable[5] /*v*/)( variable[5] /*v*/, variable[1] /*n*/, variable[10]) /*AbsSyntaxVisitor::error*/; + variable[4] = NIT_NULL /*null*/; + goto return_label5; } else { /*if*/ - variable7 = NEW_string___String___init(); /*new String*/ - variable8 = NEW_string___String___with_native(BOX_NativeString("Error: Conflicting default constructor to call for "), TAG_Int(51)); /*new String*/ - variable9 = variable8; - ((string___String___append_t)CALL(variable7,COLOR_abstract_collection___IndexedCollection___append))(variable7, variable9) /*String::append*/; - variable10 = variable1 /*c*/; - variable10 = ((string___String___to_s_t)CALL(variable10,COLOR_string___Object___to_s))(variable10) /*String::to_s*/; - ((string___String___append_t)CALL(variable7,COLOR_abstract_collection___IndexedCollection___append))(variable7, variable10) /*String::append*/; - variable11 = NEW_string___String___with_native(BOX_NativeString(": "), TAG_Int(2)); /*new String*/ - variable12 = variable11; - ((string___String___append_t)CALL(variable7,COLOR_abstract_collection___IndexedCollection___append))(variable7, variable12) /*String::append*/; - variable13 = NEW_string___String___with_native(BOX_NativeString(", "), TAG_Int(2)); /*new String*/ - variable13 = ((string___Collection___join_t)CALL( variable5 /*false_candidates*/,COLOR_string___Collection___join))( variable5 /*false_candidates*/, variable13) /*Array::join*/; - variable14 = variable13; - ((string___String___append_t)CALL(variable7,COLOR_abstract_collection___IndexedCollection___append))(variable7, variable14) /*String::append*/; - variable15 = NEW_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/ - variable16 = variable15; - ((string___String___append_t)CALL(variable7,COLOR_abstract_collection___IndexedCollection___append))(variable7, variable16) /*String::append*/; - ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable3 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable3 /*v*/, variable0 /*n*/, variable7) /*TypingVisitor::error*/; - variable3 = NIT_NULL /*null*/; - goto return_label3; + /* Register variable[9]: Result */ + variable[9] = CALL_abstract_collection___Collection___length( variable[7] /*false_candidates*/)( variable[7] /*false_candidates*/) /*AbstractArrayRead::length*/; + /* Register variable[9]: Result */ + variable[9] = TAG_Bool(UNTAG_Int(variable[9])>UNTAG_Int( TAG_Int(0))); + if (UNTAG_Bool(variable[9])) { /*if*/ + /* Register variable[9]: Local variable */ + /* Register variable[10]: Result */ + variable[10] = NEW_Array_array___Array___init() /*new Array[String]*/; + variable[9] = variable[10]; + /* Register variable[10]: For iterator */ + variable[10] = CALL_abstract_collection___Collection___iterator( variable[7] /*false_candidates*/)( variable[7] /*false_candidates*/) /*AbstractArrayRead::iterator*/; + while (true) { /*for*/ + /* Register variable[11]: For 'is_ok' result */ + variable[11] = CALL_abstract_collection___Iterator___is_ok(variable[10])(variable[10]) /*ArrayIterator::is_ok*/; + if (!UNTAG_Bool(variable[11])) break; /*for*/ + variable[11] = CALL_abstract_collection___Iterator___item(variable[10])(variable[10]) /*ArrayIterator::item*/ /* Ensure var: For item*/; + /* Register variable[12]: Local variable */ + variable[12] = variable[11]; + variable[13] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/; + /* Register variable[14]: Once String constant */ + if (once_value_18 != NIT_NULL) variable[14] = once_value_18; + else { + variable[14] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/; + once_value_18 = variable[14]; + } + /* Register variable[14]: Result */ + /* Ensure var variable[14]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13], variable[14]) /*AbstractArray::add*/; + /* Register variable[14]: Result */ + variable[14] = CALL_abstractmetamodel___MMLocalProperty___full_name( variable[12] /*p*/)( variable[12] /*p*/) /*MMLocalProperty::full_name*/; + /* Ensure var variable[14]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13], variable[14]) /*AbstractArray::add*/; + /* Register variable[14]: Once String constant */ + if (once_value_19 != NIT_NULL) variable[14] = once_value_19; + else { + variable[14] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/; + once_value_19 = variable[14]; + } + /* Register variable[14]: Result */ + /* Ensure var variable[14]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13], variable[14]) /*AbstractArray::add*/; + /* Register variable[14]: Result */ + variable[14] = CALL_static_type___MMLocalProperty___signature( variable[12] /*p*/)( variable[12] /*p*/) /*MMLocalProperty::signature*/; + /* Ensure var variable[14]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13], CALL_string___Object___to_s(variable[14])(variable[14]) /*Object::to_s*/) /*AbstractArray::add*/; + /* Register variable[14]: Once String constant */ + if (once_value_20 != NIT_NULL) variable[14] = once_value_20; + else { + variable[14] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/; + once_value_20 = variable[14]; + } + /* Register variable[14]: Result */ + /* Ensure var variable[14]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13], variable[14]) /*AbstractArray::add*/; + /* Register variable[13]: Result */ + variable[13] = CALL_string___Object___to_s(variable[13])(variable[13]) /*Object::to_s*/; + CALL_abstract_collection___SimpleCollection___add( variable[9] /*a*/)( variable[9] /*a*/, variable[13]) /*AbstractArray::add*/; + continue_17: while(0); + CALL_abstract_collection___Iterator___next(variable[10])(variable[10]) /*ArrayIterator::next*/; + } + break_17: while(0); + variable[10] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/; + /* Register variable[11]: Once String constant */ + if (once_value_21 != NIT_NULL) variable[11] = once_value_21; + else { + variable[11] = NEW_String_string___String___with_native(BOX_NativeString("Error: there is no available compatible constrctor in "), TAG_Int(54)) /*new String*/; + once_value_21 = variable[11]; + } + /* Register variable[11]: Result */ + /* Ensure var variable[11]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/; + variable[11] = variable[2] /*c*/ /* Ensure var: super-string element*/; + CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], CALL_string___Object___to_s(variable[11])(variable[11]) /*Object::to_s*/) /*AbstractArray::add*/; + /* Register variable[11]: Once String constant */ + if (once_value_22 != NIT_NULL) variable[11] = once_value_22; + else { + variable[11] = NEW_String_string___String___with_native(BOX_NativeString(". Discarded candidates are "), TAG_Int(27)) /*new String*/; + once_value_22 = variable[11]; + } + /* Register variable[11]: Result */ + /* Ensure var variable[11]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/; + /* Register variable[11]: Once String constant */ + if (once_value_23 != NIT_NULL) variable[11] = once_value_23; + else { + variable[11] = NEW_String_string___String___with_native(BOX_NativeString(", "), TAG_Int(2)) /*new String*/; + once_value_23 = variable[11]; + } + /* Register variable[11]: Result */ + /* Register variable[11]: Result */ + variable[11] = CALL_string___Collection___join( variable[9] /*a*/)( variable[9] /*a*/, variable[11]) /*Collection::join*/; + /* Ensure var variable[11]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/; + /* Register variable[11]: Once String constant */ + if (once_value_24 != NIT_NULL) variable[11] = once_value_24; + else { + variable[11] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/; + once_value_24 = variable[11]; + } + /* Register variable[11]: Result */ + /* Ensure var variable[11]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/; + /* Register variable[10]: Result */ + variable[10] = CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/; + CALL_syntax_base___AbsSyntaxVisitor___error( variable[5] /*v*/)( variable[5] /*v*/, variable[1] /*n*/, variable[10]) /*AbsSyntaxVisitor::error*/; + variable[4] = NIT_NULL /*null*/; + goto return_label5; + } else { /*if*/ + variable[9] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/; + /* Register variable[10]: Once String constant */ + if (once_value_25 != NIT_NULL) variable[10] = once_value_25; + else { + variable[10] = NEW_String_string___String___with_native(BOX_NativeString("Error: there is no available compatible constrctor in "), TAG_Int(54)) /*new String*/; + once_value_25 = variable[10]; + } + /* Register variable[10]: Result */ + /* Ensure var variable[10]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/; + variable[10] = variable[2] /*c*/ /* Ensure var: super-string element*/; + CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/) /*AbstractArray::add*/; + /* Register variable[10]: Once String constant */ + if (once_value_26 != NIT_NULL) variable[10] = once_value_26; + else { + variable[10] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/; + once_value_26 = variable[10]; + } + /* Register variable[10]: Result */ + /* Ensure var variable[10]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/; + /* Register variable[9]: Result */ + variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/; + CALL_syntax_base___AbsSyntaxVisitor___error( variable[5] /*v*/)( variable[5] /*v*/, variable[1] /*n*/, variable[9]) /*AbsSyntaxVisitor::error*/; + variable[4] = NIT_NULL /*null*/; + goto return_label5; + } } } - return_label3: while(false); - tracehead = trace.prev; - return variable3; -} -val_t typing___VariableContext_____bra(val_t self, val_t param0) { - struct trace_t trace = {NULL, LOCATE_typing___VariableContext_____bra, 104}; - val_t variable0; - val_t variable1; - trace.prev = tracehead; tracehead = &trace; - variable0 = param0; - variable1 = ATTR_typing___VariableContext____dico( self) /*VariableContext::_dico*/; - variable1 = ((abstract_collection___Map___has_key_t)CALL(variable1,COLOR_abstract_collection___Map___has_key))(variable1, variable0 /*s*/) /*Map::has_key*/; - if (UNTAG_Bool(variable1)) { /*if*/ - variable1 = ATTR_typing___VariableContext____dico( self) /*VariableContext::_dico*/; - variable1 = ((abstract_collection___Map_____bra_t)CALL(variable1,COLOR_abstract_collection___Map_____bra))(variable1, variable0 /*s*/) /*Map::[]*/; - goto return_label5; - } else { /*if*/ - variable1 = NIT_NULL /*null*/; - goto return_label5; - } return_label5: while(false); tracehead = trace.prev; - return variable1; + return variable[4]; } -void typing___VariableContext___add(val_t self, val_t param0) { - struct trace_t trace = {NULL, LOCATE_typing___VariableContext___add, 115}; - val_t variable0; - val_t variable1; - val_t variable2; - trace.prev = tracehead; tracehead = &trace; - variable0 = param0; - variable1 = ATTR_typing___VariableContext____dico( self) /*VariableContext::_dico*/; - variable2 = ((syntax_base___Variable___name_t)CALL( variable0 /*v*/,COLOR_syntax_base___Variable___name))( variable0 /*v*/) /*Variable::name*/; - ((abstract_collection___Map_____braeq_t)CALL(variable1,COLOR_abstract_collection___Map_____braeq))(variable1, variable2, variable0 /*v*/) /*Map::[]=*/; +void typing___PNode___accept_typing(val_t self, val_t param0) { + struct trace_t trace = {NULL, NULL, 140, LOCATE_typing___PNode___accept_typing}; + val_t variable[3]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Method return value and escape marker */ + CALL_syntax_base___PNode___accept_abs_syntax_visitor(variable[0])(variable[0], variable[1] /*v*/) /*PNode::accept_abs_syntax_visitor*/; + CALL_typing___PNode___after_typing(variable[0])(variable[0], variable[1] /*v*/) /*PNode::after_typing*/; + return_label27: while(false); tracehead = trace.prev; return; } -val_t typing___VariableContext___stype(val_t self, val_t param0) { - struct trace_t trace = {NULL, LOCATE_typing___VariableContext___stype, 122}; - val_t variable0; - val_t variable1; - trace.prev = tracehead; tracehead = &trace; - variable0 = param0; - variable1 = ((syntax_base___Variable___stype_t)CALL( variable0 /*v*/,COLOR_syntax_base___Variable___stype))( variable0 /*v*/) /*Variable::stype*/; - goto return_label7; - return_label7: while(false); - tracehead = trace.prev; - return variable1; -} -val_t typing___VariableContext___sub(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___VariableContext___sub, 132}; - val_t variable0; - trace.prev = tracehead; tracehead = &trace; - variable0 = NEW_typing___SubVariableContext___with( self, NIT_NULL /*null*/, NIT_NULL /*null*/); /*new SubVariableContext*/ - goto return_label8; - return_label8: while(false); - tracehead = trace.prev; - return variable0; -} -val_t typing___VariableContext___sub_with(val_t self, val_t param0, val_t param1) { - struct trace_t trace = {NULL, LOCATE_typing___VariableContext___sub_with, 138}; - val_t variable0; - val_t variable1; - val_t variable2; - trace.prev = tracehead; tracehead = &trace; - variable0 = param0; - variable1 = param1; - variable2 = NEW_typing___SubVariableContext___with( self, variable0 /*v*/, variable1 /*t*/); /*new SubVariableContext*/ - goto return_label9; - return_label9: while(false); - tracehead = trace.prev; - return variable2; -} -void typing___VariableContext___init(val_t self, int* init_table) { - struct trace_t trace = {NULL, LOCATE_typing___VariableContext___init, 144}; - val_t variable0; - trace.prev = tracehead; tracehead = &trace; - if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_VariableContext].i]) return; - variable0 = NEW_hash___HashMap___init(); /*new HashMap[Symbol, Variable]*/ - ATTR_typing___VariableContext____dico( self) /*VariableContext::_dico*/ = variable0; - init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_VariableContext].i] = 1; +void typing___PNode___after_typing(val_t self, val_t param0) { + struct trace_t trace = {NULL, NULL, 145, LOCATE_typing___PNode___after_typing}; + val_t variable[3]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Method return value and escape marker */ + return_label28: while(false); tracehead = trace.prev; return; } -val_t typing___SubVariableContext___prev(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___SubVariableContext___prev, 152}; - trace.prev = tracehead; tracehead = &trace; - tracehead = trace.prev; - return ATTR_typing___SubVariableContext____prev( self) /*SubVariableContext::_prev*/; -} -val_t typing___SubVariableContext_____bra(val_t self, val_t param0) { - struct trace_t trace = {NULL, LOCATE_typing___SubVariableContext_____bra, 156}; - val_t variable0; - val_t variable1; - trace.prev = tracehead; tracehead = &trace; - variable0 = param0; - variable1 = ATTR_typing___VariableContext____dico( self) /*SubVariableContext::_dico*/; - variable1 = ((abstract_collection___Map___has_key_t)CALL(variable1,COLOR_abstract_collection___Map___has_key))(variable1, variable0 /*s*/) /*Map::has_key*/; - if (UNTAG_Bool(variable1)) { /*if*/ - variable1 = ATTR_typing___VariableContext____dico( self) /*SubVariableContext::_dico*/; - variable1 = ((abstract_collection___Map_____bra_t)CALL(variable1,COLOR_abstract_collection___Map_____bra))(variable1, variable0 /*s*/) /*Map::[]*/; - goto return_label11; - } else { /*if*/ - variable1 = ((typing___SubVariableContext___prev_t)CALL( self,COLOR_typing___SubVariableContext___prev))( self) /*SubVariableContext::prev*/; - variable1 = ((typing___VariableContext_____bra_t)CALL(variable1,COLOR_typing___VariableContext_____bra))(variable1, variable0 /*s*/) /*VariableContext::[]*/; - goto return_label11; - } - return_label11: while(false); - tracehead = trace.prev; - return variable1; -} -val_t typing___SubVariableContext___stype(val_t self, val_t param0) { - struct trace_t trace = {NULL, LOCATE_typing___SubVariableContext___stype, 165}; - val_t variable0; - val_t variable1; - trace.prev = tracehead; tracehead = &trace; - variable0 = param0; - variable1 = ATTR_typing___SubVariableContext____variable( self) /*SubVariableContext::_variable*/; - variable1 = TAG_Bool((variable1 == variable0 /*v*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, variable0 /*v*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1, variable0 /*v*/) /*Variable::==*/))))); - if (UNTAG_Bool(variable1)) { /*if*/ - variable1 = ATTR_typing___SubVariableContext____var_type( self) /*SubVariableContext::_var_type*/; - goto return_label12; +void typing___PClassdef___accept_typing(val_t self, val_t param0) { + struct trace_t trace = {NULL, NULL, 149, LOCATE_typing___PClassdef___accept_typing}; + static val_t once_value_30 = NIT_NULL; /* Once value for string variable[3]*/ + val_t variable[5]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Method return value and escape marker */ + /* Register variable[3]: Once String constant */ + if (once_value_30 != NIT_NULL) variable[3] = once_value_30; + else { + variable[3] = NEW_String_string___String___with_native(BOX_NativeString("self"), TAG_Int(4)) /*new String*/; + once_value_30 = variable[3]; } - variable1 = ((typing___SubVariableContext___prev_t)CALL( self,COLOR_typing___SubVariableContext___prev))( self) /*SubVariableContext::prev*/; - variable1 = ((typing___VariableContext___stype_t)CALL(variable1,COLOR_typing___VariableContext___stype))(variable1, variable0 /*v*/) /*VariableContext::stype*/; - goto return_label12; - return_label12: while(false); - tracehead = trace.prev; - return variable1; -} -void typing___SubVariableContext___with(val_t self, val_t param0, val_t param1, val_t param2, int* init_table) { - struct trace_t trace = {NULL, LOCATE_typing___SubVariableContext___with, 173}; - val_t variable0; - val_t variable1; - val_t variable2; - trace.prev = tracehead; tracehead = &trace; - variable0 = param0; - variable1 = param1; - variable2 = param2; - if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_SubVariableContext].i]) return; - ((typing___VariableContext___init_t)CALL( self,COLOR_typing___VariableContext___init))( self, init_table /*YYY*/) /*SubVariableContext::init*/; - ATTR_typing___SubVariableContext____prev( self) /*SubVariableContext::_prev*/ = variable0 /*p*/; - ATTR_typing___SubVariableContext____variable( self) /*SubVariableContext::_variable*/ = variable1 /*v*/; - ATTR_typing___SubVariableContext____var_type( self) /*SubVariableContext::_var_type*/ = variable2 /*t*/; - init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_SubVariableContext].i] = 1; + /* Register variable[3]: Result */ + /* Register variable[3]: Result */ + variable[3] = CALL_symbol___String___to_symbol(variable[3])(variable[3]) /*String::to_symbol*/; + /* Register variable[3]: Result */ + variable[3] = NEW_ParamVariable_syntax_base___ParamVariable___init(variable[3], variable[0]) /*new ParamVariable*/; + CALL_typing___TypingVisitor___self_var__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*TypingVisitor::self_var=*/; + /* Register variable[3]: Result */ + variable[3] = CALL_typing___TypingVisitor___self_var( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::self_var*/; + /* Register variable[4]: Result */ + variable[4] = CALL_syntax_base___PClassdef___local_class(variable[0])(variable[0]) /*PClassdef::local_class*/; + /* Register variable[4]: Result */ + variable[4] = CALL_static_type___MMLocalClass___get_type(variable[4])(variable[4]) /*MMLocalClass::get_type*/; + CALL_syntax_base___Variable___stype__eq(variable[3])(variable[3], variable[4]) /*Variable::stype=*/; + CALL_SUPER_typing___PClassdef___accept_typing(variable[0])(variable[0], variable[1]) /*super PClassdef::accept_typing*/; + return_label29: while(false); tracehead = trace.prev; return; } -void typing___PNode___accept_typing(val_t self, val_t param0) { - struct trace_t trace = {NULL, LOCATE_typing___PNode___accept_typing, 186}; - val_t variable0; - trace.prev = tracehead; tracehead = &trace; - variable0 = param0; - ((syntax_base___PNode___accept_abs_syntax_visitor_t)CALL( self,COLOR_syntax_base___PNode___accept_abs_syntax_visitor))( self, variable0 /*v*/) /*PNode::accept_abs_syntax_visitor*/; - ((typing___PNode___after_typing_t)CALL( self,COLOR_typing___PNode___after_typing))( self, variable0 /*v*/) /*PNode::after_typing*/; +void typing___AAttrPropdef___accept_typing(val_t self, val_t param0) { + struct trace_t trace = {NULL, NULL, 158, LOCATE_typing___AAttrPropdef___accept_typing}; + val_t variable[5]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Method return value and escape marker */ + CALL_SUPER_typing___AAttrPropdef___accept_typing(variable[0])(variable[0], variable[1]) /*super AAttrPropdef::accept_typing*/; + /* Register variable[3]: Result */ + variable[3] = CALL_parser_nodes___AAttrPropdef___n_expr(variable[0])(variable[0]) /*AAttrPropdef::n_expr*/; + /* Register variable[3]: Result */ + variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] == NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], NIT_NULL /*null*/) /*Object::==*/))))))); + if (UNTAG_Bool(variable[3])) { /*if*/ + /* Register variable[3]: Result */ + variable[3] = CALL_parser_nodes___AAttrPropdef___n_expr(variable[0])(variable[0]) /*AAttrPropdef::n_expr*/; + /* Register variable[4]: Result */ + variable[4] = CALL_syntax_base___AAttrPropdef___prop(variable[0])(variable[0]) /*AAttrPropdef::prop*/; + /* Register variable[4]: Result */ + variable[4] = CALL_static_type___MMLocalProperty___signature(variable[4])(variable[4]) /*MMLocalProperty::signature*/; + /* Register variable[4]: Result */ + variable[4] = CALL_static_type___MMSignature___return_type(variable[4])(variable[4]) /*MMSignature::return_type*/; + CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[3], variable[4]) /*AbsSyntaxVisitor::check_conform_expr*/; + } + return_label31: while(false); tracehead = trace.prev; return; } -void typing___PNode___after_typing(val_t self, val_t param0) { - struct trace_t trace = {NULL, LOCATE_typing___PNode___after_typing, 191}; - val_t variable0; +val_t typing___AMethPropdef___self_var(val_t self) { + struct trace_t trace = {NULL, NULL, 168, LOCATE_typing___AMethPropdef___self_var}; + val_t *variable = NULL; + struct WBT_ **closurevariable = NULL; trace.prev = tracehead; tracehead = &trace; - variable0 = param0; + trace.file = LOCATE_typing; tracehead = trace.prev; - return; + return ATTR_typing___AMethPropdef____self_var( self) /*AMethPropdef::_self_var*/; } -void typing___PClassdef___accept_typing(val_t self, val_t param0) { - struct trace_t trace = {NULL, LOCATE_typing___PClassdef___accept_typing, 195}; - val_t variable0; - val_t variable1; - trace.prev = tracehead; tracehead = &trace; - variable0 = param0; - variable1 = ((syntax_base___PClassdef___local_class_t)CALL( self,COLOR_syntax_base___PClassdef___local_class))( self) /*PClassdef::local_class*/; - variable1 = ((genericity___MMLocalClass___get_type_t)CALL(variable1,COLOR_static_type___MMLocalClass___get_type))(variable1) /*MMSrcLocalClass::get_type*/; - ((typing___TypingVisitor___self_type__eq_t)CALL( variable0 /*v*/,COLOR_typing___TypingVisitor___self_type__eq))( variable0 /*v*/, variable1) /*TypingVisitor::self_type=*/; - ((typing___PClassdef___accept_typing_t)CALL( self,COLOR_SUPER_typing___PClassdef___accept_typing))( self, param0) /*super PClassdef::accept_typing*/; +void typing___AMethPropdef___accept_typing(val_t self, val_t param0) { + struct trace_t trace = {NULL, NULL, 169, LOCATE_typing___AMethPropdef___accept_typing}; + val_t variable[4]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Method return value and escape marker */ + /* Register variable[3]: Result */ + variable[3] = NEW_RootVariableContext_control_flow___RootVariableContext___init( variable[1] /*v*/, variable[0]) /*new RootVariableContext*/; + CALL_typing___TypingVisitor___variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*TypingVisitor::variable_ctx=*/; + /* Register variable[3]: Result */ + variable[3] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/; + CALL_typing___TypingVisitor___base_variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*TypingVisitor::base_variable_ctx=*/; + /* Register variable[3]: Result */ + variable[3] = CALL_typing___TypingVisitor___self_var( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::self_var*/; + ATTR_typing___AMethPropdef____self_var(variable[0]) /*AMethPropdef::_self_var*/ = variable[3]; + CALL_SUPER_typing___AMethPropdef___accept_typing(variable[0])(variable[0], variable[1]) /*super AMethPropdef::accept_typing*/; + return_label32: while(false); tracehead = trace.prev; return; } -void typing___AAttrPropdef___accept_typing(val_t self, val_t param0) { - struct trace_t trace = {NULL, LOCATE_typing___AAttrPropdef___accept_typing, 203}; - val_t variable0; - val_t variable1; - val_t variable2; - val_t variable3; - trace.prev = tracehead; tracehead = &trace; - variable0 = param0; - ((typing___AAttrPropdef___accept_typing_t)CALL( self,COLOR_SUPER_typing___AAttrPropdef___accept_typing))( self, param0) /*super AAttrPropdef::accept_typing*/; - variable1 = ((parser_nodes___AAttrPropdef___n_expr_t)CALL( self,COLOR_parser_nodes___AAttrPropdef___n_expr))( self) /*AAttrPropdef::n_expr*/; - variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 == NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1, NIT_NULL /*null*/) /*PExpr::==*/))))))); - if (UNTAG_Bool(variable1)) { /*if*/ - variable1 = ((parser_nodes___AAttrPropdef___n_expr_t)CALL( self,COLOR_parser_nodes___AAttrPropdef___n_expr))( self) /*AAttrPropdef::n_expr*/; - variable2 = ((parser_nodes___AAttrPropdef___n_expr_t)CALL( self,COLOR_parser_nodes___AAttrPropdef___n_expr))( self) /*AAttrPropdef::n_expr*/; - variable2 = ((typing___PExpr___stype_t)CALL(variable2,COLOR_syntax_base___PExpr___stype))(variable2) /*PExpr::stype*/; - variable3 = ((syntax_base___AAttrPropdef___prop_t)CALL( self,COLOR_syntax_base___AAttrPropdef___prop))( self) /*AAttrPropdef::prop*/; - variable3 = ((genericity___MMLocalProperty___signature_t)CALL(variable3,COLOR_static_type___MMLocalProperty___signature))(variable3) /*MMSrcAttribute::signature*/; - variable3 = ((static_type___MMSignature___return_type_t)CALL(variable3,COLOR_static_type___MMSignature___return_type))(variable3) /*MMSignature::return_type*/; - ((syntax_base___AbsSyntaxVisitor___check_conform_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___check_conform))( variable0 /*v*/, variable1, variable2, variable3) /*TypingVisitor::check_conform*/; +void typing___AConcreteMethPropdef___accept_typing(val_t self, val_t param0) { + struct trace_t trace = {NULL, NULL, 179, LOCATE_typing___AConcreteMethPropdef___accept_typing}; + static val_t once_value_34 = NIT_NULL; /* Once value for string variable[3]*/ + val_t variable[4]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Method return value and escape marker */ + CALL_SUPER_typing___AConcreteMethPropdef___accept_typing(variable[0])(variable[0], variable[1]) /*super AConcreteMethPropdef::accept_typing*/; + /* Register variable[3]: Result */ + variable[3] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/; + /* Register variable[3]: Result */ + variable[3] = CALL_control_flow___VariableContext___unreash(variable[3])(variable[3]) /*VariableContext::unreash*/; + /* Register variable[3]: Result */ + variable[3] = TAG_Bool((variable[3])==( TAG_Bool(false))); + /* Ensure var variable[3]: Left 'and' operand*/ + if (UNTAG_Bool(variable[3])) { /* and */ + /* Register variable[3]: Result */ + variable[3] = CALL_syntax_base___AMethPropdef___method(variable[0])(variable[0]) /*AMethPropdef::method*/; + /* Register variable[3]: Result */ + variable[3] = CALL_static_type___MMLocalProperty___signature(variable[3])(variable[3]) /*MMLocalProperty::signature*/; + /* Register variable[3]: Result */ + variable[3] = CALL_static_type___MMSignature___return_type(variable[3])(variable[3]) /*MMSignature::return_type*/; + /* Register variable[3]: Result */ + variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] == NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], NIT_NULL /*null*/) /*Object::==*/))))))); + } + /* Register variable[3]: Result */ + if (UNTAG_Bool(variable[3])) { /*if*/ + /* Register variable[3]: Once String constant */ + if (once_value_34 != NIT_NULL) variable[3] = once_value_34; + else { + variable[3] = NEW_String_string___String___with_native(BOX_NativeString("Control error: Reached end of function (a 'return' with a value was expected)."), TAG_Int(78)) /*new String*/; + once_value_34 = variable[3]; + } + /* Register variable[3]: Result */ + CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[3]) /*AbsSyntaxVisitor::error*/; } + return_label33: while(false); tracehead = trace.prev; return; } -void typing___AMethPropdef___accept_typing(val_t self, val_t param0) { - struct trace_t trace = {NULL, LOCATE_typing___AMethPropdef___accept_typing, 213}; - val_t variable0; - val_t variable1; - trace.prev = tracehead; tracehead = &trace; - variable0 = param0; - variable1 = NEW_typing___VariableContext___init(); /*new VariableContext*/ - ((typing___TypingVisitor___variable_ctx__eq_t)CALL( variable0 /*v*/,COLOR_typing___TypingVisitor___variable_ctx__eq))( variable0 /*v*/, variable1) /*TypingVisitor::variable_ctx=*/; - ((typing___AMethPropdef___accept_typing_t)CALL( self,COLOR_SUPER_typing___AMethPropdef___accept_typing))( self, param0) /*super AMethPropdef::accept_typing*/; +void typing___AConcreteInitPropdef___accept_typing(val_t self, val_t param0) { + struct trace_t trace = {NULL, NULL, 191, LOCATE_typing___AConcreteInitPropdef___accept_typing}; + val_t variable[14]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Method return value and escape marker */ + /* Register variable[3]: Result */ + variable[3] = CALL_parser_nodes___AConcreteMethPropdef___n_block(variable[0])(variable[0]) /*AConcreteMethPropdef::n_block*/; + CALL_typing___TypingVisitor___top_block__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*TypingVisitor::top_block=*/; + /* Register variable[3]: Result */ + variable[3] = CALL_typing___AConcreteInitPropdef___explicit_super_init_calls(variable[0])(variable[0]) /*AConcreteInitPropdef::explicit_super_init_calls*/; + CALL_typing___TypingVisitor___explicit_super_init_calls__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*TypingVisitor::explicit_super_init_calls=*/; + CALL_typing___TypingVisitor___explicit_other_init_call__eq( variable[1] /*v*/)( variable[1] /*v*/, TAG_Bool(false)) /*TypingVisitor::explicit_other_init_call=*/; + CALL_SUPER_typing___AConcreteInitPropdef___accept_typing(variable[0])(variable[0], variable[1]) /*super AConcreteInitPropdef::accept_typing*/; + /* Register variable[3]: Result */ + variable[3] = CALL_typing___TypingVisitor___explicit_other_init_call( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::explicit_other_init_call*/; + /* Ensure var variable[3]: Left 'or' operand*/ + if (!UNTAG_Bool(variable[3])) { /* or */ + /* Register variable[3]: Result */ + variable[3] = CALL_syntax_base___AMethPropdef___method(variable[0])(variable[0]) /*AMethPropdef::method*/; + /* Register variable[3]: Result */ + variable[3] = CALL_abstractmetamodel___MMLocalProperty___global(variable[3])(variable[3]) /*MMLocalProperty::global*/; + /* Register variable[3]: Result */ + variable[3] = CALL_abstractmetamodel___MMGlobalProperty___intro(variable[3])(variable[3]) /*MMGlobalProperty::intro*/; + /* Register variable[4]: Result */ + variable[4] = CALL_syntax_base___AMethPropdef___method(variable[0])(variable[0]) /*AMethPropdef::method*/; + /* Register variable[3]: Result */ + variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] == variable[4]) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3],variable[4])):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], variable[4]) /*Object::==*/))))))); + } + /* Register variable[3]: Result */ + if (UNTAG_Bool(variable[3])) { /*if*/ + } else { /*if*/ + /* Register variable[3]: Local variable */ + variable[3] = TAG_Int(0); + /* Register variable[4]: Local variable */ + /* Register variable[5]: Result */ + variable[5] = CALL_typing___AConcreteInitPropdef___explicit_super_init_calls(variable[0])(variable[0]) /*AConcreteInitPropdef::explicit_super_init_calls*/; + /* Register variable[5]: Result */ + variable[5] = CALL_abstract_collection___Collection___length(variable[5])(variable[5]) /*AbstractArrayRead::length*/; + variable[4] = variable[5]; + /* Register variable[5]: Local variable */ + variable[5] = NIT_NULL /*null*/; + /* Register variable[6]: Local variable */ + variable[6] = NIT_NULL /*null*/; + /* Register variable[7]: Result */ + variable[7] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)=UNTAG_Int( TAG_Int(0))); + /* Ensure var variable[11]: Left 'and' operand*/ + if (UNTAG_Bool(variable[11])) { /* and */ + /* Register variable[11]: Result */ + variable[11] = ATTR_array___AbstractArrayRead____length(variable[8]) /*AbstractArrayRead::_length*/; + /* Register variable[11]: Result */ + variable[11] = TAG_Bool(UNTAG_Int( variable[9] /*index*/)=UNTAG_Int( TAG_Int(0))); + /* Ensure var variable[13]: Left 'and' operand*/ + if (UNTAG_Bool(variable[13])) { /* and */ + /* Register variable[13]: Result */ + variable[13] = ATTR_array___AbstractArrayRead____length(variable[10]) /*AbstractArrayRead::_length*/; + /* Register variable[13]: Result */ + variable[13] = TAG_Bool(UNTAG_Int( variable[11] /*index*/)=UNTAG_Int( TAG_Int(0))); + /* Ensure var variable[13]: Left 'and' operand*/ + if (UNTAG_Bool(variable[13])) { /* and */ + /* Register variable[13]: Result */ + variable[13] = ATTR_array___AbstractArrayRead____length(variable[10]) /*AbstractArrayRead::_length*/; + /* Register variable[13]: Result */ + variable[13] = TAG_Bool(UNTAG_Int( variable[11] /*index*/)=UNTAG_Int( TAG_Int(0))); - variable8 = variable7; - if (UNTAG_Bool(variable8)) { /* and */ - variable8 = variable5; - variable8 = ATTR_array___AbstractArray____length(variable8) /*Array::_length*/; - variable8 = TAG_Bool(UNTAG_Int( variable6 /*index*/)=UNTAG_Int( TAG_Int(0))); - variable10 = variable9; - if (UNTAG_Bool(variable10)) { /* and */ - variable10 = variable7; - variable10 = ATTR_array___AbstractArray____length(variable10) /*Array::_length*/; - variable10 = TAG_Bool(UNTAG_Int( variable8 /*index*/)=UNTAG_Int( TAG_Int(0))); - variable10 = variable9; - if (UNTAG_Bool(variable10)) { /* and */ - variable10 = variable7; - variable10 = ATTR_array___AbstractArray____length(variable10) /*Array::_length*/; - variable10 = TAG_Bool(UNTAG_Int( variable8 /*index*/)UNTAG_Int( TAG_Int(1))); - if (UNTAG_Bool(variable3)) { /*if*/ - variable3 = NEW_string___String___init(); /*new String*/ - variable4 = NEW_string___String___with_native(BOX_NativeString("Error: Conflicting contructors named "), TAG_Int(37)); /*new String*/ - variable5 = variable4; - ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable5) /*String::append*/; - variable6 = ((syntax_base___AbsSyntaxVisitor___local_property_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___local_property))( variable0 /*v*/) /*TypingVisitor::local_property*/; - variable6 = ((abstractmetamodel___MMLocalProperty___name_t)CALL(variable6,COLOR_abstractmetamodel___MMLocalProperty___name))(variable6) /*MMSrcLocalProperty::name*/; - variable7 = variable6; - variable7 = ((string___String___to_s_t)CALL(variable7,COLOR_string___Object___to_s))(variable7) /*String::to_s*/; - ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable7) /*String::append*/; - variable8 = NEW_string___String___with_native(BOX_NativeString(" in superclasses: "), TAG_Int(18)); /*new String*/ - variable9 = variable8; - ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable9) /*String::append*/; - variable10 = NEW_string___String___with_native(BOX_NativeString(", "), TAG_Int(2)); /*new String*/ - variable10 = ((string___Collection___join_t)CALL( variable1 /*precs*/,COLOR_string___Collection___join))( variable1 /*precs*/, variable10) /*Array::join*/; - variable11 = variable10; - ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable11) /*String::append*/; - variable12 = NEW_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/ - variable13 = variable12; - ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable13) /*String::append*/; - ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable0 /*v*/, self, variable3) /*TypingVisitor::error*/; - goto return_label67; + /* Register variable[5]: Result */ + variable[5] = CALL_abstract_collection___Collection___length( variable[3] /*precs*/)( variable[3] /*precs*/) /*AbstractArrayRead::length*/; + /* Register variable[5]: Result */ + variable[5] = TAG_Bool(UNTAG_Int(variable[5])>UNTAG_Int( TAG_Int(1))); + if (UNTAG_Bool(variable[5])) { /*if*/ + variable[5] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/; + /* Register variable[6]: Once String constant */ + if (once_value_159 != NIT_NULL) variable[6] = once_value_159; + else { + variable[6] = NEW_String_string___String___with_native(BOX_NativeString("Error: Conflicting contructors named "), TAG_Int(37)) /*new String*/; + once_value_159 = variable[6]; + } + /* Register variable[6]: Result */ + /* Ensure var variable[6]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/; + /* Register variable[6]: Result */ + variable[6] = CALL_syntax_base___AbsSyntaxVisitor___local_property( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_property*/; + /* Register variable[6]: Result */ + variable[6] = CALL_abstractmetamodel___MMLocalProperty___name(variable[6])(variable[6]) /*MMLocalProperty::name*/; + /* Ensure var variable[6]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/) /*AbstractArray::add*/; + /* Register variable[6]: Once String constant */ + if (once_value_160 != NIT_NULL) variable[6] = once_value_160; + else { + variable[6] = NEW_String_string___String___with_native(BOX_NativeString(" in superclasses: "), TAG_Int(18)) /*new String*/; + once_value_160 = variable[6]; + } + /* Register variable[6]: Result */ + /* Ensure var variable[6]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/; + /* Register variable[6]: Once String constant */ + if (once_value_161 != NIT_NULL) variable[6] = once_value_161; + else { + variable[6] = NEW_String_string___String___with_native(BOX_NativeString(", "), TAG_Int(2)) /*new String*/; + once_value_161 = variable[6]; + } + /* Register variable[6]: Result */ + /* Register variable[6]: Result */ + variable[6] = CALL_string___Collection___join( variable[3] /*precs*/)( variable[3] /*precs*/, variable[6]) /*Collection::join*/; + /* Ensure var variable[6]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/; + /* Register variable[6]: Once String constant */ + if (once_value_162 != NIT_NULL) variable[6] = once_value_162; + else { + variable[6] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/; + once_value_162 = variable[6]; + } + /* Register variable[6]: Result */ + /* Ensure var variable[6]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/; + /* Register variable[5]: Result */ + variable[5] = CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/; + CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[5]) /*AbsSyntaxVisitor::error*/; + goto return_label152; } } - variable4 = ((abstract_collection___IndexedCollection___first_t)CALL( variable2 /*base_precs*/,COLOR_abstract_collection___Collection___first))( variable2 /*base_precs*/) /*Array::first*/; - variable3 = variable4; - variable4 = TAG_Bool(( variable3 /*p*/==NIT_NULL) || VAL_ISA( variable3 /*p*/, COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/; - if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_typing___ASuperExpr___after_typing, 684); nit_exit(1);} - ATTR_typing___ASuperExpr____init_in_superclass( self) /*ASuperExpr::_init_in_superclass*/ = variable3 /*p*/; - ((typing___ASuperInitCall___register_super_init_call_t)CALL( self,COLOR_typing___ASuperInitCall___register_super_init_call))( self, variable0 /*v*/, variable3 /*p*/) /*ASuperExpr::register_super_init_call*/; - variable4 = ((parser_nodes___ASuperExpr___n_args_t)CALL( self,COLOR_parser_nodes___ASuperExpr___n_args))( self) /*ASuperExpr::n_args*/; - variable4 = ((list___List___length_t)CALL(variable4,COLOR_abstract_collection___Collection___length))(variable4) /*List::length*/; - variable4 = TAG_Bool(UNTAG_Int(variable4)>UNTAG_Int( TAG_Int(0))); - if (UNTAG_Bool(variable4)) { /*if*/ - variable4 = ((parser_nodes___ASuperExpr___n_args_t)CALL( self,COLOR_parser_nodes___ASuperExpr___n_args))( self) /*ASuperExpr::n_args*/; - variable4 = ((array___Collection___to_a_t)CALL(variable4,COLOR_array___Collection___to_a))(variable4) /*List::to_a*/; - variable4 = ((typing___AAbsSendExpr___process_signature_t)CALL( self,COLOR_typing___AAbsSendExpr___process_signature))( self, variable0 /*v*/, variable3 /*p*/, TAG_Bool(true), variable4) /*ASuperExpr::process_signature*/; - ATTR_typing___AAbsSendExpr____arguments( self) /*ASuperExpr::_arguments*/ = variable4; + /* Register variable[5]: Local variable */ + /* Register variable[6]: Result */ + variable[6] = CALL_abstract_collection___Collection___first( variable[4] /*base_precs*/)( variable[4] /*base_precs*/) /*IndexedCollectionRead::first*/; + variable[5] = variable[6]; + /* Register variable[6]: Result */ + variable[6] = TAG_Bool(( variable[5] /*p*/==NIT_NULL) || VAL_ISA( variable[5] /*p*/, COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/; + if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_typing___ASuperExpr___after_typing, LOCATE_typing, 908); nit_exit(1);} + ATTR_typing___ASuperExpr____init_in_superclass(variable[0]) /*ASuperExpr::_init_in_superclass*/ = variable[5] /*p*/; + CALL_typing___ASuperInitCall___register_super_init_call(variable[0])(variable[0], variable[1] /*v*/, variable[5] /*p*/) /*ASuperInitCall::register_super_init_call*/; + /* Register variable[6]: Result */ + variable[6] = CALL_parser_nodes___ASuperExpr___n_args(variable[0])(variable[0]) /*ASuperExpr::n_args*/; + /* Register variable[6]: Result */ + variable[6] = CALL_abstract_collection___Collection___length(variable[6])(variable[6]) /*List::length*/; + /* Register variable[6]: Result */ + variable[6] = TAG_Bool(UNTAG_Int(variable[6])>UNTAG_Int( TAG_Int(0))); + if (UNTAG_Bool(variable[6])) { /*if*/ + /* Register variable[6]: Local variable */ + /* Register variable[7]: Result */ + variable[7] = CALL_typing___TypingVisitor___self_var( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::self_var*/; + /* Register variable[7]: Result */ + variable[7] = CALL_syntax_base___Variable___stype(variable[7])(variable[7]) /*Variable::stype*/; + /* Register variable[7]: Result */ + variable[7] = CALL_typing___AAbsSendExpr___get_signature(variable[0])(variable[0], variable[1] /*v*/, variable[7], variable[5] /*p*/, TAG_Bool(true)) /*AAbsSendExpr::get_signature*/; + variable[6] = variable[7]; + /* Register variable[7]: Result */ + variable[7] = CALL_abstractmetamodel___MMLocalProperty___name( variable[5] /*p*/)( variable[5] /*p*/) /*MMLocalProperty::name*/; + /* Register variable[8]: Result */ + variable[8] = CALL_parser_nodes___ASuperExpr___n_args(variable[0])(variable[0]) /*ASuperExpr::n_args*/; + /* Register variable[8]: Result */ + variable[8] = CALL_array___Collection___to_a(variable[8])(variable[8]) /*Collection::to_a*/; + /* Register variable[7]: Result */ + variable[7] = CALL_typing___AAbsAbsSendExpr___process_signature(variable[0])(variable[0], variable[1] /*v*/, variable[6] /*signature*/, variable[7], variable[8]) /*AAbsAbsSendExpr::process_signature*/; + ATTR_typing___AAbsAbsSendExpr____arguments(variable[0]) /*AAbsAbsSendExpr::_arguments*/ = variable[7]; } } else { /*if*/ - variable2 = NEW_string___String___init(); /*new String*/ - variable3 = NEW_string___String___with_native(BOX_NativeString("Error: No super method to call for "), TAG_Int(35)); /*new String*/ - variable4 = variable3; - ((string___String___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2, variable4) /*String::append*/; - variable5 = ((syntax_base___AbsSyntaxVisitor___local_property_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___local_property))( variable0 /*v*/) /*TypingVisitor::local_property*/; - variable6 = variable5; - variable6 = ((string___String___to_s_t)CALL(variable6,COLOR_string___Object___to_s))(variable6) /*String::to_s*/; - ((string___String___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2, variable6) /*String::append*/; - variable7 = NEW_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/ - variable8 = variable7; - ((string___String___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2, variable8) /*String::append*/; - ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable0 /*v*/, self, variable2) /*TypingVisitor::error*/; - goto return_label67; - } - } - variable2 = ((abstract_collection___IndexedCollection___first_t)CALL( variable1 /*precs*/,COLOR_abstract_collection___Collection___first))( variable1 /*precs*/) /*Array::first*/; - variable2 = ((genericity___MMLocalProperty___signature_t)CALL(variable2,COLOR_static_type___MMLocalProperty___signature))(variable2) /*MMLocalProperty::signature*/; - variable2 = ((static_type___MMSignature___return_type_t)CALL(variable2,COLOR_static_type___MMSignature___return_type))(variable2) /*MMSignature::return_type*/; - variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable2 == NIT_NULL /*null*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2, NIT_NULL /*null*/) /*MMType::==*/))))))); - if (UNTAG_Bool(variable2)) { /*if*/ - variable3 = NEW_array___Array___init(); /*new Array[MMType]*/ - variable2 = variable3; - variable3 = NIT_NULL /*decl variable stype*/; - variable4 = ((array___AbstractArray___iterator_t)CALL( variable1 /*precs*/,COLOR_abstract_collection___Collection___iterator))( variable1 /*precs*/) /*Array::iterator*/; + variable[4] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/; + /* Register variable[5]: Once String constant */ + if (once_value_163 != NIT_NULL) variable[5] = once_value_163; + else { + variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Error: No super method to call for "), TAG_Int(35)) /*new String*/; + once_value_163 = variable[5]; + } + /* Register variable[5]: Result */ + /* Ensure var variable[5]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/; + /* Register variable[5]: Result */ + variable[5] = CALL_syntax_base___AbsSyntaxVisitor___local_property( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_property*/; + /* Ensure var variable[5]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/) /*AbstractArray::add*/; + /* Register variable[5]: Once String constant */ + if (once_value_164 != NIT_NULL) variable[5] = once_value_164; + else { + variable[5] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/; + once_value_164 = variable[5]; + } + /* Register variable[5]: Result */ + /* Ensure var variable[5]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/; + /* Register variable[4]: Result */ + variable[4] = CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/; + CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[4]) /*AbsSyntaxVisitor::error*/; + goto return_label152; + } + } + /* Register variable[4]: Result */ + variable[4] = CALL_abstract_collection___Collection___first( variable[3] /*precs*/)( variable[3] /*precs*/) /*IndexedCollectionRead::first*/; + /* Register variable[5]: Result */ + variable[5] = CALL_typing___TypingVisitor___self_var( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::self_var*/; + /* Register variable[5]: Result */ + variable[5] = CALL_syntax_base___Variable___stype(variable[5])(variable[5]) /*Variable::stype*/; + /* Register variable[4]: Result */ + variable[4] = CALL_static_type___MMLocalProperty___signature_for(variable[4])(variable[4], variable[5]) /*MMLocalProperty::signature_for*/; + /* Register variable[4]: Result */ + variable[4] = CALL_static_type___MMSignature___return_type(variable[4])(variable[4]) /*MMSignature::return_type*/; + /* Register variable[4]: Result */ + variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[4] == NIT_NULL /*null*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4], NIT_NULL /*null*/) /*Object::==*/))))))); + if (UNTAG_Bool(variable[4])) { /*if*/ + /* Register variable[4]: Local variable */ + /* Register variable[5]: Result */ + variable[5] = NEW_Array_array___Array___init() /*new Array[MMType]*/; + variable[4] = variable[5]; + /* Register variable[5]: Local variable */ + variable[5] = NIT_NULL /*null*/; + /* Register variable[6]: For iterator */ + variable[6] = CALL_abstract_collection___Collection___iterator( variable[3] /*precs*/)( variable[3] /*precs*/) /*AbstractArrayRead::iterator*/; while (true) { /*for*/ - variable5 = ((array___ArrayIterator___is_ok_t)CALL(variable4,COLOR_abstract_collection___Iterator___is_ok))(variable4) /*ArrayIterator::is_ok*/; - if (!UNTAG_Bool(variable5)) break; /*for*/ - variable5 = ((array___ArrayIterator___item_t)CALL(variable4,COLOR_abstract_collection___Iterator___item))(variable4) /*ArrayIterator::item*/; - variable6 = TAG_Bool(( variable5 /*prop*/==NIT_NULL) || VAL_ISA( variable5 /*prop*/, COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/; - if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_typing___ASuperExpr___after_typing, 699); nit_exit(1);} - variable7 = ((genericity___MMLocalProperty___signature_t)CALL( variable5 /*prop*/,COLOR_static_type___MMLocalProperty___signature))( variable5 /*prop*/) /*MMMethod::signature*/; - variable7 = ((static_type___MMSignature___return_type_t)CALL(variable7,COLOR_static_type___MMSignature___return_type))(variable7) /*MMSignature::return_type*/; - variable8 = ((syntax_base___AbsSyntaxVisitor___module_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___module))( variable0 /*v*/) /*TypingVisitor::module*/; - variable7 = ((static_type___MMType___for_module_t)CALL(variable7,COLOR_static_type___MMType___for_module))(variable7, variable8) /*MMType::for_module*/; - variable8 = ((syntax_base___AbsSyntaxVisitor___local_property_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___local_property))( variable0 /*v*/) /*TypingVisitor::local_property*/; - variable8 = ((genericity___MMLocalProperty___signature_t)CALL(variable8,COLOR_static_type___MMLocalProperty___signature))(variable8) /*MMSrcLocalProperty::signature*/; - variable8 = ((static_type___MMSignature___recv_t)CALL(variable8,COLOR_static_type___MMSignature___recv))(variable8) /*MMSignature::recv*/; - variable7 = ((static_type___MMType___adapt_to_t)CALL(variable7,COLOR_static_type___MMType___adapt_to))(variable7, variable8) /*MMType::adapt_to*/; - variable6 = variable7; - ((array___AbstractArray___add_t)CALL( variable2 /*stypes*/,COLOR_abstract_collection___SimpleCollection___add))( variable2 /*stypes*/, variable6 /*t*/) /*Array::add*/; - variable7 = TAG_Bool(( variable3 /*stype*/ == NIT_NULL /*null*/) || (( variable3 /*stype*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*stype*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*stype*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*stype*/,COLOR_kernel___Object_____eqeq))( variable3 /*stype*/, NIT_NULL /*null*/) /*MMType::==*/))))); - variable8 = variable7; - if (!UNTAG_Bool(variable8)) { /* or */ - variable8 = ((static_type___MMType_____l_t)CALL( variable3 /*stype*/,COLOR_static_type___MMType_____l))( variable3 /*stype*/, variable6 /*t*/) /*MMType::<*/; - } - variable7 = variable8; - if (UNTAG_Bool(variable7)) { /*if*/ - variable3 = variable6 /*t*/ /*stype=*/; - } - continue_69: while(0); - ((array___ArrayIterator___next_t)CALL(variable4,COLOR_abstract_collection___Iterator___next))(variable4) /*ArrayIterator::next*/; - } - break_69: while(0); - variable4 = ((array___AbstractArray___iterator_t)CALL( variable2 /*stypes*/,COLOR_abstract_collection___Collection___iterator))( variable2 /*stypes*/) /*Array::iterator*/; + /* Register variable[7]: For 'is_ok' result */ + variable[7] = CALL_abstract_collection___Iterator___is_ok(variable[6])(variable[6]) /*ArrayIterator::is_ok*/; + if (!UNTAG_Bool(variable[7])) break; /*for*/ + variable[7] = CALL_abstract_collection___Iterator___item(variable[6])(variable[6]) /*ArrayIterator::item*/ /* Ensure var: For item*/; + /* Register variable[8]: Local variable */ + variable[8] = variable[7]; + /* Register variable[9]: Result */ + variable[9] = TAG_Bool(( variable[8] /*prop*/==NIT_NULL) || VAL_ISA( variable[8] /*prop*/, COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/; + if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_typing___ASuperExpr___after_typing, LOCATE_typing, 924); nit_exit(1);} + /* Register variable[9]: Local variable */ + /* Register variable[10]: Result */ + variable[10] = CALL_typing___TypingVisitor___self_var( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::self_var*/; + /* Register variable[10]: Result */ + variable[10] = CALL_syntax_base___Variable___stype(variable[10])(variable[10]) /*Variable::stype*/; + /* Register variable[10]: Result */ + variable[10] = CALL_static_type___MMLocalProperty___signature_for( variable[8] /*prop*/)( variable[8] /*prop*/, variable[10]) /*MMLocalProperty::signature_for*/; + /* Register variable[10]: Result */ + variable[10] = CALL_static_type___MMSignature___return_type(variable[10])(variable[10]) /*MMSignature::return_type*/; + /* Register variable[11]: Result */ + variable[11] = CALL_syntax_base___AbsSyntaxVisitor___module( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::module*/; + /* Register variable[10]: Result */ + variable[10] = CALL_static_type___MMType___for_module(variable[10])(variable[10], variable[11]) /*MMType::for_module*/; + /* Register variable[11]: Result */ + variable[11] = CALL_syntax_base___AbsSyntaxVisitor___local_property( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_property*/; + /* Register variable[11]: Result */ + variable[11] = CALL_static_type___MMLocalProperty___signature(variable[11])(variable[11]) /*MMLocalProperty::signature*/; + /* Register variable[11]: Result */ + variable[11] = CALL_static_type___MMSignature___recv(variable[11])(variable[11]) /*MMSignature::recv*/; + /* Register variable[10]: Result */ + variable[10] = CALL_static_type___MMType___adapt_to(variable[10])(variable[10], variable[11]) /*MMType::adapt_to*/; + variable[9] = variable[10]; + CALL_abstract_collection___SimpleCollection___add( variable[4] /*stypes*/)( variable[4] /*stypes*/, variable[9] /*t*/) /*AbstractArray::add*/; + /* Register variable[10]: Result */ + variable[10] = TAG_Bool(( variable[5] /*stype*/ == NIT_NULL /*null*/) || (( variable[5] /*stype*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*stype*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*stype*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*stype*/)( variable[5] /*stype*/, NIT_NULL /*null*/) /*Object::==*/))))); + /* Ensure var variable[10]: Left 'or' operand*/ + if (!UNTAG_Bool(variable[10])) { /* or */ + /* Register variable[10]: Result */ + variable[10] = CALL_static_type___MMType_____l( variable[5] /*stype*/)( variable[5] /*stype*/, variable[9] /*t*/) /*MMType::<*/; + } + /* Register variable[10]: Result */ + if (UNTAG_Bool(variable[10])) { /*if*/ + variable[5] = variable[9] /*t*/ /*stype=*/; + } + continue_165: while(0); + CALL_abstract_collection___Iterator___next(variable[6])(variable[6]) /*ArrayIterator::next*/; + } + break_165: while(0); + /* Register variable[6]: For iterator */ + variable[6] = CALL_abstract_collection___Collection___iterator( variable[4] /*stypes*/)( variable[4] /*stypes*/) /*AbstractArrayRead::iterator*/; while (true) { /*for*/ - variable5 = ((array___ArrayIterator___is_ok_t)CALL(variable4,COLOR_abstract_collection___Iterator___is_ok))(variable4) /*ArrayIterator::is_ok*/; - if (!UNTAG_Bool(variable5)) break; /*for*/ - variable5 = ((array___ArrayIterator___item_t)CALL(variable4,COLOR_abstract_collection___Iterator___item))(variable4) /*ArrayIterator::item*/; - ((syntax_base___AbsSyntaxVisitor___check_conform_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___check_conform))( variable0 /*v*/, self, variable5 /*t*/, variable3 /*stype*/) /*TypingVisitor::check_conform*/; - continue_70: while(0); - ((array___ArrayIterator___next_t)CALL(variable4,COLOR_abstract_collection___Iterator___next))(variable4) /*ArrayIterator::next*/; + /* Register variable[7]: For 'is_ok' result */ + variable[7] = CALL_abstract_collection___Iterator___is_ok(variable[6])(variable[6]) /*ArrayIterator::is_ok*/; + if (!UNTAG_Bool(variable[7])) break; /*for*/ + variable[7] = CALL_abstract_collection___Iterator___item(variable[6])(variable[6]) /*ArrayIterator::item*/ /* Ensure var: For item*/; + /* Register variable[8]: Local variable */ + variable[8] = variable[7]; + CALL_syntax_base___AbsSyntaxVisitor___check_conform( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[8] /*t*/, variable[5] /*stype*/) /*AbsSyntaxVisitor::check_conform*/; + continue_166: while(0); + CALL_abstract_collection___Iterator___next(variable[6])(variable[6]) /*ArrayIterator::next*/; } - break_70: while(0); - ATTR_typing___PExpr____stype( self) /*ASuperExpr::_stype*/ = variable3 /*stype*/; + break_166: while(0); + ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[5] /*stype*/; } - variable3 = ((syntax_base___AbsSyntaxVisitor___local_property_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___local_property))( variable0 /*v*/) /*TypingVisitor::local_property*/; - variable2 = variable3; - variable3 = TAG_Bool(( variable2 /*p*/==NIT_NULL) || VAL_ISA( variable2 /*p*/, COLOR_MMSrcMethod, ID_MMSrcMethod)) /*cast MMSrcMethod*/; - if (!UNTAG_Bool(variable3)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_typing___ASuperExpr___after_typing, 712); nit_exit(1);} - ATTR_typing___AAbsSendExpr____prop( self) /*ASuperExpr::_prop*/ = variable2 /*p*/; - return_label67: while(false); + /* Register variable[4]: Local variable */ + /* Register variable[5]: Result */ + variable[5] = CALL_syntax_base___AbsSyntaxVisitor___local_property( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_property*/; + variable[4] = variable[5]; + /* Register variable[5]: Result */ + variable[5] = TAG_Bool(( variable[4] /*p*/==NIT_NULL) || VAL_ISA( variable[4] /*p*/, COLOR_MMSrcMethod, ID_MMSrcMethod)) /*cast MMSrcMethod*/; + if (!UNTAG_Bool(variable[5])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_typing___ASuperExpr___after_typing, LOCATE_typing, 937); nit_exit(1);} + ATTR_typing___AAbsSendExpr____prop(variable[0]) /*AAbsSendExpr::_prop*/ = variable[4] /*p*/; + ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true); + return_label152: while(false); tracehead = trace.prev; return; } +val_t typing___ASuperExpr___init_in_superclass(val_t self) { + struct trace_t trace = {NULL, NULL, 884, LOCATE_typing___ASuperExpr___init_in_superclass}; + val_t *variable = NULL; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + tracehead = trace.prev; + return ATTR_typing___ASuperExpr____init_in_superclass( self) /*ASuperExpr::_init_in_superclass*/; +} val_t typing___AAttrFormExpr___prop(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___AAttrFormExpr___prop, 718}; + struct trace_t trace = {NULL, NULL, 944, LOCATE_typing___AAttrFormExpr___prop}; + val_t *variable = NULL; + struct WBT_ **closurevariable = NULL; trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; tracehead = trace.prev; return ATTR_typing___AAttrFormExpr____prop( self) /*AAttrFormExpr::_prop*/; } +val_t typing___AAttrFormExpr___attr_type(val_t self) { + struct trace_t trace = {NULL, NULL, 947, LOCATE_typing___AAttrFormExpr___attr_type}; + val_t *variable = NULL; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + tracehead = trace.prev; + return ATTR_typing___AAttrFormExpr____attr_type( self) /*AAttrFormExpr::_attr_type*/; +} void typing___AAttrFormExpr___do_typing(val_t self, val_t param0) { - struct trace_t trace = {NULL, LOCATE_typing___AAttrFormExpr___do_typing, 721}; - val_t variable0; - val_t variable1; - val_t variable2; - val_t variable3; - val_t variable4; - val_t variable5; - val_t variable6; - val_t variable7; - val_t variable8; - val_t variable9; - val_t variable10; - val_t variable11; - val_t variable12; - val_t variable13; - val_t variable14; - val_t variable15; - val_t variable16; - val_t variable17; - trace.prev = tracehead; tracehead = &trace; - variable0 = param0; - variable2 = ((parser_nodes___AAttrFormExpr___n_expr_t)CALL( self,COLOR_parser_nodes___AAttrFormExpr___n_expr))( self) /*AAttrFormExpr::n_expr*/; - variable2 = ((typing___PExpr___stype_t)CALL(variable2,COLOR_syntax_base___PExpr___stype))(variable2) /*PExpr::stype*/; - variable1 = variable2; - variable2 = TAG_Bool(( variable1 /*type_recv*/ == NIT_NULL /*null*/) || (( variable1 /*type_recv*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*type_recv*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*type_recv*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*type_recv*/,COLOR_kernel___Object_____eqeq))( variable1 /*type_recv*/, NIT_NULL /*null*/) /*MMType::==*/))))); - if (UNTAG_Bool(variable2)) { /*if*/ - goto return_label71; + struct trace_t trace = {NULL, NULL, 950, LOCATE_typing___AAttrFormExpr___do_typing}; + static val_t once_value_168 = NIT_NULL; /* Once value for string variable[7]*/ + static val_t once_value_169 = NIT_NULL; /* Once value for string variable[7]*/ + static val_t once_value_170 = NIT_NULL; /* Once value for string variable[7]*/ + static val_t once_value_171 = NIT_NULL; /* Once value for string variable[8]*/ + static val_t once_value_172 = NIT_NULL; /* Once value for string variable[8]*/ + static val_t once_value_173 = NIT_NULL; /* Once value for string variable[8]*/ + static val_t once_value_174 = NIT_NULL; /* Once value for string variable[8]*/ + val_t variable[9]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Method return value and escape marker */ + /* Register variable[3]: Result */ + variable[3] = CALL_parser_nodes___AAttrFormExpr___n_expr(variable[0])(variable[0]) /*AAttrFormExpr::n_expr*/; + /* Register variable[3]: Result */ + variable[3] = CALL_syntax_base___AbsSyntaxVisitor___check_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*AbsSyntaxVisitor::check_expr*/; + if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[3])))) { /*if*/ + goto return_label167; } - variable3 = ((parser_nodes___AAttrFormExpr___n_id_t)CALL( self,COLOR_parser_nodes___AAttrFormExpr___n_id))( self) /*AAttrFormExpr::n_id*/; - variable3 = ((syntax_base___Token___to_symbol_t)CALL(variable3,COLOR_syntax_base___Token___to_symbol))(variable3) /*TAttrid::to_symbol*/; - variable2 = variable3; - variable4 = ((static_type___MMType___select_attribute_t)CALL( variable1 /*type_recv*/,COLOR_static_type___MMType___select_attribute))( variable1 /*type_recv*/, variable2 /*name*/) /*MMType::select_attribute*/; - variable3 = variable4; - variable4 = TAG_Bool(( variable3 /*prop*/ == NIT_NULL /*null*/) || (( variable3 /*prop*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*prop*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*prop*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*prop*/,COLOR_kernel___Object_____eqeq))( variable3 /*prop*/, NIT_NULL /*null*/) /*MMAttribute::==*/))))); - if (UNTAG_Bool(variable4)) { /*if*/ - variable4 = NEW_string___String___init(); /*new String*/ - variable5 = NEW_string___String___with_native(BOX_NativeString("Error: Attribute "), TAG_Int(17)); /*new String*/ - variable6 = variable5; - ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable6) /*String::append*/; - variable7 = variable2 /*name*/; - variable7 = ((string___String___to_s_t)CALL(variable7,COLOR_string___Object___to_s))(variable7) /*String::to_s*/; - ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable7) /*String::append*/; - variable8 = NEW_string___String___with_native(BOX_NativeString(" doesn't exists in "), TAG_Int(19)); /*new String*/ - variable9 = variable8; - ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable9) /*String::append*/; - variable10 = variable1 /*type_recv*/; - variable10 = ((string___String___to_s_t)CALL(variable10,COLOR_string___Object___to_s))(variable10) /*String::to_s*/; - ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable10) /*String::append*/; - variable11 = NEW_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/ - variable12 = variable11; - ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable12) /*String::append*/; - ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable0 /*v*/, self, variable4) /*TypingVisitor::error*/; - goto return_label71; - } else { /*if*/ - variable4 = ((syntax_base___AbsSyntaxVisitor___module_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___module))( variable0 /*v*/) /*TypingVisitor::module*/; - variable5 = ((abstractmetamodel___MMLocalProperty___global_t)CALL( variable3 /*prop*/,COLOR_abstractmetamodel___MMLocalProperty___global))( variable3 /*prop*/) /*MMAttribute::global*/; - variable5 = ((abstractmetamodel___MMGlobalProperty___local_class_t)CALL(variable5,COLOR_abstractmetamodel___MMGlobalProperty___local_class))(variable5) /*MMGlobalProperty::local_class*/; - variable5 = ((abstractmetamodel___MMLocalClass___module_t)CALL(variable5,COLOR_abstractmetamodel___MMLocalClass___module))(variable5) /*MMLocalClass::module*/; - variable4 = ((abstractmetamodel___MMModule___visibility_for_t)CALL(variable4,COLOR_abstractmetamodel___MMModule___visibility_for))(variable4, variable5) /*MMSrcModule::visibility_for*/; - variable4 = TAG_Bool(UNTAG_Int(variable4)UNTAG_Int( TAG_Int(1))); - if (UNTAG_Bool(variable6)) { /*if*/ - variable6 = NEW_string___String___init(); /*new String*/ - variable7 = NEW_string___String___with_native(BOX_NativeString("Error: Ambigous method name '"), TAG_Int(29)); /*new String*/ - variable8 = variable7; - ((string___String___append_t)CALL(variable6,COLOR_abstract_collection___IndexedCollection___append))(variable6, variable8) /*String::append*/; - variable9 = variable3 /*name*/; - variable9 = ((string___String___to_s_t)CALL(variable9,COLOR_string___Object___to_s))(variable9) /*String::to_s*/; - ((string___String___append_t)CALL(variable6,COLOR_abstract_collection___IndexedCollection___append))(variable6, variable9) /*String::append*/; - variable10 = NEW_string___String___with_native(BOX_NativeString("' for "), TAG_Int(6)); /*new String*/ - variable11 = variable10; - ((string___String___append_t)CALL(variable6,COLOR_abstract_collection___IndexedCollection___append))(variable6, variable11) /*String::append*/; - variable12 = NEW_string___String___with_native(BOX_NativeString(", "), TAG_Int(2)); /*new String*/ - variable12 = ((string___Collection___join_t)CALL( variable5 /*props*/,COLOR_string___Collection___join))( variable5 /*props*/, variable12) /*Array::join*/; - variable13 = variable12; - ((string___String___append_t)CALL(variable6,COLOR_abstract_collection___IndexedCollection___append))(variable6, variable13) /*String::append*/; - variable14 = NEW_string___String___with_native(BOX_NativeString(". Use explicit designation."), TAG_Int(27)); /*new String*/ - variable15 = variable14; - ((string___String___append_t)CALL(variable6,COLOR_abstract_collection___IndexedCollection___append))(variable6, variable15) /*String::append*/; - ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable0 /*v*/, self, variable6) /*TypingVisitor::error*/; - variable4 = NIT_NULL /*null*/; - goto return_label76; - } else { /*if*/ - variable6 = ((array___AbstractArray___length_t)CALL( variable5 /*props*/,COLOR_abstract_collection___Collection___length))( variable5 /*props*/) /*Array::length*/; - variable6 = TAG_Bool((variable6)==( TAG_Int(1))); - if (UNTAG_Bool(variable6)) { /*if*/ - variable7 = ((abstract_collection___IndexedCollection___first_t)CALL( variable5 /*props*/,COLOR_abstract_collection___Collection___first))( variable5 /*props*/) /*Array::first*/; - variable7 = ((abstractmetamodel___MMLocalProperty___global_t)CALL(variable7,COLOR_abstractmetamodel___MMLocalProperty___global))(variable7) /*MMLocalProperty::global*/; - variable7 = ((static_type___MMType___select_property_t)CALL( variable1 /*type_recv*/,COLOR_static_type___MMType___select_property))( variable1 /*type_recv*/, variable7) /*MMType::select_property*/; - variable6 = variable7; - variable7 = TAG_Bool(( variable6 /*p*/==NIT_NULL) || VAL_ISA( variable6 /*p*/, COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/; - if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_typing___AAbsSendExpr___get_property, 803); nit_exit(1);} - variable4 = variable6 /*p*/ /*prop=*/; - } - } - } - variable5 = TAG_Bool(( variable4 /*prop*/ == NIT_NULL /*null*/) || (( variable4 /*prop*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*prop*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*prop*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*prop*/,COLOR_kernel___Object_____eqeq))( variable4 /*prop*/, NIT_NULL /*null*/) /*MMMethod::==*/))))); - if (UNTAG_Bool(variable5)) { /*if*/ - if (UNTAG_Bool( variable2 /*is_implicit_self*/)) { /*if*/ - variable5 = NEW_string___String___init(); /*new String*/ - variable6 = NEW_string___String___with_native(BOX_NativeString("Error: Method or variable '"), TAG_Int(27)); /*new String*/ - variable7 = variable6; - ((string___String___append_t)CALL(variable5,COLOR_abstract_collection___IndexedCollection___append))(variable5, variable7) /*String::append*/; - variable8 = variable3 /*name*/; - variable8 = ((string___String___to_s_t)CALL(variable8,COLOR_string___Object___to_s))(variable8) /*String::to_s*/; - ((string___String___append_t)CALL(variable5,COLOR_abstract_collection___IndexedCollection___append))(variable5, variable8) /*String::append*/; - variable9 = NEW_string___String___with_native(BOX_NativeString("' unknown in "), TAG_Int(13)); /*new String*/ - variable10 = variable9; - ((string___String___append_t)CALL(variable5,COLOR_abstract_collection___IndexedCollection___append))(variable5, variable10) /*String::append*/; - variable11 = variable1 /*type_recv*/; - variable11 = ((string___String___to_s_t)CALL(variable11,COLOR_string___Object___to_s))(variable11) /*String::to_s*/; - ((string___String___append_t)CALL(variable5,COLOR_abstract_collection___IndexedCollection___append))(variable5, variable11) /*String::append*/; - variable12 = NEW_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/ - variable13 = variable12; - ((string___String___append_t)CALL(variable5,COLOR_abstract_collection___IndexedCollection___append))(variable5, variable13) /*String::append*/; - ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable0 /*v*/, self, variable5) /*TypingVisitor::error*/; - } else { /*if*/ - variable5 = NEW_string___String___init(); /*new String*/ - variable6 = NEW_string___String___with_native(BOX_NativeString("Error: Method '"), TAG_Int(15)); /*new String*/ - variable7 = variable6; - ((string___String___append_t)CALL(variable5,COLOR_abstract_collection___IndexedCollection___append))(variable5, variable7) /*String::append*/; - variable8 = variable3 /*name*/; - variable8 = ((string___String___to_s_t)CALL(variable8,COLOR_string___Object___to_s))(variable8) /*String::to_s*/; - ((string___String___append_t)CALL(variable5,COLOR_abstract_collection___IndexedCollection___append))(variable5, variable8) /*String::append*/; - variable9 = NEW_string___String___with_native(BOX_NativeString("' doesn't exists in "), TAG_Int(20)); /*new String*/ - variable10 = variable9; - ((string___String___append_t)CALL(variable5,COLOR_abstract_collection___IndexedCollection___append))(variable5, variable10) /*String::append*/; - variable11 = variable1 /*type_recv*/; - variable11 = ((string___String___to_s_t)CALL(variable11,COLOR_string___Object___to_s))(variable11) /*String::to_s*/; - ((string___String___append_t)CALL(variable5,COLOR_abstract_collection___IndexedCollection___append))(variable5, variable11) /*String::append*/; - variable12 = NEW_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/ - variable13 = variable12; - ((string___String___append_t)CALL(variable5,COLOR_abstract_collection___IndexedCollection___append))(variable5, variable13) /*String::append*/; - ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable0 /*v*/, self, variable5) /*TypingVisitor::error*/; - } - variable4 = NIT_NULL /*null*/; - goto return_label76; - } - variable4 = variable4 /*prop*/; - goto return_label76; - return_label76: while(false); - tracehead = trace.prev; - return variable4; -} -val_t typing___AAbsSendExpr___process_signature(val_t self, val_t param0, val_t param1, val_t param2, val_t param3) { - struct trace_t trace = {NULL, LOCATE_typing___AAbsSendExpr___process_signature, 819}; - val_t variable0; - val_t variable1; - val_t variable2; - val_t variable3; - val_t variable4; - val_t variable5; - val_t variable6; - val_t variable7; - val_t variable8; - val_t variable9; - val_t variable10; - val_t variable11; - val_t variable12; - val_t variable13; - val_t variable14; - val_t variable15; - val_t variable16; - val_t variable17; - val_t variable18; - val_t variable19; - trace.prev = tracehead; tracehead = &trace; - variable0 = param0; - variable1 = param1; - variable2 = param2; - variable3 = param3; - variable4 = ((abstractmetamodel___MMLocalProperty___global_t)CALL( variable1 /*prop*/,COLOR_abstractmetamodel___MMLocalProperty___global))( variable1 /*prop*/) /*MMMethod::global*/; - variable5 = ((syntax_base___AbsSyntaxVisitor___module_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___module))( variable0 /*v*/) /*TypingVisitor::module*/; - ((syntax_base___MMGlobalProperty___check_visibility_t)CALL(variable4,COLOR_syntax_base___MMGlobalProperty___check_visibility))(variable4, variable0 /*v*/, self, variable5, variable2 /*recv_is_self*/) /*MMGlobalProperty::check_visibility*/; - variable5 = ((genericity___MMLocalProperty___signature_t)CALL( variable1 /*prop*/,COLOR_static_type___MMLocalProperty___signature))( variable1 /*prop*/) /*MMMethod::signature*/; - variable4 = variable5; - variable6 = ((vararg___MMSignature___vararg_rank_t)CALL( variable4 /*psig*/,COLOR_vararg___MMSignature___vararg_rank))( variable4 /*psig*/) /*MMSignature::vararg_rank*/; - variable5 = variable6; - variable7 = ((static_type___MMSignature___arity_t)CALL( variable4 /*psig*/,COLOR_static_type___MMSignature___arity))( variable4 /*psig*/) /*MMSignature::arity*/; - variable6 = variable7; - variable7 = TAG_Int((int)0) /*decl variable raw_arity*/; - variable8 = TAG_Bool(( variable3 /*raw_args*/ == NIT_NULL /*null*/) || (( variable3 /*raw_args*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable3 /*raw_args*/,COLOR_kernel___Object_____eqeq))( variable3 /*raw_args*/, NIT_NULL /*null*/) /*Array::==*/))); - if (UNTAG_Bool(variable8)) { /*if*/ - variable7 = TAG_Int(0) /*raw_arity=*/; +void typing___AIssetAttrExpr___after_typing(val_t self, val_t param0) { + struct trace_t trace = {NULL, NULL, 1005, LOCATE_typing___AIssetAttrExpr___after_typing}; + static val_t once_value_179 = NIT_NULL; /* Once value for string variable[3]*/ + val_t variable[4]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Method return value and escape marker */ + CALL_typing___AAttrFormExpr___do_typing(variable[0])(variable[0], variable[1] /*v*/) /*AAttrFormExpr::do_typing*/; + /* Register variable[3]: Result */ + variable[3] = CALL_typing___AAttrFormExpr___prop(variable[0])(variable[0]) /*AAttrFormExpr::prop*/; + /* Register variable[3]: Result */ + variable[3] = TAG_Bool((variable[3] == NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], NIT_NULL /*null*/) /*Object::==*/))))); + if (UNTAG_Bool(variable[3])) { /*if*/ + goto return_label178; + } + /* Register variable[3]: Result */ + variable[3] = CALL_typing___AAttrFormExpr___attr_type(variable[0])(variable[0]) /*AAttrFormExpr::attr_type*/; + /* Register variable[3]: Result */ + variable[3] = CALL_static_type___MMType___is_nullable(variable[3])(variable[3]) /*MMType::is_nullable*/; + if (UNTAG_Bool(variable[3])) { /*if*/ + /* Register variable[3]: Once String constant */ + if (once_value_179 != NIT_NULL) variable[3] = once_value_179; + else { + variable[3] = NEW_String_string___String___with_native(BOX_NativeString("Error: isset on a nullable attribute."), TAG_Int(37)) /*new String*/; + once_value_179 = variable[3]; + } + /* Register variable[3]: Result */ + CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[3]) /*AbsSyntaxVisitor::error*/; + } + /* Register variable[3]: Result */ + variable[3] = CALL_syntax_base___AbsSyntaxVisitor___type_bool( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::type_bool*/; + ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[3]; + ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true); + return_label178: while(false); + tracehead = trace.prev; + return; +} +val_t typing___AAbsAbsSendExpr___prop_signature(val_t self) { + struct trace_t trace = {NULL, NULL, 1019, LOCATE_typing___AAbsAbsSendExpr___prop_signature}; + val_t *variable = NULL; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + tracehead = trace.prev; + return ATTR_typing___AAbsAbsSendExpr____prop_signature( self) /*AAbsAbsSendExpr::_prop_signature*/; +} +val_t typing___AAbsAbsSendExpr___arguments(val_t self) { + struct trace_t trace = {NULL, NULL, 1022, LOCATE_typing___AAbsAbsSendExpr___arguments}; + val_t *variable = NULL; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + tracehead = trace.prev; + return ATTR_typing___AAbsAbsSendExpr____arguments( self) /*AAbsAbsSendExpr::_arguments*/; +} +val_t typing___AAbsAbsSendExpr___process_signature(val_t self, val_t param0, val_t param1, val_t param2, val_t param3) { + struct trace_t trace = {NULL, NULL, 1025, LOCATE_typing___AAbsAbsSendExpr___process_signature}; + static val_t once_value_181 = NIT_NULL; /* Once value for string variable[10]*/ + static val_t once_value_182 = NIT_NULL; /* Once value for string variable[10]*/ + val_t variable[24]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Local variable */ + variable[2] = param1; + /* Register variable[3]: Local variable */ + variable[3] = param2; + /* Register variable[4]: Local variable */ + variable[4] = param3; + /* Register variable[5]: Method return value and escape marker */ + /* Register variable[6]: Local variable */ + /* Register variable[7]: Result */ + variable[7] = CALL_vararg___MMSignature___vararg_rank( variable[2] /*psig*/)( variable[2] /*psig*/) /*MMSignature::vararg_rank*/; + variable[6] = variable[7]; + /* Register variable[7]: Local variable */ + /* Register variable[8]: Result */ + variable[8] = CALL_static_type___MMSignature___arity( variable[2] /*psig*/)( variable[2] /*psig*/) /*MMSignature::arity*/; + variable[7] = variable[8]; + /* Register variable[8]: Local variable */ + /*variable[8] is variable raw_arity*/ + /* Register variable[9]: Result */ + variable[9] = TAG_Bool(( variable[4] /*raw_args*/ == NIT_NULL /*null*/) || (( variable[4] /*raw_args*/ != NIT_NULL) && UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*raw_args*/)( variable[4] /*raw_args*/, NIT_NULL /*null*/) /*AbstractArrayRead::==*/))); + if (UNTAG_Bool(variable[9])) { /*if*/ + variable[8] = TAG_Int(0) /*raw_arity=*/; } else { /*if*/ - variable8 = ((array___AbstractArray___length_t)CALL( variable3 /*raw_args*/,COLOR_abstract_collection___Collection___length))( variable3 /*raw_args*/) /*Array::length*/; - variable7 = variable8 /*raw_arity=*/; - } - variable8 = TAG_Bool(UNTAG_Int( variable6 /*par_arity*/)>UNTAG_Int( variable7 /*raw_arity*/)); - variable9 = variable8; - if (!UNTAG_Bool(variable9)) { /* or */ - variable9 = TAG_Bool(( variable6 /*par_arity*/)!=( variable7 /*raw_arity*/)); - variable10 = variable9; - if (UNTAG_Bool(variable10)) { /* and */ - variable10 = TAG_Int(-UNTAG_Int( TAG_Int(1))); - variable10 = TAG_Bool(( variable5 /*par_vararg*/)==(variable10)); - } - variable9 = variable10; - } - variable8 = variable9; - if (UNTAG_Bool(variable8)) { /*if*/ - variable8 = NEW_string___String___init(); /*new String*/ - variable9 = NEW_string___String___with_native(BOX_NativeString("Error: Method '"), TAG_Int(15)); /*new String*/ - variable10 = variable9; - ((string___String___append_t)CALL(variable8,COLOR_abstract_collection___IndexedCollection___append))(variable8, variable10) /*String::append*/; - variable11 = variable1 /*prop*/; - variable11 = ((string___String___to_s_t)CALL(variable11,COLOR_string___Object___to_s))(variable11) /*String::to_s*/; - ((string___String___append_t)CALL(variable8,COLOR_abstract_collection___IndexedCollection___append))(variable8, variable11) /*String::append*/; - variable12 = NEW_string___String___with_native(BOX_NativeString("' arity missmatch."), TAG_Int(18)); /*new String*/ - variable13 = variable12; - ((string___String___append_t)CALL(variable8,COLOR_abstract_collection___IndexedCollection___append))(variable8, variable13) /*String::append*/; - ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable0 /*v*/, self, variable8) /*TypingVisitor::error*/; - variable4 = NIT_NULL /*null*/; - goto return_label77; - } - variable8 = TAG_Int(0); - variable10 = NEW_array___Array___init(); /*new Array[PExpr]*/ - variable9 = variable10; - variable10 = NEW_range___Range___without_last( TAG_Int(0), variable6 /*par_arity*/); /*new Range[Int]*/ - variable10 = ((range___Range___iterator_t)CALL(variable10,COLOR_abstract_collection___Collection___iterator))(variable10) /*Range::iterator*/; + /* Register variable[9]: Result */ + variable[9] = CALL_abstract_collection___Collection___length( variable[4] /*raw_args*/)( variable[4] /*raw_args*/) /*AbstractArrayRead::length*/; + variable[8] = variable[9] /*raw_arity=*/; + } + /* Register variable[9]: Result */ + variable[9] = TAG_Bool(UNTAG_Int( variable[7] /*par_arity*/)>UNTAG_Int( variable[8] /*raw_arity*/)); + /* Ensure var variable[9]: Left 'or' operand*/ + if (!UNTAG_Bool(variable[9])) { /* or */ + /* Register variable[9]: Result */ + variable[9] = TAG_Bool(( variable[7] /*par_arity*/)!=( variable[8] /*raw_arity*/)); + /* Ensure var variable[9]: Left 'and' operand*/ + if (UNTAG_Bool(variable[9])) { /* and */ + /* Register variable[9]: Result */ + variable[9] = TAG_Int(-UNTAG_Int( TAG_Int(1))); + /* Register variable[9]: Result */ + variable[9] = TAG_Bool(( variable[6] /*par_vararg*/)==(variable[9])); + } + /* Register variable[9]: Result */ + } + /* Register variable[9]: Result */ + if (UNTAG_Bool(variable[9])) { /*if*/ + variable[9] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/; + /* Register variable[10]: Once String constant */ + if (once_value_181 != NIT_NULL) variable[10] = once_value_181; + else { + variable[10] = NEW_String_string___String___with_native(BOX_NativeString("Error: '"), TAG_Int(8)) /*new String*/; + once_value_181 = variable[10]; + } + /* Register variable[10]: Result */ + /* Ensure var variable[10]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/; + variable[10] = variable[3] /*name*/ /* Ensure var: super-string element*/; + CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/) /*AbstractArray::add*/; + /* Register variable[10]: Once String constant */ + if (once_value_182 != NIT_NULL) variable[10] = once_value_182; + else { + variable[10] = NEW_String_string___String___with_native(BOX_NativeString("' arity missmatch."), TAG_Int(18)) /*new String*/; + once_value_182 = variable[10]; + } + /* Register variable[10]: Result */ + /* Ensure var variable[10]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/; + /* Register variable[9]: Result */ + variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/; + CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[9]) /*AbsSyntaxVisitor::error*/; + variable[5] = NIT_NULL /*null*/; + goto return_label180; + } + /* Register variable[9]: Local variable */ + variable[9] = TAG_Int(0); + /* Register variable[10]: Local variable */ + /* Register variable[11]: Result */ + variable[11] = NEW_Array_array___Array___init() /*new Array[PExpr]*/; + variable[10] = variable[11]; + /* Register variable[11]: Result */ + variable[11] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[7] /*par_arity*/) /*new Range[Int]*/; + /* Register variable[11]: For iterator */ + variable[11] = CALL_abstract_collection___Collection___iterator(variable[11])(variable[11]) /*Range::iterator*/; while (true) { /*for*/ - variable11 = ((abstract_collection___Iterator___is_ok_t)CALL(variable10,COLOR_abstract_collection___Iterator___is_ok))(variable10) /*Iterator::is_ok*/; - if (!UNTAG_Bool(variable11)) break; /*for*/ - variable11 = ((abstract_collection___Iterator___item_t)CALL(variable10,COLOR_abstract_collection___Iterator___item))(variable10) /*Iterator::item*/; - variable12 = NIT_NULL /*decl variable a*/; - variable14 = ((static_type___MMSignature_____bra_t)CALL( variable4 /*psig*/,COLOR_static_type___MMSignature_____bra))( variable4 /*psig*/, variable11 /*par_idx*/) /*MMSignature::[]*/; - variable13 = variable14; - if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool( variable2 /*recv_is_self*/)))) { /*if*/ - variable14 = ((static_type___MMType___not_for_self_t)CALL( variable13 /*par_type*/,COLOR_static_type___MMType___not_for_self))( variable13 /*par_type*/) /*MMType::not_for_self*/; - variable13 = variable14 /*par_type=*/; - } - variable14 = TAG_Bool(( variable11 /*par_idx*/)==( variable5 /*par_vararg*/)); - if (UNTAG_Bool(variable14)) { /*if*/ - variable15 = NEW_array___Array___init(); /*new Array[PExpr]*/ - variable14 = variable15; - variable15 = TAG_Int(UNTAG_Int( variable7 /*raw_arity*/)-UNTAG_Int( variable6 /*par_arity*/)); - variable16 = NEW_range___Range___init( TAG_Int(0), variable15); /*new Range[Int]*/ - variable15 = variable16; - variable15 = ((range___Range___iterator_t)CALL(variable15,COLOR_abstract_collection___Collection___iterator))(variable15) /*Range::iterator*/; + /* Register variable[12]: For 'is_ok' result */ + variable[12] = CALL_abstract_collection___Iterator___is_ok(variable[11])(variable[11]) /*Iterator::is_ok*/; + if (!UNTAG_Bool(variable[12])) break; /*for*/ + variable[12] = CALL_abstract_collection___Iterator___item(variable[11])(variable[11]) /*Iterator::item*/ /* Ensure var: For item*/; + /* Register variable[13]: Local variable */ + variable[13] = variable[12]; + /* Register variable[14]: Local variable */ + /*variable[14] is variable a*/ + /* Register variable[15]: Local variable */ + /* Register variable[16]: Result */ + variable[16] = CALL_static_type___MMSignature_____bra( variable[2] /*psig*/)( variable[2] /*psig*/, variable[13] /*par_idx*/) /*MMSignature::[]*/; + variable[15] = variable[16]; + /* Register variable[16]: Result */ + variable[16] = TAG_Bool(( variable[13] /*par_idx*/)==( variable[6] /*par_vararg*/)); + if (UNTAG_Bool(variable[16])) { /*if*/ + /* Register variable[16]: Local variable */ + /* Register variable[17]: Result */ + variable[17] = NEW_Array_array___Array___init() /*new Array[PExpr]*/; + variable[16] = variable[17]; + /* Register variable[17]: Result */ + variable[17] = TAG_Int(UNTAG_Int( variable[8] /*raw_arity*/)-UNTAG_Int( variable[7] /*par_arity*/)); + /* Register variable[17]: Result */ + variable[17] = NEW_Range_range___Range___init( TAG_Int(0), variable[17]) /*new Range[Int]*/; + /* Register variable[17]: For iterator */ + variable[17] = CALL_abstract_collection___Collection___iterator(variable[17])(variable[17]) /*Range::iterator*/; while (true) { /*for*/ - variable16 = ((abstract_collection___Iterator___is_ok_t)CALL(variable15,COLOR_abstract_collection___Iterator___is_ok))(variable15) /*Iterator::is_ok*/; - if (!UNTAG_Bool(variable16)) break; /*for*/ - variable16 = ((abstract_collection___Iterator___item_t)CALL(variable15,COLOR_abstract_collection___Iterator___item))(variable15) /*Iterator::item*/; - variable17 = variable8 /*arg_idx*/; - variable18 = TAG_Bool(UNTAG_Int( variable17 /*index*/)>=UNTAG_Int( TAG_Int(0))); - variable19 = variable18; - if (UNTAG_Bool(variable19)) { /* and */ - variable19 = ATTR_array___AbstractArray____length( variable3 /*raw_args*/) /*Array::_length*/; - variable19 = TAG_Bool(UNTAG_Int( variable17 /*index*/)=UNTAG_Int( TAG_Int(0))); + /* Ensure var variable[23]: Left 'and' operand*/ + if (UNTAG_Bool(variable[23])) { /* and */ + /* Register variable[23]: Result */ + variable[23] = ATTR_array___AbstractArrayRead____length(variable[20]) /*AbstractArrayRead::_length*/; + /* Register variable[23]: Result */ + variable[23] = TAG_Bool(UNTAG_Int( variable[21] /*index*/)=UNTAG_Int( TAG_Int(0))); + /* Ensure var variable[19]: Left 'and' operand*/ + if (UNTAG_Bool(variable[19])) { /* and */ + /* Register variable[19]: Result */ + variable[19] = ATTR_array___AbstractArrayRead____length(variable[16]) /*AbstractArrayRead::_length*/; + /* Register variable[19]: Result */ + variable[19] = TAG_Bool(UNTAG_Int( variable[17] /*index*/)UNTAG_Int(variable[10])); + /* Ensure var variable[9]: Left 'or' operand*/ + if (!UNTAG_Bool(variable[9])) { /* or */ + /* Register variable[9]: Result */ + variable[9] = CALL_abstract_collection___Collection___length( variable[4] /*cd*/)( variable[4] /*cd*/) /*AbstractArrayRead::length*/; + /* Register variable[9]: Result */ + variable[9] = TAG_Bool(UNTAG_Int(variable[9])=UNTAG_Int( TAG_Int(0))); + /* Ensure var variable[17]: Left 'and' operand*/ + if (UNTAG_Bool(variable[17])) { /* and */ + /* Register variable[17]: Result */ + variable[17] = ATTR_array___AbstractArrayRead____length(variable[14]) /*AbstractArrayRead::_length*/; + /* Register variable[17]: Result */ + variable[17] = TAG_Bool(UNTAG_Int( variable[15] /*index*/)=UNTAG_Int( TAG_Int(0))); + /* Ensure var variable[18]: Left 'and' operand*/ + if (UNTAG_Bool(variable[18])) { /* and */ + /* Register variable[18]: Result */ + variable[18] = ATTR_array___AbstractArrayRead____length(variable[15]) /*AbstractArrayRead::_length*/; + /* Register variable[18]: Result */ + variable[18] = TAG_Bool(UNTAG_Int( variable[16] /*index*/)UNTAG_Int( TAG_Int(1))); + if (UNTAG_Bool(variable[9])) { /*if*/ + variable[9] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/; + /* Register variable[10]: Once String constant */ + if (once_value_203 != NIT_NULL) variable[10] = once_value_203; + else { + variable[10] = NEW_String_string___String___with_native(BOX_NativeString("Error: Ambigous method name '"), TAG_Int(29)) /*new String*/; + once_value_203 = variable[10]; + } + /* Register variable[10]: Result */ + /* Ensure var variable[10]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/; + variable[10] = variable[4] /*name*/ /* Ensure var: super-string element*/; + CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/) /*AbstractArray::add*/; + /* Register variable[10]: Once String constant */ + if (once_value_204 != NIT_NULL) variable[10] = once_value_204; + else { + variable[10] = NEW_String_string___String___with_native(BOX_NativeString("' for "), TAG_Int(6)) /*new String*/; + once_value_204 = variable[10]; + } + /* Register variable[10]: Result */ + /* Ensure var variable[10]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/; + /* Register variable[10]: Once String constant */ + if (once_value_205 != NIT_NULL) variable[10] = once_value_205; + else { + variable[10] = NEW_String_string___String___with_native(BOX_NativeString(", "), TAG_Int(2)) /*new String*/; + once_value_205 = variable[10]; + } + /* Register variable[10]: Result */ + /* Register variable[10]: Result */ + variable[10] = CALL_string___Collection___join( variable[8] /*props*/)( variable[8] /*props*/, variable[10]) /*Collection::join*/; + /* Ensure var variable[10]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/; + /* Register variable[10]: Once String constant */ + if (once_value_206 != NIT_NULL) variable[10] = once_value_206; + else { + variable[10] = NEW_String_string___String___with_native(BOX_NativeString(". Use explicit designation."), TAG_Int(27)) /*new String*/; + once_value_206 = variable[10]; + } + /* Register variable[10]: Result */ + /* Ensure var variable[10]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/; + /* Register variable[9]: Result */ + variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/; + CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[9]) /*AbsSyntaxVisitor::error*/; + variable[5] = NIT_NULL /*null*/; + goto return_label202; + } else { /*if*/ + /* Register variable[9]: Result */ + variable[9] = CALL_abstract_collection___Collection___length( variable[8] /*props*/)( variable[8] /*props*/) /*AbstractArrayRead::length*/; + /* Register variable[9]: Result */ + variable[9] = TAG_Bool((variable[9])==( TAG_Int(1))); + if (UNTAG_Bool(variable[9])) { /*if*/ + /* Register variable[9]: Local variable */ + /* Register variable[10]: Result */ + variable[10] = CALL_static_type___MMType___local_class( variable[2] /*type_recv*/)( variable[2] /*type_recv*/) /*MMType::local_class*/; + /* Register variable[11]: Result */ + variable[11] = CALL_abstract_collection___Collection___first( variable[8] /*props*/)( variable[8] /*props*/) /*IndexedCollectionRead::first*/; + /* Register variable[11]: Result */ + variable[11] = CALL_abstractmetamodel___MMLocalProperty___global(variable[11])(variable[11]) /*MMLocalProperty::global*/; + /* Register variable[10]: Result */ + variable[10] = CALL_abstractmetamodel___MMLocalClass_____bra(variable[10])(variable[10], variable[11]) /*MMLocalClass::[]*/; + variable[9] = variable[10]; + /* Register variable[10]: Result */ + variable[10] = TAG_Bool(( variable[9] /*p*/==NIT_NULL) || VAL_ISA( variable[9] /*p*/, COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/; + if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_typing___AAbsSendExpr___get_property, LOCATE_typing, 1135); nit_exit(1);} + variable[7] = variable[9] /*p*/ /*prop=*/; + } + } + } + /* Register variable[8]: Result */ + variable[8] = TAG_Bool(( variable[7] /*prop*/ == NIT_NULL /*null*/) || (( variable[7] /*prop*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*prop*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*prop*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*prop*/)( variable[7] /*prop*/, NIT_NULL /*null*/) /*Object::==*/))))); + if (UNTAG_Bool(variable[8])) { /*if*/ + if (UNTAG_Bool( variable[3] /*is_implicit_self*/)) { /*if*/ + variable[8] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/; + /* Register variable[9]: Once String constant */ + if (once_value_207 != NIT_NULL) variable[9] = once_value_207; + else { + variable[9] = NEW_String_string___String___with_native(BOX_NativeString("Error: Method or variable '"), TAG_Int(27)) /*new String*/; + once_value_207 = variable[9]; + } + /* Register variable[9]: Result */ + /* Ensure var variable[9]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/; + variable[9] = variable[4] /*name*/ /* Ensure var: super-string element*/; + CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/; + /* Register variable[9]: Once String constant */ + if (once_value_208 != NIT_NULL) variable[9] = once_value_208; + else { + variable[9] = NEW_String_string___String___with_native(BOX_NativeString("' unknown in "), TAG_Int(13)) /*new String*/; + once_value_208 = variable[9]; + } + /* Register variable[9]: Result */ + /* Ensure var variable[9]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/; + variable[9] = variable[2] /*type_recv*/ /* Ensure var: super-string element*/; + CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/; + /* Register variable[9]: Once String constant */ + if (once_value_209 != NIT_NULL) variable[9] = once_value_209; + else { + variable[9] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/; + once_value_209 = variable[9]; + } + /* Register variable[9]: Result */ + /* Ensure var variable[9]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/; + /* Register variable[8]: Result */ + variable[8] = CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/; + CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[8]) /*AbsSyntaxVisitor::error*/; } else { /*if*/ - variable14 = variable8 /*arg_idx*/; - variable15 = TAG_Bool(UNTAG_Int( variable14 /*index*/)>=UNTAG_Int( TAG_Int(0))); - variable16 = variable15; - if (UNTAG_Bool(variable16)) { /* and */ - variable16 = ATTR_array___AbstractArray____length( variable3 /*raw_args*/) /*Array::_length*/; - variable16 = TAG_Bool(UNTAG_Int( variable14 /*index*/)"), TAG_Int(1)); /*new String*/ - variable0 = ((symbol___String___to_symbol_t)CALL(variable0,COLOR_symbol___String___to_symbol))(variable0) /*String::to_symbol*/; - once_value_variable0_99 = variable0; - once_bool_variable0_99 = true; + /* Register variable[2]: Once String constant */ + if (once_value_273 != NIT_NULL) variable[2] = once_value_273; + else { + variable[2] = NEW_String_string___String___with_native(BOX_NativeString(">"), TAG_Int(1)) /*new String*/; + once_value_273 = variable[2]; + } + /* Register variable[2]: Result */ + /* Register variable[2]: Result */ + variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/; + once_value_272 = variable[2]; + once_bool_272 = true; } - goto return_label98; - return_label98: while(false); + /* Register variable[2]: Result */ + variable[1] = variable[2]; + goto return_label271; + return_label271: while(false); tracehead = trace.prev; - return variable0; + return variable[1]; } val_t typing___AGeExpr___name(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___AGeExpr___name, 1020}; - val_t variable0; - static val_t once_value_variable0_101; static int once_bool_variable0_101; - trace.prev = tracehead; tracehead = &trace; - if (once_bool_variable0_101) variable0 = once_value_variable0_101; + struct trace_t trace = {NULL, NULL, 1381, LOCATE_typing___AGeExpr___name}; + static val_t once_value_275; static int once_bool_275; /* Once value for variable[2]*/ + static val_t once_value_276 = NIT_NULL; /* Once value for string variable[2]*/ + val_t variable[3]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Method return value and escape marker */ + /* Register variable[2]: Once expression result */ + if (once_bool_275) variable[2] = once_value_275; else { - variable0 = NEW_string___String___with_native(BOX_NativeString(">="), TAG_Int(2)); /*new String*/ - variable0 = ((symbol___String___to_symbol_t)CALL(variable0,COLOR_symbol___String___to_symbol))(variable0) /*String::to_symbol*/; - once_value_variable0_101 = variable0; - once_bool_variable0_101 = true; + /* Register variable[2]: Once String constant */ + if (once_value_276 != NIT_NULL) variable[2] = once_value_276; + else { + variable[2] = NEW_String_string___String___with_native(BOX_NativeString(">="), TAG_Int(2)) /*new String*/; + once_value_276 = variable[2]; + } + /* Register variable[2]: Result */ + /* Register variable[2]: Result */ + variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/; + once_value_275 = variable[2]; + once_bool_275 = true; } - goto return_label100; - return_label100: while(false); + /* Register variable[2]: Result */ + variable[1] = variable[2]; + goto return_label274; + return_label274: while(false); tracehead = trace.prev; - return variable0; + return variable[1]; } val_t typing___APlusExpr___name(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___APlusExpr___name, 1023}; - val_t variable0; - static val_t once_value_variable0_103; static int once_bool_variable0_103; - trace.prev = tracehead; tracehead = &trace; - if (once_bool_variable0_103) variable0 = once_value_variable0_103; + struct trace_t trace = {NULL, NULL, 1384, LOCATE_typing___APlusExpr___name}; + static val_t once_value_278; static int once_bool_278; /* Once value for variable[2]*/ + static val_t once_value_279 = NIT_NULL; /* Once value for string variable[2]*/ + val_t variable[3]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Method return value and escape marker */ + /* Register variable[2]: Once expression result */ + if (once_bool_278) variable[2] = once_value_278; else { - variable0 = NEW_string___String___with_native(BOX_NativeString("+"), TAG_Int(1)); /*new String*/ - variable0 = ((symbol___String___to_symbol_t)CALL(variable0,COLOR_symbol___String___to_symbol))(variable0) /*String::to_symbol*/; - once_value_variable0_103 = variable0; - once_bool_variable0_103 = true; + /* Register variable[2]: Once String constant */ + if (once_value_279 != NIT_NULL) variable[2] = once_value_279; + else { + variable[2] = NEW_String_string___String___with_native(BOX_NativeString("+"), TAG_Int(1)) /*new String*/; + once_value_279 = variable[2]; + } + /* Register variable[2]: Result */ + /* Register variable[2]: Result */ + variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/; + once_value_278 = variable[2]; + once_bool_278 = true; } - goto return_label102; - return_label102: while(false); + /* Register variable[2]: Result */ + variable[1] = variable[2]; + goto return_label277; + return_label277: while(false); tracehead = trace.prev; - return variable0; + return variable[1]; } val_t typing___AMinusExpr___name(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___AMinusExpr___name, 1026}; - val_t variable0; - static val_t once_value_variable0_105; static int once_bool_variable0_105; - trace.prev = tracehead; tracehead = &trace; - if (once_bool_variable0_105) variable0 = once_value_variable0_105; + struct trace_t trace = {NULL, NULL, 1387, LOCATE_typing___AMinusExpr___name}; + static val_t once_value_281; static int once_bool_281; /* Once value for variable[2]*/ + static val_t once_value_282 = NIT_NULL; /* Once value for string variable[2]*/ + val_t variable[3]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Method return value and escape marker */ + /* Register variable[2]: Once expression result */ + if (once_bool_281) variable[2] = once_value_281; else { - variable0 = NEW_string___String___with_native(BOX_NativeString("-"), TAG_Int(1)); /*new String*/ - variable0 = ((symbol___String___to_symbol_t)CALL(variable0,COLOR_symbol___String___to_symbol))(variable0) /*String::to_symbol*/; - once_value_variable0_105 = variable0; - once_bool_variable0_105 = true; + /* Register variable[2]: Once String constant */ + if (once_value_282 != NIT_NULL) variable[2] = once_value_282; + else { + variable[2] = NEW_String_string___String___with_native(BOX_NativeString("-"), TAG_Int(1)) /*new String*/; + once_value_282 = variable[2]; + } + /* Register variable[2]: Result */ + /* Register variable[2]: Result */ + variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/; + once_value_281 = variable[2]; + once_bool_281 = true; } - goto return_label104; - return_label104: while(false); + /* Register variable[2]: Result */ + variable[1] = variable[2]; + goto return_label280; + return_label280: while(false); tracehead = trace.prev; - return variable0; + return variable[1]; } val_t typing___AStarshipExpr___name(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___AStarshipExpr___name, 1029}; - val_t variable0; - static val_t once_value_variable0_107; static int once_bool_variable0_107; - trace.prev = tracehead; tracehead = &trace; - if (once_bool_variable0_107) variable0 = once_value_variable0_107; + struct trace_t trace = {NULL, NULL, 1390, LOCATE_typing___AStarshipExpr___name}; + static val_t once_value_284; static int once_bool_284; /* Once value for variable[2]*/ + static val_t once_value_285 = NIT_NULL; /* Once value for string variable[2]*/ + val_t variable[3]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Method return value and escape marker */ + /* Register variable[2]: Once expression result */ + if (once_bool_284) variable[2] = once_value_284; else { - variable0 = NEW_string___String___with_native(BOX_NativeString("<=>"), TAG_Int(3)); /*new String*/ - variable0 = ((symbol___String___to_symbol_t)CALL(variable0,COLOR_symbol___String___to_symbol))(variable0) /*String::to_symbol*/; - once_value_variable0_107 = variable0; - once_bool_variable0_107 = true; + /* Register variable[2]: Once String constant */ + if (once_value_285 != NIT_NULL) variable[2] = once_value_285; + else { + variable[2] = NEW_String_string___String___with_native(BOX_NativeString("<=>"), TAG_Int(3)) /*new String*/; + once_value_285 = variable[2]; + } + /* Register variable[2]: Result */ + /* Register variable[2]: Result */ + variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/; + once_value_284 = variable[2]; + once_bool_284 = true; } - goto return_label106; - return_label106: while(false); + /* Register variable[2]: Result */ + variable[1] = variable[2]; + goto return_label283; + return_label283: while(false); tracehead = trace.prev; - return variable0; + return variable[1]; } val_t typing___AStarExpr___name(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___AStarExpr___name, 1032}; - val_t variable0; - static val_t once_value_variable0_109; static int once_bool_variable0_109; - trace.prev = tracehead; tracehead = &trace; - if (once_bool_variable0_109) variable0 = once_value_variable0_109; + struct trace_t trace = {NULL, NULL, 1393, LOCATE_typing___AStarExpr___name}; + static val_t once_value_287; static int once_bool_287; /* Once value for variable[2]*/ + static val_t once_value_288 = NIT_NULL; /* Once value for string variable[2]*/ + val_t variable[3]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Method return value and escape marker */ + /* Register variable[2]: Once expression result */ + if (once_bool_287) variable[2] = once_value_287; else { - variable0 = NEW_string___String___with_native(BOX_NativeString("*"), TAG_Int(1)); /*new String*/ - variable0 = ((symbol___String___to_symbol_t)CALL(variable0,COLOR_symbol___String___to_symbol))(variable0) /*String::to_symbol*/; - once_value_variable0_109 = variable0; - once_bool_variable0_109 = true; + /* Register variable[2]: Once String constant */ + if (once_value_288 != NIT_NULL) variable[2] = once_value_288; + else { + variable[2] = NEW_String_string___String___with_native(BOX_NativeString("*"), TAG_Int(1)) /*new String*/; + once_value_288 = variable[2]; + } + /* Register variable[2]: Result */ + /* Register variable[2]: Result */ + variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/; + once_value_287 = variable[2]; + once_bool_287 = true; } - goto return_label108; - return_label108: while(false); + /* Register variable[2]: Result */ + variable[1] = variable[2]; + goto return_label286; + return_label286: while(false); tracehead = trace.prev; - return variable0; + return variable[1]; } val_t typing___ASlashExpr___name(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___ASlashExpr___name, 1035}; - val_t variable0; - static val_t once_value_variable0_111; static int once_bool_variable0_111; - trace.prev = tracehead; tracehead = &trace; - if (once_bool_variable0_111) variable0 = once_value_variable0_111; + struct trace_t trace = {NULL, NULL, 1396, LOCATE_typing___ASlashExpr___name}; + static val_t once_value_290; static int once_bool_290; /* Once value for variable[2]*/ + static val_t once_value_291 = NIT_NULL; /* Once value for string variable[2]*/ + val_t variable[3]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Method return value and escape marker */ + /* Register variable[2]: Once expression result */ + if (once_bool_290) variable[2] = once_value_290; else { - variable0 = NEW_string___String___with_native(BOX_NativeString("/"), TAG_Int(1)); /*new String*/ - variable0 = ((symbol___String___to_symbol_t)CALL(variable0,COLOR_symbol___String___to_symbol))(variable0) /*String::to_symbol*/; - once_value_variable0_111 = variable0; - once_bool_variable0_111 = true; + /* Register variable[2]: Once String constant */ + if (once_value_291 != NIT_NULL) variable[2] = once_value_291; + else { + variable[2] = NEW_String_string___String___with_native(BOX_NativeString("/"), TAG_Int(1)) /*new String*/; + once_value_291 = variable[2]; + } + /* Register variable[2]: Result */ + /* Register variable[2]: Result */ + variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/; + once_value_290 = variable[2]; + once_bool_290 = true; } - goto return_label110; - return_label110: while(false); + /* Register variable[2]: Result */ + variable[1] = variable[2]; + goto return_label289; + return_label289: while(false); tracehead = trace.prev; - return variable0; + return variable[1]; } val_t typing___APercentExpr___name(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___APercentExpr___name, 1038}; - val_t variable0; - static val_t once_value_variable0_113; static int once_bool_variable0_113; - trace.prev = tracehead; tracehead = &trace; - if (once_bool_variable0_113) variable0 = once_value_variable0_113; + struct trace_t trace = {NULL, NULL, 1399, LOCATE_typing___APercentExpr___name}; + static val_t once_value_293; static int once_bool_293; /* Once value for variable[2]*/ + static val_t once_value_294 = NIT_NULL; /* Once value for string variable[2]*/ + val_t variable[3]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Method return value and escape marker */ + /* Register variable[2]: Once expression result */ + if (once_bool_293) variable[2] = once_value_293; else { - variable0 = NEW_string___String___with_native(BOX_NativeString("%"), TAG_Int(1)); /*new String*/ - variable0 = ((symbol___String___to_symbol_t)CALL(variable0,COLOR_symbol___String___to_symbol))(variable0) /*String::to_symbol*/; - once_value_variable0_113 = variable0; - once_bool_variable0_113 = true; + /* Register variable[2]: Once String constant */ + if (once_value_294 != NIT_NULL) variable[2] = once_value_294; + else { + variable[2] = NEW_String_string___String___with_native(BOX_NativeString("%"), TAG_Int(1)) /*new String*/; + once_value_294 = variable[2]; + } + /* Register variable[2]: Result */ + /* Register variable[2]: Result */ + variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/; + once_value_293 = variable[2]; + once_bool_293 = true; } - goto return_label112; - return_label112: while(false); + /* Register variable[2]: Result */ + variable[1] = variable[2]; + goto return_label292; + return_label292: while(false); tracehead = trace.prev; - return variable0; + return variable[1]; } val_t typing___AUminusExpr___name(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___AUminusExpr___name, 1042}; - val_t variable0; - static val_t once_value_variable0_115; static int once_bool_variable0_115; - trace.prev = tracehead; tracehead = &trace; - if (once_bool_variable0_115) variable0 = once_value_variable0_115; + struct trace_t trace = {NULL, NULL, 1403, LOCATE_typing___AUminusExpr___name}; + static val_t once_value_296; static int once_bool_296; /* Once value for variable[2]*/ + static val_t once_value_297 = NIT_NULL; /* Once value for string variable[2]*/ + val_t variable[3]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Method return value and escape marker */ + /* Register variable[2]: Once expression result */ + if (once_bool_296) variable[2] = once_value_296; else { - variable0 = NEW_string___String___with_native(BOX_NativeString("unary -"), TAG_Int(7)); /*new String*/ - variable0 = ((symbol___String___to_symbol_t)CALL(variable0,COLOR_symbol___String___to_symbol))(variable0) /*String::to_symbol*/; - once_value_variable0_115 = variable0; - once_bool_variable0_115 = true; + /* Register variable[2]: Once String constant */ + if (once_value_297 != NIT_NULL) variable[2] = once_value_297; + else { + variable[2] = NEW_String_string___String___with_native(BOX_NativeString("unary -"), TAG_Int(7)) /*new String*/; + once_value_297 = variable[2]; + } + /* Register variable[2]: Result */ + /* Register variable[2]: Result */ + variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/; + once_value_296 = variable[2]; + once_bool_296 = true; } - goto return_label114; - return_label114: while(false); + /* Register variable[2]: Result */ + variable[1] = variable[2]; + goto return_label295; + return_label295: while(false); tracehead = trace.prev; - return variable0; + return variable[1]; } val_t typing___AUminusExpr___raw_arguments(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___AUminusExpr___raw_arguments, 1043}; - val_t variable0; + struct trace_t trace = {NULL, NULL, 1404, LOCATE_typing___AUminusExpr___raw_arguments}; + val_t variable[2]; + struct WBT_ **closurevariable = NULL; trace.prev = tracehead; tracehead = &trace; - variable0 = NIT_NULL /*null*/; - goto return_label116; - return_label116: while(false); + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Method return value and escape marker */ + variable[1] = NIT_NULL /*null*/; + goto return_label298; + return_label298: while(false); tracehead = trace.prev; - return variable0; + return variable[1]; } void typing___ACallFormExpr___after_typing(val_t self, val_t param0) { - struct trace_t trace = {NULL, LOCATE_typing___ACallFormExpr___after_typing, 1047}; - val_t variable0; - val_t variable1; - val_t variable2; - val_t variable3; - val_t variable4; - val_t variable5; - val_t variable6; - val_t variable7; - val_t variable8; - trace.prev = tracehead; tracehead = &trace; - variable0 = param0; - variable1 = ((parser_nodes___ASendExpr___n_expr_t)CALL( self,COLOR_parser_nodes___ASendExpr___n_expr))( self) /*ACallFormExpr::n_expr*/; - variable1 = ((typing___PExpr___is_implicit_self_t)CALL(variable1,COLOR_typing___PExpr___is_implicit_self))(variable1) /*PExpr::is_implicit_self*/; - if (UNTAG_Bool(variable1)) { /*if*/ - variable2 = ((parser_nodes___ACallFormExpr___n_id_t)CALL( self,COLOR_parser_nodes___ACallFormExpr___n_id))( self) /*ACallFormExpr::n_id*/; - variable2 = ((syntax_base___Token___to_symbol_t)CALL(variable2,COLOR_syntax_base___Token___to_symbol))(variable2) /*TId::to_symbol*/; - variable1 = variable2; - variable3 = ((typing___TypingVisitor___variable_ctx_t)CALL( variable0 /*v*/,COLOR_typing___TypingVisitor___variable_ctx))( variable0 /*v*/) /*TypingVisitor::variable_ctx*/; - variable3 = ((typing___VariableContext_____bra_t)CALL(variable3,COLOR_typing___VariableContext_____bra))(variable3, variable1 /*name*/) /*VariableContext::[]*/; - variable2 = variable3; - variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*variable*/ == NIT_NULL /*null*/) || (( variable2 /*variable*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*variable*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*variable*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*variable*/,COLOR_kernel___Object_____eqeq))( variable2 /*variable*/, NIT_NULL /*null*/) /*Variable::==*/))))))); - if (UNTAG_Bool(variable3)) { /*if*/ - variable3 = ((parser_nodes___ACallFormExpr___n_args_t)CALL( self,COLOR_parser_nodes___ACallFormExpr___n_args))( self) /*ACallFormExpr::n_args*/; - variable3 = ((list___List___is_empty_t)CALL(variable3,COLOR_abstract_collection___Collection___is_empty))(variable3) /*List::is_empty*/; - if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable3)))) { /*if*/ - variable3 = NEW_string___String___init(); /*new String*/ - variable4 = NEW_string___String___with_native(BOX_NativeString("Error: "), TAG_Int(7)); /*new String*/ - variable5 = variable4; - ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable5) /*String::append*/; - variable6 = variable1 /*name*/; - variable6 = ((string___String___to_s_t)CALL(variable6,COLOR_string___Object___to_s))(variable6) /*String::to_s*/; - ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable6) /*String::append*/; - variable7 = NEW_string___String___with_native(BOX_NativeString(" is variable, not a function."), TAG_Int(29)); /*new String*/ - variable8 = variable7; - ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable8) /*String::append*/; - ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable0 /*v*/, self, variable3) /*TypingVisitor::error*/; - } - variable4 = ((typing___ACallFormExpr___variable_create_t)CALL( self,COLOR_typing___ACallFormExpr___variable_create))( self, variable2 /*variable*/) /*ACallFormExpr::variable_create*/; - variable3 = variable4; - ((typing___AVarFormExpr___variable__eq_t)CALL( variable3 /*vform*/,COLOR_typing___AVarFormExpr___variable__eq))( variable3 /*vform*/, variable2 /*variable*/) /*AVarFormExpr::variable=*/; - ((parser_prod___Prod___replace_with_t)CALL( self,COLOR_parser_prod___PNode___replace_with))( self, variable3 /*vform*/) /*ACallFormExpr::replace_with*/; - ((typing___PNode___after_typing_t)CALL( variable3 /*vform*/,COLOR_typing___PNode___after_typing))( variable3 /*vform*/, variable0 /*v*/) /*AVarFormExpr::after_typing*/; - goto return_label117; - } - } - ((typing___ACallFormExpr___after_typing_t)CALL( self,COLOR_SUPER_typing___ACallFormExpr___after_typing))( self, param0) /*super ACallFormExpr::after_typing*/; - return_label117: while(false); + struct trace_t trace = {NULL, NULL, 1408, LOCATE_typing___ACallFormExpr___after_typing}; + static val_t once_value_300 = NIT_NULL; /* Once value for string variable[6]*/ + static val_t once_value_301 = NIT_NULL; /* Once value for string variable[6]*/ + val_t variable[9]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Method return value and escape marker */ + /* Register variable[3]: Result */ + variable[3] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/; + /* Register variable[3]: Result */ + variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] == NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], NIT_NULL /*null*/) /*Object::==*/))))))); + /* Ensure var variable[3]: Left 'and' operand*/ + if (UNTAG_Bool(variable[3])) { /* and */ + /* Register variable[3]: Result */ + variable[3] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/; + /* Register variable[3]: Result */ + variable[3] = CALL_typing___PExpr___is_implicit_self(variable[3])(variable[3]) /*PExpr::is_implicit_self*/; + } + /* Register variable[3]: Result */ + if (UNTAG_Bool(variable[3])) { /*if*/ + /* Register variable[3]: Local variable */ + /* Register variable[4]: Result */ + variable[4] = CALL_parser_nodes___ACallFormExpr___n_id(variable[0])(variable[0]) /*ACallFormExpr::n_id*/; + /* Register variable[4]: Result */ + variable[4] = CALL_syntax_base___Token___to_symbol(variable[4])(variable[4]) /*Token::to_symbol*/; + variable[3] = variable[4]; + /* Register variable[4]: Local variable */ + /* Register variable[5]: Result */ + variable[5] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/; + /* Register variable[5]: Result */ + variable[5] = CALL_control_flow___VariableContext_____bra(variable[5])(variable[5], variable[3] /*name*/) /*VariableContext::[]*/; + variable[4] = variable[5]; + /* Register variable[5]: Result */ + variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*variable*/ == NIT_NULL /*null*/) || (( variable[4] /*variable*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*variable*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*variable*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*variable*/)( variable[4] /*variable*/, NIT_NULL /*null*/) /*Object::==*/))))))); + if (UNTAG_Bool(variable[5])) { /*if*/ + /* Register variable[5]: Result */ + variable[5] = TAG_Bool(( variable[4] /*variable*/==NIT_NULL) || VAL_ISA( variable[4] /*variable*/, COLOR_ClosureVariable, ID_ClosureVariable)) /*cast ClosureVariable*/; + if (UNTAG_Bool(variable[5])) { /*if*/ + /* Register variable[5]: Local variable */ + /* Register variable[6]: Result */ + variable[6] = CALL_parser_nodes___ACallFormExpr___n_id(variable[0])(variable[0]) /*ACallFormExpr::n_id*/; + /* Register variable[7]: Result */ + variable[7] = CALL_parser_nodes___ACallFormExpr___n_args(variable[0])(variable[0]) /*ACallFormExpr::n_args*/; + /* Register variable[8]: Result */ + variable[8] = CALL_parser_nodes___ASendExpr___n_closure_defs(variable[0])(variable[0]) /*ASendExpr::n_closure_defs*/; + /* Register variable[6]: Result */ + variable[6] = NEW_AClosureCallExpr_parser_prod___AClosureCallExpr___init_aclosurecallexpr(variable[6], variable[7], variable[8]) /*new AClosureCallExpr*/; + variable[5] = variable[6]; + CALL_parser_prod___PNode___replace_with(variable[0])(variable[0], variable[5] /*n*/) /*Prod::replace_with*/; + CALL_syntax_base___AClosureCallExpr___variable__eq( variable[5] /*n*/)( variable[5] /*n*/, variable[4] /*variable*/) /*AClosureCallExpr::variable=*/; + CALL_typing___PNode___after_typing( variable[5] /*n*/)( variable[5] /*n*/, variable[1] /*v*/) /*AClosureCallExpr::after_typing*/; + goto return_label299; + } else { /*if*/ + /* Register variable[5]: Result */ + variable[5] = CALL_parser_nodes___ACallFormExpr___n_args(variable[0])(variable[0]) /*ACallFormExpr::n_args*/; + /* Register variable[5]: Result */ + variable[5] = CALL_abstract_collection___Collection___is_empty(variable[5])(variable[5]) /*List::is_empty*/; + if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[5])))) { /*if*/ + variable[5] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/; + /* Register variable[6]: Once String constant */ + if (once_value_300 != NIT_NULL) variable[6] = once_value_300; + else { + variable[6] = NEW_String_string___String___with_native(BOX_NativeString("Error: "), TAG_Int(7)) /*new String*/; + once_value_300 = variable[6]; + } + /* Register variable[6]: Result */ + /* Ensure var variable[6]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/; + variable[6] = variable[3] /*name*/ /* Ensure var: super-string element*/; + CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/) /*AbstractArray::add*/; + /* Register variable[6]: Once String constant */ + if (once_value_301 != NIT_NULL) variable[6] = once_value_301; + else { + variable[6] = NEW_String_string___String___with_native(BOX_NativeString(" is variable, not a function."), TAG_Int(29)) /*new String*/; + once_value_301 = variable[6]; + } + /* Register variable[6]: Result */ + /* Ensure var variable[6]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/; + /* Register variable[5]: Result */ + variable[5] = CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/; + CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[5]) /*AbsSyntaxVisitor::error*/; + goto return_label299; + } + /* Register variable[5]: Local variable */ + /* Register variable[6]: Result */ + variable[6] = CALL_typing___ACallFormExpr___variable_create(variable[0])(variable[0], variable[4] /*variable*/) /*ACallFormExpr::variable_create*/; + variable[5] = variable[6]; + CALL_syntax_base___AVarFormExpr___variable__eq( variable[5] /*vform*/)( variable[5] /*vform*/, variable[4] /*variable*/) /*AVarFormExpr::variable=*/; + CALL_parser_prod___PNode___replace_with(variable[0])(variable[0], variable[5] /*vform*/) /*Prod::replace_with*/; + CALL_typing___PNode___after_typing( variable[5] /*vform*/)( variable[5] /*vform*/, variable[1] /*v*/) /*PNode::after_typing*/; + goto return_label299; + } + } + } + CALL_SUPER_typing___ACallFormExpr___after_typing(variable[0])(variable[0], variable[1]) /*super ACallFormExpr::after_typing*/; + return_label299: while(false); tracehead = trace.prev; return; } +val_t typing___ACallFormExpr___closure_defs(val_t self) { + struct trace_t trace = {NULL, NULL, 1437, LOCATE_typing___ACallFormExpr___closure_defs}; + val_t variable[3]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Method return value and escape marker */ + /* Register variable[2]: Result */ + variable[2] = CALL_parser_nodes___ASendExpr___n_closure_defs(variable[0])(variable[0]) /*ASendExpr::n_closure_defs*/; + /* Register variable[2]: Result */ + variable[2] = TAG_Bool((variable[2] == NIT_NULL /*null*/) || ((variable[2] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[2])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[2], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[2])(variable[2], NIT_NULL /*null*/) /*Object::==*/))))); + /* Ensure var variable[2]: Left 'or' operand*/ + if (!UNTAG_Bool(variable[2])) { /* or */ + /* Register variable[2]: Result */ + variable[2] = CALL_parser_nodes___ASendExpr___n_closure_defs(variable[0])(variable[0]) /*ASendExpr::n_closure_defs*/; + /* Register variable[2]: Result */ + variable[2] = CALL_abstract_collection___Collection___is_empty(variable[2])(variable[2]) /*List::is_empty*/; + } + /* Register variable[2]: Result */ + if (UNTAG_Bool(variable[2])) { /*if*/ + variable[1] = NIT_NULL /*null*/; + goto return_label302; + } else { /*if*/ + /* Register variable[2]: Result */ + variable[2] = CALL_parser_nodes___ASendExpr___n_closure_defs(variable[0])(variable[0]) /*ASendExpr::n_closure_defs*/; + /* Register variable[2]: Result */ + variable[2] = CALL_array___Collection___to_a(variable[2])(variable[2]) /*Collection::to_a*/; + variable[1] = variable[2]; + goto return_label302; + } + return_label302: while(false); + tracehead = trace.prev; + return variable[1]; +} val_t typing___ACallFormExpr___variable_create(val_t self, val_t param0) { - struct trace_t trace = {NULL, LOCATE_typing___ACallFormExpr___variable_create, 1066}; + struct trace_t trace = {NULL, NULL, 1446, LOCATE_typing___ACallFormExpr___variable_create}; + val_t *variable = NULL; + struct WBT_ **closurevariable = NULL; trace.prev = tracehead; tracehead = &trace; - fprintf(stderr, "Deferred method %s called (%s: %d)\n", "variable_create", LOCATE_typing___ACallFormExpr___after_typing, 1066); + trace.file = LOCATE_typing; + fprintf(stderr, "Deferred method called"); + fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1446); nit_exit(1); tracehead = trace.prev; return NIT_NULL; } -val_t typing___ACallExpr___variable_create(val_t self, val_t param0) { - struct trace_t trace = {NULL, LOCATE_typing___ACallExpr___variable_create, 1071}; - val_t variable0; - val_t variable1; - val_t variable2; - trace.prev = tracehead; tracehead = &trace; - variable0 = param0; - variable1 = ((parser_nodes___ACallFormExpr___n_id_t)CALL( self,COLOR_parser_nodes___ACallFormExpr___n_id))( self) /*ACallExpr::n_id*/; - variable2 = NEW_parser_prod___AVarExpr___init_avarexpr(variable1); /*new AVarExpr*/ - variable1 = variable2; - goto return_label118; - return_label118: while(false); - tracehead = trace.prev; - return variable1; -} val_t typing___ACallExpr___name(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___ACallExpr___name, 1076}; - val_t variable0; - trace.prev = tracehead; tracehead = &trace; - variable0 = ((parser_nodes___ACallFormExpr___n_id_t)CALL( self,COLOR_parser_nodes___ACallFormExpr___n_id))( self) /*ACallExpr::n_id*/; - variable0 = ((syntax_base___Token___to_symbol_t)CALL(variable0,COLOR_syntax_base___Token___to_symbol))(variable0) /*TId::to_symbol*/; - goto return_label119; - return_label119: while(false); - tracehead = trace.prev; - return variable0; + struct trace_t trace = {NULL, NULL, 1456, LOCATE_typing___ACallExpr___name}; + val_t variable[3]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Method return value and escape marker */ + /* Register variable[2]: Result */ + variable[2] = CALL_parser_nodes___ACallFormExpr___n_id(variable[0])(variable[0]) /*ACallFormExpr::n_id*/; + /* Register variable[2]: Result */ + variable[2] = CALL_syntax_base___Token___to_symbol(variable[2])(variable[2]) /*Token::to_symbol*/; + variable[1] = variable[2]; + goto return_label303; + return_label303: while(false); + tracehead = trace.prev; + return variable[1]; } val_t typing___ACallExpr___raw_arguments(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___ACallExpr___raw_arguments, 1077}; - val_t variable0; - trace.prev = tracehead; tracehead = &trace; - variable0 = ((parser_nodes___ACallFormExpr___n_args_t)CALL( self,COLOR_parser_nodes___ACallFormExpr___n_args))( self) /*ACallExpr::n_args*/; - variable0 = ((array___Collection___to_a_t)CALL(variable0,COLOR_array___Collection___to_a))(variable0) /*List::to_a*/; - goto return_label120; - return_label120: while(false); - tracehead = trace.prev; - return variable0; + struct trace_t trace = {NULL, NULL, 1457, LOCATE_typing___ACallExpr___raw_arguments}; + val_t variable[3]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Method return value and escape marker */ + /* Register variable[2]: Result */ + variable[2] = CALL_parser_nodes___ACallFormExpr___n_args(variable[0])(variable[0]) /*ACallFormExpr::n_args*/; + /* Register variable[2]: Result */ + variable[2] = CALL_array___Collection___to_a(variable[2])(variable[2]) /*Collection::to_a*/; + variable[1] = variable[2]; + goto return_label304; + return_label304: while(false); + tracehead = trace.prev; + return variable[1]; } -val_t typing___ACallAssignExpr___variable_create(val_t self, val_t param0) { - struct trace_t trace = {NULL, LOCATE_typing___ACallAssignExpr___variable_create, 1081}; - val_t variable0; - val_t variable1; - val_t variable2; - val_t variable3; - val_t variable4; - trace.prev = tracehead; tracehead = &trace; - variable0 = param0; - variable1 = ((parser_nodes___ACallFormExpr___n_id_t)CALL( self,COLOR_parser_nodes___ACallFormExpr___n_id))( self) /*ACallAssignExpr::n_id*/; - variable2 = ((parser_nodes___AAssignFormExpr___n_assign_t)CALL( self,COLOR_parser_nodes___AAssignFormExpr___n_assign))( self) /*ACallAssignExpr::n_assign*/; - variable3 = ((parser_nodes___AAssignFormExpr___n_value_t)CALL( self,COLOR_parser_nodes___AAssignFormExpr___n_value))( self) /*ACallAssignExpr::n_value*/; - variable4 = NEW_parser_prod___AVarAssignExpr___init_avarassignexpr(variable1, variable2, variable3); /*new AVarAssignExpr*/ - variable1 = variable4; - goto return_label121; - return_label121: while(false); - tracehead = trace.prev; - return variable1; +val_t typing___ACallExpr___variable_create(val_t self, val_t param0) { + struct trace_t trace = {NULL, NULL, 1451, LOCATE_typing___ACallExpr___variable_create}; + val_t variable[4]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Method return value and escape marker */ + /* Register variable[3]: Result */ + variable[3] = CALL_parser_nodes___ACallFormExpr___n_id(variable[0])(variable[0]) /*ACallFormExpr::n_id*/; + /* Register variable[3]: Result */ + variable[3] = NEW_AVarExpr_parser_prod___AVarExpr___init_avarexpr(variable[3]) /*new AVarExpr*/; + variable[2] = variable[3]; + goto return_label305; + return_label305: while(false); + tracehead = trace.prev; + return variable[2]; } val_t typing___ACallAssignExpr___name(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___ACallAssignExpr___name, 1086}; - val_t variable0; - val_t variable1; - trace.prev = tracehead; tracehead = &trace; - variable0 = ((parser_nodes___ACallFormExpr___n_id_t)CALL( self,COLOR_parser_nodes___ACallFormExpr___n_id))( self) /*ACallAssignExpr::n_id*/; - variable0 = ((lexer___Token___text_t)CALL(variable0,COLOR_lexer___Token___text))(variable0) /*TId::text*/; - variable1 = NEW_string___String___with_native(BOX_NativeString("="), TAG_Int(1)); /*new String*/ - variable0 = ((string___String_____plus_t)CALL(variable0,COLOR_string___String_____plus))(variable0, variable1) /*String::+*/; - variable0 = ((symbol___String___to_symbol_t)CALL(variable0,COLOR_symbol___String___to_symbol))(variable0) /*String::to_symbol*/; - goto return_label122; - return_label122: while(false); + struct trace_t trace = {NULL, NULL, 1466, LOCATE_typing___ACallAssignExpr___name}; + static val_t once_value_307 = NIT_NULL; /* Once value for string variable[3]*/ + val_t variable[4]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Method return value and escape marker */ + /* Register variable[2]: Result */ + variable[2] = CALL_parser_nodes___ACallFormExpr___n_id(variable[0])(variable[0]) /*ACallFormExpr::n_id*/; + /* Register variable[2]: Result */ + variable[2] = CALL_lexer___Token___text(variable[2])(variable[2]) /*Token::text*/; + /* Register variable[3]: Once String constant */ + if (once_value_307 != NIT_NULL) variable[3] = once_value_307; + else { + variable[3] = NEW_String_string___String___with_native(BOX_NativeString("="), TAG_Int(1)) /*new String*/; + once_value_307 = variable[3]; + } + /* Register variable[3]: Result */ + /* Register variable[2]: Result */ + variable[2] = CALL_string___String_____plus(variable[2])(variable[2], variable[3]) /*String::+*/; + /* Register variable[2]: Result */ + variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/; + variable[1] = variable[2]; + goto return_label306; + return_label306: while(false); tracehead = trace.prev; - return variable0; + return variable[1]; } val_t typing___ACallAssignExpr___raw_arguments(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___ACallAssignExpr___raw_arguments, 1087}; - val_t variable0; - val_t variable1; - trace.prev = tracehead; tracehead = &trace; - variable1 = ((parser_nodes___ACallFormExpr___n_args_t)CALL( self,COLOR_parser_nodes___ACallFormExpr___n_args))( self) /*ACallAssignExpr::n_args*/; - variable1 = ((array___Collection___to_a_t)CALL(variable1,COLOR_array___Collection___to_a))(variable1) /*List::to_a*/; - variable0 = variable1; - variable1 = ((parser_nodes___AAssignFormExpr___n_value_t)CALL( self,COLOR_parser_nodes___AAssignFormExpr___n_value))( self) /*ACallAssignExpr::n_value*/; - ((array___AbstractArray___add_t)CALL( variable0 /*res*/,COLOR_abstract_collection___SimpleCollection___add))( variable0 /*res*/, variable1) /*Array::add*/; - variable0 = variable0 /*res*/; - goto return_label123; - return_label123: while(false); - tracehead = trace.prev; - return variable0; + struct trace_t trace = {NULL, NULL, 1467, LOCATE_typing___ACallAssignExpr___raw_arguments}; + val_t variable[4]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Method return value and escape marker */ + /* Register variable[2]: Local variable */ + /* Register variable[3]: Result */ + variable[3] = CALL_parser_nodes___ACallFormExpr___n_args(variable[0])(variable[0]) /*ACallFormExpr::n_args*/; + /* Register variable[3]: Result */ + variable[3] = CALL_array___Collection___to_a(variable[3])(variable[3]) /*Collection::to_a*/; + variable[2] = variable[3]; + /* Register variable[3]: Result */ + variable[3] = CALL_parser_nodes___AAssignFormExpr___n_value(variable[0])(variable[0]) /*AAssignFormExpr::n_value*/; + CALL_abstract_collection___SimpleCollection___add( variable[2] /*res*/)( variable[2] /*res*/, variable[3]) /*AbstractArray::add*/; + variable[1] = variable[2] /*res*/; + goto return_label308; + return_label308: while(false); + tracehead = trace.prev; + return variable[1]; } -val_t typing___ACallReassignExpr___variable_create(val_t self, val_t param0) { - struct trace_t trace = {NULL, LOCATE_typing___ACallReassignExpr___variable_create, 1096}; - val_t variable0; - val_t variable1; - val_t variable2; - val_t variable3; - val_t variable4; - trace.prev = tracehead; tracehead = &trace; - variable0 = param0; - variable1 = ((parser_nodes___ACallFormExpr___n_id_t)CALL( self,COLOR_parser_nodes___ACallFormExpr___n_id))( self) /*ACallReassignExpr::n_id*/; - variable2 = ((parser_nodes___AReassignFormExpr___n_assign_op_t)CALL( self,COLOR_parser_nodes___AReassignFormExpr___n_assign_op))( self) /*ACallReassignExpr::n_assign_op*/; - variable3 = ((parser_nodes___AReassignFormExpr___n_value_t)CALL( self,COLOR_parser_nodes___AReassignFormExpr___n_value))( self) /*ACallReassignExpr::n_value*/; - variable4 = NEW_parser_prod___AVarReassignExpr___init_avarreassignexpr(variable1, variable2, variable3); /*new AVarReassignExpr*/ - variable1 = variable4; - goto return_label124; - return_label124: while(false); - tracehead = trace.prev; - return variable1; +val_t typing___ACallAssignExpr___variable_create(val_t self, val_t param0) { + struct trace_t trace = {NULL, NULL, 1461, LOCATE_typing___ACallAssignExpr___variable_create}; + val_t variable[6]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Method return value and escape marker */ + /* Register variable[3]: Result */ + variable[3] = CALL_parser_nodes___ACallFormExpr___n_id(variable[0])(variable[0]) /*ACallFormExpr::n_id*/; + /* Register variable[4]: Result */ + variable[4] = CALL_parser_nodes___AAssignFormExpr___n_assign(variable[0])(variable[0]) /*AAssignFormExpr::n_assign*/; + /* Register variable[5]: Result */ + variable[5] = CALL_parser_nodes___AAssignFormExpr___n_value(variable[0])(variable[0]) /*AAssignFormExpr::n_value*/; + /* Register variable[3]: Result */ + variable[3] = NEW_AVarAssignExpr_parser_prod___AVarAssignExpr___init_avarassignexpr(variable[3], variable[4], variable[5]) /*new AVarAssignExpr*/; + variable[2] = variable[3]; + goto return_label309; + return_label309: while(false); + tracehead = trace.prev; + return variable[2]; } val_t typing___ACallReassignExpr___name(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___ACallReassignExpr___name, 1101}; - val_t variable0; - trace.prev = tracehead; tracehead = &trace; - variable0 = ((parser_nodes___ACallFormExpr___n_id_t)CALL( self,COLOR_parser_nodes___ACallFormExpr___n_id))( self) /*ACallReassignExpr::n_id*/; - variable0 = ((syntax_base___Token___to_symbol_t)CALL(variable0,COLOR_syntax_base___Token___to_symbol))(variable0) /*TId::to_symbol*/; - goto return_label125; - return_label125: while(false); - tracehead = trace.prev; - return variable0; + struct trace_t trace = {NULL, NULL, 1481, LOCATE_typing___ACallReassignExpr___name}; + val_t variable[3]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Method return value and escape marker */ + /* Register variable[2]: Result */ + variable[2] = CALL_parser_nodes___ACallFormExpr___n_id(variable[0])(variable[0]) /*ACallFormExpr::n_id*/; + /* Register variable[2]: Result */ + variable[2] = CALL_syntax_base___Token___to_symbol(variable[2])(variable[2]) /*Token::to_symbol*/; + variable[1] = variable[2]; + goto return_label310; + return_label310: while(false); + tracehead = trace.prev; + return variable[1]; } val_t typing___ACallReassignExpr___raw_arguments(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___ACallReassignExpr___raw_arguments, 1102}; - val_t variable0; - trace.prev = tracehead; tracehead = &trace; - variable0 = ((parser_nodes___ACallFormExpr___n_args_t)CALL( self,COLOR_parser_nodes___ACallFormExpr___n_args))( self) /*ACallReassignExpr::n_args*/; - variable0 = ((array___Collection___to_a_t)CALL(variable0,COLOR_array___Collection___to_a))(variable0) /*List::to_a*/; - goto return_label126; - return_label126: while(false); - tracehead = trace.prev; - return variable0; + struct trace_t trace = {NULL, NULL, 1482, LOCATE_typing___ACallReassignExpr___raw_arguments}; + val_t variable[3]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Method return value and escape marker */ + /* Register variable[2]: Result */ + variable[2] = CALL_parser_nodes___ACallFormExpr___n_args(variable[0])(variable[0]) /*ACallFormExpr::n_args*/; + /* Register variable[2]: Result */ + variable[2] = CALL_array___Collection___to_a(variable[2])(variable[2]) /*Collection::to_a*/; + variable[1] = variable[2]; + goto return_label311; + return_label311: while(false); + tracehead = trace.prev; + return variable[1]; +} +val_t typing___ACallReassignExpr___variable_create(val_t self, val_t param0) { + struct trace_t trace = {NULL, NULL, 1476, LOCATE_typing___ACallReassignExpr___variable_create}; + val_t variable[6]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Method return value and escape marker */ + /* Register variable[3]: Result */ + variable[3] = CALL_parser_nodes___ACallFormExpr___n_id(variable[0])(variable[0]) /*ACallFormExpr::n_id*/; + /* Register variable[4]: Result */ + variable[4] = CALL_parser_nodes___AReassignFormExpr___n_assign_op(variable[0])(variable[0]) /*AReassignFormExpr::n_assign_op*/; + /* Register variable[5]: Result */ + variable[5] = CALL_parser_nodes___AReassignFormExpr___n_value(variable[0])(variable[0]) /*AReassignFormExpr::n_value*/; + /* Register variable[3]: Result */ + variable[3] = NEW_AVarReassignExpr_parser_prod___AVarReassignExpr___init_avarreassignexpr(variable[3], variable[4], variable[5]) /*new AVarReassignExpr*/; + variable[2] = variable[3]; + goto return_label312; + return_label312: while(false); + tracehead = trace.prev; + return variable[2]; } val_t typing___ABraExpr___name(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___ABraExpr___name, 1106}; - val_t variable0; - static val_t once_value_variable0_128; static int once_bool_variable0_128; - trace.prev = tracehead; tracehead = &trace; - if (once_bool_variable0_128) variable0 = once_value_variable0_128; + struct trace_t trace = {NULL, NULL, 1486, LOCATE_typing___ABraExpr___name}; + static val_t once_value_314; static int once_bool_314; /* Once value for variable[2]*/ + static val_t once_value_315 = NIT_NULL; /* Once value for string variable[2]*/ + val_t variable[3]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Method return value and escape marker */ + /* Register variable[2]: Once expression result */ + if (once_bool_314) variable[2] = once_value_314; else { - variable0 = NEW_string___String___with_native(BOX_NativeString("[]"), TAG_Int(2)); /*new String*/ - variable0 = ((symbol___String___to_symbol_t)CALL(variable0,COLOR_symbol___String___to_symbol))(variable0) /*String::to_symbol*/; - once_value_variable0_128 = variable0; - once_bool_variable0_128 = true; + /* Register variable[2]: Once String constant */ + if (once_value_315 != NIT_NULL) variable[2] = once_value_315; + else { + variable[2] = NEW_String_string___String___with_native(BOX_NativeString("[]"), TAG_Int(2)) /*new String*/; + once_value_315 = variable[2]; + } + /* Register variable[2]: Result */ + /* Register variable[2]: Result */ + variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/; + once_value_314 = variable[2]; + once_bool_314 = true; } - goto return_label127; - return_label127: while(false); + /* Register variable[2]: Result */ + variable[1] = variable[2]; + goto return_label313; + return_label313: while(false); tracehead = trace.prev; - return variable0; + return variable[1]; } val_t typing___ABraExpr___raw_arguments(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___ABraExpr___raw_arguments, 1107}; - val_t variable0; - trace.prev = tracehead; tracehead = &trace; - variable0 = ((parser_nodes___ABraFormExpr___n_args_t)CALL( self,COLOR_parser_nodes___ABraFormExpr___n_args))( self) /*ABraExpr::n_args*/; - variable0 = ((array___Collection___to_a_t)CALL(variable0,COLOR_array___Collection___to_a))(variable0) /*List::to_a*/; - goto return_label129; - return_label129: while(false); - tracehead = trace.prev; - return variable0; + struct trace_t trace = {NULL, NULL, 1487, LOCATE_typing___ABraExpr___raw_arguments}; + val_t variable[3]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Method return value and escape marker */ + /* Register variable[2]: Result */ + variable[2] = CALL_parser_nodes___ABraFormExpr___n_args(variable[0])(variable[0]) /*ABraFormExpr::n_args*/; + /* Register variable[2]: Result */ + variable[2] = CALL_array___Collection___to_a(variable[2])(variable[2]) /*Collection::to_a*/; + variable[1] = variable[2]; + goto return_label316; + return_label316: while(false); + tracehead = trace.prev; + return variable[1]; } val_t typing___ABraAssignExpr___name(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___ABraAssignExpr___name, 1111}; - val_t variable0; - static val_t once_value_variable0_131; static int once_bool_variable0_131; - trace.prev = tracehead; tracehead = &trace; - if (once_bool_variable0_131) variable0 = once_value_variable0_131; + struct trace_t trace = {NULL, NULL, 1491, LOCATE_typing___ABraAssignExpr___name}; + static val_t once_value_318; static int once_bool_318; /* Once value for variable[2]*/ + static val_t once_value_319 = NIT_NULL; /* Once value for string variable[2]*/ + val_t variable[3]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Method return value and escape marker */ + /* Register variable[2]: Once expression result */ + if (once_bool_318) variable[2] = once_value_318; else { - variable0 = NEW_string___String___with_native(BOX_NativeString("[]="), TAG_Int(3)); /*new String*/ - variable0 = ((symbol___String___to_symbol_t)CALL(variable0,COLOR_symbol___String___to_symbol))(variable0) /*String::to_symbol*/; - once_value_variable0_131 = variable0; - once_bool_variable0_131 = true; + /* Register variable[2]: Once String constant */ + if (once_value_319 != NIT_NULL) variable[2] = once_value_319; + else { + variable[2] = NEW_String_string___String___with_native(BOX_NativeString("[]="), TAG_Int(3)) /*new String*/; + once_value_319 = variable[2]; + } + /* Register variable[2]: Result */ + /* Register variable[2]: Result */ + variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/; + once_value_318 = variable[2]; + once_bool_318 = true; } - goto return_label130; - return_label130: while(false); + /* Register variable[2]: Result */ + variable[1] = variable[2]; + goto return_label317; + return_label317: while(false); tracehead = trace.prev; - return variable0; + return variable[1]; } val_t typing___ABraAssignExpr___raw_arguments(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___ABraAssignExpr___raw_arguments, 1112}; - val_t variable0; - val_t variable1; - trace.prev = tracehead; tracehead = &trace; - variable1 = ((parser_nodes___ABraFormExpr___n_args_t)CALL( self,COLOR_parser_nodes___ABraFormExpr___n_args))( self) /*ABraAssignExpr::n_args*/; - variable1 = ((array___Collection___to_a_t)CALL(variable1,COLOR_array___Collection___to_a))(variable1) /*List::to_a*/; - variable0 = variable1; - variable1 = ((parser_nodes___AAssignFormExpr___n_value_t)CALL( self,COLOR_parser_nodes___AAssignFormExpr___n_value))( self) /*ABraAssignExpr::n_value*/; - ((array___AbstractArray___add_t)CALL( variable0 /*res*/,COLOR_abstract_collection___SimpleCollection___add))( variable0 /*res*/, variable1) /*Array::add*/; - variable0 = variable0 /*res*/; - goto return_label132; - return_label132: while(false); - tracehead = trace.prev; - return variable0; + struct trace_t trace = {NULL, NULL, 1492, LOCATE_typing___ABraAssignExpr___raw_arguments}; + val_t variable[4]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Method return value and escape marker */ + /* Register variable[2]: Local variable */ + /* Register variable[3]: Result */ + variable[3] = CALL_parser_nodes___ABraFormExpr___n_args(variable[0])(variable[0]) /*ABraFormExpr::n_args*/; + /* Register variable[3]: Result */ + variable[3] = CALL_array___Collection___to_a(variable[3])(variable[3]) /*Collection::to_a*/; + variable[2] = variable[3]; + /* Register variable[3]: Result */ + variable[3] = CALL_parser_nodes___AAssignFormExpr___n_value(variable[0])(variable[0]) /*AAssignFormExpr::n_value*/; + CALL_abstract_collection___SimpleCollection___add( variable[2] /*res*/)( variable[2] /*res*/, variable[3]) /*AbstractArray::add*/; + variable[1] = variable[2] /*res*/; + goto return_label320; + return_label320: while(false); + tracehead = trace.prev; + return variable[1]; } val_t typing___ABraReassignExpr___name(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___ABraReassignExpr___name, 1121}; - val_t variable0; - static val_t once_value_variable0_134; static int once_bool_variable0_134; - trace.prev = tracehead; tracehead = &trace; - if (once_bool_variable0_134) variable0 = once_value_variable0_134; + struct trace_t trace = {NULL, NULL, 1501, LOCATE_typing___ABraReassignExpr___name}; + static val_t once_value_322; static int once_bool_322; /* Once value for variable[2]*/ + static val_t once_value_323 = NIT_NULL; /* Once value for string variable[2]*/ + val_t variable[3]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Method return value and escape marker */ + /* Register variable[2]: Once expression result */ + if (once_bool_322) variable[2] = once_value_322; else { - variable0 = NEW_string___String___with_native(BOX_NativeString("[]"), TAG_Int(2)); /*new String*/ - variable0 = ((symbol___String___to_symbol_t)CALL(variable0,COLOR_symbol___String___to_symbol))(variable0) /*String::to_symbol*/; - once_value_variable0_134 = variable0; - once_bool_variable0_134 = true; + /* Register variable[2]: Once String constant */ + if (once_value_323 != NIT_NULL) variable[2] = once_value_323; + else { + variable[2] = NEW_String_string___String___with_native(BOX_NativeString("[]"), TAG_Int(2)) /*new String*/; + once_value_323 = variable[2]; + } + /* Register variable[2]: Result */ + /* Register variable[2]: Result */ + variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/; + once_value_322 = variable[2]; + once_bool_322 = true; } - goto return_label133; - return_label133: while(false); + /* Register variable[2]: Result */ + variable[1] = variable[2]; + goto return_label321; + return_label321: while(false); tracehead = trace.prev; - return variable0; + return variable[1]; } val_t typing___ABraReassignExpr___raw_arguments(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___ABraReassignExpr___raw_arguments, 1122}; - val_t variable0; - trace.prev = tracehead; tracehead = &trace; - variable0 = ((parser_nodes___ABraFormExpr___n_args_t)CALL( self,COLOR_parser_nodes___ABraFormExpr___n_args))( self) /*ABraReassignExpr::n_args*/; - variable0 = ((array___Collection___to_a_t)CALL(variable0,COLOR_array___Collection___to_a))(variable0) /*List::to_a*/; - goto return_label135; - return_label135: while(false); - tracehead = trace.prev; - return variable0; + struct trace_t trace = {NULL, NULL, 1502, LOCATE_typing___ABraReassignExpr___raw_arguments}; + val_t variable[3]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Method return value and escape marker */ + /* Register variable[2]: Result */ + variable[2] = CALL_parser_nodes___ABraFormExpr___n_args(variable[0])(variable[0]) /*ABraFormExpr::n_args*/; + /* Register variable[2]: Result */ + variable[2] = CALL_array___Collection___to_a(variable[2])(variable[2]) /*Collection::to_a*/; + variable[1] = variable[2]; + goto return_label324; + return_label324: while(false); + tracehead = trace.prev; + return variable[1]; } val_t typing___AInitExpr___name(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___AInitExpr___name, 1126}; - val_t variable0; - static val_t once_value_variable0_137; static int once_bool_variable0_137; - trace.prev = tracehead; tracehead = &trace; - if (once_bool_variable0_137) variable0 = once_value_variable0_137; + struct trace_t trace = {NULL, NULL, 1506, LOCATE_typing___AInitExpr___name}; + static val_t once_value_326; static int once_bool_326; /* Once value for variable[2]*/ + static val_t once_value_327 = NIT_NULL; /* Once value for string variable[2]*/ + val_t variable[3]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Method return value and escape marker */ + /* Register variable[2]: Once expression result */ + if (once_bool_326) variable[2] = once_value_326; else { - variable0 = NEW_string___String___with_native(BOX_NativeString("init"), TAG_Int(4)); /*new String*/ - variable0 = ((symbol___String___to_symbol_t)CALL(variable0,COLOR_symbol___String___to_symbol))(variable0) /*String::to_symbol*/; - once_value_variable0_137 = variable0; - once_bool_variable0_137 = true; + /* Register variable[2]: Once String constant */ + if (once_value_327 != NIT_NULL) variable[2] = once_value_327; + else { + variable[2] = NEW_String_string___String___with_native(BOX_NativeString("init"), TAG_Int(4)) /*new String*/; + once_value_327 = variable[2]; + } + /* Register variable[2]: Result */ + /* Register variable[2]: Result */ + variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/; + once_value_326 = variable[2]; + once_bool_326 = true; } - goto return_label136; - return_label136: while(false); + /* Register variable[2]: Result */ + variable[1] = variable[2]; + goto return_label325; + return_label325: while(false); tracehead = trace.prev; - return variable0; + return variable[1]; } val_t typing___AInitExpr___raw_arguments(val_t self) { - struct trace_t trace = {NULL, LOCATE_typing___AInitExpr___raw_arguments, 1127}; - val_t variable0; + struct trace_t trace = {NULL, NULL, 1507, LOCATE_typing___AInitExpr___raw_arguments}; + val_t variable[3]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Method return value and escape marker */ + /* Register variable[2]: Result */ + variable[2] = CALL_parser_nodes___AInitExpr___n_args(variable[0])(variable[0]) /*AInitExpr::n_args*/; + /* Register variable[2]: Result */ + variable[2] = CALL_array___Collection___to_a(variable[2])(variable[2]) /*Collection::to_a*/; + variable[1] = variable[2]; + goto return_label328; + return_label328: while(false); + tracehead = trace.prev; + return variable[1]; +} +void typing___AClosureCallExpr___after_typing(val_t self, val_t param0) { + struct trace_t trace = {NULL, NULL, 1512, LOCATE_typing___AClosureCallExpr___after_typing}; + val_t variable[8]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Method return value and escape marker */ + /* Register variable[3]: Local variable */ + /* Register variable[4]: Result */ + variable[4] = CALL_syntax_base___AClosureCallExpr___variable(variable[0])(variable[0]) /*AClosureCallExpr::variable*/; + variable[3] = variable[4]; + /* Register variable[4]: Result */ + variable[4] = CALL_syntax_base___ClosureVariable___closure( variable[3] /*va*/)( variable[3] /*va*/) /*ClosureVariable::closure*/; + /* Register variable[4]: Result */ + variable[4] = CALL_static_type___MMClosure___is_break(variable[4])(variable[4]) /*MMClosure::is_break*/; + if (UNTAG_Bool(variable[4])) { /*if*/ + /* Register variable[4]: Result */ + variable[4] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/; + CALL_control_flow___VariableContext___unreash__eq(variable[4])(variable[4], TAG_Bool(true)) /*VariableContext::unreash=*/; + } + /* Register variable[4]: Local variable */ + /* Register variable[5]: Result */ + variable[5] = CALL_syntax_base___ClosureVariable___closure( variable[3] /*va*/)( variable[3] /*va*/) /*ClosureVariable::closure*/; + /* Register variable[5]: Result */ + variable[5] = CALL_static_type___MMClosure___signature(variable[5])(variable[5]) /*MMClosure::signature*/; + variable[4] = variable[5]; + /* Register variable[5]: Local variable */ + /* Register variable[6]: Result */ + variable[6] = CALL_parser_nodes___AClosureCallExpr___n_id(variable[0])(variable[0]) /*AClosureCallExpr::n_id*/; + /* Register variable[6]: Result */ + variable[6] = CALL_syntax_base___Token___to_symbol(variable[6])(variable[6]) /*Token::to_symbol*/; + /* Register variable[7]: Result */ + variable[7] = CALL_parser_nodes___AClosureCallExpr___n_args(variable[0])(variable[0]) /*AClosureCallExpr::n_args*/; + /* Register variable[7]: Result */ + variable[7] = CALL_array___Collection___to_a(variable[7])(variable[7]) /*Collection::to_a*/; + /* Register variable[6]: Result */ + variable[6] = CALL_typing___AAbsAbsSendExpr___process_signature(variable[0])(variable[0], variable[1] /*v*/, variable[4] /*sig*/, variable[6], variable[7]) /*AAbsAbsSendExpr::process_signature*/; + variable[5] = variable[6]; + /* Register variable[6]: Result */ + variable[6] = CALL_parser_nodes___AClosureCallExpr___n_closure_defs(variable[0])(variable[0]) /*AClosureCallExpr::n_closure_defs*/; + /* Register variable[6]: Result */ + variable[6] = CALL_abstract_collection___Collection___is_empty(variable[6])(variable[6]) /*List::is_empty*/; + if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[6])))) { /*if*/ + /* Register variable[6]: Result */ + variable[6] = CALL_parser_nodes___AClosureCallExpr___n_id(variable[0])(variable[0]) /*AClosureCallExpr::n_id*/; + /* Register variable[6]: Result */ + variable[6] = CALL_syntax_base___Token___to_symbol(variable[6])(variable[6]) /*Token::to_symbol*/; + /* Register variable[7]: Result */ + variable[7] = CALL_parser_nodes___AClosureCallExpr___n_closure_defs(variable[0])(variable[0]) /*AClosureCallExpr::n_closure_defs*/; + /* Register variable[7]: Result */ + variable[7] = CALL_array___Collection___to_a(variable[7])(variable[7]) /*Collection::to_a*/; + CALL_typing___AAbsAbsSendExpr___process_closures(variable[0])(variable[0], variable[1] /*v*/, variable[4] /*sig*/, variable[6], variable[7]) /*AAbsAbsSendExpr::process_closures*/; + } + /* Register variable[6]: Result */ + variable[6] = TAG_Bool(( variable[5] /*args*/ == NIT_NULL /*null*/) || (( variable[5] /*args*/ != NIT_NULL) && UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*args*/)( variable[5] /*args*/, NIT_NULL /*null*/) /*AbstractArrayRead::==*/))); + if (UNTAG_Bool(variable[6])) { /*if*/ + goto return_label329; + } + ATTR_typing___AAbsAbsSendExpr____prop_signature(variable[0]) /*AAbsAbsSendExpr::_prop_signature*/ = variable[4] /*sig*/; + ATTR_typing___AAbsAbsSendExpr____arguments(variable[0]) /*AAbsAbsSendExpr::_arguments*/ = variable[5] /*args*/; + /* Register variable[6]: Result */ + variable[6] = CALL_static_type___MMSignature___return_type( variable[4] /*sig*/)( variable[4] /*sig*/) /*MMSignature::return_type*/; + ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[6]; + ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true); + return_label329: while(false); + tracehead = trace.prev; + return; +} +void typing___PClosureDef___accept_typing(val_t self, val_t param0) { + struct trace_t trace = {NULL, NULL, 1534, LOCATE_typing___PClosureDef___accept_typing}; + val_t variable[4]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Method return value and escape marker */ + /* Register variable[3]: Result */ + variable[3] = ATTR_typing___PClosureDef____accept_typing2(variable[0]) /*PClosureDef::_accept_typing2*/; + if (UNTAG_Bool(variable[3])) { /*if*/ + CALL_SUPER_typing___PClosureDef___accept_typing(variable[0])(variable[0], variable[1]) /*super PClosureDef::accept_typing*/; + } + return_label330: while(false); + tracehead = trace.prev; + return; +} +val_t typing___PClosureDef___escapable(val_t self) { + struct trace_t trace = {NULL, NULL, 1530, LOCATE_typing___PClosureDef___escapable}; + val_t *variable = NULL; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + tracehead = trace.prev; + return ATTR_typing___PClosureDef____escapable( self) /*PClosureDef::_escapable*/; +} +void typing___PClosureDef___accept_typing2(val_t self, val_t param0, val_t param1) { + struct trace_t trace = {NULL, NULL, 1540, LOCATE_typing___PClosureDef___accept_typing2}; + val_t *variable = NULL; + struct WBT_ **closurevariable = NULL; trace.prev = tracehead; tracehead = &trace; - variable0 = ((parser_nodes___AInitExpr___n_args_t)CALL( self,COLOR_parser_nodes___AInitExpr___n_args))( self) /*AInitExpr::n_args*/; - variable0 = ((array___Collection___to_a_t)CALL(variable0,COLOR_array___Collection___to_a))(variable0) /*List::to_a*/; - goto return_label138; - return_label138: while(false); + trace.file = LOCATE_typing; + fprintf(stderr, "Deferred method called"); + fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1540); + nit_exit(1); + tracehead = trace.prev; + return; +} +void typing___AClosureDef___accept_typing2(val_t self, val_t param0, val_t param1) { + struct trace_t trace = {NULL, NULL, 1544, LOCATE_typing___AClosureDef___accept_typing2}; + static val_t once_value_332 = NIT_NULL; /* Once value for string variable[6]*/ + static val_t once_value_333 = NIT_NULL; /* Once value for string variable[6]*/ + static val_t once_value_334 = NIT_NULL; /* Once value for string variable[6]*/ + static val_t once_value_336 = NIT_NULL; /* Once value for string variable[7]*/ + static val_t once_value_337 = NIT_NULL; /* Once value for string variable[7]*/ + val_t variable[12]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Local variable */ + variable[2] = param1; + /* Register variable[3]: Method return value and escape marker */ + ATTR_typing___PClosureDef____escapable(variable[0]) /*PClosureDef::_escapable*/ = variable[2] /*esc*/; + /* Register variable[4]: Local variable */ + /* Register variable[5]: Result */ + variable[5] = CALL_escape___EscapableClosure___closure( variable[2] /*esc*/)( variable[2] /*esc*/) /*EscapableClosure::closure*/; + /* Register variable[5]: Result */ + variable[5] = CALL_static_type___MMClosure___signature(variable[5])(variable[5]) /*MMClosure::signature*/; + variable[4] = variable[5]; + /* Register variable[5]: Result */ + variable[5] = CALL_static_type___MMSignature___arity( variable[4] /*sig*/)( variable[4] /*sig*/) /*MMSignature::arity*/; + /* Register variable[6]: Result */ + variable[6] = CALL_parser_nodes___AClosureDef___n_id(variable[0])(variable[0]) /*AClosureDef::n_id*/; + /* Register variable[6]: Result */ + variable[6] = CALL_abstract_collection___Collection___length(variable[6])(variable[6]) /*List::length*/; + /* Register variable[5]: Result */ + variable[5] = TAG_Bool((variable[5])!=(variable[6])); + if (UNTAG_Bool(variable[5])) { /*if*/ + variable[5] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/; + /* Register variable[6]: Once String constant */ + if (once_value_332 != NIT_NULL) variable[6] = once_value_332; + else { + variable[6] = NEW_String_string___String___with_native(BOX_NativeString("Error: "), TAG_Int(7)) /*new String*/; + once_value_332 = variable[6]; + } + /* Register variable[6]: Result */ + /* Ensure var variable[6]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/; + /* Register variable[6]: Result */ + variable[6] = CALL_static_type___MMSignature___arity( variable[4] /*sig*/)( variable[4] /*sig*/) /*MMSignature::arity*/; + /* Ensure var variable[6]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/) /*AbstractArray::add*/; + /* Register variable[6]: Once String constant */ + if (once_value_333 != NIT_NULL) variable[6] = once_value_333; + else { + variable[6] = NEW_String_string___String___with_native(BOX_NativeString(" automatic variable names expected, "), TAG_Int(36)) /*new String*/; + once_value_333 = variable[6]; + } + /* Register variable[6]: Result */ + /* Ensure var variable[6]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/; + /* Register variable[6]: Result */ + variable[6] = CALL_parser_nodes___AClosureDef___n_id(variable[0])(variable[0]) /*AClosureDef::n_id*/; + /* Register variable[6]: Result */ + variable[6] = CALL_abstract_collection___Collection___length(variable[6])(variable[6]) /*List::length*/; + /* Ensure var variable[6]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/) /*AbstractArray::add*/; + /* Register variable[6]: Once String constant */ + if (once_value_334 != NIT_NULL) variable[6] = once_value_334; + else { + variable[6] = NEW_String_string___String___with_native(BOX_NativeString(" found."), TAG_Int(7)) /*new String*/; + once_value_334 = variable[6]; + } + /* Register variable[6]: Result */ + /* Ensure var variable[6]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/; + /* Register variable[5]: Result */ + variable[5] = CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/; + CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[5]) /*AbsSyntaxVisitor::error*/; + goto return_label331; + } + /* Register variable[5]: Result */ + variable[5] = CALL_escape___EscapableClosure___closure( variable[2] /*esc*/)( variable[2] /*esc*/) /*EscapableClosure::closure*/; + CALL_syntax_base___PClosureDef___closure__eq(variable[0])(variable[0], variable[5]) /*PClosureDef::closure=*/; + /* Register variable[5]: Local variable */ + /* Register variable[6]: Result */ + variable[6] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/; + variable[5] = variable[6]; + /* Register variable[6]: Local variable */ + /* Register variable[7]: Result */ + variable[7] = CALL_typing___TypingVisitor___base_variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::base_variable_ctx*/; + variable[6] = variable[7]; + /* Register variable[7]: Result */ + variable[7] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/; + CALL_typing___TypingVisitor___base_variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[7]) /*TypingVisitor::base_variable_ctx=*/; + /* Register variable[7]: Result */ + variable[7] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/; + /* Register variable[7]: Result */ + variable[7] = CALL_control_flow___VariableContext___sub(variable[7])(variable[7], variable[0]) /*VariableContext::sub*/; + CALL_typing___TypingVisitor___variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[7]) /*TypingVisitor::variable_ctx=*/; + /* Register variable[7]: Result */ + variable[7] = NEW_Array_array___Array___init() /*new Array[AutoVariable]*/; + CALL_syntax_base___PClosureDef___variables__eq(variable[0])(variable[0], variable[7]) /*PClosureDef::variables=*/; + /* Register variable[7]: Result */ + variable[7] = CALL_parser_nodes___AClosureDef___n_id(variable[0])(variable[0]) /*AClosureDef::n_id*/; + /* Register variable[7]: Result */ + variable[7] = CALL_abstract_collection___Collection___length(variable[7])(variable[7]) /*List::length*/; + /* Register variable[7]: Result */ + variable[7] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[7]) /*new Range[Int]*/; + /* Register variable[7]: For iterator */ + variable[7] = CALL_abstract_collection___Collection___iterator(variable[7])(variable[7]) /*Range::iterator*/; + while (true) { /*for*/ + /* Register variable[8]: For 'is_ok' result */ + variable[8] = CALL_abstract_collection___Iterator___is_ok(variable[7])(variable[7]) /*Iterator::is_ok*/; + if (!UNTAG_Bool(variable[8])) break; /*for*/ + variable[8] = CALL_abstract_collection___Iterator___item(variable[7])(variable[7]) /*Iterator::item*/ /* Ensure var: For item*/; + /* Register variable[9]: Local variable */ + variable[9] = variable[8]; + /* Register variable[10]: Local variable */ + /* Register variable[11]: Result */ + variable[11] = CALL_parser_nodes___AClosureDef___n_id(variable[0])(variable[0]) /*AClosureDef::n_id*/; + /* Register variable[11]: Result */ + variable[11] = CALL_abstract_collection___MapRead_____bra(variable[11])(variable[11], variable[9] /*i*/) /*List::[]*/; + /* Register variable[11]: Result */ + variable[11] = CALL_syntax_base___Token___to_symbol(variable[11])(variable[11]) /*Token::to_symbol*/; + /* Register variable[11]: Result */ + variable[11] = NEW_AutoVariable_syntax_base___AutoVariable___init(variable[11], variable[0]) /*new AutoVariable*/; + variable[10] = variable[11]; + /* Register variable[11]: Result */ + variable[11] = CALL_syntax_base___PClosureDef___variables(variable[0])(variable[0]) /*PClosureDef::variables*/; + CALL_abstract_collection___SimpleCollection___add(variable[11])(variable[11], variable[10] /*va*/) /*AbstractArray::add*/; + /* Register variable[11]: Result */ + variable[11] = CALL_static_type___MMSignature_____bra( variable[4] /*sig*/)( variable[4] /*sig*/, variable[9] /*i*/) /*MMSignature::[]*/; + CALL_syntax_base___Variable___stype__eq( variable[10] /*va*/)( variable[10] /*va*/, variable[11]) /*Variable::stype=*/; + /* Register variable[11]: Result */ + variable[11] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/; + CALL_control_flow___VariableContext___add(variable[11])(variable[11], variable[10] /*va*/) /*VariableContext::add*/; + continue_335: while(0); + CALL_abstract_collection___Iterator___next(variable[7])(variable[7]) /*Iterator::next*/; + } + break_335: while(0); + ATTR_typing___PClosureDef____accept_typing2(variable[0]) /*PClosureDef::_accept_typing2*/ = TAG_Bool(true); + CALL_typing___PNode___accept_typing(variable[0])(variable[0], variable[1] /*v*/) /*PClosureDef::accept_typing*/; + /* Register variable[7]: Result */ + variable[7] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/; + /* Register variable[7]: Result */ + variable[7] = CALL_control_flow___VariableContext___unreash(variable[7])(variable[7]) /*VariableContext::unreash*/; + /* Register variable[7]: Result */ + variable[7] = TAG_Bool((variable[7])==( TAG_Bool(false))); + if (UNTAG_Bool(variable[7])) { /*if*/ + /* Register variable[7]: Result */ + variable[7] = CALL_syntax_base___PClosureDef___closure(variable[0])(variable[0]) /*PClosureDef::closure*/; + /* Register variable[7]: Result */ + variable[7] = CALL_static_type___MMClosure___signature(variable[7])(variable[7]) /*MMClosure::signature*/; + /* Register variable[7]: Result */ + variable[7] = CALL_static_type___MMSignature___return_type(variable[7])(variable[7]) /*MMSignature::return_type*/; + /* Register variable[7]: Result */ + variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[7] == NIT_NULL /*null*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7], NIT_NULL /*null*/) /*Object::==*/))))))); + if (UNTAG_Bool(variable[7])) { /*if*/ + /* Register variable[7]: Once String constant */ + if (once_value_336 != NIT_NULL) variable[7] = once_value_336; + else { + variable[7] = NEW_String_string___String___with_native(BOX_NativeString("Control error: Reached end of block (a 'continue' with a value was expected)."), TAG_Int(77)) /*new String*/; + once_value_336 = variable[7]; + } + /* Register variable[7]: Result */ + CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[7]) /*AbsSyntaxVisitor::error*/; + } else { /*if*/ + /* Register variable[7]: Result */ + variable[7] = CALL_syntax_base___PClosureDef___closure(variable[0])(variable[0]) /*PClosureDef::closure*/; + /* Register variable[7]: Result */ + variable[7] = CALL_static_type___MMClosure___is_break(variable[7])(variable[7]) /*MMClosure::is_break*/; + if (UNTAG_Bool(variable[7])) { /*if*/ + /* Register variable[7]: Once String constant */ + if (once_value_337 != NIT_NULL) variable[7] = once_value_337; + else { + variable[7] = NEW_String_string___String___with_native(BOX_NativeString("Control error: Reached end of break block (a 'break' was expected)."), TAG_Int(67)) /*new String*/; + once_value_337 = variable[7]; + } + /* Register variable[7]: Result */ + CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[7]) /*AbsSyntaxVisitor::error*/; + } + } + } + CALL_typing___TypingVisitor___variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[5] /*old_var_ctx*/) /*TypingVisitor::variable_ctx=*/; + CALL_typing___TypingVisitor___base_variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[6] /*old_base_var_ctx*/) /*TypingVisitor::base_variable_ctx=*/; + return_label331: while(false); + tracehead = trace.prev; + return; +} +void typing___ATypeCheckExpr___check_expr_cast(val_t self, val_t param0, val_t param1, val_t param2) { + struct trace_t trace = {NULL, NULL, 1585, LOCATE_typing___ATypeCheckExpr___check_expr_cast}; + static val_t once_value_339 = NIT_NULL; /* Once value for string variable[8]*/ + static val_t once_value_340 = NIT_NULL; /* Once value for string variable[8]*/ + static val_t once_value_341 = NIT_NULL; /* Once value for string variable[8]*/ + static val_t once_value_342 = NIT_NULL; /* Once value for string variable[8]*/ + static val_t once_value_343 = NIT_NULL; /* Once value for string variable[8]*/ + static val_t once_value_344 = NIT_NULL; /* Once value for string variable[7]*/ + static val_t once_value_345 = NIT_NULL; /* Once value for string variable[7]*/ + val_t variable[9]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Local variable */ + variable[2] = param1; + /* Register variable[3]: Local variable */ + variable[3] = param2; + /* Register variable[4]: Method return value and escape marker */ + /* Register variable[5]: Result */ + variable[5] = CALL_syntax_base___AbsSyntaxVisitor___check_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[2] /*n_expr*/) /*AbsSyntaxVisitor::check_expr*/; + if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[5])))) { /*if*/ + goto return_label338; + } + /* Register variable[5]: Local variable */ + /* Register variable[6]: Result */ + variable[6] = CALL_syntax_base___PExpr___stype( variable[2] /*n_expr*/)( variable[2] /*n_expr*/) /*PExpr::stype*/; + variable[5] = variable[6]; + /* Register variable[6]: Local variable */ + /* Register variable[7]: Result */ + variable[7] = CALL_typing___PType___stype( variable[3] /*n_type*/)( variable[3] /*n_type*/) /*PType::stype*/; + variable[6] = variable[7]; + /* Register variable[7]: Result */ + variable[7] = TAG_Bool(( variable[5] /*etype*/ == variable[6] /*ttype*/) || (( variable[5] /*etype*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*etype*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*etype*/, variable[6] /*ttype*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*etype*/)( variable[5] /*etype*/, variable[6] /*ttype*/) /*Object::==*/))))); + if (UNTAG_Bool(variable[7])) { /*if*/ + variable[7] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/; + /* Register variable[8]: Once String constant */ + if (once_value_339 != NIT_NULL) variable[8] = once_value_339; + else { + variable[8] = NEW_String_string___String___with_native(BOX_NativeString("Warning: Expression is already a "), TAG_Int(33)) /*new String*/; + once_value_339 = variable[8]; + } + /* Register variable[8]: Result */ + /* Ensure var variable[8]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/; + variable[8] = variable[6] /*ttype*/ /* Ensure var: super-string element*/; + CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/) /*AbstractArray::add*/; + /* Register variable[8]: Once String constant */ + if (once_value_340 != NIT_NULL) variable[8] = once_value_340; + else { + variable[8] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/; + once_value_340 = variable[8]; + } + /* Register variable[8]: Result */ + /* Ensure var variable[8]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/; + /* Register variable[7]: Result */ + variable[7] = CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/; + CALL_syntax_base___AbsSyntaxVisitor___warning( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[7]) /*AbsSyntaxVisitor::warning*/; + } else { /*if*/ + /* Register variable[7]: Result */ + variable[7] = CALL_static_type___MMType_____l( variable[5] /*etype*/)( variable[5] /*etype*/, variable[6] /*ttype*/) /*MMType::<*/; + if (UNTAG_Bool(variable[7])) { /*if*/ + variable[7] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/; + /* Register variable[8]: Once String constant */ + if (once_value_341 != NIT_NULL) variable[8] = once_value_341; + else { + variable[8] = NEW_String_string___String___with_native(BOX_NativeString("Warning: Expression is already a "), TAG_Int(33)) /*new String*/; + once_value_341 = variable[8]; + } + /* Register variable[8]: Result */ + /* Ensure var variable[8]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/; + variable[8] = variable[6] /*ttype*/ /* Ensure var: super-string element*/; + CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/) /*AbstractArray::add*/; + /* Register variable[8]: Once String constant */ + if (once_value_342 != NIT_NULL) variable[8] = once_value_342; + else { + variable[8] = NEW_String_string___String___with_native(BOX_NativeString(" since it is a "), TAG_Int(15)) /*new String*/; + once_value_342 = variable[8]; + } + /* Register variable[8]: Result */ + /* Ensure var variable[8]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/; + variable[8] = variable[5] /*etype*/ /* Ensure var: super-string element*/; + CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/) /*AbstractArray::add*/; + /* Register variable[8]: Once String constant */ + if (once_value_343 != NIT_NULL) variable[8] = once_value_343; + else { + variable[8] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/; + once_value_343 = variable[8]; + } + /* Register variable[8]: Result */ + /* Ensure var variable[8]: super-string element*/ + CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/; + /* Register variable[7]: Result */ + variable[7] = CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/; + CALL_syntax_base___AbsSyntaxVisitor___warning( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[7]) /*AbsSyntaxVisitor::warning*/; + } else { /*if*/ + /* Register variable[7]: Result */ + variable[7] = CALL_static_type___MMType___is_nullable( variable[5] /*etype*/)( variable[5] /*etype*/) /*MMType::is_nullable*/; + /* Ensure var variable[7]: Left 'and' operand*/ + if (UNTAG_Bool(variable[7])) { /* and */ + /* Register variable[7]: Result */ + variable[7] = CALL_static_type___MMType___as_notnull( variable[5] /*etype*/)( variable[5] /*etype*/) /*MMType::as_notnull*/; + /* Register variable[7]: Result */ + variable[7] = TAG_Bool((variable[7] == variable[6] /*ttype*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[6] /*ttype*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7], variable[6] /*ttype*/) /*Object::==*/))))); + } + /* Register variable[7]: Result */ + if (UNTAG_Bool(variable[7])) { /*if*/ + /* Register variable[7]: Result */ + variable[7] = TAG_Bool(( variable[6] /*ttype*/==NIT_NULL) || VAL_ISA( variable[6] /*ttype*/, COLOR_MMTypeFormal, ID_MMTypeFormal)) /*cast MMTypeFormal*/; + /* Ensure var variable[7]: Left 'and' operand*/ + if (UNTAG_Bool(variable[7])) { /* and */ + /* Register variable[7]: Result */ + variable[7] = CALL_type_formal___MMTypeFormal___bound( variable[6] /*ttype*/)( variable[6] /*ttype*/) /*MMTypeFormal::bound*/; + /* Register variable[7]: Result */ + variable[7] = CALL_static_type___MMType___is_nullable(variable[7])(variable[7]) /*MMType::is_nullable*/; + } + /* Register variable[7]: Result */ + if (UNTAG_Bool(variable[7])) { /*if*/ + } else { /*if*/ + /* Register variable[7]: Result */ + variable[7] = TAG_Bool((variable[0]==NIT_NULL) || VAL_ISA(variable[0], COLOR_AIsaExpr, ID_AIsaExpr)) /*cast AIsaExpr*/; + if (UNTAG_Bool(variable[7])) { /*if*/ + /* Register variable[7]: Once String constant */ + if (once_value_344 != NIT_NULL) variable[7] = once_value_344; + else { + variable[7] = NEW_String_string___String___with_native(BOX_NativeString("Warning: Prefer '!= null'."), TAG_Int(26)) /*new String*/; + once_value_344 = variable[7]; + } + /* Register variable[7]: Result */ + CALL_syntax_base___AbsSyntaxVisitor___warning( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[7]) /*AbsSyntaxVisitor::warning*/; + } else { /*if*/ + /* Register variable[7]: Once String constant */ + if (once_value_345 != NIT_NULL) variable[7] = once_value_345; + else { + variable[7] = NEW_String_string___String___with_native(BOX_NativeString("Warning: Prefer '.as(not null)'."), TAG_Int(32)) /*new String*/; + once_value_345 = variable[7]; + } + /* Register variable[7]: Result */ + CALL_syntax_base___AbsSyntaxVisitor___warning( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[7]) /*AbsSyntaxVisitor::warning*/; + } + } + } + } + } + return_label338: while(false); tracehead = trace.prev; - return variable0; + return; } void typing___AIsaExpr___after_typing(val_t self, val_t param0) { - struct trace_t trace = {NULL, LOCATE_typing___AIsaExpr___after_typing, 1131}; - val_t variable0; - val_t variable1; - val_t variable2; - val_t variable3; - val_t variable4; - trace.prev = tracehead; tracehead = &trace; - variable0 = param0; - variable1 = ((parser_nodes___AIsaExpr___n_expr_t)CALL( self,COLOR_parser_nodes___AIsaExpr___n_expr))( self) /*AIsaExpr::n_expr*/; - variable1 = ((typing___PExpr___is_variable_t)CALL(variable1,COLOR_typing___PExpr___is_variable))(variable1) /*PExpr::is_variable*/; - if (UNTAG_Bool(variable1)) { /*if*/ - variable2 = ((parser_nodes___AIsaExpr___n_expr_t)CALL( self,COLOR_parser_nodes___AIsaExpr___n_expr))( self) /*AIsaExpr::n_expr*/; - variable1 = variable2; - variable2 = TAG_Bool(( variable1 /*n*/==NIT_NULL) || VAL_ISA( variable1 /*n*/, COLOR_AVarExpr, ID_AVarExpr)) /*cast AVarExpr*/; - if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_typing___AIsaExpr___after_typing, 1135); nit_exit(1);} - variable2 = ((typing___TypingVisitor___variable_ctx_t)CALL( variable0 /*v*/,COLOR_typing___TypingVisitor___variable_ctx))( variable0 /*v*/) /*TypingVisitor::variable_ctx*/; - variable3 = ((typing___AVarFormExpr___variable_t)CALL( variable1 /*n*/,COLOR_typing___AVarFormExpr___variable))( variable1 /*n*/) /*AVarExpr::variable*/; - variable4 = ((parser_nodes___AIsaExpr___n_type_t)CALL( self,COLOR_parser_nodes___AIsaExpr___n_type))( self) /*AIsaExpr::n_type*/; - variable4 = ((typing___PType___stype_t)CALL(variable4,COLOR_typing___PType___stype))(variable4) /*PType::stype*/; - variable2 = ((typing___VariableContext___sub_with_t)CALL(variable2,COLOR_typing___VariableContext___sub_with))(variable2, variable3, variable4) /*VariableContext::sub_with*/; - ATTR_typing___PExpr____if_true_variable_ctx( self) /*AIsaExpr::_if_true_variable_ctx*/ = variable2; - } - variable1 = ((syntax_base___AbsSyntaxVisitor___type_bool_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___type_bool))( variable0 /*v*/) /*TypingVisitor::type_bool*/; - ATTR_typing___PExpr____stype( self) /*AIsaExpr::_stype*/ = variable1; + struct trace_t trace = {NULL, NULL, 1612, LOCATE_typing___AIsaExpr___after_typing}; + val_t variable[6]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Method return value and escape marker */ + /* Register variable[3]: Result */ + variable[3] = CALL_parser_nodes___AIsaExpr___n_expr(variable[0])(variable[0]) /*AIsaExpr::n_expr*/; + /* Register variable[4]: Result */ + variable[4] = CALL_parser_nodes___AIsaExpr___n_type(variable[0])(variable[0]) /*AIsaExpr::n_type*/; + CALL_typing___ATypeCheckExpr___check_expr_cast(variable[0])(variable[0], variable[1] /*v*/, variable[3], variable[4]) /*ATypeCheckExpr::check_expr_cast*/; + /* Register variable[3]: Local variable */ + /* Register variable[4]: Result */ + variable[4] = CALL_parser_nodes___AIsaExpr___n_expr(variable[0])(variable[0]) /*AIsaExpr::n_expr*/; + /* Register variable[4]: Result */ + variable[4] = CALL_typing___PExpr___its_variable(variable[4])(variable[4]) /*PExpr::its_variable*/; + variable[3] = variable[4]; + /* Register variable[4]: Result */ + variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*variable*/ == NIT_NULL /*null*/) || (( variable[3] /*variable*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*variable*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*variable*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*variable*/)( variable[3] /*variable*/, NIT_NULL /*null*/) /*Object::==*/))))))); + if (UNTAG_Bool(variable[4])) { /*if*/ + /* Register variable[4]: Result */ + variable[4] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/; + /* Register variable[5]: Result */ + variable[5] = CALL_parser_nodes___AIsaExpr___n_type(variable[0])(variable[0]) /*AIsaExpr::n_type*/; + /* Register variable[5]: Result */ + variable[5] = CALL_typing___PType___stype(variable[5])(variable[5]) /*PType::stype*/; + /* Register variable[4]: Result */ + variable[4] = CALL_control_flow___VariableContext___sub_with(variable[4])(variable[4], variable[0], variable[3] /*variable*/, variable[5]) /*VariableContext::sub_with*/; + ATTR_typing___PExpr____if_true_variable_ctx(variable[0]) /*PExpr::_if_true_variable_ctx*/ = variable[4]; + } + /* Register variable[4]: Result */ + variable[4] = CALL_syntax_base___AbsSyntaxVisitor___type_bool( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::type_bool*/; + ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[4]; + ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true); + return_label346: while(false); + tracehead = trace.prev; + return; +} +void typing___AAsCastExpr___after_typing(val_t self, val_t param0) { + struct trace_t trace = {NULL, NULL, 1626, LOCATE_typing___AAsCastExpr___after_typing}; + val_t variable[5]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Method return value and escape marker */ + /* Register variable[3]: Result */ + variable[3] = CALL_parser_nodes___AAsCastExpr___n_expr(variable[0])(variable[0]) /*AAsCastExpr::n_expr*/; + /* Register variable[4]: Result */ + variable[4] = CALL_parser_nodes___AAsCastExpr___n_type(variable[0])(variable[0]) /*AAsCastExpr::n_type*/; + CALL_typing___ATypeCheckExpr___check_expr_cast(variable[0])(variable[0], variable[1] /*v*/, variable[3], variable[4]) /*ATypeCheckExpr::check_expr_cast*/; + /* Register variable[3]: Result */ + variable[3] = CALL_parser_nodes___AAsCastExpr___n_type(variable[0])(variable[0]) /*AAsCastExpr::n_type*/; + /* Register variable[3]: Result */ + variable[3] = CALL_typing___PType___stype(variable[3])(variable[3]) /*PType::stype*/; + ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[3]; + /* Register variable[3]: Result */ + variable[3] = ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/; + /* Register variable[3]: Result */ + variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] == NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], NIT_NULL /*null*/) /*Object::==*/))))))); + ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = variable[3]; + return_label347: while(false); + tracehead = trace.prev; + return; +} +void typing___AAsNotnullExpr___after_typing(val_t self, val_t param0) { + struct trace_t trace = {NULL, NULL, 1635, LOCATE_typing___AAsNotnullExpr___after_typing}; + static val_t once_value_349 = NIT_NULL; /* Once value for string variable[5]*/ + static val_t once_value_350 = NIT_NULL; /* Once value for string variable[5]*/ + val_t variable[6]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Method return value and escape marker */ + /* Register variable[3]: Result */ + variable[3] = CALL_parser_nodes___AAsNotnullExpr___n_expr(variable[0])(variable[0]) /*AAsNotnullExpr::n_expr*/; + /* Register variable[3]: Result */ + variable[3] = CALL_syntax_base___AbsSyntaxVisitor___check_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*AbsSyntaxVisitor::check_expr*/; + if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[3])))) { /*if*/ + goto return_label348; + } + /* Register variable[3]: Local variable */ + /* Register variable[4]: Result */ + variable[4] = CALL_parser_nodes___AAsNotnullExpr___n_expr(variable[0])(variable[0]) /*AAsNotnullExpr::n_expr*/; + /* Register variable[4]: Result */ + variable[4] = CALL_syntax_base___PExpr___stype(variable[4])(variable[4]) /*PExpr::stype*/; + variable[3] = variable[4]; + /* Register variable[4]: Result */ + variable[4] = TAG_Bool(( variable[3] /*t*/==NIT_NULL) || VAL_ISA( variable[3] /*t*/, COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/; + if (UNTAG_Bool(variable[4])) { /*if*/ + /* Register variable[4]: Result */ + variable[4] = CALL_parser_nodes___AAsNotnullExpr___n_expr(variable[0])(variable[0]) /*AAsNotnullExpr::n_expr*/; + /* Register variable[5]: Once String constant */ + if (once_value_349 != NIT_NULL) variable[5] = once_value_349; + else { + variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Type error: 'as(not null)' on 'null' value."), TAG_Int(43)) /*new String*/; + once_value_349 = variable[5]; + } + /* Register variable[5]: Result */ + CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[4], variable[5]) /*AbsSyntaxVisitor::error*/; + goto return_label348; + } else { /*if*/ + /* Register variable[4]: Result */ + variable[4] = CALL_static_type___MMType___is_nullable( variable[3] /*t*/)( variable[3] /*t*/) /*MMType::is_nullable*/; + if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[4])))) { /*if*/ + /* Register variable[4]: Result */ + variable[4] = CALL_parser_nodes___AAsNotnullExpr___n_expr(variable[0])(variable[0]) /*AAsNotnullExpr::n_expr*/; + /* Register variable[5]: Once String constant */ + if (once_value_350 != NIT_NULL) variable[5] = once_value_350; + else { + variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Warning: 'as(not null)' on non nullable type."), TAG_Int(45)) /*new String*/; + once_value_350 = variable[5]; + } + /* Register variable[5]: Result */ + CALL_syntax_base___AbsSyntaxVisitor___warning( variable[1] /*v*/)( variable[1] /*v*/, variable[4], variable[5]) /*AbsSyntaxVisitor::warning*/; + } + } + /* Register variable[4]: Result */ + variable[4] = CALL_parser_nodes___AAsNotnullExpr___n_expr(variable[0])(variable[0]) /*AAsNotnullExpr::n_expr*/; + /* Register variable[4]: Result */ + variable[4] = CALL_syntax_base___PExpr___stype(variable[4])(variable[4]) /*PExpr::stype*/; + /* Register variable[4]: Result */ + variable[4] = CALL_static_type___MMType___as_notnull(variable[4])(variable[4]) /*MMType::as_notnull*/; + ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[4]; + ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true); + return_label348: while(false); tracehead = trace.prev; return; } void typing___AProxyExpr___after_typing(val_t self, val_t param0) { - struct trace_t trace = {NULL, LOCATE_typing___AProxyExpr___after_typing, 1143}; - val_t variable0; - val_t variable1; - trace.prev = tracehead; tracehead = &trace; - variable0 = param0; - variable1 = ((parser_nodes___AProxyExpr___n_expr_t)CALL( self,COLOR_parser_nodes___AProxyExpr___n_expr))( self) /*AProxyExpr::n_expr*/; - variable1 = ((typing___PExpr___stype_t)CALL(variable1,COLOR_syntax_base___PExpr___stype))(variable1) /*PExpr::stype*/; - ATTR_typing___PExpr____stype( self) /*AProxyExpr::_stype*/ = variable1; + struct trace_t trace = {NULL, NULL, 1651, LOCATE_typing___AProxyExpr___after_typing}; + val_t variable[4]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Method return value and escape marker */ + /* Register variable[3]: Result */ + variable[3] = CALL_parser_nodes___AProxyExpr___n_expr(variable[0])(variable[0]) /*AProxyExpr::n_expr*/; + /* Register variable[3]: Result */ + variable[3] = CALL_syntax_base___PExpr___is_typed(variable[3])(variable[3]) /*PExpr::is_typed*/; + if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[3])))) { /*if*/ + goto return_label351; + } + ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true); + /* Register variable[3]: Result */ + variable[3] = CALL_parser_nodes___AProxyExpr___n_expr(variable[0])(variable[0]) /*AProxyExpr::n_expr*/; + /* Register variable[3]: Result */ + variable[3] = CALL_syntax_base___PExpr___is_statement(variable[3])(variable[3]) /*PExpr::is_statement*/; + if (UNTAG_Bool(variable[3])) { /*if*/ + goto return_label351; + } + /* Register variable[3]: Result */ + variable[3] = CALL_parser_nodes___AProxyExpr___n_expr(variable[0])(variable[0]) /*AProxyExpr::n_expr*/; + /* Register variable[3]: Result */ + variable[3] = CALL_syntax_base___PExpr___stype(variable[3])(variable[3]) /*PExpr::stype*/; + ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[3]; + return_label351: while(false); + tracehead = trace.prev; + return; +} +void typing___AOnceExpr___accept_typing(val_t self, val_t param0) { + struct trace_t trace = {NULL, NULL, 1661, LOCATE_typing___AOnceExpr___accept_typing}; + static val_t once_value_353 = NIT_NULL; /* Once value for string variable[3]*/ + val_t variable[4]; + struct WBT_ **closurevariable = NULL; + trace.prev = tracehead; tracehead = &trace; + trace.file = LOCATE_typing; + /* Register variable[0]: Local variable */ + variable[0] = self; + /* Register variable[1]: Local variable */ + variable[1] = param0; + /* Register variable[2]: Method return value and escape marker */ + /* Register variable[3]: Result */ + variable[3] = CALL_typing___TypingVisitor___once_count( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::once_count*/; + /* Register variable[3]: Result */ + variable[3] = TAG_Bool(UNTAG_Int(variable[3])>UNTAG_Int( TAG_Int(0))); + if (UNTAG_Bool(variable[3])) { /*if*/ + /* Register variable[3]: Once String constant */ + if (once_value_353 != NIT_NULL) variable[3] = once_value_353; + else { + variable[3] = NEW_String_string___String___with_native(BOX_NativeString("Useless once in a once expression."), TAG_Int(34)) /*new String*/; + once_value_353 = variable[3]; + } + /* Register variable[3]: Result */ + CALL_syntax_base___AbsSyntaxVisitor___warning( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[3]) /*AbsSyntaxVisitor::warning*/; + } + /* Register variable[3]: Result */ + variable[3] = CALL_typing___TypingVisitor___once_count( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::once_count*/; + /* Register variable[3]: Result */ + variable[3] = TAG_Int(UNTAG_Int(variable[3])+UNTAG_Int( TAG_Int(1))); + CALL_typing___TypingVisitor___once_count__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*TypingVisitor::once_count=*/; + CALL_SUPER_typing___AOnceExpr___accept_typing(variable[0])(variable[0], variable[1]) /*super AOnceExpr::accept_typing*/; + /* Register variable[3]: Result */ + variable[3] = CALL_typing___TypingVisitor___once_count( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::once_count*/; + /* Register variable[3]: Result */ + variable[3] = TAG_Int(UNTAG_Int(variable[3])-UNTAG_Int( TAG_Int(1))); + CALL_typing___TypingVisitor___once_count__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*TypingVisitor::once_count=*/; + return_label352: while(false); tracehead = trace.prev; return; }