Fix 64 bits: use long int in class tables
[nit.git] / c_src / inheritance._sep.c
1 /* This C file is generated by NIT to compile module inheritance. */
2 #include "inheritance._sep.h"
3 val_t inheritance___MMModule___type_any(val_t self) {
4 struct trace_t trace = {NULL, LOCATE_inheritance___MMModule___type_any, 24};
5 val_t variable0;
6 val_t variable1;
7 static val_t once_value_variable1_1; static int once_bool_variable1_1;
8 trace.prev = tracehead; tracehead = &trace;
9 if (once_bool_variable1_1) variable1 = once_value_variable1_1;
10 else {
11 variable1 = NEW_string___String___with_native(BOX_NativeString("Object"), TAG_Int(6)); /*new String*/
12 variable1 = ((symbol___String___to_symbol_t)CALL(variable1,COLOR_symbol___String___to_symbol))(variable1) /*String::to_symbol*/;
13 once_value_variable1_1 = variable1;
14 once_bool_variable1_1 = true;
15 }
16 variable1 = ((abstractmetamodel___MMModule___class_by_name_t)CALL( self,COLOR_abstractmetamodel___MMModule___class_by_name))( self, variable1) /*MMModule::class_by_name*/;
17 variable0 = variable1;
18 variable1 = ((static_type___MMLocalClass___get_type_t)CALL( variable0 /*c_name*/,COLOR_static_type___MMLocalClass___get_type))( variable0 /*c_name*/) /*MMLocalClass::get_type*/;
19 variable0 = variable1;
20 goto return_label0;
21 return_label0: while(false);
22 tracehead = trace.prev;
23 return variable0;
24 }
25 void inheritance___MMModule___import_global_classes(val_t self) {
26 struct trace_t trace = {NULL, LOCATE_inheritance___MMModule___import_global_classes, 31};
27 val_t variable0;
28 val_t variable1;
29 val_t variable2;
30 val_t variable3;
31 val_t variable4;
32 val_t variable5;
33 val_t variable6;
34 trace.prev = tracehead; tracehead = &trace;
35 variable1 = NEW_hash___HashMap___init(); /*new HashMap[MMGlobalClass, HashSet[MMLocalClass]]*/
36 variable0 = variable1;
37 variable1 = ((abstractmetamodel___MMModule___mhe_t)CALL( self,COLOR_abstractmetamodel___MMModule___mhe))( self) /*MMModule::mhe*/;
38 variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 == NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1, NIT_NULL /*null*/) /*PartialOrderElement::==*/)))))));
39 if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_inheritance___MMModule___import_global_classes, 35); nit_exit(1);}
40 variable1 = ((abstractmetamodel___MMModule___mhe_t)CALL( self,COLOR_abstractmetamodel___MMModule___mhe))( self) /*MMModule::mhe*/;
41 variable1 = ((partial_order___PartialOrderElement___direct_greaters_t)CALL(variable1,COLOR_partial_order___PartialOrderElement___direct_greaters))(variable1) /*PartialOrderElement::direct_greaters*/;
42 variable1 = ((array___AbstractArray___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*Array::iterator*/;
43 while (true) { /*for*/
44 variable2 = ((array___ArrayIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ArrayIterator::is_ok*/;
45 if (!UNTAG_Bool(variable2)) break; /*for*/
46 variable2 = ((array___ArrayIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ArrayIterator::item*/;
47 variable3 = ((abstractmetamodel___MMModule___global_classes_t)CALL( variable2 /*mod*/,COLOR_abstractmetamodel___MMModule___global_classes))( variable2 /*mod*/) /*MMModule::global_classes*/;
48 variable3 = ((array___AbstractArray___iterator_t)CALL(variable3,COLOR_abstract_collection___Collection___iterator))(variable3) /*Array::iterator*/;
49 while (true) { /*for*/
50 variable4 = ((array___ArrayIterator___is_ok_t)CALL(variable3,COLOR_abstract_collection___Iterator___is_ok))(variable3) /*ArrayIterator::is_ok*/;
51 if (!UNTAG_Bool(variable4)) break; /*for*/
52 variable4 = ((array___ArrayIterator___item_t)CALL(variable3,COLOR_abstract_collection___Iterator___item))(variable3) /*ArrayIterator::item*/;
53 variable5 = ((abstractmetamodel___MMModule___global_classes_t)CALL( self,COLOR_abstractmetamodel___MMModule___global_classes))( self) /*MMModule::global_classes*/;
54 variable5 = ((array___AbstractArray___has_t)CALL(variable5,COLOR_abstract_collection___Collection___has))(variable5, variable4 /*glob*/) /*Array::has*/;
55 if (UNTAG_Bool(variable5)) { /*if*/
56 goto continue_4;
57 }
58 variable5 = ATTR_abstractmetamodel___MMModule____global_classes( self) /*MMModule::_global_classes*/;
59 ((array___AbstractArray___add_t)CALL(variable5,COLOR_abstract_collection___SimpleCollection___add))(variable5, variable4 /*glob*/) /*Array::add*/;
60 variable5 = ATTR_abstractmetamodel___MMModule____global_class_by_name( self) /*MMModule::_global_class_by_name*/;
61 variable6 = ((abstractmetamodel___MMGlobalClass___name_t)CALL( variable4 /*glob*/,COLOR_abstractmetamodel___MMGlobalClass___name))( variable4 /*glob*/) /*MMGlobalClass::name*/;
62 ((abstract_collection___Map_____braeq_t)CALL(variable5,COLOR_abstract_collection___Map_____braeq))(variable5, variable6, variable4 /*glob*/) /*Map::[]=*/;
63 continue_4: while(0);
64 ((array___ArrayIterator___next_t)CALL(variable3,COLOR_abstract_collection___Iterator___next))(variable3) /*ArrayIterator::next*/;
65 }
66 break_4: while(0);
67 continue_3: while(0);
68 ((array___ArrayIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ArrayIterator::next*/;
69 }
70 break_3: while(0);
71 tracehead = trace.prev;
72 return;
73 }
74 void inheritance___MMModule___import_local_classes(val_t self) {
75 struct trace_t trace = {NULL, LOCATE_inheritance___MMModule___import_local_classes, 46};
76 val_t variable0;
77 val_t variable1;
78 val_t variable2;
79 val_t variable3;
80 trace.prev = tracehead; tracehead = &trace;
81 variable0 = ATTR_abstractmetamodel___MMModule____global_classes( self) /*MMModule::_global_classes*/;
82 variable0 = ((array___AbstractArray___iterator_t)CALL(variable0,COLOR_abstract_collection___Collection___iterator))(variable0) /*Array::iterator*/;
83 while (true) { /*for*/
84 variable1 = ((array___ArrayIterator___is_ok_t)CALL(variable0,COLOR_abstract_collection___Iterator___is_ok))(variable0) /*ArrayIterator::is_ok*/;
85 if (!UNTAG_Bool(variable1)) break; /*for*/
86 variable1 = ((array___ArrayIterator___item_t)CALL(variable0,COLOR_abstract_collection___Iterator___item))(variable0) /*ArrayIterator::item*/;
87 variable2 = ((abstractmetamodel___MMModule_____bra_t)CALL( self,COLOR_abstractmetamodel___MMModule_____bra))( self, variable1 /*g*/) /*MMModule::[]*/;
88 variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable2 == NIT_NULL /*null*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2, NIT_NULL /*null*/) /*MMLocalClass::==*/)))))));
89 if (UNTAG_Bool(variable2)) { /*if*/
90 goto continue_6;
91 }
92 variable3 = NEW_inheritance___MMImplicitLocalClass___init( self, variable1 /*g*/); /*new MMImplicitLocalClass*/
93 variable2 = variable3;
94 continue_6: while(0);
95 ((array___ArrayIterator___next_t)CALL(variable0,COLOR_abstract_collection___Iterator___next))(variable0) /*ArrayIterator::next*/;
96 }
97 break_6: while(0);
98 tracehead = trace.prev;
99 return;
100 }
101 void inheritance___MMLocalClass___compute_super_classes(val_t self) {
102 struct trace_t trace = {NULL, LOCATE_inheritance___MMLocalClass___compute_super_classes, 64};
103 val_t variable0;
104 val_t variable1;
105 val_t variable2;
106 val_t variable3;
107 val_t variable4;
108 val_t variable5;
109 val_t variable6;
110 trace.prev = tracehead; tracehead = &trace;
111 variable0 = ((inheritance___MMLocalClass___computed_super_classes_t)CALL( self,COLOR_inheritance___MMLocalClass___computed_super_classes))( self) /*MMLocalClass::computed_super_classes*/;
112 if (UNTAG_Bool(variable0)) { /*if*/
113 goto return_label7;
114 } else { /*if*/
115 variable0 = ATTR_inheritance___MMLocalClass____computing_super( self) /*MMLocalClass::_computing_super*/;
116 if (UNTAG_Bool(variable0)) { /*if*/
117 variable0 = ((file___Object___stderr_t)CALL( self,COLOR_file___Object___stderr))( self) /*MMLocalClass::stderr*/;
118 variable1 = NEW_string___String___init(); /*new String*/
119 variable2 = NEW_string___String___with_native(BOX_NativeString("Fatal error: Inheritance loop for class "), TAG_Int(40)); /*new String*/
120 variable3 = variable2;
121 ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable3) /*String::append*/;
122 variable4 = self;
123 variable4 = ((string___String___to_s_t)CALL(variable4,COLOR_string___Object___to_s))(variable4) /*String::to_s*/;
124 ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable4) /*String::append*/;
125 variable5 = NEW_string___String___with_native(BOX_NativeString("\n"), TAG_Int(1)); /*new String*/
126 variable6 = variable5;
127 ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable6) /*String::append*/;
128 ((file___OFStream___write_t)CALL(variable0,COLOR_stream___OStream___write))(variable0, variable1) /*OFStream::write*/;
129 exit(UNTAG_Int( TAG_Int(1)));
130 }
131 }
132 ATTR_inheritance___MMLocalClass____computing_super( self) /*MMLocalClass::_computing_super*/ = TAG_Bool(true);
133 variable1 = NEW_array___Array___init(); /*new Array[MMLocalClass]*/
134 variable0 = variable1;
135 ((inheritance___MMLocalClass___add_explicit_classes_t)CALL( self,COLOR_inheritance___MMLocalClass___add_explicit_classes))( self, variable0 /*supers*/) /*MMLocalClass::add_explicit_classes*/;
136 ((inheritance___MMLocalClass___add_super_classes_t)CALL( self,COLOR_inheritance___MMLocalClass___add_super_classes))( self, variable0 /*supers*/) /*MMLocalClass::add_super_classes*/;
137 ((inheritance___MMLocalClass___add_default_any_class_t)CALL( self,COLOR_inheritance___MMLocalClass___add_default_any_class))( self, variable0 /*supers*/) /*MMLocalClass::add_default_any_class*/;
138 ((inheritance___MMLocalClass___compute_super_parents_t)CALL( self,COLOR_inheritance___MMLocalClass___compute_super_parents))( self, variable0 /*supers*/) /*MMLocalClass::compute_super_parents*/;
139 variable2 = NEW_hash___HashSet___init(); /*new HashSet[MMLocalClass]*/
140 variable1 = variable2;
141 ((abstract_collection___SimpleCollection___add_all_t)CALL( variable1 /*set*/,COLOR_abstract_collection___SimpleCollection___add_all))( variable1 /*set*/, variable0 /*supers*/) /*HashSet::add_all*/;
142 variable3 = ((array___Collection___to_a_t)CALL( variable1 /*set*/,COLOR_array___Collection___to_a))( variable1 /*set*/) /*HashSet::to_a*/;
143 variable2 = variable3;
144 variable3 = ((abstractmetamodel___MMLocalClass___module_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___module))( self) /*MMLocalClass::module*/;
145 ((abstractmetamodel___MMModule___set_supers_class_t)CALL(variable3,COLOR_abstractmetamodel___MMModule___set_supers_class))(variable3, self, variable2 /*u*/) /*MMModule::set_supers_class*/;
146 variable3 = ATTR_abstractmetamodel___MMLocalClass____crhe( self) /*MMLocalClass::_crhe*/;
147 variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable3 == NIT_NULL /*null*/) || ((variable3 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable3, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))(variable3, NIT_NULL /*null*/) /*PartialOrderElement::==*/)))))));
148 if (!UNTAG_Bool(variable3)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_inheritance___MMLocalClass___compute_super_classes, 85); nit_exit(1);}
149 variable3 = ATTR_abstractmetamodel___MMLocalClass____cshe( self) /*MMLocalClass::_cshe*/;
150 variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable3 == NIT_NULL /*null*/) || ((variable3 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable3, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))(variable3, NIT_NULL /*null*/) /*PartialOrderElement::==*/)))))));
151 if (!UNTAG_Bool(variable3)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_inheritance___MMLocalClass___compute_super_classes, 86); nit_exit(1);}
152 ATTR_inheritance___MMLocalClass____computing_super( self) /*MMLocalClass::_computing_super*/ = TAG_Bool(false);
153 return_label7: while(false);
154 tracehead = trace.prev;
155 return;
156 }
157 void inheritance___MMLocalClass___compute_ancestors(val_t self) {
158 struct trace_t trace = {NULL, LOCATE_inheritance___MMLocalClass___compute_ancestors, 90};
159 val_t variable0;
160 val_t variable1;
161 val_t variable2;
162 val_t variable3;
163 val_t variable4;
164 trace.prev = tracehead; tracehead = &trace;
165 variable0 = ((inheritance___MMLocalClass___computed_super_classes_t)CALL( self,COLOR_inheritance___MMLocalClass___computed_super_classes))( self) /*MMLocalClass::computed_super_classes*/;
166 if (!UNTAG_Bool(variable0)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_inheritance___MMLocalClass___compute_ancestors, 93); nit_exit(1);}
167 variable0 = ((inheritance___MMLocalClass___computed_ancestors_t)CALL( self,COLOR_inheritance___MMLocalClass___computed_ancestors))( self) /*MMLocalClass::computed_ancestors*/;
168 if (UNTAG_Bool(variable0)) { /*if*/
169 goto return_label8;
170 }
171 variable1 = ((inheritance___MMLocalClass___build_ancestors_t)CALL( self,COLOR_inheritance___MMLocalClass___build_ancestors))( self) /*MMLocalClass::build_ancestors*/;
172 variable1 = ((inheritance___MMLocalClass___group_ancestors_t)CALL( self,COLOR_inheritance___MMLocalClass___group_ancestors))( self, variable1) /*MMLocalClass::group_ancestors*/;
173 variable0 = variable1;
174 variable1 = NEW_hash___HashMap___init(); /*new HashMap[MMLocalClass, MMAncestor]*/
175 ATTR_static_type___MMLocalClass____ancestors( self) /*MMLocalClass::_ancestors*/ = variable1;
176 variable1 = ((abstract_collection___Map___iterator_t)CALL( variable0 /*ancestors*/,COLOR_abstract_collection___Collection___iterator))( variable0 /*ancestors*/) /*Map::iterator*/;
177 while (true) { /*for*/
178 variable2 = ((abstract_collection___Iterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*MapIterator::is_ok*/;
179 if (!UNTAG_Bool(variable2)) break; /*for*/
180 variable2 = ((abstract_collection___Iterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*MapIterator::item*/;
181 variable3 = ((abstract_collection___Collection___length_t)CALL( variable2 /*set*/,COLOR_abstract_collection___Collection___length))( variable2 /*set*/) /*Set::length*/;
182 variable3 = TAG_Bool((variable3)==( TAG_Int(1)));
183 if (UNTAG_Bool(variable3)) { /*if*/
184 variable3 = ((abstract_collection___Collection___first_t)CALL( variable2 /*set*/,COLOR_abstract_collection___Collection___first))( variable2 /*set*/) /*Set::first*/;
185 ((static_type___MMLocalClass___add_ancestor_t)CALL( self,COLOR_static_type___MMLocalClass___add_ancestor))( self, variable3) /*MMLocalClass::add_ancestor*/;
186 } else { /*if*/
187 variable4 = ((inheritance___MMLocalClass___merge_ancestors_t)CALL( self,COLOR_inheritance___MMLocalClass___merge_ancestors))( self, variable2 /*set*/) /*MMLocalClass::merge_ancestors*/;
188 variable3 = variable4;
189 variable4 = ((inheritance___MMLocalClass___merge_ancestors_t)CALL( self,COLOR_inheritance___MMLocalClass___merge_ancestors))( self, variable2 /*set*/) /*MMLocalClass::merge_ancestors*/;
190 ((static_type___MMLocalClass___add_ancestor_t)CALL( self,COLOR_static_type___MMLocalClass___add_ancestor))( self, variable4) /*MMLocalClass::add_ancestor*/;
191 }
192 continue_9: while(0);
193 ((abstract_collection___Iterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*MapIterator::next*/;
194 }
195 break_9: while(0);
196 return_label8: while(false);
197 tracehead = trace.prev;
198 return;
199 }
200 void inheritance___MMLocalClass___inherit_global_properties(val_t self) {
201 struct trace_t trace = {NULL, LOCATE_inheritance___MMLocalClass___inherit_global_properties, 109};
202 val_t variable0;
203 val_t variable1;
204 val_t variable2;
205 val_t variable3;
206 val_t variable4;
207 val_t variable5;
208 val_t variable6;
209 val_t variable7;
210 val_t variable8;
211 trace.prev = tracehead; tracehead = &trace;
212 variable0 = ATTR_abstractmetamodel___MMLocalClass____global_properties( self) /*MMLocalClass::_global_properties*/;
213 variable0 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable0 == NIT_NULL /*null*/) || ((variable0 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable0,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable0, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable0,COLOR_kernel___Object_____eqeq))(variable0, NIT_NULL /*null*/) /*Set::==*/)))))));
214 if (UNTAG_Bool(variable0)) { /*if*/
215 goto return_label10;
216 }
217 variable0 = NEW_hash___HashSet___init(); /*new HashSet[MMGlobalProperty]*/
218 ATTR_abstractmetamodel___MMLocalClass____global_properties( self) /*MMLocalClass::_global_properties*/ = variable0;
219 variable0 = NEW_hash___HashMap___init(); /*new HashMap[Symbol, Array[MMGlobalProperty]]*/
220 ATTR_abstractmetamodel___MMLocalClass____properties_by_name( self) /*MMLocalClass::_properties_by_name*/ = variable0;
221 variable0 = NEW_hash___HashMap___init(); /*new HashMap[MMGlobalProperty, MMLocalProperty]*/
222 ATTR_abstractmetamodel___MMLocalClass____local_property_by_global( self) /*MMLocalClass::_local_property_by_global*/ = variable0;
223 variable1 = ATTR_abstractmetamodel___MMLocalClass____properties_by_name( self) /*MMLocalClass::_properties_by_name*/;
224 variable0 = variable1;
225 variable2 = ATTR_abstractmetamodel___MMLocalClass____global_properties( self) /*MMLocalClass::_global_properties*/;
226 variable1 = variable2;
227 variable2 = ((abstractmetamodel___MMLocalClass___che_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___che))( self) /*MMLocalClass::che*/;
228 variable2 = ((partial_order___PartialOrderElement___direct_greaters_t)CALL(variable2,COLOR_partial_order___PartialOrderElement___direct_greaters))(variable2) /*PartialOrderElement::direct_greaters*/;
229 variable2 = ((array___AbstractArray___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Array::iterator*/;
230 while (true) { /*for*/
231 variable3 = ((array___ArrayIterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*ArrayIterator::is_ok*/;
232 if (!UNTAG_Bool(variable3)) break; /*for*/
233 variable3 = ((array___ArrayIterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*ArrayIterator::item*/;
234 variable4 = ((abstractmetamodel___MMLocalClass___global_properties_t)CALL( variable3 /*c*/,COLOR_abstractmetamodel___MMLocalClass___global_properties))( variable3 /*c*/) /*MMLocalClass::global_properties*/;
235 variable4 = ((abstract_collection___Collection___iterator_t)CALL(variable4,COLOR_abstract_collection___Collection___iterator))(variable4) /*Set::iterator*/;
236 while (true) { /*for*/
237 variable5 = ((abstract_collection___Iterator___is_ok_t)CALL(variable4,COLOR_abstract_collection___Iterator___is_ok))(variable4) /*Iterator::is_ok*/;
238 if (!UNTAG_Bool(variable5)) break; /*for*/
239 variable5 = ((abstract_collection___Iterator___item_t)CALL(variable4,COLOR_abstract_collection___Iterator___item))(variable4) /*Iterator::item*/;
240 variable6 = ((abstract_collection___Collection___has_t)CALL( variable1 /*set*/,COLOR_abstract_collection___Collection___has))( variable1 /*set*/, variable5 /*glob*/) /*Set::has*/;
241 if (UNTAG_Bool(variable6)) { /*if*/
242 goto continue_12;
243 }
244 ((abstract_collection___SimpleCollection___add_t)CALL( variable1 /*set*/,COLOR_abstract_collection___SimpleCollection___add))( variable1 /*set*/, variable5 /*glob*/) /*Set::add*/;
245 variable6 = ((abstractmetamodel___MMGlobalProperty___is_init_t)CALL( variable5 /*glob*/,COLOR_abstractmetamodel___MMGlobalProperty___is_init))( variable5 /*glob*/) /*MMGlobalProperty::is_init*/;
246 variable7 = variable6;
247 if (UNTAG_Bool(variable7)) { /* and */
248 variable7 = ((abstractmetamodel___MMGlobalProperty___intro_t)CALL( variable5 /*glob*/,COLOR_abstractmetamodel___MMGlobalProperty___intro))( variable5 /*glob*/) /*MMGlobalProperty::intro*/;
249 variable7 = ((abstractmetamodel___MMLocalProperty___local_class_t)CALL(variable7,COLOR_abstractmetamodel___MMLocalProperty___local_class))(variable7) /*MMConcreteProperty::local_class*/;
250 variable7 = ((abstractmetamodel___MMLocalClass___global_t)CALL(variable7,COLOR_abstractmetamodel___MMLocalClass___global))(variable7) /*MMLocalClass::global*/;
251 variable8 = ((abstractmetamodel___MMLocalClass___global_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___global))( self) /*MMLocalClass::global*/;
252 variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable7 == variable8) || ((variable7 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable7,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable7,variable8)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable7,COLOR_kernel___Object_____eqeq))(variable7, variable8) /*MMGlobalClass::==*/)))))));
253 }
254 variable6 = variable7;
255 if (UNTAG_Bool(variable6)) { /*if*/
256 goto continue_12;
257 }
258 variable7 = ((abstractmetamodel___MMGlobalProperty___intro_t)CALL( variable5 /*glob*/,COLOR_abstractmetamodel___MMGlobalProperty___intro))( variable5 /*glob*/) /*MMGlobalProperty::intro*/;
259 variable7 = ((abstractmetamodel___MMLocalProperty___name_t)CALL(variable7,COLOR_abstractmetamodel___MMLocalProperty___name))(variable7) /*MMConcreteProperty::name*/;
260 variable6 = variable7;
261 variable7 = NIT_NULL /*decl variable conf_set*/;
262 variable8 = ((abstract_collection___Map___has_key_t)CALL( variable0 /*names*/,COLOR_abstract_collection___Map___has_key))( variable0 /*names*/, variable6 /*gname*/) /*Map::has_key*/;
263 if (UNTAG_Bool(variable8)) { /*if*/
264 variable8 = ((abstract_collection___Map_____bra_t)CALL( variable0 /*names*/,COLOR_abstract_collection___Map_____bra))( variable0 /*names*/, variable6 /*gname*/) /*Map::[]*/;
265 variable7 = variable8 /*conf_set=*/;
266 } else { /*if*/
267 variable8 = NEW_array___Array___init(); /*new Array[MMGlobalProperty]*/
268 variable7 = variable8 /*conf_set=*/;
269 ((abstract_collection___Map_____braeq_t)CALL( variable0 /*names*/,COLOR_abstract_collection___Map_____braeq))( variable0 /*names*/, variable6 /*gname*/, variable7 /*conf_set*/) /*Map::[]=*/;
270 }
271 ((array___AbstractArray___add_t)CALL( variable7 /*conf_set*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*conf_set*/, variable5 /*glob*/) /*Array::add*/;
272 continue_12: while(0);
273 ((abstract_collection___Iterator___next_t)CALL(variable4,COLOR_abstract_collection___Iterator___next))(variable4) /*Iterator::next*/;
274 }
275 break_12: while(0);
276 continue_11: while(0);
277 ((array___ArrayIterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*ArrayIterator::next*/;
278 }
279 break_11: while(0);
280 return_label10: while(false);
281 tracehead = trace.prev;
282 return;
283 }
284 void inheritance___MMLocalClass___add_direct_parent(val_t self, val_t param0) {
285 struct trace_t trace = {NULL, LOCATE_inheritance___MMLocalClass___add_direct_parent, 146};
286 val_t variable0;
287 val_t variable1;
288 trace.prev = tracehead; tracehead = &trace;
289 variable0 = param0;
290 variable1 = ATTR_inheritance___MMLocalClass____direct_parents( self) /*MMLocalClass::_direct_parents*/;
291 ((array___AbstractArray___add_t)CALL(variable1,COLOR_abstract_collection___SimpleCollection___add))(variable1, variable0 /*p*/) /*Array::add*/;
292 tracehead = trace.prev;
293 return;
294 }
295 val_t inheritance___MMLocalClass___computed_super_classes(val_t self) {
296 struct trace_t trace = {NULL, LOCATE_inheritance___MMLocalClass___computed_super_classes, 152};
297 val_t variable0;
298 val_t variable1;
299 trace.prev = tracehead; tracehead = &trace;
300 variable0 = ATTR_abstractmetamodel___MMLocalClass____crhe( self) /*MMLocalClass::_crhe*/;
301 variable0 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable0 == NIT_NULL /*null*/) || ((variable0 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable0,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable0, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable0,COLOR_kernel___Object_____eqeq))(variable0, NIT_NULL /*null*/) /*PartialOrderElement::==*/)))))));
302 variable1 = variable0;
303 if (UNTAG_Bool(variable1)) { /* and */
304 variable1 = ATTR_abstractmetamodel___MMLocalClass____cshe( self) /*MMLocalClass::_cshe*/;
305 variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 == NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1, NIT_NULL /*null*/) /*PartialOrderElement::==*/)))))));
306 }
307 variable0 = variable1;
308 goto return_label14;
309 return_label14: while(false);
310 tracehead = trace.prev;
311 return variable0;
312 }
313 val_t inheritance___MMLocalClass___computed_ancestors(val_t self) {
314 struct trace_t trace = {NULL, LOCATE_inheritance___MMLocalClass___computed_ancestors, 158};
315 val_t variable0;
316 trace.prev = tracehead; tracehead = &trace;
317 variable0 = ATTR_static_type___MMLocalClass____ancestors( self) /*MMLocalClass::_ancestors*/;
318 variable0 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable0 == NIT_NULL /*null*/) || ((variable0 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable0,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable0, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable0,COLOR_kernel___Object_____eqeq))(variable0, NIT_NULL /*null*/) /*Map::==*/)))))));
319 goto return_label15;
320 return_label15: while(false);
321 tracehead = trace.prev;
322 return variable0;
323 }
324 val_t inheritance___MMLocalClass___ancestor_for(val_t self, val_t param0) {
325 struct trace_t trace = {NULL, LOCATE_inheritance___MMLocalClass___ancestor_for, 164};
326 val_t variable0;
327 val_t variable1;
328 val_t variable2;
329 val_t variable3;
330 val_t variable4;
331 val_t variable5;
332 trace.prev = tracehead; tracehead = &trace;
333 variable0 = param0;
334 variable1 = ((static_type___MMLocalClass___ancestors_t)CALL( self,COLOR_static_type___MMLocalClass___ancestors))( self) /*MMLocalClass::ancestors*/;
335 variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 == NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1, NIT_NULL /*null*/) /*Map::==*/)))))));
336 if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_inheritance___MMLocalClass___ancestor_for, 168); nit_exit(1);}
337 variable1 = ATTR_static_type___MMLocalClass____ancestors( self) /*MMLocalClass::_ancestors*/;
338 variable1 = ((abstract_collection___Map___has_key_t)CALL(variable1,COLOR_abstract_collection___Map___has_key))(variable1, variable0 /*c*/) /*Map::has_key*/;
339 if (UNTAG_Bool(variable1)) { /*if*/
340 variable1 = ATTR_static_type___MMLocalClass____ancestors( self) /*MMLocalClass::_ancestors*/;
341 variable1 = ((abstract_collection___Map_____bra_t)CALL(variable1,COLOR_abstract_collection___Map_____bra))(variable1, variable0 /*c*/) /*Map::[]*/;
342 goto return_label16;
343 }
344 variable2 = ((abstractmetamodel___MMLocalClass___module_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___module))( self) /*MMLocalClass::module*/;
345 variable2 = ((abstractmetamodel___MMLocalClass___for_module_t)CALL( variable0 /*c*/,COLOR_abstractmetamodel___MMLocalClass___for_module))( variable0 /*c*/, variable2) /*MMLocalClass::for_module*/;
346 variable1 = variable2;
347 variable2 = ((abstractmetamodel___MMLocalClass___cshe_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___cshe))( self) /*MMLocalClass::cshe*/;
348 variable2 = ((partial_order___PartialOrderElement_____leq_t)CALL(variable2,COLOR_partial_order___PartialOrderElement_____leq))(variable2, variable1 /*a*/) /*PartialOrderElement::<=*/;
349 if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_inheritance___MMLocalClass___ancestor_for, 174); nit_exit(1);}
350 variable2 = NIT_NULL /*decl variable ra*/;
351 variable3 = ATTR_static_type___MMLocalClass____ancestors( self) /*MMLocalClass::_ancestors*/;
352 variable3 = ((abstract_collection___Map___has_key_t)CALL(variable3,COLOR_abstract_collection___Map___has_key))(variable3, variable1 /*a*/) /*Map::has_key*/;
353 if (UNTAG_Bool(variable3)) { /*if*/
354 variable3 = ATTR_static_type___MMLocalClass____ancestors( self) /*MMLocalClass::_ancestors*/;
355 variable3 = ((abstract_collection___Map_____bra_t)CALL(variable3,COLOR_abstract_collection___Map_____bra))(variable3, variable1 /*a*/) /*Map::[]*/;
356 variable2 = variable3 /*ra=*/;
357 } else { /*if*/
358 variable3 = ((abstractmetamodel___MMLocalClass___global_t)CALL( variable0 /*c*/,COLOR_abstractmetamodel___MMLocalClass___global))( variable0 /*c*/) /*MMLocalClass::global*/;
359 variable4 = ATTR_abstractmetamodel___MMLocalClass____global( self) /*MMLocalClass::_global*/;
360 variable3 = TAG_Bool((variable3 == variable4) || ((variable3 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable3,variable4)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))(variable3, variable4) /*MMGlobalClass::==*/)))));
361 if (UNTAG_Bool(variable3)) { /*if*/
362 variable3 = NEW_inheritance___MMRefineAncestor___init( self, variable0 /*c*/); /*new MMRefineAncestor*/
363 variable2 = variable3 /*ra=*/;
364 } else { /*if*/
365 variable3 = ((static_type___MMLocalClass___get_type_t)CALL( self,COLOR_static_type___MMLocalClass___get_type))( self) /*MMLocalClass::get_type*/;
366 variable4 = ((static_type___MMLocalClass___get_type_t)CALL( variable0 /*c*/,COLOR_static_type___MMLocalClass___get_type))( variable0 /*c*/) /*MMLocalClass::get_type*/;
367 variable5 = NEW_inheritance___MMSpecAncestor___init(variable3, variable4); /*new MMSpecAncestor*/
368 variable3 = variable5;
369 variable2 = variable3 /*ra=*/;
370 }
371 }
372 variable3 = ATTR_static_type___MMLocalClass____ancestors( self) /*MMLocalClass::_ancestors*/;
373 ((abstract_collection___Map_____braeq_t)CALL(variable3,COLOR_abstract_collection___Map_____braeq))(variable3, variable0 /*c*/, variable2 /*ra*/) /*Map::[]=*/;
374 variable1 = variable2 /*ra*/;
375 goto return_label16;
376 return_label16: while(false);
377 tracehead = trace.prev;
378 return variable1;
379 }
380 val_t inheritance___MMLocalClass_____bra(val_t self, val_t param0) {
381 struct trace_t trace = {NULL, LOCATE_inheritance___MMLocalClass_____bra, 187};
382 val_t variable0;
383 val_t variable1;
384 val_t variable2;
385 val_t variable3;
386 trace.prev = tracehead; tracehead = &trace;
387 variable0 = param0;
388 variable2 = ((inheritance___MMLocalClass_____bra_t)CALL( self,COLOR_SUPER_inheritance___MMLocalClass_____bra))( self, variable0 /*glob*/) /*super MMLocalClass::[]*/;
389 variable1 = variable2;
390 variable2 = TAG_Bool(( variable1 /*prop*/ == NIT_NULL /*null*/) || (( variable1 /*prop*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*prop*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*prop*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*prop*/,COLOR_kernel___Object_____eqeq))( variable1 /*prop*/, NIT_NULL /*null*/) /*MMLocalProperty::==*/)))));
391 variable3 = variable2;
392 if (UNTAG_Bool(variable3)) { /* and */
393 variable3 = ATTR_abstractmetamodel___MMLocalClass____global_properties( self) /*MMLocalClass::_global_properties*/;
394 variable3 = ((abstract_collection___Collection___has_t)CALL(variable3,COLOR_abstract_collection___Collection___has))(variable3, variable0 /*glob*/) /*Set::has*/;
395 }
396 variable2 = variable3;
397 if (UNTAG_Bool(variable2)) { /*if*/
398 variable2 = ((inheritance___MMLocalClass___inherit_local_property_t)CALL( self,COLOR_inheritance___MMLocalClass___inherit_local_property))( self, variable0 /*glob*/) /*MMLocalClass::inherit_local_property*/;
399 variable1 = variable2 /*prop=*/;
400 }
401 variable1 = variable1 /*prop*/;
402 goto return_label17;
403 return_label17: while(false);
404 tracehead = trace.prev;
405 return variable1;
406 }
407 void inheritance___MMLocalClass___add_default_any_class(val_t self, val_t param0) {
408 struct trace_t trace = {NULL, LOCATE_inheritance___MMLocalClass___add_default_any_class, 196};
409 val_t variable0;
410 val_t variable1;
411 val_t variable2;
412 val_t variable3;
413 static val_t once_value_variable3_19; static int once_bool_variable3_19;
414 trace.prev = tracehead; tracehead = &trace;
415 variable0 = param0;
416 variable1 = ((array___AbstractArray___is_empty_t)CALL( variable0 /*supers*/,COLOR_abstract_collection___Collection___is_empty))( variable0 /*supers*/) /*Array::is_empty*/;
417 variable2 = variable1;
418 if (UNTAG_Bool(variable2)) { /* and */
419 variable2 = ((abstractmetamodel___MMLocalClass___name_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___name))( self) /*MMLocalClass::name*/;
420 if (once_bool_variable3_19) variable3 = once_value_variable3_19;
421 else {
422 variable3 = NEW_string___String___with_native(BOX_NativeString("Object"), TAG_Int(6)); /*new String*/
423 variable3 = ((symbol___String___to_symbol_t)CALL(variable3,COLOR_symbol___String___to_symbol))(variable3) /*String::to_symbol*/;
424 once_value_variable3_19 = variable3;
425 once_bool_variable3_19 = true;
426 }
427 variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable2 == variable3) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2,variable3)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2, variable3) /*Symbol::==*/)))))));
428 }
429 variable1 = variable2;
430 if (UNTAG_Bool(variable1)) { /*if*/
431 variable2 = ((abstractmetamodel___MMLocalClass___module_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___module))( self) /*MMLocalClass::module*/;
432 variable2 = ((inheritance___MMModule___type_any_t)CALL(variable2,COLOR_inheritance___MMModule___type_any))(variable2) /*MMModule::type_any*/;
433 variable1 = variable2;
434 variable2 = ((static_type___MMType___local_class_t)CALL( variable1 /*t_any*/,COLOR_static_type___MMType___local_class))( variable1 /*t_any*/) /*MMType::local_class*/;
435 ((array___AbstractArray___add_t)CALL( variable0 /*supers*/,COLOR_abstract_collection___SimpleCollection___add))( variable0 /*supers*/, variable2) /*Array::add*/;
436 variable3 = NEW_inheritance___MMDefaultAncestor___init( self, variable1 /*t_any*/); /*new MMDefaultAncestor*/
437 variable2 = variable3;
438 ((inheritance___MMLocalClass___add_direct_parent_t)CALL( self,COLOR_inheritance___MMLocalClass___add_direct_parent))( self, variable2 /*default*/) /*MMLocalClass::add_direct_parent*/;
439 }
440 tracehead = trace.prev;
441 return;
442 }
443 void inheritance___MMLocalClass___add_super_classes(val_t self, val_t param0) {
444 struct trace_t trace = {NULL, LOCATE_inheritance___MMLocalClass___add_super_classes, 207};
445 val_t variable0;
446 val_t variable1;
447 val_t variable2;
448 val_t variable3;
449 val_t variable4;
450 val_t variable5;
451 val_t variable6;
452 trace.prev = tracehead; tracehead = &trace;
453 variable0 = param0;
454 variable1 = ATTR_abstractmetamodel___MMLocalClass____crhe( self) /*MMLocalClass::_crhe*/;
455 variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 == NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1, NIT_NULL /*null*/) /*PartialOrderElement::==*/)))))));
456 if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_inheritance___MMLocalClass___add_super_classes, 210); nit_exit(1);}
457 variable1 = ATTR_abstractmetamodel___MMLocalClass____crhe( self) /*MMLocalClass::_crhe*/;
458 variable1 = ((partial_order___PartialOrderElement___direct_greaters_t)CALL(variable1,COLOR_partial_order___PartialOrderElement___direct_greaters))(variable1) /*PartialOrderElement::direct_greaters*/;
459 variable1 = ((array___AbstractArray___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*Array::iterator*/;
460 while (true) { /*for*/
461 variable2 = ((array___ArrayIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ArrayIterator::is_ok*/;
462 if (!UNTAG_Bool(variable2)) break; /*for*/
463 variable2 = ((array___ArrayIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ArrayIterator::item*/;
464 variable3 = ((abstractmetamodel___MMLocalClass___cshe_t)CALL( variable2 /*ref*/,COLOR_abstractmetamodel___MMLocalClass___cshe))( variable2 /*ref*/) /*MMLocalClass::cshe*/;
465 variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable3 == NIT_NULL /*null*/) || ((variable3 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable3, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))(variable3, NIT_NULL /*null*/) /*PartialOrderElement::==*/)))))));
466 if (!UNTAG_Bool(variable3)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_inheritance___MMLocalClass___add_super_classes, 212); nit_exit(1);}
467 variable3 = ((abstractmetamodel___MMLocalClass___cshe_t)CALL( variable2 /*ref*/,COLOR_abstractmetamodel___MMLocalClass___cshe))( variable2 /*ref*/) /*MMLocalClass::cshe*/;
468 variable3 = ((partial_order___PartialOrderElement___direct_greaters_t)CALL(variable3,COLOR_partial_order___PartialOrderElement___direct_greaters))(variable3) /*PartialOrderElement::direct_greaters*/;
469 variable3 = ((array___AbstractArray___iterator_t)CALL(variable3,COLOR_abstract_collection___Collection___iterator))(variable3) /*Array::iterator*/;
470 while (true) { /*for*/
471 variable4 = ((array___ArrayIterator___is_ok_t)CALL(variable3,COLOR_abstract_collection___Iterator___is_ok))(variable3) /*ArrayIterator::is_ok*/;
472 if (!UNTAG_Bool(variable4)) break; /*for*/
473 variable4 = ((array___ArrayIterator___item_t)CALL(variable3,COLOR_abstract_collection___Iterator___item))(variable3) /*ArrayIterator::item*/;
474 variable6 = ATTR_abstractmetamodel___MMLocalClass____module( self) /*MMLocalClass::_module*/;
475 variable6 = ((abstractmetamodel___MMLocalClass___for_module_t)CALL( variable4 /*sup*/,COLOR_abstractmetamodel___MMLocalClass___for_module))( variable4 /*sup*/, variable6) /*MMLocalClass::for_module*/;
476 variable5 = variable6;
477 variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*cla*/ == NIT_NULL /*null*/) || (( variable5 /*cla*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*cla*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*cla*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*cla*/,COLOR_kernel___Object_____eqeq))( variable5 /*cla*/, NIT_NULL /*null*/) /*MMLocalClass::==*/)))))));
478 if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_inheritance___MMLocalClass___add_super_classes, 215); nit_exit(1);}
479 ((array___AbstractArray___add_t)CALL( variable0 /*supers*/,COLOR_abstract_collection___SimpleCollection___add))( variable0 /*supers*/, variable5 /*cla*/) /*Array::add*/;
480 continue_22: while(0);
481 ((array___ArrayIterator___next_t)CALL(variable3,COLOR_abstract_collection___Iterator___next))(variable3) /*ArrayIterator::next*/;
482 }
483 break_22: while(0);
484 continue_21: while(0);
485 ((array___ArrayIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ArrayIterator::next*/;
486 }
487 break_21: while(0);
488 tracehead = trace.prev;
489 return;
490 }
491 void inheritance___MMLocalClass___add_explicit_classes(val_t self, val_t param0) {
492 struct trace_t trace = {NULL, LOCATE_inheritance___MMLocalClass___add_explicit_classes, 221};
493 val_t variable0;
494 val_t variable1;
495 val_t variable2;
496 val_t variable3;
497 trace.prev = tracehead; tracehead = &trace;
498 variable0 = param0;
499 variable1 = ATTR_inheritance___MMLocalClass____direct_parents( self) /*MMLocalClass::_direct_parents*/;
500 variable1 = ((array___AbstractArray___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*Array::iterator*/;
501 while (true) { /*for*/
502 variable2 = ((array___ArrayIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ArrayIterator::is_ok*/;
503 if (!UNTAG_Bool(variable2)) break; /*for*/
504 variable2 = ((array___ArrayIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ArrayIterator::item*/;
505 variable3 = ((static_type___MMAncestor___local_class_t)CALL( variable2 /*p*/,COLOR_static_type___MMAncestor___local_class))( variable2 /*p*/) /*MMAncestor::local_class*/;
506 ((array___AbstractArray___add_t)CALL( variable0 /*supers*/,COLOR_abstract_collection___SimpleCollection___add))( variable0 /*supers*/, variable3) /*Array::add*/;
507 continue_24: while(0);
508 ((array___ArrayIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ArrayIterator::next*/;
509 }
510 break_24: while(0);
511 tracehead = trace.prev;
512 return;
513 }
514 void inheritance___MMLocalClass___compute_super_parents(val_t self, val_t param0) {
515 struct trace_t trace = {NULL, LOCATE_inheritance___MMLocalClass___compute_super_parents, 229};
516 val_t variable0;
517 val_t variable1;
518 val_t variable2;
519 val_t variable3;
520 trace.prev = tracehead; tracehead = &trace;
521 variable0 = param0;
522 variable1 = ((array___AbstractArray___iterator_t)CALL( variable0 /*supers*/,COLOR_abstract_collection___Collection___iterator))( variable0 /*supers*/) /*Array::iterator*/;
523 while (true) { /*for*/
524 variable2 = ((array___ArrayIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ArrayIterator::is_ok*/;
525 if (!UNTAG_Bool(variable2)) break; /*for*/
526 variable2 = ((array___ArrayIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ArrayIterator::item*/;
527 variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*p*/ == NIT_NULL /*null*/) || (( variable2 /*p*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*p*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*p*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*p*/,COLOR_kernel___Object_____eqeq))( variable2 /*p*/, NIT_NULL /*null*/) /*MMLocalClass::==*/)))))));
528 if (!UNTAG_Bool(variable3)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_inheritance___MMLocalClass___compute_super_parents, 233); nit_exit(1);}
529 ((inheritance___MMLocalClass___compute_super_classes_t)CALL( variable2 /*p*/,COLOR_inheritance___MMLocalClass___compute_super_classes))( variable2 /*p*/) /*MMLocalClass::compute_super_classes*/;
530 continue_26: while(0);
531 ((array___ArrayIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ArrayIterator::next*/;
532 }
533 break_26: while(0);
534 tracehead = trace.prev;
535 return;
536 }
537 val_t inheritance___MMLocalClass___build_ancestors(val_t self) {
538 struct trace_t trace = {NULL, LOCATE_inheritance___MMLocalClass___build_ancestors, 238};
539 val_t variable0;
540 val_t variable1;
541 val_t variable2;
542 val_t variable3;
543 val_t variable4;
544 trace.prev = tracehead; tracehead = &trace;
545 variable1 = NEW_array___Array___init(); /*new Array[MMAncestor]*/
546 variable0 = variable1;
547 variable1 = ATTR_abstractmetamodel___MMLocalClass____crhe( self) /*MMLocalClass::_crhe*/;
548 variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 == NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1, NIT_NULL /*null*/) /*PartialOrderElement::==*/)))))));
549 if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_inheritance___MMLocalClass___build_ancestors, 243); nit_exit(1);}
550 variable1 = ATTR_abstractmetamodel___MMLocalClass____crhe( self) /*MMLocalClass::_crhe*/;
551 variable1 = ((partial_order___PartialOrderElement___direct_greaters_t)CALL(variable1,COLOR_partial_order___PartialOrderElement___direct_greaters))(variable1) /*PartialOrderElement::direct_greaters*/;
552 variable1 = ((array___AbstractArray___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*Array::iterator*/;
553 while (true) { /*for*/
554 variable2 = ((array___ArrayIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ArrayIterator::is_ok*/;
555 if (!UNTAG_Bool(variable2)) break; /*for*/
556 variable2 = ((array___ArrayIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ArrayIterator::item*/;
557 variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*p*/ == self) || (( variable2 /*p*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*p*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*p*/, self)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*p*/,COLOR_kernel___Object_____eqeq))( variable2 /*p*/, self) /*MMLocalClass::==*/)))))));
558 if (!UNTAG_Bool(variable3)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_inheritance___MMLocalClass___build_ancestors, 245); nit_exit(1);}
559 variable4 = NEW_inheritance___MMRefineAncestor___init( self, variable2 /*p*/); /*new MMRefineAncestor*/
560 variable3 = variable4;
561 ((inheritance___MMAncestor___add_in_t)CALL( variable3 /*anc*/,COLOR_inheritance___MMAncestor___add_in))( variable3 /*anc*/, variable0 /*all_ancestors*/) /*MMRefineAncestor::add_in*/;
562 continue_28: while(0);
563 ((array___ArrayIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ArrayIterator::next*/;
564 }
565 break_28: while(0);
566 variable1 = ATTR_inheritance___MMLocalClass____direct_parents( self) /*MMLocalClass::_direct_parents*/;
567 variable1 = ((array___AbstractArray___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*Array::iterator*/;
568 while (true) { /*for*/
569 variable2 = ((array___ArrayIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ArrayIterator::is_ok*/;
570 if (!UNTAG_Bool(variable2)) break; /*for*/
571 variable2 = ((array___ArrayIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ArrayIterator::item*/;
572 variable3 = ((static_type___MMAncestor___local_class_t)CALL( variable2 /*anc*/,COLOR_static_type___MMAncestor___local_class))( variable2 /*anc*/) /*MMAncestor::local_class*/;
573 variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable3 == self) || ((variable3 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable3, self)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))(variable3, self) /*MMLocalClass::==*/)))))));
574 if (!UNTAG_Bool(variable3)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_inheritance___MMLocalClass___build_ancestors, 250); nit_exit(1);}
575 ((inheritance___MMAncestor___add_in_t)CALL( variable2 /*anc*/,COLOR_inheritance___MMAncestor___add_in))( variable2 /*anc*/, variable0 /*all_ancestors*/) /*MMAncestor::add_in*/;
576 continue_29: while(0);
577 ((array___ArrayIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ArrayIterator::next*/;
578 }
579 break_29: while(0);
580 variable0 = variable0 /*all_ancestors*/;
581 goto return_label27;
582 return_label27: while(false);
583 tracehead = trace.prev;
584 return variable0;
585 }
586 val_t inheritance___MMLocalClass___group_ancestors(val_t self, val_t param0) {
587 struct trace_t trace = {NULL, LOCATE_inheritance___MMLocalClass___group_ancestors, 256};
588 val_t variable0;
589 val_t variable1;
590 val_t variable2;
591 val_t variable3;
592 val_t variable4;
593 val_t variable5;
594 val_t variable6;
595 trace.prev = tracehead; tracehead = &trace;
596 variable0 = param0;
597 variable2 = NEW_hash___HashMap___init(); /*new HashMap[MMLocalClass, Set[MMAncestor]]*/
598 variable1 = variable2;
599 variable2 = ((array___AbstractArray___iterator_t)CALL( variable0 /*all*/,COLOR_abstract_collection___Collection___iterator))( variable0 /*all*/) /*Array::iterator*/;
600 while (true) { /*for*/
601 variable3 = ((array___ArrayIterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*ArrayIterator::is_ok*/;
602 if (!UNTAG_Bool(variable3)) break; /*for*/
603 variable3 = ((array___ArrayIterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*ArrayIterator::item*/;
604 variable5 = ((static_type___MMAncestor___local_class_t)CALL( variable3 /*a*/,COLOR_static_type___MMAncestor___local_class))( variable3 /*a*/) /*MMAncestor::local_class*/;
605 variable4 = variable5;
606 variable5 = NIT_NULL /*decl variable set*/;
607 ((inheritance___MMLocalClass___compute_ancestors_t)CALL( variable4 /*c*/,COLOR_inheritance___MMLocalClass___compute_ancestors))( variable4 /*c*/) /*MMLocalClass::compute_ancestors*/;
608 variable6 = ((abstract_collection___CoupleMap___has_key_t)CALL( variable1 /*map*/,COLOR_abstract_collection___Map___has_key))( variable1 /*map*/, variable4 /*c*/) /*HashMap::has_key*/;
609 if (UNTAG_Bool(variable6)) { /*if*/
610 variable6 = ((abstract_collection___CoupleMap_____bra_t)CALL( variable1 /*map*/,COLOR_abstract_collection___Map_____bra))( variable1 /*map*/, variable4 /*c*/) /*HashMap::[]*/;
611 variable5 = variable6 /*set=*/;
612 } else { /*if*/
613 variable6 = NEW_hash___HashSet___init(); /*new HashSet[MMAncestor]*/
614 variable5 = variable6 /*set=*/;
615 ((hash___HashMap_____braeq_t)CALL( variable1 /*map*/,COLOR_abstract_collection___Map_____braeq))( variable1 /*map*/, variable4 /*c*/, variable5 /*set*/) /*HashMap::[]=*/;
616 }
617 ((abstract_collection___SimpleCollection___add_t)CALL( variable5 /*set*/,COLOR_abstract_collection___SimpleCollection___add))( variable5 /*set*/, variable3 /*a*/) /*Set::add*/;
618 continue_31: while(0);
619 ((array___ArrayIterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*ArrayIterator::next*/;
620 }
621 break_31: while(0);
622 variable1 = variable1 /*map*/;
623 goto return_label30;
624 return_label30: while(false);
625 tracehead = trace.prev;
626 return variable1;
627 }
628 val_t inheritance___MMLocalClass___merge_ancestors(val_t self, val_t param0) {
629 struct trace_t trace = {NULL, LOCATE_inheritance___MMLocalClass___merge_ancestors, 278};
630 val_t variable0;
631 val_t variable1;
632 val_t variable2;
633 val_t variable3;
634 val_t variable4;
635 val_t variable5;
636 val_t variable6;
637 val_t variable7;
638 val_t variable8;
639 val_t variable9;
640 val_t variable10;
641 val_t variable11;
642 val_t variable12;
643 val_t variable13;
644 val_t variable14;
645 trace.prev = tracehead; tracehead = &trace;
646 variable0 = param0;
647 variable2 = NEW_hash___HashSet___init(); /*new HashSet[MMAncestor]*/
648 variable1 = variable2;
649 variable3 = NEW_array___Array___init(); /*new Array[MMAncestor]*/
650 variable2 = variable3;
651 variable3 = ((abstract_collection___Collection___iterator_t)CALL( variable0 /*set*/,COLOR_abstract_collection___Collection___iterator))( variable0 /*set*/) /*Set::iterator*/;
652 while (true) { /*for*/
653 variable4 = ((abstract_collection___Iterator___is_ok_t)CALL(variable3,COLOR_abstract_collection___Iterator___is_ok))(variable3) /*Iterator::is_ok*/;
654 if (!UNTAG_Bool(variable4)) break; /*for*/
655 variable4 = ((abstract_collection___Iterator___item_t)CALL(variable3,COLOR_abstract_collection___Iterator___item))(variable3) /*Iterator::item*/;
656 variable6 = ((abstract_collection___Collection___iterator_t)CALL( variable0 /*set*/,COLOR_abstract_collection___Collection___iterator))( variable0 /*set*/) /*Set::iterator*/;
657 variable5 = variable6;
658 variable6 = TAG_Bool(true);
659 while (true) { /*while*/
660 variable7 = ((abstract_collection___Iterator___is_ok_t)CALL( variable5 /*it*/,COLOR_abstract_collection___Iterator___is_ok))( variable5 /*it*/) /*Iterator::is_ok*/;
661 variable8 = variable7;
662 if (UNTAG_Bool(variable8)) { /* and */
663 variable8 = variable6 /*search*/;
664 }
665 variable7 = variable8;
666 if (!UNTAG_Bool(variable7)) break; /* while*/
667 variable8 = ((abstract_collection___Iterator___item_t)CALL( variable5 /*it*/,COLOR_abstract_collection___Iterator___item))( variable5 /*it*/) /*Iterator::item*/;
668 variable8 = TAG_Bool(( variable4 /*t*/ == variable8) || (( variable4 /*t*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*t*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*t*/,variable8)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*t*/,COLOR_kernel___Object_____eqeq))( variable4 /*t*/, variable8) /*MMAncestor::==*/)))));
669 variable7 = variable8;
670 variable8 = ((abstract_collection___Iterator___item_t)CALL( variable5 /*it*/,COLOR_abstract_collection___Iterator___item))( variable5 /*it*/) /*Iterator::item*/;
671 variable8 = ((hash___HashSet___has_t)CALL( variable1 /*marks*/,COLOR_abstract_collection___Collection___has))( variable1 /*marks*/, variable8) /*HashSet::has*/;
672 variable7 = variable8 /*a=*/;
673 variable8 = ((abstract_collection___Iterator___item_t)CALL( variable5 /*it*/,COLOR_abstract_collection___Iterator___item))( variable5 /*it*/) /*Iterator::item*/;
674 variable8 = ((static_type___MMAncestor___stype_t)CALL(variable8,COLOR_static_type___MMAncestor___stype))(variable8) /*MMAncestor::stype*/;
675 variable9 = ((static_type___MMAncestor___stype_t)CALL( variable4 /*t*/,COLOR_static_type___MMAncestor___stype))( variable4 /*t*/) /*MMAncestor::stype*/;
676 variable8 = ((static_type___MMType_____l_t)CALL(variable8,COLOR_static_type___MMType_____l))(variable8, variable9) /*MMType::<*/;
677 variable7 = variable8 /*a=*/;
678 variable8 = ((abstract_collection___Iterator___item_t)CALL( variable5 /*it*/,COLOR_abstract_collection___Iterator___item))( variable5 /*it*/) /*Iterator::item*/;
679 variable8 = TAG_Bool(( variable4 /*t*/ == variable8) || (( variable4 /*t*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*t*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*t*/,variable8)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*t*/,COLOR_kernel___Object_____eqeq))( variable4 /*t*/, variable8) /*MMAncestor::==*/)))));
680 variable9 = variable8;
681 if (!UNTAG_Bool(variable9)) { /* or */
682 variable9 = ((abstract_collection___Iterator___item_t)CALL( variable5 /*it*/,COLOR_abstract_collection___Iterator___item))( variable5 /*it*/) /*Iterator::item*/;
683 variable9 = ((hash___HashSet___has_t)CALL( variable1 /*marks*/,COLOR_abstract_collection___Collection___has))( variable1 /*marks*/, variable9) /*HashSet::has*/;
684 }
685 variable8 = variable9;
686 variable8 = TAG_Bool(!UNTAG_Bool(variable8));
687 if (UNTAG_Bool(variable8)) { /* and */
688 variable8 = ((abstract_collection___Iterator___item_t)CALL( variable5 /*it*/,COLOR_abstract_collection___Iterator___item))( variable5 /*it*/) /*Iterator::item*/;
689 variable8 = ((static_type___MMAncestor___stype_t)CALL(variable8,COLOR_static_type___MMAncestor___stype))(variable8) /*MMAncestor::stype*/;
690 variable9 = ((static_type___MMAncestor___stype_t)CALL( variable4 /*t*/,COLOR_static_type___MMAncestor___stype))( variable4 /*t*/) /*MMAncestor::stype*/;
691 variable8 = ((static_type___MMType_____l_t)CALL(variable8,COLOR_static_type___MMType_____l))(variable8, variable9) /*MMType::<*/;
692 }
693 if (UNTAG_Bool(variable8)) { /*if*/
694 ((hash___HashSet___add_t)CALL( variable1 /*marks*/,COLOR_abstract_collection___SimpleCollection___add))( variable1 /*marks*/, variable4 /*t*/) /*HashSet::add*/;
695 variable6 = TAG_Bool(false) /*search=*/;
696 }
697 ((abstract_collection___Iterator___next_t)CALL( variable5 /*it*/,COLOR_abstract_collection___Iterator___next))( variable5 /*it*/) /*Iterator::next*/;
698 continue_34: while(0);
699 }
700 break_34: while(0);
701 variable7 = ((hash___HashSet___has_t)CALL( variable1 /*marks*/,COLOR_abstract_collection___Collection___has))( variable1 /*marks*/, variable4 /*t*/) /*HashSet::has*/;
702 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable7)))) { /*if*/
703 ((array___AbstractArray___add_t)CALL( variable2 /*res*/,COLOR_abstract_collection___SimpleCollection___add))( variable2 /*res*/, variable4 /*t*/) /*Array::add*/;
704 }
705 continue_33: while(0);
706 ((abstract_collection___Iterator___next_t)CALL(variable3,COLOR_abstract_collection___Iterator___next))(variable3) /*Iterator::next*/;
707 }
708 break_33: while(0);
709 variable3 = ((array___AbstractArray___length_t)CALL( variable2 /*res*/,COLOR_abstract_collection___Collection___length))( variable2 /*res*/) /*Array::length*/;
710 variable3 = TAG_Bool(UNTAG_Int(variable3)>UNTAG_Int( TAG_Int(1)));
711 if (UNTAG_Bool(variable3)) { /*if*/
712 variable3 = ((file___Object___stderr_t)CALL( self,COLOR_file___Object___stderr))( self) /*MMLocalClass::stderr*/;
713 variable4 = NEW_string___String___init(); /*new String*/
714 variable5 = NEW_string___String___with_native(BOX_NativeString("Fatal error: Incompatibles ancestors for "), TAG_Int(41)); /*new String*/
715 variable6 = variable5;
716 ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable6) /*String::append*/;
717 variable7 = ((abstractmetamodel___MMLocalClass___name_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___name))( self) /*MMLocalClass::name*/;
718 variable8 = variable7;
719 variable8 = ((string___String___to_s_t)CALL(variable8,COLOR_string___Object___to_s))(variable8) /*String::to_s*/;
720 ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable8) /*String::append*/;
721 variable9 = NEW_string___String___with_native(BOX_NativeString(": "), TAG_Int(2)); /*new String*/
722 variable10 = variable9;
723 ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable10) /*String::append*/;
724 variable11 = NEW_string___String___with_native(BOX_NativeString(", "), TAG_Int(2)); /*new String*/
725 variable11 = ((string___Collection___join_t)CALL( variable2 /*res*/,COLOR_string___Collection___join))( variable2 /*res*/, variable11) /*Array::join*/;
726 variable12 = variable11;
727 ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable12) /*String::append*/;
728 variable13 = NEW_string___String___with_native(BOX_NativeString("\n"), TAG_Int(1)); /*new String*/
729 variable14 = variable13;
730 ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable14) /*String::append*/;
731 ((file___OFStream___write_t)CALL(variable3,COLOR_stream___OStream___write))(variable3, variable4) /*OFStream::write*/;
732 exit(UNTAG_Int( TAG_Int(1)));
733 }
734 variable3 = ((abstract_collection___IndexedCollection___first_t)CALL( variable2 /*res*/,COLOR_abstract_collection___Collection___first))( variable2 /*res*/) /*Array::first*/;
735 variable1 = variable3;
736 goto return_label32;
737 return_label32: while(false);
738 tracehead = trace.prev;
739 return variable1;
740 }
741 val_t inheritance___MMLocalClass___inherit_local_property(val_t self, val_t param0) {
742 struct trace_t trace = {NULL, LOCATE_inheritance___MMLocalClass___inherit_local_property, 311};
743 val_t variable0;
744 val_t variable1;
745 val_t variable2;
746 val_t variable3;
747 val_t variable4;
748 val_t variable5;
749 val_t variable6;
750 val_t variable7;
751 val_t variable8;
752 val_t variable9;
753 val_t variable10;
754 val_t variable11;
755 val_t variable12;
756 val_t variable13;
757 val_t variable14;
758 val_t variable15;
759 trace.prev = tracehead; tracehead = &trace;
760 variable0 = param0;
761 variable1 = ATTR_abstractmetamodel___MMLocalClass____local_property_by_global( self) /*MMLocalClass::_local_property_by_global*/;
762 variable1 = ((abstract_collection___Map___has_key_t)CALL(variable1,COLOR_abstract_collection___Map___has_key))(variable1, variable0 /*glob*/) /*Map::has_key*/;
763 if (!UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable1)))) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_inheritance___MMLocalClass___inherit_local_property, 316); nit_exit(1);}
764 variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*glob*/ == NIT_NULL /*null*/) || (( variable0 /*glob*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*glob*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*glob*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*glob*/,COLOR_kernel___Object_____eqeq))( variable0 /*glob*/, NIT_NULL /*null*/) /*MMGlobalProperty::==*/)))))));
765 if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_inheritance___MMLocalClass___inherit_local_property, 317); nit_exit(1);}
766 variable2 = ((inheritance___MMGlobalProperty___get_compatible_concrete_properties_for_t)CALL( variable0 /*glob*/,COLOR_inheritance___MMGlobalProperty___get_compatible_concrete_properties_for))( variable0 /*glob*/, self) /*MMGlobalProperty::get_compatible_concrete_properties_for*/;
767 variable1 = variable2;
768 variable2 = ((array___AbstractArray___length_t)CALL( variable1 /*impls*/,COLOR_abstract_collection___Collection___length))( variable1 /*impls*/) /*Array::length*/;
769 variable2 = TAG_Bool((variable2)!=( TAG_Int(1)));
770 if (UNTAG_Bool(variable2)) { /*if*/
771 variable2 = ((file___Object___stderr_t)CALL( self,COLOR_file___Object___stderr))( self) /*MMLocalClass::stderr*/;
772 variable3 = NEW_string___String___with_native(BOX_NativeString("Fatal error: inherit_local_property error\n"), TAG_Int(42)); /*new String*/
773 ((file___OFStream___write_t)CALL(variable2,COLOR_stream___OStream___write))(variable2, variable3) /*OFStream::write*/;
774 variable2 = NEW_string___String___init(); /*new String*/
775 variable3 = NEW_string___String___with_native(BOX_NativeString("------- "), TAG_Int(8)); /*new String*/
776 variable4 = variable3;
777 ((string___String___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2, variable4) /*String::append*/;
778 variable5 = ((abstractmetamodel___MMLocalClass___module_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___module))( self) /*MMLocalClass::module*/;
779 variable6 = variable5;
780 variable6 = ((string___String___to_s_t)CALL(variable6,COLOR_string___Object___to_s))(variable6) /*String::to_s*/;
781 ((string___String___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2, variable6) /*String::append*/;
782 variable7 = NEW_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)); /*new String*/
783 variable8 = variable7;
784 ((string___String___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2, variable8) /*String::append*/;
785 variable9 = self;
786 variable9 = ((string___String___to_s_t)CALL(variable9,COLOR_string___Object___to_s))(variable9) /*String::to_s*/;
787 ((string___String___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2, variable9) /*String::append*/;
788 variable10 = NEW_string___String___with_native(BOX_NativeString(" "), TAG_Int(1)); /*new String*/
789 variable11 = variable10;
790 ((string___String___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2, variable11) /*String::append*/;
791 variable12 = ((abstractmetamodel___MMGlobalProperty___intro_t)CALL( variable0 /*glob*/,COLOR_abstractmetamodel___MMGlobalProperty___intro))( variable0 /*glob*/) /*MMGlobalProperty::intro*/;
792 variable12 = ((abstractmetamodel___MMLocalProperty___full_name_t)CALL(variable12,COLOR_abstractmetamodel___MMLocalProperty___full_name))(variable12) /*MMConcreteProperty::full_name*/;
793 variable13 = variable12;
794 ((string___String___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2, variable13) /*String::append*/;
795 variable14 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
796 variable15 = variable14;
797 ((string___String___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2, variable15) /*String::append*/;
798 ((file___Object___print_t)CALL( self,COLOR_file___Object___print))( self, variable2) /*MMLocalClass::print*/;
799 variable2 = ((array___AbstractArray___iterator_t)CALL( variable1 /*impls*/,COLOR_abstract_collection___Collection___iterator))( variable1 /*impls*/) /*Array::iterator*/;
800 while (true) { /*for*/
801 variable3 = ((array___ArrayIterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*ArrayIterator::is_ok*/;
802 if (!UNTAG_Bool(variable3)) break; /*for*/
803 variable3 = ((array___ArrayIterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*ArrayIterator::item*/;
804 variable4 = NEW_string___String___init(); /*new String*/
805 variable5 = NEW_string___String___with_native(BOX_NativeString(" "), TAG_Int(3)); /*new String*/
806 variable6 = variable5;
807 ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable6) /*String::append*/;
808 variable7 = ((abstractmetamodel___MMLocalProperty___full_name_t)CALL( variable3 /*i*/,COLOR_abstractmetamodel___MMLocalProperty___full_name))( variable3 /*i*/) /*MMConcreteProperty::full_name*/;
809 variable8 = variable7;
810 ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable8) /*String::append*/;
811 variable9 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
812 variable10 = variable9;
813 ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable10) /*String::append*/;
814 ((file___Object___print_t)CALL( self,COLOR_file___Object___print))( self, variable4) /*MMLocalClass::print*/;
815 continue_36: while(0);
816 ((array___ArrayIterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*ArrayIterator::next*/;
817 }
818 break_36: while(0);
819 variable2 = NEW_string___String___init(); /*new String*/
820 variable3 = NEW_string___String___with_native(BOX_NativeString("------- "), TAG_Int(8)); /*new String*/
821 variable4 = variable3;
822 ((string___String___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2, variable4) /*String::append*/;
823 variable5 = ((abstractmetamodel___MMGlobalProperty___concrete_property_hierarchy_t)CALL( variable0 /*glob*/,COLOR_abstractmetamodel___MMGlobalProperty___concrete_property_hierarchy))( variable0 /*glob*/) /*MMGlobalProperty::concrete_property_hierarchy*/;
824 variable5 = ((partial_order___PartialOrder___first_t)CALL(variable5,COLOR_abstract_collection___Collection___first))(variable5) /*PartialOrder::first*/;
825 variable6 = variable5;
826 variable6 = ((string___String___to_s_t)CALL(variable6,COLOR_string___Object___to_s))(variable6) /*String::to_s*/;
827 ((string___String___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2, variable6) /*String::append*/;
828 variable7 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
829 variable8 = variable7;
830 ((string___String___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2, variable8) /*String::append*/;
831 ((file___Object___print_t)CALL( self,COLOR_file___Object___print))( self, variable2) /*MMLocalClass::print*/;
832 variable2 = NEW_string___String___init(); /*new String*/
833 variable3 = NEW_string___String___with_native(BOX_NativeString("------- "), TAG_Int(8)); /*new String*/
834 variable4 = variable3;
835 ((string___String___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2, variable4) /*String::append*/;
836 variable5 = ((abstractmetamodel___MMGlobalProperty___concrete_property_hierarchy_t)CALL( variable0 /*glob*/,COLOR_abstractmetamodel___MMGlobalProperty___concrete_property_hierarchy))( variable0 /*glob*/) /*MMGlobalProperty::concrete_property_hierarchy*/;
837 variable5 = ((partial_order___PartialOrder___to_dot_t)CALL(variable5,COLOR_partial_order___PartialOrder___to_dot))(variable5) /*PartialOrder::to_dot*/;
838 variable6 = variable5;
839 ((string___String___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2, variable6) /*String::append*/;
840 variable7 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
841 variable8 = variable7;
842 ((string___String___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2, variable8) /*String::append*/;
843 ((file___Object___print_t)CALL( self,COLOR_file___Object___print))( self, variable2) /*MMLocalClass::print*/;
844 exit(UNTAG_Int( TAG_Int(1)));
845 }
846 variable3 = ((abstract_collection___IndexedCollection___first_t)CALL( variable1 /*impls*/,COLOR_abstract_collection___Collection___first))( variable1 /*impls*/) /*Array::first*/;
847 variable2 = variable3;
848 variable4 = ((abstractmetamodel___MMLocalProperty___local_class_t)CALL( variable2 /*impl*/,COLOR_abstractmetamodel___MMLocalProperty___local_class))( variable2 /*impl*/) /*MMConcreteProperty::local_class*/;
849 variable4 = ((inheritance___MMLocalClass___ancestor_for_t)CALL( self,COLOR_inheritance___MMLocalClass___ancestor_for))( self, variable4) /*MMLocalClass::ancestor_for*/;
850 variable3 = variable4;
851 variable4 = ((static_type___MMAncestor___local_class_t)CALL( variable3 /*ac*/,COLOR_static_type___MMAncestor___local_class))( variable3 /*ac*/) /*MMAncestor::local_class*/;
852 ((inheritance___MMLocalClass___inherit_global_properties_t)CALL(variable4,COLOR_inheritance___MMLocalClass___inherit_global_properties))(variable4) /*MMLocalClass::inherit_global_properties*/;
853 variable5 = ((static_type___MMAncestor___stype_t)CALL( variable3 /*ac*/,COLOR_static_type___MMAncestor___stype))( variable3 /*ac*/) /*MMAncestor::stype*/;
854 variable4 = variable5;
855 variable5 = ((static_type___MMType___local_class_t)CALL( variable4 /*a*/,COLOR_static_type___MMType___local_class))( variable4 /*a*/) /*MMType::local_class*/;
856 variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable5 == self) || ((variable5 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable5,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable5, self)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable5,COLOR_kernel___Object_____eqeq))(variable5, self) /*MMLocalClass::==*/)))))));
857 if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_inheritance___MMLocalClass___inherit_local_property, 335); nit_exit(1);}
858 variable6 = ((static_type___MMType___select_property_t)CALL( variable4 /*a*/,COLOR_static_type___MMType___select_property))( variable4 /*a*/, variable0 /*glob*/) /*MMType::select_property*/;
859 variable5 = variable6;
860 variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*sup*/ == NIT_NULL /*null*/) || (( variable5 /*sup*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*sup*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*sup*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*sup*/,COLOR_kernel___Object_____eqeq))( variable5 /*sup*/, NIT_NULL /*null*/) /*MMLocalProperty::==*/)))))));
861 if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_inheritance___MMLocalClass___inherit_local_property, 337); nit_exit(1);}
862 variable7 = ((static_type___MMLocalClass___get_type_t)CALL( self,COLOR_static_type___MMLocalClass___get_type))( self) /*MMLocalClass::get_type*/;
863 variable7 = ((inheritance___MMLocalProperty___inherit_to_t)CALL( variable5 /*sup*/,COLOR_inheritance___MMLocalProperty___inherit_to))( variable5 /*sup*/, variable7) /*MMLocalProperty::inherit_to*/;
864 variable6 = variable7;
865 variable1 = variable6 /*prop*/;
866 goto return_label35;
867 return_label35: while(false);
868 tracehead = trace.prev;
869 return variable1;
870 }
871 val_t inheritance___MMConcreteProperty___is_deferred(val_t self) {
872 struct trace_t trace = {NULL, LOCATE_inheritance___MMConcreteProperty___is_deferred, 344};
873 val_t variable0;
874 trace.prev = tracehead; tracehead = &trace;
875 variable0 = TAG_Bool(false);
876 goto return_label37;
877 return_label37: while(false);
878 tracehead = trace.prev;
879 return variable0;
880 }
881 val_t inheritance___MMGlobalProperty___get_compatible_concrete_properties_for(val_t self, val_t param0) {
882 struct trace_t trace = {NULL, LOCATE_inheritance___MMGlobalProperty___get_compatible_concrete_properties_for, 349};
883 val_t variable0;
884 val_t variable1;
885 val_t variable2;
886 val_t variable3;
887 val_t variable4;
888 val_t variable5;
889 val_t variable6;
890 val_t variable7;
891 val_t variable8;
892 trace.prev = tracehead; tracehead = &trace;
893 variable0 = param0;
894 variable2 = ATTR_abstractmetamodel___MMGlobalProperty____concrete_property_hierarchy( self) /*MMGlobalProperty::_concrete_property_hierarchy*/;
895 variable1 = variable2;
896 variable2 = ((partial_order___PartialOrder___length_t)CALL( variable1 /*impl_hier*/,COLOR_abstract_collection___Collection___length))( variable1 /*impl_hier*/) /*PartialOrder::length*/;
897 variable2 = TAG_Bool((variable2)==( TAG_Int(1)));
898 if (UNTAG_Bool(variable2)) { /*if*/
899 variable2 = NEW_array___Array___with_capacity(TAG_Int(1)); /*new Array[MMConcreteProperty]*/
900 variable3 = ((abstractmetamodel___MMGlobalProperty___intro_t)CALL( self,COLOR_abstractmetamodel___MMGlobalProperty___intro))( self) /*MMGlobalProperty::intro*/;
901 ((array___AbstractArray___add_t)CALL(variable2,COLOR_abstract_collection___SimpleCollection___add))(variable2, variable3) /*Array::add*/;
902 variable1 = variable2;
903 goto return_label38;
904 }
905 variable3 = NEW_array___ArraySet___init(); /*new ArraySet[MMConcreteProperty]*/
906 variable2 = variable3;
907 variable4 = ((abstractmetamodel___MMLocalClass___che_t)CALL( variable0 /*cla*/,COLOR_abstractmetamodel___MMLocalClass___che))( variable0 /*cla*/) /*MMLocalClass::che*/;
908 variable3 = variable4;
909 if (UNTAG_Bool( TAG_Bool(true))) { /*if*/
910 variable4 = ((abstractmetamodel___MMLocalClass___che_t)CALL( variable0 /*cla*/,COLOR_abstractmetamodel___MMLocalClass___che))( variable0 /*cla*/) /*MMLocalClass::che*/;
911 variable4 = ((partial_order___PartialOrderElement___direct_greaters_t)CALL(variable4,COLOR_partial_order___PartialOrderElement___direct_greaters))(variable4) /*PartialOrderElement::direct_greaters*/;
912 variable4 = ((array___AbstractArray___iterator_t)CALL(variable4,COLOR_abstract_collection___Collection___iterator))(variable4) /*Array::iterator*/;
913 while (true) { /*for*/
914 variable5 = ((array___ArrayIterator___is_ok_t)CALL(variable4,COLOR_abstract_collection___Iterator___is_ok))(variable4) /*ArrayIterator::is_ok*/;
915 if (!UNTAG_Bool(variable5)) break; /*for*/
916 variable5 = ((array___ArrayIterator___item_t)CALL(variable4,COLOR_abstract_collection___Iterator___item))(variable4) /*ArrayIterator::item*/;
917 variable7 = ((inheritance___MMLocalClass_____bra_t)CALL( variable5 /*sc*/,COLOR_abstractmetamodel___MMLocalClass_____bra))( variable5 /*sc*/, self) /*MMLocalClass::[]*/;
918 variable6 = variable7;
919 variable7 = TAG_Bool(( variable6 /*p*/ == NIT_NULL /*null*/) || (( variable6 /*p*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*p*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*p*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*p*/,COLOR_kernel___Object_____eqeq))( variable6 /*p*/, NIT_NULL /*null*/) /*MMLocalProperty::==*/)))));
920 if (UNTAG_Bool(variable7)) { /*if*/
921 goto continue_39;
922 }
923 variable8 = ((abstractmetamodel___MMLocalProperty___concrete_property_t)CALL( variable6 /*p*/,COLOR_abstractmetamodel___MMLocalProperty___concrete_property))( variable6 /*p*/) /*MMLocalProperty::concrete_property*/;
924 variable7 = variable8;
925 ((array___ArraySet___add_t)CALL( variable2 /*impls*/,COLOR_abstract_collection___SimpleCollection___add))( variable2 /*impls*/, variable7 /*impl*/) /*ArraySet::add*/;
926 continue_39: while(0);
927 ((array___ArrayIterator___next_t)CALL(variable4,COLOR_abstract_collection___Iterator___next))(variable4) /*ArrayIterator::next*/;
928 }
929 break_39: while(0);
930 } else { /*if*/
931 variable4 = ((partial_order___PartialOrder___iterator_t)CALL( variable1 /*impl_hier*/,COLOR_abstract_collection___Collection___iterator))( variable1 /*impl_hier*/) /*PartialOrder::iterator*/;
932 while (true) { /*for*/
933 variable5 = ((abstract_collection___Iterator___is_ok_t)CALL(variable4,COLOR_abstract_collection___Iterator___is_ok))(variable4) /*Iterator::is_ok*/;
934 if (!UNTAG_Bool(variable5)) break; /*for*/
935 variable5 = ((abstract_collection___Iterator___item_t)CALL(variable4,COLOR_abstract_collection___Iterator___item))(variable4) /*Iterator::item*/;
936 variable7 = ((abstractmetamodel___MMLocalProperty___local_class_t)CALL( variable5 /*impl*/,COLOR_abstractmetamodel___MMLocalProperty___local_class))( variable5 /*impl*/) /*MMConcreteProperty::local_class*/;
937 variable6 = variable7;
938 variable7 = ((partial_order___PartialOrderElement_____l_t)CALL( variable3 /*clache*/,COLOR_partial_order___PartialOrderElement_____l))( variable3 /*clache*/, variable6 /*bc*/) /*PartialOrderElement::<*/;
939 if (UNTAG_Bool(variable7)) { /*if*/
940 ((array___ArraySet___add_t)CALL( variable2 /*impls*/,COLOR_abstract_collection___SimpleCollection___add))( variable2 /*impls*/, variable5 /*impl*/) /*ArraySet::add*/;
941 }
942 continue_40: while(0);
943 ((abstract_collection___Iterator___next_t)CALL(variable4,COLOR_abstract_collection___Iterator___next))(variable4) /*Iterator::next*/;
944 }
945 break_40: while(0);
946 }
947 variable4 = ((partial_order___PartialOrder___select_smallests_t)CALL( variable1 /*impl_hier*/,COLOR_partial_order___PartialOrder___select_smallests))( variable1 /*impl_hier*/, variable2 /*impls*/) /*PartialOrder::select_smallests*/;
948 variable1 = variable4;
949 goto return_label38;
950 return_label38: while(false);
951 tracehead = trace.prev;
952 return variable1;
953 }
954 void inheritance___MMLocalProperty___inherit_global(val_t self, val_t param0) {
955 struct trace_t trace = {NULL, LOCATE_inheritance___MMLocalProperty___inherit_global, 378};
956 val_t variable0;
957 val_t variable1;
958 val_t variable2;
959 trace.prev = tracehead; tracehead = &trace;
960 variable0 = param0;
961 ((abstractmetamodel___MMLocalProperty___set_global_t)CALL( self,COLOR_abstractmetamodel___MMLocalProperty___set_global))( self, variable0 /*g*/) /*MMLocalProperty::set_global*/;
962 variable1 = ((abstractmetamodel___MMLocalProperty___concrete_property_t)CALL( self,COLOR_abstractmetamodel___MMLocalProperty___concrete_property))( self) /*MMLocalProperty::concrete_property*/;
963 variable2 = ((abstractmetamodel___MMLocalProperty___local_class_t)CALL( self,COLOR_abstractmetamodel___MMLocalProperty___local_class))( self) /*MMLocalProperty::local_class*/;
964 variable2 = ((inheritance___MMGlobalProperty___get_compatible_concrete_properties_for_t)CALL( variable0 /*g*/,COLOR_inheritance___MMGlobalProperty___get_compatible_concrete_properties_for))( variable0 /*g*/, variable2) /*MMGlobalProperty::get_compatible_concrete_properties_for*/;
965 ((abstractmetamodel___MMGlobalProperty___add_concrete_property_t)CALL( variable0 /*g*/,COLOR_abstractmetamodel___MMGlobalProperty___add_concrete_property))( variable0 /*g*/, variable1, variable2) /*MMGlobalProperty::add_concrete_property*/;
966 tracehead = trace.prev;
967 return;
968 }
969 val_t inheritance___MMLocalProperty___inherit_to(val_t self, val_t param0) {
970 struct trace_t trace = {NULL, LOCATE_inheritance___MMLocalProperty___inherit_to, 386};
971 trace.prev = tracehead; tracehead = &trace;
972 fprintf(stderr, "Deferred method %s called (%s: %d)\n", "inherit_to", LOCATE_inheritance___MMLocalProperty___inherit_global, 386);
973 nit_exit(1);
974 tracehead = trace.prev;
975 return NIT_NULL;
976 }
977 void inheritance___MMLocalProperty___inherit_from(val_t self, val_t param0, val_t param1) {
978 struct trace_t trace = {NULL, LOCATE_inheritance___MMLocalProperty___inherit_from, 389};
979 val_t variable0;
980 val_t variable1;
981 val_t variable2;
982 trace.prev = tracehead; tracehead = &trace;
983 variable0 = param0;
984 variable1 = param1;
985 variable2 = ATTR_abstractmetamodel___MMLocalProperty____super_prop( self) /*MMLocalProperty::_super_prop*/;
986 variable2 = TAG_Bool((variable2 == NIT_NULL /*null*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2, NIT_NULL /*null*/) /*MMLocalProperty::==*/)))));
987 if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_inheritance___MMLocalProperty___inherit_from, 392); nit_exit(1);}
988 ATTR_abstractmetamodel___MMLocalProperty____super_prop( self) /*MMLocalProperty::_super_prop*/ = variable0 /*s*/;
989 variable2 = ATTR_abstractmetamodel___MMLocalProperty____global( self) /*MMLocalProperty::_global*/;
990 variable2 = TAG_Bool((variable2 == NIT_NULL /*null*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2, NIT_NULL /*null*/) /*MMGlobalProperty::==*/)))));
991 if (UNTAG_Bool(variable2)) { /*if*/
992 variable2 = ((abstractmetamodel___MMLocalProperty___global_t)CALL( variable0 /*s*/,COLOR_abstractmetamodel___MMLocalProperty___global))( variable0 /*s*/) /*MMLocalProperty::global*/;
993 ((abstractmetamodel___MMLocalProperty___set_global_t)CALL( self,COLOR_abstractmetamodel___MMLocalProperty___set_global))( self, variable2) /*MMLocalProperty::set_global*/;
994 }
995 tracehead = trace.prev;
996 return;
997 }
998 val_t inheritance___MMMethod___inherit_to(val_t self, val_t param0) {
999 struct trace_t trace = {NULL, LOCATE_inheritance___MMMethod___inherit_to, 402};
1000 val_t variable0;
1001 val_t variable1;
1002 trace.prev = tracehead; tracehead = &trace;
1003 variable0 = param0;
1004 variable1 = NEW_inheritance___MMImplicitMethod___init( self, variable0 /*t*/); /*new MMImplicitMethod*/
1005 goto return_label43;
1006 return_label43: while(false);
1007 tracehead = trace.prev;
1008 return variable1;
1009 }
1010 void inheritance___MMImplicitProperty___init(val_t self, val_t param0, val_t param1, int* init_table) {
1011 struct trace_t trace = {NULL, LOCATE_inheritance___MMImplicitProperty___init, 410};
1012 val_t variable0;
1013 val_t variable1;
1014 val_t variable2;
1015 val_t variable3;
1016 val_t variable4;
1017 trace.prev = tracehead; tracehead = &trace;
1018 variable0 = param0;
1019 variable1 = param1;
1020 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMImplicitProperty].i]) return;
1021 variable2 = ((abstractmetamodel___MMLocalProperty___name_t)CALL( variable0 /*prop*/,COLOR_abstractmetamodel___MMLocalProperty___name))( variable0 /*prop*/) /*MMLocalProperty::name*/;
1022 variable3 = ((static_type___MMType___local_class_t)CALL( variable1 /*bt*/,COLOR_static_type___MMType___local_class))( variable1 /*bt*/) /*MMType::local_class*/;
1023 variable4 = ((abstractmetamodel___MMLocalProperty___concrete_property_t)CALL( variable0 /*prop*/,COLOR_abstractmetamodel___MMLocalProperty___concrete_property))( variable0 /*prop*/) /*MMLocalProperty::concrete_property*/;
1024 ((abstractmetamodel___MMLocalProperty___init_t)CALL( self,COLOR_abstractmetamodel___MMLocalProperty___init))( self, variable2, variable3, variable4, init_table /*YYY*/) /*MMLocalProperty::init*/;
1025 ((inheritance___MMLocalProperty___inherit_from_t)CALL( self,COLOR_inheritance___MMLocalProperty___inherit_from))( self, variable0 /*prop*/, variable1 /*bt*/) /*MMImplicitProperty::inherit_from*/;
1026 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMImplicitProperty].i] = 1;
1027 tracehead = trace.prev;
1028 return;
1029 }
1030 void inheritance___MMImplicitMethod___init(val_t self, val_t param0, val_t param1, int* init_table) {
1031 struct trace_t trace = {NULL, LOCATE_inheritance___MMImplicitMethod___init, 421};
1032 val_t variable0;
1033 val_t variable1;
1034 trace.prev = tracehead; tracehead = &trace;
1035 variable0 = param0;
1036 variable1 = param1;
1037 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMImplicitMethod].i]) return;
1038 ((inheritance___MMImplicitProperty___init_t)CALL( self,COLOR_inheritance___MMImplicitProperty___init))( self, param0, param1, init_table /*YYY*/) /*MMImplicitProperty::init*/;
1039 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMImplicitMethod].i] = 1;
1040 tracehead = trace.prev;
1041 return;
1042 }
1043 val_t inheritance___MMAttribute___inherit_to(val_t self, val_t param0) {
1044 struct trace_t trace = {NULL, LOCATE_inheritance___MMAttribute___inherit_to, 425};
1045 val_t variable0;
1046 val_t variable1;
1047 trace.prev = tracehead; tracehead = &trace;
1048 variable0 = param0;
1049 variable1 = NEW_inheritance___MMImplicitAttribute___init( self, variable0 /*t*/); /*new MMImplicitAttribute*/
1050 goto return_label46;
1051 return_label46: while(false);
1052 tracehead = trace.prev;
1053 return variable1;
1054 }
1055 void inheritance___MMImplicitAttribute___init(val_t self, val_t param0, val_t param1, int* init_table) {
1056 struct trace_t trace = {NULL, LOCATE_inheritance___MMImplicitAttribute___init, 434};
1057 val_t variable0;
1058 val_t variable1;
1059 trace.prev = tracehead; tracehead = &trace;
1060 variable0 = param0;
1061 variable1 = param1;
1062 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMImplicitAttribute].i]) return;
1063 ((inheritance___MMImplicitProperty___init_t)CALL( self,COLOR_inheritance___MMImplicitProperty___init))( self, param0, param1, init_table /*YYY*/) /*MMImplicitProperty::init*/;
1064 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMImplicitAttribute].i] = 1;
1065 tracehead = trace.prev;
1066 return;
1067 }
1068 void inheritance___MMAncestor___add_in(val_t self, val_t param0) {
1069 struct trace_t trace = {NULL, LOCATE_inheritance___MMAncestor___add_in, 438};
1070 val_t variable0;
1071 val_t variable1;
1072 val_t variable2;
1073 val_t variable3;
1074 val_t variable4;
1075 val_t variable5;
1076 val_t variable6;
1077 val_t variable7;
1078 val_t variable8;
1079 trace.prev = tracehead; tracehead = &trace;
1080 variable0 = param0;
1081 variable1 = ((static_type___MMAncestor___stype_t)CALL( self,COLOR_static_type___MMAncestor___stype))( self) /*MMAncestor::stype*/;
1082 variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 == NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1, NIT_NULL /*null*/) /*MMType::==*/)))))));
1083 if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'ancestor' ", LOCATE_inheritance___MMAncestor___add_in, 441); nit_exit(1);}
1084 variable1 = ((static_type___MMAncestor___stype_t)CALL( self,COLOR_static_type___MMAncestor___stype))( self) /*MMAncestor::stype*/;
1085 variable1 = ((static_type___MMType___local_class_t)CALL(variable1,COLOR_static_type___MMType___local_class))(variable1) /*MMType::local_class*/;
1086 variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 == NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1, NIT_NULL /*null*/) /*MMLocalClass::==*/)))))));
1087 if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'local_class' ", LOCATE_inheritance___MMAncestor___add_in, 442); nit_exit(1);}
1088 ((array___AbstractArray___add_t)CALL( variable0 /*tab*/,COLOR_abstract_collection___SimpleCollection___add))( variable0 /*tab*/, self) /*Array::add*/;
1089 variable1 = ((static_type___MMAncestor___stype_t)CALL( self,COLOR_static_type___MMAncestor___stype))( self) /*MMAncestor::stype*/;
1090 variable1 = ((static_type___MMType___local_class_t)CALL(variable1,COLOR_static_type___MMType___local_class))(variable1) /*MMType::local_class*/;
1091 ((inheritance___MMLocalClass___compute_ancestors_t)CALL(variable1,COLOR_inheritance___MMLocalClass___compute_ancestors))(variable1) /*MMLocalClass::compute_ancestors*/;
1092 variable1 = ((static_type___MMAncestor___stype_t)CALL( self,COLOR_static_type___MMAncestor___stype))( self) /*MMAncestor::stype*/;
1093 variable1 = ((static_type___MMType___local_class_t)CALL(variable1,COLOR_static_type___MMType___local_class))(variable1) /*MMType::local_class*/;
1094 variable1 = ((static_type___MMLocalClass___ancestors_t)CALL(variable1,COLOR_static_type___MMLocalClass___ancestors))(variable1) /*MMLocalClass::ancestors*/;
1095 variable1 = ((abstract_collection___Map___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*Map::iterator*/;
1096 while (true) { /*for*/
1097 variable2 = ((abstract_collection___Iterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*MapIterator::is_ok*/;
1098 if (!UNTAG_Bool(variable2)) break; /*for*/
1099 variable2 = ((abstract_collection___Iterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*MapIterator::item*/;
1100 variable4 = ((static_type___MMAncestor___stype_t)CALL( variable2 /*anc*/,COLOR_static_type___MMAncestor___stype))( variable2 /*anc*/) /*MMAncestor::stype*/;
1101 variable5 = ((static_type___MMAncestor___stype_t)CALL( self,COLOR_static_type___MMAncestor___stype))( self) /*MMAncestor::stype*/;
1102 variable5 = ((static_type___MMType___module_t)CALL(variable5,COLOR_static_type___MMType___module))(variable5) /*MMType::module*/;
1103 variable4 = ((static_type___MMType___for_module_t)CALL(variable4,COLOR_static_type___MMType___for_module))(variable4, variable5) /*MMType::for_module*/;
1104 variable3 = variable4;
1105 variable5 = ((static_type___MMAncestor___stype_t)CALL( self,COLOR_static_type___MMAncestor___stype))( self) /*MMAncestor::stype*/;
1106 variable5 = ((static_type___MMType___adapt_to_t)CALL( variable3 /*aaa*/,COLOR_static_type___MMType___adapt_to))( variable3 /*aaa*/, variable5) /*MMType::adapt_to*/;
1107 variable6 = ((static_type___MMAncestor___inheriter_t)CALL( self,COLOR_static_type___MMAncestor___inheriter))( self) /*MMAncestor::inheriter*/;
1108 variable6 = ((static_type___MMType___module_t)CALL(variable6,COLOR_static_type___MMType___module))(variable6) /*MMType::module*/;
1109 variable5 = ((static_type___MMType___for_module_t)CALL(variable5,COLOR_static_type___MMType___for_module))(variable5, variable6) /*MMType::for_module*/;
1110 variable4 = variable5;
1111 variable5 = ((static_type___MMType___local_class_t)CALL( variable4 /*a*/,COLOR_static_type___MMType___local_class))( variable4 /*a*/) /*MMType::local_class*/;
1112 variable6 = ((static_type___MMAncestor___inheriter_t)CALL( self,COLOR_static_type___MMAncestor___inheriter))( self) /*MMAncestor::inheriter*/;
1113 variable6 = ((static_type___MMType___local_class_t)CALL(variable6,COLOR_static_type___MMType___local_class))(variable6) /*MMType::local_class*/;
1114 variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable5 == variable6) || ((variable5 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable5,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable5,variable6)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable5,COLOR_kernel___Object_____eqeq))(variable5, variable6) /*MMLocalClass::==*/)))))));
1115 if (UNTAG_Bool(variable5)) { /*if*/
1116 variable6 = ((array___AbstractArray___iterator_t)CALL( variable0 /*tab*/,COLOR_abstract_collection___Collection___iterator))( variable0 /*tab*/) /*Array::iterator*/;
1117 variable5 = variable6;
1118 variable6 = TAG_Bool(true);
1119 while (true) { /*while*/
1120 variable7 = ((array___ArrayIterator___is_ok_t)CALL( variable5 /*it*/,COLOR_abstract_collection___Iterator___is_ok))( variable5 /*it*/) /*ArrayIterator::is_ok*/;
1121 variable8 = variable7;
1122 if (UNTAG_Bool(variable8)) { /* and */
1123 variable8 = variable6 /*b*/;
1124 }
1125 variable7 = variable8;
1126 if (!UNTAG_Bool(variable7)) break; /* while*/
1127 variable7 = ((array___ArrayIterator___item_t)CALL( variable5 /*it*/,COLOR_abstract_collection___Iterator___item))( variable5 /*it*/) /*ArrayIterator::item*/;
1128 variable7 = ((static_type___MMAncestor___inheriter_t)CALL(variable7,COLOR_static_type___MMAncestor___inheriter))(variable7) /*MMAncestor::inheriter*/;
1129 variable8 = ((static_type___MMAncestor___inheriter_t)CALL( self,COLOR_static_type___MMAncestor___inheriter))( self) /*MMAncestor::inheriter*/;
1130 variable7 = TAG_Bool((variable7 == variable8) || ((variable7 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable7,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable7,variable8)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable7,COLOR_kernel___Object_____eqeq))(variable7, variable8) /*MMType::==*/)))));
1131 variable8 = variable7;
1132 if (UNTAG_Bool(variable8)) { /* and */
1133 variable8 = ((array___ArrayIterator___item_t)CALL( variable5 /*it*/,COLOR_abstract_collection___Iterator___item))( variable5 /*it*/) /*ArrayIterator::item*/;
1134 variable8 = ((static_type___MMAncestor___stype_t)CALL(variable8,COLOR_static_type___MMAncestor___stype))(variable8) /*MMAncestor::stype*/;
1135 variable8 = TAG_Bool((variable8 == variable4 /*a*/) || ((variable8 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable8,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable8, variable4 /*a*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable8,COLOR_kernel___Object_____eqeq))(variable8, variable4 /*a*/) /*MMType::==*/)))));
1136 }
1137 variable7 = variable8;
1138 variable6 = TAG_Bool(!UNTAG_Bool(variable7)) /*b=*/;
1139 ((array___ArrayIterator___next_t)CALL( variable5 /*it*/,COLOR_abstract_collection___Iterator___next))( variable5 /*it*/) /*ArrayIterator::next*/;
1140 continue_50: while(0);
1141 }
1142 break_50: while(0);
1143 if (UNTAG_Bool( variable6 /*b*/)) { /*if*/
1144 variable7 = ((static_type___MMAncestor___inheriter_t)CALL( self,COLOR_static_type___MMAncestor___inheriter))( self) /*MMAncestor::inheriter*/;
1145 variable8 = NEW_inheritance___MMSpecAncestor___init(variable7, variable4 /*a*/); /*new MMSpecAncestor*/
1146 variable7 = variable8;
1147 ((array___AbstractArray___add_t)CALL( variable0 /*tab*/,COLOR_abstract_collection___SimpleCollection___add))( variable0 /*tab*/, variable7) /*Array::add*/;
1148 }
1149 }
1150 continue_49: while(0);
1151 ((abstract_collection___Iterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*MapIterator::next*/;
1152 }
1153 break_49: while(0);
1154 tracehead = trace.prev;
1155 return;
1156 }
1157 void inheritance___MMImplicitLocalClass___init(val_t self, val_t param0, val_t param1, int* init_table) {
1158 struct trace_t trace = {NULL, LOCATE_inheritance___MMImplicitLocalClass___init, 468};
1159 val_t variable0;
1160 val_t variable1;
1161 val_t variable2;
1162 val_t variable3;
1163 val_t variable4;
1164 trace.prev = tracehead; tracehead = &trace;
1165 variable0 = param0;
1166 variable1 = param1;
1167 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMImplicitLocalClass].i]) return;
1168 variable3 = ((abstractmetamodel___MMGlobalClass___intro_t)CALL( variable1 /*g*/,COLOR_abstractmetamodel___MMGlobalClass___intro))( variable1 /*g*/) /*MMGlobalClass::intro*/;
1169 variable2 = variable3;
1170 variable3 = ((abstractmetamodel___MMLocalClass___name_t)CALL( variable2 /*cla*/,COLOR_abstractmetamodel___MMLocalClass___name))( variable2 /*cla*/) /*MMLocalClass::name*/;
1171 variable4 = ((abstractmetamodel___MMLocalClass___arity_t)CALL( variable2 /*cla*/,COLOR_abstractmetamodel___MMLocalClass___arity))( variable2 /*cla*/) /*MMLocalClass::arity*/;
1172 ((abstractmetamodel___MMLocalClass___init_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___init))( self, variable3, variable4, init_table /*YYY*/) /*MMLocalClass::init*/;
1173 ((abstractmetamodel___MMModule___add_local_class_t)CALL( variable0 /*mod*/,COLOR_abstractmetamodel___MMModule___add_local_class))( variable0 /*mod*/, self) /*MMModule::add_local_class*/;
1174 ((abstractmetamodel___MMLocalClass___set_global_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___set_global))( self, variable1 /*g*/) /*MMImplicitLocalClass::set_global*/;
1175 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMImplicitLocalClass].i] = 1;
1176 tracehead = trace.prev;
1177 return;
1178 }
1179 val_t inheritance___MMRefineAncestor___local_class(val_t self) {
1180 struct trace_t trace = {NULL, LOCATE_inheritance___MMRefineAncestor___local_class, 479};
1181 trace.prev = tracehead; tracehead = &trace;
1182 tracehead = trace.prev;
1183 return ATTR_inheritance___MMRefineAncestor____local_class( self) /*MMRefineAncestor::_local_class*/;
1184 }
1185 void inheritance___MMRefineAncestor___init(val_t self, val_t param0, val_t param1, int* init_table) {
1186 struct trace_t trace = {NULL, LOCATE_inheritance___MMRefineAncestor___init, 481};
1187 val_t variable0;
1188 val_t variable1;
1189 val_t variable2;
1190 trace.prev = tracehead; tracehead = &trace;
1191 variable0 = param0;
1192 variable1 = param1;
1193 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMRefineAncestor].i]) return;
1194 ATTR_inheritance___MMRefineAncestor____local_class( self) /*MMRefineAncestor::_local_class*/ = variable1 /*a*/;
1195 variable2 = ((static_type___MMLocalClass___get_type_t)CALL( variable0 /*b*/,COLOR_static_type___MMLocalClass___get_type))( variable0 /*b*/) /*MMLocalClass::get_type*/;
1196 ((static_type___MMAncestor___inheriter__eq_t)CALL( self,COLOR_static_type___MMAncestor___inheriter__eq))( self, variable2) /*MMRefineAncestor::inheriter=*/;
1197 variable2 = ATTR_inheritance___MMRefineAncestor____local_class( self) /*MMRefineAncestor::_local_class*/;
1198 variable2 = ((static_type___MMLocalClass___get_type_t)CALL(variable2,COLOR_static_type___MMLocalClass___get_type))(variable2) /*MMLocalClass::get_type*/;
1199 ((static_type___MMAncestor___stype__eq_t)CALL( self,COLOR_static_type___MMAncestor___stype__eq))( self, variable2) /*MMRefineAncestor::stype=*/;
1200 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMRefineAncestor].i] = 1;
1201 tracehead = trace.prev;
1202 return;
1203 }
1204 val_t inheritance___MMSpecAncestor___local_class(val_t self) {
1205 struct trace_t trace = {NULL, LOCATE_inheritance___MMSpecAncestor___local_class, 492};
1206 val_t variable0;
1207 trace.prev = tracehead; tracehead = &trace;
1208 variable0 = ((static_type___MMAncestor___stype_t)CALL( self,COLOR_static_type___MMAncestor___stype))( self) /*MMSpecAncestor::stype*/;
1209 variable0 = ((static_type___MMType___local_class_t)CALL(variable0,COLOR_static_type___MMType___local_class))(variable0) /*MMType::local_class*/;
1210 goto return_label53;
1211 return_label53: while(false);
1212 tracehead = trace.prev;
1213 return variable0;
1214 }
1215 void inheritance___MMSpecAncestor___init(val_t self, val_t param0, val_t param1, int* init_table) {
1216 struct trace_t trace = {NULL, LOCATE_inheritance___MMSpecAncestor___init, 494};
1217 val_t variable0;
1218 val_t variable1;
1219 trace.prev = tracehead; tracehead = &trace;
1220 variable0 = param0;
1221 variable1 = param1;
1222 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMSpecAncestor].i]) return;
1223 ATTR_static_type___MMAncestor____inheriter( self) /*MMSpecAncestor::_inheriter*/ = variable0 /*inheriter*/;
1224 ATTR_static_type___MMAncestor____stype( self) /*MMSpecAncestor::_stype*/ = variable1 /*stype*/;
1225 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMSpecAncestor].i] = 1;
1226 tracehead = trace.prev;
1227 return;
1228 }
1229 val_t inheritance___MMDefaultAncestor___local_class(val_t self) {
1230 struct trace_t trace = {NULL, LOCATE_inheritance___MMDefaultAncestor___local_class, 503};
1231 val_t variable0;
1232 trace.prev = tracehead; tracehead = &trace;
1233 variable0 = ((static_type___MMAncestor___stype_t)CALL( self,COLOR_static_type___MMAncestor___stype))( self) /*MMDefaultAncestor::stype*/;
1234 variable0 = ((static_type___MMType___local_class_t)CALL(variable0,COLOR_static_type___MMType___local_class))(variable0) /*MMType::local_class*/;
1235 goto return_label55;
1236 return_label55: while(false);
1237 tracehead = trace.prev;
1238 return variable0;
1239 }
1240 void inheritance___MMDefaultAncestor___init(val_t self, val_t param0, val_t param1, int* init_table) {
1241 struct trace_t trace = {NULL, LOCATE_inheritance___MMDefaultAncestor___init, 505};
1242 val_t variable0;
1243 val_t variable1;
1244 val_t variable2;
1245 trace.prev = tracehead; tracehead = &trace;
1246 variable0 = param0;
1247 variable1 = param1;
1248 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMDefaultAncestor].i]) return;
1249 variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*b*/ == NIT_NULL /*null*/) || (( variable0 /*b*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*b*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*b*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*b*/,COLOR_kernel___Object_____eqeq))( variable0 /*b*/, NIT_NULL /*null*/) /*MMLocalClass::==*/)))))));
1250 if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_inheritance___MMDefaultAncestor___init, 507); nit_exit(1);}
1251 variable2 = ((abstractmetamodel___MMLocalClass___module_t)CALL( variable0 /*b*/,COLOR_abstractmetamodel___MMLocalClass___module))( variable0 /*b*/) /*MMLocalClass::module*/;
1252 variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable2 == NIT_NULL /*null*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2, NIT_NULL /*null*/) /*MMModule::==*/)))))));
1253 if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_inheritance___MMDefaultAncestor___init, 508); nit_exit(1);}
1254 variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*anc*/ == NIT_NULL /*null*/) || (( variable1 /*anc*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*anc*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*anc*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*anc*/,COLOR_kernel___Object_____eqeq))( variable1 /*anc*/, NIT_NULL /*null*/) /*MMType::==*/)))))));
1255 if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_inheritance___MMDefaultAncestor___init, 509); nit_exit(1);}
1256 variable2 = ((static_type___MMLocalClass___get_type_t)CALL( variable0 /*b*/,COLOR_static_type___MMLocalClass___get_type))( variable0 /*b*/) /*MMLocalClass::get_type*/;
1257 ((static_type___MMAncestor___inheriter__eq_t)CALL( self,COLOR_static_type___MMAncestor___inheriter__eq))( self, variable2) /*MMDefaultAncestor::inheriter=*/;
1258 ((static_type___MMAncestor___stype__eq_t)CALL( self,COLOR_static_type___MMAncestor___stype__eq))( self, variable1 /*anc*/) /*MMDefaultAncestor::stype=*/;
1259 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMDefaultAncestor].i] = 1;
1260 tracehead = trace.prev;
1261 return;
1262 }