- /* Register variable[3]: Result */
- variable[3] = CALL_abstract_collection___Collection___length( variable[1] /*t*/)( variable[1] /*t*/) /*AbstractArrayRead::length*/;
- /* Register variable[3]: Result */
- variable[3] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[3]) /*new Range[Int]*/;
- /* Register variable[3]: For iterator */
- variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*Range::iterator*/;
- while (true) { /*for*/
- /* Register variable[4]: For 'is_ok' result */
- variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*Iterator::is_ok*/;
- if (!UNTAG_Bool(variable[4])) break; /*for*/
- variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*Iterator::item*/ /* Ensure var: For item*/;
- /* Register variable[5]: Local variable */
- variable[5] = variable[4];
- /* Register variable[6]: Result */
- variable[6] = ATTR_genericity___MMTypeGeneric____params(variable[0]) /*MMTypeGeneric::_params*/;
- /* Register variable[7]: Local variable */
- variable[7] = variable[6];
- /* Register variable[8]: Local variable */
- variable[8] = variable[5] /*i*/;
- /* Register variable[9]: Method return value and escape marker */
- /* Register variable[10]: Result */
- variable[10] = TAG_Bool(UNTAG_Int( variable[8] /*index*/)>=UNTAG_Int( TAG_Int(0)));
- /* Ensure var variable[10]: Left 'and' operand*/
- if (UNTAG_Bool(variable[10])) { /* and */
- /* Register variable[10]: Result */
- variable[10] = ATTR_array___AbstractArrayRead____length(variable[7]) /*AbstractArrayRead::_length*/;
- /* Register variable[10]: Result */
- variable[10] = TAG_Bool(UNTAG_Int( variable[8] /*index*/)<UNTAG_Int(variable[10]));
- }
- /* Register variable[10]: Result */
- if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_genericity, 234); nit_exit(1);}
- /* Register variable[10]: Result */
- variable[10] = ATTR_array___Array____items(variable[7]) /*Array::_items*/;
- /* Register variable[10]: Result */
- variable[10] = UNBOX_NativeArray(variable[10])[UNTAG_Int( variable[8] /*index*/)];
- variable[9] = variable[10];
- goto return_label27;
- return_label27: while(false);
- /* Register variable[6]: Result */
- variable[6] = variable[9];
- /* Register variable[6]: Result */
- variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[6] == NIT_NULL /*null*/) || ((variable[6] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[6])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[6], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[6])(variable[6], NIT_NULL /*null*/) /*Object::==*/)))))));
- if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_genericity___MMTypeGeneric___params_equals, LOCATE_genericity, 165); nit_exit(1);}
- /* Register variable[6]: Local variable */
- variable[6] = variable[1] /*t*/;
- /* Register variable[7]: Local variable */
- variable[7] = variable[5] /*i*/;
- /* Register variable[8]: Method return value and escape marker */
- /* Register variable[9]: Result */
- variable[9] = TAG_Bool(UNTAG_Int( variable[7] /*index*/)>=UNTAG_Int( TAG_Int(0)));
- /* Ensure var variable[9]: Left 'and' operand*/
- if (UNTAG_Bool(variable[9])) { /* and */
- /* Register variable[9]: Result */
- variable[9] = ATTR_array___AbstractArrayRead____length(variable[6]) /*AbstractArrayRead::_length*/;
- /* Register variable[9]: Result */
- variable[9] = TAG_Bool(UNTAG_Int( variable[7] /*index*/)<UNTAG_Int(variable[9]));
- }
- /* Register variable[9]: Result */
- if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_genericity, 234); nit_exit(1);}
- /* Register variable[9]: Result */
- variable[9] = ATTR_array___Array____items(variable[6]) /*Array::_items*/;
- /* Register variable[9]: Result */
- variable[9] = UNBOX_NativeArray(variable[9])[UNTAG_Int( variable[7] /*index*/)];
- variable[8] = variable[9];
- goto return_label28;
- return_label28: while(false);
- /* Register variable[6]: Result */
- variable[6] = variable[8];
- /* Register variable[6]: Result */
- variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[6] == NIT_NULL /*null*/) || ((variable[6] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[6])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[6], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[6])(variable[6], NIT_NULL /*null*/) /*Object::==*/)))))));
- if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_genericity___MMTypeGeneric___params_equals, LOCATE_genericity, 166); nit_exit(1);}
- /* Register variable[6]: Result */
- variable[6] = ATTR_genericity___MMTypeGeneric____params(variable[0]) /*MMTypeGeneric::_params*/;
- /* Register variable[7]: Local variable */
- variable[7] = variable[6];
- /* Register variable[8]: Local variable */
- variable[8] = variable[5] /*i*/;
- /* Register variable[9]: Method return value and escape marker */
- /* Register variable[10]: Result */
- variable[10] = TAG_Bool(UNTAG_Int( variable[8] /*index*/)>=UNTAG_Int( TAG_Int(0)));
- /* Ensure var variable[10]: Left 'and' operand*/
- if (UNTAG_Bool(variable[10])) { /* and */
- /* Register variable[10]: Result */
- variable[10] = ATTR_array___AbstractArrayRead____length(variable[7]) /*AbstractArrayRead::_length*/;
- /* Register variable[10]: Result */
- variable[10] = TAG_Bool(UNTAG_Int( variable[8] /*index*/)<UNTAG_Int(variable[10]));
- }
- /* Register variable[10]: Result */
- if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_genericity, 234); nit_exit(1);}
- /* Register variable[10]: Result */
- variable[10] = ATTR_array___Array____items(variable[7]) /*Array::_items*/;
- /* Register variable[10]: Result */
- variable[10] = UNBOX_NativeArray(variable[10])[UNTAG_Int( variable[8] /*index*/)];
- variable[9] = variable[10];
- goto return_label29;
- return_label29: while(false);
- /* Register variable[6]: Result */
- variable[6] = variable[9];
- /* Register variable[7]: Local variable */
- variable[7] = variable[1] /*t*/;
- /* Register variable[8]: Local variable */
- variable[8] = variable[5] /*i*/;
- /* Register variable[9]: Method return value and escape marker */
- /* Register variable[10]: Result */
- variable[10] = TAG_Bool(UNTAG_Int( variable[8] /*index*/)>=UNTAG_Int( TAG_Int(0)));
- /* Ensure var variable[10]: Left 'and' operand*/
- if (UNTAG_Bool(variable[10])) { /* and */
- /* Register variable[10]: Result */
- variable[10] = ATTR_array___AbstractArrayRead____length(variable[7]) /*AbstractArrayRead::_length*/;
- /* Register variable[10]: Result */
- variable[10] = TAG_Bool(UNTAG_Int( variable[8] /*index*/)<UNTAG_Int(variable[10]));
- }
- /* Register variable[10]: Result */
- if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_genericity, 234); nit_exit(1);}
- /* Register variable[10]: Result */
- variable[10] = ATTR_array___Array____items(variable[7]) /*Array::_items*/;
- /* Register variable[10]: Result */
- variable[10] = UNBOX_NativeArray(variable[10])[UNTAG_Int( variable[8] /*index*/)];
- variable[9] = variable[10];
- goto return_label30;
- return_label30: while(false);
- /* Register variable[7]: Result */
- variable[7] = variable[9];
- /* Register variable[6]: Result */
- variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[6] == variable[7]) || ((variable[6] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[6])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[6],variable[7])):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[6])(variable[6], variable[7]) /*Object::==*/)))))));
- if (UNTAG_Bool(variable[6])) { /*if*/
- variable[2] = TAG_Bool(false);
- goto return_label25;
+ REGB0 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]);
+ REGB1 = TAG_Bool(ATTR_genericity___MMTypeGeneric____params(fra.me.REG[0])!=NIT_NULL);
+ /* ./metamodel//genericity.nit:160 */
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_params");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_genericity, 160);
+ nit_exit(1);
+ }
+ fra.me.REG[2] = ATTR_genericity___MMTypeGeneric____params(fra.me.REG[0]);
+ REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=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[2]);
+ REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
+ /* ./metamodel//genericity.nit:160 */
+ if (UNTAG_Bool(REGB2)) {
+ } else {
+ REGB1 = TAG_Bool((REGB0)==(REGB1));
+ REGB2 = REGB1;
+ /* ./metamodel//genericity.nit:160 */
+ }
+ REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
+ if (UNTAG_Bool(REGB2)) {
+ REGB2 = TAG_Bool(false);
+ /* ./metamodel//genericity.nit:161 */
+ goto label1;
+ }
+ REGB1 = TAG_Int(0);
+ REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
+ /* ./../lib/standard//collection//array.nit:23 */
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_length");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
+ nit_exit(1);
+ }
+ REGB0 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]);
+ fra.me.REG[2] = NEW_Range_range___Range___without_last(REGB1, REGB0);
+ fra.me.REG[2] = CALL_abstract_collection___Collection___iterator(fra.me.REG[2])(fra.me.REG[2]);
+ /* ./metamodel//genericity.nit:163 */
+ while(1) {
+ REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[2])(fra.me.REG[2]);
+ if (UNTAG_Bool(REGB0)) {
+ REGB0 = CALL_abstract_collection___Iterator___item(fra.me.REG[2])(fra.me.REG[2]);
+ REGB1 = TAG_Bool(ATTR_genericity___MMTypeGeneric____params(fra.me.REG[0])!=NIT_NULL);
+ /* ./metamodel//genericity.nit:164 */
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_params");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_genericity, 164);
+ nit_exit(1);
+ }
+ fra.me.REG[3] = ATTR_genericity___MMTypeGeneric____params(fra.me.REG[0]);
+ REGB1 = REGB0;
+ REGB3 = TAG_Int(0);
+ REGB3 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB3));
+ /* ./../lib/standard//collection//array.nit:233 */
+ if (UNTAG_Bool(REGB3)) {
+ REGB3 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+ if (UNTAG_Bool(REGB3)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_length");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_array, 233);
+ nit_exit(1);
+ }
+ REGB3 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]);
+ REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB3));
+ /* ./../lib/standard//collection//array.nit:233 */
+ } else {
+ REGB4 = TAG_Bool(false);
+ REGB3 = REGB4;
+ }
+ if (UNTAG_Bool(REGB3)) {
+ } 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]);
+ REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+ /* ./../lib/standard//collection//array.nit:234 */
+ if (UNTAG_Bool(REGB3)) {
+ 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(REGB1)];
+ /* ./../lib/standard//collection//array.nit:234 */
+ goto label2;
+ label2: while(0);
+ fra.me.REG[4] = fra.me.REG[1];
+ 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[4])!=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[4]);
+ REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+ /* ./../lib/standard//collection//array.nit:233 */
+ } else {
+ REGB3 = TAG_Bool(false);
+ REGB1 = REGB3;
+ }
+ 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[4] = ATTR_array___Array____items(fra.me.REG[4]);
+ REGB1 = TAG_Bool(fra.me.REG[4]==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[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
+ /* ./../lib/standard//collection//array.nit:234 */
+ goto label3;
+ label3: while(0);
+ REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[3],fra.me.REG[4]));
+ /* ./metamodel//genericity.nit:164 */
+ 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)) {
+ REGB0 = TAG_Bool(false);
+ REGB2 = REGB0;
+ /* ./metamodel//genericity.nit:165 */
+ goto label1;
+ }
+ } else {
+ /* ./metamodel//genericity.nit:163 */
+ goto label4;