tests: add base_attr_boxing.nit
[nit.git] / c_src / metamodel___inheritance._sep.c
1 /* This C file is generated by NIT to compile module metamodel___inheritance. */
2 #include "metamodel___inheritance._sep.h"
3 void metamodel___inheritance___MMContext___handle_property_conflict(val_t p0, val_t p1, val_t p2){
4 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
5 val_t REGB0;
6 val_t REGB1;
7 val_t REGB2;
8 val_t tmp;
9 static val_t once_value_1; /* Once value */
10 static val_t once_value_2; /* Once value */
11 static val_t once_value_3; /* Once value */
12 static val_t once_value_4; /* Once value */
13 static val_t once_value_5; /* Once value */
14 static val_t once_value_6; /* Once value */
15 static val_t once_value_7; /* Once value */
16 static val_t once_value_9; /* Once value */
17 static val_t once_value_10; /* Once value */
18 static val_t once_value_11; /* Once value */
19 static val_t once_value_12; /* Once value */
20 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
21 fra.me.file = LOCATE_metamodel___inheritance;
22 fra.me.line = 24;
23 fra.me.meth = LOCATE_metamodel___inheritance___MMContext___handle_property_conflict;
24 fra.me.has_broke = 0;
25 fra.me.REG_size = 7;
26 fra.me.nitni_local_ref_head = NULL;
27 fra.me.REG[0] = NIT_NULL;
28 fra.me.REG[1] = NIT_NULL;
29 fra.me.REG[2] = NIT_NULL;
30 fra.me.REG[3] = NIT_NULL;
31 fra.me.REG[4] = NIT_NULL;
32 fra.me.REG[5] = NIT_NULL;
33 fra.me.REG[6] = NIT_NULL;
34 fra.me.REG[0] = p0;
35 fra.me.REG[1] = p1;
36 fra.me.REG[2] = p2;
37 /* metamodel/inheritance.nit:28 */
38 fra.me.REG[3] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
39 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
40 if (UNTAG_Bool(REGB0)) {
41 nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 28);
42 }
43 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
44 /* metamodel/inheritance.nit:29 */
45 fra.me.REG[4] = CALL_standard___file___Object___stderr(fra.me.REG[0])(fra.me.REG[0]);
46 if (!once_value_1) {
47 fra.me.REG[5] = BOX_NativeString("Fatal error: inherit_local_property error\n");
48 REGB0 = TAG_Int(42);
49 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
50 once_value_1 = fra.me.REG[5];
51 register_static_object(&once_value_1);
52 } else fra.me.REG[5] = once_value_1;
53 fra.me.REG[5] = fra.me.REG[5];
54 CALL_standard___stream___OStream___write(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
55 /* metamodel/inheritance.nit:30 */
56 REGB0 = TAG_Int(7);
57 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
58 if (!once_value_2) {
59 fra.me.REG[4] = BOX_NativeString("------- ");
60 REGB0 = TAG_Int(8);
61 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
62 once_value_2 = fra.me.REG[4];
63 register_static_object(&once_value_2);
64 } else fra.me.REG[4] = once_value_2;
65 fra.me.REG[4] = fra.me.REG[4];
66 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
67 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
68 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
69 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
70 if (!once_value_3) {
71 fra.me.REG[4] = BOX_NativeString("::");
72 REGB0 = TAG_Int(2);
73 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
74 once_value_3 = fra.me.REG[4];
75 register_static_object(&once_value_3);
76 } else fra.me.REG[4] = once_value_3;
77 fra.me.REG[4] = fra.me.REG[4];
78 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
79 fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
80 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
81 if (!once_value_4) {
82 fra.me.REG[1] = BOX_NativeString(" ");
83 REGB0 = TAG_Int(1);
84 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
85 once_value_4 = fra.me.REG[1];
86 register_static_object(&once_value_4);
87 } else fra.me.REG[1] = once_value_4;
88 fra.me.REG[1] = fra.me.REG[1];
89 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
90 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[3])(fra.me.REG[3]);
91 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[1])(fra.me.REG[1]);
92 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
93 if (!once_value_5) {
94 fra.me.REG[1] = BOX_NativeString("");
95 REGB0 = TAG_Int(0);
96 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
97 once_value_5 = fra.me.REG[1];
98 register_static_object(&once_value_5);
99 } else fra.me.REG[1] = once_value_5;
100 fra.me.REG[1] = fra.me.REG[1];
101 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
102 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
103 CALL_standard___file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
104 /* ../lib/standard/collection/array.nit:269 */
105 REGB0 = TAG_Int(0);
106 /* ../lib/standard/collection/array.nit:270 */
107 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
108 if (UNTAG_Bool(REGB1)) {
109 } else {
110 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
111 }
112 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
113 /* ../lib/standard/collection/array.nit:271 */
114 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
115 /* ../lib/standard/collection/array.nit:272 */
116 while(1) {
117 /* ../lib/standard/collection/array.nit:24 */
118 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
119 if (UNTAG_Bool(REGB1)) {
120 } else {
121 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
122 }
123 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
124 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
125 if (UNTAG_Bool(REGB2)) {
126 } else {
127 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
128 }
129 /* ../lib/standard/kernel.nit:232 */
130 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
131 /* ../lib/standard/collection/array.nit:272 */
132 if (UNTAG_Bool(REGB1)) {
133 /* ../lib/standard/collection/array.nit:273 */
134 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
135 if (UNTAG_Bool(REGB1)) {
136 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
137 }
138 /* ../lib/standard/collection/array.nit:718 */
139 fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
140 /* metamodel/inheritance.nit:32 */
141 REGB1 = TAG_Int(3);
142 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
143 if (!once_value_6) {
144 fra.me.REG[6] = BOX_NativeString(" ");
145 REGB1 = TAG_Int(3);
146 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
147 once_value_6 = fra.me.REG[6];
148 register_static_object(&once_value_6);
149 } else fra.me.REG[6] = once_value_6;
150 fra.me.REG[6] = fra.me.REG[6];
151 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
152 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[1])(fra.me.REG[1]);
153 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
154 if (!once_value_7) {
155 fra.me.REG[1] = BOX_NativeString("");
156 REGB1 = TAG_Int(0);
157 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
158 once_value_7 = fra.me.REG[1];
159 register_static_object(&once_value_7);
160 } else fra.me.REG[1] = once_value_7;
161 fra.me.REG[1] = fra.me.REG[1];
162 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
163 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
164 CALL_standard___file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
165 /* ../lib/standard/collection/array.nit:274 */
166 REGB1 = TAG_Int(1);
167 /* ../lib/standard/kernel.nit:235 */
168 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
169 /* ../lib/standard/collection/array.nit:274 */
170 REGB0 = REGB1;
171 } else {
172 /* ../lib/standard/collection/array.nit:272 */
173 goto label8;
174 }
175 }
176 label8: while(0);
177 /* metamodel/inheritance.nit:34 */
178 REGB0 = TAG_Int(3);
179 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
180 if (!once_value_9) {
181 fra.me.REG[2] = BOX_NativeString("------- ");
182 REGB0 = TAG_Int(8);
183 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
184 once_value_9 = fra.me.REG[2];
185 register_static_object(&once_value_9);
186 } else fra.me.REG[2] = once_value_9;
187 fra.me.REG[2] = fra.me.REG[2];
188 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
189 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___property_hierarchy(fra.me.REG[3])(fra.me.REG[3]);
190 fra.me.REG[2] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
191 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
192 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
193 if (!once_value_10) {
194 fra.me.REG[2] = BOX_NativeString("");
195 REGB0 = TAG_Int(0);
196 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
197 once_value_10 = fra.me.REG[2];
198 register_static_object(&once_value_10);
199 } else fra.me.REG[2] = once_value_10;
200 fra.me.REG[2] = fra.me.REG[2];
201 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
202 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
203 CALL_standard___file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
204 /* metamodel/inheritance.nit:35 */
205 REGB0 = TAG_Int(3);
206 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
207 if (!once_value_11) {
208 fra.me.REG[2] = BOX_NativeString("------- ");
209 REGB0 = TAG_Int(8);
210 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
211 once_value_11 = fra.me.REG[2];
212 register_static_object(&once_value_11);
213 } else fra.me.REG[2] = once_value_11;
214 fra.me.REG[2] = fra.me.REG[2];
215 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
216 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___property_hierarchy(fra.me.REG[3])(fra.me.REG[3]);
217 fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrder___to_dot(fra.me.REG[3])(fra.me.REG[3]);
218 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
219 if (!once_value_12) {
220 fra.me.REG[3] = BOX_NativeString("");
221 REGB0 = TAG_Int(0);
222 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
223 once_value_12 = fra.me.REG[3];
224 register_static_object(&once_value_12);
225 } else fra.me.REG[3] = once_value_12;
226 fra.me.REG[3] = fra.me.REG[3];
227 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
228 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
229 CALL_standard___file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
230 /* metamodel/inheritance.nit:36 */
231 REGB0 = TAG_Int(1);
232 CALL_standard___kernel___Object___exit(fra.me.REG[0])(fra.me.REG[0], REGB0);
233 stack_frame_head = fra.me.prev;
234 return;
235 }
236 val_t metamodel___inheritance___MMModule___type_any(val_t p0){
237 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
238 val_t REGB0;
239 val_t tmp;
240 static val_t once_value_1; /* Once value */
241 static val_t once_value_2; /* Once value */
242 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
243 fra.me.file = LOCATE_metamodel___inheritance;
244 fra.me.line = 41;
245 fra.me.meth = LOCATE_metamodel___inheritance___MMModule___type_any;
246 fra.me.has_broke = 0;
247 fra.me.REG_size = 2;
248 fra.me.nitni_local_ref_head = NULL;
249 fra.me.REG[0] = NIT_NULL;
250 fra.me.REG[1] = NIT_NULL;
251 fra.me.REG[0] = p0;
252 /* metamodel/inheritance.nit:44 */
253 if (!once_value_1) {
254 if (!once_value_2) {
255 fra.me.REG[1] = BOX_NativeString("Object");
256 REGB0 = TAG_Int(6);
257 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
258 once_value_2 = fra.me.REG[1];
259 register_static_object(&once_value_2);
260 } else fra.me.REG[1] = once_value_2;
261 fra.me.REG[1] = fra.me.REG[1];
262 fra.me.REG[1] = CALL_standard___symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
263 once_value_1 = fra.me.REG[1];
264 register_static_object(&once_value_1);
265 } else fra.me.REG[1] = once_value_1;
266 fra.me.REG[1] = fra.me.REG[1];
267 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMModule___class_by_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
268 /* metamodel/inheritance.nit:45 */
269 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[1])(fra.me.REG[1]);
270 goto label3;
271 label3: while(0);
272 stack_frame_head = fra.me.prev;
273 return fra.me.REG[1];
274 }
275 val_t metamodel___inheritance___MMModule___type_any_extern(val_t p0){
276 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
277 val_t REGB0;
278 val_t tmp;
279 static val_t once_value_1; /* Once value */
280 static val_t once_value_2; /* Once value */
281 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
282 fra.me.file = LOCATE_metamodel___inheritance;
283 fra.me.line = 48;
284 fra.me.meth = LOCATE_metamodel___inheritance___MMModule___type_any_extern;
285 fra.me.has_broke = 0;
286 fra.me.REG_size = 2;
287 fra.me.nitni_local_ref_head = NULL;
288 fra.me.REG[0] = NIT_NULL;
289 fra.me.REG[1] = NIT_NULL;
290 fra.me.REG[0] = p0;
291 /* metamodel/inheritance.nit:51 */
292 if (!once_value_1) {
293 if (!once_value_2) {
294 fra.me.REG[1] = BOX_NativeString("Pointer");
295 REGB0 = TAG_Int(7);
296 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
297 once_value_2 = fra.me.REG[1];
298 register_static_object(&once_value_2);
299 } else fra.me.REG[1] = once_value_2;
300 fra.me.REG[1] = fra.me.REG[1];
301 fra.me.REG[1] = CALL_standard___symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
302 once_value_1 = fra.me.REG[1];
303 register_static_object(&once_value_1);
304 } else fra.me.REG[1] = once_value_1;
305 fra.me.REG[1] = fra.me.REG[1];
306 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMModule___class_by_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
307 /* metamodel/inheritance.nit:52 */
308 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[1])(fra.me.REG[1]);
309 goto label3;
310 label3: while(0);
311 stack_frame_head = fra.me.prev;
312 return fra.me.REG[1];
313 }
314 void metamodel___inheritance___MMModule___import_global_classes(val_t p0){
315 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
316 val_t REGB0;
317 val_t REGB1;
318 val_t REGB2;
319 val_t tmp;
320 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
321 fra.me.file = LOCATE_metamodel___inheritance;
322 fra.me.line = 55;
323 fra.me.meth = LOCATE_metamodel___inheritance___MMModule___import_global_classes;
324 fra.me.has_broke = 0;
325 fra.me.REG_size = 4;
326 fra.me.nitni_local_ref_head = NULL;
327 fra.me.REG[0] = NIT_NULL;
328 fra.me.REG[1] = NIT_NULL;
329 fra.me.REG[2] = NIT_NULL;
330 fra.me.REG[3] = NIT_NULL;
331 fra.me.REG[0] = p0;
332 /* metamodel/inheritance.nit:58 */
333 fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
334 /* metamodel/inheritance.nit:59 */
335 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMModule___mhe(fra.me.REG[0])(fra.me.REG[0]);
336 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
337 if (UNTAG_Bool(REGB0)) {
338 } else {
339 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
340 if (UNTAG_Bool(REGB1)) {
341 REGB1 = TAG_Bool(false);
342 REGB0 = REGB1;
343 } else {
344 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
345 REGB0 = REGB1;
346 }
347 }
348 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
349 if (UNTAG_Bool(REGB0)) {
350 } else {
351 nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 59);
352 }
353 /* metamodel/inheritance.nit:60 */
354 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMModule___mhe(fra.me.REG[0])(fra.me.REG[0]);
355 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
356 if (UNTAG_Bool(REGB0)) {
357 nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 60);
358 }
359 fra.me.REG[1] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[1])(fra.me.REG[1]);
360 /* ../lib/standard/collection/array.nit:269 */
361 REGB0 = TAG_Int(0);
362 /* ../lib/standard/collection/array.nit:270 */
363 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
364 if (UNTAG_Bool(REGB1)) {
365 } else {
366 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
367 }
368 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
369 /* ../lib/standard/collection/array.nit:271 */
370 fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
371 /* ../lib/standard/collection/array.nit:272 */
372 while(1) {
373 /* ../lib/standard/collection/array.nit:24 */
374 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
375 if (UNTAG_Bool(REGB1)) {
376 } else {
377 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
378 }
379 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
380 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
381 if (UNTAG_Bool(REGB2)) {
382 } else {
383 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
384 }
385 /* ../lib/standard/kernel.nit:232 */
386 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
387 /* ../lib/standard/collection/array.nit:272 */
388 if (UNTAG_Bool(REGB1)) {
389 /* ../lib/standard/collection/array.nit:273 */
390 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
391 if (UNTAG_Bool(REGB1)) {
392 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
393 }
394 /* ../lib/standard/collection/array.nit:718 */
395 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
396 /* metamodel/inheritance.nit:61 */
397 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMModule___global_classes(fra.me.REG[3])(fra.me.REG[3]);
398 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_metamodel___inheritance___MMModule___import_global_classes_1));
399 /* ../lib/standard/collection/array.nit:274 */
400 REGB1 = TAG_Int(1);
401 /* ../lib/standard/kernel.nit:235 */
402 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
403 /* ../lib/standard/collection/array.nit:274 */
404 REGB0 = REGB1;
405 } else {
406 /* ../lib/standard/collection/array.nit:272 */
407 goto label3;
408 }
409 }
410 label3: while(0);
411 stack_frame_head = fra.me.prev;
412 return;
413 }
414 void OC_metamodel___inheritance___MMModule___import_global_classes_1(struct stack_frame_t *closctx, val_t p0){
415 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
416 val_t REGB0;
417 val_t tmp;
418 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
419 fra.me.file = LOCATE_metamodel___inheritance;
420 fra.me.line = 0;
421 fra.me.meth = LOCATE_metamodel___inheritance___MMModule___import_global_classes;
422 fra.me.has_broke = 0;
423 fra.me.REG_size = 3;
424 fra.me.nitni_local_ref_head = NULL;
425 fra.me.REG[0] = NIT_NULL;
426 fra.me.REG[1] = NIT_NULL;
427 fra.me.REG[2] = NIT_NULL;
428 fra.me.REG[0] = p0;
429 /* metamodel/inheritance.nit:62 */
430 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMModule___global_classes(closctx->REG[0])(closctx->REG[0]);
431 REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
432 if (UNTAG_Bool(REGB0)) {
433 goto label2;
434 }
435 /* metamodel/inheritance.nit:63 */
436 REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMModule____global_classes(closctx->REG[0])!=NIT_NULL);
437 if (UNTAG_Bool(REGB0)) {
438 } else {
439 nit_abort("Uninitialized attribute %s", "_global_classes", LOCATE_metamodel___inheritance, 63);
440 }
441 fra.me.REG[1] = ATTR_metamodel___abstractmetamodel___MMModule____global_classes(closctx->REG[0]);
442 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
443 /* metamodel/inheritance.nit:64 */
444 REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMModule____global_class_by_name(closctx->REG[0])!=NIT_NULL);
445 if (UNTAG_Bool(REGB0)) {
446 } else {
447 nit_abort("Uninitialized attribute %s", "_global_class_by_name", LOCATE_metamodel___inheritance, 64);
448 }
449 fra.me.REG[1] = ATTR_metamodel___abstractmetamodel___MMModule____global_class_by_name(closctx->REG[0]);
450 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMGlobalClass___name(fra.me.REG[0])(fra.me.REG[0]);
451 CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
452 label2: while(0);
453 stack_frame_head = fra.me.prev;
454 return;
455 }
456 void metamodel___inheritance___MMModule___import_local_classes(val_t p0){
457 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
458 val_t REGB0;
459 val_t tmp;
460 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
461 fra.me.file = LOCATE_metamodel___inheritance;
462 fra.me.line = 70;
463 fra.me.meth = LOCATE_metamodel___inheritance___MMModule___import_local_classes;
464 fra.me.has_broke = 0;
465 fra.me.REG_size = 2;
466 fra.me.nitni_local_ref_head = NULL;
467 fra.me.REG[0] = NIT_NULL;
468 fra.me.REG[1] = NIT_NULL;
469 fra.me.REG[0] = p0;
470 /* metamodel/inheritance.nit:73 */
471 REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMModule____global_classes(fra.me.REG[0])!=NIT_NULL);
472 if (UNTAG_Bool(REGB0)) {
473 } else {
474 nit_abort("Uninitialized attribute %s", "_global_classes", LOCATE_metamodel___inheritance, 73);
475 }
476 fra.me.REG[1] = ATTR_metamodel___abstractmetamodel___MMModule____global_classes(fra.me.REG[0]);
477 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_metamodel___inheritance___MMModule___import_local_classes_1));
478 stack_frame_head = fra.me.prev;
479 return;
480 }
481 void OC_metamodel___inheritance___MMModule___import_local_classes_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
482 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
483 val_t REGB0;
484 fun_t CREG[1];
485 val_t tmp;
486 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
487 fra.me.file = LOCATE_metamodel___inheritance;
488 fra.me.line = 0;
489 fra.me.meth = LOCATE_metamodel___inheritance___MMModule___import_local_classes;
490 fra.me.has_broke = 0;
491 fra.me.REG_size = 2;
492 fra.me.nitni_local_ref_head = NULL;
493 fra.me.REG[0] = NIT_NULL;
494 fra.me.REG[1] = NIT_NULL;
495 fra.me.closure_ctx = closctx_param;
496 fra.me.closure_funs = CREG;
497 fra.me.REG[0] = p0;
498 CREG[0] = clos_fun0;
499 /* metamodel/inheritance.nit:74 */
500 REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMModule____local_class_by_global(closctx->REG[0])!=NIT_NULL);
501 if (UNTAG_Bool(REGB0)) {
502 } else {
503 nit_abort("Uninitialized attribute %s", "_local_class_by_global", LOCATE_metamodel___inheritance, 74);
504 }
505 fra.me.REG[1] = ATTR_metamodel___abstractmetamodel___MMModule____local_class_by_global(closctx->REG[0]);
506 REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
507 if (UNTAG_Bool(REGB0)) {
508 goto label2;
509 }
510 /* metamodel/inheritance.nit:75 */
511 fra.me.REG[0] = NEW_MMImplicitLocalClass_metamodel___inheritance___MMImplicitLocalClass___init(closctx->REG[0], fra.me.REG[0]);
512 label2: while(0);
513 stack_frame_head = fra.me.prev;
514 return;
515 }
516 void metamodel___inheritance___MMLocalClass___compute_super_classes(val_t p0){
517 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
518 val_t REGB0;
519 val_t REGB1;
520 val_t tmp;
521 static val_t once_value_2; /* Once value */
522 static val_t once_value_3; /* Once value */
523 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
524 fra.me.file = LOCATE_metamodel___inheritance;
525 fra.me.line = 88;
526 fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___compute_super_classes;
527 fra.me.has_broke = 0;
528 fra.me.REG_size = 4;
529 fra.me.nitni_local_ref_head = NULL;
530 fra.me.REG[0] = NIT_NULL;
531 fra.me.REG[1] = NIT_NULL;
532 fra.me.REG[2] = NIT_NULL;
533 fra.me.REG[3] = NIT_NULL;
534 fra.me.REG[0] = p0;
535 /* metamodel/inheritance.nit:91 */
536 REGB0 = CALL_metamodel___inheritance___MMLocalClass___computed_super_classes(fra.me.REG[0])(fra.me.REG[0]);
537 if (UNTAG_Bool(REGB0)) {
538 /* metamodel/inheritance.nit:93 */
539 goto label1;
540 } else {
541 /* metamodel/inheritance.nit:94 */
542 REGB0 = TAG_Bool(ATTR_metamodel___inheritance___MMLocalClass____computing_super(fra.me.REG[0])!=NIT_NULL);
543 if (UNTAG_Bool(REGB0)) {
544 } else {
545 nit_abort("Uninitialized attribute %s", "_computing_super", LOCATE_metamodel___inheritance, 94);
546 }
547 REGB0 = ATTR_metamodel___inheritance___MMLocalClass____computing_super(fra.me.REG[0]);
548 if (UNTAG_Bool(REGB0)) {
549 /* metamodel/inheritance.nit:95 */
550 fra.me.REG[1] = CALL_standard___file___Object___stderr(fra.me.REG[0])(fra.me.REG[0]);
551 REGB0 = TAG_Int(3);
552 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
553 if (!once_value_2) {
554 fra.me.REG[3] = BOX_NativeString("Fatal error: Inheritance loop for class ");
555 REGB0 = TAG_Int(40);
556 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
557 once_value_2 = fra.me.REG[3];
558 register_static_object(&once_value_2);
559 } else fra.me.REG[3] = once_value_2;
560 fra.me.REG[3] = fra.me.REG[3];
561 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
562 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
563 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
564 if (!once_value_3) {
565 fra.me.REG[3] = BOX_NativeString("\n");
566 REGB0 = TAG_Int(1);
567 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
568 once_value_3 = fra.me.REG[3];
569 register_static_object(&once_value_3);
570 } else fra.me.REG[3] = once_value_3;
571 fra.me.REG[3] = fra.me.REG[3];
572 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
573 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
574 CALL_standard___stream___OStream___write(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
575 /* metamodel/inheritance.nit:96 */
576 REGB0 = TAG_Int(1);
577 CALL_standard___kernel___Object___exit(fra.me.REG[0])(fra.me.REG[0], REGB0);
578 }
579 }
580 /* metamodel/inheritance.nit:98 */
581 REGB0 = TAG_Bool(true);
582 ATTR_metamodel___inheritance___MMLocalClass____computing_super(fra.me.REG[0]) = REGB0;
583 /* metamodel/inheritance.nit:100 */
584 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
585 /* metamodel/inheritance.nit:101 */
586 CALL_metamodel___inheritance___MMLocalClass___add_explicit_classes(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
587 /* metamodel/inheritance.nit:102 */
588 CALL_metamodel___inheritance___MMLocalClass___add_super_classes(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
589 /* metamodel/inheritance.nit:103 */
590 CALL_metamodel___inheritance___MMLocalClass___add_default_any_class(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
591 /* metamodel/inheritance.nit:104 */
592 CALL_metamodel___inheritance___MMLocalClass___compute_super_parents(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
593 /* metamodel/inheritance.nit:105 */
594 fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
595 /* metamodel/inheritance.nit:106 */
596 CALL_standard___collection___abstract_collection___SimpleCollection___add_all(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
597 /* metamodel/inheritance.nit:107 */
598 fra.me.REG[1] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[1])(fra.me.REG[1]);
599 /* metamodel/inheritance.nit:108 */
600 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
601 CALL_metamodel___abstractmetamodel___MMModule___set_supers_class(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1]);
602 /* metamodel/inheritance.nit:109 */
603 fra.me.REG[1] = ATTR_metamodel___abstractmetamodel___MMLocalClass____crhe(fra.me.REG[0]);
604 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
605 if (UNTAG_Bool(REGB0)) {
606 } else {
607 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
608 if (UNTAG_Bool(REGB1)) {
609 REGB1 = TAG_Bool(false);
610 REGB0 = REGB1;
611 } else {
612 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
613 REGB0 = REGB1;
614 }
615 }
616 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
617 if (UNTAG_Bool(REGB0)) {
618 } else {
619 nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 109);
620 }
621 /* metamodel/inheritance.nit:110 */
622 fra.me.REG[1] = ATTR_metamodel___abstractmetamodel___MMLocalClass____cshe(fra.me.REG[0]);
623 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
624 if (UNTAG_Bool(REGB0)) {
625 } else {
626 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
627 if (UNTAG_Bool(REGB1)) {
628 REGB1 = TAG_Bool(false);
629 REGB0 = REGB1;
630 } else {
631 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
632 REGB0 = REGB1;
633 }
634 }
635 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
636 if (UNTAG_Bool(REGB0)) {
637 } else {
638 nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 110);
639 }
640 /* metamodel/inheritance.nit:111 */
641 REGB0 = TAG_Bool(false);
642 ATTR_metamodel___inheritance___MMLocalClass____computing_super(fra.me.REG[0]) = REGB0;
643 label1: while(0);
644 stack_frame_head = fra.me.prev;
645 return;
646 }
647 void metamodel___inheritance___MMLocalClass___compute_ancestors(val_t p0){
648 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
649 val_t REGB0;
650 val_t tmp;
651 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
652 fra.me.file = LOCATE_metamodel___inheritance;
653 fra.me.line = 114;
654 fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___compute_ancestors;
655 fra.me.has_broke = 0;
656 fra.me.REG_size = 3;
657 fra.me.nitni_local_ref_head = NULL;
658 fra.me.REG[0] = NIT_NULL;
659 fra.me.REG[1] = NIT_NULL;
660 fra.me.REG[2] = NIT_NULL;
661 fra.me.REG[0] = p0;
662 /* metamodel/inheritance.nit:117 */
663 REGB0 = CALL_metamodel___inheritance___MMLocalClass___computed_super_classes(fra.me.REG[0])(fra.me.REG[0]);
664 if (UNTAG_Bool(REGB0)) {
665 } else {
666 nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 117);
667 }
668 /* metamodel/inheritance.nit:118 */
669 REGB0 = CALL_metamodel___inheritance___MMLocalClass___computed_ancestors(fra.me.REG[0])(fra.me.REG[0]);
670 if (UNTAG_Bool(REGB0)) {
671 goto label1;
672 }
673 /* metamodel/inheritance.nit:120 */
674 fra.me.REG[1] = CALL_metamodel___inheritance___MMLocalClass___build_ancestors(fra.me.REG[0])(fra.me.REG[0]);
675 fra.me.REG[1] = CALL_metamodel___inheritance___MMLocalClass___group_ancestors(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
676 /* metamodel/inheritance.nit:121 */
677 fra.me.REG[2] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
678 ATTR_metamodel___static_type___MMLocalClass____ancestors(fra.me.REG[0]) = fra.me.REG[2];
679 /* metamodel/inheritance.nit:123 */
680 fra.me.REG[1] = CALL_standard___collection___abstract_collection___MapRead___values(fra.me.REG[1])(fra.me.REG[1]);
681 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_metamodel___inheritance___MMLocalClass___compute_ancestors_2));
682 label1: while(0);
683 stack_frame_head = fra.me.prev;
684 return;
685 }
686 void OC_metamodel___inheritance___MMLocalClass___compute_ancestors_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
687 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
688 val_t REGB0;
689 val_t REGB1;
690 val_t REGB2;
691 fun_t CREG[1];
692 val_t tmp;
693 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
694 fra.me.file = LOCATE_metamodel___inheritance;
695 fra.me.line = 0;
696 fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___compute_ancestors;
697 fra.me.has_broke = 0;
698 fra.me.REG_size = 2;
699 fra.me.nitni_local_ref_head = NULL;
700 fra.me.REG[0] = NIT_NULL;
701 fra.me.REG[1] = NIT_NULL;
702 fra.me.closure_ctx = closctx_param;
703 fra.me.closure_funs = CREG;
704 fra.me.REG[0] = p0;
705 CREG[0] = clos_fun0;
706 /* metamodel/inheritance.nit:124 */
707 REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[0])(fra.me.REG[0]);
708 REGB1 = TAG_Int(1);
709 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
710 if (UNTAG_Bool(REGB2)) {
711 } else {
712 /* ../lib/standard/kernel.nit:227 */
713 REGB1 = TAG_Bool((REGB0)==(REGB1));
714 /* metamodel/inheritance.nit:124 */
715 REGB2 = REGB1;
716 }
717 if (UNTAG_Bool(REGB2)) {
718 /* metamodel/inheritance.nit:125 */
719 fra.me.REG[1] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[0])(fra.me.REG[0]);
720 CALL_metamodel___static_type___MMLocalClass___add_ancestor(closctx->REG[0])(closctx->REG[0], fra.me.REG[1]);
721 } else {
722 /* metamodel/inheritance.nit:127 */
723 fra.me.REG[1] = CALL_metamodel___inheritance___MMLocalClass___merge_ancestors(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
724 /* metamodel/inheritance.nit:128 */
725 fra.me.REG[0] = CALL_metamodel___inheritance___MMLocalClass___merge_ancestors(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
726 CALL_metamodel___static_type___MMLocalClass___add_ancestor(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
727 }
728 stack_frame_head = fra.me.prev;
729 return;
730 }
731 void metamodel___inheritance___MMLocalClass___inherit_global_properties(val_t p0){
732 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
733 val_t REGB0;
734 val_t REGB1;
735 val_t REGB2;
736 val_t tmp;
737 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
738 fra.me.file = LOCATE_metamodel___inheritance;
739 fra.me.line = 135;
740 fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___inherit_global_properties;
741 fra.me.has_broke = 0;
742 fra.me.REG_size = 5;
743 fra.me.nitni_local_ref_head = NULL;
744 fra.me.REG[0] = NIT_NULL;
745 fra.me.REG[1] = NIT_NULL;
746 fra.me.REG[2] = NIT_NULL;
747 fra.me.REG[3] = NIT_NULL;
748 fra.me.REG[4] = NIT_NULL;
749 fra.me.REG[0] = p0;
750 /* metamodel/inheritance.nit:138 */
751 REGB0 = TAG_Bool(ATTR_metamodel___inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0])!=NIT_NULL);
752 if (UNTAG_Bool(REGB0)) {
753 } else {
754 nit_abort("Uninitialized attribute %s", "_are_global_properties_inherited", LOCATE_metamodel___inheritance, 138);
755 }
756 REGB0 = ATTR_metamodel___inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0]);
757 if (UNTAG_Bool(REGB0)) {
758 goto label1;
759 }
760 /* metamodel/inheritance.nit:139 */
761 REGB0 = TAG_Bool(true);
762 ATTR_metamodel___inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0]) = REGB0;
763 /* metamodel/inheritance.nit:141 */
764 REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0])!=NIT_NULL);
765 if (UNTAG_Bool(REGB0)) {
766 } else {
767 nit_abort("Uninitialized attribute %s", "_properties_by_name", LOCATE_metamodel___inheritance, 141);
768 }
769 fra.me.REG[1] = ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0]);
770 /* metamodel/inheritance.nit:142 */
771 REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0])!=NIT_NULL);
772 if (UNTAG_Bool(REGB0)) {
773 } else {
774 nit_abort("Uninitialized attribute %s", "_global_properties", LOCATE_metamodel___inheritance, 142);
775 }
776 fra.me.REG[1] = ATTR_metamodel___abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0]);
777 /* metamodel/inheritance.nit:143 */
778 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___che(fra.me.REG[0])(fra.me.REG[0]);
779 fra.me.REG[2] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[2])(fra.me.REG[2]);
780 /* ../lib/standard/collection/array.nit:269 */
781 REGB0 = TAG_Int(0);
782 /* ../lib/standard/collection/array.nit:270 */
783 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
784 if (UNTAG_Bool(REGB1)) {
785 } else {
786 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
787 }
788 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
789 /* ../lib/standard/collection/array.nit:271 */
790 fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
791 /* ../lib/standard/collection/array.nit:272 */
792 while(1) {
793 /* ../lib/standard/collection/array.nit:24 */
794 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
795 if (UNTAG_Bool(REGB1)) {
796 } else {
797 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
798 }
799 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
800 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
801 if (UNTAG_Bool(REGB2)) {
802 } else {
803 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
804 }
805 /* ../lib/standard/kernel.nit:232 */
806 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
807 /* ../lib/standard/collection/array.nit:272 */
808 if (UNTAG_Bool(REGB1)) {
809 /* ../lib/standard/collection/array.nit:273 */
810 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
811 if (UNTAG_Bool(REGB1)) {
812 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
813 }
814 /* ../lib/standard/collection/array.nit:718 */
815 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
816 /* metamodel/inheritance.nit:144 */
817 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[4])(fra.me.REG[4]);
818 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_metamodel___inheritance___MMLocalClass___inherit_global_properties_2));
819 /* ../lib/standard/collection/array.nit:274 */
820 REGB1 = TAG_Int(1);
821 /* ../lib/standard/kernel.nit:235 */
822 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
823 /* ../lib/standard/collection/array.nit:274 */
824 REGB0 = REGB1;
825 } else {
826 /* ../lib/standard/collection/array.nit:272 */
827 goto label4;
828 }
829 }
830 label4: while(0);
831 label1: while(0);
832 stack_frame_head = fra.me.prev;
833 return;
834 }
835 void OC_metamodel___inheritance___MMLocalClass___inherit_global_properties_2(struct stack_frame_t *closctx, val_t p0){
836 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
837 val_t REGB0;
838 val_t REGB1;
839 val_t REGB2;
840 val_t tmp;
841 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
842 fra.me.file = LOCATE_metamodel___inheritance;
843 fra.me.line = 0;
844 fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___inherit_global_properties;
845 fra.me.has_broke = 0;
846 fra.me.REG_size = 3;
847 fra.me.nitni_local_ref_head = NULL;
848 fra.me.REG[0] = NIT_NULL;
849 fra.me.REG[1] = NIT_NULL;
850 fra.me.REG[2] = NIT_NULL;
851 fra.me.REG[0] = p0;
852 /* metamodel/inheritance.nit:145 */
853 REGB0 = CALL_standard___collection___abstract_collection___Collection___has(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
854 if (UNTAG_Bool(REGB0)) {
855 goto label3;
856 }
857 /* metamodel/inheritance.nit:147 */
858 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
859 /* metamodel/inheritance.nit:151 */
860 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
861 if (UNTAG_Bool(REGB0)) {
862 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
863 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[1])(fra.me.REG[1]);
864 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
865 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(closctx->REG[0])(closctx->REG[0]);
866 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[2]));
867 if (UNTAG_Bool(REGB0)) {
868 } else {
869 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
870 REGB0 = REGB1;
871 }
872 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
873 } else {
874 REGB1 = TAG_Bool(false);
875 REGB0 = REGB1;
876 }
877 if (UNTAG_Bool(REGB0)) {
878 /* metamodel/inheritance.nit:153 */
879 goto label3;
880 }
881 /* metamodel/inheritance.nit:157 */
882 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
883 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[2])(fra.me.REG[2]);
884 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
885 REGB0 = TAG_Int(0);
886 REGB0 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
887 REGB1 = TAG_Char('@');
888 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
889 if (UNTAG_Bool(REGB2)) {
890 } else {
891 /* ../lib/standard/kernel.nit:378 */
892 REGB1 = TAG_Bool((REGB0)==(REGB1));
893 /* metamodel/inheritance.nit:157 */
894 REGB2 = REGB1;
895 }
896 if (UNTAG_Bool(REGB2)) {
897 goto label3;
898 }
899 /* metamodel/inheritance.nit:159 */
900 CALL_metamodel___inheritance___MMLocalClass___make_visible_an_inherited_global_property(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
901 label3: while(0);
902 stack_frame_head = fra.me.prev;
903 return;
904 }
905 val_t metamodel___inheritance___MMLocalClass___global_properties(val_t p0){
906 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
907 val_t REGB0;
908 val_t tmp;
909 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
910 fra.me.file = LOCATE_metamodel___inheritance;
911 fra.me.line = 164;
912 fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___global_properties;
913 fra.me.has_broke = 0;
914 fra.me.REG_size = 2;
915 fra.me.nitni_local_ref_head = NULL;
916 fra.me.REG[0] = NIT_NULL;
917 fra.me.REG[1] = NIT_NULL;
918 fra.me.REG[0] = p0;
919 /* metamodel/inheritance.nit:166 */
920 REGB0 = TAG_Bool(ATTR_metamodel___inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0])!=NIT_NULL);
921 if (UNTAG_Bool(REGB0)) {
922 } else {
923 nit_abort("Uninitialized attribute %s", "_are_global_properties_inherited", LOCATE_metamodel___inheritance, 166);
924 }
925 REGB0 = ATTR_metamodel___inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0]);
926 if (UNTAG_Bool(REGB0)) {
927 REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0])!=NIT_NULL);
928 if (UNTAG_Bool(REGB0)) {
929 } else {
930 nit_abort("Uninitialized attribute %s", "_global_properties", LOCATE_metamodel___inheritance, 166);
931 }
932 fra.me.REG[1] = ATTR_metamodel___abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0]);
933 goto label1;
934 }
935 /* metamodel/inheritance.nit:167 */
936 REGB0 = CALL_metamodel___inheritance___MMLocalClass___computed_super_classes(fra.me.REG[0])(fra.me.REG[0]);
937 if (UNTAG_Bool(REGB0)) {
938 } else {
939 nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 167);
940 }
941 /* metamodel/inheritance.nit:168 */
942 CALL_metamodel___inheritance___MMLocalClass___inherit_global_properties(fra.me.REG[0])(fra.me.REG[0]);
943 /* metamodel/inheritance.nit:169 */
944 REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0])!=NIT_NULL);
945 if (UNTAG_Bool(REGB0)) {
946 } else {
947 nit_abort("Uninitialized attribute %s", "_global_properties", LOCATE_metamodel___inheritance, 169);
948 }
949 fra.me.REG[0] = ATTR_metamodel___abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0]);
950 fra.me.REG[1] = fra.me.REG[0];
951 goto label1;
952 label1: while(0);
953 stack_frame_head = fra.me.prev;
954 return fra.me.REG[1];
955 }
956 val_t metamodel___inheritance___MMLocalClass___has_global_property(val_t p0, val_t p1){
957 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
958 val_t REGB0;
959 val_t REGB1;
960 val_t REGB2;
961 val_t REGB3;
962 val_t tmp;
963 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
964 fra.me.file = LOCATE_metamodel___inheritance;
965 fra.me.line = 172;
966 fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___has_global_property;
967 fra.me.has_broke = 0;
968 fra.me.REG_size = 5;
969 fra.me.nitni_local_ref_head = NULL;
970 fra.me.REG[0] = NIT_NULL;
971 fra.me.REG[1] = NIT_NULL;
972 fra.me.REG[2] = NIT_NULL;
973 fra.me.REG[3] = NIT_NULL;
974 fra.me.REG[4] = NIT_NULL;
975 fra.me.REG[0] = p0;
976 fra.me.REG[1] = p1;
977 /* metamodel/inheritance.nit:176 */
978 REGB0 = CALL_metamodel___inheritance___MMLocalClass___computed_super_classes(fra.me.REG[0])(fra.me.REG[0]);
979 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
980 if (UNTAG_Bool(REGB0)) {
981 REGB0 = TAG_Bool(false);
982 goto label1;
983 }
984 /* metamodel/inheritance.nit:178 */
985 REGB1 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0])!=NIT_NULL);
986 if (UNTAG_Bool(REGB1)) {
987 } else {
988 nit_abort("Uninitialized attribute %s", "_global_properties", LOCATE_metamodel___inheritance, 178);
989 }
990 fra.me.REG[2] = ATTR_metamodel___abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0]);
991 /* metamodel/inheritance.nit:179 */
992 REGB1 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
993 if (UNTAG_Bool(REGB1)) {
994 REGB1 = TAG_Bool(true);
995 REGB0 = REGB1;
996 goto label1;
997 }
998 /* metamodel/inheritance.nit:180 */
999 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___che(fra.me.REG[0])(fra.me.REG[0]);
1000 fra.me.REG[0] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[0])(fra.me.REG[0]);
1001 /* ../lib/standard/collection/array.nit:269 */
1002 REGB1 = TAG_Int(0);
1003 /* ../lib/standard/collection/array.nit:270 */
1004 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
1005 if (UNTAG_Bool(REGB2)) {
1006 } else {
1007 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
1008 }
1009 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
1010 /* ../lib/standard/collection/array.nit:271 */
1011 fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
1012 /* ../lib/standard/collection/array.nit:272 */
1013 while(1) {
1014 /* ../lib/standard/collection/array.nit:24 */
1015 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
1016 if (UNTAG_Bool(REGB2)) {
1017 } else {
1018 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1019 }
1020 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
1021 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
1022 if (UNTAG_Bool(REGB3)) {
1023 } else {
1024 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1025 }
1026 /* ../lib/standard/kernel.nit:232 */
1027 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
1028 /* ../lib/standard/collection/array.nit:272 */
1029 if (UNTAG_Bool(REGB2)) {
1030 /* ../lib/standard/collection/array.nit:273 */
1031 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1032 if (UNTAG_Bool(REGB2)) {
1033 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
1034 }
1035 /* ../lib/standard/collection/array.nit:718 */
1036 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB1)];
1037 /* metamodel/inheritance.nit:181 */
1038 REGB2 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
1039 if (UNTAG_Bool(REGB2)) {
1040 /* metamodel/inheritance.nit:182 */
1041 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
1042 /* metamodel/inheritance.nit:183 */
1043 REGB2 = TAG_Bool(true);
1044 REGB0 = REGB2;
1045 goto label1;
1046 }
1047 /* ../lib/standard/collection/array.nit:274 */
1048 REGB2 = TAG_Int(1);
1049 /* ../lib/standard/kernel.nit:235 */
1050 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
1051 /* ../lib/standard/collection/array.nit:274 */
1052 REGB1 = REGB2;
1053 } else {
1054 /* ../lib/standard/collection/array.nit:272 */
1055 goto label2;
1056 }
1057 }
1058 label2: while(0);
1059 /* metamodel/inheritance.nit:186 */
1060 REGB1 = TAG_Bool(false);
1061 REGB0 = REGB1;
1062 goto label1;
1063 label1: while(0);
1064 stack_frame_head = fra.me.prev;
1065 return REGB0;
1066 }
1067 val_t metamodel___inheritance___MMLocalClass___has_global_property_by_name(val_t p0, val_t p1){
1068 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
1069 val_t REGB0;
1070 val_t REGB1;
1071 val_t REGB2;
1072 val_t REGB3;
1073 val_t REGB4;
1074 val_t tmp;
1075 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1076 fra.me.file = LOCATE_metamodel___inheritance;
1077 fra.me.line = 189;
1078 fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___has_global_property_by_name;
1079 fra.me.has_broke = 0;
1080 fra.me.REG_size = 9;
1081 fra.me.nitni_local_ref_head = NULL;
1082 fra.me.REG[0] = NIT_NULL;
1083 fra.me.REG[1] = NIT_NULL;
1084 fra.me.REG[2] = NIT_NULL;
1085 fra.me.REG[3] = NIT_NULL;
1086 fra.me.REG[4] = NIT_NULL;
1087 fra.me.REG[5] = NIT_NULL;
1088 fra.me.REG[6] = NIT_NULL;
1089 fra.me.REG[7] = NIT_NULL;
1090 fra.me.REG[8] = NIT_NULL;
1091 fra.me.REG[0] = p0;
1092 fra.me.REG[1] = p1;
1093 /* metamodel/inheritance.nit:193 */
1094 REGB0 = CALL_metamodel___inheritance___MMLocalClass___computed_super_classes(fra.me.REG[0])(fra.me.REG[0]);
1095 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1096 if (UNTAG_Bool(REGB0)) {
1097 REGB0 = TAG_Bool(false);
1098 goto label1;
1099 }
1100 /* metamodel/inheritance.nit:196 */
1101 CALL_metamodel___inheritance___MMLocalClass___compute_super_classes(fra.me.REG[0])(fra.me.REG[0]);
1102 /* metamodel/inheritance.nit:198 */
1103 REGB1 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0])!=NIT_NULL);
1104 if (UNTAG_Bool(REGB1)) {
1105 } else {
1106 nit_abort("Uninitialized attribute %s", "_properties_by_name", LOCATE_metamodel___inheritance, 198);
1107 }
1108 fra.me.REG[2] = ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0]);
1109 REGB1 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
1110 if (UNTAG_Bool(REGB1)) {
1111 /* metamodel/inheritance.nit:199 */
1112 REGB1 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0])!=NIT_NULL);
1113 if (UNTAG_Bool(REGB1)) {
1114 } else {
1115 nit_abort("Uninitialized attribute %s", "_properties_by_name", LOCATE_metamodel___inheritance, 199);
1116 }
1117 fra.me.REG[2] = ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0]);
1118 fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
1119 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1120 if (UNTAG_Bool(REGB1)) {
1121 nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 199);
1122 }
1123 /* ../lib/standard/collection/array.nit:24 */
1124 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
1125 if (UNTAG_Bool(REGB1)) {
1126 } else {
1127 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1128 }
1129 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
1130 /* metamodel/inheritance.nit:199 */
1131 REGB2 = TAG_Int(1);
1132 REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
1133 if (UNTAG_Bool(REGB3)) {
1134 } else {
1135 /* ../lib/standard/kernel.nit:227 */
1136 REGB2 = TAG_Bool((REGB1)==(REGB2));
1137 /* metamodel/inheritance.nit:199 */
1138 REGB3 = REGB2;
1139 }
1140 REGB0 = REGB3;
1141 goto label1;
1142 }
1143 /* metamodel/inheritance.nit:201 */
1144 REGB3 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0])!=NIT_NULL);
1145 if (UNTAG_Bool(REGB3)) {
1146 } else {
1147 nit_abort("Uninitialized attribute %s", "_global_properties", LOCATE_metamodel___inheritance, 201);
1148 }
1149 fra.me.REG[2] = ATTR_metamodel___abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0]);
1150 /* metamodel/inheritance.nit:203 */
1151 REGB3 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0])!=NIT_NULL);
1152 if (UNTAG_Bool(REGB3)) {
1153 } else {
1154 nit_abort("Uninitialized attribute %s", "_properties_by_name", LOCATE_metamodel___inheritance, 203);
1155 }
1156 fra.me.REG[3] = ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0]);
1157 REGB3 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
1158 if (UNTAG_Bool(REGB3)) {
1159 /* metamodel/inheritance.nit:204 */
1160 REGB3 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0])!=NIT_NULL);
1161 if (UNTAG_Bool(REGB3)) {
1162 } else {
1163 nit_abort("Uninitialized attribute %s", "_properties_by_name", LOCATE_metamodel___inheritance, 204);
1164 }
1165 fra.me.REG[3] = ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0]);
1166 fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
1167 } else {
1168 /* metamodel/inheritance.nit:206 */
1169 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
1170 fra.me.REG[3] = fra.me.REG[4];
1171 /* metamodel/inheritance.nit:207 */
1172 REGB3 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0])!=NIT_NULL);
1173 if (UNTAG_Bool(REGB3)) {
1174 } else {
1175 nit_abort("Uninitialized attribute %s", "_properties_by_name", LOCATE_metamodel___inheritance, 207);
1176 }
1177 fra.me.REG[4] = ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0]);
1178 CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1], fra.me.REG[3]);
1179 }
1180 /* metamodel/inheritance.nit:209 */
1181 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___che(fra.me.REG[0])(fra.me.REG[0]);
1182 fra.me.REG[4] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[4])(fra.me.REG[4]);
1183 /* ../lib/standard/collection/array.nit:269 */
1184 REGB3 = TAG_Int(0);
1185 /* ../lib/standard/collection/array.nit:270 */
1186 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1187 if (UNTAG_Bool(REGB2)) {
1188 } else {
1189 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
1190 }
1191 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
1192 /* ../lib/standard/collection/array.nit:271 */
1193 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
1194 /* ../lib/standard/collection/array.nit:272 */
1195 while(1) {
1196 /* ../lib/standard/collection/array.nit:24 */
1197 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1198 if (UNTAG_Bool(REGB2)) {
1199 } else {
1200 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1201 }
1202 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
1203 REGB1 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1204 if (UNTAG_Bool(REGB1)) {
1205 } else {
1206 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1207 }
1208 /* ../lib/standard/kernel.nit:232 */
1209 REGB2 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB2));
1210 /* ../lib/standard/collection/array.nit:272 */
1211 if (UNTAG_Bool(REGB2)) {
1212 /* ../lib/standard/collection/array.nit:273 */
1213 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1214 if (UNTAG_Bool(REGB2)) {
1215 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
1216 }
1217 /* ../lib/standard/collection/array.nit:718 */
1218 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB3)];
1219 /* metamodel/inheritance.nit:210 */
1220 REGB2 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1]);
1221 if (UNTAG_Bool(REGB2)) {
1222 /* metamodel/inheritance.nit:211 */
1223 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___get_property_by_name(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1]);
1224 /* metamodel/inheritance.nit:212 */
1225 REGB2 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
1226 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
1227 if (UNTAG_Bool(REGB2)) {
1228 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
1229 }
1230 /* metamodel/inheritance.nit:213 */
1231 REGB2 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[6])(fra.me.REG[6]);
1232 if (UNTAG_Bool(REGB2)) {
1233 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[6])(fra.me.REG[6]);
1234 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[7])(fra.me.REG[7]);
1235 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[7])(fra.me.REG[7]);
1236 fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
1237 REGB2 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[7],fra.me.REG[8]));
1238 if (UNTAG_Bool(REGB2)) {
1239 } else {
1240 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
1241 REGB2 = REGB1;
1242 }
1243 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
1244 } else {
1245 REGB1 = TAG_Bool(false);
1246 REGB2 = REGB1;
1247 }
1248 if (UNTAG_Bool(REGB2)) {
1249 goto label2;
1250 }
1251 /* metamodel/inheritance.nit:214 */
1252 fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[6])(fra.me.REG[6]);
1253 fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[8])(fra.me.REG[8]);
1254 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
1255 fra.me.REG[8] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[8])(fra.me.REG[8]);
1256 REGB2 = TAG_Char('@');
1257 REGB1 = TAG_Bool(IS_EQUAL_ON(REGB2,fra.me.REG[8]));
1258 if (UNTAG_Bool(REGB1)) {
1259 } else {
1260 REGB4 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
1261 if (UNTAG_Bool(REGB4)) {
1262 REGB4 = TAG_Bool(false);
1263 REGB1 = REGB4;
1264 } else {
1265 /* ../lib/standard/kernel.nit:378 */
1266 REGB2 = TAG_Bool((fra.me.REG[8])==(REGB2));
1267 /* metamodel/inheritance.nit:214 */
1268 REGB1 = REGB2;
1269 }
1270 }
1271 if (UNTAG_Bool(REGB1)) {
1272 goto label2;
1273 }
1274 /* metamodel/inheritance.nit:215 */
1275 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1276 if (UNTAG_Bool(REGB1)) {
1277 nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 215);
1278 }
1279 REGB1 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
1280 if (UNTAG_Bool(REGB1)) {
1281 goto label2;
1282 }
1283 /* metamodel/inheritance.nit:216 */
1284 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1285 if (UNTAG_Bool(REGB1)) {
1286 nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 216);
1287 }
1288 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
1289 }
1290 label2: while(0);
1291 /* ../lib/standard/collection/array.nit:274 */
1292 REGB1 = TAG_Int(1);
1293 /* ../lib/standard/kernel.nit:235 */
1294 REGB1 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB1));
1295 /* ../lib/standard/collection/array.nit:274 */
1296 REGB3 = REGB1;
1297 } else {
1298 /* ../lib/standard/collection/array.nit:272 */
1299 goto label3;
1300 }
1301 }
1302 label3: while(0);
1303 /* metamodel/inheritance.nit:219 */
1304 REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1305 if (UNTAG_Bool(REGB3)) {
1306 nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 219);
1307 }
1308 /* ../lib/standard/collection/array.nit:24 */
1309 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
1310 if (UNTAG_Bool(REGB3)) {
1311 } else {
1312 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1313 }
1314 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
1315 /* metamodel/inheritance.nit:219 */
1316 REGB1 = TAG_Int(1);
1317 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB1));
1318 if (UNTAG_Bool(REGB2)) {
1319 } else {
1320 /* ../lib/standard/kernel.nit:227 */
1321 REGB1 = TAG_Bool((REGB3)==(REGB1));
1322 /* metamodel/inheritance.nit:219 */
1323 REGB2 = REGB1;
1324 }
1325 REGB0 = REGB2;
1326 goto label1;
1327 label1: while(0);
1328 stack_frame_head = fra.me.prev;
1329 return REGB0;
1330 }
1331 void metamodel___inheritance___MMLocalClass___make_visible_an_inherited_global_property(val_t p0, val_t p1){
1332 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1333 val_t REGB0;
1334 val_t tmp;
1335 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1336 fra.me.file = LOCATE_metamodel___inheritance;
1337 fra.me.line = 222;
1338 fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___make_visible_an_inherited_global_property;
1339 fra.me.has_broke = 0;
1340 fra.me.REG_size = 5;
1341 fra.me.nitni_local_ref_head = NULL;
1342 fra.me.REG[0] = NIT_NULL;
1343 fra.me.REG[1] = NIT_NULL;
1344 fra.me.REG[2] = NIT_NULL;
1345 fra.me.REG[3] = NIT_NULL;
1346 fra.me.REG[4] = NIT_NULL;
1347 fra.me.REG[0] = p0;
1348 fra.me.REG[1] = p1;
1349 /* metamodel/inheritance.nit:225 */
1350 REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0])!=NIT_NULL);
1351 if (UNTAG_Bool(REGB0)) {
1352 } else {
1353 nit_abort("Uninitialized attribute %s", "_properties_by_name", LOCATE_metamodel___inheritance, 225);
1354 }
1355 fra.me.REG[0] = ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0]);
1356 /* metamodel/inheritance.nit:226 */
1357 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[1])(fra.me.REG[1]);
1358 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[2])(fra.me.REG[2]);
1359 /* metamodel/inheritance.nit:228 */
1360 REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
1361 if (UNTAG_Bool(REGB0)) {
1362 /* metamodel/inheritance.nit:229 */
1363 fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
1364 } else {
1365 /* metamodel/inheritance.nit:231 */
1366 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
1367 fra.me.REG[3] = fra.me.REG[4];
1368 /* metamodel/inheritance.nit:232 */
1369 CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[3]);
1370 }
1371 /* metamodel/inheritance.nit:234 */
1372 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
1373 stack_frame_head = fra.me.prev;
1374 return;
1375 }
1376 void metamodel___inheritance___MMLocalClass___add_direct_parent(val_t p0, val_t p1){
1377 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1378 val_t REGB0;
1379 val_t tmp;
1380 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1381 fra.me.file = LOCATE_metamodel___inheritance;
1382 fra.me.line = 237;
1383 fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___add_direct_parent;
1384 fra.me.has_broke = 0;
1385 fra.me.REG_size = 2;
1386 fra.me.nitni_local_ref_head = NULL;
1387 fra.me.REG[0] = NIT_NULL;
1388 fra.me.REG[1] = NIT_NULL;
1389 fra.me.REG[0] = p0;
1390 fra.me.REG[1] = p1;
1391 /* metamodel/inheritance.nit:240 */
1392 REGB0 = TAG_Bool(ATTR_metamodel___inheritance___MMLocalClass____direct_parents(fra.me.REG[0])!=NIT_NULL);
1393 if (UNTAG_Bool(REGB0)) {
1394 } else {
1395 nit_abort("Uninitialized attribute %s", "_direct_parents", LOCATE_metamodel___inheritance, 240);
1396 }
1397 fra.me.REG[0] = ATTR_metamodel___inheritance___MMLocalClass____direct_parents(fra.me.REG[0]);
1398 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1399 stack_frame_head = fra.me.prev;
1400 return;
1401 }
1402 val_t metamodel___inheritance___MMLocalClass___computed_super_classes(val_t p0){
1403 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1404 val_t REGB0;
1405 val_t REGB1;
1406 val_t tmp;
1407 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1408 fra.me.file = LOCATE_metamodel___inheritance;
1409 fra.me.line = 243;
1410 fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___computed_super_classes;
1411 fra.me.has_broke = 0;
1412 fra.me.REG_size = 2;
1413 fra.me.nitni_local_ref_head = NULL;
1414 fra.me.REG[0] = NIT_NULL;
1415 fra.me.REG[1] = NIT_NULL;
1416 fra.me.REG[0] = p0;
1417 /* metamodel/inheritance.nit:246 */
1418 fra.me.REG[1] = ATTR_metamodel___abstractmetamodel___MMLocalClass____crhe(fra.me.REG[0]);
1419 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1420 if (UNTAG_Bool(REGB0)) {
1421 } else {
1422 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1423 if (UNTAG_Bool(REGB1)) {
1424 REGB1 = TAG_Bool(false);
1425 REGB0 = REGB1;
1426 } else {
1427 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1428 REGB0 = REGB1;
1429 }
1430 }
1431 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1432 if (UNTAG_Bool(REGB0)) {
1433 fra.me.REG[0] = ATTR_metamodel___abstractmetamodel___MMLocalClass____cshe(fra.me.REG[0]);
1434 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1435 if (UNTAG_Bool(REGB0)) {
1436 } else {
1437 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1438 if (UNTAG_Bool(REGB1)) {
1439 REGB1 = TAG_Bool(false);
1440 REGB0 = REGB1;
1441 } else {
1442 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
1443 REGB0 = REGB1;
1444 }
1445 }
1446 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1447 } else {
1448 REGB1 = TAG_Bool(false);
1449 REGB0 = REGB1;
1450 }
1451 goto label1;
1452 label1: while(0);
1453 stack_frame_head = fra.me.prev;
1454 return REGB0;
1455 }
1456 val_t metamodel___inheritance___MMLocalClass___computed_ancestors(val_t p0){
1457 struct {struct stack_frame_t me;} fra;
1458 val_t REGB0;
1459 val_t REGB1;
1460 val_t tmp;
1461 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1462 fra.me.file = LOCATE_metamodel___inheritance;
1463 fra.me.line = 249;
1464 fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___computed_ancestors;
1465 fra.me.has_broke = 0;
1466 fra.me.REG_size = 1;
1467 fra.me.nitni_local_ref_head = NULL;
1468 fra.me.REG[0] = NIT_NULL;
1469 fra.me.REG[0] = p0;
1470 /* metamodel/inheritance.nit:252 */
1471 fra.me.REG[0] = ATTR_metamodel___static_type___MMLocalClass____ancestors(fra.me.REG[0]);
1472 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1473 if (UNTAG_Bool(REGB0)) {
1474 } else {
1475 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1476 if (UNTAG_Bool(REGB1)) {
1477 REGB1 = TAG_Bool(false);
1478 REGB0 = REGB1;
1479 } else {
1480 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
1481 REGB0 = REGB1;
1482 }
1483 }
1484 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1485 goto label1;
1486 label1: while(0);
1487 stack_frame_head = fra.me.prev;
1488 return REGB0;
1489 }
1490 val_t metamodel___inheritance___MMLocalClass___ancestor_for(val_t p0, val_t p1){
1491 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
1492 val_t REGB0;
1493 val_t REGB1;
1494 val_t tmp;
1495 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1496 fra.me.file = LOCATE_metamodel___inheritance;
1497 fra.me.line = 255;
1498 fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___ancestor_for;
1499 fra.me.has_broke = 0;
1500 fra.me.REG_size = 6;
1501 fra.me.nitni_local_ref_head = NULL;
1502 fra.me.REG[0] = NIT_NULL;
1503 fra.me.REG[1] = NIT_NULL;
1504 fra.me.REG[2] = NIT_NULL;
1505 fra.me.REG[3] = NIT_NULL;
1506 fra.me.REG[4] = NIT_NULL;
1507 fra.me.REG[5] = NIT_NULL;
1508 fra.me.REG[0] = p0;
1509 fra.me.REG[1] = p1;
1510 /* metamodel/inheritance.nit:259 */
1511 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalClass___ancestors(fra.me.REG[0])(fra.me.REG[0]);
1512 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1513 if (UNTAG_Bool(REGB0)) {
1514 } else {
1515 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1516 if (UNTAG_Bool(REGB1)) {
1517 REGB1 = TAG_Bool(false);
1518 REGB0 = REGB1;
1519 } else {
1520 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
1521 REGB0 = REGB1;
1522 }
1523 }
1524 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1525 if (UNTAG_Bool(REGB0)) {
1526 } else {
1527 nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 259);
1528 }
1529 /* metamodel/inheritance.nit:261 */
1530 fra.me.REG[2] = ATTR_metamodel___static_type___MMLocalClass____ancestors(fra.me.REG[0]);
1531 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1532 if (UNTAG_Bool(REGB0)) {
1533 nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 261);
1534 }
1535 REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
1536 if (UNTAG_Bool(REGB0)) {
1537 /* metamodel/inheritance.nit:262 */
1538 fra.me.REG[2] = ATTR_metamodel___static_type___MMLocalClass____ancestors(fra.me.REG[0]);
1539 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1540 if (UNTAG_Bool(REGB0)) {
1541 nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 262);
1542 }
1543 fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
1544 goto label1;
1545 }
1546 /* metamodel/inheritance.nit:264 */
1547 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
1548 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___for_module(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1549 /* metamodel/inheritance.nit:265 */
1550 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[0])(fra.me.REG[0]);
1551 REGB0 = CALL_metamodel___partial_order___PartialOrderElement_____leq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
1552 if (UNTAG_Bool(REGB0)) {
1553 } else {
1554 nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 265);
1555 }
1556 /* metamodel/inheritance.nit:267 */
1557 fra.me.REG[4] = ATTR_metamodel___static_type___MMLocalClass____ancestors(fra.me.REG[0]);
1558 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1559 if (UNTAG_Bool(REGB0)) {
1560 nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 267);
1561 }
1562 REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
1563 if (UNTAG_Bool(REGB0)) {
1564 /* metamodel/inheritance.nit:268 */
1565 fra.me.REG[4] = ATTR_metamodel___static_type___MMLocalClass____ancestors(fra.me.REG[0]);
1566 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1567 if (UNTAG_Bool(REGB0)) {
1568 nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 268);
1569 }
1570 fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
1571 } else {
1572 /* metamodel/inheritance.nit:269 */
1573 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
1574 fra.me.REG[5] = ATTR_metamodel___abstractmetamodel___MMLocalClass____global(fra.me.REG[0]);
1575 REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[4],fra.me.REG[5]));
1576 if (UNTAG_Bool(REGB0)) {
1577 } else {
1578 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1579 REGB0 = REGB1;
1580 }
1581 if (UNTAG_Bool(REGB0)) {
1582 /* metamodel/inheritance.nit:270 */
1583 fra.me.REG[5] = NEW_MMRefineAncestor_metamodel___inheritance___MMRefineAncestor___init(fra.me.REG[0], fra.me.REG[1]);
1584 fra.me.REG[3] = fra.me.REG[5];
1585 } else {
1586 /* metamodel/inheritance.nit:272 */
1587 fra.me.REG[5] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[0])(fra.me.REG[0]);
1588 fra.me.REG[4] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[1])(fra.me.REG[1]);
1589 fra.me.REG[4] = NEW_MMSpecAncestor_metamodel___inheritance___MMSpecAncestor___init(fra.me.REG[5], fra.me.REG[4]);
1590 fra.me.REG[3] = fra.me.REG[4];
1591 }
1592 }
1593 /* metamodel/inheritance.nit:274 */
1594 fra.me.REG[0] = ATTR_metamodel___static_type___MMLocalClass____ancestors(fra.me.REG[0]);
1595 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1596 if (UNTAG_Bool(REGB0)) {
1597 nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 274);
1598 }
1599 CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3]);
1600 /* metamodel/inheritance.nit:275 */
1601 fra.me.REG[2] = fra.me.REG[3];
1602 goto label1;
1603 label1: while(0);
1604 stack_frame_head = fra.me.prev;
1605 return fra.me.REG[2];
1606 }
1607 val_t metamodel___inheritance___MMLocalClass_____bra(val_t p0, val_t p1){
1608 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1609 val_t REGB0;
1610 val_t tmp;
1611 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1612 fra.me.file = LOCATE_metamodel___inheritance;
1613 fra.me.line = 278;
1614 fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass_____bra;
1615 fra.me.has_broke = 0;
1616 fra.me.REG_size = 4;
1617 fra.me.nitni_local_ref_head = NULL;
1618 fra.me.REG[0] = NIT_NULL;
1619 fra.me.REG[1] = NIT_NULL;
1620 fra.me.REG[2] = NIT_NULL;
1621 fra.me.REG[3] = NIT_NULL;
1622 fra.me.REG[0] = p0;
1623 fra.me.REG[1] = p1;
1624 /* metamodel/inheritance.nit:280 */
1625 REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0])!=NIT_NULL);
1626 if (UNTAG_Bool(REGB0)) {
1627 } else {
1628 nit_abort("Uninitialized attribute %s", "_local_property_by_global", LOCATE_metamodel___inheritance, 280);
1629 }
1630 fra.me.REG[2] = ATTR_metamodel___abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0]);
1631 REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
1632 if (UNTAG_Bool(REGB0)) {
1633 /* metamodel/inheritance.nit:281 */
1634 REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0])!=NIT_NULL);
1635 if (UNTAG_Bool(REGB0)) {
1636 } else {
1637 nit_abort("Uninitialized attribute %s", "_local_property_by_global", LOCATE_metamodel___inheritance, 281);
1638 }
1639 fra.me.REG[2] = ATTR_metamodel___abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0]);
1640 fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
1641 goto label1;
1642 } else {
1643 /* metamodel/inheritance.nit:282 */
1644 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1645 if (UNTAG_Bool(REGB0)) {
1646 /* metamodel/inheritance.nit:283 */
1647 fra.me.REG[3] = CALL_metamodel___inheritance___MMLocalClass___inherit_local_property(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1648 fra.me.REG[2] = fra.me.REG[3];
1649 goto label1;
1650 } else {
1651 /* metamodel/inheritance.nit:284 */
1652 REGB0 = CALL_metamodel___inheritance___MMLocalClass___computed_super_classes(fra.me.REG[0])(fra.me.REG[0]);
1653 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1654 if (UNTAG_Bool(REGB0)) {
1655 /* metamodel/inheritance.nit:285 */
1656 CALL_metamodel___inheritance___MMLocalClass___compute_super_classes(fra.me.REG[0])(fra.me.REG[0]);
1657 /* metamodel/inheritance.nit:286 */
1658 CALL_metamodel___inheritance___MMLocalClass___computed_ancestors(fra.me.REG[0])(fra.me.REG[0]);
1659 /* metamodel/inheritance.nit:287 */
1660 CALL_metamodel___inheritance___MMLocalClass___inherit_global_properties(fra.me.REG[0])(fra.me.REG[0]);
1661 /* metamodel/inheritance.nit:288 */
1662 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1663 if (UNTAG_Bool(REGB0)) {
1664 } else {
1665 nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 288);
1666 }
1667 /* metamodel/inheritance.nit:289 */
1668 fra.me.REG[1] = CALL_metamodel___inheritance___MMLocalClass___inherit_local_property(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1669 fra.me.REG[2] = fra.me.REG[1];
1670 goto label1;
1671 } else {
1672 /* metamodel/inheritance.nit:291 */
1673 nit_abort("Aborted", NULL, LOCATE_metamodel___inheritance, 291);
1674 }
1675 }
1676 }
1677 label1: while(0);
1678 stack_frame_head = fra.me.prev;
1679 return fra.me.REG[2];
1680 }
1681 void metamodel___inheritance___MMLocalClass___add_default_any_class(val_t p0, val_t p1){
1682 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1683 val_t REGB0;
1684 val_t REGB1;
1685 val_t REGB2;
1686 val_t REGB3;
1687 val_t tmp;
1688 static val_t once_value_1; /* Once value */
1689 static val_t once_value_2; /* Once value */
1690 static val_t once_value_5; /* Once value */
1691 static val_t once_value_6; /* Once value */
1692 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1693 fra.me.file = LOCATE_metamodel___inheritance;
1694 fra.me.line = 295;
1695 fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___add_default_any_class;
1696 fra.me.has_broke = 0;
1697 fra.me.REG_size = 5;
1698 fra.me.nitni_local_ref_head = NULL;
1699 fra.me.REG[0] = NIT_NULL;
1700 fra.me.REG[1] = NIT_NULL;
1701 fra.me.REG[2] = NIT_NULL;
1702 fra.me.REG[3] = NIT_NULL;
1703 fra.me.REG[4] = NIT_NULL;
1704 fra.me.REG[0] = p0;
1705 fra.me.REG[1] = p1;
1706 /* metamodel/inheritance.nit:299 */
1707 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[0])(fra.me.REG[0]);
1708 if (!once_value_1) {
1709 if (!once_value_2) {
1710 fra.me.REG[3] = BOX_NativeString("Object");
1711 REGB0 = TAG_Int(6);
1712 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
1713 once_value_2 = fra.me.REG[3];
1714 register_static_object(&once_value_2);
1715 } else fra.me.REG[3] = once_value_2;
1716 fra.me.REG[3] = fra.me.REG[3];
1717 fra.me.REG[3] = CALL_standard___symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
1718 once_value_1 = fra.me.REG[3];
1719 register_static_object(&once_value_1);
1720 } else fra.me.REG[3] = once_value_1;
1721 fra.me.REG[3] = fra.me.REG[3];
1722 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
1723 if (UNTAG_Bool(REGB0)) {
1724 } else {
1725 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1726 REGB0 = REGB1;
1727 }
1728 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1729 if (UNTAG_Bool(REGB0)) {
1730 /* metamodel/inheritance.nit:300 */
1731 REGB0 = TAG_Bool(false);
1732 /* metamodel/inheritance.nit:301 */
1733 REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
1734 if (UNTAG_Bool(REGB1)) {
1735 /* metamodel/inheritance.nit:302 */
1736 REGB1 = TAG_Bool(true);
1737 REGB0 = REGB1;
1738 } else {
1739 /* metamodel/inheritance.nit:303 */
1740 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
1741 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[3])(fra.me.REG[3]);
1742 if (UNTAG_Bool(REGB1)) {
1743 /* metamodel/inheritance.nit:304 */
1744 REGB1 = TAG_Bool(true);
1745 REGB0 = REGB1;
1746 /* ../lib/standard/collection/array.nit:266 */
1747 fra.me.REG[3] = fra.me.REG[1];
1748 /* ../lib/standard/collection/array.nit:269 */
1749 REGB1 = TAG_Int(0);
1750 /* ../lib/standard/collection/array.nit:270 */
1751 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
1752 if (UNTAG_Bool(REGB2)) {
1753 } else {
1754 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
1755 }
1756 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
1757 /* ../lib/standard/collection/array.nit:271 */
1758 fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
1759 /* ../lib/standard/collection/array.nit:272 */
1760 while(1) {
1761 /* ../lib/standard/collection/array.nit:24 */
1762 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
1763 if (UNTAG_Bool(REGB2)) {
1764 } else {
1765 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1766 }
1767 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
1768 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
1769 if (UNTAG_Bool(REGB3)) {
1770 } else {
1771 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1772 }
1773 /* ../lib/standard/kernel.nit:232 */
1774 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
1775 /* ../lib/standard/collection/array.nit:272 */
1776 if (UNTAG_Bool(REGB2)) {
1777 /* ../lib/standard/collection/array.nit:273 */
1778 REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1779 if (UNTAG_Bool(REGB2)) {
1780 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
1781 }
1782 /* ../lib/standard/collection/array.nit:718 */
1783 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
1784 /* metamodel/inheritance.nit:306 */
1785 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[4])(fra.me.REG[4]);
1786 REGB2 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[4])(fra.me.REG[4]);
1787 if (UNTAG_Bool(REGB2)) {
1788 /* metamodel/inheritance.nit:307 */
1789 REGB2 = TAG_Bool(false);
1790 REGB0 = REGB2;
1791 /* metamodel/inheritance.nit:308 */
1792 goto label3;
1793 }
1794 /* ../lib/standard/collection/array.nit:274 */
1795 REGB2 = TAG_Int(1);
1796 /* ../lib/standard/kernel.nit:235 */
1797 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
1798 /* ../lib/standard/collection/array.nit:274 */
1799 REGB1 = REGB2;
1800 } else {
1801 /* ../lib/standard/collection/array.nit:272 */
1802 goto label4;
1803 }
1804 }
1805 label4: while(0);
1806 label3: while(0);
1807 }
1808 }
1809 /* metamodel/inheritance.nit:313 */
1810 if (UNTAG_Bool(REGB0)) {
1811 /* metamodel/inheritance.nit:315 */
1812 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[0])(fra.me.REG[0]);
1813 if (!once_value_5) {
1814 if (!once_value_6) {
1815 fra.me.REG[3] = BOX_NativeString("Pointer");
1816 REGB0 = TAG_Int(7);
1817 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
1818 once_value_6 = fra.me.REG[3];
1819 register_static_object(&once_value_6);
1820 } else fra.me.REG[3] = once_value_6;
1821 fra.me.REG[3] = fra.me.REG[3];
1822 fra.me.REG[3] = CALL_standard___symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
1823 once_value_5 = fra.me.REG[3];
1824 register_static_object(&once_value_5);
1825 } else fra.me.REG[3] = once_value_5;
1826 fra.me.REG[3] = fra.me.REG[3];
1827 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
1828 if (UNTAG_Bool(REGB0)) {
1829 } else {
1830 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1831 REGB0 = REGB1;
1832 }
1833 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1834 if (UNTAG_Bool(REGB0)) {
1835 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
1836 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[3])(fra.me.REG[3]);
1837 } else {
1838 REGB1 = TAG_Bool(false);
1839 REGB0 = REGB1;
1840 }
1841 if (UNTAG_Bool(REGB0)) {
1842 /* metamodel/inheritance.nit:316 */
1843 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
1844 fra.me.REG[3] = CALL_metamodel___inheritance___MMModule___type_any_extern(fra.me.REG[3])(fra.me.REG[3]);
1845 } else {
1846 /* metamodel/inheritance.nit:318 */
1847 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
1848 fra.me.REG[2] = CALL_metamodel___inheritance___MMModule___type_any(fra.me.REG[2])(fra.me.REG[2]);
1849 fra.me.REG[3] = fra.me.REG[2];
1850 }
1851 /* metamodel/inheritance.nit:320 */
1852 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1853 if (UNTAG_Bool(REGB0)) {
1854 nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 320);
1855 }
1856 fra.me.REG[2] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[3])(fra.me.REG[3]);
1857 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
1858 /* metamodel/inheritance.nit:321 */
1859 fra.me.REG[3] = NEW_MMDefaultAncestor_metamodel___inheritance___MMDefaultAncestor___init(fra.me.REG[0], fra.me.REG[3]);
1860 /* metamodel/inheritance.nit:322 */
1861 CALL_metamodel___inheritance___MMLocalClass___add_direct_parent(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
1862 }
1863 }
1864 stack_frame_head = fra.me.prev;
1865 return;
1866 }
1867 void metamodel___inheritance___MMLocalClass___add_super_classes(val_t p0, val_t p1){
1868 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
1869 val_t REGB0;
1870 val_t REGB1;
1871 val_t REGB2;
1872 val_t REGB3;
1873 val_t tmp;
1874 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1875 fra.me.file = LOCATE_metamodel___inheritance;
1876 fra.me.line = 327;
1877 fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___add_super_classes;
1878 fra.me.has_broke = 0;
1879 fra.me.REG_size = 8;
1880 fra.me.nitni_local_ref_head = NULL;
1881 fra.me.REG[0] = NIT_NULL;
1882 fra.me.REG[1] = NIT_NULL;
1883 fra.me.REG[2] = NIT_NULL;
1884 fra.me.REG[3] = NIT_NULL;
1885 fra.me.REG[4] = NIT_NULL;
1886 fra.me.REG[5] = NIT_NULL;
1887 fra.me.REG[6] = NIT_NULL;
1888 fra.me.REG[7] = NIT_NULL;
1889 fra.me.REG[0] = p0;
1890 fra.me.REG[1] = p1;
1891 /* metamodel/inheritance.nit:330 */
1892 fra.me.REG[2] = ATTR_metamodel___abstractmetamodel___MMLocalClass____crhe(fra.me.REG[0]);
1893 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1894 if (UNTAG_Bool(REGB0)) {
1895 } else {
1896 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1897 if (UNTAG_Bool(REGB1)) {
1898 REGB1 = TAG_Bool(false);
1899 REGB0 = REGB1;
1900 } else {
1901 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
1902 REGB0 = REGB1;
1903 }
1904 }
1905 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1906 if (UNTAG_Bool(REGB0)) {
1907 } else {
1908 nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 330);
1909 }
1910 /* metamodel/inheritance.nit:331 */
1911 fra.me.REG[2] = ATTR_metamodel___abstractmetamodel___MMLocalClass____crhe(fra.me.REG[0]);
1912 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1913 if (UNTAG_Bool(REGB0)) {
1914 nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 331);
1915 }
1916 fra.me.REG[2] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[2])(fra.me.REG[2]);
1917 /* ../lib/standard/collection/array.nit:269 */
1918 REGB0 = TAG_Int(0);
1919 /* ../lib/standard/collection/array.nit:270 */
1920 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
1921 if (UNTAG_Bool(REGB1)) {
1922 } else {
1923 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
1924 }
1925 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
1926 /* ../lib/standard/collection/array.nit:271 */
1927 fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
1928 /* ../lib/standard/collection/array.nit:272 */
1929 while(1) {
1930 /* ../lib/standard/collection/array.nit:24 */
1931 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
1932 if (UNTAG_Bool(REGB1)) {
1933 } else {
1934 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1935 }
1936 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
1937 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1938 if (UNTAG_Bool(REGB2)) {
1939 } else {
1940 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1941 }
1942 /* ../lib/standard/kernel.nit:232 */
1943 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1944 /* ../lib/standard/collection/array.nit:272 */
1945 if (UNTAG_Bool(REGB1)) {
1946 /* ../lib/standard/collection/array.nit:273 */
1947 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1948 if (UNTAG_Bool(REGB1)) {
1949 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
1950 }
1951 /* ../lib/standard/collection/array.nit:718 */
1952 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
1953 /* metamodel/inheritance.nit:332 */
1954 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[4])(fra.me.REG[4]);
1955 fra.me.REG[4] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[4])(fra.me.REG[4]);
1956 /* ../lib/standard/collection/array.nit:269 */
1957 REGB1 = TAG_Int(0);
1958 /* ../lib/standard/collection/array.nit:270 */
1959 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1960 if (UNTAG_Bool(REGB2)) {
1961 } else {
1962 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
1963 }
1964 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
1965 /* ../lib/standard/collection/array.nit:271 */
1966 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
1967 /* ../lib/standard/collection/array.nit:272 */
1968 while(1) {
1969 /* ../lib/standard/collection/array.nit:24 */
1970 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1971 if (UNTAG_Bool(REGB2)) {
1972 } else {
1973 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1974 }
1975 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
1976 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
1977 if (UNTAG_Bool(REGB3)) {
1978 } else {
1979 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1980 }
1981 /* ../lib/standard/kernel.nit:232 */
1982 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
1983 /* ../lib/standard/collection/array.nit:272 */
1984 if (UNTAG_Bool(REGB2)) {
1985 /* ../lib/standard/collection/array.nit:273 */
1986 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1987 if (UNTAG_Bool(REGB2)) {
1988 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
1989 }
1990 /* ../lib/standard/collection/array.nit:718 */
1991 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB1)];
1992 /* metamodel/inheritance.nit:333 */
1993 REGB2 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____mmmodule(fra.me.REG[0])!=NIT_NULL);
1994 if (UNTAG_Bool(REGB2)) {
1995 } else {
1996 nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_metamodel___inheritance, 333);
1997 }
1998 fra.me.REG[7] = ATTR_metamodel___abstractmetamodel___MMLocalClass____mmmodule(fra.me.REG[0]);
1999 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___for_module(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
2000 /* metamodel/inheritance.nit:334 */
2001 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
2002 /* ../lib/standard/collection/array.nit:274 */
2003 REGB2 = TAG_Int(1);
2004 /* ../lib/standard/kernel.nit:235 */
2005 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
2006 /* ../lib/standard/collection/array.nit:274 */
2007 REGB1 = REGB2;
2008 } else {
2009 /* ../lib/standard/collection/array.nit:272 */
2010 goto label1;
2011 }
2012 }
2013 label1: while(0);
2014 /* ../lib/standard/collection/array.nit:274 */
2015 REGB1 = TAG_Int(1);
2016 /* ../lib/standard/kernel.nit:235 */
2017 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
2018 /* ../lib/standard/collection/array.nit:274 */
2019 REGB0 = REGB1;
2020 } else {
2021 /* ../lib/standard/collection/array.nit:272 */
2022 goto label2;
2023 }
2024 }
2025 label2: while(0);
2026 stack_frame_head = fra.me.prev;
2027 return;
2028 }
2029 void metamodel___inheritance___MMLocalClass___add_explicit_classes(val_t p0, val_t p1){
2030 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
2031 val_t REGB0;
2032 val_t REGB1;
2033 val_t REGB2;
2034 val_t tmp;
2035 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2036 fra.me.file = LOCATE_metamodel___inheritance;
2037 fra.me.line = 339;
2038 fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___add_explicit_classes;
2039 fra.me.has_broke = 0;
2040 fra.me.REG_size = 4;
2041 fra.me.nitni_local_ref_head = NULL;
2042 fra.me.REG[0] = NIT_NULL;
2043 fra.me.REG[1] = NIT_NULL;
2044 fra.me.REG[2] = NIT_NULL;
2045 fra.me.REG[3] = NIT_NULL;
2046 fra.me.REG[0] = p0;
2047 fra.me.REG[1] = p1;
2048 /* metamodel/inheritance.nit:342 */
2049 REGB0 = TAG_Bool(ATTR_metamodel___inheritance___MMLocalClass____direct_parents(fra.me.REG[0])!=NIT_NULL);
2050 if (UNTAG_Bool(REGB0)) {
2051 } else {
2052 nit_abort("Uninitialized attribute %s", "_direct_parents", LOCATE_metamodel___inheritance, 342);
2053 }
2054 fra.me.REG[0] = ATTR_metamodel___inheritance___MMLocalClass____direct_parents(fra.me.REG[0]);
2055 /* ../lib/standard/collection/array.nit:269 */
2056 REGB0 = TAG_Int(0);
2057 /* ../lib/standard/collection/array.nit:270 */
2058 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
2059 if (UNTAG_Bool(REGB1)) {
2060 } else {
2061 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
2062 }
2063 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
2064 /* ../lib/standard/collection/array.nit:271 */
2065 fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
2066 /* ../lib/standard/collection/array.nit:272 */
2067 while(1) {
2068 /* ../lib/standard/collection/array.nit:24 */
2069 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
2070 if (UNTAG_Bool(REGB1)) {
2071 } else {
2072 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
2073 }
2074 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
2075 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
2076 if (UNTAG_Bool(REGB2)) {
2077 } else {
2078 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
2079 }
2080 /* ../lib/standard/kernel.nit:232 */
2081 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
2082 /* ../lib/standard/collection/array.nit:272 */
2083 if (UNTAG_Bool(REGB1)) {
2084 /* ../lib/standard/collection/array.nit:273 */
2085 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2086 if (UNTAG_Bool(REGB1)) {
2087 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
2088 }
2089 /* ../lib/standard/collection/array.nit:718 */
2090 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
2091 /* metamodel/inheritance.nit:343 */
2092 fra.me.REG[3] = CALL_metamodel___static_type___MMAncestor___local_class(fra.me.REG[3])(fra.me.REG[3]);
2093 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
2094 /* ../lib/standard/collection/array.nit:274 */
2095 REGB1 = TAG_Int(1);
2096 /* ../lib/standard/kernel.nit:235 */
2097 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
2098 /* ../lib/standard/collection/array.nit:274 */
2099 REGB0 = REGB1;
2100 } else {
2101 /* ../lib/standard/collection/array.nit:272 */
2102 goto label1;
2103 }
2104 }
2105 label1: while(0);
2106 stack_frame_head = fra.me.prev;
2107 return;
2108 }
2109 void metamodel___inheritance___MMLocalClass___compute_super_parents(val_t p0, val_t p1){
2110 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2111 val_t REGB0;
2112 val_t REGB1;
2113 val_t REGB2;
2114 val_t tmp;
2115 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2116 fra.me.file = LOCATE_metamodel___inheritance;
2117 fra.me.line = 347;
2118 fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___compute_super_parents;
2119 fra.me.has_broke = 0;
2120 fra.me.REG_size = 3;
2121 fra.me.nitni_local_ref_head = NULL;
2122 fra.me.REG[0] = NIT_NULL;
2123 fra.me.REG[1] = NIT_NULL;
2124 fra.me.REG[2] = NIT_NULL;
2125 fra.me.REG[0] = p0;
2126 fra.me.REG[1] = p1;
2127 /* ../lib/standard/collection/array.nit:269 */
2128 REGB0 = TAG_Int(0);
2129 /* ../lib/standard/collection/array.nit:270 */
2130 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
2131 if (UNTAG_Bool(REGB1)) {
2132 } else {
2133 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
2134 }
2135 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
2136 /* ../lib/standard/collection/array.nit:271 */
2137 fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
2138 /* ../lib/standard/collection/array.nit:272 */
2139 while(1) {
2140 /* ../lib/standard/collection/array.nit:24 */
2141 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
2142 if (UNTAG_Bool(REGB1)) {
2143 } else {
2144 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
2145 }
2146 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
2147 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
2148 if (UNTAG_Bool(REGB2)) {
2149 } else {
2150 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
2151 }
2152 /* ../lib/standard/kernel.nit:232 */
2153 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
2154 /* ../lib/standard/collection/array.nit:272 */
2155 if (UNTAG_Bool(REGB1)) {
2156 /* ../lib/standard/collection/array.nit:273 */
2157 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2158 if (UNTAG_Bool(REGB1)) {
2159 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
2160 }
2161 /* ../lib/standard/collection/array.nit:718 */
2162 fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
2163 /* metamodel/inheritance.nit:351 */
2164 CALL_metamodel___inheritance___MMLocalClass___compute_super_classes(fra.me.REG[2])(fra.me.REG[2]);
2165 /* ../lib/standard/collection/array.nit:274 */
2166 REGB1 = TAG_Int(1);
2167 /* ../lib/standard/kernel.nit:235 */
2168 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
2169 /* ../lib/standard/collection/array.nit:274 */
2170 REGB0 = REGB1;
2171 } else {
2172 /* ../lib/standard/collection/array.nit:272 */
2173 goto label1;
2174 }
2175 }
2176 label1: while(0);
2177 stack_frame_head = fra.me.prev;
2178 return;
2179 }
2180 val_t metamodel___inheritance___MMLocalClass___build_ancestors(val_t p0){
2181 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
2182 val_t REGB0;
2183 val_t REGB1;
2184 val_t REGB2;
2185 val_t tmp;
2186 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2187 fra.me.file = LOCATE_metamodel___inheritance;
2188 fra.me.line = 355;
2189 fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___build_ancestors;
2190 fra.me.has_broke = 0;
2191 fra.me.REG_size = 6;
2192 fra.me.nitni_local_ref_head = NULL;
2193 fra.me.REG[0] = NIT_NULL;
2194 fra.me.REG[1] = NIT_NULL;
2195 fra.me.REG[2] = NIT_NULL;
2196 fra.me.REG[3] = NIT_NULL;
2197 fra.me.REG[4] = NIT_NULL;
2198 fra.me.REG[5] = NIT_NULL;
2199 fra.me.REG[0] = p0;
2200 /* metamodel/inheritance.nit:358 */
2201 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
2202 /* metamodel/inheritance.nit:360 */
2203 fra.me.REG[2] = ATTR_metamodel___abstractmetamodel___MMLocalClass____crhe(fra.me.REG[0]);
2204 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2205 if (UNTAG_Bool(REGB0)) {
2206 } else {
2207 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2208 if (UNTAG_Bool(REGB1)) {
2209 REGB1 = TAG_Bool(false);
2210 REGB0 = REGB1;
2211 } else {
2212 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2213 REGB0 = REGB1;
2214 }
2215 }
2216 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2217 if (UNTAG_Bool(REGB0)) {
2218 } else {
2219 nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 360);
2220 }
2221 /* metamodel/inheritance.nit:361 */
2222 fra.me.REG[2] = ATTR_metamodel___abstractmetamodel___MMLocalClass____crhe(fra.me.REG[0]);
2223 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2224 if (UNTAG_Bool(REGB0)) {
2225 nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 361);
2226 }
2227 fra.me.REG[2] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[2])(fra.me.REG[2]);
2228 /* ../lib/standard/collection/array.nit:269 */
2229 REGB0 = TAG_Int(0);
2230 /* ../lib/standard/collection/array.nit:270 */
2231 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
2232 if (UNTAG_Bool(REGB1)) {
2233 } else {
2234 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
2235 }
2236 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
2237 /* ../lib/standard/collection/array.nit:271 */
2238 fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
2239 /* ../lib/standard/collection/array.nit:272 */
2240 while(1) {
2241 /* ../lib/standard/collection/array.nit:24 */
2242 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
2243 if (UNTAG_Bool(REGB1)) {
2244 } else {
2245 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
2246 }
2247 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
2248 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
2249 if (UNTAG_Bool(REGB2)) {
2250 } else {
2251 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
2252 }
2253 /* ../lib/standard/kernel.nit:232 */
2254 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
2255 /* ../lib/standard/collection/array.nit:272 */
2256 if (UNTAG_Bool(REGB1)) {
2257 /* ../lib/standard/collection/array.nit:273 */
2258 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2259 if (UNTAG_Bool(REGB1)) {
2260 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
2261 }
2262 /* ../lib/standard/collection/array.nit:718 */
2263 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
2264 /* metamodel/inheritance.nit:362 */
2265 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[4],fra.me.REG[0]));
2266 if (UNTAG_Bool(REGB1)) {
2267 } else {
2268 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
2269 REGB1 = REGB2;
2270 }
2271 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
2272 if (UNTAG_Bool(REGB1)) {
2273 } else {
2274 nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 362);
2275 }
2276 /* metamodel/inheritance.nit:363 */
2277 fra.me.REG[4] = NEW_MMRefineAncestor_metamodel___inheritance___MMRefineAncestor___init(fra.me.REG[0], fra.me.REG[4]);
2278 /* metamodel/inheritance.nit:364 */
2279 CALL_metamodel___inheritance___MMAncestor___add_in(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
2280 /* ../lib/standard/collection/array.nit:274 */
2281 REGB1 = TAG_Int(1);
2282 /* ../lib/standard/kernel.nit:235 */
2283 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
2284 /* ../lib/standard/collection/array.nit:274 */
2285 REGB0 = REGB1;
2286 } else {
2287 /* ../lib/standard/collection/array.nit:272 */
2288 goto label1;
2289 }
2290 }
2291 label1: while(0);
2292 /* metamodel/inheritance.nit:366 */
2293 REGB0 = TAG_Bool(ATTR_metamodel___inheritance___MMLocalClass____direct_parents(fra.me.REG[0])!=NIT_NULL);
2294 if (UNTAG_Bool(REGB0)) {
2295 } else {
2296 nit_abort("Uninitialized attribute %s", "_direct_parents", LOCATE_metamodel___inheritance, 366);
2297 }
2298 fra.me.REG[3] = ATTR_metamodel___inheritance___MMLocalClass____direct_parents(fra.me.REG[0]);
2299 /* ../lib/standard/collection/array.nit:269 */
2300 REGB0 = TAG_Int(0);
2301 /* ../lib/standard/collection/array.nit:270 */
2302 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
2303 if (UNTAG_Bool(REGB1)) {
2304 } else {
2305 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
2306 }
2307 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
2308 /* ../lib/standard/collection/array.nit:271 */
2309 fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
2310 /* ../lib/standard/collection/array.nit:272 */
2311 while(1) {
2312 /* ../lib/standard/collection/array.nit:24 */
2313 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
2314 if (UNTAG_Bool(REGB1)) {
2315 } else {
2316 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
2317 }
2318 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
2319 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
2320 if (UNTAG_Bool(REGB2)) {
2321 } else {
2322 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
2323 }
2324 /* ../lib/standard/kernel.nit:232 */
2325 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
2326 /* ../lib/standard/collection/array.nit:272 */
2327 if (UNTAG_Bool(REGB1)) {
2328 /* ../lib/standard/collection/array.nit:273 */
2329 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2330 if (UNTAG_Bool(REGB1)) {
2331 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
2332 }
2333 /* ../lib/standard/collection/array.nit:718 */
2334 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
2335 /* metamodel/inheritance.nit:367 */
2336 fra.me.REG[5] = CALL_metamodel___static_type___MMAncestor___local_class(fra.me.REG[4])(fra.me.REG[4]);
2337 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[5],fra.me.REG[0]));
2338 if (UNTAG_Bool(REGB1)) {
2339 } else {
2340 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
2341 REGB1 = REGB2;
2342 }
2343 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
2344 if (UNTAG_Bool(REGB1)) {
2345 } else {
2346 nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 367);
2347 }
2348 /* metamodel/inheritance.nit:368 */
2349 CALL_metamodel___inheritance___MMAncestor___add_in(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
2350 /* ../lib/standard/collection/array.nit:274 */
2351 REGB1 = TAG_Int(1);
2352 /* ../lib/standard/kernel.nit:235 */
2353 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
2354 /* ../lib/standard/collection/array.nit:274 */
2355 REGB0 = REGB1;
2356 } else {
2357 /* ../lib/standard/collection/array.nit:272 */
2358 goto label2;
2359 }
2360 }
2361 label2: while(0);
2362 /* metamodel/inheritance.nit:370 */
2363 goto label3;
2364 label3: while(0);
2365 stack_frame_head = fra.me.prev;
2366 return fra.me.REG[1];
2367 }
2368 val_t metamodel___inheritance___MMLocalClass___group_ancestors(val_t p0, val_t p1){
2369 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
2370 val_t REGB0;
2371 val_t REGB1;
2372 val_t REGB2;
2373 val_t tmp;
2374 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2375 fra.me.file = LOCATE_metamodel___inheritance;
2376 fra.me.line = 373;
2377 fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___group_ancestors;
2378 fra.me.has_broke = 0;
2379 fra.me.REG_size = 7;
2380 fra.me.nitni_local_ref_head = NULL;
2381 fra.me.REG[0] = NIT_NULL;
2382 fra.me.REG[1] = NIT_NULL;
2383 fra.me.REG[2] = NIT_NULL;
2384 fra.me.REG[3] = NIT_NULL;
2385 fra.me.REG[4] = NIT_NULL;
2386 fra.me.REG[5] = NIT_NULL;
2387 fra.me.REG[6] = NIT_NULL;
2388 fra.me.REG[0] = p0;
2389 fra.me.REG[1] = p1;
2390 /* metamodel/inheritance.nit:377 */
2391 fra.me.REG[0] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
2392 /* ../lib/standard/collection/array.nit:269 */
2393 REGB0 = TAG_Int(0);
2394 /* ../lib/standard/collection/array.nit:270 */
2395 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
2396 if (UNTAG_Bool(REGB1)) {
2397 } else {
2398 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
2399 }
2400 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
2401 /* ../lib/standard/collection/array.nit:271 */
2402 fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
2403 /* ../lib/standard/collection/array.nit:272 */
2404 while(1) {
2405 /* ../lib/standard/collection/array.nit:24 */
2406 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
2407 if (UNTAG_Bool(REGB1)) {
2408 } else {
2409 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
2410 }
2411 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
2412 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
2413 if (UNTAG_Bool(REGB2)) {
2414 } else {
2415 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
2416 }
2417 /* ../lib/standard/kernel.nit:232 */
2418 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
2419 /* ../lib/standard/collection/array.nit:272 */
2420 if (UNTAG_Bool(REGB1)) {
2421 /* ../lib/standard/collection/array.nit:273 */
2422 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2423 if (UNTAG_Bool(REGB1)) {
2424 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
2425 }
2426 /* ../lib/standard/collection/array.nit:718 */
2427 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
2428 /* metamodel/inheritance.nit:379 */
2429 fra.me.REG[4] = CALL_metamodel___static_type___MMAncestor___local_class(fra.me.REG[3])(fra.me.REG[3]);
2430 /* metamodel/inheritance.nit:383 */
2431 CALL_metamodel___inheritance___MMLocalClass___compute_ancestors(fra.me.REG[4])(fra.me.REG[4]);
2432 /* metamodel/inheritance.nit:384 */
2433 REGB1 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
2434 if (UNTAG_Bool(REGB1)) {
2435 /* metamodel/inheritance.nit:385 */
2436 fra.me.REG[5] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
2437 } else {
2438 /* metamodel/inheritance.nit:387 */
2439 fra.me.REG[6] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
2440 fra.me.REG[5] = fra.me.REG[6];
2441 /* metamodel/inheritance.nit:388 */
2442 CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[5]);
2443 }
2444 /* metamodel/inheritance.nit:390 */
2445 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
2446 /* ../lib/standard/collection/array.nit:274 */
2447 REGB1 = TAG_Int(1);
2448 /* ../lib/standard/kernel.nit:235 */
2449 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
2450 /* ../lib/standard/collection/array.nit:274 */
2451 REGB0 = REGB1;
2452 } else {
2453 /* ../lib/standard/collection/array.nit:272 */
2454 goto label1;
2455 }
2456 }
2457 label1: while(0);
2458 /* metamodel/inheritance.nit:392 */
2459 goto label2;
2460 label2: while(0);
2461 stack_frame_head = fra.me.prev;
2462 return fra.me.REG[0];
2463 }
2464 val_t metamodel___inheritance___MMLocalClass___merge_ancestors(val_t p0, val_t p1){
2465 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
2466 val_t REGB0;
2467 val_t REGB1;
2468 val_t REGB2;
2469 val_t tmp;
2470 static val_t once_value_3; /* Once value */
2471 static val_t once_value_4; /* Once value */
2472 static val_t once_value_5; /* Once value */
2473 static val_t once_value_6; /* Once value */
2474 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2475 fra.me.file = LOCATE_metamodel___inheritance;
2476 fra.me.line = 395;
2477 fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___merge_ancestors;
2478 fra.me.has_broke = 0;
2479 fra.me.REG_size = 5;
2480 fra.me.nitni_local_ref_head = NULL;
2481 fra.me.REG[0] = NIT_NULL;
2482 fra.me.REG[1] = NIT_NULL;
2483 fra.me.REG[2] = NIT_NULL;
2484 fra.me.REG[3] = NIT_NULL;
2485 fra.me.REG[4] = NIT_NULL;
2486 fra.me.REG[0] = p0;
2487 fra.me.REG[1] = p1;
2488 /* metamodel/inheritance.nit:398 */
2489 fra.me.REG[2] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
2490 /* metamodel/inheritance.nit:399 */
2491 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
2492 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_metamodel___inheritance___MMLocalClass___merge_ancestors_1));
2493 /* ../lib/standard/collection/array.nit:24 */
2494 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
2495 if (UNTAG_Bool(REGB0)) {
2496 } else {
2497 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
2498 }
2499 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
2500 /* metamodel/inheritance.nit:421 */
2501 REGB1 = TAG_Int(1);
2502 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
2503 if (UNTAG_Bool(REGB2)) {
2504 } else {
2505 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
2506 }
2507 /* ../lib/standard/kernel.nit:234 */
2508 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
2509 /* metamodel/inheritance.nit:421 */
2510 if (UNTAG_Bool(REGB1)) {
2511 /* metamodel/inheritance.nit:422 */
2512 fra.me.REG[2] = CALL_standard___file___Object___stderr(fra.me.REG[0])(fra.me.REG[0]);
2513 REGB1 = TAG_Int(5);
2514 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
2515 if (!once_value_3) {
2516 fra.me.REG[4] = BOX_NativeString("Fatal error: Incompatibles ancestors for ");
2517 REGB1 = TAG_Int(41);
2518 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
2519 once_value_3 = fra.me.REG[4];
2520 register_static_object(&once_value_3);
2521 } else fra.me.REG[4] = once_value_3;
2522 fra.me.REG[4] = fra.me.REG[4];
2523 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
2524 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[0])(fra.me.REG[0]);
2525 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
2526 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
2527 if (!once_value_4) {
2528 fra.me.REG[4] = BOX_NativeString(": ");
2529 REGB1 = TAG_Int(2);
2530 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
2531 once_value_4 = fra.me.REG[4];
2532 register_static_object(&once_value_4);
2533 } else fra.me.REG[4] = once_value_4;
2534 fra.me.REG[4] = fra.me.REG[4];
2535 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
2536 if (!once_value_5) {
2537 fra.me.REG[4] = BOX_NativeString(", ");
2538 REGB1 = TAG_Int(2);
2539 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
2540 once_value_5 = fra.me.REG[4];
2541 register_static_object(&once_value_5);
2542 } else fra.me.REG[4] = once_value_5;
2543 fra.me.REG[4] = fra.me.REG[4];
2544 fra.me.REG[4] = CALL_standard___string___Collection___join(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2545 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
2546 if (!once_value_6) {
2547 fra.me.REG[4] = BOX_NativeString("\n");
2548 REGB1 = TAG_Int(1);
2549 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
2550 once_value_6 = fra.me.REG[4];
2551 register_static_object(&once_value_6);
2552 } else fra.me.REG[4] = once_value_6;
2553 fra.me.REG[4] = fra.me.REG[4];
2554 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
2555 fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
2556 CALL_standard___stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
2557 /* metamodel/inheritance.nit:423 */
2558 REGB1 = TAG_Int(1);
2559 CALL_standard___kernel___Object___exit(fra.me.REG[0])(fra.me.REG[0], REGB1);
2560 }
2561 /* metamodel/inheritance.nit:425 */
2562 fra.me.REG[3] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[3])(fra.me.REG[3]);
2563 goto label7;
2564 label7: while(0);
2565 stack_frame_head = fra.me.prev;
2566 return fra.me.REG[3];
2567 }
2568 void OC_metamodel___inheritance___MMLocalClass___merge_ancestors_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
2569 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
2570 val_t REGB0;
2571 val_t REGB1;
2572 val_t REGB2;
2573 fun_t CREG[1];
2574 val_t tmp;
2575 /* metamodel/inheritance.nit:400 */
2576 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2577 fra.me.file = LOCATE_metamodel___inheritance;
2578 fra.me.line = 0;
2579 fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___merge_ancestors;
2580 fra.me.has_broke = 0;
2581 fra.me.REG_size = 4;
2582 fra.me.nitni_local_ref_head = NULL;
2583 fra.me.REG[0] = NIT_NULL;
2584 fra.me.REG[1] = NIT_NULL;
2585 fra.me.REG[2] = NIT_NULL;
2586 fra.me.REG[3] = NIT_NULL;
2587 fra.me.closure_ctx = closctx_param;
2588 fra.me.closure_funs = CREG;
2589 fra.me.REG[0] = p0;
2590 CREG[0] = clos_fun0;
2591 /* metamodel/inheritance.nit:401 */
2592 fra.me.REG[1] = CALL_standard___collection___abstract_collection___Collection___iterator(closctx->REG[1])(closctx->REG[1]);
2593 /* metamodel/inheritance.nit:402 */
2594 REGB0 = TAG_Bool(true);
2595 /* metamodel/inheritance.nit:403 */
2596 while(1) {
2597 REGB1 = CALL_standard___collection___abstract_collection___Iterator___is_ok(fra.me.REG[1])(fra.me.REG[1]);
2598 if (UNTAG_Bool(REGB1)) {
2599 REGB1 = REGB0;
2600 } else {
2601 REGB2 = TAG_Bool(false);
2602 REGB1 = REGB2;
2603 }
2604 if (UNTAG_Bool(REGB1)) {
2605 /* metamodel/inheritance.nit:405 */
2606 fra.me.REG[2] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[1])(fra.me.REG[1]);
2607 REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[0],fra.me.REG[2]));
2608 if (UNTAG_Bool(REGB1)) {
2609 } else {
2610 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
2611 REGB1 = REGB2;
2612 }
2613 /* metamodel/inheritance.nit:406 */
2614 fra.me.REG[2] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[1])(fra.me.REG[1]);
2615 REGB1 = CALL_standard___collection___abstract_collection___Collection___has(closctx->REG[2])(closctx->REG[2], fra.me.REG[2]);
2616 /* metamodel/inheritance.nit:407 */
2617 fra.me.REG[2] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[1])(fra.me.REG[1]);
2618 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2619 if (UNTAG_Bool(REGB1)) {
2620 nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 407);
2621 }
2622 fra.me.REG[2] = CALL_metamodel___static_type___MMAncestor___stype(fra.me.REG[2])(fra.me.REG[2]);
2623 fra.me.REG[3] = CALL_metamodel___static_type___MMAncestor___stype(fra.me.REG[0])(fra.me.REG[0]);
2624 REGB1 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2625 /* metamodel/inheritance.nit:409 */
2626 fra.me.REG[3] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[1])(fra.me.REG[1]);
2627 REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[0],fra.me.REG[3]));
2628 if (UNTAG_Bool(REGB1)) {
2629 } else {
2630 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
2631 REGB1 = REGB2;
2632 }
2633 if (UNTAG_Bool(REGB1)) {
2634 REGB1 = TAG_Bool(true);
2635 } else {
2636 fra.me.REG[3] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[1])(fra.me.REG[1]);
2637 REGB2 = CALL_standard___collection___abstract_collection___Collection___has(closctx->REG[2])(closctx->REG[2], fra.me.REG[3]);
2638 REGB1 = REGB2;
2639 }
2640 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
2641 if (UNTAG_Bool(REGB1)) {
2642 /* metamodel/inheritance.nit:410 */
2643 fra.me.REG[3] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[1])(fra.me.REG[1]);
2644 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2645 if (UNTAG_Bool(REGB1)) {
2646 nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 410);
2647 }
2648 fra.me.REG[3] = CALL_metamodel___static_type___MMAncestor___stype(fra.me.REG[3])(fra.me.REG[3]);
2649 fra.me.REG[2] = CALL_metamodel___static_type___MMAncestor___stype(fra.me.REG[0])(fra.me.REG[0]);
2650 REGB1 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
2651 } else {
2652 /* metamodel/inheritance.nit:409 */
2653 REGB2 = TAG_Bool(false);
2654 REGB1 = REGB2;
2655 }
2656 if (UNTAG_Bool(REGB1)) {
2657 /* metamodel/inheritance.nit:411 */
2658 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
2659 /* metamodel/inheritance.nit:412 */
2660 REGB1 = TAG_Bool(false);
2661 REGB0 = REGB1;
2662 }
2663 /* metamodel/inheritance.nit:414 */
2664 CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[1])(fra.me.REG[1]);
2665 } else {
2666 /* metamodel/inheritance.nit:403 */
2667 goto label2;
2668 }
2669 }
2670 label2: while(0);
2671 /* metamodel/inheritance.nit:416 */
2672 REGB0 = CALL_standard___collection___abstract_collection___Collection___has(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
2673 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2674 if (UNTAG_Bool(REGB0)) {
2675 /* metamodel/inheritance.nit:417 */
2676 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[3])(closctx->REG[3], fra.me.REG[0]);
2677 }
2678 stack_frame_head = fra.me.prev;
2679 return;
2680 }
2681 val_t metamodel___inheritance___MMLocalClass___inherit_local_property(val_t p0, val_t p1){
2682 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
2683 val_t REGB0;
2684 val_t REGB1;
2685 val_t REGB2;
2686 val_t tmp;
2687 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2688 fra.me.file = LOCATE_metamodel___inheritance;
2689 fra.me.line = 428;
2690 fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___inherit_local_property;
2691 fra.me.has_broke = 0;
2692 fra.me.REG_size = 8;
2693 fra.me.nitni_local_ref_head = NULL;
2694 fra.me.REG[0] = NIT_NULL;
2695 fra.me.REG[1] = NIT_NULL;
2696 fra.me.REG[2] = NIT_NULL;
2697 fra.me.REG[3] = NIT_NULL;
2698 fra.me.REG[4] = NIT_NULL;
2699 fra.me.REG[5] = NIT_NULL;
2700 fra.me.REG[6] = NIT_NULL;
2701 fra.me.REG[7] = NIT_NULL;
2702 fra.me.REG[0] = p0;
2703 fra.me.REG[1] = p1;
2704 /* metamodel/inheritance.nit:433 */
2705 REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0])!=NIT_NULL);
2706 if (UNTAG_Bool(REGB0)) {
2707 } else {
2708 nit_abort("Uninitialized attribute %s", "_local_property_by_global", LOCATE_metamodel___inheritance, 433);
2709 }
2710 fra.me.REG[2] = ATTR_metamodel___abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0]);
2711 REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
2712 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2713 if (UNTAG_Bool(REGB0)) {
2714 } else {
2715 nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 433);
2716 }
2717 /* metamodel/inheritance.nit:437 */
2718 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___property_hierarchy(fra.me.REG[1])(fra.me.REG[1]);
2719 /* metamodel/inheritance.nit:438 */
2720 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___che(fra.me.REG[0])(fra.me.REG[0]);
2721 fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[3])(fra.me.REG[3]);
2722 /* metamodel/inheritance.nit:439 */
2723 REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[2])(fra.me.REG[2]);
2724 REGB1 = TAG_Int(1);
2725 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
2726 if (UNTAG_Bool(REGB2)) {
2727 } else {
2728 /* ../lib/standard/kernel.nit:227 */
2729 REGB1 = TAG_Bool((REGB0)==(REGB1));
2730 /* metamodel/inheritance.nit:439 */
2731 REGB2 = REGB1;
2732 }
2733 if (UNTAG_Bool(REGB2)) {
2734 /* metamodel/inheritance.nit:441 */
2735 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[1])(fra.me.REG[1]);
2736 } else {
2737 /* ../lib/standard/collection/array.nit:24 */
2738 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
2739 if (UNTAG_Bool(REGB2)) {
2740 } else {
2741 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
2742 }
2743 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
2744 /* metamodel/inheritance.nit:442 */
2745 REGB1 = TAG_Int(1);
2746 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
2747 if (UNTAG_Bool(REGB0)) {
2748 } else {
2749 /* ../lib/standard/kernel.nit:227 */
2750 REGB1 = TAG_Bool((REGB2)==(REGB1));
2751 /* metamodel/inheritance.nit:442 */
2752 REGB0 = REGB1;
2753 }
2754 if (UNTAG_Bool(REGB0)) {
2755 /* metamodel/inheritance.nit:444 */
2756 fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[3])(fra.me.REG[3]);
2757 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
2758 if (UNTAG_Bool(REGB0)) {
2759 nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 444);
2760 }
2761 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
2762 fra.me.REG[4] = fra.me.REG[5];
2763 } else {
2764 /* metamodel/inheritance.nit:448 */
2765 fra.me.REG[5] = NEW_ArraySet_standard___collection___array___ArraySet___init();
2766 /* ../lib/standard/collection/array.nit:269 */
2767 REGB0 = TAG_Int(0);
2768 /* ../lib/standard/collection/array.nit:270 */
2769 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
2770 if (UNTAG_Bool(REGB1)) {
2771 } else {
2772 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
2773 }
2774 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
2775 /* ../lib/standard/collection/array.nit:271 */
2776 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
2777 /* ../lib/standard/collection/array.nit:272 */
2778 while(1) {
2779 /* ../lib/standard/collection/array.nit:24 */
2780 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
2781 if (UNTAG_Bool(REGB1)) {
2782 } else {
2783 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
2784 }
2785 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
2786 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
2787 if (UNTAG_Bool(REGB2)) {
2788 } else {
2789 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
2790 }
2791 /* ../lib/standard/kernel.nit:232 */
2792 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
2793 /* ../lib/standard/collection/array.nit:272 */
2794 if (UNTAG_Bool(REGB1)) {
2795 /* ../lib/standard/collection/array.nit:273 */
2796 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2797 if (UNTAG_Bool(REGB1)) {
2798 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
2799 }
2800 /* ../lib/standard/collection/array.nit:718 */
2801 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
2802 /* metamodel/inheritance.nit:450 */
2803 REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[1]);
2804 if (UNTAG_Bool(REGB1)) {
2805 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[1]);
2806 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
2807 }
2808 /* ../lib/standard/collection/array.nit:274 */
2809 REGB1 = TAG_Int(1);
2810 /* ../lib/standard/kernel.nit:235 */
2811 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
2812 /* ../lib/standard/collection/array.nit:274 */
2813 REGB0 = REGB1;
2814 } else {
2815 /* ../lib/standard/collection/array.nit:272 */
2816 goto label1;
2817 }
2818 }
2819 label1: while(0);
2820 /* metamodel/inheritance.nit:453 */
2821 fra.me.REG[5] = CALL_metamodel___partial_order___PartialOrder___select_smallests(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
2822 /* ../lib/standard/collection/array.nit:24 */
2823 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
2824 if (UNTAG_Bool(REGB0)) {
2825 } else {
2826 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
2827 }
2828 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
2829 /* metamodel/inheritance.nit:455 */
2830 REGB1 = TAG_Int(1);
2831 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
2832 if (UNTAG_Bool(REGB2)) {
2833 } else {
2834 /* ../lib/standard/kernel.nit:227 */
2835 REGB1 = TAG_Bool((REGB0)==(REGB1));
2836 /* metamodel/inheritance.nit:455 */
2837 REGB2 = REGB1;
2838 }
2839 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
2840 if (UNTAG_Bool(REGB2)) {
2841 /* metamodel/inheritance.nit:456 */
2842 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
2843 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMModule___context(fra.me.REG[2])(fra.me.REG[2]);
2844 CALL_metamodel___inheritance___MMContext___handle_property_conflict(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[5]);
2845 }
2846 /* metamodel/inheritance.nit:458 */
2847 fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[5])(fra.me.REG[5]);
2848 fra.me.REG[4] = fra.me.REG[5];
2849 }
2850 }
2851 /* metamodel/inheritance.nit:468 */
2852 REGB2 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0])!=NIT_NULL);
2853 if (UNTAG_Bool(REGB2)) {
2854 } else {
2855 nit_abort("Uninitialized attribute %s", "_local_property_by_global", LOCATE_metamodel___inheritance, 468);
2856 }
2857 fra.me.REG[0] = ATTR_metamodel___abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0]);
2858 CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[4]);
2859 /* metamodel/inheritance.nit:470 */
2860 goto label2;
2861 label2: while(0);
2862 stack_frame_head = fra.me.prev;
2863 return fra.me.REG[4];
2864 }
2865 void metamodel___inheritance___MMLocalProperty___inherit_global(val_t p0, val_t p1){
2866 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
2867 val_t REGB0;
2868 val_t REGB1;
2869 val_t REGB2;
2870 val_t tmp;
2871 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2872 fra.me.file = LOCATE_metamodel___inheritance;
2873 fra.me.line = 475;
2874 fra.me.meth = LOCATE_metamodel___inheritance___MMLocalProperty___inherit_global;
2875 fra.me.has_broke = 0;
2876 fra.me.REG_size = 6;
2877 fra.me.nitni_local_ref_head = NULL;
2878 fra.me.REG[0] = NIT_NULL;
2879 fra.me.REG[1] = NIT_NULL;
2880 fra.me.REG[2] = NIT_NULL;
2881 fra.me.REG[3] = NIT_NULL;
2882 fra.me.REG[4] = NIT_NULL;
2883 fra.me.REG[5] = NIT_NULL;
2884 fra.me.REG[0] = p0;
2885 fra.me.REG[1] = p1;
2886 /* metamodel/inheritance.nit:478 */
2887 CALL_metamodel___abstractmetamodel___MMLocalProperty___set_global(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2888 /* metamodel/inheritance.nit:479 */
2889 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
2890 /* metamodel/inheritance.nit:480 */
2891 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
2892 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___che(fra.me.REG[3])(fra.me.REG[3]);
2893 fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[3])(fra.me.REG[3]);
2894 /* ../lib/standard/collection/array.nit:269 */
2895 REGB0 = TAG_Int(0);
2896 /* ../lib/standard/collection/array.nit:270 */
2897 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
2898 if (UNTAG_Bool(REGB1)) {
2899 } else {
2900 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
2901 }
2902 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
2903 /* ../lib/standard/collection/array.nit:271 */
2904 fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
2905 /* ../lib/standard/collection/array.nit:272 */
2906 while(1) {
2907 /* ../lib/standard/collection/array.nit:24 */
2908 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
2909 if (UNTAG_Bool(REGB1)) {
2910 } else {
2911 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
2912 }
2913 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
2914 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
2915 if (UNTAG_Bool(REGB2)) {
2916 } else {
2917 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
2918 }
2919 /* ../lib/standard/kernel.nit:232 */
2920 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
2921 /* ../lib/standard/collection/array.nit:272 */
2922 if (UNTAG_Bool(REGB1)) {
2923 /* ../lib/standard/collection/array.nit:273 */
2924 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2925 if (UNTAG_Bool(REGB1)) {
2926 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
2927 }
2928 /* ../lib/standard/collection/array.nit:718 */
2929 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
2930 /* metamodel/inheritance.nit:481 */
2931 REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
2932 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
2933 if (UNTAG_Bool(REGB1)) {
2934 goto label1;
2935 }
2936 /* metamodel/inheritance.nit:482 */
2937 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
2938 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
2939 label1: while(0);
2940 /* ../lib/standard/collection/array.nit:274 */
2941 REGB1 = TAG_Int(1);
2942 /* ../lib/standard/kernel.nit:235 */
2943 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
2944 /* ../lib/standard/collection/array.nit:274 */
2945 REGB0 = REGB1;
2946 } else {
2947 /* ../lib/standard/collection/array.nit:272 */
2948 goto label2;
2949 }
2950 }
2951 label2: while(0);
2952 /* metamodel/inheritance.nit:484 */
2953 CALL_metamodel___abstractmetamodel___MMGlobalProperty___add_local_property(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
2954 stack_frame_head = fra.me.prev;
2955 return;
2956 }
2957 void metamodel___inheritance___MMAncestor___add_in(val_t p0, val_t p1){
2958 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2959 val_t REGB0;
2960 val_t tmp;
2961 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2962 fra.me.file = LOCATE_metamodel___inheritance;
2963 fra.me.line = 489;
2964 fra.me.meth = LOCATE_metamodel___inheritance___MMAncestor___add_in;
2965 fra.me.has_broke = 0;
2966 fra.me.REG_size = 3;
2967 fra.me.nitni_local_ref_head = NULL;
2968 fra.me.REG[0] = NIT_NULL;
2969 fra.me.REG[1] = NIT_NULL;
2970 fra.me.REG[2] = NIT_NULL;
2971 fra.me.REG[0] = p0;
2972 fra.me.REG[1] = p1;
2973 /* metamodel/inheritance.nit:492 */
2974 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2975 /* metamodel/inheritance.nit:493 */
2976 fra.me.REG[2] = CALL_metamodel___static_type___MMAncestor___stype(fra.me.REG[0])(fra.me.REG[0]);
2977 fra.me.REG[2] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
2978 CALL_metamodel___inheritance___MMLocalClass___compute_ancestors(fra.me.REG[2])(fra.me.REG[2]);
2979 /* metamodel/inheritance.nit:494 */
2980 fra.me.REG[2] = CALL_metamodel___static_type___MMAncestor___stype(fra.me.REG[0])(fra.me.REG[0]);
2981 fra.me.REG[2] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
2982 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalClass___ancestors(fra.me.REG[2])(fra.me.REG[2]);
2983 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2984 if (UNTAG_Bool(REGB0)) {
2985 nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 494);
2986 }
2987 fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead___values(fra.me.REG[2])(fra.me.REG[2]);
2988 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_metamodel___inheritance___MMAncestor___add_in_1));
2989 stack_frame_head = fra.me.prev;
2990 return;
2991 }
2992 void OC_metamodel___inheritance___MMAncestor___add_in_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
2993 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
2994 val_t REGB0;
2995 val_t REGB1;
2996 val_t REGB2;
2997 fun_t CREG[1];
2998 val_t tmp;
2999 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3000 fra.me.file = LOCATE_metamodel___inheritance;
3001 fra.me.line = 0;
3002 fra.me.meth = LOCATE_metamodel___inheritance___MMAncestor___add_in;
3003 fra.me.has_broke = 0;
3004 fra.me.REG_size = 4;
3005 fra.me.nitni_local_ref_head = NULL;
3006 fra.me.REG[0] = NIT_NULL;
3007 fra.me.REG[1] = NIT_NULL;
3008 fra.me.REG[2] = NIT_NULL;
3009 fra.me.REG[3] = NIT_NULL;
3010 fra.me.closure_ctx = closctx_param;
3011 fra.me.closure_funs = CREG;
3012 fra.me.REG[0] = p0;
3013 CREG[0] = clos_fun0;
3014 /* metamodel/inheritance.nit:495 */
3015 fra.me.REG[0] = CALL_metamodel___static_type___MMAncestor___stype(fra.me.REG[0])(fra.me.REG[0]);
3016 fra.me.REG[1] = CALL_metamodel___static_type___MMAncestor___stype(closctx->REG[0])(closctx->REG[0]);
3017 fra.me.REG[1] = CALL_metamodel___static_type___MMType___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
3018 fra.me.REG[1] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
3019 /* metamodel/inheritance.nit:496 */
3020 fra.me.REG[0] = CALL_metamodel___static_type___MMAncestor___stype(closctx->REG[0])(closctx->REG[0]);
3021 fra.me.REG[0] = CALL_metamodel___static_type___MMType___adapt_to(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3022 fra.me.REG[1] = CALL_metamodel___static_type___MMAncestor___inheriter(closctx->REG[0])(closctx->REG[0]);
3023 fra.me.REG[1] = CALL_metamodel___static_type___MMType___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
3024 fra.me.REG[1] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
3025 /* metamodel/inheritance.nit:497 */
3026 fra.me.REG[0] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[1])(fra.me.REG[1]);
3027 fra.me.REG[2] = CALL_metamodel___static_type___MMAncestor___inheriter(closctx->REG[0])(closctx->REG[0]);
3028 fra.me.REG[2] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
3029 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[0],fra.me.REG[2]));
3030 if (UNTAG_Bool(REGB0)) {
3031 } else {
3032 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
3033 REGB0 = REGB1;
3034 }
3035 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3036 if (UNTAG_Bool(REGB0)) {
3037 /* metamodel/inheritance.nit:498 */
3038 fra.me.REG[2] = CALL_standard___collection___abstract_collection___Collection___iterator(closctx->REG[1])(closctx->REG[1]);
3039 /* metamodel/inheritance.nit:499 */
3040 REGB0 = TAG_Bool(true);
3041 /* metamodel/inheritance.nit:500 */
3042 while(1) {
3043 REGB1 = CALL_standard___collection___abstract_collection___Iterator___is_ok(fra.me.REG[2])(fra.me.REG[2]);
3044 if (UNTAG_Bool(REGB1)) {
3045 REGB1 = REGB0;
3046 } else {
3047 REGB2 = TAG_Bool(false);
3048 REGB1 = REGB2;
3049 }
3050 if (UNTAG_Bool(REGB1)) {
3051 /* metamodel/inheritance.nit:501 */
3052 fra.me.REG[0] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[2])(fra.me.REG[2]);
3053 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
3054 if (UNTAG_Bool(REGB1)) {
3055 nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 501);
3056 }
3057 fra.me.REG[0] = CALL_metamodel___static_type___MMAncestor___inheriter(fra.me.REG[0])(fra.me.REG[0]);
3058 fra.me.REG[3] = CALL_metamodel___static_type___MMAncestor___inheriter(closctx->REG[0])(closctx->REG[0]);
3059 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[0],fra.me.REG[3]));
3060 if (UNTAG_Bool(REGB1)) {
3061 } else {
3062 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
3063 REGB1 = REGB2;
3064 }
3065 if (UNTAG_Bool(REGB1)) {
3066 fra.me.REG[3] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[2])(fra.me.REG[2]);
3067 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3068 if (UNTAG_Bool(REGB1)) {
3069 nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 501);
3070 }
3071 fra.me.REG[3] = CALL_metamodel___static_type___MMAncestor___stype(fra.me.REG[3])(fra.me.REG[3]);
3072 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
3073 if (UNTAG_Bool(REGB1)) {
3074 } else {
3075 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
3076 REGB1 = REGB2;
3077 }
3078 } else {
3079 REGB2 = TAG_Bool(false);
3080 REGB1 = REGB2;
3081 }
3082 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
3083 REGB0 = REGB1;
3084 /* metamodel/inheritance.nit:502 */
3085 CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[2])(fra.me.REG[2]);
3086 } else {
3087 /* metamodel/inheritance.nit:500 */
3088 goto label2;
3089 }
3090 }
3091 label2: while(0);
3092 /* metamodel/inheritance.nit:504 */
3093 if (UNTAG_Bool(REGB0)) {
3094 /* metamodel/inheritance.nit:505 */
3095 fra.me.REG[2] = CALL_metamodel___static_type___MMAncestor___inheriter(closctx->REG[0])(closctx->REG[0]);
3096 fra.me.REG[1] = NEW_MMSpecAncestor_metamodel___inheritance___MMSpecAncestor___init(fra.me.REG[2], fra.me.REG[1]);
3097 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[1])(closctx->REG[1], fra.me.REG[1]);
3098 }
3099 }
3100 stack_frame_head = fra.me.prev;
3101 return;
3102 }
3103 void metamodel___inheritance___MMImplicitLocalClass___init(val_t p0, val_t p1, val_t p2, int* init_table){
3104 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___inheritance___MMImplicitLocalClass].i;
3105 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
3106 val_t REGB0;
3107 val_t tmp;
3108 if (init_table[itpos0]) return;
3109 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3110 fra.me.file = LOCATE_metamodel___inheritance;
3111 fra.me.line = 517;
3112 fra.me.meth = LOCATE_metamodel___inheritance___MMImplicitLocalClass___init;
3113 fra.me.has_broke = 0;
3114 fra.me.REG_size = 6;
3115 fra.me.nitni_local_ref_head = NULL;
3116 fra.me.REG[0] = NIT_NULL;
3117 fra.me.REG[1] = NIT_NULL;
3118 fra.me.REG[2] = NIT_NULL;
3119 fra.me.REG[3] = NIT_NULL;
3120 fra.me.REG[4] = NIT_NULL;
3121 fra.me.REG[5] = NIT_NULL;
3122 fra.me.REG[0] = p0;
3123 fra.me.REG[1] = p1;
3124 fra.me.REG[2] = p2;
3125 /* metamodel/inheritance.nit:517 */
3126 fra.me.REG[3] = fra.me.REG[0];
3127 /* metamodel/inheritance.nit:519 */
3128 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[2])(fra.me.REG[2]);
3129 /* metamodel/inheritance.nit:520 */
3130 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[4])(fra.me.REG[4]);
3131 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[4])(fra.me.REG[4]);
3132 CALL_metamodel___abstractmetamodel___MMLocalClass___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[5], REGB0, init_table);
3133 /* metamodel/inheritance.nit:521 */
3134 CALL_metamodel___abstractmetamodel___MMLocalClass___set_global(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
3135 stack_frame_head = fra.me.prev;
3136 init_table[itpos0] = 1;
3137 return;
3138 }
3139 val_t metamodel___inheritance___MMRefineAncestor___local_class(val_t p0){
3140 struct {struct stack_frame_t me;} fra;
3141 val_t REGB0;
3142 val_t tmp;
3143 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3144 fra.me.file = LOCATE_metamodel___inheritance;
3145 fra.me.line = 527;
3146 fra.me.meth = LOCATE_metamodel___inheritance___MMRefineAncestor___local_class;
3147 fra.me.has_broke = 0;
3148 fra.me.REG_size = 1;
3149 fra.me.nitni_local_ref_head = NULL;
3150 fra.me.REG[0] = NIT_NULL;
3151 fra.me.REG[0] = p0;
3152 /* metamodel/inheritance.nit:527 */
3153 REGB0 = TAG_Bool(ATTR_metamodel___inheritance___MMRefineAncestor____local_class(fra.me.REG[0])!=NIT_NULL);
3154 if (UNTAG_Bool(REGB0)) {
3155 } else {
3156 nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___inheritance, 527);
3157 }
3158 fra.me.REG[0] = ATTR_metamodel___inheritance___MMRefineAncestor____local_class(fra.me.REG[0]);
3159 stack_frame_head = fra.me.prev;
3160 return fra.me.REG[0];
3161 }
3162 void metamodel___inheritance___MMRefineAncestor___init(val_t p0, val_t p1, val_t p2, int* init_table){
3163 int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___inheritance___MMRefineAncestor].i;
3164 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3165 val_t REGB0;
3166 val_t tmp;
3167 if (init_table[itpos1]) return;
3168 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3169 fra.me.file = LOCATE_metamodel___inheritance;
3170 fra.me.line = 529;
3171 fra.me.meth = LOCATE_metamodel___inheritance___MMRefineAncestor___init;
3172 fra.me.has_broke = 0;
3173 fra.me.REG_size = 4;
3174 fra.me.nitni_local_ref_head = NULL;
3175 fra.me.REG[0] = NIT_NULL;
3176 fra.me.REG[1] = NIT_NULL;
3177 fra.me.REG[2] = NIT_NULL;
3178 fra.me.REG[3] = NIT_NULL;
3179 fra.me.REG[0] = p0;
3180 fra.me.REG[1] = p1;
3181 fra.me.REG[2] = p2;
3182 /* metamodel/inheritance.nit:529 */
3183 fra.me.REG[3] = fra.me.REG[0];
3184 CALL_metamodel___static_type___MMAncestor___init(fra.me.REG[0])(fra.me.REG[0], init_table);
3185 /* metamodel/inheritance.nit:531 */
3186 ATTR_metamodel___inheritance___MMRefineAncestor____local_class(fra.me.REG[3]) = fra.me.REG[2];
3187 /* metamodel/inheritance.nit:532 */
3188 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[1])(fra.me.REG[1]);
3189 CALL_metamodel___static_type___MMAncestor___inheriter__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
3190 /* metamodel/inheritance.nit:533 */
3191 REGB0 = TAG_Bool(ATTR_metamodel___inheritance___MMRefineAncestor____local_class(fra.me.REG[3])!=NIT_NULL);
3192 if (UNTAG_Bool(REGB0)) {
3193 } else {
3194 nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___inheritance, 533);
3195 }
3196 fra.me.REG[1] = ATTR_metamodel___inheritance___MMRefineAncestor____local_class(fra.me.REG[3]);
3197 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[1])(fra.me.REG[1]);
3198 CALL_metamodel___static_type___MMAncestor___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
3199 stack_frame_head = fra.me.prev;
3200 init_table[itpos1] = 1;
3201 return;
3202 }
3203 val_t metamodel___inheritance___MMSpecAncestor___local_class(val_t p0){
3204 struct {struct stack_frame_t me;} fra;
3205 val_t tmp;
3206 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3207 fra.me.file = LOCATE_metamodel___inheritance;
3208 fra.me.line = 540;
3209 fra.me.meth = LOCATE_metamodel___inheritance___MMSpecAncestor___local_class;
3210 fra.me.has_broke = 0;
3211 fra.me.REG_size = 1;
3212 fra.me.nitni_local_ref_head = NULL;
3213 fra.me.REG[0] = NIT_NULL;
3214 fra.me.REG[0] = p0;
3215 /* metamodel/inheritance.nit:540 */
3216 fra.me.REG[0] = CALL_metamodel___static_type___MMAncestor___stype(fra.me.REG[0])(fra.me.REG[0]);
3217 fra.me.REG[0] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
3218 goto label1;
3219 label1: while(0);
3220 stack_frame_head = fra.me.prev;
3221 return fra.me.REG[0];
3222 }
3223 void metamodel___inheritance___MMSpecAncestor___init(val_t p0, val_t p1, val_t p2, int* init_table){
3224 int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___inheritance___MMSpecAncestor].i;
3225 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3226 val_t tmp;
3227 if (init_table[itpos2]) return;
3228 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3229 fra.me.file = LOCATE_metamodel___inheritance;
3230 fra.me.line = 542;
3231 fra.me.meth = LOCATE_metamodel___inheritance___MMSpecAncestor___init;
3232 fra.me.has_broke = 0;
3233 fra.me.REG_size = 4;
3234 fra.me.nitni_local_ref_head = NULL;
3235 fra.me.REG[0] = NIT_NULL;
3236 fra.me.REG[1] = NIT_NULL;
3237 fra.me.REG[2] = NIT_NULL;
3238 fra.me.REG[3] = NIT_NULL;
3239 fra.me.REG[0] = p0;
3240 fra.me.REG[1] = p1;
3241 fra.me.REG[2] = p2;
3242 /* metamodel/inheritance.nit:542 */
3243 fra.me.REG[3] = fra.me.REG[0];
3244 CALL_metamodel___static_type___MMAncestor___init(fra.me.REG[0])(fra.me.REG[0], init_table);
3245 /* metamodel/inheritance.nit:544 */
3246 ATTR_metamodel___static_type___MMAncestor____inheriter(fra.me.REG[3]) = fra.me.REG[1];
3247 /* metamodel/inheritance.nit:545 */
3248 ATTR_metamodel___static_type___MMAncestor____stype(fra.me.REG[3]) = fra.me.REG[2];
3249 stack_frame_head = fra.me.prev;
3250 init_table[itpos2] = 1;
3251 return;
3252 }
3253 val_t metamodel___inheritance___MMDefaultAncestor___local_class(val_t p0){
3254 struct {struct stack_frame_t me;} fra;
3255 val_t tmp;
3256 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3257 fra.me.file = LOCATE_metamodel___inheritance;
3258 fra.me.line = 551;
3259 fra.me.meth = LOCATE_metamodel___inheritance___MMDefaultAncestor___local_class;
3260 fra.me.has_broke = 0;
3261 fra.me.REG_size = 1;
3262 fra.me.nitni_local_ref_head = NULL;
3263 fra.me.REG[0] = NIT_NULL;
3264 fra.me.REG[0] = p0;
3265 /* metamodel/inheritance.nit:551 */
3266 fra.me.REG[0] = CALL_metamodel___static_type___MMAncestor___stype(fra.me.REG[0])(fra.me.REG[0]);
3267 fra.me.REG[0] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
3268 goto label1;
3269 label1: while(0);
3270 stack_frame_head = fra.me.prev;
3271 return fra.me.REG[0];
3272 }
3273 void metamodel___inheritance___MMDefaultAncestor___init(val_t p0, val_t p1, val_t p2, int* init_table){
3274 int itpos3 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___inheritance___MMDefaultAncestor].i;
3275 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3276 val_t tmp;
3277 if (init_table[itpos3]) return;
3278 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3279 fra.me.file = LOCATE_metamodel___inheritance;
3280 fra.me.line = 553;
3281 fra.me.meth = LOCATE_metamodel___inheritance___MMDefaultAncestor___init;
3282 fra.me.has_broke = 0;
3283 fra.me.REG_size = 4;
3284 fra.me.nitni_local_ref_head = NULL;
3285 fra.me.REG[0] = NIT_NULL;
3286 fra.me.REG[1] = NIT_NULL;
3287 fra.me.REG[2] = NIT_NULL;
3288 fra.me.REG[3] = NIT_NULL;
3289 fra.me.REG[0] = p0;
3290 fra.me.REG[1] = p1;
3291 fra.me.REG[2] = p2;
3292 /* metamodel/inheritance.nit:553 */
3293 fra.me.REG[3] = fra.me.REG[0];
3294 CALL_metamodel___static_type___MMAncestor___init(fra.me.REG[0])(fra.me.REG[0], init_table);
3295 /* metamodel/inheritance.nit:555 */
3296 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[1])(fra.me.REG[1]);
3297 CALL_metamodel___static_type___MMAncestor___inheriter__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
3298 /* metamodel/inheritance.nit:556 */
3299 CALL_metamodel___static_type___MMAncestor___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
3300 stack_frame_head = fra.me.prev;
3301 init_table[itpos3] = 1;
3302 return;
3303 }