-val_t genericity___MMTypeGeneric___is_subtype(val_t self, val_t param0) {
- struct trace_t trace = {NULL, NULL, 179, LOCATE_genericity___MMTypeGeneric___is_subtype};
- val_t variable0;
- val_t variable1;
- val_t variable2;
- val_t variable3;
- val_t variable4;
- val_t variable5;
- val_t variable6;
- val_t variable7;
- trace.prev = tracehead; tracehead = &trace;
- trace.file = LOCATE_genericity;
- variable0 = param0;
- variable1 = ATTR_genericity___MMTypeGeneric____params( self) /*MMTypeGeneric::_params*/;
- variable1 = ((array___AbstractArray___length_t)CALL(variable1,COLOR_abstract_collection___Collection___length))(variable1) /*AbstractArray::length*/;
- variable2 = NEW_range___Range___without_last( TAG_Int(0), variable1); /*new Range[E]*/
- variable1 = variable2;
- variable1 = ((range___Range___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*Range::iterator*/;
- while (true) { /*for*/
- variable2 = ((abstract_collection___Iterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*Iterator::is_ok*/;
- if (!UNTAG_Bool(variable2)) break; /*for*/
- variable2 = ((abstract_collection___Iterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*Iterator::item*/;
- variable3 = ((genericity___MMTypeGeneric___params_t)CALL( variable0 /*t*/,COLOR_genericity___MMTypeGeneric___params))( variable0 /*t*/) /*MMTypeGeneric::params*/;
- variable4 = variable2 /*i*/;
- variable5 = TAG_Bool(UNTAG_Int( variable4 /*index*/)>=UNTAG_Int( TAG_Int(0)));
- variable6 = variable5;
- if (UNTAG_Bool(variable6)) { /* and */
- variable6 = variable3;
- variable6 = ATTR_array___AbstractArray____length(variable6) /*AbstractArray::_length*/;
- variable6 = TAG_Bool(UNTAG_Int( variable4 /*index*/)<UNTAG_Int(variable6));
- }
- variable5 = variable6;
- if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_genericity, 229); nit_exit(1);}
- variable5 = variable3;
- variable5 = ATTR_array___Array____items(variable5) /*Array::_items*/;
- variable5 = UNBOX_NativeArray(variable5)[UNTAG_Int( variable4 /*index*/)];
- goto return_label29;
- return_label29: while(false);
- variable3 = variable5;
- variable4 = ATTR_genericity___MMTypeGeneric____params( self) /*MMTypeGeneric::_params*/;
- variable5 = variable2 /*i*/;
- variable6 = TAG_Bool(UNTAG_Int( variable5 /*index*/)>=UNTAG_Int( TAG_Int(0)));
- variable7 = variable6;
- if (UNTAG_Bool(variable7)) { /* and */
- variable7 = variable4;
- variable7 = ATTR_array___AbstractArray____length(variable7) /*AbstractArray::_length*/;
- variable7 = TAG_Bool(UNTAG_Int( variable5 /*index*/)<UNTAG_Int(variable7));
+val_t genericity___MMTypeGeneric___params(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_genericity;
+ fra.me.line = 109;
+ fra.me.meth = LOCATE_genericity___MMTypeGeneric___params;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 1;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ REGB0 = TAG_Bool(ATTR_genericity___MMTypeGeneric____params(fra.me.REG[0])!=NIT_NULL);
+ /* ./metamodel//genericity.nit:109 */
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ fprintf(stderr, "Uninitialized attribute %s", "_params");
+ fprintf(stderr, " (%s:%d)\n", LOCATE_genericity, 109);
+ nit_exit(1);
+ }
+ fra.me.REG[0] = ATTR_genericity___MMTypeGeneric____params(fra.me.REG[0]);
+ stack_frame_head = fra.me.prev;
+ return fra.me.REG[0];
+}
+val_t genericity___MMTypeGeneric___params_equals(val_t p0, val_t p1){
+ struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+ val_t REGB0;
+ val_t REGB1;
+ val_t REGB2;
+ val_t REGB3;
+ val_t REGB4;
+ val_t tmp;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_genericity;
+ fra.me.line = 158;
+ fra.me.meth = LOCATE_genericity___MMTypeGeneric___params_equals;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 5;
+ 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[0] = p0;
+ fra.me.REG[1] = p1;
+ 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]);
+ 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;