c_src: update
[nit.git] / c_src / metamodel___genericity._sep.c
1 /* This C file is generated by NIT to compile module metamodel___genericity. */
2 #include "metamodel___genericity._sep.h"
3 val_t metamodel___genericity___MMLocalClass___get_formal(val_t p0, val_t p1){
4 struct {struct stack_frame_t me;} fra;
5 val_t REGB0;
6 val_t REGB1;
7 val_t REGB2;
8 val_t tmp;
9 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10 fra.me.file = LOCATE_metamodel___genericity;
11 fra.me.line = 25;
12 fra.me.meth = LOCATE_metamodel___genericity___MMLocalClass___get_formal;
13 fra.me.has_broke = 0;
14 fra.me.REG_size = 1;
15 fra.me.REG[0] = NIT_NULL;
16 fra.me.REG[0] = p0;
17 REGB0 = p1;
18 /* ./metamodel//genericity.nit:28 */
19 fra.me.REG[0] = CALL_metamodel___genericity___MMLocalClass___formals_types(fra.me.REG[0])(fra.me.REG[0]);
20 /* ./../lib/standard//collection//array.nit:280 */
21 REGB1 = TAG_Int(0);
22 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
23 if (UNTAG_Bool(REGB2)) {
24 } else {
25 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
26 }
27 /* ./../lib/standard//kernel.nit:233 */
28 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
29 /* ./../lib/standard//collection//array.nit:280 */
30 if (UNTAG_Bool(REGB1)) {
31 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
32 if (UNTAG_Bool(REGB1)) {
33 } else {
34 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
35 }
36 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
37 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
38 if (UNTAG_Bool(REGB2)) {
39 } else {
40 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
41 }
42 /* ./../lib/standard//kernel.nit:232 */
43 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
44 } else {
45 /* ./../lib/standard//collection//array.nit:280 */
46 REGB2 = TAG_Bool(false);
47 REGB1 = REGB2;
48 }
49 if (UNTAG_Bool(REGB1)) {
50 } else {
51 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
52 }
53 /* ./../lib/standard//collection//array.nit:281 */
54 fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
55 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
56 if (UNTAG_Bool(REGB1)) {
57 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
58 }
59 /* ./../lib/standard//collection//array.nit:718 */
60 fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
61 /* ./../lib/standard//collection//array.nit:281 */
62 goto label1;
63 label1: while(0);
64 /* ./metamodel//genericity.nit:28 */
65 goto label2;
66 label2: while(0);
67 stack_frame_head = fra.me.prev;
68 return fra.me.REG[0];
69 }
70 void metamodel___genericity___MMLocalClass___register_formal(val_t p0, val_t p1){
71 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
72 val_t REGB0;
73 val_t REGB1;
74 val_t REGB2;
75 val_t tmp;
76 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
77 fra.me.file = LOCATE_metamodel___genericity;
78 fra.me.line = 31;
79 fra.me.meth = LOCATE_metamodel___genericity___MMLocalClass___register_formal;
80 fra.me.has_broke = 0;
81 fra.me.REG_size = 3;
82 fra.me.REG[0] = NIT_NULL;
83 fra.me.REG[1] = NIT_NULL;
84 fra.me.REG[2] = NIT_NULL;
85 fra.me.REG[0] = p0;
86 fra.me.REG[1] = p1;
87 /* ./metamodel//genericity.nit:35 */
88 fra.me.REG[2] = CALL_metamodel___genericity___MMTypeFormalParameter___def_class(fra.me.REG[1])(fra.me.REG[1]);
89 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[0]));
90 if (UNTAG_Bool(REGB0)) {
91 } else {
92 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
93 REGB0 = REGB1;
94 }
95 if (UNTAG_Bool(REGB0)) {
96 } else {
97 nit_abort("Assert failed", NULL, LOCATE_metamodel___genericity, 35);
98 }
99 /* ./metamodel//genericity.nit:36 */
100 REGB0 = CALL_metamodel___genericity___MMTypeFormalParameter___position(fra.me.REG[1])(fra.me.REG[1]);
101 REGB1 = TAG_Bool(ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0])!=NIT_NULL);
102 if (UNTAG_Bool(REGB1)) {
103 } else {
104 nit_abort("Uninitialized attribute %s", "_formals_types", LOCATE_metamodel___genericity, 36);
105 }
106 fra.me.REG[2] = ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0]);
107 /* ./../lib/standard//collection//array.nit:24 */
108 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
109 if (UNTAG_Bool(REGB1)) {
110 } else {
111 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
112 }
113 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
114 /* ./metamodel//genericity.nit:36 */
115 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
116 if (UNTAG_Bool(REGB2)) {
117 } else {
118 /* ./../lib/standard//kernel.nit:227 */
119 REGB1 = TAG_Bool((REGB0)==(REGB1));
120 /* ./metamodel//genericity.nit:36 */
121 REGB2 = REGB1;
122 }
123 if (UNTAG_Bool(REGB2)) {
124 } else {
125 nit_abort("Assert failed", NULL, LOCATE_metamodel___genericity, 36);
126 }
127 /* ./metamodel//genericity.nit:37 */
128 REGB2 = TAG_Bool(ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0])!=NIT_NULL);
129 if (UNTAG_Bool(REGB2)) {
130 } else {
131 nit_abort("Uninitialized attribute %s", "_formals_types", LOCATE_metamodel___genericity, 37);
132 }
133 fra.me.REG[0] = ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0]);
134 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
135 stack_frame_head = fra.me.prev;
136 return;
137 }
138 val_t metamodel___genericity___MMLocalClass___get_instantiate_type(val_t p0, val_t p1){
139 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
140 val_t REGB0;
141 val_t REGB1;
142 val_t REGB2;
143 val_t tmp;
144 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
145 fra.me.file = LOCATE_metamodel___genericity;
146 fra.me.line = 43;
147 fra.me.meth = LOCATE_metamodel___genericity___MMLocalClass___get_instantiate_type;
148 fra.me.has_broke = 0;
149 fra.me.REG_size = 5;
150 fra.me.REG[0] = NIT_NULL;
151 fra.me.REG[1] = NIT_NULL;
152 fra.me.REG[2] = NIT_NULL;
153 fra.me.REG[3] = NIT_NULL;
154 fra.me.REG[4] = NIT_NULL;
155 fra.me.REG[0] = p0;
156 fra.me.REG[1] = p1;
157 /* ./metamodel//genericity.nit:46 */
158 REGB0 = TAG_Bool(ATTR_metamodel___genericity___MMLocalClass____types(fra.me.REG[0])!=NIT_NULL);
159 if (UNTAG_Bool(REGB0)) {
160 } else {
161 nit_abort("Uninitialized attribute %s", "_types", LOCATE_metamodel___genericity, 46);
162 }
163 fra.me.REG[2] = ATTR_metamodel___genericity___MMLocalClass____types(fra.me.REG[0]);
164 /* ./../lib/standard//collection//array.nit:269 */
165 REGB0 = TAG_Int(0);
166 /* ./../lib/standard//collection//array.nit:270 */
167 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
168 if (UNTAG_Bool(REGB1)) {
169 } else {
170 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
171 }
172 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
173 /* ./../lib/standard//collection//array.nit:271 */
174 fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
175 /* ./../lib/standard//collection//array.nit:272 */
176 while(1) {
177 /* ./../lib/standard//collection//array.nit:24 */
178 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
179 if (UNTAG_Bool(REGB1)) {
180 } else {
181 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
182 }
183 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
184 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
185 if (UNTAG_Bool(REGB2)) {
186 } else {
187 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
188 }
189 /* ./../lib/standard//kernel.nit:232 */
190 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
191 /* ./../lib/standard//collection//array.nit:272 */
192 if (UNTAG_Bool(REGB1)) {
193 /* ./../lib/standard//collection//array.nit:273 */
194 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
195 if (UNTAG_Bool(REGB1)) {
196 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
197 }
198 /* ./../lib/standard//collection//array.nit:718 */
199 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
200 /* ./metamodel//genericity.nit:47 */
201 REGB1 = CALL_metamodel___genericity___MMTypeGeneric___params_equals(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
202 if (UNTAG_Bool(REGB1)) {
203 goto label1;
204 }
205 /* ./../lib/standard//collection//array.nit:274 */
206 REGB1 = TAG_Int(1);
207 /* ./../lib/standard//kernel.nit:235 */
208 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
209 /* ./../lib/standard//collection//array.nit:274 */
210 REGB0 = REGB1;
211 } else {
212 /* ./../lib/standard//collection//array.nit:272 */
213 goto label2;
214 }
215 }
216 label2: while(0);
217 /* ./metamodel//genericity.nit:49 */
218 fra.me.REG[1] = NEW_MMTypeGeneric_metamodel___genericity___MMTypeGeneric___init(fra.me.REG[0], fra.me.REG[1]);
219 /* ./metamodel//genericity.nit:50 */
220 REGB0 = TAG_Bool(ATTR_metamodel___genericity___MMLocalClass____types(fra.me.REG[0])!=NIT_NULL);
221 if (UNTAG_Bool(REGB0)) {
222 } else {
223 nit_abort("Uninitialized attribute %s", "_types", LOCATE_metamodel___genericity, 50);
224 }
225 fra.me.REG[0] = ATTR_metamodel___genericity___MMLocalClass____types(fra.me.REG[0]);
226 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
227 /* ./metamodel//genericity.nit:51 */
228 fra.me.REG[4] = fra.me.REG[1];
229 goto label1;
230 label1: while(0);
231 stack_frame_head = fra.me.prev;
232 return fra.me.REG[4];
233 }
234 val_t metamodel___genericity___MMLocalClass___formals_types(val_t p0){
235 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
236 val_t REGB0;
237 val_t REGB1;
238 val_t REGB2;
239 val_t REGB3;
240 val_t REGB4;
241 val_t tmp;
242 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
243 fra.me.file = LOCATE_metamodel___genericity;
244 fra.me.line = 57;
245 fra.me.meth = LOCATE_metamodel___genericity___MMLocalClass___formals_types;
246 fra.me.has_broke = 0;
247 fra.me.REG_size = 4;
248 fra.me.REG[0] = NIT_NULL;
249 fra.me.REG[1] = NIT_NULL;
250 fra.me.REG[2] = NIT_NULL;
251 fra.me.REG[3] = NIT_NULL;
252 fra.me.REG[0] = p0;
253 /* ./metamodel//genericity.nit:61 */
254 REGB0 = TAG_Bool(ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0])!=NIT_NULL);
255 if (UNTAG_Bool(REGB0)) {
256 } else {
257 nit_abort("Uninitialized attribute %s", "_formals_types", LOCATE_metamodel___genericity, 61);
258 }
259 fra.me.REG[1] = ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0]);
260 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
261 if (UNTAG_Bool(REGB0)) {
262 /* ./metamodel//genericity.nit:62 */
263 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMConcreteClass, ID_metamodel___abstractmetamodel___MMConcreteClass)) /*cast MMConcreteClass*/;
264 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
265 if (UNTAG_Bool(REGB0)) {
266 } else {
267 nit_abort("Assert failed", NULL, LOCATE_metamodel___genericity, 62);
268 }
269 /* ./metamodel//genericity.nit:65 */
270 REGB0 = TAG_Int(0);
271 REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[0])(fra.me.REG[0]);
272 /* ./../lib/standard//kernel.nit:352 */
273 while(1) {
274 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
275 if (UNTAG_Bool(REGB2)) {
276 } else {
277 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
278 }
279 /* ./../lib/standard//kernel.nit:232 */
280 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
281 /* ./../lib/standard//kernel.nit:352 */
282 if (UNTAG_Bool(REGB2)) {
283 /* ./metamodel//genericity.nit:65 */
284 REGB2 = REGB0;
285 /* ./metamodel//genericity.nit:66 */
286 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
287 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[1])(fra.me.REG[1]);
288 fra.me.REG[1] = CALL_metamodel___genericity___MMLocalClass___get_formal(fra.me.REG[1])(fra.me.REG[1], REGB2);
289 /* ./metamodel//genericity.nit:67 */
290 fra.me.REG[1] = CALL_metamodel___type_formal___MMTypeFormal___name(fra.me.REG[1])(fra.me.REG[1]);
291 fra.me.REG[1] = NEW_MMTypeFormalParameter_metamodel___genericity___MMTypeFormalParameter___init(fra.me.REG[1], REGB2, fra.me.REG[0]);
292 /* ./metamodel//genericity.nit:68 */
293 CALL_metamodel___genericity___MMLocalClass___register_formal(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
294 /* ./../lib/standard//kernel.nit:354 */
295 REGB2 = TAG_Int(1);
296 /* ./../lib/standard//kernel.nit:235 */
297 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
298 /* ./../lib/standard//kernel.nit:354 */
299 REGB0 = REGB2;
300 } else {
301 /* ./../lib/standard//kernel.nit:352 */
302 goto label1;
303 }
304 }
305 label1: while(0);
306 /* ./metamodel//genericity.nit:71 */
307 REGB0 = TAG_Int(0);
308 REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[0])(fra.me.REG[0]);
309 /* ./../lib/standard//kernel.nit:352 */
310 while(1) {
311 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
312 if (UNTAG_Bool(REGB2)) {
313 } else {
314 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
315 }
316 /* ./../lib/standard//kernel.nit:232 */
317 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
318 /* ./../lib/standard//kernel.nit:352 */
319 if (UNTAG_Bool(REGB2)) {
320 /* ./metamodel//genericity.nit:71 */
321 REGB2 = REGB0;
322 /* ./metamodel//genericity.nit:72 */
323 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
324 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[1])(fra.me.REG[1]);
325 fra.me.REG[1] = CALL_metamodel___genericity___MMLocalClass___get_formal(fra.me.REG[1])(fra.me.REG[1], REGB2);
326 /* ./metamodel//genericity.nit:73 */
327 REGB3 = TAG_Bool(ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0])!=NIT_NULL);
328 if (UNTAG_Bool(REGB3)) {
329 } else {
330 nit_abort("Uninitialized attribute %s", "_formals_types", LOCATE_metamodel___genericity, 73);
331 }
332 fra.me.REG[2] = ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0]);
333 /* ./../lib/standard//collection//array.nit:280 */
334 REGB3 = TAG_Int(0);
335 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
336 if (UNTAG_Bool(REGB4)) {
337 } else {
338 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
339 }
340 /* ./../lib/standard//kernel.nit:233 */
341 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
342 /* ./../lib/standard//collection//array.nit:280 */
343 if (UNTAG_Bool(REGB3)) {
344 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
345 if (UNTAG_Bool(REGB3)) {
346 } else {
347 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
348 }
349 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
350 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
351 if (UNTAG_Bool(REGB4)) {
352 } else {
353 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
354 }
355 /* ./../lib/standard//kernel.nit:232 */
356 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
357 } else {
358 /* ./../lib/standard//collection//array.nit:280 */
359 REGB4 = TAG_Bool(false);
360 REGB3 = REGB4;
361 }
362 if (UNTAG_Bool(REGB3)) {
363 } else {
364 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
365 }
366 /* ./../lib/standard//collection//array.nit:281 */
367 fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
368 REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
369 if (UNTAG_Bool(REGB3)) {
370 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
371 }
372 /* ./../lib/standard//collection//array.nit:718 */
373 fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB2)];
374 /* ./../lib/standard//collection//array.nit:281 */
375 goto label2;
376 label2: while(0);
377 /* ./metamodel//genericity.nit:74 */
378 fra.me.REG[1] = CALL_metamodel___type_formal___MMTypeFormal___bound(fra.me.REG[1])(fra.me.REG[1]);
379 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
380 fra.me.REG[3] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
381 CALL_metamodel___genericity___MMTypeFormalParameter___bound__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
382 /* ./../lib/standard//kernel.nit:354 */
383 REGB2 = TAG_Int(1);
384 /* ./../lib/standard//kernel.nit:235 */
385 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
386 /* ./../lib/standard//kernel.nit:354 */
387 REGB0 = REGB2;
388 } else {
389 /* ./../lib/standard//kernel.nit:352 */
390 goto label3;
391 }
392 }
393 label3: while(0);
394 }
395 /* ./metamodel//genericity.nit:77 */
396 REGB0 = TAG_Bool(ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0])!=NIT_NULL);
397 if (UNTAG_Bool(REGB0)) {
398 } else {
399 nit_abort("Uninitialized attribute %s", "_formals_types", LOCATE_metamodel___genericity, 77);
400 }
401 fra.me.REG[0] = ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0]);
402 goto label4;
403 label4: while(0);
404 stack_frame_head = fra.me.prev;
405 return fra.me.REG[0];
406 }
407 val_t metamodel___genericity___MMLocalClass___get_type(val_t p0){
408 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
409 val_t REGB0;
410 val_t REGB1;
411 val_t tmp;
412 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
413 fra.me.file = LOCATE_metamodel___genericity;
414 fra.me.line = 80;
415 fra.me.meth = LOCATE_metamodel___genericity___MMLocalClass___get_type;
416 fra.me.has_broke = 0;
417 fra.me.REG_size = 3;
418 fra.me.REG[0] = NIT_NULL;
419 fra.me.REG[1] = NIT_NULL;
420 fra.me.REG[2] = NIT_NULL;
421 fra.me.REG[0] = p0;
422 /* ./metamodel//genericity.nit:80 */
423 fra.me.REG[1] = fra.me.REG[0];
424 /* ./metamodel//genericity.nit:82 */
425 fra.me.REG[2] = ATTR_metamodel___static_type___MMLocalClass____base_type_cache(fra.me.REG[1]);
426 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
427 if (UNTAG_Bool(REGB0)) {
428 } else {
429 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
430 if (UNTAG_Bool(REGB1)) {
431 REGB1 = TAG_Bool(false);
432 REGB0 = REGB1;
433 } else {
434 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
435 REGB0 = REGB1;
436 }
437 }
438 if (UNTAG_Bool(REGB0)) {
439 REGB0 = CALL_metamodel___genericity___MMLocalClass___is_generic(fra.me.REG[1])(fra.me.REG[1]);
440 } else {
441 REGB1 = TAG_Bool(false);
442 REGB0 = REGB1;
443 }
444 if (UNTAG_Bool(REGB0)) {
445 /* ./metamodel//genericity.nit:83 */
446 fra.me.REG[2] = CALL_metamodel___genericity___MMLocalClass___formals_types(fra.me.REG[1])(fra.me.REG[1]);
447 fra.me.REG[2] = CALL_metamodel___genericity___MMLocalClass___get_instantiate_type(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
448 ATTR_metamodel___static_type___MMLocalClass____base_type_cache(fra.me.REG[1]) = fra.me.REG[2];
449 /* ./metamodel//genericity.nit:84 */
450 fra.me.REG[1] = ATTR_metamodel___static_type___MMLocalClass____base_type_cache(fra.me.REG[1]);
451 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
452 if (UNTAG_Bool(REGB0)) {
453 } else {
454 nit_abort("Cast failed", NULL, LOCATE_metamodel___genericity, 84);
455 }
456 goto label1;
457 } else {
458 /* ./metamodel//genericity.nit:86 */
459 fra.me.REG[0] = CALL_SUPER_metamodel___genericity___MMLocalClass___get_type(fra.me.REG[0])(fra.me.REG[0]);
460 fra.me.REG[1] = fra.me.REG[0];
461 goto label1;
462 }
463 label1: while(0);
464 stack_frame_head = fra.me.prev;
465 return fra.me.REG[1];
466 }
467 val_t metamodel___genericity___MMLocalClass___is_generic(val_t p0){
468 struct {struct stack_frame_t me;} fra;
469 val_t REGB0;
470 val_t REGB1;
471 val_t REGB2;
472 val_t tmp;
473 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
474 fra.me.file = LOCATE_metamodel___genericity;
475 fra.me.line = 90;
476 fra.me.meth = LOCATE_metamodel___genericity___MMLocalClass___is_generic;
477 fra.me.has_broke = 0;
478 fra.me.REG_size = 1;
479 fra.me.REG[0] = NIT_NULL;
480 fra.me.REG[0] = p0;
481 /* ./metamodel//genericity.nit:91 */
482 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[0])(fra.me.REG[0]);
483 REGB1 = TAG_Int(0);
484 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
485 if (UNTAG_Bool(REGB2)) {
486 } else {
487 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
488 }
489 /* ./../lib/standard//kernel.nit:234 */
490 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
491 /* ./metamodel//genericity.nit:91 */
492 goto label1;
493 label1: while(0);
494 stack_frame_head = fra.me.prev;
495 return REGB1;
496 }
497 val_t metamodel___genericity___MMType___is_generic(val_t p0){
498 struct {struct stack_frame_t me;} fra;
499 val_t tmp;
500 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
501 fra.me.file = LOCATE_metamodel___genericity;
502 fra.me.line = 95;
503 fra.me.meth = LOCATE_metamodel___genericity___MMType___is_generic;
504 fra.me.has_broke = 0;
505 fra.me.REG_size = 0;
506 /* ./metamodel//genericity.nit:95 */
507 nit_abort("Deferred method called", NULL, LOCATE_metamodel___genericity, 95);
508 stack_frame_head = fra.me.prev;
509 return NIT_NULL;
510 }
511 val_t metamodel___genericity___MMTypeFormal___is_generic(val_t p0){
512 struct {struct stack_frame_t me;} fra;
513 val_t REGB0;
514 val_t tmp;
515 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
516 fra.me.file = LOCATE_metamodel___genericity;
517 fra.me.line = 100;
518 fra.me.meth = LOCATE_metamodel___genericity___MMTypeFormal___is_generic;
519 fra.me.has_broke = 0;
520 fra.me.REG_size = 1;
521 fra.me.REG[0] = NIT_NULL;
522 fra.me.REG[0] = p0;
523 /* ./metamodel//genericity.nit:100 */
524 fra.me.REG[0] = ATTR_metamodel___type_formal___MMTypeFormal____bound(fra.me.REG[0]);
525 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
526 if (UNTAG_Bool(REGB0)) {
527 nit_abort("Reciever is null", NULL, LOCATE_metamodel___genericity, 100);
528 }
529 REGB0 = CALL_metamodel___genericity___MMType___is_generic(fra.me.REG[0])(fra.me.REG[0]);
530 goto label1;
531 label1: while(0);
532 stack_frame_head = fra.me.prev;
533 return REGB0;
534 }
535 val_t metamodel___genericity___MMTypeSimpleClass___is_generic(val_t p0){
536 struct {struct stack_frame_t me;} fra;
537 val_t REGB0;
538 val_t tmp;
539 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
540 fra.me.file = LOCATE_metamodel___genericity;
541 fra.me.line = 104;
542 fra.me.meth = LOCATE_metamodel___genericity___MMTypeSimpleClass___is_generic;
543 fra.me.has_broke = 0;
544 fra.me.REG_size = 1;
545 fra.me.REG[0] = NIT_NULL;
546 fra.me.REG[0] = p0;
547 /* ./metamodel//genericity.nit:104 */
548 REGB0 = TAG_Bool(false);
549 goto label1;
550 label1: while(0);
551 stack_frame_head = fra.me.prev;
552 return REGB0;
553 }
554 val_t metamodel___genericity___MMTypeGeneric___params(val_t p0){
555 struct {struct stack_frame_t me;} fra;
556 val_t REGB0;
557 val_t tmp;
558 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
559 fra.me.file = LOCATE_metamodel___genericity;
560 fra.me.line = 109;
561 fra.me.meth = LOCATE_metamodel___genericity___MMTypeGeneric___params;
562 fra.me.has_broke = 0;
563 fra.me.REG_size = 1;
564 fra.me.REG[0] = NIT_NULL;
565 fra.me.REG[0] = p0;
566 /* ./metamodel//genericity.nit:109 */
567 REGB0 = TAG_Bool(ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0])!=NIT_NULL);
568 if (UNTAG_Bool(REGB0)) {
569 } else {
570 nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___genericity, 109);
571 }
572 fra.me.REG[0] = ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0]);
573 stack_frame_head = fra.me.prev;
574 return fra.me.REG[0];
575 }
576 val_t metamodel___genericity___MMTypeGeneric___is_generic(val_t p0){
577 struct {struct stack_frame_t me;} fra;
578 val_t REGB0;
579 val_t tmp;
580 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
581 fra.me.file = LOCATE_metamodel___genericity;
582 fra.me.line = 112;
583 fra.me.meth = LOCATE_metamodel___genericity___MMTypeGeneric___is_generic;
584 fra.me.has_broke = 0;
585 fra.me.REG_size = 1;
586 fra.me.REG[0] = NIT_NULL;
587 fra.me.REG[0] = p0;
588 /* ./metamodel//genericity.nit:112 */
589 REGB0 = TAG_Bool(true);
590 goto label1;
591 label1: while(0);
592 stack_frame_head = fra.me.prev;
593 return REGB0;
594 }
595 val_t metamodel___genericity___MMTypeGeneric___is_supertype(val_t p0, val_t p1){
596 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
597 val_t REGB0;
598 val_t REGB1;
599 val_t tmp;
600 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
601 fra.me.file = LOCATE_metamodel___genericity;
602 fra.me.line = 114;
603 fra.me.meth = LOCATE_metamodel___genericity___MMTypeGeneric___is_supertype;
604 fra.me.has_broke = 0;
605 fra.me.REG_size = 4;
606 fra.me.REG[0] = NIT_NULL;
607 fra.me.REG[1] = NIT_NULL;
608 fra.me.REG[2] = NIT_NULL;
609 fra.me.REG[3] = NIT_NULL;
610 fra.me.REG[0] = p0;
611 fra.me.REG[1] = p1;
612 /* ./metamodel//genericity.nit:116 */
613 fra.me.REG[2] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[1])(fra.me.REG[1]);
614 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[2])(fra.me.REG[2]);
615 REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0])!=NIT_NULL);
616 if (UNTAG_Bool(REGB0)) {
617 } else {
618 nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___genericity, 116);
619 }
620 fra.me.REG[3] = ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0]);
621 REGB0 = CALL_metamodel___partial_order___PartialOrderElement_____leq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
622 if (UNTAG_Bool(REGB0)) {
623 /* ./metamodel//genericity.nit:117 */
624 REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0])!=NIT_NULL);
625 if (UNTAG_Bool(REGB0)) {
626 } else {
627 nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___genericity, 117);
628 }
629 fra.me.REG[3] = ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0]);
630 fra.me.REG[3] = CALL_metamodel___static_type___MMType___upcast_for(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
631 /* ./metamodel//genericity.nit:118 */
632 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[3], COLOR_metamodel___genericity___MMTypeGeneric, ID_metamodel___genericity___MMTypeGeneric)) /*cast MMTypeGeneric*/;
633 if (UNTAG_Bool(REGB0)) {
634 /* ./metamodel//genericity.nit:119 */
635 REGB0 = CALL_metamodel___genericity___MMTypeGeneric___is_subtype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
636 goto label1;
637 }
638 }
639 /* ./metamodel//genericity.nit:122 */
640 REGB1 = TAG_Bool(false);
641 REGB0 = REGB1;
642 goto label1;
643 label1: while(0);
644 stack_frame_head = fra.me.prev;
645 return REGB0;
646 }
647 val_t metamodel___genericity___MMTypeGeneric___upcast_for(val_t p0, val_t p1){
648 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
649 val_t REGB0;
650 val_t REGB1;
651 val_t tmp;
652 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
653 fra.me.file = LOCATE_metamodel___genericity;
654 fra.me.line = 125;
655 fra.me.meth = LOCATE_metamodel___genericity___MMTypeGeneric___upcast_for;
656 fra.me.has_broke = 0;
657 fra.me.REG_size = 3;
658 fra.me.REG[0] = NIT_NULL;
659 fra.me.REG[1] = NIT_NULL;
660 fra.me.REG[2] = NIT_NULL;
661 fra.me.REG[0] = p0;
662 fra.me.REG[1] = p1;
663 /* ./metamodel//genericity.nit:125 */
664 fra.me.REG[2] = fra.me.REG[0];
665 /* ./metamodel//genericity.nit:127 */
666 fra.me.REG[1] = CALL_SUPER_metamodel___genericity___MMTypeGeneric___upcast_for(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
667 /* ./metamodel//genericity.nit:128 */
668 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[2]));
669 if (UNTAG_Bool(REGB0)) {
670 } else {
671 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
672 REGB0 = REGB1;
673 }
674 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
675 if (UNTAG_Bool(REGB0)) {
676 /* ./metamodel//genericity.nit:129 */
677 fra.me.REG[2] = CALL_metamodel___static_type___MMType___adapt_to(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
678 fra.me.REG[1] = fra.me.REG[2];
679 }
680 /* ./metamodel//genericity.nit:131 */
681 goto label1;
682 label1: while(0);
683 stack_frame_head = fra.me.prev;
684 return fra.me.REG[1];
685 }
686 val_t metamodel___genericity___MMTypeGeneric___for_module(val_t p0, val_t p1){
687 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
688 val_t REGB0;
689 val_t REGB1;
690 val_t REGB2;
691 val_t tmp;
692 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
693 fra.me.file = LOCATE_metamodel___genericity;
694 fra.me.line = 134;
695 fra.me.meth = LOCATE_metamodel___genericity___MMTypeGeneric___for_module;
696 fra.me.has_broke = 0;
697 fra.me.REG_size = 7;
698 fra.me.REG[0] = NIT_NULL;
699 fra.me.REG[1] = NIT_NULL;
700 fra.me.REG[2] = NIT_NULL;
701 fra.me.REG[3] = NIT_NULL;
702 fra.me.REG[4] = NIT_NULL;
703 fra.me.REG[5] = NIT_NULL;
704 fra.me.REG[6] = NIT_NULL;
705 fra.me.REG[0] = p0;
706 fra.me.REG[1] = p1;
707 /* ./metamodel//genericity.nit:136 */
708 fra.me.REG[2] = fra.me.REG[0];
709 /* ./metamodel//genericity.nit:137 */
710 fra.me.REG[3] = CALL_metamodel___static_type___MMType___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
711 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
712 if (UNTAG_Bool(REGB0)) {
713 } else {
714 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
715 REGB0 = REGB1;
716 }
717 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
718 if (UNTAG_Bool(REGB0)) {
719 /* ./metamodel//genericity.nit:138 */
720 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
721 /* ./metamodel//genericity.nit:139 */
722 REGB0 = TAG_Bool(ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0])!=NIT_NULL);
723 if (UNTAG_Bool(REGB0)) {
724 } else {
725 nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___genericity, 139);
726 }
727 fra.me.REG[4] = ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0]);
728 /* ./../lib/standard//collection//array.nit:269 */
729 REGB0 = TAG_Int(0);
730 /* ./../lib/standard//collection//array.nit:270 */
731 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
732 if (UNTAG_Bool(REGB1)) {
733 } else {
734 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
735 }
736 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
737 /* ./../lib/standard//collection//array.nit:271 */
738 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
739 /* ./../lib/standard//collection//array.nit:272 */
740 while(1) {
741 /* ./../lib/standard//collection//array.nit:24 */
742 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
743 if (UNTAG_Bool(REGB1)) {
744 } else {
745 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
746 }
747 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
748 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
749 if (UNTAG_Bool(REGB2)) {
750 } else {
751 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
752 }
753 /* ./../lib/standard//kernel.nit:232 */
754 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
755 /* ./../lib/standard//collection//array.nit:272 */
756 if (UNTAG_Bool(REGB1)) {
757 /* ./../lib/standard//collection//array.nit:273 */
758 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
759 if (UNTAG_Bool(REGB1)) {
760 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
761 }
762 /* ./../lib/standard//collection//array.nit:718 */
763 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
764 /* ./metamodel//genericity.nit:140 */
765 fra.me.REG[6] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1]);
766 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
767 /* ./../lib/standard//collection//array.nit:274 */
768 REGB1 = TAG_Int(1);
769 /* ./../lib/standard//kernel.nit:235 */
770 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
771 /* ./../lib/standard//collection//array.nit:274 */
772 REGB0 = REGB1;
773 } else {
774 /* ./../lib/standard//collection//array.nit:272 */
775 goto label1;
776 }
777 }
778 label1: while(0);
779 /* ./metamodel//genericity.nit:142 */
780 REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0])!=NIT_NULL);
781 if (UNTAG_Bool(REGB0)) {
782 } else {
783 nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___genericity, 142);
784 }
785 fra.me.REG[0] = ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0]);
786 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___for_module(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
787 /* ./metamodel//genericity.nit:143 */
788 fra.me.REG[3] = CALL_metamodel___genericity___MMLocalClass___get_instantiate_type(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
789 fra.me.REG[2] = fra.me.REG[3];
790 }
791 /* ./metamodel//genericity.nit:145 */
792 goto label2;
793 label2: while(0);
794 stack_frame_head = fra.me.prev;
795 return fra.me.REG[2];
796 }
797 val_t metamodel___genericity___MMTypeGeneric___adapt_to(val_t p0, val_t p1){
798 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
799 val_t REGB0;
800 val_t REGB1;
801 val_t REGB2;
802 val_t tmp;
803 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
804 fra.me.file = LOCATE_metamodel___genericity;
805 fra.me.line = 148;
806 fra.me.meth = LOCATE_metamodel___genericity___MMTypeGeneric___adapt_to;
807 fra.me.has_broke = 0;
808 fra.me.REG_size = 6;
809 fra.me.REG[0] = NIT_NULL;
810 fra.me.REG[1] = NIT_NULL;
811 fra.me.REG[2] = NIT_NULL;
812 fra.me.REG[3] = NIT_NULL;
813 fra.me.REG[4] = NIT_NULL;
814 fra.me.REG[5] = NIT_NULL;
815 fra.me.REG[0] = p0;
816 fra.me.REG[1] = p1;
817 /* ./metamodel//genericity.nit:150 */
818 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
819 /* ./metamodel//genericity.nit:151 */
820 REGB0 = TAG_Bool(ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0])!=NIT_NULL);
821 if (UNTAG_Bool(REGB0)) {
822 } else {
823 nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___genericity, 151);
824 }
825 fra.me.REG[3] = ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0]);
826 /* ./../lib/standard//collection//array.nit:269 */
827 REGB0 = TAG_Int(0);
828 /* ./../lib/standard//collection//array.nit:270 */
829 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
830 if (UNTAG_Bool(REGB1)) {
831 } else {
832 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
833 }
834 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
835 /* ./../lib/standard//collection//array.nit:271 */
836 fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
837 /* ./../lib/standard//collection//array.nit:272 */
838 while(1) {
839 /* ./../lib/standard//collection//array.nit:24 */
840 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
841 if (UNTAG_Bool(REGB1)) {
842 } else {
843 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
844 }
845 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
846 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
847 if (UNTAG_Bool(REGB2)) {
848 } else {
849 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
850 }
851 /* ./../lib/standard//kernel.nit:232 */
852 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
853 /* ./../lib/standard//collection//array.nit:272 */
854 if (UNTAG_Bool(REGB1)) {
855 /* ./../lib/standard//collection//array.nit:273 */
856 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
857 if (UNTAG_Bool(REGB1)) {
858 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
859 }
860 /* ./../lib/standard//collection//array.nit:718 */
861 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
862 /* ./metamodel//genericity.nit:152 */
863 fra.me.REG[5] = CALL_metamodel___static_type___MMType___adapt_to(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
864 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
865 /* ./../lib/standard//collection//array.nit:274 */
866 REGB1 = TAG_Int(1);
867 /* ./../lib/standard//kernel.nit:235 */
868 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
869 /* ./../lib/standard//collection//array.nit:274 */
870 REGB0 = REGB1;
871 } else {
872 /* ./../lib/standard//collection//array.nit:272 */
873 goto label1;
874 }
875 }
876 label1: while(0);
877 /* ./metamodel//genericity.nit:154 */
878 REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0])!=NIT_NULL);
879 if (UNTAG_Bool(REGB0)) {
880 } else {
881 nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___genericity, 154);
882 }
883 fra.me.REG[0] = ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0]);
884 fra.me.REG[2] = CALL_metamodel___genericity___MMLocalClass___get_instantiate_type(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
885 /* ./metamodel//genericity.nit:155 */
886 goto label2;
887 label2: while(0);
888 stack_frame_head = fra.me.prev;
889 return fra.me.REG[2];
890 }
891 val_t metamodel___genericity___MMTypeGeneric___params_equals(val_t p0, val_t p1){
892 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
893 val_t REGB0;
894 val_t REGB1;
895 val_t REGB2;
896 val_t REGB3;
897 val_t REGB4;
898 val_t REGB5;
899 val_t REGB6;
900 val_t tmp;
901 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
902 fra.me.file = LOCATE_metamodel___genericity;
903 fra.me.line = 158;
904 fra.me.meth = LOCATE_metamodel___genericity___MMTypeGeneric___params_equals;
905 fra.me.has_broke = 0;
906 fra.me.REG_size = 4;
907 fra.me.REG[0] = NIT_NULL;
908 fra.me.REG[1] = NIT_NULL;
909 fra.me.REG[2] = NIT_NULL;
910 fra.me.REG[3] = NIT_NULL;
911 fra.me.REG[0] = p0;
912 fra.me.REG[1] = p1;
913 /* ./../lib/standard//collection//array.nit:24 */
914 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
915 if (UNTAG_Bool(REGB0)) {
916 } else {
917 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
918 }
919 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
920 /* ./metamodel//genericity.nit:160 */
921 REGB1 = TAG_Bool(ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0])!=NIT_NULL);
922 if (UNTAG_Bool(REGB1)) {
923 } else {
924 nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___genericity, 160);
925 }
926 fra.me.REG[2] = ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0]);
927 /* ./../lib/standard//collection//array.nit:24 */
928 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
929 if (UNTAG_Bool(REGB1)) {
930 } else {
931 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
932 }
933 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
934 /* ./metamodel//genericity.nit:160 */
935 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
936 if (UNTAG_Bool(REGB2)) {
937 } else {
938 /* ./../lib/standard//kernel.nit:227 */
939 REGB1 = TAG_Bool((REGB0)==(REGB1));
940 /* ./metamodel//genericity.nit:160 */
941 REGB2 = REGB1;
942 }
943 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
944 if (UNTAG_Bool(REGB2)) {
945 /* ./metamodel//genericity.nit:161 */
946 REGB2 = TAG_Bool(false);
947 goto label1;
948 }
949 /* ./metamodel//genericity.nit:163 */
950 REGB1 = TAG_Int(0);
951 /* ./../lib/standard//collection//array.nit:24 */
952 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
953 if (UNTAG_Bool(REGB0)) {
954 } else {
955 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
956 }
957 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
958 /* ./../lib/standard//kernel.nit:352 */
959 while(1) {
960 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
961 if (UNTAG_Bool(REGB3)) {
962 } else {
963 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
964 }
965 /* ./../lib/standard//kernel.nit:232 */
966 REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
967 /* ./../lib/standard//kernel.nit:352 */
968 if (UNTAG_Bool(REGB3)) {
969 /* ./metamodel//genericity.nit:163 */
970 REGB3 = REGB1;
971 /* ./metamodel//genericity.nit:164 */
972 REGB4 = TAG_Bool(ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0])!=NIT_NULL);
973 if (UNTAG_Bool(REGB4)) {
974 } else {
975 nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___genericity, 164);
976 }
977 fra.me.REG[2] = ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0]);
978 /* ./../lib/standard//collection//array.nit:278 */
979 REGB4 = REGB3;
980 /* ./../lib/standard//collection//array.nit:280 */
981 REGB5 = TAG_Int(0);
982 REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
983 if (UNTAG_Bool(REGB6)) {
984 } else {
985 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
986 }
987 /* ./../lib/standard//kernel.nit:233 */
988 REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
989 /* ./../lib/standard//collection//array.nit:280 */
990 if (UNTAG_Bool(REGB5)) {
991 REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
992 if (UNTAG_Bool(REGB5)) {
993 } else {
994 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
995 }
996 REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
997 REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
998 if (UNTAG_Bool(REGB6)) {
999 } else {
1000 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1001 }
1002 /* ./../lib/standard//kernel.nit:232 */
1003 REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
1004 } else {
1005 /* ./../lib/standard//collection//array.nit:280 */
1006 REGB6 = TAG_Bool(false);
1007 REGB5 = REGB6;
1008 }
1009 if (UNTAG_Bool(REGB5)) {
1010 } else {
1011 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
1012 }
1013 /* ./../lib/standard//collection//array.nit:281 */
1014 fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
1015 REGB5 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1016 if (UNTAG_Bool(REGB5)) {
1017 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
1018 }
1019 /* ./../lib/standard//collection//array.nit:718 */
1020 fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB4)];
1021 /* ./../lib/standard//collection//array.nit:281 */
1022 goto label2;
1023 label2: while(0);
1024 /* ./../lib/standard//collection//array.nit:278 */
1025 fra.me.REG[3] = fra.me.REG[1];
1026 /* ./../lib/standard//collection//array.nit:280 */
1027 REGB4 = TAG_Int(0);
1028 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1029 if (UNTAG_Bool(REGB5)) {
1030 } else {
1031 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1032 }
1033 /* ./../lib/standard//kernel.nit:233 */
1034 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
1035 /* ./../lib/standard//collection//array.nit:280 */
1036 if (UNTAG_Bool(REGB4)) {
1037 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
1038 if (UNTAG_Bool(REGB4)) {
1039 } else {
1040 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
1041 }
1042 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
1043 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1044 if (UNTAG_Bool(REGB5)) {
1045 } else {
1046 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1047 }
1048 /* ./../lib/standard//kernel.nit:232 */
1049 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
1050 } else {
1051 /* ./../lib/standard//collection//array.nit:280 */
1052 REGB5 = TAG_Bool(false);
1053 REGB4 = REGB5;
1054 }
1055 if (UNTAG_Bool(REGB4)) {
1056 } else {
1057 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
1058 }
1059 /* ./../lib/standard//collection//array.nit:281 */
1060 fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
1061 REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1062 if (UNTAG_Bool(REGB4)) {
1063 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
1064 }
1065 /* ./../lib/standard//collection//array.nit:718 */
1066 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB3)];
1067 /* ./../lib/standard//collection//array.nit:281 */
1068 goto label3;
1069 label3: while(0);
1070 /* ./metamodel//genericity.nit:164 */
1071 REGB3 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[3]));
1072 if (UNTAG_Bool(REGB3)) {
1073 } else {
1074 REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1075 if (UNTAG_Bool(REGB4)) {
1076 REGB4 = TAG_Bool(false);
1077 REGB3 = REGB4;
1078 } else {
1079 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1080 REGB3 = REGB4;
1081 }
1082 }
1083 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
1084 if (UNTAG_Bool(REGB3)) {
1085 /* ./metamodel//genericity.nit:165 */
1086 REGB3 = TAG_Bool(false);
1087 REGB2 = REGB3;
1088 goto label1;
1089 }
1090 /* ./../lib/standard//kernel.nit:354 */
1091 REGB3 = TAG_Int(1);
1092 /* ./../lib/standard//kernel.nit:235 */
1093 REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
1094 /* ./../lib/standard//kernel.nit:354 */
1095 REGB1 = REGB3;
1096 } else {
1097 /* ./../lib/standard//kernel.nit:352 */
1098 goto label4;
1099 }
1100 }
1101 label4: while(0);
1102 /* ./metamodel//genericity.nit:168 */
1103 REGB1 = TAG_Bool(true);
1104 REGB2 = REGB1;
1105 goto label1;
1106 label1: while(0);
1107 stack_frame_head = fra.me.prev;
1108 return REGB2;
1109 }
1110 val_t metamodel___genericity___MMTypeGeneric___to_s(val_t p0){
1111 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1112 val_t REGB0;
1113 val_t tmp;
1114 static val_t once_value_1; /* Once value */
1115 static val_t once_value_2; /* Once value */
1116 static val_t once_value_3; /* Once value */
1117 static val_t once_value_4; /* Once value */
1118 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1119 fra.me.file = LOCATE_metamodel___genericity;
1120 fra.me.line = 171;
1121 fra.me.meth = LOCATE_metamodel___genericity___MMTypeGeneric___to_s;
1122 fra.me.has_broke = 0;
1123 fra.me.REG_size = 4;
1124 fra.me.REG[0] = NIT_NULL;
1125 fra.me.REG[1] = NIT_NULL;
1126 fra.me.REG[2] = NIT_NULL;
1127 fra.me.REG[3] = NIT_NULL;
1128 fra.me.REG[0] = p0;
1129 /* ./metamodel//genericity.nit:171 */
1130 fra.me.REG[1] = fra.me.REG[0];
1131 /* ./metamodel//genericity.nit:173 */
1132 REGB0 = TAG_Int(5);
1133 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
1134 if (!once_value_1) {
1135 fra.me.REG[3] = BOX_NativeString("");
1136 REGB0 = TAG_Int(0);
1137 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
1138 once_value_1 = fra.me.REG[3];
1139 register_static_object(&once_value_1);
1140 } else fra.me.REG[3] = once_value_1;
1141 fra.me.REG[3] = fra.me.REG[3];
1142 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1143 fra.me.REG[0] = CALL_SUPER_metamodel___genericity___MMTypeGeneric___to_s(fra.me.REG[0])(fra.me.REG[0]);
1144 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
1145 if (!once_value_2) {
1146 fra.me.REG[0] = BOX_NativeString("[");
1147 REGB0 = TAG_Int(1);
1148 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
1149 once_value_2 = fra.me.REG[0];
1150 register_static_object(&once_value_2);
1151 } else fra.me.REG[0] = once_value_2;
1152 fra.me.REG[0] = fra.me.REG[0];
1153 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
1154 REGB0 = TAG_Bool(ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[1])!=NIT_NULL);
1155 if (UNTAG_Bool(REGB0)) {
1156 } else {
1157 nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___genericity, 173);
1158 }
1159 fra.me.REG[1] = ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[1]);
1160 if (!once_value_3) {
1161 fra.me.REG[0] = BOX_NativeString(", ");
1162 REGB0 = TAG_Int(2);
1163 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
1164 once_value_3 = fra.me.REG[0];
1165 register_static_object(&once_value_3);
1166 } else fra.me.REG[0] = once_value_3;
1167 fra.me.REG[0] = fra.me.REG[0];
1168 fra.me.REG[0] = CALL_standard___string___Collection___join(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1169 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
1170 if (!once_value_4) {
1171 fra.me.REG[0] = BOX_NativeString("]");
1172 REGB0 = TAG_Int(1);
1173 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
1174 once_value_4 = fra.me.REG[0];
1175 register_static_object(&once_value_4);
1176 } else fra.me.REG[0] = once_value_4;
1177 fra.me.REG[0] = fra.me.REG[0];
1178 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
1179 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
1180 goto label5;
1181 label5: while(0);
1182 stack_frame_head = fra.me.prev;
1183 return fra.me.REG[2];
1184 }
1185 val_t metamodel___genericity___MMTypeGeneric___is_subtype(val_t p0, val_t p1){
1186 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1187 val_t REGB0;
1188 val_t REGB1;
1189 val_t REGB2;
1190 val_t REGB3;
1191 val_t REGB4;
1192 val_t REGB5;
1193 val_t tmp;
1194 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1195 fra.me.file = LOCATE_metamodel___genericity;
1196 fra.me.line = 176;
1197 fra.me.meth = LOCATE_metamodel___genericity___MMTypeGeneric___is_subtype;
1198 fra.me.has_broke = 0;
1199 fra.me.REG_size = 4;
1200 fra.me.REG[0] = NIT_NULL;
1201 fra.me.REG[1] = NIT_NULL;
1202 fra.me.REG[2] = NIT_NULL;
1203 fra.me.REG[3] = NIT_NULL;
1204 fra.me.REG[0] = p0;
1205 fra.me.REG[1] = p1;
1206 /* ./metamodel//genericity.nit:180 */
1207 REGB0 = TAG_Int(0);
1208 REGB1 = TAG_Bool(ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0])!=NIT_NULL);
1209 if (UNTAG_Bool(REGB1)) {
1210 } else {
1211 nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___genericity, 180);
1212 }
1213 fra.me.REG[2] = ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0]);
1214 /* ./../lib/standard//collection//array.nit:24 */
1215 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
1216 if (UNTAG_Bool(REGB1)) {
1217 } else {
1218 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1219 }
1220 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
1221 /* ./../lib/standard//kernel.nit:352 */
1222 while(1) {
1223 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1224 if (UNTAG_Bool(REGB2)) {
1225 } else {
1226 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1227 }
1228 /* ./../lib/standard//kernel.nit:232 */
1229 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1230 /* ./../lib/standard//kernel.nit:352 */
1231 if (UNTAG_Bool(REGB2)) {
1232 /* ./metamodel//genericity.nit:180 */
1233 REGB2 = REGB0;
1234 /* ./metamodel//genericity.nit:182 */
1235 fra.me.REG[2] = CALL_metamodel___genericity___MMTypeGeneric___params(fra.me.REG[1])(fra.me.REG[1]);
1236 /* ./../lib/standard//collection//array.nit:278 */
1237 REGB3 = REGB2;
1238 /* ./../lib/standard//collection//array.nit:280 */
1239 REGB4 = TAG_Int(0);
1240 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1241 if (UNTAG_Bool(REGB5)) {
1242 } else {
1243 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1244 }
1245 /* ./../lib/standard//kernel.nit:233 */
1246 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
1247 /* ./../lib/standard//collection//array.nit:280 */
1248 if (UNTAG_Bool(REGB4)) {
1249 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
1250 if (UNTAG_Bool(REGB4)) {
1251 } else {
1252 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
1253 }
1254 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
1255 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1256 if (UNTAG_Bool(REGB5)) {
1257 } else {
1258 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1259 }
1260 /* ./../lib/standard//kernel.nit:232 */
1261 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
1262 } else {
1263 /* ./../lib/standard//collection//array.nit:280 */
1264 REGB5 = TAG_Bool(false);
1265 REGB4 = REGB5;
1266 }
1267 if (UNTAG_Bool(REGB4)) {
1268 } else {
1269 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
1270 }
1271 /* ./../lib/standard//collection//array.nit:281 */
1272 fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
1273 REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1274 if (UNTAG_Bool(REGB4)) {
1275 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
1276 }
1277 /* ./../lib/standard//collection//array.nit:718 */
1278 fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB3)];
1279 /* ./../lib/standard//collection//array.nit:281 */
1280 goto label1;
1281 label1: while(0);
1282 /* ./metamodel//genericity.nit:182 */
1283 REGB3 = TAG_Bool(ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0])!=NIT_NULL);
1284 if (UNTAG_Bool(REGB3)) {
1285 } else {
1286 nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___genericity, 182);
1287 }
1288 fra.me.REG[3] = ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0]);
1289 /* ./../lib/standard//collection//array.nit:280 */
1290 REGB3 = TAG_Int(0);
1291 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
1292 if (UNTAG_Bool(REGB4)) {
1293 } else {
1294 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1295 }
1296 /* ./../lib/standard//kernel.nit:233 */
1297 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
1298 /* ./../lib/standard//collection//array.nit:280 */
1299 if (UNTAG_Bool(REGB3)) {
1300 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
1301 if (UNTAG_Bool(REGB3)) {
1302 } else {
1303 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
1304 }
1305 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
1306 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
1307 if (UNTAG_Bool(REGB4)) {
1308 } else {
1309 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1310 }
1311 /* ./../lib/standard//kernel.nit:232 */
1312 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
1313 } else {
1314 /* ./../lib/standard//collection//array.nit:280 */
1315 REGB4 = TAG_Bool(false);
1316 REGB3 = REGB4;
1317 }
1318 if (UNTAG_Bool(REGB3)) {
1319 } else {
1320 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
1321 }
1322 /* ./../lib/standard//collection//array.nit:281 */
1323 fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
1324 REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1325 if (UNTAG_Bool(REGB3)) {
1326 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
1327 }
1328 /* ./../lib/standard//collection//array.nit:718 */
1329 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB2)];
1330 /* ./../lib/standard//collection//array.nit:281 */
1331 goto label2;
1332 label2: while(0);
1333 /* ./metamodel//genericity.nit:182 */
1334 REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1335 if (UNTAG_Bool(REGB2)) {
1336 nit_abort("Reciever is null", NULL, LOCATE_metamodel___genericity, 182);
1337 }
1338 REGB2 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1339 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
1340 if (UNTAG_Bool(REGB2)) {
1341 /* ./metamodel//genericity.nit:183 */
1342 REGB2 = TAG_Bool(false);
1343 goto label3;
1344 }
1345 /* ./../lib/standard//kernel.nit:354 */
1346 REGB3 = TAG_Int(1);
1347 /* ./../lib/standard//kernel.nit:235 */
1348 REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
1349 /* ./../lib/standard//kernel.nit:354 */
1350 REGB0 = REGB3;
1351 } else {
1352 /* ./../lib/standard//kernel.nit:352 */
1353 goto label4;
1354 }
1355 }
1356 label4: while(0);
1357 /* ./metamodel//genericity.nit:186 */
1358 REGB0 = TAG_Bool(true);
1359 REGB2 = REGB0;
1360 goto label3;
1361 label3: while(0);
1362 stack_frame_head = fra.me.prev;
1363 return REGB2;
1364 }
1365 void metamodel___genericity___MMTypeGeneric___init(val_t p0, val_t p1, val_t p2, int* init_table){
1366 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___genericity___MMTypeGeneric].i;
1367 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1368 val_t tmp;
1369 if (init_table[itpos0]) return;
1370 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1371 fra.me.file = LOCATE_metamodel___genericity;
1372 fra.me.line = 189;
1373 fra.me.meth = LOCATE_metamodel___genericity___MMTypeGeneric___init;
1374 fra.me.has_broke = 0;
1375 fra.me.REG_size = 4;
1376 fra.me.REG[0] = NIT_NULL;
1377 fra.me.REG[1] = NIT_NULL;
1378 fra.me.REG[2] = NIT_NULL;
1379 fra.me.REG[3] = NIT_NULL;
1380 fra.me.REG[0] = p0;
1381 fra.me.REG[1] = p1;
1382 fra.me.REG[2] = p2;
1383 /* ./metamodel//genericity.nit:189 */
1384 fra.me.REG[3] = fra.me.REG[0];
1385 /* ./metamodel//genericity.nit:191 */
1386 CALL_metamodel___static_type___MMTypeClass___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], init_table);
1387 /* ./metamodel//genericity.nit:192 */
1388 ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[3]) = fra.me.REG[2];
1389 stack_frame_head = fra.me.prev;
1390 init_table[itpos0] = 1;
1391 return;
1392 }
1393 val_t metamodel___genericity___MMTypeFormalParameter___def_class(val_t p0){
1394 struct {struct stack_frame_t me;} fra;
1395 val_t REGB0;
1396 val_t tmp;
1397 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1398 fra.me.file = LOCATE_metamodel___genericity;
1399 fra.me.line = 198;
1400 fra.me.meth = LOCATE_metamodel___genericity___MMTypeFormalParameter___def_class;
1401 fra.me.has_broke = 0;
1402 fra.me.REG_size = 1;
1403 fra.me.REG[0] = NIT_NULL;
1404 fra.me.REG[0] = p0;
1405 /* ./metamodel//genericity.nit:198 */
1406 REGB0 = TAG_Bool(ATTR_metamodel___genericity___MMTypeFormalParameter____def_class(fra.me.REG[0])!=NIT_NULL);
1407 if (UNTAG_Bool(REGB0)) {
1408 } else {
1409 nit_abort("Uninitialized attribute %s", "_def_class", LOCATE_metamodel___genericity, 198);
1410 }
1411 fra.me.REG[0] = ATTR_metamodel___genericity___MMTypeFormalParameter____def_class(fra.me.REG[0]);
1412 stack_frame_head = fra.me.prev;
1413 return fra.me.REG[0];
1414 }
1415 val_t metamodel___genericity___MMTypeFormalParameter___position(val_t p0){
1416 struct {struct stack_frame_t me;} fra;
1417 val_t REGB0;
1418 val_t tmp;
1419 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1420 fra.me.file = LOCATE_metamodel___genericity;
1421 fra.me.line = 201;
1422 fra.me.meth = LOCATE_metamodel___genericity___MMTypeFormalParameter___position;
1423 fra.me.has_broke = 0;
1424 fra.me.REG_size = 1;
1425 fra.me.REG[0] = NIT_NULL;
1426 fra.me.REG[0] = p0;
1427 /* ./metamodel//genericity.nit:201 */
1428 REGB0 = TAG_Bool(ATTR_metamodel___genericity___MMTypeFormalParameter____position(fra.me.REG[0])!=NIT_NULL);
1429 if (UNTAG_Bool(REGB0)) {
1430 } else {
1431 nit_abort("Uninitialized attribute %s", "_position", LOCATE_metamodel___genericity, 201);
1432 }
1433 REGB0 = ATTR_metamodel___genericity___MMTypeFormalParameter____position(fra.me.REG[0]);
1434 stack_frame_head = fra.me.prev;
1435 return REGB0;
1436 }
1437 val_t metamodel___genericity___MMTypeFormalParameter___mmmodule(val_t p0){
1438 struct {struct stack_frame_t me;} fra;
1439 val_t REGB0;
1440 val_t tmp;
1441 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1442 fra.me.file = LOCATE_metamodel___genericity;
1443 fra.me.line = 204;
1444 fra.me.meth = LOCATE_metamodel___genericity___MMTypeFormalParameter___mmmodule;
1445 fra.me.has_broke = 0;
1446 fra.me.REG_size = 1;
1447 fra.me.REG[0] = NIT_NULL;
1448 fra.me.REG[0] = p0;
1449 /* ./metamodel//genericity.nit:204 */
1450 REGB0 = TAG_Bool(ATTR_metamodel___genericity___MMTypeFormalParameter____def_class(fra.me.REG[0])!=NIT_NULL);
1451 if (UNTAG_Bool(REGB0)) {
1452 } else {
1453 nit_abort("Uninitialized attribute %s", "_def_class", LOCATE_metamodel___genericity, 204);
1454 }
1455 fra.me.REG[0] = ATTR_metamodel___genericity___MMTypeFormalParameter____def_class(fra.me.REG[0]);
1456 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
1457 goto label1;
1458 label1: while(0);
1459 stack_frame_head = fra.me.prev;
1460 return fra.me.REG[0];
1461 }
1462 val_t metamodel___genericity___MMTypeFormalParameter___for_module(val_t p0, val_t p1){
1463 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1464 val_t REGB0;
1465 val_t REGB1;
1466 val_t tmp;
1467 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1468 fra.me.file = LOCATE_metamodel___genericity;
1469 fra.me.line = 206;
1470 fra.me.meth = LOCATE_metamodel___genericity___MMTypeFormalParameter___for_module;
1471 fra.me.has_broke = 0;
1472 fra.me.REG_size = 4;
1473 fra.me.REG[0] = NIT_NULL;
1474 fra.me.REG[1] = NIT_NULL;
1475 fra.me.REG[2] = NIT_NULL;
1476 fra.me.REG[3] = NIT_NULL;
1477 fra.me.REG[0] = p0;
1478 fra.me.REG[1] = p1;
1479 /* ./metamodel//genericity.nit:208 */
1480 fra.me.REG[2] = fra.me.REG[0];
1481 /* ./metamodel//genericity.nit:209 */
1482 fra.me.REG[3] = CALL_metamodel___static_type___MMType___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
1483 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
1484 if (UNTAG_Bool(REGB0)) {
1485 } else {
1486 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
1487 REGB0 = REGB1;
1488 }
1489 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1490 if (UNTAG_Bool(REGB0)) {
1491 /* ./metamodel//genericity.nit:210 */
1492 REGB0 = TAG_Bool(ATTR_metamodel___genericity___MMTypeFormalParameter____def_class(fra.me.REG[0])!=NIT_NULL);
1493 if (UNTAG_Bool(REGB0)) {
1494 } else {
1495 nit_abort("Uninitialized attribute %s", "_def_class", LOCATE_metamodel___genericity, 210);
1496 }
1497 fra.me.REG[3] = ATTR_metamodel___genericity___MMTypeFormalParameter____def_class(fra.me.REG[0]);
1498 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[3])(fra.me.REG[3]);
1499 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMModule_____bra(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1500 REGB0 = CALL_metamodel___genericity___MMTypeFormalParameter___position(fra.me.REG[0])(fra.me.REG[0]);
1501 fra.me.REG[3] = CALL_metamodel___genericity___MMLocalClass___get_formal(fra.me.REG[3])(fra.me.REG[3], REGB0);
1502 fra.me.REG[2] = fra.me.REG[3];
1503 }
1504 /* ./metamodel//genericity.nit:212 */
1505 goto label1;
1506 label1: while(0);
1507 stack_frame_head = fra.me.prev;
1508 return fra.me.REG[2];
1509 }
1510 val_t metamodel___genericity___MMTypeFormalParameter___upcast_for(val_t p0, val_t p1){
1511 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1512 val_t REGB0;
1513 val_t tmp;
1514 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1515 fra.me.file = LOCATE_metamodel___genericity;
1516 fra.me.line = 215;
1517 fra.me.meth = LOCATE_metamodel___genericity___MMTypeFormalParameter___upcast_for;
1518 fra.me.has_broke = 0;
1519 fra.me.REG_size = 2;
1520 fra.me.REG[0] = NIT_NULL;
1521 fra.me.REG[1] = NIT_NULL;
1522 fra.me.REG[0] = p0;
1523 fra.me.REG[1] = p1;
1524 /* ./metamodel//genericity.nit:215 */
1525 fra.me.REG[0] = ATTR_metamodel___type_formal___MMTypeFormal____bound(fra.me.REG[0]);
1526 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1527 if (UNTAG_Bool(REGB0)) {
1528 nit_abort("Reciever is null", NULL, LOCATE_metamodel___genericity, 215);
1529 }
1530 fra.me.REG[1] = CALL_metamodel___static_type___MMType___upcast_for(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1531 goto label1;
1532 label1: while(0);
1533 stack_frame_head = fra.me.prev;
1534 return fra.me.REG[1];
1535 }
1536 void metamodel___genericity___MMTypeFormalParameter___bound__eq(val_t p0, val_t p1){
1537 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1538 val_t REGB0;
1539 val_t REGB1;
1540 val_t tmp;
1541 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1542 fra.me.file = LOCATE_metamodel___genericity;
1543 fra.me.line = 217;
1544 fra.me.meth = LOCATE_metamodel___genericity___MMTypeFormalParameter___bound__eq;
1545 fra.me.has_broke = 0;
1546 fra.me.REG_size = 3;
1547 fra.me.REG[0] = NIT_NULL;
1548 fra.me.REG[1] = NIT_NULL;
1549 fra.me.REG[2] = NIT_NULL;
1550 fra.me.REG[0] = p0;
1551 fra.me.REG[1] = p1;
1552 /* ./metamodel//genericity.nit:219 */
1553 fra.me.REG[2] = ATTR_metamodel___type_formal___MMTypeFormal____bound(fra.me.REG[0]);
1554 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1555 if (UNTAG_Bool(REGB0)) {
1556 } else {
1557 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1558 if (UNTAG_Bool(REGB1)) {
1559 REGB1 = TAG_Bool(false);
1560 REGB0 = REGB1;
1561 } else {
1562 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
1563 REGB0 = REGB1;
1564 }
1565 }
1566 if (UNTAG_Bool(REGB0)) {
1567 } else {
1568 nit_abort("Assert failed", NULL, LOCATE_metamodel___genericity, 219);
1569 }
1570 /* ./metamodel//genericity.nit:220 */
1571 ATTR_metamodel___type_formal___MMTypeFormal____bound(fra.me.REG[0]) = fra.me.REG[1];
1572 stack_frame_head = fra.me.prev;
1573 return;
1574 }
1575 val_t metamodel___genericity___MMTypeFormalParameter___adapt_to(val_t p0, val_t p1){
1576 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1577 val_t REGB0;
1578 val_t REGB1;
1579 val_t REGB2;
1580 val_t tmp;
1581 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1582 fra.me.file = LOCATE_metamodel___genericity;
1583 fra.me.line = 223;
1584 fra.me.meth = LOCATE_metamodel___genericity___MMTypeFormalParameter___adapt_to;
1585 fra.me.has_broke = 0;
1586 fra.me.REG_size = 3;
1587 fra.me.REG[0] = NIT_NULL;
1588 fra.me.REG[1] = NIT_NULL;
1589 fra.me.REG[2] = NIT_NULL;
1590 fra.me.REG[0] = p0;
1591 fra.me.REG[1] = p1;
1592 /* ./metamodel//genericity.nit:225 */
1593 fra.me.REG[2] = CALL_metamodel___type_formal___MMType___direct_type(fra.me.REG[1])(fra.me.REG[1]);
1594 fra.me.REG[1] = fra.me.REG[2];
1595 /* ./metamodel//genericity.nit:226 */
1596 fra.me.REG[2] = CALL_metamodel___genericity___MMTypeFormalParameter___def_class(fra.me.REG[0])(fra.me.REG[0]);
1597 fra.me.REG[2] = CALL_metamodel___static_type___MMType___upcast_for(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
1598 /* ./metamodel//genericity.nit:231 */
1599 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___genericity___MMTypeGeneric, ID_metamodel___genericity___MMTypeGeneric)) /*cast MMTypeGeneric*/;
1600 if (UNTAG_Bool(REGB0)) {
1601 } else {
1602 nit_abort("Assert failed", NULL, LOCATE_metamodel___genericity, 231);
1603 }
1604 /* ./metamodel//genericity.nit:232 */
1605 fra.me.REG[2] = CALL_metamodel___genericity___MMTypeGeneric___params(fra.me.REG[2])(fra.me.REG[2]);
1606 REGB0 = CALL_metamodel___genericity___MMTypeFormalParameter___position(fra.me.REG[0])(fra.me.REG[0]);
1607 /* ./../lib/standard//collection//array.nit:280 */
1608 REGB1 = TAG_Int(0);
1609 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1610 if (UNTAG_Bool(REGB2)) {
1611 } else {
1612 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1613 }
1614 /* ./../lib/standard//kernel.nit:233 */
1615 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
1616 /* ./../lib/standard//collection//array.nit:280 */
1617 if (UNTAG_Bool(REGB1)) {
1618 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
1619 if (UNTAG_Bool(REGB1)) {
1620 } else {
1621 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
1622 }
1623 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
1624 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1625 if (UNTAG_Bool(REGB2)) {
1626 } else {
1627 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1628 }
1629 /* ./../lib/standard//kernel.nit:232 */
1630 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1631 } else {
1632 /* ./../lib/standard//collection//array.nit:280 */
1633 REGB2 = TAG_Bool(false);
1634 REGB1 = REGB2;
1635 }
1636 if (UNTAG_Bool(REGB1)) {
1637 } else {
1638 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
1639 }
1640 /* ./../lib/standard//collection//array.nit:281 */
1641 fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
1642 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1643 if (UNTAG_Bool(REGB1)) {
1644 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
1645 }
1646 /* ./../lib/standard//collection//array.nit:718 */
1647 fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
1648 /* ./../lib/standard//collection//array.nit:281 */
1649 goto label1;
1650 label1: while(0);
1651 /* ./metamodel//genericity.nit:233 */
1652 goto label2;
1653 label2: while(0);
1654 stack_frame_head = fra.me.prev;
1655 return fra.me.REG[2];
1656 }
1657 void metamodel___genericity___MMTypeFormalParameter___with_bound(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
1658 int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___genericity___MMTypeFormalParameter].i;
1659 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1660 val_t REGB0;
1661 val_t tmp;
1662 if (init_table[itpos1]) return;
1663 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1664 fra.me.file = LOCATE_metamodel___genericity;
1665 fra.me.line = 236;
1666 fra.me.meth = LOCATE_metamodel___genericity___MMTypeFormalParameter___with_bound;
1667 fra.me.has_broke = 0;
1668 fra.me.REG_size = 4;
1669 fra.me.REG[0] = NIT_NULL;
1670 fra.me.REG[1] = NIT_NULL;
1671 fra.me.REG[2] = NIT_NULL;
1672 fra.me.REG[3] = NIT_NULL;
1673 fra.me.REG[0] = p0;
1674 fra.me.REG[1] = p1;
1675 REGB0 = p2;
1676 fra.me.REG[2] = p3;
1677 fra.me.REG[3] = p4;
1678 /* ./metamodel//genericity.nit:238 */
1679 CALL_metamodel___genericity___MMTypeFormalParameter___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB0, fra.me.REG[2], init_table);
1680 /* ./metamodel//genericity.nit:239 */
1681 ATTR_metamodel___type_formal___MMTypeFormal____bound(fra.me.REG[0]) = fra.me.REG[3];
1682 stack_frame_head = fra.me.prev;
1683 init_table[itpos1] = 1;
1684 return;
1685 }
1686 void metamodel___genericity___MMTypeFormalParameter___init(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
1687 int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___genericity___MMTypeFormalParameter].i;
1688 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1689 val_t REGB0;
1690 val_t tmp;
1691 if (init_table[itpos2]) return;
1692 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1693 fra.me.file = LOCATE_metamodel___genericity;
1694 fra.me.line = 242;
1695 fra.me.meth = LOCATE_metamodel___genericity___MMTypeFormalParameter___init;
1696 fra.me.has_broke = 0;
1697 fra.me.REG_size = 4;
1698 fra.me.REG[0] = NIT_NULL;
1699 fra.me.REG[1] = NIT_NULL;
1700 fra.me.REG[2] = NIT_NULL;
1701 fra.me.REG[3] = NIT_NULL;
1702 fra.me.REG[0] = p0;
1703 fra.me.REG[1] = p1;
1704 REGB0 = p2;
1705 fra.me.REG[2] = p3;
1706 /* ./metamodel//genericity.nit:242 */
1707 fra.me.REG[3] = fra.me.REG[0];
1708 /* ./metamodel//genericity.nit:244 */
1709 CALL_metamodel___type_formal___MMTypeFormal___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], NIT_NULL, init_table);
1710 /* ./metamodel//genericity.nit:245 */
1711 ATTR_metamodel___genericity___MMTypeFormalParameter____position(fra.me.REG[3]) = REGB0;
1712 /* ./metamodel//genericity.nit:246 */
1713 ATTR_metamodel___genericity___MMTypeFormalParameter____def_class(fra.me.REG[3]) = fra.me.REG[2];
1714 stack_frame_head = fra.me.prev;
1715 init_table[itpos2] = 1;
1716 return;
1717 }
1718 val_t metamodel___genericity___MMTypeNone___is_generic(val_t p0){
1719 struct {struct stack_frame_t me;} fra;
1720 val_t REGB0;
1721 val_t tmp;
1722 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1723 fra.me.file = LOCATE_metamodel___genericity;
1724 fra.me.line = 251;
1725 fra.me.meth = LOCATE_metamodel___genericity___MMTypeNone___is_generic;
1726 fra.me.has_broke = 0;
1727 fra.me.REG_size = 1;
1728 fra.me.REG[0] = NIT_NULL;
1729 fra.me.REG[0] = p0;
1730 /* ./metamodel//genericity.nit:251 */
1731 REGB0 = TAG_Bool(false);
1732 goto label1;
1733 label1: while(0);
1734 stack_frame_head = fra.me.prev;
1735 return REGB0;
1736 }
1737 val_t metamodel___genericity___MMTypeNone___for_module(val_t p0, val_t p1){
1738 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1739 val_t tmp;
1740 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1741 fra.me.file = LOCATE_metamodel___genericity;
1742 fra.me.line = 252;
1743 fra.me.meth = LOCATE_metamodel___genericity___MMTypeNone___for_module;
1744 fra.me.has_broke = 0;
1745 fra.me.REG_size = 2;
1746 fra.me.REG[0] = NIT_NULL;
1747 fra.me.REG[1] = NIT_NULL;
1748 fra.me.REG[0] = p0;
1749 fra.me.REG[1] = p1;
1750 /* ./metamodel//genericity.nit:252 */
1751 goto label1;
1752 label1: while(0);
1753 stack_frame_head = fra.me.prev;
1754 return fra.me.REG[0];
1755 }
1756 val_t metamodel___genericity___MMTypeNone___adapt_to(val_t p0, val_t p1){
1757 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1758 val_t tmp;
1759 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1760 fra.me.file = LOCATE_metamodel___genericity;
1761 fra.me.line = 253;
1762 fra.me.meth = LOCATE_metamodel___genericity___MMTypeNone___adapt_to;
1763 fra.me.has_broke = 0;
1764 fra.me.REG_size = 2;
1765 fra.me.REG[0] = NIT_NULL;
1766 fra.me.REG[1] = NIT_NULL;
1767 fra.me.REG[0] = p0;
1768 fra.me.REG[1] = p1;
1769 /* ./metamodel//genericity.nit:253 */
1770 goto label1;
1771 label1: while(0);
1772 stack_frame_head = fra.me.prev;
1773 return fra.me.REG[0];
1774 }