- } else { /*if*/
- variable[9] = TAG_Bool(( variable[8] /*min_arity*/)!=( TAG_Int(0)));
- if (UNTAG_Bool(variable[9])) { /*if*/
- variable[9] = variable[0];
- variable[10] = NEW_String_string___String___init(); /*new String*/
- variable[11] = NEW_String_string___String___with_native(BOX_NativeString("Error: "), TAG_Int(7)); /*new String*/
- variable[12] = variable[11];
- ((string___String___append_t)CALL(variable[10],COLOR_abstract_collection___IndexedCollection___append))(variable[10], variable[12]) /*String::append*/;
- variable[13] = variable[3] /*name*/;
- variable[13] = ((string___String___to_s_t)CALL(variable[13],COLOR_string___Object___to_s))(variable[13]) /*String::to_s*/;
- ((string___String___append_t)CALL(variable[10],COLOR_abstract_collection___IndexedCollection___append))(variable[10], variable[13]) /*String::append*/;
- variable[14] = NEW_String_string___String___with_native(BOX_NativeString(" requires "), TAG_Int(10)); /*new String*/
- variable[15] = variable[14];
- ((string___String___append_t)CALL(variable[10],COLOR_abstract_collection___IndexedCollection___append))(variable[10], variable[15]) /*String::append*/;
- variable[16] = ((array___AbstractArray___length_t)CALL( variable[7] /*cs*/,COLOR_abstract_collection___Collection___length))( variable[7] /*cs*/) /*AbstractArray::length*/;
- variable[17] = variable[16];
- variable[17] = ((string___String___to_s_t)CALL(variable[17],COLOR_string___Object___to_s))(variable[17]) /*String::to_s*/;
- ((string___String___append_t)CALL(variable[10],COLOR_abstract_collection___IndexedCollection___append))(variable[10], variable[17]) /*String::append*/;
- variable[18] = NEW_String_string___String___with_native(BOX_NativeString(" blocs."), TAG_Int(7)); /*new String*/
- variable[19] = variable[18];
- ((string___String___append_t)CALL(variable[10],COLOR_abstract_collection___IndexedCollection___append))(variable[10], variable[19]) /*String::append*/;
- ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable[1] /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable[1] /*v*/, variable[9], variable[10]) /*AbsSyntaxVisitor::error*/;
- }
- }
- variable[5] = variable[6] /*t*/;
- goto return_label90;
- return_label90: while(false);
- tracehead = trace.prev;
- return variable[5];
-}
-val_t typing___AAbsSendExpr___prop(val_t self) {
- struct trace_t trace = {NULL, NULL, 988, LOCATE_typing___AAbsSendExpr___prop};
- val_t *variable = NULL;
- void **closurevariable = NULL;
- trace.prev = tracehead; tracehead = &trace;
- trace.file = LOCATE_typing;
- tracehead = trace.prev;
- return ATTR_typing___AAbsSendExpr____prop( self) /*AAbsSendExpr::_prop*/;
-}
-val_t typing___AAbsSendExpr___arguments(val_t self) {
- struct trace_t trace = {NULL, NULL, 991, LOCATE_typing___AAbsSendExpr___arguments};
- val_t *variable = NULL;
- void **closurevariable = NULL;
- trace.prev = tracehead; tracehead = &trace;
- trace.file = LOCATE_typing;
- tracehead = trace.prev;
- return ATTR_typing___AAbsSendExpr____arguments( self) /*AAbsSendExpr::_arguments*/;
-}
-val_t typing___AAbsSendExpr___return_type(val_t self) {
- struct trace_t trace = {NULL, NULL, 994, LOCATE_typing___AAbsSendExpr___return_type};
- val_t *variable = NULL;
- void **closurevariable = NULL;
- trace.prev = tracehead; tracehead = &trace;
- trace.file = LOCATE_typing;
- tracehead = trace.prev;
- return ATTR_typing___AAbsSendExpr____return_type( self) /*AAbsSendExpr::_return_type*/;
-}
-void typing___ASuperInitCall___register_super_init_call(val_t self, val_t param0, val_t param1) {
- struct trace_t trace = {NULL, NULL, 1002, LOCATE_typing___ASuperInitCall___register_super_init_call};
- val_t variable[21];
- void **closurevariable = NULL;
- trace.prev = tracehead; tracehead = &trace;
- trace.file = LOCATE_typing;
- variable[0] = self;
- variable[1] = param0;
- variable[2] = param1;
- variable[4] = variable[0];
- variable[4] = ((parser_prod___PNode___parent_t)CALL(variable[4],COLOR_parser_prod___PNode___parent))(variable[4]) /*PNode::parent*/;
- variable[5] = ((typing___TypingVisitor___top_block_t)CALL( variable[1] /*v*/,COLOR_typing___TypingVisitor___top_block))( variable[1] /*v*/) /*TypingVisitor::top_block*/;
- variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[4] == variable[5]) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4],variable[5])):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4], variable[5]) /*Object::==*/)))))));
- variable[5] = variable[4];
- if (UNTAG_Bool(variable[5])) { /* and */
- variable[5] = variable[0];
- variable[6] = ((typing___TypingVisitor___top_block_t)CALL( variable[1] /*v*/,COLOR_typing___TypingVisitor___top_block))( variable[1] /*v*/) /*TypingVisitor::top_block*/;
- variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[5] == variable[6]) || ((variable[5] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[5],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[5],variable[6])):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[5],COLOR_kernel___Object_____eqeq))(variable[5], variable[6]) /*Object::==*/)))))));
- }
- variable[4] = variable[5];
- if (UNTAG_Bool(variable[4])) { /*if*/
- variable[4] = variable[0];
- variable[5] = NEW_String_string___String___init(); /*new String*/
- variable[6] = NEW_String_string___String___with_native(BOX_NativeString("Error: Constructor invocation "), TAG_Int(30)); /*new String*/
- variable[7] = variable[6];
- ((string___String___append_t)CALL(variable[5],COLOR_abstract_collection___IndexedCollection___append))(variable[5], variable[7]) /*String::append*/;
- variable[8] = variable[2] /*property*/;
- variable[8] = ((string___String___to_s_t)CALL(variable[8],COLOR_string___Object___to_s))(variable[8]) /*String::to_s*/;
- ((string___String___append_t)CALL(variable[5],COLOR_abstract_collection___IndexedCollection___append))(variable[5], variable[8]) /*String::append*/;
- variable[9] = NEW_String_string___String___with_native(BOX_NativeString(" must not be in nested block."), TAG_Int(29)); /*new String*/
- variable[10] = variable[9];
- ((string___String___append_t)CALL(variable[5],COLOR_abstract_collection___IndexedCollection___append))(variable[5], variable[10]) /*String::append*/;
- ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable[1] /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable[1] /*v*/, variable[4], variable[5]) /*AbsSyntaxVisitor::error*/;
- }
- variable[5] = ((syntax_base___AbsSyntaxVisitor___module_t)CALL( variable[1] /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___module))( variable[1] /*v*/) /*AbsSyntaxVisitor::module*/;
- variable[6] = ((abstractmetamodel___MMLocalProperty___global_t)CALL( variable[2] /*property*/,COLOR_abstractmetamodel___MMLocalProperty___global))( variable[2] /*property*/) /*MMLocalProperty::global*/;
- variable[6] = ((abstractmetamodel___MMGlobalProperty___intro_t)CALL(variable[6],COLOR_abstractmetamodel___MMGlobalProperty___intro))(variable[6]) /*MMGlobalProperty::intro*/;
- variable[6] = ((abstractmetamodel___MMLocalProperty___local_class_t)CALL(variable[6],COLOR_abstractmetamodel___MMLocalProperty___local_class))(variable[6]) /*MMLocalProperty::local_class*/;
- variable[6] = ((abstractmetamodel___MMLocalClass___global_t)CALL(variable[6],COLOR_abstractmetamodel___MMLocalClass___global))(variable[6]) /*MMLocalClass::global*/;
- variable[5] = ((abstractmetamodel___MMModule_____bra_t)CALL(variable[5],COLOR_abstractmetamodel___MMModule_____bra))(variable[5], variable[6]) /*MMModule::[]*/;
- variable[4] = variable[5];
- variable[5] = NIT_NULL /*null*/;
- variable[6] = ((typing___TypingVisitor___explicit_super_init_calls_t)CALL( variable[1] /*v*/,COLOR_typing___TypingVisitor___explicit_super_init_calls))( variable[1] /*v*/) /*TypingVisitor::explicit_super_init_calls*/;
- variable[6] = ((array___AbstractArray___is_empty_t)CALL(variable[6],COLOR_abstract_collection___Collection___is_empty))(variable[6]) /*AbstractArray::is_empty*/;
- if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[6])))) { /*if*/
- variable[6] = ((typing___TypingVisitor___explicit_super_init_calls_t)CALL( variable[1] /*v*/,COLOR_typing___TypingVisitor___explicit_super_init_calls))( variable[1] /*v*/) /*TypingVisitor::explicit_super_init_calls*/;
- variable[6] = ((abstract_collection___IndexedCollection___last_t)CALL(variable[6],COLOR_abstract_collection___IndexedCollection___last))(variable[6]) /*IndexedCollection::last*/;
- variable[6] = ((abstractmetamodel___MMLocalProperty___global_t)CALL(variable[6],COLOR_abstractmetamodel___MMLocalProperty___global))(variable[6]) /*MMLocalProperty::global*/;
- variable[6] = ((abstractmetamodel___MMGlobalProperty___intro_t)CALL(variable[6],COLOR_abstractmetamodel___MMGlobalProperty___intro))(variable[6]) /*MMGlobalProperty::intro*/;
- variable[6] = ((abstractmetamodel___MMLocalProperty___local_class_t)CALL(variable[6],COLOR_abstractmetamodel___MMLocalProperty___local_class))(variable[6]) /*MMLocalProperty::local_class*/;
- variable[5] = variable[6] /*prev_class=*/;
- }
- variable[7] = ((syntax_base___AbsSyntaxVisitor___local_class_t)CALL( variable[1] /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___local_class))( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
- variable[7] = ((abstractmetamodel___MMLocalClass___cshe_t)CALL(variable[7],COLOR_abstractmetamodel___MMLocalClass___cshe))(variable[7]) /*MMLocalClass::cshe*/;
- variable[7] = ((partial_order___PartialOrderElement___reverse_linear_extension_t)CALL(variable[7],COLOR_partial_order___PartialOrderElement___reverse_linear_extension))(variable[7]) /*PartialOrderElement::reverse_linear_extension*/;
- variable[6] = variable[7];
- variable[7] = ((syntax_base___AbsSyntaxVisitor___local_class_t)CALL( variable[1] /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___local_class))( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
- variable[7] = TAG_Bool(( variable[4] /*cla*/ == variable[7]) || (( variable[4] /*cla*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[4] /*cla*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*cla*/,variable[7])):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[4] /*cla*/,COLOR_kernel___Object_____eqeq))( variable[4] /*cla*/, variable[7]) /*Object::==*/)))));
- if (UNTAG_Bool(variable[7])) { /*if*/
- ((typing___TypingVisitor___explicit_other_init_call__eq_t)CALL( variable[1] /*v*/,COLOR_typing___TypingVisitor___explicit_other_init_call__eq))( variable[1] /*v*/, TAG_Bool(true)) /*TypingVisitor::explicit_other_init_call=*/;
- } else { /*if*/
- variable[7] = ((array___AbstractArray___has_t)CALL( variable[6] /*order*/,COLOR_abstract_collection___Collection___has))( variable[6] /*order*/, variable[4] /*cla*/) /*AbstractArray::has*/;
- if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[7])))) { /*if*/
- variable[7] = variable[0];
- variable[8] = NEW_String_string___String___init(); /*new String*/
- variable[9] = NEW_String_string___String___with_native(BOX_NativeString("Error: Constructor of class "), TAG_Int(28)); /*new String*/
- variable[10] = variable[9];
- ((string___String___append_t)CALL(variable[8],COLOR_abstract_collection___IndexedCollection___append))(variable[8], variable[10]) /*String::append*/;
- variable[11] = variable[4] /*cla*/;
- variable[11] = ((string___String___to_s_t)CALL(variable[11],COLOR_string___Object___to_s))(variable[11]) /*String::to_s*/;
- ((string___String___append_t)CALL(variable[8],COLOR_abstract_collection___IndexedCollection___append))(variable[8], variable[11]) /*String::append*/;
- variable[12] = NEW_String_string___String___with_native(BOX_NativeString(" must be one in "), TAG_Int(16)); /*new String*/
- variable[13] = variable[12];
- ((string___String___append_t)CALL(variable[8],COLOR_abstract_collection___IndexedCollection___append))(variable[8], variable[13]) /*String::append*/;
- variable[14] = NEW_String_string___String___with_native(BOX_NativeString(", "), TAG_Int(2)); /*new String*/
- variable[14] = ((string___Collection___join_t)CALL( variable[6] /*order*/,COLOR_string___Collection___join))( variable[6] /*order*/, variable[14]) /*Collection::join*/;
- variable[15] = variable[14];
- ((string___String___append_t)CALL(variable[8],COLOR_abstract_collection___IndexedCollection___append))(variable[8], variable[15]) /*String::append*/;
- variable[16] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/
- variable[17] = variable[16];
- ((string___String___append_t)CALL(variable[8],COLOR_abstract_collection___IndexedCollection___append))(variable[8], variable[17]) /*String::append*/;
- ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable[1] /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable[1] /*v*/, variable[7], variable[8]) /*AbsSyntaxVisitor::error*/;
- } else { /*if*/
- variable[7] = TAG_Bool(( variable[4] /*cla*/ == variable[5] /*prev_class*/) || (( variable[4] /*cla*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[4] /*cla*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*cla*/, variable[5] /*prev_class*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[4] /*cla*/,COLOR_kernel___Object_____eqeq))( variable[4] /*cla*/, variable[5] /*prev_class*/) /*Object::==*/)))));
- if (UNTAG_Bool(variable[7])) { /*if*/
- variable[7] = variable[0];
- variable[8] = NEW_String_string___String___init(); /*new String*/
- variable[9] = NEW_String_string___String___with_native(BOX_NativeString("Error: Only one super constructor invocation of class "), TAG_Int(54)); /*new String*/
- variable[10] = variable[9];
- ((string___String___append_t)CALL(variable[8],COLOR_abstract_collection___IndexedCollection___append))(variable[8], variable[10]) /*String::append*/;
- variable[11] = variable[4] /*cla*/;
- variable[11] = ((string___String___to_s_t)CALL(variable[11],COLOR_string___Object___to_s))(variable[11]) /*String::to_s*/;
- ((string___String___append_t)CALL(variable[8],COLOR_abstract_collection___IndexedCollection___append))(variable[8], variable[11]) /*String::append*/;
- variable[12] = NEW_String_string___String___with_native(BOX_NativeString(" is allowed."), TAG_Int(12)); /*new String*/
- variable[13] = variable[12];
- ((string___String___append_t)CALL(variable[8],COLOR_abstract_collection___IndexedCollection___append))(variable[8], variable[13]) /*String::append*/;
- ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable[1] /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable[1] /*v*/, variable[7], variable[8]) /*AbsSyntaxVisitor::error*/;
- } else { /*if*/
- variable[8] = TAG_Bool(( variable[5] /*prev_class*/ == NIT_NULL /*null*/) || (( variable[5] /*prev_class*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[5] /*prev_class*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*prev_class*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[5] /*prev_class*/,COLOR_kernel___Object_____eqeq))( variable[5] /*prev_class*/, NIT_NULL /*null*/) /*Object::==*/)))));
- variable[7] = variable[8];
- variable[8] = ((array___AbstractArray___iterator_t)CALL( variable[6] /*order*/,COLOR_abstract_collection___Collection___iterator))( variable[6] /*order*/) /*AbstractArray::iterator*/;
- while (true) { /*for*/
- variable[9] = ((array___ArrayIterator___is_ok_t)CALL(variable[8],COLOR_abstract_collection___Iterator___is_ok))(variable[8]) /*ArrayIterator::is_ok*/;
- if (!UNTAG_Bool(variable[9])) break; /*for*/
- variable[9] = ((array___ArrayIterator___item_t)CALL(variable[8],COLOR_abstract_collection___Iterator___item))(variable[8]) /*ArrayIterator::item*/;
- variable[10] = variable[9];
- variable[11] = TAG_Bool(( variable[10] /*c*/ == variable[5] /*prev_class*/) || (( variable[10] /*c*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*c*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*c*/, variable[5] /*prev_class*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*c*/,COLOR_kernel___Object_____eqeq))( variable[10] /*c*/, variable[5] /*prev_class*/) /*Object::==*/)))));
- if (UNTAG_Bool(variable[11])) { /*if*/
- variable[7] = TAG_Bool(true) /*last_is_found=*/;
- } else { /*if*/
- variable[11] = TAG_Bool(( variable[10] /*c*/ == variable[4] /*cla*/) || (( variable[10] /*c*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*c*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*c*/, variable[4] /*cla*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*c*/,COLOR_kernel___Object_____eqeq))( variable[10] /*c*/, variable[4] /*cla*/) /*Object::==*/)))));
- if (UNTAG_Bool(variable[11])) { /*if*/
- if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool( variable[7] /*last_is_found*/)))) { /*if*/
- variable[11] = variable[0];
- variable[12] = NEW_String_string___String___init(); /*new String*/
- variable[13] = NEW_String_string___String___with_native(BOX_NativeString("Error: Constructor of "), TAG_Int(22)); /*new String*/
- variable[14] = variable[13];
- ((string___String___append_t)CALL(variable[12],COLOR_abstract_collection___IndexedCollection___append))(variable[12], variable[14]) /*String::append*/;
- variable[15] = variable[10] /*c*/;
- variable[15] = ((string___String___to_s_t)CALL(variable[15],COLOR_string___Object___to_s))(variable[15]) /*String::to_s*/;
- ((string___String___append_t)CALL(variable[12],COLOR_abstract_collection___IndexedCollection___append))(variable[12], variable[15]) /*String::append*/;
- variable[16] = NEW_String_string___String___with_native(BOX_NativeString(" must be invoked before constructor of "), TAG_Int(39)); /*new String*/
- variable[17] = variable[16];
- ((string___String___append_t)CALL(variable[12],COLOR_abstract_collection___IndexedCollection___append))(variable[12], variable[17]) /*String::append*/;
- variable[18] = variable[5] /*prev_class*/;
- variable[18] = ((string___String___to_s_t)CALL(variable[18],COLOR_string___Object___to_s))(variable[18]) /*String::to_s*/;
- ((string___String___append_t)CALL(variable[12],COLOR_abstract_collection___IndexedCollection___append))(variable[12], variable[18]) /*String::append*/;
- variable[19] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
- variable[20] = variable[19];
- ((string___String___append_t)CALL(variable[12],COLOR_abstract_collection___IndexedCollection___append))(variable[12], variable[20]) /*String::append*/;
- ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable[1] /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable[1] /*v*/, variable[11], variable[12]) /*AbsSyntaxVisitor::error*/;
+ } else {
+ /* ./syntax//typing.nit:1306 */
+ REGB2 = TAG_Int(0);
+ REGB0 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ /* ./../lib/standard//kernel.nit:207 */
+ REGB2 = TAG_Bool((REGB1)==(REGB2));
+ /* ./syntax//typing.nit:1306 */
+ REGB0 = REGB2;
+ }
+ REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+ if (UNTAG_Bool(REGB0)) {
+ /* ./syntax//typing.nit:1307 */
+ REGB0 = TAG_Int(3);
+ fra.me.REG[8] = NEW_Array_array___Array___with_capacity(REGB0);
+ if (!once_value_24) {
+ fra.me.REG[6] = BOX_NativeString("Error: ");
+ REGB0 = TAG_Int(7);
+ fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
+ once_value_24 = fra.me.REG[6];
+ register_static_object(&once_value_24);
+ } else fra.me.REG[6] = once_value_24;
+ fra.me.REG[6] = fra.me.REG[6];
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
+ fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+ if (!once_value_25) {
+ fra.me.REG[3] = BOX_NativeString(" does not require blocks.");
+ REGB0 = TAG_Int(25);
+ fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+ once_value_25 = fra.me.REG[3];
+ register_static_object(&once_value_25);
+ } else fra.me.REG[3] = once_value_25;
+ fra.me.REG[3] = fra.me.REG[3];
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+ fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
+ CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
+ }
+ }
+ /* ./syntax//typing.nit:1309 */
+ goto label26;
+ label26: while(0);
+ stack_frame_head = fra.me.prev;
+ return fra.me.REG[5];
+}
+void typing___AAbsSendExpr___do_typing(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7){
+ struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+ val_t REGB0;
+ val_t REGB1;
+ val_t REGB2;
+ val_t tmp;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_typing;
+ fra.me.line = 1314;
+ fra.me.meth = LOCATE_typing___AAbsSendExpr___do_typing;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 7;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[1] = NIT_NULL;
+ fra.me.REG[2] = NIT_NULL;
+ fra.me.REG[3] = NIT_NULL;
+ fra.me.REG[4] = NIT_NULL;
+ fra.me.REG[5] = NIT_NULL;
+ fra.me.REG[6] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ fra.me.REG[1] = p1;
+ fra.me.REG[2] = p2;
+ REGB0 = p3;
+ REGB1 = p4;
+ fra.me.REG[3] = p5;
+ fra.me.REG[4] = p6;
+ fra.me.REG[5] = p7;
+ /* ./syntax//typing.nit:1317 */
+ fra.me.REG[3] = CALL_typing___AAbsSendExpr___get_property(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], REGB0, fra.me.REG[3]);
+ /* ./syntax//typing.nit:1318 */
+ REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+ if (UNTAG_Bool(REGB2)) {
+ REGB2 = TAG_Bool(false);
+ REGB0 = REGB2;
+ } else {
+ REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+ REGB0 = REGB2;
+ }
+ }
+ if (UNTAG_Bool(REGB0)) {
+ goto label1;
+ }
+ /* ./syntax//typing.nit:1319 */
+ fra.me.REG[2] = CALL_typing___AAbsSendExpr___get_signature(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], REGB1);
+ /* ./syntax//typing.nit:1320 */
+ REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+ if (UNTAG_Bool(REGB1)) {
+ nit_abort("Reciever is null", NULL, LOCATE_typing, 1320);
+ }
+ fra.me.REG[6] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
+ REGB1 = CALL_typing___AAbsAbsSendExpr___process_signature(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[6], fra.me.REG[4]);
+ REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
+ if (UNTAG_Bool(REGB1)) {
+ goto label1;
+ }
+ /* ./syntax//typing.nit:1321 */
+ REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+ if (UNTAG_Bool(REGB1)) {
+ nit_abort("Reciever is null", NULL, LOCATE_typing, 1321);
+ }
+ fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
+ fra.me.REG[5] = CALL_typing___AAbsAbsSendExpr___process_closures(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[4], fra.me.REG[5]);
+ /* ./syntax//typing.nit:1322 */
+ REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+ if (UNTAG_Bool(REGB0)) {
+ REGB0 = TAG_Bool(false);
+ REGB1 = REGB0;
+ } else {
+ REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+ REGB1 = REGB0;
+ }
+ }
+ if (UNTAG_Bool(REGB1)) {
+ fra.me.REG[4] = CALL_static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
+ REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+ if (UNTAG_Bool(REGB0)) {
+ REGB0 = TAG_Bool(false);
+ REGB1 = REGB0;
+ } else {
+ REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+ REGB1 = REGB0;
+ }
+ }
+ REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
+ } else {
+ REGB0 = TAG_Bool(false);
+ REGB1 = REGB0;
+ }
+ if (UNTAG_Bool(REGB1)) {
+ goto label1;
+ }
+ /* ./syntax//typing.nit:1323 */
+ ATTR_typing___AAbsSendExpr____prop(fra.me.REG[0]) = fra.me.REG[3];
+ /* ./syntax//typing.nit:1324 */
+ ATTR_typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]) = fra.me.REG[2];
+ /* ./syntax//typing.nit:1325 */
+ ATTR_typing___AAbsSendExpr____return_type(fra.me.REG[0]) = fra.me.REG[5];
+ label1: while(0);
+ stack_frame_head = fra.me.prev;
+ return;
+}
+val_t typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
+ struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+ val_t REGB0;
+ val_t REGB1;
+ val_t REGB2;
+ val_t REGB3;
+ val_t tmp;
+ static val_t once_value_1; /* Once value */
+ static val_t once_value_2; /* Once value */
+ static val_t once_value_3; /* Once value */
+ static val_t once_value_4; /* Once value */
+ static val_t once_value_5; /* Once value */
+ static val_t once_value_6; /* Once value */
+ static val_t once_value_8; /* Once value */
+ static val_t once_value_9; /* Once value */
+ static val_t once_value_10; /* Once value */
+ static val_t once_value_11; /* Once value */
+ static val_t once_value_12; /* Once value */
+ static val_t once_value_13; /* Once value */
+ static val_t once_value_14; /* Once value */
+ static val_t once_value_15; /* Once value */
+ static val_t once_value_16; /* Once value */
+ static val_t once_value_17; /* Once value */
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_typing;
+ fra.me.line = 1328;
+ fra.me.meth = LOCATE_typing___AAbsSendExpr___get_property;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 10;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[1] = NIT_NULL;
+ fra.me.REG[2] = NIT_NULL;
+ fra.me.REG[3] = NIT_NULL;
+ fra.me.REG[4] = NIT_NULL;
+ fra.me.REG[5] = NIT_NULL;
+ fra.me.REG[6] = NIT_NULL;
+ fra.me.REG[7] = NIT_NULL;
+ fra.me.REG[8] = NIT_NULL;
+ fra.me.REG[9] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ fra.me.REG[1] = p1;
+ fra.me.REG[2] = p2;
+ REGB0 = p3;
+ fra.me.REG[3] = p4;
+ /* ./syntax//typing.nit:1330 */
+ REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
+ if (UNTAG_Bool(REGB1)) {
+ /* ./syntax//typing.nit:1331 */
+ if (!once_value_1) {
+ if (!once_value_2) {
+ fra.me.REG[4] = BOX_NativeString("==");
+ REGB1 = TAG_Int(2);
+ fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB1);
+ once_value_2 = fra.me.REG[4];
+ register_static_object(&once_value_2);
+ } else fra.me.REG[4] = once_value_2;
+ fra.me.REG[4] = fra.me.REG[4];
+ fra.me.REG[4] = CALL_symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
+ once_value_1 = fra.me.REG[4];
+ register_static_object(&once_value_1);
+ } else fra.me.REG[4] = once_value_1;
+ fra.me.REG[4] = fra.me.REG[4];
+ REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+ REGB1 = REGB2;
+ }
+ if (UNTAG_Bool(REGB1)) {
+ REGB1 = TAG_Bool(true);
+ } else {
+ if (!once_value_3) {
+ if (!once_value_4) {
+ fra.me.REG[4] = BOX_NativeString("!=");
+ REGB2 = TAG_Int(2);
+ fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB2);
+ once_value_4 = fra.me.REG[4];
+ register_static_object(&once_value_4);
+ } else fra.me.REG[4] = once_value_4;
+ fra.me.REG[4] = fra.me.REG[4];
+ fra.me.REG[4] = CALL_symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
+ once_value_3 = fra.me.REG[4];
+ register_static_object(&once_value_3);
+ } else fra.me.REG[4] = once_value_3;
+ fra.me.REG[4] = fra.me.REG[4];
+ REGB2 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
+ if (UNTAG_Bool(REGB2)) {
+ } else {
+ REGB3 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+ REGB2 = REGB3;
+ }
+ REGB1 = REGB2;
+ }
+ if (UNTAG_Bool(REGB1)) {
+ /* ./syntax//typing.nit:1333 */
+ fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
+ fra.me.REG[4] = CALL_static_type___MMType___as_nullable(fra.me.REG[4])(fra.me.REG[4]);
+ fra.me.REG[2] = fra.me.REG[4];
+ } else {
+ /* ./syntax//typing.nit:1335 */
+ REGB1 = TAG_Int(3);
+ fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB1);
+ if (!once_value_5) {
+ fra.me.REG[5] = BOX_NativeString("Error: Method '");
+ REGB1 = TAG_Int(15);
+ fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB1);
+ once_value_5 = fra.me.REG[5];
+ register_static_object(&once_value_5);
+ } else fra.me.REG[5] = once_value_5;
+ fra.me.REG[5] = fra.me.REG[5];
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+ fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+ if (!once_value_6) {
+ fra.me.REG[5] = BOX_NativeString("' call on 'null'.");
+ REGB1 = TAG_Int(17);
+ fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB1);
+ once_value_6 = fra.me.REG[5];
+ register_static_object(&once_value_6);
+ } else fra.me.REG[5] = once_value_6;
+ fra.me.REG[5] = fra.me.REG[5];
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+ fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
+ CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
+ /* ./syntax//typing.nit:1336 */
+ fra.me.REG[4] = NIT_NULL;
+ goto label7;
+ }
+ }
+ /* ./syntax//typing.nit:1339 */
+ fra.me.REG[5] = CALL_static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
+ /* ./syntax//typing.nit:1340 */
+ fra.me.REG[6] = NIT_NULL;
+ /* ./syntax//typing.nit:1341 */
+ REGB1 = CALL_abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+ if (UNTAG_Bool(REGB1)) {
+ fra.me.REG[7] = CALL_abstractmetamodel___MMLocalClass___select_method(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+ fra.me.REG[6] = fra.me.REG[7];
+ }
+ /* ./syntax//typing.nit:1342 */
+ REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+ if (UNTAG_Bool(REGB2)) {
+ REGB2 = TAG_Bool(false);
+ REGB1 = REGB2;
+ } else {
+ REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
+ REGB1 = REGB2;
+ }
+ }
+ if (UNTAG_Bool(REGB1)) {
+ fra.me.REG[7] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
+ fra.me.REG[7] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
+ REGB1 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[7])(fra.me.REG[7]);
+ } else {
+ REGB2 = TAG_Bool(false);
+ REGB1 = REGB2;
+ }
+ if (UNTAG_Bool(REGB1)) {
+ /* ./syntax//typing.nit:1343 */
+ fra.me.REG[7] = CALL_abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+ /* ./../lib/standard//collection//array.nit:23 */
+ REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
+ }
+ REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[7]);
+ /* ./syntax//typing.nit:1344 */
+ REGB2 = TAG_Int(1);
+ /* ./../lib/standard//kernel.nit:214 */
+ REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
+ /* ./syntax//typing.nit:1344 */
+ if (UNTAG_Bool(REGB2)) {
+ /* ./syntax//typing.nit:1345 */
+ REGB2 = TAG_Int(5);
+ fra.me.REG[8] = NEW_Array_array___Array___with_capacity(REGB2);
+ if (!once_value_8) {
+ fra.me.REG[9] = BOX_NativeString("Error: Ambigous method name '");
+ REGB2 = TAG_Int(29);
+ fra.me.REG[9] = NEW_String_string___String___with_native(fra.me.REG[9], REGB2);
+ once_value_8 = fra.me.REG[9];
+ register_static_object(&once_value_8);
+ } else fra.me.REG[9] = once_value_8;
+ fra.me.REG[9] = fra.me.REG[9];
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+ fra.me.REG[9] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+ if (!once_value_9) {
+ fra.me.REG[9] = BOX_NativeString("' for ");
+ REGB2 = TAG_Int(6);
+ fra.me.REG[9] = NEW_String_string___String___with_native(fra.me.REG[9], REGB2);
+ once_value_9 = fra.me.REG[9];
+ register_static_object(&once_value_9);
+ } else fra.me.REG[9] = once_value_9;
+ fra.me.REG[9] = fra.me.REG[9];
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+ if (!once_value_10) {
+ fra.me.REG[9] = BOX_NativeString(", ");
+ REGB2 = TAG_Int(2);
+ fra.me.REG[9] = NEW_String_string___String___with_native(fra.me.REG[9], REGB2);
+ once_value_10 = fra.me.REG[9];
+ register_static_object(&once_value_10);
+ } else fra.me.REG[9] = once_value_10;
+ fra.me.REG[9] = fra.me.REG[9];
+ fra.me.REG[9] = CALL_string___Collection___join(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+ if (!once_value_11) {
+ fra.me.REG[9] = BOX_NativeString(". Use explicit designation.");
+ REGB2 = TAG_Int(27);
+ fra.me.REG[9] = NEW_String_string___String___with_native(fra.me.REG[9], REGB2);
+ once_value_11 = fra.me.REG[9];
+ register_static_object(&once_value_11);
+ } else fra.me.REG[9] = once_value_11;
+ fra.me.REG[9] = fra.me.REG[9];
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+ fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
+ CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
+ /* ./syntax//typing.nit:1346 */
+ fra.me.REG[4] = NIT_NULL;
+ goto label7;
+ } else {
+ /* ./../lib/standard//collection//array.nit:23 */
+ REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
+ if (UNTAG_Bool(REGB2)) {
+ } else {
+ nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
+ }
+ REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[7]);
+ /* ./syntax//typing.nit:1347 */
+ REGB1 = TAG_Int(1);
+ REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
+ if (UNTAG_Bool(REGB3)) {
+ } else {
+ /* ./../lib/standard//kernel.nit:207 */
+ REGB1 = TAG_Bool((REGB2)==(REGB1));
+ /* ./syntax//typing.nit:1347 */
+ REGB3 = REGB1;
+ }
+ if (UNTAG_Bool(REGB3)) {
+ /* ./syntax//typing.nit:1348 */
+ fra.me.REG[7] = CALL_abstract_collection___Collection___first(fra.me.REG[7])(fra.me.REG[7]);
+ REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+ if (UNTAG_Bool(REGB3)) {
+ nit_abort("Reciever is null", NULL, LOCATE_typing, 1348);
+ }
+ fra.me.REG[7] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
+ fra.me.REG[7] = CALL_abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
+ /* ./syntax//typing.nit:1349 */
+ REGB3 = TAG_Bool(VAL_ISA(fra.me.REG[7], COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/;
+ if (UNTAG_Bool(REGB3)) {
+ } else {
+ nit_abort("Assert failed", NULL, LOCATE_typing, 1349);
+ }
+ /* ./syntax//typing.nit:1350 */
+ fra.me.REG[6] = fra.me.REG[7];
+ }
+ }
+ }
+ /* ./syntax//typing.nit:1354 */
+ REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+ if (UNTAG_Bool(REGB3)) {
+ } else {
+ REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+ if (UNTAG_Bool(REGB1)) {
+ REGB1 = TAG_Bool(false);
+ REGB3 = REGB1;
+ } else {
+ REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
+ REGB3 = REGB1;
+ }
+ }
+ if (UNTAG_Bool(REGB3)) {
+ /* ./syntax//typing.nit:1355 */
+ if (UNTAG_Bool(REGB0)) {
+ /* ./syntax//typing.nit:1356 */
+ REGB0 = TAG_Int(5);
+ fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB0);
+ if (!once_value_12) {
+ fra.me.REG[5] = BOX_NativeString("Error: Method or variable '");
+ REGB0 = TAG_Int(27);
+ fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
+ once_value_12 = fra.me.REG[5];
+ register_static_object(&once_value_12);
+ } else fra.me.REG[5] = once_value_12;
+ fra.me.REG[5] = fra.me.REG[5];
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
+ fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
+ if (!once_value_13) {
+ fra.me.REG[5] = BOX_NativeString("' unknown in ");
+ REGB0 = TAG_Int(13);
+ fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
+ once_value_13 = fra.me.REG[5];
+ register_static_object(&once_value_13);
+ } else fra.me.REG[5] = once_value_13;
+ fra.me.REG[5] = fra.me.REG[5];
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
+ fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
+ if (!once_value_14) {
+ fra.me.REG[5] = BOX_NativeString(".");
+ REGB0 = TAG_Int(1);
+ fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
+ once_value_14 = fra.me.REG[5];
+ register_static_object(&once_value_14);
+ } else fra.me.REG[5] = once_value_14;
+ fra.me.REG[5] = fra.me.REG[5];
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
+ fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
+ CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
+ } else {
+ /* ./syntax//typing.nit:1358 */
+ REGB0 = TAG_Int(5);
+ fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB0);
+ if (!once_value_15) {
+ fra.me.REG[5] = BOX_NativeString("Error: Method '");
+ REGB0 = TAG_Int(15);
+ fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
+ once_value_15 = fra.me.REG[5];
+ register_static_object(&once_value_15);
+ } else fra.me.REG[5] = once_value_15;
+ fra.me.REG[5] = fra.me.REG[5];
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
+ fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
+ if (!once_value_16) {
+ fra.me.REG[3] = BOX_NativeString("' doesn't exists in ");
+ REGB0 = TAG_Int(20);
+ fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+ once_value_16 = fra.me.REG[3];
+ register_static_object(&once_value_16);
+ } else fra.me.REG[3] = once_value_16;
+ fra.me.REG[3] = fra.me.REG[3];
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
+ fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
+ if (!once_value_17) {
+ fra.me.REG[2] = BOX_NativeString(".");
+ REGB0 = TAG_Int(1);
+ fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+ once_value_17 = fra.me.REG[2];
+ register_static_object(&once_value_17);
+ } else fra.me.REG[2] = once_value_17;
+ fra.me.REG[2] = fra.me.REG[2];
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
+ fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
+ CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
+ }
+ /* ./syntax//typing.nit:1360 */
+ fra.me.REG[4] = NIT_NULL;
+ goto label7;
+ }
+ /* ./syntax//typing.nit:1362 */
+ fra.me.REG[4] = fra.me.REG[6];
+ goto label7;
+ label7: while(0);
+ stack_frame_head = fra.me.prev;
+ return fra.me.REG[4];
+}
+val_t typing___AAbsSendExpr___get_signature(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
+ struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+ val_t REGB0;
+ val_t tmp;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_typing;
+ fra.me.line = 1365;
+ fra.me.meth = LOCATE_typing___AAbsSendExpr___get_signature;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 6;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[1] = NIT_NULL;
+ fra.me.REG[2] = NIT_NULL;
+ fra.me.REG[3] = NIT_NULL;
+ fra.me.REG[4] = NIT_NULL;
+ fra.me.REG[5] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ fra.me.REG[1] = p1;
+ fra.me.REG[2] = p2;
+ fra.me.REG[3] = p3;
+ REGB0 = p4;
+ /* ./syntax//typing.nit:1368 */
+ fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
+ fra.me.REG[5] = CALL_syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
+ CALL_syntax_base___MMGlobalProperty___check_visibility(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1], fra.me.REG[0], fra.me.REG[5], REGB0);
+ /* ./syntax//typing.nit:1369 */
+ fra.me.REG[2] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+ /* ./syntax//typing.nit:1370 */
+ REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+ if (UNTAG_Bool(REGB0)) {
+ fra.me.REG[3] = CALL_static_type___MMSignature___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
+ fra.me.REG[2] = fra.me.REG[3];
+ }
+ /* ./syntax//typing.nit:1371 */
+ goto label1;
+ label1: while(0);
+ stack_frame_head = fra.me.prev;
+ return fra.me.REG[2];
+}
+val_t typing___AAbsSendExpr___prop(val_t p0){
+ struct {struct stack_frame_t me;} fra;
+ val_t REGB0;
+ val_t tmp;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_typing;
+ fra.me.line = 1374;
+ fra.me.meth = LOCATE_typing___AAbsSendExpr___prop;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 1;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ /* ./syntax//typing.nit:1375 */
+ fra.me.REG[0] = ATTR_typing___AAbsSendExpr____prop(fra.me.REG[0]);
+ REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ nit_abort("Cast failed", NULL, LOCATE_typing, 1375);
+ }
+ goto label1;
+ label1: while(0);
+ stack_frame_head = fra.me.prev;
+ return fra.me.REG[0];
+}
+val_t typing___AAbsSendExpr___return_type(val_t p0){
+ struct {struct stack_frame_t me;} fra;
+ val_t tmp;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_typing;
+ fra.me.line = 1378;
+ fra.me.meth = LOCATE_typing___AAbsSendExpr___return_type;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 1;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ /* ./syntax//typing.nit:1378 */
+ fra.me.REG[0] = ATTR_typing___AAbsSendExpr____return_type(fra.me.REG[0]);
+ stack_frame_head = fra.me.prev;
+ return fra.me.REG[0];
+}
+void typing___ASuperInitCall___register_super_init_call(val_t p0, val_t p1, val_t p2){
+ struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+ val_t REGB0;
+ val_t REGB1;
+ val_t REGB2;
+ val_t tmp;
+ static val_t once_value_1; /* Once value */
+ static val_t once_value_2; /* Once value */
+ static val_t once_value_3; /* Once value */
+ static val_t once_value_4; /* Once value */
+ static val_t once_value_5; /* Once value */
+ static val_t once_value_6; /* Once value */
+ static val_t once_value_7; /* Once value */
+ static val_t once_value_8; /* Once value */
+ static val_t once_value_9; /* Once value */
+ static val_t once_value_10; /* Once value */
+ static val_t once_value_11; /* Once value */
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_typing;
+ fra.me.line = 1385;
+ fra.me.meth = LOCATE_typing___ASuperInitCall___register_super_init_call;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 11;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[1] = NIT_NULL;
+ fra.me.REG[2] = NIT_NULL;
+ fra.me.REG[3] = NIT_NULL;
+ fra.me.REG[4] = NIT_NULL;
+ fra.me.REG[5] = NIT_NULL;
+ fra.me.REG[6] = NIT_NULL;
+ fra.me.REG[7] = NIT_NULL;
+ fra.me.REG[8] = NIT_NULL;
+ fra.me.REG[9] = NIT_NULL;
+ fra.me.REG[10] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ fra.me.REG[1] = p1;
+ fra.me.REG[2] = p2;
+ /* ./syntax//typing.nit:1387 */
+ fra.me.REG[3] = CALL_parser_prod___ANode___parent(fra.me.REG[0])(fra.me.REG[0]);
+ fra.me.REG[4] = CALL_typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
+ REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[3],fra.me.REG[4]));
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+ if (UNTAG_Bool(REGB1)) {
+ REGB1 = TAG_Bool(false);
+ REGB0 = REGB1;
+ } else {
+ REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+ REGB0 = REGB1;
+ }
+ }
+ REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+ if (UNTAG_Bool(REGB0)) {
+ fra.me.REG[4] = CALL_typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
+ REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[0],fra.me.REG[4]));
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
+ REGB0 = REGB1;
+ }
+ REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+ } else {
+ REGB1 = TAG_Bool(false);
+ REGB0 = REGB1;
+ }
+ if (UNTAG_Bool(REGB0)) {
+ /* ./syntax//typing.nit:1388 */
+ REGB0 = TAG_Int(3);
+ fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
+ if (!once_value_1) {
+ fra.me.REG[3] = BOX_NativeString("Error: Constructor invocation ");
+ REGB0 = TAG_Int(30);
+ fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+ once_value_1 = fra.me.REG[3];
+ register_static_object(&once_value_1);
+ } else fra.me.REG[3] = once_value_1;
+ fra.me.REG[3] = fra.me.REG[3];
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+ fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+ if (!once_value_2) {
+ fra.me.REG[3] = BOX_NativeString(" must not be in nested block.");
+ REGB0 = TAG_Int(29);
+ fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+ once_value_2 = fra.me.REG[3];
+ register_static_object(&once_value_2);
+ } else fra.me.REG[3] = once_value_2;
+ fra.me.REG[3] = fra.me.REG[3];
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+ fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
+ CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
+ }
+ /* ./syntax//typing.nit:1390 */
+ fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
+ fra.me.REG[3] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
+ fra.me.REG[3] = CALL_abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[3])(fra.me.REG[3]);
+ fra.me.REG[3] = CALL_abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[3])(fra.me.REG[3]);
+ fra.me.REG[3] = CALL_abstractmetamodel___MMLocalClass___global(fra.me.REG[3])(fra.me.REG[3]);
+ fra.me.REG[3] = CALL_abstractmetamodel___MMModule_____bra(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+ /* ./syntax//typing.nit:1391 */
+ fra.me.REG[4] = NIT_NULL;
+ /* ./syntax//typing.nit:1392 */
+ fra.me.REG[5] = CALL_typing___TypingVisitor___explicit_super_init_calls(fra.me.REG[1])(fra.me.REG[1]);
+ REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ nit_abort("Cast failed", NULL, LOCATE_typing, 1392);
+ }
+ /* ./syntax//typing.nit:1393 */
+ REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[5])(fra.me.REG[5]);
+ REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+ if (UNTAG_Bool(REGB0)) {
+ /* ./syntax//typing.nit:1394 */
+ fra.me.REG[6] = CALL_abstract_collection___SequenceRead___last(fra.me.REG[5])(fra.me.REG[5]);
+ REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+ if (UNTAG_Bool(REGB0)) {
+ nit_abort("Reciever is null", NULL, LOCATE_typing, 1394);
+ }
+ fra.me.REG[6] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[6])(fra.me.REG[6]);
+ fra.me.REG[6] = CALL_abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[6])(fra.me.REG[6]);
+ fra.me.REG[6] = CALL_abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[6])(fra.me.REG[6]);
+ fra.me.REG[4] = fra.me.REG[6];
+ }
+ /* ./syntax//typing.nit:1396 */
+ fra.me.REG[6] = CALL_syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
+ fra.me.REG[6] = CALL_abstractmetamodel___MMLocalClass___cshe(fra.me.REG[6])(fra.me.REG[6]);
+ fra.me.REG[6] = CALL_partial_order___PartialOrderElement___reverse_linear_extension(fra.me.REG[6])(fra.me.REG[6]);
+ /* ./syntax//typing.nit:1397 */
+ fra.me.REG[7] = CALL_syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
+ REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[7]));
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
+ REGB0 = REGB1;
+ }
+ if (UNTAG_Bool(REGB0)) {
+ /* ./syntax//typing.nit:1398 */
+ REGB0 = TAG_Bool(true);
+ CALL_typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
+ } else {
+ /* ./syntax//typing.nit:1399 */
+ REGB0 = CALL_abstract_collection___Collection___has(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
+ REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+ if (UNTAG_Bool(REGB0)) {
+ /* ./syntax//typing.nit:1400 */
+ REGB0 = TAG_Int(5);
+ fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB0);
+ if (!once_value_3) {
+ fra.me.REG[8] = BOX_NativeString("Error: Constructor of class ");
+ REGB0 = TAG_Int(28);
+ fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
+ once_value_3 = fra.me.REG[8];
+ register_static_object(&once_value_3);
+ } else fra.me.REG[8] = once_value_3;
+ fra.me.REG[8] = fra.me.REG[8];
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+ fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+ if (!once_value_4) {
+ fra.me.REG[8] = BOX_NativeString(" must be one in ");
+ REGB0 = TAG_Int(16);
+ fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
+ once_value_4 = fra.me.REG[8];
+ register_static_object(&once_value_4);
+ } else fra.me.REG[8] = once_value_4;
+ fra.me.REG[8] = fra.me.REG[8];
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+ if (!once_value_5) {
+ fra.me.REG[8] = BOX_NativeString(", ");
+ REGB0 = TAG_Int(2);
+ fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
+ once_value_5 = fra.me.REG[8];
+ register_static_object(&once_value_5);
+ } else fra.me.REG[8] = once_value_5;
+ fra.me.REG[8] = fra.me.REG[8];
+ fra.me.REG[8] = CALL_string___Collection___join(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[8]);
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+ if (!once_value_6) {
+ fra.me.REG[8] = BOX_NativeString(".");
+ REGB0 = TAG_Int(1);
+ fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
+ once_value_6 = fra.me.REG[8];
+ register_static_object(&once_value_6);
+ } else fra.me.REG[8] = once_value_6;
+ fra.me.REG[8] = fra.me.REG[8];
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+ fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
+ CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
+ } else {
+ /* ./syntax//typing.nit:1401 */
+ REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[3],fra.me.REG[4]));
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+ REGB0 = REGB1;
+ }
+ if (UNTAG_Bool(REGB0)) {
+ /* ./syntax//typing.nit:1402 */
+ REGB0 = TAG_Int(3);
+ fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB0);
+ if (!once_value_7) {
+ fra.me.REG[8] = BOX_NativeString("Error: Only one super constructor invocation of class ");
+ REGB0 = TAG_Int(54);
+ fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
+ once_value_7 = fra.me.REG[8];
+ register_static_object(&once_value_7);
+ } else fra.me.REG[8] = once_value_7;
+ fra.me.REG[8] = fra.me.REG[8];
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+ fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+ if (!once_value_8) {
+ fra.me.REG[8] = BOX_NativeString(" is allowed.");
+ REGB0 = TAG_Int(12);
+ fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
+ once_value_8 = fra.me.REG[8];
+ register_static_object(&once_value_8);
+ } else fra.me.REG[8] = once_value_8;
+ fra.me.REG[8] = fra.me.REG[8];
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+ fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
+ CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
+ } else {
+ /* ./../lib/standard//collection//array.nit:234 */
+ REGB0 = TAG_Int(0);
+ /* ./../lib/standard//collection//array.nit:235 */
+ REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
+ }
+ REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[6]);
+ /* ./../lib/standard//collection//array.nit:236 */
+ fra.me.REG[7] = ATTR_array___Array____items(fra.me.REG[6]);
+ /* ./../lib/standard//collection//array.nit:237 */
+ while(1) {
+ /* ./../lib/standard//collection//array.nit:23 */
+ REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
+ }
+ REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[6]);
+ /* ./../lib/standard//kernel.nit:212 */
+ REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+ /* ./../lib/standard//collection//array.nit:237 */
+ if (UNTAG_Bool(REGB1)) {
+ /* ./../lib/standard//collection//array.nit:238 */
+ REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+ if (UNTAG_Bool(REGB1)) {
+ nit_abort("Reciever is null", NULL, LOCATE_array, 238);
+ }
+ /* ./../lib/standard//collection//array.nit:654 */
+ fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB0)];
+ /* ./syntax//typing.nit:1405 */
+ REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[8],fra.me.REG[4]));
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[4]);
+ REGB1 = REGB2;
+ }
+ if (UNTAG_Bool(REGB1)) {
+ /* ./syntax//typing.nit:1406 */
+ fra.me.REG[4] = NIT_NULL;
+ } else {
+ /* ./syntax//typing.nit:1407 */
+ REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[8],fra.me.REG[3]));
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+ REGB1 = REGB2;
+ }
+ if (UNTAG_Bool(REGB1)) {
+ /* ./syntax//typing.nit:1408 */
+ REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+ if (UNTAG_Bool(REGB2)) {
+ REGB2 = TAG_Bool(false);
+ REGB1 = REGB2;
+ } else {
+ REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+ REGB1 = REGB2;
+ }
+ }
+ REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
+ if (UNTAG_Bool(REGB1)) {
+ /* ./syntax//typing.nit:1409 */
+ REGB1 = TAG_Int(5);
+ fra.me.REG[9] = NEW_Array_array___Array___with_capacity(REGB1);
+ if (!once_value_9) {
+ fra.me.REG[10] = BOX_NativeString("Error: Constructor of ");
+ REGB1 = TAG_Int(22);
+ fra.me.REG[10] = NEW_String_string___String___with_native(fra.me.REG[10], REGB1);
+ once_value_9 = fra.me.REG[10];
+ register_static_object(&once_value_9);
+ } else fra.me.REG[10] = once_value_9;
+ fra.me.REG[10] = fra.me.REG[10];
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
+ fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
+ if (!once_value_10) {
+ fra.me.REG[8] = BOX_NativeString(" must be invoked before constructor of ");
+ REGB1 = TAG_Int(39);
+ fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB1);
+ once_value_10 = fra.me.REG[8];
+ register_static_object(&once_value_10);
+ } else fra.me.REG[8] = once_value_10;
+ fra.me.REG[8] = fra.me.REG[8];
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
+ fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
+ if (!once_value_11) {
+ fra.me.REG[8] = BOX_NativeString("");
+ REGB1 = TAG_Int(0);
+ fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB1);
+ once_value_11 = fra.me.REG[8];
+ register_static_object(&once_value_11);
+ } else fra.me.REG[8] = once_value_11;
+ fra.me.REG[8] = fra.me.REG[8];
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
+ fra.me.REG[9] = CALL_string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
+ CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[9]);
+ }
+ /* ./syntax//typing.nit:1411 */
+ CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
+ /* ./syntax//typing.nit:1412 */
+ goto label12;