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