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