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