+ }
+ REGB4 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
+ if (UNTAG_Bool(REGB4)) {
+ } else {
+ REGB1 = TAG_Bool((REGB2)==(REGB1));
+ REGB4 = REGB1;
+ /* ./metamodel//static_type.nit:108 */
+ }
+ REGB4 = TAG_Bool(!UNTAG_Bool(REGB4));
+ REGB3 = REGB4;
+ }
+ if (UNTAG_Bool(REGB3)) {
+ REGB3 = TAG_Bool(false);
+ REGB0 = REGB3;
+ goto label1;
+ }
+ REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+ /* ./metamodel//static_type.nit:109 */
+ if (UNTAG_Bool(REGB3)) {
+ } else {
+ REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+ if (UNTAG_Bool(REGB4)) {
+ REGB4 = TAG_Bool(false);
+ REGB3 = REGB4;
+ } else {
+ REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+ REGB3 = REGB4;
+ }
+ }
+ REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+ if (UNTAG_Bool(REGB3)) {
+ REGB3 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+ if (UNTAG_Bool(REGB3)) {
+ } else {
+ fprintf(stderr, "Cast failed");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 109);
+ nit_exit(1);
+ }
+ REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+ if (UNTAG_Bool(REGB3)) {
+ fprintf(stderr, "Reciever is null");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 109);
+ nit_exit(1);
+ }
+ REGB3 = CALL_static_type___MMType_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+ REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+ } else {
+ REGB4 = TAG_Bool(false);
+ REGB3 = REGB4;
+ }
+ if (UNTAG_Bool(REGB3)) {
+ REGB3 = TAG_Bool(false);
+ REGB0 = REGB3;
+ /* ./metamodel//static_type.nit:110 */
+ goto label1;
+ }
+ REGB3 = TAG_Int(0);
+ REGB4 = CALL_static_type___MMSignature___arity(fra.me.REG[0])(fra.me.REG[0]);
+ fra.me.REG[2] = NEW_Range_range___Range___without_last(REGB3, REGB4);
+ fra.me.REG[2] = CALL_abstract_collection___Collection___iterator(fra.me.REG[2])(fra.me.REG[2]);
+ /* ./metamodel//static_type.nit:113 */
+ while(1) {
+ REGB4 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[2])(fra.me.REG[2]);
+ if (UNTAG_Bool(REGB4)) {
+ REGB4 = CALL_abstract_collection___Iterator___item(fra.me.REG[2])(fra.me.REG[2]);
+ fra.me.REG[3] = CALL_static_type___MMSignature_____bra(fra.me.REG[1])(fra.me.REG[1], REGB4);
+ fra.me.REG[4] = CALL_static_type___MMSignature_____bra(fra.me.REG[0])(fra.me.REG[0], REGB4);
+ REGB4 = CALL_static_type___MMType_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+ REGB4 = TAG_Bool(!UNTAG_Bool(REGB4));
+ /* ./metamodel//static_type.nit:114 */
+ if (UNTAG_Bool(REGB4)) {
+ REGB4 = TAG_Bool(false);
+ REGB0 = REGB4;
+ /* ./metamodel//static_type.nit:115 */
+ goto label1;
+ }
+ } else {
+ /* ./metamodel//static_type.nit:113 */
+ goto label2;
+ }
+ CALL_abstract_collection___Iterator___next(fra.me.REG[2])(fra.me.REG[2]);
+ }
+ label2: while(0);
+ fra.me.REG[2] = CALL_static_type___MMSignature___closures(fra.me.REG[0])(fra.me.REG[0]);
+ REGB4 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+ /* ./../lib/standard//collection//array.nit:23 */
+ if (UNTAG_Bool(REGB4)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_length");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
+ nit_exit(1);
+ }
+ REGB4 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
+ fra.me.REG[2] = CALL_static_type___MMSignature___closures(fra.me.REG[1])(fra.me.REG[1]);
+ REGB3 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+ /* ./../lib/standard//collection//array.nit:23 */
+ if (UNTAG_Bool(REGB3)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_length");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
+ nit_exit(1);
+ }
+ REGB3 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
+ REGB1 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB3));
+ /* ./metamodel//static_type.nit:119 */
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ REGB3 = TAG_Bool((REGB4)==(REGB3));
+ REGB1 = REGB3;
+ /* ./metamodel//static_type.nit:119 */
+ }
+ REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
+ if (UNTAG_Bool(REGB1)) {
+ REGB1 = TAG_Bool(false);
+ REGB0 = REGB1;
+ goto label1;
+ }
+ REGB1 = TAG_Int(0);
+ fra.me.REG[2] = CALL_static_type___MMSignature___closures(fra.me.REG[0])(fra.me.REG[0]);
+ REGB3 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+ /* ./../lib/standard//collection//array.nit:23 */
+ if (UNTAG_Bool(REGB3)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_length");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
+ nit_exit(1);
+ }
+ REGB3 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
+ fra.me.REG[2] = NEW_Range_range___Range___without_last(REGB1, REGB3);
+ fra.me.REG[2] = CALL_abstract_collection___Collection___iterator(fra.me.REG[2])(fra.me.REG[2]);
+ /* ./metamodel//static_type.nit:120 */
+ while(1) {
+ REGB3 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[2])(fra.me.REG[2]);
+ if (UNTAG_Bool(REGB3)) {
+ REGB3 = CALL_abstract_collection___Iterator___item(fra.me.REG[2])(fra.me.REG[2]);
+ fra.me.REG[4] = CALL_static_type___MMSignature___closures(fra.me.REG[1])(fra.me.REG[1]);
+ REGB1 = REGB3;
+ REGB4 = TAG_Int(0);
+ REGB4 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB4));
+ /* ./../lib/standard//collection//array.nit:233 */
+ if (UNTAG_Bool(REGB4)) {
+ REGB4 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+ if (UNTAG_Bool(REGB4)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_length");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_array, 233);
+ nit_exit(1);
+ }
+ REGB4 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
+ REGB4 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB4));
+ /* ./../lib/standard//collection//array.nit:233 */
+ } else {
+ REGB2 = TAG_Bool(false);
+ REGB4 = REGB2;
+ }
+ if (UNTAG_Bool(REGB4)) {
+ } else {
+ fprintf(stderr, "Assert %s failed", "'index'");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_array, 233);
+ nit_exit(1);
+ }
+ fra.me.REG[4] = ATTR_array___Array____items(fra.me.REG[4]);
+ REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+ /* ./../lib/standard//collection//array.nit:234 */
+ if (UNTAG_Bool(REGB4)) {
+ fprintf(stderr, "Reciever is null");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_array, 234);
+ nit_exit(1);
+ }
+ fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB1)];
+ /* ./../lib/standard//collection//array.nit:234 */
+ goto label3;
+ label3: while(0);
+ fra.me.REG[3] = CALL_static_type___MMSignature___closures(fra.me.REG[0])(fra.me.REG[0]);
+ REGB1 = TAG_Int(0);
+ REGB1 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB1));
+ /* ./../lib/standard//collection//array.nit:233 */
+ if (UNTAG_Bool(REGB1)) {
+ REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_length");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_array, 233);
+ nit_exit(1);
+ }
+ REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]);
+ REGB1 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB1));
+ /* ./../lib/standard//collection//array.nit:233 */
+ } else {
+ REGB4 = TAG_Bool(false);
+ REGB1 = REGB4;
+ }
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ fprintf(stderr, "Assert %s failed", "'index'");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_array, 233);
+ nit_exit(1);
+ }
+ fra.me.REG[3] = ATTR_array___Array____items(fra.me.REG[3]);
+ REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+ /* ./../lib/standard//collection//array.nit:234 */
+ if (UNTAG_Bool(REGB1)) {
+ fprintf(stderr, "Reciever is null");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_array, 234);
+ nit_exit(1);
+ }
+ fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB3)];
+ /* ./../lib/standard//collection//array.nit:234 */
+ goto label4;
+ label4: while(0);
+ REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+ /* ./metamodel//static_type.nit:121 */
+ if (UNTAG_Bool(REGB3)) {
+ fprintf(stderr, "Reciever is null");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 121);
+ nit_exit(1);
+ }
+ REGB3 = CALL_static_type___MMClosure_____l(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+ REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+ if (UNTAG_Bool(REGB3)) {
+ REGB3 = TAG_Bool(false);
+ REGB0 = REGB3;
+ goto label1;
+ }
+ } else {
+ /* ./metamodel//static_type.nit:120 */
+ goto label5;
+ }
+ CALL_abstract_collection___Iterator___next(fra.me.REG[2])(fra.me.REG[2]);
+ }
+ label5: while(0);
+ REGB3 = TAG_Bool(true);
+ REGB0 = REGB3;
+ /* ./metamodel//static_type.nit:123 */
+ goto label1;
+ label1: while(0);
+ stack_frame_head = fra.me.prev;
+ return REGB0;
+}
+val_t static_type___MMSignature_____bra(val_t p0, val_t p1){
+ struct {struct stack_frame_t me; val_t MORE_REG[1];} 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_static_type;
+ fra.me.line = 126;
+ fra.me.meth = LOCATE_static_type___MMSignature_____bra;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 2;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[1] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ REGB0 = p1;
+ REGB1 = TAG_Bool(ATTR_static_type___MMSignature____params(fra.me.REG[0])!=NIT_NULL);
+ /* ./metamodel//static_type.nit:129 */
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_params");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 129);
+ nit_exit(1);
+ }
+ fra.me.REG[1] = ATTR_static_type___MMSignature____params(fra.me.REG[0]);
+ REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
+ /* ./../lib/standard//collection//array.nit:23 */
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_length");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
+ nit_exit(1);
+ }
+ REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]);
+ REGB1 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
+ /* ./metamodel//static_type.nit:129 */
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ fprintf(stderr, "Assert failed");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 129);
+ nit_exit(1);
+ }
+ REGB1 = TAG_Bool(ATTR_static_type___MMSignature____params(fra.me.REG[0])!=NIT_NULL);
+ /* ./metamodel//static_type.nit:130 */
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_params");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 130);
+ nit_exit(1);
+ }
+ fra.me.REG[0] = ATTR_static_type___MMSignature____params(fra.me.REG[0]);
+ REGB1 = TAG_Int(0);
+ REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
+ /* ./../lib/standard//collection//array.nit:233 */
+ if (UNTAG_Bool(REGB1)) {
+ REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_length");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_array, 233);
+ nit_exit(1);
+ }
+ REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
+ REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+ /* ./../lib/standard//collection//array.nit:233 */
+ } else {
+ REGB2 = TAG_Bool(false);
+ REGB1 = REGB2;
+ }
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ fprintf(stderr, "Assert %s failed", "'index'");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_array, 233);
+ nit_exit(1);
+ }
+ fra.me.REG[0] = ATTR_array___Array____items(fra.me.REG[0]);
+ REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+ /* ./../lib/standard//collection//array.nit:234 */
+ if (UNTAG_Bool(REGB1)) {
+ fprintf(stderr, "Reciever is null");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_array, 234);
+ nit_exit(1);
+ }
+ fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
+ /* ./../lib/standard//collection//array.nit:234 */
+ goto label1;
+ label1: while(0);
+ /* ./metamodel//static_type.nit:130 */
+ goto label2;
+ label2: while(0);
+ stack_frame_head = fra.me.prev;
+ return fra.me.REG[0];
+}
+val_t static_type___MMSignature___adaptation_to(val_t p0, val_t p1){
+ struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+ val_t REGB0;
+ val_t REGB1;
+ val_t tmp;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_static_type;
+ fra.me.line = 153;
+ fra.me.meth = LOCATE_static_type___MMSignature___adaptation_to;
+ 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;
+ REGB0 = TAG_Bool(ATTR_static_type___MMSignature____recv(fra.me.REG[0])!=NIT_NULL);
+ /* ./metamodel//static_type.nit:156 */
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_recv");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 156);
+ nit_exit(1);
+ }
+ fra.me.REG[2] = ATTR_static_type___MMSignature____recv(fra.me.REG[0]);
+ REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[1]));
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+ REGB0 = REGB1;
+ }
+ if (UNTAG_Bool(REGB0)) {
+ fra.me.REG[2] = fra.me.REG[0];
+ /* ./metamodel//static_type.nit:157 */
+ goto label1;
+ }
+ fra.me.REG[3] = CALL_static_type___MMType___module(fra.me.REG[1])(fra.me.REG[1]);
+ fra.me.REG[4] = NEW_Array_array___Array___init();
+ REGB0 = TAG_Bool(ATTR_static_type___MMSignature____params(fra.me.REG[0])!=NIT_NULL);
+ /* ./metamodel//static_type.nit:161 */
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_params");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 161);
+ nit_exit(1);
+ }
+ fra.me.REG[5] = ATTR_static_type___MMSignature____params(fra.me.REG[0]);
+ fra.me.REG[5] = CALL_abstract_collection___Collection___iterator(fra.me.REG[5])(fra.me.REG[5]);
+ while(1) {
+ REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[5])(fra.me.REG[5]);
+ if (UNTAG_Bool(REGB0)) {
+ fra.me.REG[6] = CALL_abstract_collection___Iterator___item(fra.me.REG[5])(fra.me.REG[5]);
+ fra.me.REG[6] = CALL_static_type___MMType___for_module(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
+ fra.me.REG[6] = CALL_static_type___MMType___adapt_to(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1]);
+ /* ./metamodel//static_type.nit:162 */
+ array___Array___add(fra.me.REG[4], fra.me.REG[6]);
+ } else {
+ /* ./metamodel//static_type.nit:161 */
+ goto label2;
+ }
+ CALL_abstract_collection___Iterator___next(fra.me.REG[5])(fra.me.REG[5]);
+ }
+ label2: while(0);
+ fra.me.REG[5] = ATTR_static_type___MMSignature____return_type(fra.me.REG[0]);
+ REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+ /* ./metamodel//static_type.nit:165 */
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+ if (UNTAG_Bool(REGB1)) {
+ REGB1 = TAG_Bool(false);
+ REGB0 = REGB1;
+ } else {
+ REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+ REGB0 = REGB1;
+ }
+ }
+ REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+ if (UNTAG_Bool(REGB0)) {
+ REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+ /* ./metamodel//static_type.nit:166 */
+ if (UNTAG_Bool(REGB0)) {
+ fprintf(stderr, "Reciever is null");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 166);
+ nit_exit(1);
+ }
+ fra.me.REG[3] = CALL_static_type___MMType___for_module(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+ fra.me.REG[3] = CALL_static_type___MMType___adapt_to(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+ fra.me.REG[5] = fra.me.REG[3];
+ }
+ fra.me.REG[5] = NEW_MMSignature_static_type___MMSignature___init(fra.me.REG[4], fra.me.REG[5], fra.me.REG[1]);
+ REGB0 = TAG_Bool(ATTR_static_type___MMSignature____closures(fra.me.REG[0])!=NIT_NULL);
+ /* ./metamodel//static_type.nit:169 */
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_closures");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 169);
+ nit_exit(1);
+ }
+ fra.me.REG[0] = ATTR_static_type___MMSignature____closures(fra.me.REG[0]);
+ fra.me.REG[0] = CALL_abstract_collection___Collection___iterator(fra.me.REG[0])(fra.me.REG[0]);
+ while(1) {
+ REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[0])(fra.me.REG[0]);
+ if (UNTAG_Bool(REGB0)) {
+ fra.me.REG[4] = CALL_abstract_collection___Iterator___item(fra.me.REG[0])(fra.me.REG[0]);
+ fra.me.REG[3] = CALL_static_type___MMSignature___closures(fra.me.REG[5])(fra.me.REG[5]);
+ fra.me.REG[4] = CALL_static_type___MMClosure___adaptation_to(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
+ /* ./metamodel//static_type.nit:170 */
+ array___Array___add(fra.me.REG[3], fra.me.REG[4]);
+ } else {
+ /* ./metamodel//static_type.nit:169 */
+ goto label3;
+ }
+ CALL_abstract_collection___Iterator___next(fra.me.REG[0])(fra.me.REG[0]);
+ }
+ label3: while(0);
+ fra.me.REG[2] = fra.me.REG[5];
+ /* ./metamodel//static_type.nit:172 */
+ goto label1;
+ label1: while(0);
+ stack_frame_head = fra.me.prev;
+ return fra.me.REG[2];
+}
+val_t static_type___MMSignature___not_for_self(val_t p0){
+ struct {struct stack_frame_t me; val_t MORE_REG[7];} 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_static_type;
+ fra.me.line = 177;
+ fra.me.meth = LOCATE_static_type___MMSignature___not_for_self;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 8;
+ 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[0] = p0;
+ fra.me.REG[1] = ATTR_static_type___MMSignature____not_for_self_cache(fra.me.REG[0]);
+ REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+ /* ./metamodel//static_type.nit:181 */
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+ if (UNTAG_Bool(REGB1)) {
+ REGB1 = TAG_Bool(false);
+ REGB0 = REGB1;
+ } else {
+ REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+ REGB0 = REGB1;
+ }
+ }
+ REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+ if (UNTAG_Bool(REGB0)) {
+ fra.me.REG[1] = ATTR_static_type___MMSignature____not_for_self_cache(fra.me.REG[0]);
+ REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ fprintf(stderr, "Cast failed");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 181);
+ nit_exit(1);
+ }
+ goto label1;
+ }
+ REGB0 = TAG_Bool(false);
+ fra.me.REG[2] = NEW_Array_array___Array___init();
+ REGB1 = TAG_Bool(ATTR_static_type___MMSignature____params(fra.me.REG[0])!=NIT_NULL);
+ /* ./metamodel//static_type.nit:185 */
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_params");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 185);
+ nit_exit(1);
+ }
+ fra.me.REG[3] = ATTR_static_type___MMSignature____params(fra.me.REG[0]);
+ fra.me.REG[3] = CALL_abstract_collection___Collection___iterator(fra.me.REG[3])(fra.me.REG[3]);
+ while(1) {
+ REGB1 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[3])(fra.me.REG[3]);
+ if (UNTAG_Bool(REGB1)) {
+ fra.me.REG[4] = CALL_abstract_collection___Iterator___item(fra.me.REG[3])(fra.me.REG[3]);
+ fra.me.REG[5] = CALL_static_type___MMType___not_for_self(fra.me.REG[4])(fra.me.REG[4]);
+ REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[4],fra.me.REG[5]));
+ /* ./metamodel//static_type.nit:187 */
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+ REGB1 = REGB2;
+ }
+ REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
+ if (UNTAG_Bool(REGB1)) {
+ REGB1 = TAG_Bool(true);
+ REGB0 = REGB1;
+ }
+ /* ./metamodel//static_type.nit:188 */
+ array___Array___add(fra.me.REG[2], fra.me.REG[5]);
+ } else {
+ /* ./metamodel//static_type.nit:185 */
+ goto label2;
+ }
+ CALL_abstract_collection___Iterator___next(fra.me.REG[3])(fra.me.REG[3]);
+ }
+ label2: while(0);
+ fra.me.REG[3] = ATTR_static_type___MMSignature____return_type(fra.me.REG[0]);
+ REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+ /* ./metamodel//static_type.nit:192 */
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+ if (UNTAG_Bool(REGB2)) {
+ REGB2 = TAG_Bool(false);
+ REGB1 = REGB2;
+ } else {
+ REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+ REGB1 = REGB2;
+ }
+ }
+ REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
+ if (UNTAG_Bool(REGB1)) {
+ REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+ /* ./metamodel//static_type.nit:193 */
+ if (UNTAG_Bool(REGB1)) {
+ fprintf(stderr, "Reciever is null");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 193);
+ nit_exit(1);
+ }
+ fra.me.REG[5] = CALL_static_type___MMType___not_for_self(fra.me.REG[3])(fra.me.REG[3]);
+ fra.me.REG[3] = fra.me.REG[5];
+ fra.me.REG[5] = ATTR_static_type___MMSignature____return_type(fra.me.REG[0]);
+ REGB1 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[3],fra.me.REG[5]));
+ /* ./metamodel//static_type.nit:194 */
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+ if (UNTAG_Bool(REGB2)) {
+ REGB2 = TAG_Bool(false);
+ REGB1 = REGB2;
+ } else {
+ REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+ REGB1 = REGB2;
+ }
+ }
+ REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
+ if (UNTAG_Bool(REGB1)) {
+ REGB1 = TAG_Bool(true);
+ REGB0 = REGB1;
+ }
+ }
+ fra.me.REG[5] = NEW_Array_array___Array___init();
+ REGB1 = TAG_Bool(ATTR_static_type___MMSignature____closures(fra.me.REG[0])!=NIT_NULL);
+ /* ./metamodel//static_type.nit:198 */
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_closures");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 198);
+ nit_exit(1);
+ }
+ fra.me.REG[4] = ATTR_static_type___MMSignature____closures(fra.me.REG[0]);
+ fra.me.REG[4] = CALL_abstract_collection___Collection___iterator(fra.me.REG[4])(fra.me.REG[4]);
+ while(1) {
+ REGB1 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[4])(fra.me.REG[4]);
+ if (UNTAG_Bool(REGB1)) {
+ fra.me.REG[6] = CALL_abstract_collection___Iterator___item(fra.me.REG[4])(fra.me.REG[4]);
+ fra.me.REG[7] = CALL_static_type___MMClosure___not_for_self(fra.me.REG[6])(fra.me.REG[6]);
+ REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[7],fra.me.REG[6]));
+ /* ./metamodel//static_type.nit:200 */
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
+ REGB1 = REGB2;
+ }
+ REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
+ if (UNTAG_Bool(REGB1)) {
+ REGB1 = TAG_Bool(true);
+ REGB0 = REGB1;
+ }
+ /* ./metamodel//static_type.nit:201 */
+ array___Array___add(fra.me.REG[5], fra.me.REG[7]);
+ } else {
+ /* ./metamodel//static_type.nit:198 */
+ goto label3;
+ }
+ CALL_abstract_collection___Iterator___next(fra.me.REG[4])(fra.me.REG[4]);
+ }
+ label3: while(0);
+ /* ./metamodel//static_type.nit:205 */
+ if (UNTAG_Bool(REGB0)) {
+ REGB0 = TAG_Bool(ATTR_static_type___MMSignature____recv(fra.me.REG[0])!=NIT_NULL);
+ /* ./metamodel//static_type.nit:206 */
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_recv");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 206);
+ nit_exit(1);
+ }
+ fra.me.REG[4] = ATTR_static_type___MMSignature____recv(fra.me.REG[0]);
+ fra.me.REG[4] = NEW_MMSignature_static_type___MMSignature___init(fra.me.REG[2], fra.me.REG[3], fra.me.REG[4]);
+ fra.me.REG[3] = CALL_static_type___MMSignature___closures(fra.me.REG[4])(fra.me.REG[4]);
+ /* ./metamodel//static_type.nit:207 */
+ CALL_abstract_collection___SimpleCollection___add_all(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+ } else {
+ fra.me.REG[4] = fra.me.REG[0];
+ /* ./metamodel//static_type.nit:209 */
+ }
+ /* ./metamodel//static_type.nit:212 */
+ ATTR_static_type___MMSignature____not_for_self_cache(fra.me.REG[0]) = fra.me.REG[4];
+ fra.me.REG[1] = fra.me.REG[4];
+ /* ./metamodel//static_type.nit:213 */
+ goto label1;
+ label1: while(0);
+ stack_frame_head = fra.me.prev;
+ return fra.me.REG[1];
+}
+void static_type___MMSignature___init(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
+ int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_MMSignature].i;
+ struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+ val_t tmp;
+ if (init_table[itpos0]) return;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_static_type;
+ fra.me.line = 216;
+ fra.me.meth = LOCATE_static_type___MMSignature___init;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 4;
+ 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[0] = p0;
+ fra.me.REG[1] = p1;
+ fra.me.REG[2] = p2;
+ fra.me.REG[3] = p3;
+ /* ./metamodel//static_type.nit:218 */
+ ATTR_static_type___MMSignature____params(fra.me.REG[0]) = fra.me.REG[1];
+ /* ./metamodel//static_type.nit:219 */
+ ATTR_static_type___MMSignature____return_type(fra.me.REG[0]) = fra.me.REG[2];
+ /* ./metamodel//static_type.nit:220 */
+ ATTR_static_type___MMSignature____recv(fra.me.REG[0]) = fra.me.REG[3];
+ stack_frame_head = fra.me.prev;
+ init_table[itpos0] = 1;