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