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