compile: Fix inlined return in closure
[nit.git] / c_src / static_type._sep.c
1 /* This C file is generated by NIT to compile module static_type. */
2 #include "static_type._sep.h"
3 val_t static_type___MMLocalClass___get_type(val_t self) {
4 struct trace_t trace = {NULL, NULL, 27, LOCATE_static_type___MMLocalClass___get_type};
5 val_t variable[5];
6 void **closurevariable = NULL;
7 trace.prev = tracehead; tracehead = &trace;
8 trace.file = LOCATE_static_type;
9 variable[0] = self;
10 variable[2] = variable[0];
11 variable[2] = ATTR_static_type___MMLocalClass____base_type_cache(variable[2]) /*MMLocalClass::_base_type_cache*/;
12 variable[2] = TAG_Bool((variable[2] == NIT_NULL /*null*/) || ((variable[2] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[2])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[2], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[2])(variable[2], NIT_NULL /*null*/) /*Object::==*/)))));
13 if (UNTAG_Bool(variable[2])) { /*if*/
14 variable[2] = variable[0];
15 variable[3] = variable[0];
16 variable[4] = NEW_MMTypeSimpleClass_static_type___MMTypeSimpleClass___init(variable[3]); /*new MMTypeSimpleClass*/
17 variable[3] = variable[4];
18 ATTR_static_type___MMLocalClass____base_type_cache(variable[2]) /*MMLocalClass::_base_type_cache*/ = variable[3];
19 }
20 variable[2] = variable[0];
21 variable[2] = ATTR_static_type___MMLocalClass____base_type_cache(variable[2]) /*MMLocalClass::_base_type_cache*/;
22 variable[1] = variable[2];
23 goto return_label0;
24 return_label0: while(false);
25 tracehead = trace.prev;
26 return variable[1];
27 }
28 void static_type___MMLocalClass___add_ancestor(val_t self, val_t param0) {
29 struct trace_t trace = {NULL, NULL, 34, LOCATE_static_type___MMLocalClass___add_ancestor};
30 val_t variable[5];
31 void **closurevariable = NULL;
32 trace.prev = tracehead; tracehead = &trace;
33 trace.file = LOCATE_static_type;
34 variable[0] = self;
35 variable[1] = param0;
36 variable[3] = variable[0];
37 variable[3] = ATTR_static_type___MMLocalClass____ancestors(variable[3]) /*MMLocalClass::_ancestors*/;
38 variable[4] = CALL_static_type___MMAncestor___local_class( variable[1] /*a*/)( variable[1] /*a*/) /*MMAncestor::local_class*/;
39 variable[3] = CALL_abstract_collection___Map___has_key(variable[3])(variable[3], variable[4]) /*Map::has_key*/;
40 if (!UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[3])))) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_static_type___MMLocalClass___add_ancestor, LOCATE_static_type, 37); nit_exit(1);}
41 variable[3] = CALL_static_type___MMAncestor___local_class( variable[1] /*a*/)( variable[1] /*a*/) /*MMAncestor::local_class*/;
42 variable[4] = variable[0];
43 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] == variable[4]) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3],variable[4])):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], variable[4]) /*Object::==*/)))))));
44 if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_static_type___MMLocalClass___add_ancestor, LOCATE_static_type, 38); nit_exit(1);}
45 variable[3] = variable[0];
46 variable[3] = ATTR_static_type___MMLocalClass____ancestors(variable[3]) /*MMLocalClass::_ancestors*/;
47 variable[4] = CALL_static_type___MMAncestor___local_class( variable[1] /*a*/)( variable[1] /*a*/) /*MMAncestor::local_class*/;
48 CALL_abstract_collection___Map_____braeq(variable[3])(variable[3], variable[4], variable[1] /*a*/) /*Map::[]=*/;
49 return_label1: while(false);
50 tracehead = trace.prev;
51 return;
52 }
53 val_t static_type___MMLocalClass___ancestors(val_t self) {
54 struct trace_t trace = {NULL, NULL, 42, LOCATE_static_type___MMLocalClass___ancestors};
55 val_t *variable = NULL;
56 void **closurevariable = NULL;
57 trace.prev = tracehead; tracehead = &trace;
58 trace.file = LOCATE_static_type;
59 tracehead = trace.prev;
60 return ATTR_static_type___MMLocalClass____ancestors( self) /*MMLocalClass::_ancestors*/;
61 }
62 val_t static_type___MMLocalClass___ancestor(val_t self, val_t param0) {
63 struct trace_t trace = {NULL, NULL, 45, LOCATE_static_type___MMLocalClass___ancestor};
64 val_t variable[4];
65 void **closurevariable = NULL;
66 trace.prev = tracehead; tracehead = &trace;
67 trace.file = LOCATE_static_type;
68 variable[0] = self;
69 variable[1] = param0;
70 variable[3] = variable[0];
71 variable[3] = ATTR_static_type___MMLocalClass____ancestors(variable[3]) /*MMLocalClass::_ancestors*/;
72 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] == NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], NIT_NULL /*null*/) /*Object::==*/)))))));
73 if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_static_type___MMLocalClass___ancestor, LOCATE_static_type, 48); nit_exit(1);}
74 variable[3] = variable[0];
75 variable[3] = ATTR_static_type___MMLocalClass____ancestors(variable[3]) /*MMLocalClass::_ancestors*/;
76 variable[3] = CALL_abstract_collection___Map___has_key(variable[3])(variable[3], variable[1] /*c*/) /*Map::has_key*/;
77 if (UNTAG_Bool(variable[3])) { /*if*/
78 variable[3] = variable[0];
79 variable[3] = ATTR_static_type___MMLocalClass____ancestors(variable[3]) /*MMLocalClass::_ancestors*/;
80 variable[3] = CALL_abstract_collection___Map_____bra(variable[3])(variable[3], variable[1] /*c*/) /*Map::[]*/;
81 variable[3] = CALL_static_type___MMAncestor___stype(variable[3])(variable[3]) /*MMAncestor::stype*/;
82 variable[2] = variable[3];
83 goto return_label2;
84 }
85 variable[2] = NIT_NULL /*null*/;
86 goto return_label2;
87 return_label2: while(false);
88 tracehead = trace.prev;
89 return variable[2];
90 }
91 val_t static_type___MMLocalProperty___signature(val_t self) {
92 struct trace_t trace = {NULL, NULL, 57, LOCATE_static_type___MMLocalProperty___signature};
93 val_t *variable = NULL;
94 void **closurevariable = NULL;
95 trace.prev = tracehead; tracehead = &trace;
96 trace.file = LOCATE_static_type;
97 tracehead = trace.prev;
98 return ATTR_static_type___MMLocalProperty____signature( self) /*MMLocalProperty::_signature*/;
99 }
100 void static_type___MMLocalProperty___signature__eq(val_t self, val_t param0) {
101 struct trace_t trace = {NULL, NULL, 57, LOCATE_static_type___MMLocalProperty___signature__eq};
102 val_t *variable = NULL;
103 void **closurevariable = NULL;
104 trace.prev = tracehead; tracehead = &trace;
105 trace.file = LOCATE_static_type;
106 ATTR_static_type___MMLocalProperty____signature( self) /*MMLocalProperty::_signature*/ = param0;
107 tracehead = trace.prev;
108 return;
109 }
110 val_t static_type___MMLocalProperty___signature_for(val_t self, val_t param0) {
111 struct trace_t trace = {NULL, NULL, 62, LOCATE_static_type___MMLocalProperty___signature_for};
112 val_t variable[5];
113 void **closurevariable = NULL;
114 trace.prev = tracehead; tracehead = &trace;
115 trace.file = LOCATE_static_type;
116 variable[0] = self;
117 variable[1] = param0;
118 variable[3] = variable[0];
119 variable[3] = CALL_abstractmetamodel___MMLocalProperty___local_class(variable[3])(variable[3]) /*MMLocalProperty::local_class*/;
120 variable[3] = CALL_static_type___MMLocalClass___get_type(variable[3])(variable[3]) /*MMLocalClass::get_type*/;
121 variable[3] = TAG_Bool(( variable[1] /*t*/ == variable[3]) || (( variable[1] /*t*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*t*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*t*/,variable[3])):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*t*/)( variable[1] /*t*/, variable[3]) /*Object::==*/)))));
122 if (UNTAG_Bool(variable[3])) { /*if*/
123 variable[3] = variable[0];
124 variable[3] = CALL_static_type___MMLocalProperty___signature(variable[3])(variable[3]) /*MMLocalProperty::signature*/;
125 variable[2] = variable[3];
126 goto return_label3;
127 }
128 variable[3] = variable[0];
129 variable[3] = ATTR_static_type___MMLocalProperty____signatures_cache(variable[3]) /*MMLocalProperty::_signatures_cache*/;
130 variable[3] = CALL_abstract_collection___Map___has_key(variable[3])(variable[3], variable[1] /*t*/) /*CoupleMap::has_key*/;
131 if (UNTAG_Bool(variable[3])) { /*if*/
132 variable[3] = variable[0];
133 variable[3] = ATTR_static_type___MMLocalProperty____signatures_cache(variable[3]) /*MMLocalProperty::_signatures_cache*/;
134 variable[3] = CALL_abstract_collection___Map_____bra(variable[3])(variable[3], variable[1] /*t*/) /*CoupleMap::[]*/;
135 variable[2] = variable[3];
136 goto return_label3;
137 }
138 variable[4] = variable[0];
139 variable[4] = CALL_static_type___MMLocalProperty___signature(variable[4])(variable[4]) /*MMLocalProperty::signature*/;
140 variable[4] = CALL_static_type___MMSignature___adaptation_to(variable[4])(variable[4], variable[1] /*t*/) /*MMSignature::adaptation_to*/;
141 variable[3] = variable[4];
142 variable[4] = variable[0];
143 variable[4] = ATTR_static_type___MMLocalProperty____signatures_cache(variable[4]) /*MMLocalProperty::_signatures_cache*/;
144 CALL_abstract_collection___Map_____braeq(variable[4])(variable[4], variable[1] /*t*/, variable[3] /*res*/) /*HashMap::[]=*/;
145 variable[2] = variable[3] /*res*/;
146 goto return_label3;
147 return_label3: while(false);
148 tracehead = trace.prev;
149 return variable[2];
150 }
151 val_t static_type___MMSignature___to_s(val_t self) {
152 struct trace_t trace = {NULL, NULL, 123, LOCATE_static_type___MMSignature___to_s};
153 val_t variable[15];
154 void **closurevariable = NULL;
155 trace.prev = tracehead; tracehead = &trace;
156 trace.file = LOCATE_static_type;
157 variable[0] = self;
158 /*variable[2] is variable s*/
159 variable[3] = variable[0];
160 variable[3] = ATTR_static_type___MMSignature____params(variable[3]) /*MMSignature::_params*/;
161 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] == NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], NIT_NULL /*null*/) /*Object::==*/)))))));
162 variable[4] = variable[3];
163 if (UNTAG_Bool(variable[4])) { /* and */
164 variable[4] = variable[0];
165 variable[4] = ATTR_static_type___MMSignature____params(variable[4]) /*MMSignature::_params*/;
166 variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*AbstractArray::length*/;
167 variable[4] = TAG_Bool(UNTAG_Int(variable[4])>UNTAG_Int( TAG_Int(0)));
168 }
169 variable[3] = variable[4];
170 if (UNTAG_Bool(variable[3])) { /*if*/
171 /*variable[3] is variable tmp*/
172 variable[5] = variable[0];
173 variable[5] = ATTR_static_type___MMSignature____params(variable[5]) /*MMSignature::_params*/;
174 variable[5] = CALL_abstract_collection___Collection___length(variable[5])(variable[5]) /*AbstractArray::length*/;
175 variable[6] = NEW_Array_array___Array___with_capacity(variable[5]); /*new Array[String]*/
176 variable[5] = variable[6];
177 variable[4] = variable[5];
178 variable[5] = variable[0];
179 variable[5] = ATTR_static_type___MMSignature____params(variable[5]) /*MMSignature::_params*/;
180 variable[5] = CALL_abstract_collection___Collection___length(variable[5])(variable[5]) /*AbstractArray::length*/;
181 variable[6] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[5]); /*new Range[Int]*/
182 variable[5] = variable[6];
183 variable[5] = CALL_abstract_collection___Collection___iterator(variable[5])(variable[5]) /*Range::iterator*/;
184 while (true) { /*for*/
185 variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*Iterator::is_ok*/;
186 if (!UNTAG_Bool(variable[6])) break; /*for*/
187 variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*Iterator::item*/;
188 variable[7] = variable[6];
189 variable[9] = variable[0];
190 variable[9] = ATTR_static_type___MMSignature____params(variable[9]) /*MMSignature::_params*/;
191 variable[10] = variable[9];
192 variable[11] = variable[7] /*i*/;
193 variable[13] = TAG_Bool(UNTAG_Int( variable[11] /*index*/)>=UNTAG_Int( TAG_Int(0)));
194 variable[14] = variable[13];
195 if (UNTAG_Bool(variable[14])) { /* and */
196 variable[14] = variable[10];
197 variable[14] = ATTR_array___AbstractArray____length(variable[14]) /*AbstractArray::_length*/;
198 variable[14] = TAG_Bool(UNTAG_Int( variable[11] /*index*/)<UNTAG_Int(variable[14]));
199 }
200 variable[13] = variable[14];
201 if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_static_type, 229); nit_exit(1);}
202 variable[13] = variable[10];
203 variable[13] = ATTR_array___Array____items(variable[13]) /*Array::_items*/;
204 variable[13] = UNBOX_NativeArray(variable[13])[UNTAG_Int( variable[11] /*index*/)];
205 variable[12] = variable[13];
206 goto return_label6;
207 return_label6: while(false);
208 variable[9] = variable[12];
209 variable[8] = variable[9];
210 variable[9] = CALL_string___Object___to_s( variable[8] /*p*/)( variable[8] /*p*/) /*Object::to_s*/;
211 CALL_abstract_collection___SimpleCollection___add( variable[4] /*a*/)( variable[4] /*a*/, variable[9]) /*AbstractArray::add*/;
212 continue_5: while(0);
213 CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*Iterator::next*/;
214 }
215 break_5: while(0);
216 variable[5] = NEW_Array_array___Array___with_capacity(TAG_Int(3)); /*new Array[String]*/
217 variable[6] = NEW_String_string___String___with_native(BOX_NativeString("("), TAG_Int(1)); /*new String*/
218 variable[7] = variable[6];
219 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[7]) /*AbstractArray::add*/;
220 variable[8] = NEW_String_string___String___with_native(BOX_NativeString(","), TAG_Int(1)); /*new String*/
221 variable[8] = CALL_string___Collection___join( variable[4] /*a*/)( variable[4] /*a*/, variable[8]) /*Collection::join*/;
222 variable[9] = variable[8];
223 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[9]) /*AbstractArray::add*/;
224 variable[10] = NEW_String_string___String___with_native(BOX_NativeString(")"), TAG_Int(1)); /*new String*/
225 variable[11] = variable[10];
226 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[11]) /*AbstractArray::add*/;
227 variable[5] = CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/;
228 variable[2] = variable[5] /*s=*/;
229 } else { /*if*/
230 variable[3] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
231 variable[2] = variable[3] /*s=*/;
232 }
233 variable[3] = variable[0];
234 variable[3] = ATTR_static_type___MMSignature____return_type(variable[3]) /*MMSignature::_return_type*/;
235 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] == NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], NIT_NULL /*null*/) /*Object::==*/)))))));
236 if (UNTAG_Bool(variable[3])) { /*if*/
237 variable[3] = NEW_Array_array___Array___with_capacity(TAG_Int(3)); /*new Array[String]*/
238 variable[4] = NEW_String_string___String___with_native(BOX_NativeString(": "), TAG_Int(2)); /*new String*/
239 variable[5] = variable[4];
240 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[5]) /*AbstractArray::add*/;
241 variable[6] = variable[0];
242 variable[6] = ATTR_static_type___MMSignature____return_type(variable[6]) /*MMSignature::_return_type*/;
243 variable[7] = variable[6];
244 variable[7] = CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/;
245 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[7]) /*AbstractArray::add*/;
246 variable[8] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
247 variable[9] = variable[8];
248 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[9]) /*AbstractArray::add*/;
249 variable[3] = CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/;
250 CALL_abstract_collection___IndexedCollection___append( variable[2] /*s*/)( variable[2] /*s*/, variable[3]) /*String::append*/;
251 }
252 variable[1] = variable[2] /*s*/;
253 goto return_label4;
254 return_label4: while(false);
255 tracehead = trace.prev;
256 return variable[1];
257 }
258 val_t static_type___MMSignature___recv(val_t self) {
259 struct trace_t trace = {NULL, NULL, 76, LOCATE_static_type___MMSignature___recv};
260 val_t *variable = NULL;
261 void **closurevariable = NULL;
262 trace.prev = tracehead; tracehead = &trace;
263 trace.file = LOCATE_static_type;
264 tracehead = trace.prev;
265 return ATTR_static_type___MMSignature____recv( self) /*MMSignature::_recv*/;
266 }
267 val_t static_type___MMSignature___return_type(val_t self) {
268 struct trace_t trace = {NULL, NULL, 82, LOCATE_static_type___MMSignature___return_type};
269 val_t *variable = NULL;
270 void **closurevariable = NULL;
271 trace.prev = tracehead; tracehead = &trace;
272 trace.file = LOCATE_static_type;
273 tracehead = trace.prev;
274 return ATTR_static_type___MMSignature____return_type( self) /*MMSignature::_return_type*/;
275 }
276 val_t static_type___MMSignature___closures(val_t self) {
277 struct trace_t trace = {NULL, NULL, 85, LOCATE_static_type___MMSignature___closures};
278 val_t *variable = NULL;
279 void **closurevariable = NULL;
280 trace.prev = tracehead; tracehead = &trace;
281 trace.file = LOCATE_static_type;
282 tracehead = trace.prev;
283 return ATTR_static_type___MMSignature____closures( self) /*MMSignature::_closures*/;
284 }
285 val_t static_type___MMSignature___arity(val_t self) {
286 struct trace_t trace = {NULL, NULL, 88, LOCATE_static_type___MMSignature___arity};
287 val_t variable[3];
288 void **closurevariable = NULL;
289 trace.prev = tracehead; tracehead = &trace;
290 trace.file = LOCATE_static_type;
291 variable[0] = self;
292 variable[2] = variable[0];
293 variable[2] = ATTR_static_type___MMSignature____params(variable[2]) /*MMSignature::_params*/;
294 variable[2] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[2] == NIT_NULL /*null*/) || ((variable[2] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[2])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[2], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[2])(variable[2], NIT_NULL /*null*/) /*Object::==*/)))))));
295 if (!UNTAG_Bool(variable[2])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_static_type___MMSignature___arity, LOCATE_static_type, 91); nit_exit(1);}
296 variable[2] = variable[0];
297 variable[2] = ATTR_static_type___MMSignature____params(variable[2]) /*MMSignature::_params*/;
298 variable[2] = CALL_abstract_collection___Collection___length(variable[2])(variable[2]) /*AbstractArray::length*/;
299 variable[1] = variable[2];
300 goto return_label7;
301 return_label7: while(false);
302 tracehead = trace.prev;
303 return variable[1];
304 }
305 val_t static_type___MMSignature_____l(val_t self, val_t param0) {
306 struct trace_t trace = {NULL, NULL, 95, LOCATE_static_type___MMSignature_____l};
307 val_t variable[8];
308 void **closurevariable = NULL;
309 trace.prev = tracehead; tracehead = &trace;
310 trace.file = LOCATE_static_type;
311 variable[0] = self;
312 variable[1] = param0;
313 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*s*/ == NIT_NULL /*null*/) || (( variable[1] /*s*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*s*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*s*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*s*/)( variable[1] /*s*/, NIT_NULL /*null*/) /*Object::==*/)))))));
314 if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_static_type___MMSignature_____l, LOCATE_static_type, 98); nit_exit(1);}
315 variable[3] = variable[0];
316 variable[3] = TAG_Bool((variable[3] == variable[1] /*s*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], variable[1] /*s*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], variable[1] /*s*/) /*Object::==*/)))));
317 if (UNTAG_Bool(variable[3])) { /*if*/
318 variable[2] = TAG_Bool(true);
319 goto return_label8;
320 }
321 variable[3] = variable[0];
322 variable[3] = ATTR_static_type___MMSignature____recv(variable[3]) /*MMSignature::_recv*/;
323 variable[3] = CALL_static_type___MMType___module(variable[3])(variable[3]) /*MMType::module*/;
324 variable[4] = CALL_static_type___MMSignature___recv( variable[1] /*s*/)( variable[1] /*s*/) /*MMSignature::recv*/;
325 variable[4] = CALL_static_type___MMType___module(variable[4])(variable[4]) /*MMType::module*/;
326 variable[3] = TAG_Bool((variable[3] == variable[4]) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3],variable[4])):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], variable[4]) /*Object::==*/)))));
327 if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_static_type___MMSignature_____l, LOCATE_static_type, 102); nit_exit(1);}
328 variable[3] = variable[0];
329 variable[3] = CALL_static_type___MMSignature___arity(variable[3])(variable[3]) /*MMSignature::arity*/;
330 variable[4] = CALL_static_type___MMSignature___arity( variable[1] /*s*/)( variable[1] /*s*/) /*MMSignature::arity*/;
331 variable[3] = TAG_Bool((variable[3])!=(variable[4]));
332 variable[4] = variable[3];
333 if (!UNTAG_Bool(variable[4])) { /* or */
334 variable[4] = variable[0];
335 variable[4] = ATTR_static_type___MMSignature____return_type(variable[4]) /*MMSignature::_return_type*/;
336 variable[4] = TAG_Bool((variable[4] == NIT_NULL /*null*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4], NIT_NULL /*null*/) /*Object::==*/)))));
337 variable[5] = CALL_static_type___MMSignature___return_type( variable[1] /*s*/)( variable[1] /*s*/) /*MMSignature::return_type*/;
338 variable[5] = TAG_Bool((variable[5] == NIT_NULL /*null*/) || ((variable[5] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[5])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[5], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[5])(variable[5], NIT_NULL /*null*/) /*Object::==*/)))));
339 variable[4] = TAG_Bool((variable[4])!=(variable[5]));
340 }
341 variable[3] = variable[4];
342 if (UNTAG_Bool(variable[3])) { /*if*/
343 variable[2] = TAG_Bool(false);
344 goto return_label8;
345 }
346 variable[3] = variable[0];
347 variable[3] = ATTR_static_type___MMSignature____return_type(variable[3]) /*MMSignature::_return_type*/;
348 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] == NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], NIT_NULL /*null*/) /*Object::==*/)))))));
349 variable[4] = variable[3];
350 if (UNTAG_Bool(variable[4])) { /* and */
351 variable[4] = variable[0];
352 variable[4] = ATTR_static_type___MMSignature____return_type(variable[4]) /*MMSignature::_return_type*/;
353 variable[5] = CALL_static_type___MMSignature___return_type( variable[1] /*s*/)( variable[1] /*s*/) /*MMSignature::return_type*/;
354 variable[4] = CALL_static_type___MMType_____l(variable[4])(variable[4], variable[5]) /*MMType::<*/;
355 variable[4] = TAG_Bool(!UNTAG_Bool(variable[4]));
356 }
357 variable[3] = variable[4];
358 if (UNTAG_Bool(variable[3])) { /*if*/
359 variable[2] = TAG_Bool(false);
360 goto return_label8;
361 }
362 variable[3] = variable[0];
363 variable[3] = CALL_static_type___MMSignature___arity(variable[3])(variable[3]) /*MMSignature::arity*/;
364 variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[3]); /*new Range[Int]*/
365 variable[3] = variable[4];
366 variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*Range::iterator*/;
367 while (true) { /*for*/
368 variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*Iterator::is_ok*/;
369 if (!UNTAG_Bool(variable[4])) break; /*for*/
370 variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*Iterator::item*/;
371 variable[5] = variable[4];
372 variable[6] = CALL_static_type___MMSignature_____bra( variable[1] /*s*/)( variable[1] /*s*/, variable[5] /*i*/) /*MMSignature::[]*/;
373 variable[7] = variable[0];
374 variable[7] = CALL_static_type___MMSignature_____bra(variable[7])(variable[7], variable[5] /*i*/) /*MMSignature::[]*/;
375 variable[6] = CALL_static_type___MMType_____l(variable[6])(variable[6], variable[7]) /*MMType::<*/;
376 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[6])))) { /*if*/
377 variable[2] = TAG_Bool(false);
378 goto return_label8;
379 }
380 continue_9: while(0);
381 CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*Iterator::next*/;
382 }
383 break_9: while(0);
384 variable[2] = TAG_Bool(true);
385 goto return_label8;
386 return_label8: while(false);
387 tracehead = trace.prev;
388 return variable[2];
389 }
390 val_t static_type___MMSignature_____bra(val_t self, val_t param0) {
391 struct trace_t trace = {NULL, NULL, 116, LOCATE_static_type___MMSignature_____bra};
392 val_t variable[9];
393 void **closurevariable = NULL;
394 trace.prev = tracehead; tracehead = &trace;
395 trace.file = LOCATE_static_type;
396 variable[0] = self;
397 variable[1] = param0;
398 variable[3] = variable[0];
399 variable[3] = ATTR_static_type___MMSignature____params(variable[3]) /*MMSignature::_params*/;
400 variable[3] = CALL_abstract_collection___Collection___length(variable[3])(variable[3]) /*AbstractArray::length*/;
401 variable[3] = TAG_Bool(UNTAG_Int(variable[3])>UNTAG_Int( variable[1] /*i*/));
402 if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_static_type___MMSignature_____bra, LOCATE_static_type, 119); nit_exit(1);}
403 variable[3] = variable[0];
404 variable[3] = ATTR_static_type___MMSignature____params(variable[3]) /*MMSignature::_params*/;
405 variable[4] = variable[3];
406 variable[5] = variable[1] /*i*/;
407 variable[7] = TAG_Bool(UNTAG_Int( variable[5] /*index*/)>=UNTAG_Int( TAG_Int(0)));
408 variable[8] = variable[7];
409 if (UNTAG_Bool(variable[8])) { /* and */
410 variable[8] = variable[4];
411 variable[8] = ATTR_array___AbstractArray____length(variable[8]) /*AbstractArray::_length*/;
412 variable[8] = TAG_Bool(UNTAG_Int( variable[5] /*index*/)<UNTAG_Int(variable[8]));
413 }
414 variable[7] = variable[8];
415 if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_static_type, 229); nit_exit(1);}
416 variable[7] = variable[4];
417 variable[7] = ATTR_array___Array____items(variable[7]) /*Array::_items*/;
418 variable[7] = UNBOX_NativeArray(variable[7])[UNTAG_Int( variable[5] /*index*/)];
419 variable[6] = variable[7];
420 goto return_label11;
421 return_label11: while(false);
422 variable[3] = variable[6];
423 variable[2] = variable[3];
424 goto return_label10;
425 return_label10: while(false);
426 tracehead = trace.prev;
427 return variable[2];
428 }
429 val_t static_type___MMSignature___adaptation_to(val_t self, val_t param0) {
430 struct trace_t trace = {NULL, NULL, 145, LOCATE_static_type___MMSignature___adaptation_to};
431 val_t variable[12];
432 void **closurevariable = NULL;
433 trace.prev = tracehead; tracehead = &trace;
434 trace.file = LOCATE_static_type;
435 variable[0] = self;
436 variable[1] = param0;
437 variable[3] = variable[0];
438 variable[3] = ATTR_static_type___MMSignature____recv(variable[3]) /*MMSignature::_recv*/;
439 variable[3] = TAG_Bool((variable[3] == variable[1] /*r*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], variable[1] /*r*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], variable[1] /*r*/) /*Object::==*/)))));
440 if (UNTAG_Bool(variable[3])) { /*if*/
441 variable[3] = variable[0];
442 variable[2] = variable[3];
443 goto return_label12;
444 }
445 variable[4] = CALL_static_type___MMType___module( variable[1] /*r*/)( variable[1] /*r*/) /*MMType::module*/;
446 variable[3] = variable[4];
447 variable[5] = variable[0];
448 variable[5] = ATTR_static_type___MMSignature____params(variable[5]) /*MMSignature::_params*/;
449 variable[4] = variable[5];
450 variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*p*/ == NIT_NULL /*null*/) || (( variable[4] /*p*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*p*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*p*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*p*/)( variable[4] /*p*/, NIT_NULL /*null*/) /*Object::==*/)))))));
451 if (UNTAG_Bool(variable[5])) { /*if*/
452 variable[5] = NEW_Array_array___Array___init(); /*new Array[MMType]*/
453 variable[4] = variable[5] /*p=*/;
454 variable[5] = variable[0];
455 variable[5] = ATTR_static_type___MMSignature____params(variable[5]) /*MMSignature::_params*/;
456 variable[5] = CALL_abstract_collection___Collection___iterator(variable[5])(variable[5]) /*AbstractArray::iterator*/;
457 while (true) { /*for*/
458 variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*ArrayIterator::is_ok*/;
459 if (!UNTAG_Bool(variable[6])) break; /*for*/
460 variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*ArrayIterator::item*/;
461 variable[7] = variable[6];
462 variable[8] = CALL_static_type___MMType___for_module( variable[7] /*i*/)( variable[7] /*i*/, variable[3] /*mod*/) /*MMType::for_module*/;
463 variable[8] = CALL_static_type___MMType___adapt_to(variable[8])(variable[8], variable[1] /*r*/) /*MMType::adapt_to*/;
464 CALL_abstract_collection___SimpleCollection___add( variable[4] /*p*/)( variable[4] /*p*/, variable[8]) /*AbstractArray::add*/;
465 continue_13: while(0);
466 CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*ArrayIterator::next*/;
467 }
468 break_13: while(0);
469 }
470 variable[6] = variable[0];
471 variable[6] = ATTR_static_type___MMSignature____return_type(variable[6]) /*MMSignature::_return_type*/;
472 variable[5] = variable[6];
473 variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*rv*/ == NIT_NULL /*null*/) || (( variable[5] /*rv*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*rv*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*rv*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*rv*/)( variable[5] /*rv*/, NIT_NULL /*null*/) /*Object::==*/)))))));
474 if (UNTAG_Bool(variable[6])) { /*if*/
475 variable[6] = CALL_static_type___MMType___for_module( variable[5] /*rv*/)( variable[5] /*rv*/, variable[3] /*mod*/) /*MMType::for_module*/;
476 variable[6] = CALL_static_type___MMType___adapt_to(variable[6])(variable[6], variable[1] /*r*/) /*MMType::adapt_to*/;
477 variable[5] = variable[6] /*rv=*/;
478 }
479 variable[7] = NEW_MMSignature_static_type___MMSignature___init( variable[4] /*p*/, variable[5] /*rv*/, variable[1] /*r*/); /*new MMSignature*/
480 variable[6] = variable[7];
481 variable[7] = variable[0];
482 variable[7] = ATTR_static_type___MMSignature____closures(variable[7]) /*MMSignature::_closures*/;
483 variable[7] = CALL_abstract_collection___Collection___iterator(variable[7])(variable[7]) /*AbstractArray::iterator*/;
484 while (true) { /*for*/
485 variable[8] = CALL_abstract_collection___Iterator___is_ok(variable[7])(variable[7]) /*ArrayIterator::is_ok*/;
486 if (!UNTAG_Bool(variable[8])) break; /*for*/
487 variable[8] = CALL_abstract_collection___Iterator___item(variable[7])(variable[7]) /*ArrayIterator::item*/;
488 variable[9] = variable[8];
489 variable[10] = CALL_static_type___MMSignature___closures( variable[6] /*res*/)( variable[6] /*res*/) /*MMSignature::closures*/;
490 variable[11] = CALL_static_type___MMClosure___adaptation_to( variable[9] /*clos*/)( variable[9] /*clos*/, variable[1] /*r*/) /*MMClosure::adaptation_to*/;
491 CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
492 continue_14: while(0);
493 CALL_abstract_collection___Iterator___next(variable[7])(variable[7]) /*ArrayIterator::next*/;
494 }
495 break_14: while(0);
496 variable[2] = variable[6] /*res*/;
497 goto return_label12;
498 return_label12: while(false);
499 tracehead = trace.prev;
500 return variable[2];
501 }
502 val_t static_type___MMSignature___not_for_self(val_t self) {
503 struct trace_t trace = {NULL, NULL, 172, LOCATE_static_type___MMSignature___not_for_self};
504 val_t variable[12];
505 void **closurevariable = NULL;
506 trace.prev = tracehead; tracehead = &trace;
507 trace.file = LOCATE_static_type;
508 variable[0] = self;
509 variable[3] = variable[0];
510 variable[3] = ATTR_static_type___MMSignature____not_for_self_cache(variable[3]) /*MMSignature::_not_for_self_cache*/;
511 variable[2] = variable[3];
512 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*res*/ == NIT_NULL /*null*/) || (( variable[2] /*res*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*res*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*res*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*res*/)( variable[2] /*res*/, NIT_NULL /*null*/) /*Object::==*/)))))));
513 if (UNTAG_Bool(variable[3])) { /*if*/
514 variable[1] = variable[2] /*res*/;
515 goto return_label15;
516 }
517 variable[3] = TAG_Bool(false);
518 variable[5] = variable[0];
519 variable[5] = ATTR_static_type___MMSignature____params(variable[5]) /*MMSignature::_params*/;
520 variable[4] = variable[5];
521 variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*p*/ == NIT_NULL /*null*/) || (( variable[4] /*p*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*p*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*p*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*p*/)( variable[4] /*p*/, NIT_NULL /*null*/) /*Object::==*/)))))));
522 if (UNTAG_Bool(variable[5])) { /*if*/
523 variable[5] = NEW_Array_array___Array___init(); /*new Array[MMType]*/
524 variable[4] = variable[5] /*p=*/;
525 variable[5] = variable[0];
526 variable[5] = ATTR_static_type___MMSignature____params(variable[5]) /*MMSignature::_params*/;
527 variable[5] = CALL_abstract_collection___Collection___iterator(variable[5])(variable[5]) /*AbstractArray::iterator*/;
528 while (true) { /*for*/
529 variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*ArrayIterator::is_ok*/;
530 if (!UNTAG_Bool(variable[6])) break; /*for*/
531 variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*ArrayIterator::item*/;
532 variable[7] = variable[6];
533 variable[9] = CALL_static_type___MMType___not_for_self( variable[7] /*i*/)( variable[7] /*i*/) /*MMType::not_for_self*/;
534 variable[8] = variable[9];
535 variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*i*/ == variable[8] /*i2*/) || (( variable[7] /*i*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*i*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*i*/, variable[8] /*i2*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*i*/)( variable[7] /*i*/, variable[8] /*i2*/) /*Object::==*/)))))));
536 if (UNTAG_Bool(variable[9])) { /*if*/
537 variable[3] = TAG_Bool(true) /*need_for_self=*/;
538 }
539 CALL_abstract_collection___SimpleCollection___add( variable[4] /*p*/)( variable[4] /*p*/, variable[8] /*i2*/) /*AbstractArray::add*/;
540 continue_16: while(0);
541 CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*ArrayIterator::next*/;
542 }
543 break_16: while(0);
544 }
545 variable[6] = variable[0];
546 variable[6] = ATTR_static_type___MMSignature____return_type(variable[6]) /*MMSignature::_return_type*/;
547 variable[5] = variable[6];
548 variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*rv*/ == NIT_NULL /*null*/) || (( variable[5] /*rv*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*rv*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*rv*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*rv*/)( variable[5] /*rv*/, NIT_NULL /*null*/) /*Object::==*/)))))));
549 if (UNTAG_Bool(variable[6])) { /*if*/
550 variable[6] = CALL_static_type___MMType___not_for_self( variable[5] /*rv*/)( variable[5] /*rv*/) /*MMType::not_for_self*/;
551 variable[5] = variable[6] /*rv=*/;
552 variable[6] = variable[0];
553 variable[6] = ATTR_static_type___MMSignature____return_type(variable[6]) /*MMSignature::_return_type*/;
554 variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*rv*/ == variable[6]) || (( variable[5] /*rv*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*rv*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*rv*/,variable[6])):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*rv*/)( variable[5] /*rv*/, variable[6]) /*Object::==*/)))))));
555 if (UNTAG_Bool(variable[6])) { /*if*/
556 variable[3] = TAG_Bool(true) /*need_for_self=*/;
557 }
558 }
559 variable[7] = variable[0];
560 variable[7] = ATTR_static_type___MMSignature____closures(variable[7]) /*MMSignature::_closures*/;
561 variable[6] = variable[7];
562 variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*clos*/ == NIT_NULL /*null*/) || (( variable[6] /*clos*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*clos*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*clos*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*clos*/)( variable[6] /*clos*/, NIT_NULL /*null*/) /*Object::==*/)))))));
563 if (UNTAG_Bool(variable[7])) { /*if*/
564 variable[7] = NEW_Array_array___Array___init(); /*new Array[MMClosure]*/
565 variable[6] = variable[7] /*clos=*/;
566 variable[7] = variable[0];
567 variable[7] = ATTR_static_type___MMSignature____closures(variable[7]) /*MMSignature::_closures*/;
568 variable[7] = CALL_abstract_collection___Collection___iterator(variable[7])(variable[7]) /*AbstractArray::iterator*/;
569 while (true) { /*for*/
570 variable[8] = CALL_abstract_collection___Iterator___is_ok(variable[7])(variable[7]) /*ArrayIterator::is_ok*/;
571 if (!UNTAG_Bool(variable[8])) break; /*for*/
572 variable[8] = CALL_abstract_collection___Iterator___item(variable[7])(variable[7]) /*ArrayIterator::item*/;
573 variable[9] = variable[8];
574 variable[11] = CALL_static_type___MMClosure___not_for_self( variable[9] /*c*/)( variable[9] /*c*/) /*MMClosure::not_for_self*/;
575 variable[10] = variable[11];
576 variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*c2*/ == variable[9] /*c*/) || (( variable[10] /*c2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*c2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*c2*/, variable[9] /*c*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*c2*/)( variable[10] /*c2*/, variable[9] /*c*/) /*Object::==*/)))))));
577 if (UNTAG_Bool(variable[11])) { /*if*/
578 variable[3] = TAG_Bool(true) /*need_for_self=*/;
579 }
580 CALL_abstract_collection___SimpleCollection___add( variable[6] /*clos*/)( variable[6] /*clos*/, variable[10] /*c2*/) /*AbstractArray::add*/;
581 continue_17: while(0);
582 CALL_abstract_collection___Iterator___next(variable[7])(variable[7]) /*ArrayIterator::next*/;
583 }
584 break_17: while(0);
585 }
586 if (UNTAG_Bool( variable[3] /*need_for_self*/)) { /*if*/
587 variable[7] = variable[0];
588 variable[7] = ATTR_static_type___MMSignature____recv(variable[7]) /*MMSignature::_recv*/;
589 variable[8] = NEW_MMSignature_static_type___MMSignature___init( variable[4] /*p*/, variable[5] /*rv*/, variable[7]); /*new MMSignature*/
590 variable[7] = variable[8];
591 variable[2] = variable[7] /*res=*/;
592 variable[7] = CALL_static_type___MMSignature___closures( variable[2] /*res*/)( variable[2] /*res*/) /*MMSignature::closures*/;
593 CALL_abstract_collection___SimpleCollection___add_all(variable[7])(variable[7], variable[6] /*clos*/) /*SimpleCollection::add_all*/;
594 } else { /*if*/
595 variable[7] = variable[0];
596 variable[2] = variable[7] /*res=*/;
597 }
598 variable[7] = variable[0];
599 ATTR_static_type___MMSignature____not_for_self_cache(variable[7]) /*MMSignature::_not_for_self_cache*/ = variable[2] /*res*/;
600 variable[1] = variable[2] /*res*/;
601 goto return_label15;
602 return_label15: while(false);
603 tracehead = trace.prev;
604 return variable[1];
605 }
606 void static_type___MMSignature___init(val_t self, val_t param0, val_t param1, val_t param2, int* init_table) {
607 struct trace_t trace = {NULL, NULL, 217, LOCATE_static_type___MMSignature___init};
608 val_t variable[6];
609 void **closurevariable = NULL;
610 trace.prev = tracehead; tracehead = &trace;
611 trace.file = LOCATE_static_type;
612 variable[0] = self;
613 variable[1] = param0;
614 variable[2] = param1;
615 variable[3] = param2;
616 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMSignature].i]) return;
617 variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*params*/ == NIT_NULL /*null*/) || (( variable[1] /*params*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*params*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*params*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*params*/)( variable[1] /*params*/, NIT_NULL /*null*/) /*Object::==*/)))))));
618 if (!UNTAG_Bool(variable[5])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_static_type___MMSignature___init, LOCATE_static_type, 219); nit_exit(1);}
619 variable[5] = variable[0];
620 ATTR_static_type___MMSignature____params(variable[5]) /*MMSignature::_params*/ = variable[1] /*params*/;
621 variable[5] = variable[0];
622 ATTR_static_type___MMSignature____return_type(variable[5]) /*MMSignature::_return_type*/ = variable[2] /*return_type*/;
623 variable[5] = variable[0];
624 ATTR_static_type___MMSignature____recv(variable[5]) /*MMSignature::_recv*/ = variable[3] /*r*/;
625 return_label18: while(false);
626 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMSignature].i] = 1;
627 tracehead = trace.prev;
628 return;
629 }
630 val_t static_type___MMClosure___signature(val_t self) {
631 struct trace_t trace = {NULL, NULL, 228, LOCATE_static_type___MMClosure___signature};
632 val_t *variable = NULL;
633 void **closurevariable = NULL;
634 trace.prev = tracehead; tracehead = &trace;
635 trace.file = LOCATE_static_type;
636 tracehead = trace.prev;
637 return ATTR_static_type___MMClosure____signature( self) /*MMClosure::_signature*/;
638 }
639 val_t static_type___MMClosure___is_break(val_t self) {
640 struct trace_t trace = {NULL, NULL, 231, LOCATE_static_type___MMClosure___is_break};
641 val_t *variable = NULL;
642 void **closurevariable = NULL;
643 trace.prev = tracehead; tracehead = &trace;
644 trace.file = LOCATE_static_type;
645 tracehead = trace.prev;
646 return ATTR_static_type___MMClosure____is_break( self) /*MMClosure::_is_break*/;
647 }
648 val_t static_type___MMClosure___is_optional(val_t self) {
649 struct trace_t trace = {NULL, NULL, 235, LOCATE_static_type___MMClosure___is_optional};
650 val_t *variable = NULL;
651 void **closurevariable = NULL;
652 trace.prev = tracehead; tracehead = &trace;
653 trace.file = LOCATE_static_type;
654 tracehead = trace.prev;
655 return ATTR_static_type___MMClosure____is_optional( self) /*MMClosure::_is_optional*/;
656 }
657 val_t static_type___MMClosure___adaptation_to(val_t self, val_t param0) {
658 struct trace_t trace = {NULL, NULL, 239, LOCATE_static_type___MMClosure___adaptation_to};
659 val_t variable[7];
660 void **closurevariable = NULL;
661 trace.prev = tracehead; tracehead = &trace;
662 trace.file = LOCATE_static_type;
663 variable[0] = self;
664 variable[1] = param0;
665 variable[3] = variable[0];
666 variable[3] = ATTR_static_type___MMClosure____signature(variable[3]) /*MMClosure::_signature*/;
667 variable[3] = CALL_static_type___MMSignature___adaptation_to(variable[3])(variable[3], variable[1] /*r*/) /*MMSignature::adaptation_to*/;
668 variable[4] = variable[0];
669 variable[4] = ATTR_static_type___MMClosure____is_break(variable[4]) /*MMClosure::_is_break*/;
670 variable[5] = variable[0];
671 variable[5] = ATTR_static_type___MMClosure____is_optional(variable[5]) /*MMClosure::_is_optional*/;
672 variable[6] = NEW_MMClosure_static_type___MMClosure___init(variable[3], variable[4], variable[5]); /*new MMClosure*/
673 variable[3] = variable[6];
674 variable[2] = variable[3];
675 goto return_label19;
676 return_label19: while(false);
677 tracehead = trace.prev;
678 return variable[2];
679 }
680 void static_type___MMClosure___init(val_t self, val_t param0, val_t param1, val_t param2, int* init_table) {
681 struct trace_t trace = {NULL, NULL, 245, LOCATE_static_type___MMClosure___init};
682 val_t variable[6];
683 void **closurevariable = NULL;
684 trace.prev = tracehead; tracehead = &trace;
685 trace.file = LOCATE_static_type;
686 variable[0] = self;
687 variable[1] = param0;
688 variable[2] = param1;
689 variable[3] = param2;
690 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMClosure].i]) return;
691 variable[5] = variable[0];
692 ATTR_static_type___MMClosure____signature(variable[5]) /*MMClosure::_signature*/ = variable[1] /*s*/;
693 variable[5] = variable[0];
694 ATTR_static_type___MMClosure____is_break(variable[5]) /*MMClosure::_is_break*/ = variable[2] /*is_break*/;
695 variable[5] = variable[0];
696 ATTR_static_type___MMClosure____is_optional(variable[5]) /*MMClosure::_is_optional*/ = variable[3] /*is_optional*/;
697 return_label20: while(false);
698 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMClosure].i] = 1;
699 tracehead = trace.prev;
700 return;
701 }
702 val_t static_type___MMClosure___not_for_self(val_t self) {
703 struct trace_t trace = {NULL, NULL, 252, LOCATE_static_type___MMClosure___not_for_self};
704 val_t variable[6];
705 void **closurevariable = NULL;
706 trace.prev = tracehead; tracehead = &trace;
707 trace.file = LOCATE_static_type;
708 variable[0] = self;
709 variable[3] = variable[0];
710 variable[3] = ATTR_static_type___MMClosure____signature(variable[3]) /*MMClosure::_signature*/;
711 variable[3] = CALL_static_type___MMSignature___not_for_self(variable[3])(variable[3]) /*MMSignature::not_for_self*/;
712 variable[2] = variable[3];
713 variable[3] = variable[0];
714 variable[3] = ATTR_static_type___MMClosure____signature(variable[3]) /*MMClosure::_signature*/;
715 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*sig*/ == variable[3]) || (( variable[2] /*sig*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*sig*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*sig*/,variable[3])):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*sig*/)( variable[2] /*sig*/, variable[3]) /*Object::==*/)))))));
716 if (UNTAG_Bool(variable[3])) { /*if*/
717 variable[3] = variable[0];
718 variable[3] = ATTR_static_type___MMClosure____is_break(variable[3]) /*MMClosure::_is_break*/;
719 variable[4] = variable[0];
720 variable[4] = ATTR_static_type___MMClosure____is_optional(variable[4]) /*MMClosure::_is_optional*/;
721 variable[5] = NEW_MMClosure_static_type___MMClosure___init( variable[2] /*sig*/, variable[3], variable[4]); /*new MMClosure*/
722 variable[3] = variable[5];
723 variable[1] = variable[3];
724 goto return_label21;
725 } else { /*if*/
726 variable[3] = variable[0];
727 variable[1] = variable[3];
728 goto return_label21;
729 }
730 return_label21: while(false);
731 tracehead = trace.prev;
732 return variable[1];
733 }
734 val_t static_type___MMAncestor___to_s(val_t self) {
735 struct trace_t trace = {NULL, NULL, 282, LOCATE_static_type___MMAncestor___to_s};
736 val_t variable[3];
737 void **closurevariable = NULL;
738 trace.prev = tracehead; tracehead = &trace;
739 trace.file = LOCATE_static_type;
740 variable[0] = self;
741 variable[2] = variable[0];
742 variable[2] = CALL_static_type___MMAncestor___stype(variable[2])(variable[2]) /*MMAncestor::stype*/;
743 variable[2] = TAG_Bool((variable[2] == NIT_NULL /*null*/) || ((variable[2] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[2])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[2], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[2])(variable[2], NIT_NULL /*null*/) /*Object::==*/)))));
744 if (UNTAG_Bool(variable[2])) { /*if*/
745 variable[2] = variable[0];
746 variable[2] = CALL_static_type___MMAncestor___local_class(variable[2])(variable[2]) /*MMAncestor::local_class*/;
747 variable[2] = CALL_string___Object___to_s(variable[2])(variable[2]) /*MMLocalClass::to_s*/;
748 variable[1] = variable[2];
749 goto return_label22;
750 } else { /*if*/
751 variable[2] = variable[0];
752 variable[2] = CALL_static_type___MMAncestor___stype(variable[2])(variable[2]) /*MMAncestor::stype*/;
753 variable[2] = CALL_string___Object___to_s(variable[2])(variable[2]) /*Object::to_s*/;
754 variable[1] = variable[2];
755 goto return_label22;
756 }
757 return_label22: while(false);
758 tracehead = trace.prev;
759 return variable[1];
760 }
761 val_t static_type___MMAncestor___stype(val_t self) {
762 struct trace_t trace = {NULL, NULL, 265, LOCATE_static_type___MMAncestor___stype};
763 val_t *variable = NULL;
764 void **closurevariable = NULL;
765 trace.prev = tracehead; tracehead = &trace;
766 trace.file = LOCATE_static_type;
767 tracehead = trace.prev;
768 return ATTR_static_type___MMAncestor____stype( self) /*MMAncestor::_stype*/;
769 }
770 void static_type___MMAncestor___stype__eq(val_t self, val_t param0) {
771 struct trace_t trace = {NULL, NULL, 265, LOCATE_static_type___MMAncestor___stype__eq};
772 val_t *variable = NULL;
773 void **closurevariable = NULL;
774 trace.prev = tracehead; tracehead = &trace;
775 trace.file = LOCATE_static_type;
776 ATTR_static_type___MMAncestor____stype( self) /*MMAncestor::_stype*/ = param0;
777 tracehead = trace.prev;
778 return;
779 }
780 val_t static_type___MMAncestor___inheriter(val_t self) {
781 struct trace_t trace = {NULL, NULL, 268, LOCATE_static_type___MMAncestor___inheriter};
782 val_t *variable = NULL;
783 void **closurevariable = NULL;
784 trace.prev = tracehead; tracehead = &trace;
785 trace.file = LOCATE_static_type;
786 tracehead = trace.prev;
787 return ATTR_static_type___MMAncestor____inheriter( self) /*MMAncestor::_inheriter*/;
788 }
789 void static_type___MMAncestor___inheriter__eq(val_t self, val_t param0) {
790 struct trace_t trace = {NULL, NULL, 268, LOCATE_static_type___MMAncestor___inheriter__eq};
791 val_t *variable = NULL;
792 void **closurevariable = NULL;
793 trace.prev = tracehead; tracehead = &trace;
794 trace.file = LOCATE_static_type;
795 ATTR_static_type___MMAncestor____inheriter( self) /*MMAncestor::_inheriter*/ = param0;
796 tracehead = trace.prev;
797 return;
798 }
799 val_t static_type___MMAncestor___is_reffinement(val_t self) {
800 struct trace_t trace = {NULL, NULL, 271, LOCATE_static_type___MMAncestor___is_reffinement};
801 val_t variable[4];
802 void **closurevariable = NULL;
803 trace.prev = tracehead; tracehead = &trace;
804 trace.file = LOCATE_static_type;
805 variable[0] = self;
806 variable[2] = variable[0];
807 variable[2] = CALL_static_type___MMAncestor___stype(variable[2])(variable[2]) /*MMAncestor::stype*/;
808 variable[2] = CALL_static_type___MMType___module(variable[2])(variable[2]) /*MMType::module*/;
809 variable[3] = variable[0];
810 variable[3] = CALL_static_type___MMAncestor___stype(variable[3])(variable[3]) /*MMAncestor::stype*/;
811 variable[3] = CALL_static_type___MMType___module(variable[3])(variable[3]) /*MMType::module*/;
812 variable[2] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[2] == variable[3]) || ((variable[2] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[2])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[2],variable[3])):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[2])(variable[2], variable[3]) /*Object::==*/)))))));
813 variable[1] = variable[2];
814 goto return_label23;
815 return_label23: while(false);
816 tracehead = trace.prev;
817 return variable[1];
818 }
819 val_t static_type___MMAncestor___is_specialisation(val_t self) {
820 struct trace_t trace = {NULL, NULL, 275, LOCATE_static_type___MMAncestor___is_specialisation};
821 val_t variable[4];
822 void **closurevariable = NULL;
823 trace.prev = tracehead; tracehead = &trace;
824 trace.file = LOCATE_static_type;
825 variable[0] = self;
826 variable[2] = variable[0];
827 variable[2] = CALL_static_type___MMAncestor___stype(variable[2])(variable[2]) /*MMAncestor::stype*/;
828 variable[2] = CALL_static_type___MMType___local_class(variable[2])(variable[2]) /*MMType::local_class*/;
829 variable[2] = CALL_abstractmetamodel___MMLocalClass___global(variable[2])(variable[2]) /*MMLocalClass::global*/;
830 variable[3] = variable[0];
831 variable[3] = CALL_static_type___MMAncestor___inheriter(variable[3])(variable[3]) /*MMAncestor::inheriter*/;
832 variable[3] = CALL_static_type___MMType___local_class(variable[3])(variable[3]) /*MMType::local_class*/;
833 variable[3] = CALL_abstractmetamodel___MMLocalClass___global(variable[3])(variable[3]) /*MMLocalClass::global*/;
834 variable[2] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[2] == variable[3]) || ((variable[2] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[2])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[2],variable[3])):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[2])(variable[2], variable[3]) /*Object::==*/)))))));
835 variable[1] = variable[2];
836 goto return_label24;
837 return_label24: while(false);
838 tracehead = trace.prev;
839 return variable[1];
840 }
841 val_t static_type___MMAncestor___local_class(val_t self) {
842 struct trace_t trace = {NULL, NULL, 279, LOCATE_static_type___MMAncestor___local_class};
843 val_t *variable = NULL;
844 void **closurevariable = NULL;
845 trace.prev = tracehead; tracehead = &trace;
846 trace.file = LOCATE_static_type;
847 fprintf(stderr, "Deferred method called");
848 fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 279);
849 nit_exit(1);
850 tracehead = trace.prev;
851 return NIT_NULL;
852 }
853 void static_type___MMAncestor___init(val_t self, int* init_table) {
854 struct trace_t trace = {NULL, NULL, 0, LOCATE_static_type___MMAncestor___init};
855 val_t *variable = NULL;
856 void **closurevariable = NULL;
857 trace.prev = tracehead; tracehead = &trace;
858 trace.file = LOCATE_static_type;
859 tracehead = trace.prev;
860 return;
861 }
862 val_t static_type___MMType___module(val_t self) {
863 struct trace_t trace = {NULL, NULL, 295, LOCATE_static_type___MMType___module};
864 val_t *variable = NULL;
865 void **closurevariable = NULL;
866 trace.prev = tracehead; tracehead = &trace;
867 trace.file = LOCATE_static_type;
868 fprintf(stderr, "Deferred method called");
869 fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 295);
870 nit_exit(1);
871 tracehead = trace.prev;
872 return NIT_NULL;
873 }
874 val_t static_type___MMType___local_class(val_t self) {
875 struct trace_t trace = {NULL, NULL, 298, LOCATE_static_type___MMType___local_class};
876 val_t *variable = NULL;
877 void **closurevariable = NULL;
878 trace.prev = tracehead; tracehead = &trace;
879 trace.file = LOCATE_static_type;
880 fprintf(stderr, "Deferred method called");
881 fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 298);
882 nit_exit(1);
883 tracehead = trace.prev;
884 return NIT_NULL;
885 }
886 val_t static_type___MMType_____l(val_t self, val_t param0) {
887 struct trace_t trace = {NULL, NULL, 301, LOCATE_static_type___MMType_____l};
888 val_t *variable = NULL;
889 void **closurevariable = NULL;
890 trace.prev = tracehead; tracehead = &trace;
891 trace.file = LOCATE_static_type;
892 fprintf(stderr, "Deferred method called");
893 fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 301);
894 nit_exit(1);
895 tracehead = trace.prev;
896 return NIT_NULL;
897 }
898 val_t static_type___MMType___is_supertype(val_t self, val_t param0) {
899 struct trace_t trace = {NULL, NULL, 304, LOCATE_static_type___MMType___is_supertype};
900 val_t *variable = NULL;
901 void **closurevariable = NULL;
902 trace.prev = tracehead; tracehead = &trace;
903 trace.file = LOCATE_static_type;
904 fprintf(stderr, "Deferred method called");
905 fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 304);
906 nit_exit(1);
907 tracehead = trace.prev;
908 return NIT_NULL;
909 }
910 val_t static_type___MMType___for_module(val_t self, val_t param0) {
911 struct trace_t trace = {NULL, NULL, 309, LOCATE_static_type___MMType___for_module};
912 val_t *variable = NULL;
913 void **closurevariable = NULL;
914 trace.prev = tracehead; tracehead = &trace;
915 trace.file = LOCATE_static_type;
916 fprintf(stderr, "Deferred method called");
917 fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 309);
918 nit_exit(1);
919 tracehead = trace.prev;
920 return NIT_NULL;
921 }
922 val_t static_type___MMType___adapt_to(val_t self, val_t param0) {
923 struct trace_t trace = {NULL, NULL, 312, LOCATE_static_type___MMType___adapt_to};
924 val_t *variable = NULL;
925 void **closurevariable = NULL;
926 trace.prev = tracehead; tracehead = &trace;
927 trace.file = LOCATE_static_type;
928 fprintf(stderr, "Deferred method called");
929 fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 312);
930 nit_exit(1);
931 tracehead = trace.prev;
932 return NIT_NULL;
933 }
934 val_t static_type___MMType___upcast_for(val_t self, val_t param0) {
935 struct trace_t trace = {NULL, NULL, 316, LOCATE_static_type___MMType___upcast_for};
936 val_t *variable = NULL;
937 void **closurevariable = NULL;
938 trace.prev = tracehead; tracehead = &trace;
939 trace.file = LOCATE_static_type;
940 fprintf(stderr, "Deferred method called");
941 fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 316);
942 nit_exit(1);
943 tracehead = trace.prev;
944 return NIT_NULL;
945 }
946 val_t static_type___MMType___not_for_self(val_t self) {
947 struct trace_t trace = {NULL, NULL, 320, LOCATE_static_type___MMType___not_for_self};
948 val_t variable[3];
949 void **closurevariable = NULL;
950 trace.prev = tracehead; tracehead = &trace;
951 trace.file = LOCATE_static_type;
952 variable[0] = self;
953 variable[2] = variable[0];
954 variable[1] = variable[2];
955 goto return_label25;
956 return_label25: while(false);
957 tracehead = trace.prev;
958 return variable[1];
959 }
960 void static_type___MMType___init(val_t self, int* init_table) {
961 struct trace_t trace = {NULL, NULL, 0, LOCATE_static_type___MMType___init};
962 val_t *variable = NULL;
963 void **closurevariable = NULL;
964 trace.prev = tracehead; tracehead = &trace;
965 trace.file = LOCATE_static_type;
966 tracehead = trace.prev;
967 return;
968 }
969 val_t static_type___MMTypeClass___to_s(val_t self) {
970 struct trace_t trace = {NULL, NULL, 331, LOCATE_static_type___MMTypeClass___to_s};
971 val_t variable[3];
972 void **closurevariable = NULL;
973 trace.prev = tracehead; tracehead = &trace;
974 trace.file = LOCATE_static_type;
975 variable[0] = self;
976 variable[2] = variable[0];
977 variable[2] = ATTR_static_type___MMTypeClass____local_class(variable[2]) /*MMTypeClass::_local_class*/;
978 variable[2] = CALL_string___Object___to_s(variable[2])(variable[2]) /*MMLocalClass::to_s*/;
979 variable[1] = variable[2];
980 goto return_label26;
981 return_label26: while(false);
982 tracehead = trace.prev;
983 return variable[1];
984 }
985 val_t static_type___MMTypeClass___module(val_t self) {
986 struct trace_t trace = {NULL, NULL, 328, LOCATE_static_type___MMTypeClass___module};
987 val_t variable[3];
988 void **closurevariable = NULL;
989 trace.prev = tracehead; tracehead = &trace;
990 trace.file = LOCATE_static_type;
991 variable[0] = self;
992 variable[2] = variable[0];
993 variable[2] = ATTR_static_type___MMTypeClass____local_class(variable[2]) /*MMTypeClass::_local_class*/;
994 variable[2] = CALL_abstractmetamodel___MMLocalClass___module(variable[2])(variable[2]) /*MMLocalClass::module*/;
995 variable[1] = variable[2];
996 goto return_label27;
997 return_label27: while(false);
998 tracehead = trace.prev;
999 return variable[1];
1000 }
1001 val_t static_type___MMTypeClass___local_class(val_t self) {
1002 struct trace_t trace = {NULL, NULL, 327, LOCATE_static_type___MMTypeClass___local_class};
1003 val_t *variable = NULL;
1004 void **closurevariable = NULL;
1005 trace.prev = tracehead; tracehead = &trace;
1006 trace.file = LOCATE_static_type;
1007 tracehead = trace.prev;
1008 return ATTR_static_type___MMTypeClass____local_class( self) /*MMTypeClass::_local_class*/;
1009 }
1010 val_t static_type___MMTypeClass_____l(val_t self, val_t param0) {
1011 struct trace_t trace = {NULL, NULL, 329, LOCATE_static_type___MMTypeClass_____l};
1012 val_t variable[5];
1013 void **closurevariable = NULL;
1014 trace.prev = tracehead; tracehead = &trace;
1015 trace.file = LOCATE_static_type;
1016 variable[0] = self;
1017 variable[1] = param0;
1018 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*t*/ == NIT_NULL /*null*/) || (( variable[1] /*t*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*t*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*t*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*t*/)( variable[1] /*t*/, NIT_NULL /*null*/) /*Object::==*/)))))));
1019 variable[4] = variable[3];
1020 if (UNTAG_Bool(variable[4])) { /* and */
1021 variable[4] = variable[0];
1022 variable[4] = CALL_static_type___MMType___is_supertype( variable[1] /*t*/)( variable[1] /*t*/, variable[4]) /*MMType::is_supertype*/;
1023 }
1024 variable[3] = variable[4];
1025 variable[2] = variable[3];
1026 goto return_label28;
1027 return_label28: while(false);
1028 tracehead = trace.prev;
1029 return variable[2];
1030 }
1031 val_t static_type___MMTypeClass___upcast_for(val_t self, val_t param0) {
1032 struct trace_t trace = {NULL, NULL, 336, LOCATE_static_type___MMTypeClass___upcast_for};
1033 val_t variable[5];
1034 void **closurevariable = NULL;
1035 trace.prev = tracehead; tracehead = &trace;
1036 trace.file = LOCATE_static_type;
1037 variable[0] = self;
1038 variable[1] = param0;
1039 variable[3] = variable[0];
1040 variable[3] = ATTR_static_type___MMTypeClass____local_class(variable[3]) /*MMTypeClass::_local_class*/;
1041 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] == NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], NIT_NULL /*null*/) /*Object::==*/)))))));
1042 if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_static_type___MMTypeClass___upcast_for, LOCATE_static_type, 338); nit_exit(1);}
1043 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*c*/ == NIT_NULL /*null*/) || (( variable[1] /*c*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*c*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*c*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*c*/)( variable[1] /*c*/, NIT_NULL /*null*/) /*Object::==*/)))))));
1044 if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_static_type___MMTypeClass___upcast_for, LOCATE_static_type, 339); nit_exit(1);}
1045 variable[4] = variable[0];
1046 variable[3] = variable[4];
1047 variable[4] = variable[0];
1048 variable[4] = ATTR_static_type___MMTypeClass____local_class(variable[4]) /*MMTypeClass::_local_class*/;
1049 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[4] == variable[1] /*c*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*c*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4], variable[1] /*c*/) /*Object::==*/)))))));
1050 if (UNTAG_Bool(variable[4])) { /*if*/
1051 variable[4] = variable[0];
1052 variable[4] = ATTR_static_type___MMTypeClass____local_class(variable[4]) /*MMTypeClass::_local_class*/;
1053 variable[4] = CALL_static_type___MMLocalClass___ancestor(variable[4])(variable[4], variable[1] /*c*/) /*MMLocalClass::ancestor*/;
1054 variable[3] = variable[4] /*t=*/;
1055 }
1056 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*t*/ == NIT_NULL /*null*/) || (( variable[3] /*t*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*t*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*t*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*t*/)( variable[3] /*t*/, NIT_NULL /*null*/) /*Object::==*/)))))));
1057 if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_static_type___MMTypeClass___upcast_for, LOCATE_static_type, 345); nit_exit(1);}
1058 variable[2] = variable[3] /*t*/;
1059 goto return_label29;
1060 return_label29: while(false);
1061 tracehead = trace.prev;
1062 return variable[2];
1063 }
1064 void static_type___MMTypeClass___init(val_t self, val_t param0, int* init_table) {
1065 struct trace_t trace = {NULL, NULL, 349, LOCATE_static_type___MMTypeClass___init};
1066 val_t variable[4];
1067 void **closurevariable = NULL;
1068 trace.prev = tracehead; tracehead = &trace;
1069 trace.file = LOCATE_static_type;
1070 variable[0] = self;
1071 variable[1] = param0;
1072 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMTypeClass].i]) return;
1073 variable[3] = variable[0];
1074 ATTR_static_type___MMTypeClass____local_class(variable[3]) /*MMTypeClass::_local_class*/ = variable[1] /*c*/;
1075 return_label30: while(false);
1076 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMTypeClass].i] = 1;
1077 tracehead = trace.prev;
1078 return;
1079 }
1080 val_t static_type___MMTypeSimpleClass___is_supertype(val_t self, val_t param0) {
1081 struct trace_t trace = {NULL, NULL, 357, LOCATE_static_type___MMTypeSimpleClass___is_supertype};
1082 val_t variable[5];
1083 void **closurevariable = NULL;
1084 trace.prev = tracehead; tracehead = &trace;
1085 trace.file = LOCATE_static_type;
1086 variable[0] = self;
1087 variable[1] = param0;
1088 variable[3] = CALL_static_type___MMType___local_class( variable[1] /*t*/)( variable[1] /*t*/) /*MMType::local_class*/;
1089 variable[3] = CALL_abstractmetamodel___MMLocalClass___cshe(variable[3])(variable[3]) /*MMLocalClass::cshe*/;
1090 variable[4] = variable[0];
1091 variable[4] = ATTR_static_type___MMTypeClass____local_class(variable[4]) /*MMTypeClass::_local_class*/;
1092 variable[3] = CALL_partial_order___PartialOrderElement_____leq(variable[3])(variable[3], variable[4]) /*PartialOrderElement::<=*/;
1093 variable[2] = variable[3];
1094 goto return_label31;
1095 return_label31: while(false);
1096 tracehead = trace.prev;
1097 return variable[2];
1098 }
1099 val_t static_type___MMTypeSimpleClass___for_module(val_t self, val_t param0) {
1100 struct trace_t trace = {NULL, NULL, 362, LOCATE_static_type___MMTypeSimpleClass___for_module};
1101 val_t variable[5];
1102 void **closurevariable = NULL;
1103 trace.prev = tracehead; tracehead = &trace;
1104 trace.file = LOCATE_static_type;
1105 variable[0] = self;
1106 variable[1] = param0;
1107 variable[4] = variable[0];
1108 variable[3] = variable[4];
1109 variable[4] = variable[0];
1110 variable[4] = CALL_static_type___MMType___module(variable[4])(variable[4]) /*MMTypeClass::module*/;
1111 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[4] == variable[1] /*mod*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*mod*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4], variable[1] /*mod*/) /*Object::==*/)))))));
1112 if (UNTAG_Bool(variable[4])) { /*if*/
1113 variable[4] = variable[0];
1114 variable[4] = ATTR_static_type___MMTypeClass____local_class(variable[4]) /*MMTypeClass::_local_class*/;
1115 variable[4] = CALL_abstractmetamodel___MMLocalClass___for_module(variable[4])(variable[4], variable[1] /*mod*/) /*MMLocalClass::for_module*/;
1116 variable[4] = CALL_static_type___MMLocalClass___get_type(variable[4])(variable[4]) /*MMLocalClass::get_type*/;
1117 variable[3] = variable[4] /*t=*/;
1118 }
1119 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*t*/ == NIT_NULL /*null*/) || (( variable[3] /*t*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*t*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*t*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*t*/)( variable[3] /*t*/, NIT_NULL /*null*/) /*Object::==*/)))))));
1120 if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_static_type___MMTypeSimpleClass___for_module, LOCATE_static_type, 368); nit_exit(1);}
1121 variable[2] = variable[3] /*t*/;
1122 goto return_label32;
1123 return_label32: while(false);
1124 tracehead = trace.prev;
1125 return variable[2];
1126 }
1127 val_t static_type___MMTypeSimpleClass___adapt_to(val_t self, val_t param0) {
1128 struct trace_t trace = {NULL, NULL, 372, LOCATE_static_type___MMTypeSimpleClass___adapt_to};
1129 val_t variable[4];
1130 void **closurevariable = NULL;
1131 trace.prev = tracehead; tracehead = &trace;
1132 trace.file = LOCATE_static_type;
1133 variable[0] = self;
1134 variable[1] = param0;
1135 variable[3] = variable[0];
1136 variable[2] = variable[3];
1137 goto return_label33;
1138 return_label33: while(false);
1139 tracehead = trace.prev;
1140 return variable[2];
1141 }
1142 void static_type___MMTypeSimpleClass___init(val_t self, val_t param0, int* init_table) {
1143 struct trace_t trace = {NULL, NULL, 374, LOCATE_static_type___MMTypeSimpleClass___init};
1144 val_t variable[3];
1145 void **closurevariable = NULL;
1146 trace.prev = tracehead; tracehead = &trace;
1147 trace.file = LOCATE_static_type;
1148 variable[0] = self;
1149 variable[1] = param0;
1150 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMTypeSimpleClass].i]) return;
1151 CALL_static_type___MMTypeClass___init(variable[0])(variable[0], variable[1] /*c*/, init_table /*YYY*/) /*MMTypeClass::init*/;
1152 return_label34: while(false);
1153 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMTypeSimpleClass].i] = 1;
1154 tracehead = trace.prev;
1155 return;
1156 }
1157 val_t static_type___MMTypeNone___module(val_t self) {
1158 struct trace_t trace = {NULL, NULL, 383, LOCATE_static_type___MMTypeNone___module};
1159 val_t *variable = NULL;
1160 void **closurevariable = NULL;
1161 trace.prev = tracehead; tracehead = &trace;
1162 trace.file = LOCATE_static_type;
1163 tracehead = trace.prev;
1164 return ATTR_static_type___MMTypeNone____module( self) /*MMTypeNone::_module*/;
1165 }
1166 val_t static_type___MMTypeNone___local_class(val_t self) {
1167 struct trace_t trace = {NULL, NULL, 386, LOCATE_static_type___MMTypeNone___local_class};
1168 val_t variable[2];
1169 void **closurevariable = NULL;
1170 trace.prev = tracehead; tracehead = &trace;
1171 trace.file = LOCATE_static_type;
1172 variable[0] = self;
1173 fprintf(stderr, "Aborted"); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_static_type___MMTypeNone___local_class, LOCATE_static_type, 386); nit_exit(1);
1174 return_label35: while(false);
1175 tracehead = trace.prev;
1176 return variable[1];
1177 }
1178 val_t static_type___MMTypeNone_____l(val_t self, val_t param0) {
1179 struct trace_t trace = {NULL, NULL, 384, LOCATE_static_type___MMTypeNone_____l};
1180 val_t variable[3];
1181 void **closurevariable = NULL;
1182 trace.prev = tracehead; tracehead = &trace;
1183 trace.file = LOCATE_static_type;
1184 variable[0] = self;
1185 variable[1] = param0;
1186 variable[2] = TAG_Bool(true);
1187 goto return_label36;
1188 return_label36: while(false);
1189 tracehead = trace.prev;
1190 return variable[2];
1191 }
1192 val_t static_type___MMTypeNone___is_supertype(val_t self, val_t param0) {
1193 struct trace_t trace = {NULL, NULL, 385, LOCATE_static_type___MMTypeNone___is_supertype};
1194 val_t variable[3];
1195 void **closurevariable = NULL;
1196 trace.prev = tracehead; tracehead = &trace;
1197 trace.file = LOCATE_static_type;
1198 variable[0] = self;
1199 variable[1] = param0;
1200 variable[2] = TAG_Bool(false);
1201 goto return_label37;
1202 return_label37: while(false);
1203 tracehead = trace.prev;
1204 return variable[2];
1205 }
1206 val_t static_type___MMTypeNone___upcast_for(val_t self, val_t param0) {
1207 struct trace_t trace = {NULL, NULL, 387, LOCATE_static_type___MMTypeNone___upcast_for};
1208 val_t variable[4];
1209 void **closurevariable = NULL;
1210 trace.prev = tracehead; tracehead = &trace;
1211 trace.file = LOCATE_static_type;
1212 variable[0] = self;
1213 variable[1] = param0;
1214 variable[3] = variable[0];
1215 variable[2] = variable[3];
1216 goto return_label38;
1217 return_label38: while(false);
1218 tracehead = trace.prev;
1219 return variable[2];
1220 }
1221 void static_type___MMTypeNone___init(val_t self, val_t param0, int* init_table) {
1222 struct trace_t trace = {NULL, NULL, 389, LOCATE_static_type___MMTypeNone___init};
1223 val_t variable[4];
1224 void **closurevariable = NULL;
1225 trace.prev = tracehead; tracehead = &trace;
1226 trace.file = LOCATE_static_type;
1227 variable[0] = self;
1228 variable[1] = param0;
1229 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMTypeNone].i]) return;
1230 variable[3] = variable[0];
1231 ATTR_static_type___MMTypeNone____module(variable[3]) /*MMTypeNone::_module*/ = variable[1] /*m*/;
1232 return_label39: while(false);
1233 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMTypeNone].i] = 1;
1234 tracehead = trace.prev;
1235 return;
1236 }
1237 val_t static_type___MMModule___type_none(val_t self) {
1238 struct trace_t trace = {NULL, NULL, 393, LOCATE_static_type___MMModule___type_none};
1239 val_t *variable = NULL;
1240 void **closurevariable = NULL;
1241 trace.prev = tracehead; tracehead = &trace;
1242 trace.file = LOCATE_static_type;
1243 tracehead = trace.prev;
1244 return ATTR_static_type___MMModule____type_none( self) /*MMModule::_type_none*/;
1245 }