0a62eb21d15ab23d4cfffad65cd470750db3ba0a
[nit.git] / c_src / mmbuilder._sep.c
1 /* This C file is generated by NIT to compile module mmbuilder. */
2 #include "mmbuilder._sep.h"
3 val_t mmbuilder___CSHSorter___compare(val_t self, val_t param0, val_t param1) {
4 struct trace_t trace = {NULL, NULL, 27, LOCATE_mmbuilder___CSHSorter___compare};
5 val_t variable[6];
6 void **closurevariable = NULL;
7 trace.prev = tracehead; tracehead = &trace;
8 trace.file = LOCATE_mmbuilder;
9 variable[0] = self;
10 variable[1] = param0;
11 variable[2] = param1;
12 variable[4] = CALL_abstractmetamodel___MMLocalClass___cshe( variable[1] /*a*/)( variable[1] /*a*/) /*MMLocalClass::cshe*/;
13 variable[4] = CALL_partial_order___PartialOrderElement___rank(variable[4])(variable[4]) /*PartialOrderElement::rank*/;
14 variable[5] = CALL_abstractmetamodel___MMLocalClass___cshe( variable[2] /*b*/)( variable[2] /*b*/) /*MMLocalClass::cshe*/;
15 variable[5] = CALL_partial_order___PartialOrderElement___rank(variable[5])(variable[5]) /*PartialOrderElement::rank*/;
16 variable[4] = CALL_kernel___Comparable_____leqg(variable[4])(variable[4], variable[5]) /*Int::<=>*/;
17 variable[3] = variable[4];
18 goto return_label0;
19 return_label0: while(false);
20 tracehead = trace.prev;
21 return variable[3];
22 }
23 void mmbuilder___CSHSorter___init(val_t self, int* init_table) {
24 struct trace_t trace = {NULL, NULL, 32, LOCATE_mmbuilder___CSHSorter___init};
25 val_t variable[2];
26 void **closurevariable = NULL;
27 trace.prev = tracehead; tracehead = &trace;
28 trace.file = LOCATE_mmbuilder;
29 variable[0] = self;
30 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_CSHSorter].i]) return;
31 return_label1: while(false);
32 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_CSHSorter].i] = 1;
33 tracehead = trace.prev;
34 return;
35 }
36 void mmbuilder___MMSrcModule___do_mmbuilder(val_t self, val_t param0) {
37 struct trace_t trace = {NULL, NULL, 36, LOCATE_mmbuilder___MMSrcModule___do_mmbuilder};
38 static val_t once_value_4; static int once_bool_4; /* Once value for variable[7]*/
39 val_t variable[19];
40 void **closurevariable = NULL;
41 trace.prev = tracehead; tracehead = &trace;
42 trace.file = LOCATE_mmbuilder;
43 variable[0] = self;
44 variable[1] = param0;
45 variable[3] = variable[0];
46 CALL_inheritance___MMModule___import_global_classes(variable[3])(variable[3]) /*MMModule::import_global_classes*/;
47 variable[4] = variable[0];
48 variable[5] = NEW_ClassBuilderVisitor_mmbuilder___ClassBuilderVisitor___init( variable[1] /*tc*/, variable[4]); /*new ClassBuilderVisitor*/
49 variable[4] = variable[5];
50 variable[3] = variable[4];
51 variable[4] = variable[0];
52 variable[4] = CALL_syntax_base___MMSrcModule___node(variable[4])(variable[4]) /*MMSrcModule::node*/;
53 CALL_parser_prod___Visitor___visit( variable[3] /*mmbv*/)( variable[3] /*mmbv*/, variable[4]) /*ClassBuilderVisitor::visit*/;
54 variable[4] = CALL_mmloader___ToolContext___error_count( variable[1] /*tc*/)( variable[1] /*tc*/) /*ToolContext::error_count*/;
55 variable[4] = TAG_Bool(UNTAG_Int(variable[4])>UNTAG_Int( TAG_Int(0)));
56 if (UNTAG_Bool(variable[4])) { /*if*/
57 variable[4] = variable[0];
58 exit(UNTAG_Int( TAG_Int(1)));
59 }
60 variable[4] = variable[0];
61 CALL_inheritance___MMModule___import_local_classes(variable[4])(variable[4]) /*MMModule::import_local_classes*/;
62 variable[5] = variable[0];
63 variable[6] = NEW_ClassSpecializationBuilderVisitor_mmbuilder___ClassSpecializationBuilderVisitor___init( variable[1] /*tc*/, variable[5]); /*new ClassSpecializationBuilderVisitor*/
64 variable[5] = variable[6];
65 variable[4] = variable[5];
66 variable[5] = variable[0];
67 variable[5] = CALL_syntax_base___MMSrcModule___node(variable[5])(variable[5]) /*MMSrcModule::node*/;
68 CALL_parser_prod___Visitor___visit( variable[4] /*mmbv1*/)( variable[4] /*mmbv1*/, variable[5]) /*ClassSpecializationBuilderVisitor::visit*/;
69 variable[5] = CALL_mmloader___ToolContext___error_count( variable[1] /*tc*/)( variable[1] /*tc*/) /*ToolContext::error_count*/;
70 variable[5] = TAG_Bool(UNTAG_Int(variable[5])>UNTAG_Int( TAG_Int(0)));
71 if (UNTAG_Bool(variable[5])) { /*if*/
72 variable[5] = variable[0];
73 exit(UNTAG_Int( TAG_Int(1)));
74 }
75 variable[5] = variable[0];
76 variable[5] = CALL_abstractmetamodel___MMModule___local_classes(variable[5])(variable[5]) /*MMModule::local_classes*/;
77 variable[5] = CALL_abstract_collection___Collection___iterator(variable[5])(variable[5]) /*AbstractArray::iterator*/;
78 while (true) { /*for*/
79 variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*ArrayIterator::is_ok*/;
80 if (!UNTAG_Bool(variable[6])) break; /*for*/
81 variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*ArrayIterator::item*/;
82 variable[7] = variable[6];
83 variable[8] = variable[0];
84 variable[9] = CALL_abstractmetamodel___MMLocalClass___global( variable[7] /*c*/)( variable[7] /*c*/) /*MMLocalClass::global*/;
85 variable[9] = CALL_abstractmetamodel___MMGlobalClass___intro(variable[9])(variable[9]) /*MMGlobalClass::intro*/;
86 variable[9] = CALL_abstractmetamodel___MMLocalClass___module(variable[9])(variable[9]) /*MMLocalClass::module*/;
87 variable[8] = CALL_abstractmetamodel___MMModule___visibility_for(variable[8])(variable[8], variable[9]) /*MMModule::visibility_for*/;
88 variable[9] = CALL_abstractmetamodel___MMLocalClass___global( variable[7] /*c*/)( variable[7] /*c*/) /*MMLocalClass::global*/;
89 variable[9] = CALL_abstractmetamodel___MMGlobalClass___visibility_level(variable[9])(variable[9]) /*MMGlobalClass::visibility_level*/;
90 variable[8] = TAG_Bool(UNTAG_Int(variable[8])<UNTAG_Int(variable[9]));
91 if (UNTAG_Bool(variable[8])) { /*if*/
92 goto continue_3;
93 }
94 CALL_inheritance___MMLocalClass___compute_super_classes( variable[7] /*c*/)( variable[7] /*c*/) /*MMLocalClass::compute_super_classes*/;
95 continue_3: while(0);
96 CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*ArrayIterator::next*/;
97 }
98 break_3: while(0);
99 variable[6] = variable[0];
100 variable[6] = CALL_abstractmetamodel___MMModule___class_specialization_hierarchy(variable[6])(variable[6]) /*MMModule::class_specialization_hierarchy*/;
101 variable[6] = CALL_array___Collection___to_a(variable[6])(variable[6]) /*Collection::to_a*/;
102 variable[5] = variable[6];
103 if (once_bool_4) variable[7] = once_value_4;
104 else {
105 variable[7] = NEW_CSHSorter_mmbuilder___CSHSorter___init(); /*new CSHSorter*/
106 once_value_4 = variable[7];
107 once_bool_4 = true;
108 }
109 variable[6] = variable[7];
110 CALL_sorter___AbstractSorter___sort( variable[6] /*sorter*/)( variable[6] /*sorter*/, variable[5] /*classes*/) /*AbstractSorter::sort*/;
111 variable[8] = variable[0];
112 variable[9] = NEW_ClassAncestorBuilder_mmbuilder___ClassAncestorBuilder___init( variable[1] /*tc*/, variable[8]); /*new ClassAncestorBuilder*/
113 variable[8] = variable[9];
114 variable[7] = variable[8];
115 variable[8] = CALL_abstract_collection___Collection___iterator( variable[5] /*classes*/)( variable[5] /*classes*/) /*AbstractArray::iterator*/;
116 while (true) { /*for*/
117 variable[9] = CALL_abstract_collection___Iterator___is_ok(variable[8])(variable[8]) /*ArrayIterator::is_ok*/;
118 if (!UNTAG_Bool(variable[9])) break; /*for*/
119 variable[9] = CALL_abstract_collection___Iterator___item(variable[8])(variable[8]) /*ArrayIterator::item*/;
120 variable[10] = variable[9];
121 CALL_mmbuilder___MMLocalClass___accept_class_visitor( variable[10] /*c*/)( variable[10] /*c*/, variable[7] /*mmbv1b*/) /*MMLocalClass::accept_class_visitor*/;
122 CALL_inheritance___MMLocalClass___compute_ancestors( variable[10] /*c*/)( variable[10] /*c*/) /*MMLocalClass::compute_ancestors*/;
123 continue_5: while(0);
124 CALL_abstract_collection___Iterator___next(variable[8])(variable[8]) /*ArrayIterator::next*/;
125 }
126 break_5: while(0);
127 variable[8] = CALL_mmloader___ToolContext___error_count( variable[1] /*tc*/)( variable[1] /*tc*/) /*ToolContext::error_count*/;
128 variable[8] = TAG_Bool(UNTAG_Int(variable[8])>UNTAG_Int( TAG_Int(0)));
129 if (UNTAG_Bool(variable[8])) { /*if*/
130 variable[8] = variable[0];
131 exit(UNTAG_Int( TAG_Int(1)));
132 }
133 variable[9] = variable[0];
134 variable[10] = NEW_ClassVerifierVisitor_mmbuilder___ClassVerifierVisitor___init( variable[1] /*tc*/, variable[9]); /*new ClassVerifierVisitor*/
135 variable[9] = variable[10];
136 variable[8] = variable[9];
137 variable[9] = CALL_abstract_collection___Collection___iterator( variable[5] /*classes*/)( variable[5] /*classes*/) /*AbstractArray::iterator*/;
138 while (true) { /*for*/
139 variable[10] = CALL_abstract_collection___Iterator___is_ok(variable[9])(variable[9]) /*ArrayIterator::is_ok*/;
140 if (!UNTAG_Bool(variable[10])) break; /*for*/
141 variable[10] = CALL_abstract_collection___Iterator___item(variable[9])(variable[9]) /*ArrayIterator::item*/;
142 variable[11] = variable[10];
143 CALL_mmbuilder___MMLocalClass___accept_class_visitor( variable[11] /*c*/)( variable[11] /*c*/, variable[8] /*mmbv1b*/) /*MMLocalClass::accept_class_visitor*/;
144 continue_6: while(0);
145 CALL_abstract_collection___Iterator___next(variable[9])(variable[9]) /*ArrayIterator::next*/;
146 }
147 break_6: while(0);
148 variable[9] = CALL_mmloader___ToolContext___error_count( variable[1] /*tc*/)( variable[1] /*tc*/) /*ToolContext::error_count*/;
149 variable[9] = TAG_Bool(UNTAG_Int(variable[9])>UNTAG_Int( TAG_Int(0)));
150 if (UNTAG_Bool(variable[9])) { /*if*/
151 variable[9] = variable[0];
152 exit(UNTAG_Int( TAG_Int(1)));
153 }
154 variable[10] = variable[0];
155 variable[11] = NEW_PropertyBuilderVisitor_mmbuilder___PropertyBuilderVisitor___init( variable[1] /*tc*/, variable[10]); /*new PropertyBuilderVisitor*/
156 variable[10] = variable[11];
157 variable[9] = variable[10];
158 variable[10] = CALL_abstract_collection___Collection___iterator( variable[5] /*classes*/)( variable[5] /*classes*/) /*AbstractArray::iterator*/;
159 while (true) { /*for*/
160 variable[11] = CALL_abstract_collection___Iterator___is_ok(variable[10])(variable[10]) /*ArrayIterator::is_ok*/;
161 if (!UNTAG_Bool(variable[11])) break; /*for*/
162 variable[11] = CALL_abstract_collection___Iterator___item(variable[10])(variable[10]) /*ArrayIterator::item*/;
163 variable[12] = variable[11];
164 CALL_inheritance___MMLocalClass___inherit_global_properties( variable[12] /*c*/)( variable[12] /*c*/) /*MMLocalClass::inherit_global_properties*/;
165 CALL_mmbuilder___MMLocalClass___accept_class_visitor( variable[12] /*c*/)( variable[12] /*c*/, variable[9] /*mmbv2*/) /*MMLocalClass::accept_class_visitor*/;
166 variable[13] = TAG_Bool(( variable[12] /*c*/==NIT_NULL) || VAL_ISA( variable[12] /*c*/, COLOR_MMSrcLocalClass, ID_MMSrcLocalClass)) /*cast MMSrcLocalClass*/;
167 variable[14] = variable[13];
168 if (UNTAG_Bool(variable[14])) { /* and */
169 variable[14] = CALL_abstractmetamodel___MMLocalClass___global( variable[12] /*c*/)( variable[12] /*c*/) /*MMLocalClass::global*/;
170 variable[14] = CALL_abstractmetamodel___MMGlobalClass___intro(variable[14])(variable[14]) /*MMGlobalClass::intro*/;
171 variable[14] = TAG_Bool((variable[14] == variable[12] /*c*/) || ((variable[14] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[14])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[14], variable[12] /*c*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[14])(variable[14], variable[12] /*c*/) /*Object::==*/)))));
172 }
173 variable[13] = variable[14];
174 variable[14] = variable[13];
175 if (UNTAG_Bool(variable[14])) { /* and */
176 variable[14] = CALL_abstractmetamodel___MMLocalClass___global( variable[12] /*c*/)( variable[12] /*c*/) /*MMLocalClass::global*/;
177 variable[14] = CALL_abstractmetamodel___MMGlobalClass___is_universal(variable[14])(variable[14]) /*MMGlobalClass::is_universal*/;
178 variable[14] = TAG_Bool(!UNTAG_Bool(variable[14]));
179 }
180 variable[13] = variable[14];
181 variable[14] = variable[13];
182 if (UNTAG_Bool(variable[14])) { /* and */
183 variable[14] = CALL_abstractmetamodel___MMLocalClass___global( variable[12] /*c*/)( variable[12] /*c*/) /*MMLocalClass::global*/;
184 variable[14] = CALL_abstractmetamodel___MMGlobalClass___is_interface(variable[14])(variable[14]) /*MMGlobalClass::is_interface*/;
185 variable[14] = TAG_Bool(!UNTAG_Bool(variable[14]));
186 }
187 variable[13] = variable[14];
188 if (UNTAG_Bool(variable[13])) { /*if*/
189 CALL_mmbuilder___MMSrcLocalClass___process_default_constructors( variable[12] /*c*/)( variable[12] /*c*/, variable[9] /*mmbv2*/) /*MMSrcLocalClass::process_default_constructors*/;
190 }
191 continue_7: while(0);
192 CALL_abstract_collection___Iterator___next(variable[10])(variable[10]) /*ArrayIterator::next*/;
193 }
194 break_7: while(0);
195 variable[10] = CALL_mmloader___ToolContext___error_count( variable[1] /*tc*/)( variable[1] /*tc*/) /*ToolContext::error_count*/;
196 variable[10] = TAG_Bool(UNTAG_Int(variable[10])>UNTAG_Int( TAG_Int(0)));
197 if (UNTAG_Bool(variable[10])) { /*if*/
198 variable[10] = variable[0];
199 exit(UNTAG_Int( TAG_Int(1)));
200 }
201 variable[11] = variable[0];
202 variable[12] = NEW_PropertyVerifierVisitor_mmbuilder___PropertyVerifierVisitor___init( variable[1] /*tc*/, variable[11]); /*new PropertyVerifierVisitor*/
203 variable[11] = variable[12];
204 variable[10] = variable[11];
205 variable[11] = CALL_abstract_collection___Collection___iterator( variable[5] /*classes*/)( variable[5] /*classes*/) /*AbstractArray::iterator*/;
206 while (true) { /*for*/
207 variable[12] = CALL_abstract_collection___Iterator___is_ok(variable[11])(variable[11]) /*ArrayIterator::is_ok*/;
208 if (!UNTAG_Bool(variable[12])) break; /*for*/
209 variable[12] = CALL_abstract_collection___Iterator___item(variable[11])(variable[11]) /*ArrayIterator::item*/;
210 variable[13] = variable[12];
211 CALL_mmbuilder___MMLocalClass___accept_properties_visitor( variable[13] /*c*/)( variable[13] /*c*/, variable[10] /*mmbv3*/) /*MMLocalClass::accept_properties_visitor*/;
212 continue_8: while(0);
213 CALL_abstract_collection___Iterator___next(variable[11])(variable[11]) /*ArrayIterator::next*/;
214 }
215 break_8: while(0);
216 variable[11] = CALL_abstract_collection___Collection___iterator( variable[5] /*classes*/)( variable[5] /*classes*/) /*AbstractArray::iterator*/;
217 while (true) { /*for*/
218 variable[12] = CALL_abstract_collection___Iterator___is_ok(variable[11])(variable[11]) /*ArrayIterator::is_ok*/;
219 if (!UNTAG_Bool(variable[12])) break; /*for*/
220 variable[12] = CALL_abstract_collection___Iterator___item(variable[11])(variable[11]) /*ArrayIterator::item*/;
221 variable[13] = variable[12];
222 variable[14] = CALL_abstractmetamodel___MMLocalClass___global_properties( variable[13] /*c*/)( variable[13] /*c*/) /*MMLocalClass::global_properties*/;
223 variable[14] = CALL_abstract_collection___Collection___iterator(variable[14])(variable[14]) /*Collection::iterator*/;
224 while (true) { /*for*/
225 variable[15] = CALL_abstract_collection___Iterator___is_ok(variable[14])(variable[14]) /*Iterator::is_ok*/;
226 if (!UNTAG_Bool(variable[15])) break; /*for*/
227 variable[15] = CALL_abstract_collection___Iterator___item(variable[14])(variable[14]) /*Iterator::item*/;
228 variable[16] = variable[15];
229 variable[17] = variable[0];
230 variable[18] = CALL_abstractmetamodel___MMGlobalProperty___intro( variable[16] /*g*/)( variable[16] /*g*/) /*MMGlobalProperty::intro*/;
231 variable[18] = CALL_abstractmetamodel___MMLocalProperty___module(variable[18])(variable[18]) /*MMLocalProperty::module*/;
232 variable[17] = CALL_abstractmetamodel___MMModule___visibility_for(variable[17])(variable[17], variable[18]) /*MMModule::visibility_for*/;
233 variable[18] = CALL_abstractmetamodel___MMGlobalProperty___visibility_level( variable[16] /*g*/)( variable[16] /*g*/) /*MMGlobalProperty::visibility_level*/;
234 variable[17] = TAG_Bool(UNTAG_Int(variable[17])<UNTAG_Int(variable[18]));
235 if (UNTAG_Bool(variable[17])) { /*if*/
236 goto continue_10;
237 }
238 variable[18] = CALL_abstractmetamodel___MMLocalClass_____bra( variable[13] /*c*/)( variable[13] /*c*/, variable[16] /*g*/) /*MMLocalClass::[]*/;
239 variable[17] = variable[18];
240 continue_10: while(0);
241 CALL_abstract_collection___Iterator___next(variable[14])(variable[14]) /*Iterator::next*/;
242 }
243 break_10: while(0);
244 continue_9: while(0);
245 CALL_abstract_collection___Iterator___next(variable[11])(variable[11]) /*ArrayIterator::next*/;
246 }
247 break_9: while(0);
248 variable[11] = CALL_mmloader___ToolContext___error_count( variable[1] /*tc*/)( variable[1] /*tc*/) /*ToolContext::error_count*/;
249 variable[11] = TAG_Bool(UNTAG_Int(variable[11])>UNTAG_Int( TAG_Int(0)));
250 if (UNTAG_Bool(variable[11])) { /*if*/
251 variable[11] = variable[0];
252 exit(UNTAG_Int( TAG_Int(1)));
253 }
254 return_label2: while(false);
255 tracehead = trace.prev;
256 return;
257 }
258 void mmbuilder___MMLocalClass___accept_class_visitor(val_t self, val_t param0) {
259 struct trace_t trace = {NULL, NULL, 125, LOCATE_mmbuilder___MMLocalClass___accept_class_visitor};
260 val_t variable[3];
261 void **closurevariable = NULL;
262 trace.prev = tracehead; tracehead = &trace;
263 trace.file = LOCATE_mmbuilder;
264 variable[0] = self;
265 variable[1] = param0;
266 return_label11: while(false);
267 tracehead = trace.prev;
268 return;
269 }
270 void mmbuilder___MMLocalClass___accept_properties_visitor(val_t self, val_t param0) {
271 struct trace_t trace = {NULL, NULL, 130, LOCATE_mmbuilder___MMLocalClass___accept_properties_visitor};
272 val_t variable[3];
273 void **closurevariable = NULL;
274 trace.prev = tracehead; tracehead = &trace;
275 trace.file = LOCATE_mmbuilder;
276 variable[0] = self;
277 variable[1] = param0;
278 return_label12: while(false);
279 tracehead = trace.prev;
280 return;
281 }
282 void mmbuilder___MMSrcLocalClass___accept_class_visitor(val_t self, val_t param0) {
283 struct trace_t trace = {NULL, NULL, 137, LOCATE_mmbuilder___MMSrcLocalClass___accept_class_visitor};
284 val_t variable[6];
285 void **closurevariable = NULL;
286 trace.prev = tracehead; tracehead = &trace;
287 trace.file = LOCATE_mmbuilder;
288 variable[0] = self;
289 variable[1] = param0;
290 variable[3] = variable[0];
291 variable[3] = CALL_syntax_base___MMSrcLocalClass___nodes(variable[3])(variable[3]) /*MMSrcLocalClass::nodes*/;
292 variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*AbstractArray::iterator*/;
293 while (true) { /*for*/
294 variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ArrayIterator::is_ok*/;
295 if (!UNTAG_Bool(variable[4])) break; /*for*/
296 variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ArrayIterator::item*/;
297 variable[5] = variable[4];
298 CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[5] /*n*/) /*Visitor::visit*/;
299 continue_14: while(0);
300 CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ArrayIterator::next*/;
301 }
302 break_14: while(0);
303 return_label13: while(false);
304 tracehead = trace.prev;
305 return;
306 }
307 void mmbuilder___MMSrcLocalClass___accept_properties_visitor(val_t self, val_t param0) {
308 struct trace_t trace = {NULL, NULL, 144, LOCATE_mmbuilder___MMSrcLocalClass___accept_properties_visitor};
309 val_t variable[6];
310 void **closurevariable = NULL;
311 trace.prev = tracehead; tracehead = &trace;
312 trace.file = LOCATE_mmbuilder;
313 variable[0] = self;
314 variable[1] = param0;
315 variable[3] = variable[0];
316 variable[3] = CALL_syntax_base___MMSrcLocalClass___nodes(variable[3])(variable[3]) /*MMSrcLocalClass::nodes*/;
317 variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*AbstractArray::iterator*/;
318 while (true) { /*for*/
319 variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ArrayIterator::is_ok*/;
320 if (!UNTAG_Bool(variable[4])) break; /*for*/
321 variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ArrayIterator::item*/;
322 variable[5] = variable[4];
323 CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[5] /*n*/) /*Visitor::visit*/;
324 continue_16: while(0);
325 CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ArrayIterator::next*/;
326 }
327 break_16: while(0);
328 variable[3] = variable[0];
329 variable[3] = CALL_syntax_base___MMSrcLocalClass___src_local_properties(variable[3])(variable[3]) /*MMSrcLocalClass::src_local_properties*/;
330 variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*Map::iterator*/;
331 while (true) { /*for*/
332 variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*Iterator::is_ok*/;
333 if (!UNTAG_Bool(variable[4])) break; /*for*/
334 variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*Iterator::item*/;
335 variable[5] = variable[4];
336 CALL_mmbuilder___MMLocalProperty___accept_property_visitor( variable[5] /*p*/)( variable[5] /*p*/, variable[1] /*v*/) /*MMLocalProperty::accept_property_visitor*/;
337 continue_17: while(0);
338 CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*Iterator::next*/;
339 }
340 break_17: while(0);
341 return_label15: while(false);
342 tracehead = trace.prev;
343 return;
344 }
345 void mmbuilder___MMSrcLocalClass___process_default_constructors(val_t self, val_t param0) {
346 struct trace_t trace = {NULL, NULL, 156, LOCATE_mmbuilder___MMSrcLocalClass___process_default_constructors};
347 static val_t once_value_22; static int once_bool_22; /* Once value for variable[9]*/
348 val_t variable[24];
349 void **closurevariable = NULL;
350 trace.prev = tracehead; tracehead = &trace;
351 trace.file = LOCATE_mmbuilder;
352 variable[0] = self;
353 variable[1] = param0;
354 variable[3] = variable[0];
355 variable[3] = CALL_abstractmetamodel___MMLocalClass___global_properties(variable[3])(variable[3]) /*MMLocalClass::global_properties*/;
356 variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*Collection::iterator*/;
357 while (true) { /*for*/
358 variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*Iterator::is_ok*/;
359 if (!UNTAG_Bool(variable[4])) break; /*for*/
360 variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*Iterator::item*/;
361 variable[5] = variable[4];
362 variable[6] = CALL_abstractmetamodel___MMGlobalProperty___is_init( variable[5] /*gp*/)( variable[5] /*gp*/) /*MMGlobalProperty::is_init*/;
363 if (UNTAG_Bool(variable[6])) { /*if*/
364 variable[6] = CALL_abstractmetamodel___MMGlobalProperty___intro( variable[5] /*gp*/)( variable[5] /*gp*/) /*MMGlobalProperty::intro*/;
365 variable[6] = CALL_abstractmetamodel___MMLocalProperty___local_class(variable[6])(variable[6]) /*MMLocalProperty::local_class*/;
366 variable[7] = variable[0];
367 variable[6] = TAG_Bool((variable[6] == variable[7]) || ((variable[6] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[6])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[6],variable[7])):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[6])(variable[6], variable[7]) /*Object::==*/)))));
368 if (UNTAG_Bool(variable[6])) { /*if*/
369 goto return_label18;
370 }
371 }
372 continue_19: while(0);
373 CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*Iterator::next*/;
374 }
375 break_19: while(0);
376 variable[4] = NEW_ArraySet_array___ArraySet___init(); /*new ArraySet[MMLocalProperty]*/
377 variable[3] = variable[4];
378 variable[5] = NEW_ArraySet_array___ArraySet___init(); /*new ArraySet[MMGlobalProperty]*/
379 variable[4] = variable[5];
380 variable[5] = variable[0];
381 variable[5] = CALL_abstractmetamodel___MMLocalClass___che(variable[5])(variable[5]) /*MMLocalClass::che*/;
382 variable[5] = CALL_partial_order___PartialOrderElement___direct_greaters(variable[5])(variable[5]) /*PartialOrderElement::direct_greaters*/;
383 variable[5] = CALL_abstract_collection___Collection___iterator(variable[5])(variable[5]) /*AbstractArray::iterator*/;
384 while (true) { /*for*/
385 variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*ArrayIterator::is_ok*/;
386 if (!UNTAG_Bool(variable[6])) break; /*for*/
387 variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*ArrayIterator::item*/;
388 variable[7] = variable[6];
389 variable[8] = CALL_abstractmetamodel___MMLocalClass___global( variable[7] /*sc*/)( variable[7] /*sc*/) /*MMLocalClass::global*/;
390 variable[8] = CALL_abstractmetamodel___MMGlobalClass___is_universal(variable[8])(variable[8]) /*MMGlobalClass::is_universal*/;
391 variable[9] = variable[8];
392 if (!UNTAG_Bool(variable[9])) { /* or */
393 variable[9] = CALL_abstractmetamodel___MMLocalClass___global( variable[7] /*sc*/)( variable[7] /*sc*/) /*MMLocalClass::global*/;
394 variable[9] = CALL_abstractmetamodel___MMGlobalClass___is_interface(variable[9])(variable[9]) /*MMGlobalClass::is_interface*/;
395 }
396 variable[8] = variable[9];
397 if (UNTAG_Bool(variable[8])) { /*if*/
398 goto continue_20;
399 }
400 variable[8] = CALL_abstractmetamodel___MMLocalClass___global_properties( variable[7] /*sc*/)( variable[7] /*sc*/) /*MMLocalClass::global_properties*/;
401 variable[8] = CALL_abstract_collection___Collection___iterator(variable[8])(variable[8]) /*Collection::iterator*/;
402 while (true) { /*for*/
403 variable[9] = CALL_abstract_collection___Iterator___is_ok(variable[8])(variable[8]) /*Iterator::is_ok*/;
404 if (!UNTAG_Bool(variable[9])) break; /*for*/
405 variable[9] = CALL_abstract_collection___Iterator___item(variable[8])(variable[8]) /*Iterator::item*/;
406 variable[10] = variable[9];
407 variable[11] = CALL_abstractmetamodel___MMGlobalProperty___is_init( variable[10] /*gp*/)( variable[10] /*gp*/) /*MMGlobalProperty::is_init*/;
408 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[11])))) { /*if*/
409 goto continue_21;
410 }
411 CALL_abstract_collection___SimpleCollection___add( variable[4] /*super_constructors*/)( variable[4] /*super_constructors*/, variable[10] /*gp*/) /*ArraySet::add*/;
412 continue_21: while(0);
413 CALL_abstract_collection___Iterator___next(variable[8])(variable[8]) /*Iterator::next*/;
414 }
415 break_21: while(0);
416 if (once_bool_22) variable[9] = once_value_22;
417 else {
418 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("init"), TAG_Int(4)); /*new String*/
419 variable[9] = CALL_symbol___String___to_symbol(variable[9])(variable[9]) /*String::to_symbol*/;
420 once_value_22 = variable[9];
421 once_bool_22 = true;
422 }
423 variable[9] = CALL_abstractmetamodel___MMLocalClass___get_property_by_name( variable[7] /*sc*/)( variable[7] /*sc*/, variable[9]) /*MMLocalClass::get_property_by_name*/;
424 variable[8] = variable[9];
425 variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*gp*/ == NIT_NULL /*null*/) || (( variable[8] /*gp*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*gp*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*gp*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*gp*/)( variable[8] /*gp*/, NIT_NULL /*null*/) /*Object::==*/)))))));
426 if (UNTAG_Bool(variable[9])) { /*if*/
427 variable[9] = variable[0];
428 variable[9] = CALL_abstractmetamodel___MMLocalClass_____bra(variable[9])(variable[9], variable[8] /*gp*/) /*MMLocalClass::[]*/;
429 CALL_abstract_collection___SimpleCollection___add( variable[3] /*super_inits*/)( variable[3] /*super_inits*/, variable[9]) /*ArraySet::add*/;
430 }
431 continue_20: while(0);
432 CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*ArrayIterator::next*/;
433 }
434 break_20: while(0);
435 variable[6] = NEW_Array_array___Array___init(); /*new Array[MMSrcAttribute]*/
436 variable[5] = variable[6];
437 variable[6] = variable[0];
438 variable[6] = CALL_syntax_base___MMSrcLocalClass___src_local_properties(variable[6])(variable[6]) /*MMSrcLocalClass::src_local_properties*/;
439 variable[6] = CALL_abstract_collection___Collection___iterator(variable[6])(variable[6]) /*Map::iterator*/;
440 while (true) { /*for*/
441 variable[7] = CALL_abstract_collection___Iterator___is_ok(variable[6])(variable[6]) /*Iterator::is_ok*/;
442 if (!UNTAG_Bool(variable[7])) break; /*for*/
443 variable[7] = CALL_abstract_collection___Iterator___item(variable[6])(variable[6]) /*Iterator::item*/;
444 variable[8] = variable[7];
445 variable[9] = TAG_Bool(( variable[8] /*a*/==NIT_NULL) || VAL_ISA( variable[8] /*a*/, COLOR_MMSrcAttribute, ID_MMSrcAttribute)) /*cast MMSrcAttribute*/;
446 if (UNTAG_Bool(variable[9])) { /*if*/
447 variable[10] = CALL_syntax_base___MMLocalProperty___node( variable[8] /*a*/)( variable[8] /*a*/) /*MMSrcAttribute::node*/;
448 variable[9] = variable[10];
449 variable[10] = TAG_Bool(( variable[9] /*n*/==NIT_NULL) || VAL_ISA( variable[9] /*n*/, COLOR_AAttrPropdef, ID_AAttrPropdef)) /*cast AAttrPropdef*/;
450 if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_mmbuilder___MMSrcLocalClass___process_default_constructors, LOCATE_mmbuilder, 187); nit_exit(1);}
451 variable[10] = CALL_parser_nodes___AAttrPropdef___n_expr( variable[9] /*n*/)( variable[9] /*n*/) /*AAttrPropdef::n_expr*/;
452 variable[10] = TAG_Bool((variable[10] == NIT_NULL /*null*/) || ((variable[10] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[10])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[10], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[10])(variable[10], NIT_NULL /*null*/) /*Object::==*/)))));
453 if (UNTAG_Bool(variable[10])) { /*if*/
454 CALL_abstract_collection___SimpleCollection___add( variable[5] /*unassigned_attributes*/)( variable[5] /*unassigned_attributes*/, variable[8] /*a*/) /*AbstractArray::add*/;
455 }
456 }
457 continue_23: while(0);
458 CALL_abstract_collection___Iterator___next(variable[6])(variable[6]) /*Iterator::next*/;
459 }
460 break_23: while(0);
461 variable[6] = CALL_abstract_collection___Collection___is_empty( variable[4] /*super_constructors*/)( variable[4] /*super_constructors*/) /*ArraySet::is_empty*/;
462 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[6])))) { /*if*/
463 variable[7] = NEW_Array_array___Array___init(); /*new Array[MMLocalClass]*/
464 variable[6] = variable[7];
465 variable[7] = CALL_abstract_collection___Collection___iterator( variable[4] /*super_constructors*/)( variable[4] /*super_constructors*/) /*ArraySet::iterator*/;
466 while (true) { /*for*/
467 variable[8] = CALL_abstract_collection___Iterator___is_ok(variable[7])(variable[7]) /*Iterator::is_ok*/;
468 if (!UNTAG_Bool(variable[8])) break; /*for*/
469 variable[8] = CALL_abstract_collection___Iterator___item(variable[7])(variable[7]) /*Iterator::item*/;
470 variable[9] = variable[8];
471 variable[11] = CALL_abstractmetamodel___MMGlobalProperty___local_class( variable[9] /*gp*/)( variable[9] /*gp*/) /*MMGlobalProperty::local_class*/;
472 variable[10] = variable[11];
473 variable[11] = CALL_abstract_collection___Collection___has( variable[6] /*supers*/)( variable[6] /*supers*/, variable[10] /*sc*/) /*AbstractArray::has*/;
474 if (UNTAG_Bool(variable[11])) { /*if*/
475 goto continue_24;
476 }
477 variable[11] = CALL_abstractmetamodel___MMLocalClass___global( variable[10] /*sc*/)( variable[10] /*sc*/) /*MMLocalClass::global*/;
478 variable[11] = CALL_abstractmetamodel___MMGlobalClass___is_mixin(variable[11])(variable[11]) /*MMGlobalClass::is_mixin*/;
479 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[11])))) { /*if*/
480 CALL_abstract_collection___SimpleCollection___add( variable[6] /*supers*/)( variable[6] /*supers*/, variable[10] /*sc*/) /*AbstractArray::add*/;
481 }
482 continue_24: while(0);
483 CALL_abstract_collection___Iterator___next(variable[7])(variable[7]) /*Iterator::next*/;
484 }
485 break_24: while(0);
486 variable[7] = variable[0];
487 variable[7] = CALL_abstractmetamodel___MMLocalClass___che(variable[7])(variable[7]) /*MMLocalClass::che*/;
488 variable[7] = CALL_partial_order___PartialOrderElement___order(variable[7])(variable[7]) /*PartialOrderElement::order*/;
489 variable[7] = CALL_partial_order___PartialOrder___select_smallests(variable[7])(variable[7], variable[6] /*supers*/) /*PartialOrder::select_smallests*/;
490 variable[6] = variable[7] /*supers=*/;
491 variable[7] = NIT_NULL /*null*/;
492 variable[8] = CALL_abstract_collection___Collection___length( variable[6] /*supers*/)( variable[6] /*supers*/) /*AbstractArray::length*/;
493 variable[8] = TAG_Bool(UNTAG_Int(variable[8])>UNTAG_Int( TAG_Int(1)));
494 if (UNTAG_Bool(variable[8])) { /*if*/
495 variable[8] = variable[0];
496 variable[8] = CALL_syntax_base___MMSrcLocalClass___nodes(variable[8])(variable[8]) /*MMSrcLocalClass::nodes*/;
497 variable[8] = CALL_abstract_collection___Collection___first(variable[8])(variable[8]) /*IndexedCollection::first*/;
498 variable[9] = NEW_Array_array___Array___with_capacity(TAG_Int(7)); /*new Array[String]*/
499 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("Error: Explicit constructor required in "), TAG_Int(40)); /*new String*/
500 variable[11] = variable[10];
501 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[11]) /*AbstractArray::add*/;
502 variable[12] = variable[0];
503 variable[13] = variable[12];
504 variable[13] = CALL_string___Object___to_s(variable[13])(variable[13]) /*Object::to_s*/;
505 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[13]) /*AbstractArray::add*/;
506 variable[14] = NEW_String_string___String___with_native(BOX_NativeString(" since multiple inheritance of constructor is forbiden. Conflicting classes are "), TAG_Int(80)); /*new String*/
507 variable[15] = variable[14];
508 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[15]) /*AbstractArray::add*/;
509 variable[16] = NEW_String_string___String___with_native(BOX_NativeString(", "), TAG_Int(2)); /*new String*/
510 variable[16] = CALL_string___Collection___join( variable[6] /*supers*/)( variable[6] /*supers*/, variable[16]) /*Collection::join*/;
511 variable[17] = variable[16];
512 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[17]) /*AbstractArray::add*/;
513 variable[18] = NEW_String_string___String___with_native(BOX_NativeString(". Costructors are "), TAG_Int(18)); /*new String*/
514 variable[19] = variable[18];
515 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[19]) /*AbstractArray::add*/;
516 variable[20] = NEW_String_string___String___with_native(BOX_NativeString(", "), TAG_Int(2)); /*new String*/
517 variable[20] = CALL_string___Collection___join( variable[4] /*super_constructors*/)( variable[4] /*super_constructors*/, variable[20]) /*Collection::join*/;
518 variable[21] = variable[20];
519 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[21]) /*AbstractArray::add*/;
520 variable[22] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/
521 variable[23] = variable[22];
522 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[23]) /*AbstractArray::add*/;
523 variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
524 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[8], variable[9]) /*AbsSyntaxVisitor::error*/;
525 goto return_label18;
526 } else { /*if*/
527 variable[8] = CALL_abstract_collection___Collection___length( variable[6] /*supers*/)( variable[6] /*supers*/) /*AbstractArray::length*/;
528 variable[8] = TAG_Bool((variable[8])==( TAG_Int(1)));
529 if (UNTAG_Bool(variable[8])) { /*if*/
530 variable[8] = CALL_abstract_collection___Collection___first( variable[6] /*supers*/)( variable[6] /*supers*/) /*IndexedCollection::first*/;
531 variable[7] = variable[8] /*superclass=*/;
532 }
533 }
534 variable[8] = CALL_abstract_collection___Collection___iterator( variable[4] /*super_constructors*/)( variable[4] /*super_constructors*/) /*ArraySet::iterator*/;
535 while (true) { /*for*/
536 variable[9] = CALL_abstract_collection___Iterator___is_ok(variable[8])(variable[8]) /*Iterator::is_ok*/;
537 if (!UNTAG_Bool(variable[9])) break; /*for*/
538 variable[9] = CALL_abstract_collection___Iterator___item(variable[8])(variable[8]) /*Iterator::item*/;
539 variable[10] = variable[9];
540 variable[11] = TAG_Bool(( variable[7] /*superclass*/ == NIT_NULL /*null*/) || (( variable[7] /*superclass*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*superclass*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*superclass*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*superclass*/)( variable[7] /*superclass*/, NIT_NULL /*null*/) /*Object::==*/)))));
541 variable[12] = variable[11];
542 if (!UNTAG_Bool(variable[12])) { /* or */
543 variable[12] = CALL_abstractmetamodel___MMGlobalProperty___local_class( variable[10] /*gp*/)( variable[10] /*gp*/) /*MMGlobalProperty::local_class*/;
544 variable[12] = TAG_Bool((variable[12] == variable[7] /*superclass*/) || ((variable[12] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[12])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[12], variable[7] /*superclass*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[12])(variable[12], variable[7] /*superclass*/) /*Object::==*/)))));
545 }
546 variable[11] = variable[12];
547 if (UNTAG_Bool(variable[11])) { /*if*/
548 variable[11] = variable[0];
549 CALL_inheritance___MMLocalClass___make_visible_an_inherited_global_property(variable[11])(variable[11], variable[10] /*gp*/) /*MMLocalClass::make_visible_an_inherited_global_property*/;
550 }
551 continue_25: while(0);
552 CALL_abstract_collection___Iterator___next(variable[8])(variable[8]) /*Iterator::next*/;
553 }
554 break_25: while(0);
555 variable[8] = variable[0];
556 variable[8] = CALL_abstractmetamodel___MMLocalClass___global(variable[8])(variable[8]) /*MMLocalClass::global*/;
557 variable[9] = CALL_abstractmetamodel___MMLocalClass___global( variable[7] /*superclass*/)( variable[7] /*superclass*/) /*MMLocalClass::global*/;
558 CALL_abstractmetamodel___MMGlobalClass___mixin_of__eq(variable[8])(variable[8], variable[9]) /*MMGlobalClass::mixin_of=*/;
559 } else { /*if*/
560 variable[7] = variable[0];
561 variable[8] = CALL_array___Collection___to_a( variable[3] /*super_inits*/)( variable[3] /*super_inits*/) /*Collection::to_a*/;
562 variable[9] = NEW_MMImplicitInit_syntax_base___MMImplicitInit___init(variable[7], variable[5] /*unassigned_attributes*/, variable[8]); /*new MMImplicitInit*/
563 variable[7] = variable[9];
564 variable[6] = variable[7];
565 variable[7] = variable[0];
566 CALL_mmbuilder___MMSrcLocalClass___add_src_local_property(variable[7])(variable[7], variable[1] /*v*/, variable[6] /*p*/) /*MMSrcLocalClass::add_src_local_property*/;
567 }
568 return_label18: while(false);
569 tracehead = trace.prev;
570 return;
571 }
572 void mmbuilder___MMSrcLocalClass___add_src_local_property(val_t self, val_t param0, val_t param1) {
573 struct trace_t trace = {NULL, NULL, 232, LOCATE_mmbuilder___MMSrcLocalClass___add_src_local_property};
574 val_t variable[21];
575 void **closurevariable = NULL;
576 trace.prev = tracehead; tracehead = &trace;
577 trace.file = LOCATE_mmbuilder;
578 variable[0] = self;
579 variable[1] = param0;
580 variable[2] = param1;
581 variable[5] = CALL_abstractmetamodel___MMLocalProperty___name( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::name*/;
582 variable[4] = variable[5];
583 variable[5] = variable[0];
584 variable[5] = CALL_syntax_base___MMSrcLocalClass___src_local_properties(variable[5])(variable[5]) /*MMSrcLocalClass::src_local_properties*/;
585 variable[5] = CALL_abstract_collection___Map___has_key(variable[5])(variable[5], variable[4] /*pname*/) /*Map::has_key*/;
586 if (UNTAG_Bool(variable[5])) { /*if*/
587 variable[5] = CALL_syntax_base___MMLocalProperty___node( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::node*/;
588 variable[6] = NEW_Array_array___Array___with_capacity(TAG_Int(5)); /*new Array[String]*/
589 variable[7] = NEW_String_string___String___with_native(BOX_NativeString("Error: A property "), TAG_Int(18)); /*new String*/
590 variable[8] = variable[7];
591 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[8]) /*AbstractArray::add*/;
592 variable[9] = variable[4] /*pname*/;
593 variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
594 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[9]) /*AbstractArray::add*/;
595 variable[10] = NEW_String_string___String___with_native(BOX_NativeString(" is already defined in class "), TAG_Int(29)); /*new String*/
596 variable[11] = variable[10];
597 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[11]) /*AbstractArray::add*/;
598 variable[12] = variable[0];
599 variable[12] = CALL_abstractmetamodel___MMLocalClass___name(variable[12])(variable[12]) /*MMLocalClass::name*/;
600 variable[13] = variable[12];
601 variable[13] = CALL_string___Object___to_s(variable[13])(variable[13]) /*Object::to_s*/;
602 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[13]) /*AbstractArray::add*/;
603 variable[14] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/
604 variable[15] = variable[14];
605 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[15]) /*AbstractArray::add*/;
606 variable[6] = CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/;
607 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[5], variable[6]) /*AbsSyntaxVisitor::error*/;
608 goto return_label26;
609 }
610 variable[5] = variable[0];
611 variable[5] = CALL_syntax_base___MMSrcLocalClass___src_local_properties(variable[5])(variable[5]) /*MMSrcLocalClass::src_local_properties*/;
612 CALL_abstract_collection___Map_____braeq(variable[5])(variable[5], variable[4] /*pname*/, variable[2] /*prop*/) /*Map::[]=*/;
613 variable[5] = variable[0];
614 variable[5] = CALL_abstractmetamodel___MMLocalClass___has_global_property_by_name(variable[5])(variable[5], variable[4] /*pname*/) /*MMLocalClass::has_global_property_by_name*/;
615 if (UNTAG_Bool(variable[5])) { /*if*/
616 variable[6] = variable[0];
617 variable[6] = CALL_abstractmetamodel___MMLocalClass___properties_by_name(variable[6])(variable[6]) /*MMLocalClass::properties_by_name*/;
618 variable[6] = CALL_abstract_collection___Map_____bra(variable[6])(variable[6], variable[4] /*pname*/) /*Map::[]*/;
619 variable[5] = variable[6];
620 variable[6] = CALL_abstract_collection___Collection___length( variable[5] /*globs*/)( variable[5] /*globs*/) /*AbstractArray::length*/;
621 variable[6] = TAG_Bool(UNTAG_Int(variable[6])>UNTAG_Int( TAG_Int(1)));
622 if (UNTAG_Bool(variable[6])) { /*if*/
623 variable[6] = CALL_syntax_base___MMLocalProperty___node( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::node*/;
624 variable[7] = NEW_Array_array___Array___with_capacity(TAG_Int(7)); /*new Array[String]*/
625 variable[8] = NEW_String_string___String___with_native(BOX_NativeString("Name error: "), TAG_Int(12)); /*new String*/
626 variable[9] = variable[8];
627 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[9]) /*AbstractArray::add*/;
628 variable[10] = variable[0];
629 variable[11] = variable[10];
630 variable[11] = CALL_string___Object___to_s(variable[11])(variable[11]) /*Object::to_s*/;
631 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[11]) /*AbstractArray::add*/;
632 variable[12] = NEW_String_string___String___with_native(BOX_NativeString(" inherits "), TAG_Int(10)); /*new String*/
633 variable[13] = variable[12];
634 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[13]) /*AbstractArray::add*/;
635 variable[14] = CALL_abstract_collection___Collection___length( variable[5] /*globs*/)( variable[5] /*globs*/) /*AbstractArray::length*/;
636 variable[15] = variable[14];
637 variable[15] = CALL_string___Object___to_s(variable[15])(variable[15]) /*Object::to_s*/;
638 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[15]) /*AbstractArray::add*/;
639 variable[16] = NEW_String_string___String___with_native(BOX_NativeString(" global properties named "), TAG_Int(25)); /*new String*/
640 variable[17] = variable[16];
641 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[17]) /*AbstractArray::add*/;
642 variable[18] = variable[4] /*pname*/;
643 variable[18] = CALL_string___Object___to_s(variable[18])(variable[18]) /*Object::to_s*/;
644 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[18]) /*AbstractArray::add*/;
645 variable[19] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/
646 variable[20] = variable[19];
647 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[20]) /*AbstractArray::add*/;
648 variable[7] = CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/;
649 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[6], variable[7]) /*AbsSyntaxVisitor::error*/;
650 }
651 variable[7] = CALL_abstract_collection___Collection___first( variable[5] /*globs*/)( variable[5] /*globs*/) /*IndexedCollection::first*/;
652 variable[6] = variable[7];
653 CALL_inheritance___MMLocalProperty___inherit_global( variable[2] /*prop*/)( variable[2] /*prop*/, variable[6] /*g*/) /*MMLocalProperty::inherit_global*/;
654 }
655 variable[5] = CALL_abstractmetamodel___MMLocalProperty___global( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::global*/;
656 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::==*/)))));
657 if (UNTAG_Bool(variable[5])) { /*if*/
658 CALL_abstractmetamodel___MMLocalProperty___new_global( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::new_global*/;
659 variable[5] = CALL_abstractmetamodel___MMLocalProperty___global( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::global*/;
660 variable[6] = CALL_syntax_base___MMLocalProperty___is_init( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::is_init*/;
661 CALL_abstractmetamodel___MMGlobalProperty___is_init__eq(variable[5])(variable[5], variable[6]) /*MMGlobalProperty::is_init=*/;
662 }
663 return_label26: while(false);
664 tracehead = trace.prev;
665 return;
666 }
667 void mmbuilder___MMLocalProperty___accept_property_visitor(val_t self, val_t param0) {
668 struct trace_t trace = {NULL, NULL, 262, LOCATE_mmbuilder___MMLocalProperty___accept_property_visitor};
669 val_t variable[3];
670 void **closurevariable = NULL;
671 trace.prev = tracehead; tracehead = &trace;
672 trace.file = LOCATE_mmbuilder;
673 variable[0] = self;
674 variable[1] = param0;
675 return_label27: while(false);
676 tracehead = trace.prev;
677 return;
678 }
679 void mmbuilder___MMImplicitInit___accept_property_visitor(val_t self, val_t param0) {
680 struct trace_t trace = {NULL, NULL, 269, LOCATE_mmbuilder___MMImplicitInit___accept_property_visitor};
681 val_t variable[22];
682 void **closurevariable = NULL;
683 trace.prev = tracehead; tracehead = &trace;
684 trace.file = LOCATE_mmbuilder;
685 variable[0] = self;
686 variable[1] = param0;
687 variable[3] = NIT_NULL /*null*/;
688 variable[4] = variable[0];
689 variable[4] = CALL_syntax_base___MMImplicitInit___super_inits(variable[4])(variable[4]) /*MMImplicitInit::super_inits*/;
690 variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*AbstractArray::iterator*/;
691 while (true) { /*for*/
692 variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*ArrayIterator::is_ok*/;
693 if (!UNTAG_Bool(variable[5])) break; /*for*/
694 variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*ArrayIterator::item*/;
695 variable[6] = variable[5];
696 variable[7] = CALL_static_type___MMLocalProperty___signature( variable[6] /*p*/)( variable[6] /*p*/) /*MMLocalProperty::signature*/;
697 variable[7] = CALL_static_type___MMSignature___arity(variable[7])(variable[7]) /*MMSignature::arity*/;
698 variable[7] = TAG_Bool(UNTAG_Int(variable[7])>UNTAG_Int( TAG_Int(0)));
699 if (UNTAG_Bool(variable[7])) { /*if*/
700 variable[7] = TAG_Bool(( variable[3] /*base*/ == NIT_NULL /*null*/) || (( variable[3] /*base*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*base*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*base*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*base*/)( variable[3] /*base*/, NIT_NULL /*null*/) /*Object::==*/)))));
701 if (UNTAG_Bool(variable[7])) { /*if*/
702 variable[3] = variable[6] /*p*/ /*base=*/;
703 } else { /*if*/
704 variable[7] = NEW_Array_array___Array___with_capacity(TAG_Int(7)); /*new Array[String]*/
705 variable[8] = NEW_String_string___String___with_native(BOX_NativeString("Error: explicit constructor needed in "), TAG_Int(38)); /*new String*/
706 variable[9] = variable[8];
707 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[9]) /*AbstractArray::add*/;
708 variable[10] = variable[0];
709 variable[10] = CALL_abstractmetamodel___MMLocalProperty___local_class(variable[10])(variable[10]) /*MMLocalProperty::local_class*/;
710 variable[11] = variable[10];
711 variable[11] = CALL_string___Object___to_s(variable[11])(variable[11]) /*Object::to_s*/;
712 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[11]) /*AbstractArray::add*/;
713 variable[12] = NEW_String_string___String___with_native(BOX_NativeString(" since both super-constructor "), TAG_Int(30)); /*new String*/
714 variable[13] = variable[12];
715 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[13]) /*AbstractArray::add*/;
716 variable[14] = CALL_abstractmetamodel___MMLocalProperty___full_name( variable[3] /*base*/)( variable[3] /*base*/) /*MMLocalProperty::full_name*/;
717 variable[15] = variable[14];
718 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[15]) /*AbstractArray::add*/;
719 variable[16] = NEW_String_string___String___with_native(BOX_NativeString(" and "), TAG_Int(5)); /*new String*/
720 variable[17] = variable[16];
721 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[17]) /*AbstractArray::add*/;
722 variable[18] = CALL_abstractmetamodel___MMLocalProperty___full_name( variable[6] /*p*/)( variable[6] /*p*/) /*MMLocalProperty::full_name*/;
723 variable[19] = variable[18];
724 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[19]) /*AbstractArray::add*/;
725 variable[20] = NEW_String_string___String___with_native(BOX_NativeString(" have paramters"), TAG_Int(15)); /*new String*/
726 variable[21] = variable[20];
727 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[21]) /*AbstractArray::add*/;
728 variable[7] = CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/;
729 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, NIT_NULL /*null*/, variable[7]) /*AbsSyntaxVisitor::error*/;
730 goto return_label28;
731 }
732 }
733 continue_29: while(0);
734 CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*ArrayIterator::next*/;
735 }
736 break_29: while(0);
737 variable[4] = variable[0];
738 ATTR_mmbuilder___MMImplicitInit____super_init(variable[4]) /*MMImplicitInit::_super_init*/ = variable[3] /*base*/;
739 variable[5] = NEW_Array_array___Array___init(); /*new Array[MMType]*/
740 variable[4] = variable[5];
741 variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*base*/ == NIT_NULL /*null*/) || (( variable[3] /*base*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*base*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*base*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*base*/)( variable[3] /*base*/, NIT_NULL /*null*/) /*Object::==*/)))))));
742 if (UNTAG_Bool(variable[5])) { /*if*/
743 variable[6] = CALL_static_type___MMLocalProperty___signature( variable[3] /*base*/)( variable[3] /*base*/) /*MMLocalProperty::signature*/;
744 variable[5] = variable[6];
745 variable[6] = CALL_static_type___MMSignature___arity( variable[5] /*sig*/)( variable[5] /*sig*/) /*MMSignature::arity*/;
746 variable[7] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[6]); /*new Range[Int]*/
747 variable[6] = variable[7];
748 variable[6] = CALL_abstract_collection___Collection___iterator(variable[6])(variable[6]) /*Range::iterator*/;
749 while (true) { /*for*/
750 variable[7] = CALL_abstract_collection___Iterator___is_ok(variable[6])(variable[6]) /*Iterator::is_ok*/;
751 if (!UNTAG_Bool(variable[7])) break; /*for*/
752 variable[7] = CALL_abstract_collection___Iterator___item(variable[6])(variable[6]) /*Iterator::item*/;
753 variable[8] = variable[7];
754 variable[9] = CALL_static_type___MMSignature_____bra( variable[5] /*sig*/)( variable[5] /*sig*/, variable[8] /*i*/) /*MMSignature::[]*/;
755 CALL_abstract_collection___SimpleCollection___add( variable[4] /*params*/)( variable[4] /*params*/, variable[9]) /*AbstractArray::add*/;
756 continue_30: while(0);
757 CALL_abstract_collection___Iterator___next(variable[6])(variable[6]) /*Iterator::next*/;
758 }
759 break_30: while(0);
760 }
761 variable[5] = variable[0];
762 variable[5] = CALL_syntax_base___MMImplicitInit___unassigned_attributes(variable[5])(variable[5]) /*MMImplicitInit::unassigned_attributes*/;
763 variable[5] = CALL_abstract_collection___Collection___iterator(variable[5])(variable[5]) /*AbstractArray::iterator*/;
764 while (true) { /*for*/
765 variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*ArrayIterator::is_ok*/;
766 if (!UNTAG_Bool(variable[6])) break; /*for*/
767 variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*ArrayIterator::item*/;
768 variable[7] = variable[6];
769 variable[8] = CALL_static_type___MMLocalProperty___signature( variable[7] /*a*/)( variable[7] /*a*/) /*MMLocalProperty::signature*/;
770 variable[8] = CALL_static_type___MMSignature___return_type(variable[8])(variable[8]) /*MMSignature::return_type*/;
771 CALL_abstract_collection___SimpleCollection___add( variable[4] /*params*/)( variable[4] /*params*/, variable[8]) /*AbstractArray::add*/;
772 continue_31: while(0);
773 CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*ArrayIterator::next*/;
774 }
775 break_31: while(0);
776 variable[5] = variable[0];
777 variable[6] = variable[0];
778 variable[6] = CALL_abstractmetamodel___MMLocalProperty___local_class(variable[6])(variable[6]) /*MMLocalProperty::local_class*/;
779 variable[6] = CALL_static_type___MMLocalClass___get_type(variable[6])(variable[6]) /*MMLocalClass::get_type*/;
780 variable[7] = NEW_MMSignature_static_type___MMSignature___init( variable[4] /*params*/, NIT_NULL /*null*/, variable[6]); /*new MMSignature*/
781 variable[6] = variable[7];
782 CALL_static_type___MMLocalProperty___signature__eq(variable[5])(variable[5], variable[6]) /*MMLocalProperty::signature=*/;
783 return_label28: while(false);
784 tracehead = trace.prev;
785 return;
786 }
787 val_t mmbuilder___MMImplicitInit___super_init(val_t self) {
788 struct trace_t trace = {NULL, NULL, 268, LOCATE_mmbuilder___MMImplicitInit___super_init};
789 val_t *variable = NULL;
790 void **closurevariable = NULL;
791 trace.prev = tracehead; tracehead = &trace;
792 trace.file = LOCATE_mmbuilder;
793 tracehead = trace.prev;
794 return ATTR_mmbuilder___MMImplicitInit____super_init( self) /*MMImplicitInit::_super_init*/;
795 }
796 val_t mmbuilder___MMSrcAncestor___local_class(val_t self) {
797 struct trace_t trace = {NULL, NULL, 304, LOCATE_mmbuilder___MMSrcAncestor___local_class};
798 val_t *variable = NULL;
799 void **closurevariable = NULL;
800 trace.prev = tracehead; tracehead = &trace;
801 trace.file = LOCATE_mmbuilder;
802 tracehead = trace.prev;
803 return ATTR_mmbuilder___MMSrcAncestor____local_class( self) /*MMSrcAncestor::_local_class*/;
804 }
805 val_t mmbuilder___MMSrcAncestor___node(val_t self) {
806 struct trace_t trace = {NULL, NULL, 302, LOCATE_mmbuilder___MMSrcAncestor___node};
807 val_t *variable = NULL;
808 void **closurevariable = NULL;
809 trace.prev = tracehead; tracehead = &trace;
810 trace.file = LOCATE_mmbuilder;
811 tracehead = trace.prev;
812 return ATTR_mmbuilder___MMSrcAncestor____node( self) /*MMSrcAncestor::_node*/;
813 }
814 void mmbuilder___MMSrcAncestor___init(val_t self, val_t param0, val_t param1, int* init_table) {
815 struct trace_t trace = {NULL, NULL, 306, LOCATE_mmbuilder___MMSrcAncestor___init};
816 val_t variable[5];
817 void **closurevariable = NULL;
818 trace.prev = tracehead; tracehead = &trace;
819 trace.file = LOCATE_mmbuilder;
820 variable[0] = self;
821 variable[1] = param0;
822 variable[2] = param1;
823 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMSrcAncestor].i]) return;
824 variable[4] = variable[0];
825 ATTR_mmbuilder___MMSrcAncestor____node(variable[4]) /*MMSrcAncestor::_node*/ = variable[1] /*n*/;
826 variable[4] = variable[0];
827 ATTR_mmbuilder___MMSrcAncestor____local_class(variable[4]) /*MMSrcAncestor::_local_class*/ = variable[2] /*c*/;
828 return_label32: while(false);
829 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMSrcAncestor].i] = 1;
830 tracehead = trace.prev;
831 return;
832 }
833 void mmbuilder___ClassBuilderVisitor___visit(val_t self, val_t param0) {
834 struct trace_t trace = {NULL, NULL, 326, LOCATE_mmbuilder___ClassBuilderVisitor___visit};
835 val_t variable[4];
836 void **closurevariable = NULL;
837 trace.prev = tracehead; tracehead = &trace;
838 trace.file = LOCATE_mmbuilder;
839 variable[0] = self;
840 variable[1] = param0;
841 variable[3] = variable[0];
842 CALL_mmbuilder___PNode___accept_class_builder( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::accept_class_builder*/;
843 return_label33: while(false);
844 tracehead = trace.prev;
845 return;
846 }
847 val_t mmbuilder___ClassBuilderVisitor___local_class_arity(val_t self) {
848 struct trace_t trace = {NULL, NULL, 320, LOCATE_mmbuilder___ClassBuilderVisitor___local_class_arity};
849 val_t *variable = NULL;
850 void **closurevariable = NULL;
851 trace.prev = tracehead; tracehead = &trace;
852 trace.file = LOCATE_mmbuilder;
853 tracehead = trace.prev;
854 return ATTR_mmbuilder___ClassBuilderVisitor____local_class_arity( self) /*ClassBuilderVisitor::_local_class_arity*/;
855 }
856 void mmbuilder___ClassBuilderVisitor___local_class_arity__eq(val_t self, val_t param0) {
857 struct trace_t trace = {NULL, NULL, 320, LOCATE_mmbuilder___ClassBuilderVisitor___local_class_arity__eq};
858 val_t *variable = NULL;
859 void **closurevariable = NULL;
860 trace.prev = tracehead; tracehead = &trace;
861 trace.file = LOCATE_mmbuilder;
862 ATTR_mmbuilder___ClassBuilderVisitor____local_class_arity( self) /*ClassBuilderVisitor::_local_class_arity*/ = param0;
863 tracehead = trace.prev;
864 return;
865 }
866 val_t mmbuilder___ClassBuilderVisitor___formals(val_t self) {
867 struct trace_t trace = {NULL, NULL, 323, LOCATE_mmbuilder___ClassBuilderVisitor___formals};
868 val_t *variable = NULL;
869 void **closurevariable = NULL;
870 trace.prev = tracehead; tracehead = &trace;
871 trace.file = LOCATE_mmbuilder;
872 tracehead = trace.prev;
873 return ATTR_mmbuilder___ClassBuilderVisitor____formals( self) /*ClassBuilderVisitor::_formals*/;
874 }
875 void mmbuilder___ClassBuilderVisitor___formals__eq(val_t self, val_t param0) {
876 struct trace_t trace = {NULL, NULL, 323, LOCATE_mmbuilder___ClassBuilderVisitor___formals__eq};
877 val_t *variable = NULL;
878 void **closurevariable = NULL;
879 trace.prev = tracehead; tracehead = &trace;
880 trace.file = LOCATE_mmbuilder;
881 ATTR_mmbuilder___ClassBuilderVisitor____formals( self) /*ClassBuilderVisitor::_formals*/ = param0;
882 tracehead = trace.prev;
883 return;
884 }
885 void mmbuilder___ClassBuilderVisitor___init(val_t self, val_t param0, val_t param1, int* init_table) {
886 struct trace_t trace = {NULL, NULL, 327, LOCATE_mmbuilder___ClassBuilderVisitor___init};
887 val_t variable[4];
888 void **closurevariable = NULL;
889 trace.prev = tracehead; tracehead = &trace;
890 trace.file = LOCATE_mmbuilder;
891 variable[0] = self;
892 variable[1] = param0;
893 variable[2] = param1;
894 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ClassBuilderVisitor].i]) return;
895 CALL_syntax_base___AbsSyntaxVisitor___init(variable[0])(variable[0], variable[1], variable[2], init_table /*YYY*/) /*AbsSyntaxVisitor::init*/;
896 return_label34: while(false);
897 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ClassBuilderVisitor].i] = 1;
898 tracehead = trace.prev;
899 return;
900 }
901 void mmbuilder___ClassSpecializationBuilderVisitor___visit(val_t self, val_t param0) {
902 struct trace_t trace = {NULL, NULL, 334, LOCATE_mmbuilder___ClassSpecializationBuilderVisitor___visit};
903 val_t variable[4];
904 void **closurevariable = NULL;
905 trace.prev = tracehead; tracehead = &trace;
906 trace.file = LOCATE_mmbuilder;
907 variable[0] = self;
908 variable[1] = param0;
909 variable[3] = variable[0];
910 CALL_mmbuilder___PNode___accept_class_specialization_builder( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::accept_class_specialization_builder*/;
911 return_label35: while(false);
912 tracehead = trace.prev;
913 return;
914 }
915 void mmbuilder___ClassSpecializationBuilderVisitor___init(val_t self, val_t param0, val_t param1, int* init_table) {
916 struct trace_t trace = {NULL, NULL, 335, LOCATE_mmbuilder___ClassSpecializationBuilderVisitor___init};
917 val_t variable[4];
918 void **closurevariable = NULL;
919 trace.prev = tracehead; tracehead = &trace;
920 trace.file = LOCATE_mmbuilder;
921 variable[0] = self;
922 variable[1] = param0;
923 variable[2] = param1;
924 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ClassSpecializationBuilderVisitor].i]) return;
925 CALL_syntax_base___AbsSyntaxVisitor___init(variable[0])(variable[0], variable[1], variable[2], init_table /*YYY*/) /*AbsSyntaxVisitor::init*/;
926 return_label36: while(false);
927 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ClassSpecializationBuilderVisitor].i] = 1;
928 tracehead = trace.prev;
929 return;
930 }
931 void mmbuilder___ClassAncestorBuilder___visit(val_t self, val_t param0) {
932 struct trace_t trace = {NULL, NULL, 342, LOCATE_mmbuilder___ClassAncestorBuilder___visit};
933 val_t variable[4];
934 void **closurevariable = NULL;
935 trace.prev = tracehead; tracehead = &trace;
936 trace.file = LOCATE_mmbuilder;
937 variable[0] = self;
938 variable[1] = param0;
939 variable[3] = variable[0];
940 CALL_mmbuilder___PNode___accept_class_ancestor_builder( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::accept_class_ancestor_builder*/;
941 return_label37: while(false);
942 tracehead = trace.prev;
943 return;
944 }
945 void mmbuilder___ClassAncestorBuilder___init(val_t self, val_t param0, val_t param1, int* init_table) {
946 struct trace_t trace = {NULL, NULL, 343, LOCATE_mmbuilder___ClassAncestorBuilder___init};
947 val_t variable[4];
948 void **closurevariable = NULL;
949 trace.prev = tracehead; tracehead = &trace;
950 trace.file = LOCATE_mmbuilder;
951 variable[0] = self;
952 variable[1] = param0;
953 variable[2] = param1;
954 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ClassAncestorBuilder].i]) return;
955 CALL_syntax_base___AbsSyntaxVisitor___init(variable[0])(variable[0], variable[1], variable[2], init_table /*YYY*/) /*AbsSyntaxVisitor::init*/;
956 return_label38: while(false);
957 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ClassAncestorBuilder].i] = 1;
958 tracehead = trace.prev;
959 return;
960 }
961 void mmbuilder___ClassVerifierVisitor___visit(val_t self, val_t param0) {
962 struct trace_t trace = {NULL, NULL, 350, LOCATE_mmbuilder___ClassVerifierVisitor___visit};
963 val_t variable[4];
964 void **closurevariable = NULL;
965 trace.prev = tracehead; tracehead = &trace;
966 trace.file = LOCATE_mmbuilder;
967 variable[0] = self;
968 variable[1] = param0;
969 variable[3] = variable[0];
970 CALL_mmbuilder___PNode___accept_class_verifier( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::accept_class_verifier*/;
971 return_label39: while(false);
972 tracehead = trace.prev;
973 return;
974 }
975 void mmbuilder___ClassVerifierVisitor___init(val_t self, val_t param0, val_t param1, int* init_table) {
976 struct trace_t trace = {NULL, NULL, 351, LOCATE_mmbuilder___ClassVerifierVisitor___init};
977 val_t variable[4];
978 void **closurevariable = NULL;
979 trace.prev = tracehead; tracehead = &trace;
980 trace.file = LOCATE_mmbuilder;
981 variable[0] = self;
982 variable[1] = param0;
983 variable[2] = param1;
984 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ClassVerifierVisitor].i]) return;
985 CALL_syntax_base___AbsSyntaxVisitor___init(variable[0])(variable[0], variable[1], variable[2], init_table /*YYY*/) /*AbsSyntaxVisitor::init*/;
986 return_label40: while(false);
987 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ClassVerifierVisitor].i] = 1;
988 tracehead = trace.prev;
989 return;
990 }
991 void mmbuilder___PropertyBuilderVisitor___visit(val_t self, val_t param0) {
992 struct trace_t trace = {NULL, NULL, 361, LOCATE_mmbuilder___PropertyBuilderVisitor___visit};
993 val_t variable[4];
994 void **closurevariable = NULL;
995 trace.prev = tracehead; tracehead = &trace;
996 trace.file = LOCATE_mmbuilder;
997 variable[0] = self;
998 variable[1] = param0;
999 variable[3] = variable[0];
1000 CALL_mmbuilder___PNode___accept_property_builder( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::accept_property_builder*/;
1001 return_label41: while(false);
1002 tracehead = trace.prev;
1003 return;
1004 }
1005 void mmbuilder___PropertyBuilderVisitor___init(val_t self, val_t param0, val_t param1, int* init_table) {
1006 struct trace_t trace = {NULL, NULL, 362, LOCATE_mmbuilder___PropertyBuilderVisitor___init};
1007 val_t variable[4];
1008 void **closurevariable = NULL;
1009 trace.prev = tracehead; tracehead = &trace;
1010 trace.file = LOCATE_mmbuilder;
1011 variable[0] = self;
1012 variable[1] = param0;
1013 variable[2] = param1;
1014 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_PropertyBuilderVisitor].i]) return;
1015 CALL_syntax_base___AbsSyntaxVisitor___init(variable[0])(variable[0], variable[1], variable[2], init_table /*YYY*/) /*AbsSyntaxVisitor::init*/;
1016 return_label42: while(false);
1017 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_PropertyBuilderVisitor].i] = 1;
1018 tracehead = trace.prev;
1019 return;
1020 }
1021 void mmbuilder___PropertyVerifierVisitor___visit(val_t self, val_t param0) {
1022 struct trace_t trace = {NULL, NULL, 373, LOCATE_mmbuilder___PropertyVerifierVisitor___visit};
1023 val_t variable[4];
1024 void **closurevariable = NULL;
1025 trace.prev = tracehead; tracehead = &trace;
1026 trace.file = LOCATE_mmbuilder;
1027 variable[0] = self;
1028 variable[1] = param0;
1029 variable[3] = variable[0];
1030 CALL_mmbuilder___PNode___accept_property_verifier( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::accept_property_verifier*/;
1031 return_label43: while(false);
1032 tracehead = trace.prev;
1033 return;
1034 }
1035 val_t mmbuilder___PropertyVerifierVisitor___signature_builder(val_t self) {
1036 struct trace_t trace = {NULL, NULL, 370, LOCATE_mmbuilder___PropertyVerifierVisitor___signature_builder};
1037 val_t *variable = NULL;
1038 void **closurevariable = NULL;
1039 trace.prev = tracehead; tracehead = &trace;
1040 trace.file = LOCATE_mmbuilder;
1041 tracehead = trace.prev;
1042 return ATTR_mmbuilder___PropertyVerifierVisitor____signature_builder( self) /*PropertyVerifierVisitor::_signature_builder*/;
1043 }
1044 void mmbuilder___PropertyVerifierVisitor___signature_builder__eq(val_t self, val_t param0) {
1045 struct trace_t trace = {NULL, NULL, 370, LOCATE_mmbuilder___PropertyVerifierVisitor___signature_builder__eq};
1046 val_t *variable = NULL;
1047 void **closurevariable = NULL;
1048 trace.prev = tracehead; tracehead = &trace;
1049 trace.file = LOCATE_mmbuilder;
1050 ATTR_mmbuilder___PropertyVerifierVisitor____signature_builder( self) /*PropertyVerifierVisitor::_signature_builder*/ = param0;
1051 tracehead = trace.prev;
1052 return;
1053 }
1054 void mmbuilder___PropertyVerifierVisitor___init(val_t self, val_t param0, val_t param1, int* init_table) {
1055 struct trace_t trace = {NULL, NULL, 375, LOCATE_mmbuilder___PropertyVerifierVisitor___init};
1056 val_t variable[6];
1057 void **closurevariable = NULL;
1058 trace.prev = tracehead; tracehead = &trace;
1059 trace.file = LOCATE_mmbuilder;
1060 variable[0] = self;
1061 variable[1] = param0;
1062 variable[2] = param1;
1063 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_PropertyVerifierVisitor].i]) return;
1064 CALL_syntax_base___AbsSyntaxVisitor___init(variable[0])(variable[0], variable[1], variable[2], init_table /*YYY*/) /*AbsSyntaxVisitor::init*/;
1065 variable[4] = variable[0];
1066 variable[5] = NEW_SignatureBuilder_mmbuilder___SignatureBuilder___init(); /*new SignatureBuilder*/
1067 ATTR_mmbuilder___PropertyVerifierVisitor____signature_builder(variable[4]) /*PropertyVerifierVisitor::_signature_builder*/ = variable[5];
1068 return_label44: while(false);
1069 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_PropertyVerifierVisitor].i] = 1;
1070 tracehead = trace.prev;
1071 return;
1072 }
1073 val_t mmbuilder___SignatureBuilder___params(val_t self) {
1074 struct trace_t trace = {NULL, NULL, 384, LOCATE_mmbuilder___SignatureBuilder___params};
1075 val_t *variable = NULL;
1076 void **closurevariable = NULL;
1077 trace.prev = tracehead; tracehead = &trace;
1078 trace.file = LOCATE_mmbuilder;
1079 tracehead = trace.prev;
1080 return ATTR_mmbuilder___SignatureBuilder____params( self) /*SignatureBuilder::_params*/;
1081 }
1082 void mmbuilder___SignatureBuilder___params__eq(val_t self, val_t param0) {
1083 struct trace_t trace = {NULL, NULL, 384, LOCATE_mmbuilder___SignatureBuilder___params__eq};
1084 val_t *variable = NULL;
1085 void **closurevariable = NULL;
1086 trace.prev = tracehead; tracehead = &trace;
1087 trace.file = LOCATE_mmbuilder;
1088 ATTR_mmbuilder___SignatureBuilder____params( self) /*SignatureBuilder::_params*/ = param0;
1089 tracehead = trace.prev;
1090 return;
1091 }
1092 val_t mmbuilder___SignatureBuilder___untyped_params(val_t self) {
1093 struct trace_t trace = {NULL, NULL, 387, LOCATE_mmbuilder___SignatureBuilder___untyped_params};
1094 val_t *variable = NULL;
1095 void **closurevariable = NULL;
1096 trace.prev = tracehead; tracehead = &trace;
1097 trace.file = LOCATE_mmbuilder;
1098 tracehead = trace.prev;
1099 return ATTR_mmbuilder___SignatureBuilder____untyped_params( self) /*SignatureBuilder::_untyped_params*/;
1100 }
1101 void mmbuilder___SignatureBuilder___untyped_params__eq(val_t self, val_t param0) {
1102 struct trace_t trace = {NULL, NULL, 387, LOCATE_mmbuilder___SignatureBuilder___untyped_params__eq};
1103 val_t *variable = NULL;
1104 void **closurevariable = NULL;
1105 trace.prev = tracehead; tracehead = &trace;
1106 trace.file = LOCATE_mmbuilder;
1107 ATTR_mmbuilder___SignatureBuilder____untyped_params( self) /*SignatureBuilder::_untyped_params*/ = param0;
1108 tracehead = trace.prev;
1109 return;
1110 }
1111 val_t mmbuilder___SignatureBuilder___vararg_rank(val_t self) {
1112 struct trace_t trace = {NULL, NULL, 390, LOCATE_mmbuilder___SignatureBuilder___vararg_rank};
1113 val_t *variable = NULL;
1114 void **closurevariable = NULL;
1115 trace.prev = tracehead; tracehead = &trace;
1116 trace.file = LOCATE_mmbuilder;
1117 tracehead = trace.prev;
1118 return ATTR_mmbuilder___SignatureBuilder____vararg_rank( self) /*SignatureBuilder::_vararg_rank*/;
1119 }
1120 void mmbuilder___SignatureBuilder___vararg_rank__eq(val_t self, val_t param0) {
1121 struct trace_t trace = {NULL, NULL, 390, LOCATE_mmbuilder___SignatureBuilder___vararg_rank__eq};
1122 val_t *variable = NULL;
1123 void **closurevariable = NULL;
1124 trace.prev = tracehead; tracehead = &trace;
1125 trace.file = LOCATE_mmbuilder;
1126 ATTR_mmbuilder___SignatureBuilder____vararg_rank( self) /*SignatureBuilder::_vararg_rank*/ = param0;
1127 tracehead = trace.prev;
1128 return;
1129 }
1130 val_t mmbuilder___SignatureBuilder___closure_decls(val_t self) {
1131 struct trace_t trace = {NULL, NULL, 393, LOCATE_mmbuilder___SignatureBuilder___closure_decls};
1132 val_t *variable = NULL;
1133 void **closurevariable = NULL;
1134 trace.prev = tracehead; tracehead = &trace;
1135 trace.file = LOCATE_mmbuilder;
1136 tracehead = trace.prev;
1137 return ATTR_mmbuilder___SignatureBuilder____closure_decls( self) /*SignatureBuilder::_closure_decls*/;
1138 }
1139 void mmbuilder___SignatureBuilder___closure_decls__eq(val_t self, val_t param0) {
1140 struct trace_t trace = {NULL, NULL, 393, LOCATE_mmbuilder___SignatureBuilder___closure_decls__eq};
1141 val_t *variable = NULL;
1142 void **closurevariable = NULL;
1143 trace.prev = tracehead; tracehead = &trace;
1144 trace.file = LOCATE_mmbuilder;
1145 ATTR_mmbuilder___SignatureBuilder____closure_decls( self) /*SignatureBuilder::_closure_decls*/ = param0;
1146 tracehead = trace.prev;
1147 return;
1148 }
1149 val_t mmbuilder___SignatureBuilder___signature(val_t self) {
1150 struct trace_t trace = {NULL, NULL, 396, LOCATE_mmbuilder___SignatureBuilder___signature};
1151 val_t *variable = NULL;
1152 void **closurevariable = NULL;
1153 trace.prev = tracehead; tracehead = &trace;
1154 trace.file = LOCATE_mmbuilder;
1155 tracehead = trace.prev;
1156 return ATTR_mmbuilder___SignatureBuilder____signature( self) /*SignatureBuilder::_signature*/;
1157 }
1158 void mmbuilder___SignatureBuilder___signature__eq(val_t self, val_t param0) {
1159 struct trace_t trace = {NULL, NULL, 396, LOCATE_mmbuilder___SignatureBuilder___signature__eq};
1160 val_t *variable = NULL;
1161 void **closurevariable = NULL;
1162 trace.prev = tracehead; tracehead = &trace;
1163 trace.file = LOCATE_mmbuilder;
1164 ATTR_mmbuilder___SignatureBuilder____signature( self) /*SignatureBuilder::_signature*/ = param0;
1165 tracehead = trace.prev;
1166 return;
1167 }
1168 void mmbuilder___SignatureBuilder___init(val_t self, int* init_table) {
1169 struct trace_t trace = {NULL, NULL, 0, LOCATE_mmbuilder___SignatureBuilder___init};
1170 val_t *variable = NULL;
1171 void **closurevariable = NULL;
1172 trace.prev = tracehead; tracehead = &trace;
1173 trace.file = LOCATE_mmbuilder;
1174 tracehead = trace.prev;
1175 return;
1176 }
1177 void mmbuilder___PNode___accept_class_builder(val_t self, val_t param0) {
1178 struct trace_t trace = {NULL, NULL, 403, LOCATE_mmbuilder___PNode___accept_class_builder};
1179 val_t variable[4];
1180 void **closurevariable = NULL;
1181 trace.prev = tracehead; tracehead = &trace;
1182 trace.file = LOCATE_mmbuilder;
1183 variable[0] = self;
1184 variable[1] = param0;
1185 variable[3] = variable[0];
1186 CALL_syntax_base___PNode___accept_abs_syntax_visitor(variable[3])(variable[3], variable[1] /*v*/) /*PNode::accept_abs_syntax_visitor*/;
1187 return_label45: while(false);
1188 tracehead = trace.prev;
1189 return;
1190 }
1191 void mmbuilder___PNode___accept_class_specialization_builder(val_t self, val_t param0) {
1192 struct trace_t trace = {NULL, NULL, 404, LOCATE_mmbuilder___PNode___accept_class_specialization_builder};
1193 val_t variable[4];
1194 void **closurevariable = NULL;
1195 trace.prev = tracehead; tracehead = &trace;
1196 trace.file = LOCATE_mmbuilder;
1197 variable[0] = self;
1198 variable[1] = param0;
1199 variable[3] = variable[0];
1200 CALL_syntax_base___PNode___accept_abs_syntax_visitor(variable[3])(variable[3], variable[1] /*v*/) /*PNode::accept_abs_syntax_visitor*/;
1201 return_label46: while(false);
1202 tracehead = trace.prev;
1203 return;
1204 }
1205 void mmbuilder___PNode___accept_class_ancestor_builder(val_t self, val_t param0) {
1206 struct trace_t trace = {NULL, NULL, 405, LOCATE_mmbuilder___PNode___accept_class_ancestor_builder};
1207 val_t variable[4];
1208 void **closurevariable = NULL;
1209 trace.prev = tracehead; tracehead = &trace;
1210 trace.file = LOCATE_mmbuilder;
1211 variable[0] = self;
1212 variable[1] = param0;
1213 variable[3] = variable[0];
1214 CALL_syntax_base___PNode___accept_abs_syntax_visitor(variable[3])(variable[3], variable[1] /*v*/) /*PNode::accept_abs_syntax_visitor*/;
1215 return_label47: while(false);
1216 tracehead = trace.prev;
1217 return;
1218 }
1219 void mmbuilder___PNode___accept_class_verifier(val_t self, val_t param0) {
1220 struct trace_t trace = {NULL, NULL, 406, LOCATE_mmbuilder___PNode___accept_class_verifier};
1221 val_t variable[4];
1222 void **closurevariable = NULL;
1223 trace.prev = tracehead; tracehead = &trace;
1224 trace.file = LOCATE_mmbuilder;
1225 variable[0] = self;
1226 variable[1] = param0;
1227 variable[3] = variable[0];
1228 CALL_syntax_base___PNode___accept_abs_syntax_visitor(variable[3])(variable[3], variable[1] /*v*/) /*PNode::accept_abs_syntax_visitor*/;
1229 return_label48: while(false);
1230 tracehead = trace.prev;
1231 return;
1232 }
1233 void mmbuilder___PNode___accept_property_builder(val_t self, val_t param0) {
1234 struct trace_t trace = {NULL, NULL, 407, LOCATE_mmbuilder___PNode___accept_property_builder};
1235 val_t variable[4];
1236 void **closurevariable = NULL;
1237 trace.prev = tracehead; tracehead = &trace;
1238 trace.file = LOCATE_mmbuilder;
1239 variable[0] = self;
1240 variable[1] = param0;
1241 variable[3] = variable[0];
1242 CALL_syntax_base___PNode___accept_abs_syntax_visitor(variable[3])(variable[3], variable[1] /*v*/) /*PNode::accept_abs_syntax_visitor*/;
1243 return_label49: while(false);
1244 tracehead = trace.prev;
1245 return;
1246 }
1247 void mmbuilder___PNode___accept_property_verifier(val_t self, val_t param0) {
1248 struct trace_t trace = {NULL, NULL, 408, LOCATE_mmbuilder___PNode___accept_property_verifier};
1249 val_t variable[4];
1250 void **closurevariable = NULL;
1251 trace.prev = tracehead; tracehead = &trace;
1252 trace.file = LOCATE_mmbuilder;
1253 variable[0] = self;
1254 variable[1] = param0;
1255 variable[3] = variable[0];
1256 CALL_syntax_base___PNode___accept_abs_syntax_visitor(variable[3])(variable[3], variable[1] /*v*/) /*PNode::accept_abs_syntax_visitor*/;
1257 return_label50: while(false);
1258 tracehead = trace.prev;
1259 return;
1260 }
1261 void mmbuilder___AModule___import_super_modules(val_t self, val_t param0, val_t param1) {
1262 struct trace_t trace = {NULL, NULL, 412, LOCATE_mmbuilder___AModule___import_super_modules};
1263 static val_t once_value_53; static int once_bool_53; /* Once value for variable[8]*/
1264 val_t variable[14];
1265 void **closurevariable = NULL;
1266 trace.prev = tracehead; tracehead = &trace;
1267 trace.file = LOCATE_mmbuilder;
1268 variable[0] = self;
1269 variable[1] = param0;
1270 variable[2] = param1;
1271 variable[5] = NEW_Array_array___Array___init(); /*new Array[Symbol]*/
1272 variable[4] = variable[5];
1273 variable[6] = NEW_HashMap_hash___HashMap___init(); /*new HashMap[Symbol, Int]*/
1274 variable[5] = variable[6];
1275 variable[6] = NIT_NULL /*null*/;
1276 variable[7] = variable[0];
1277 variable[7] = CALL_parser_nodes___AModule___n_imports(variable[7])(variable[7]) /*AModule::n_imports*/;
1278 variable[7] = CALL_abstract_collection___Collection___iterator(variable[7])(variable[7]) /*List::iterator*/;
1279 while (true) { /*for*/
1280 variable[8] = CALL_abstract_collection___Iterator___is_ok(variable[7])(variable[7]) /*ListIterator::is_ok*/;
1281 if (!UNTAG_Bool(variable[8])) break; /*for*/
1282 variable[8] = CALL_abstract_collection___Iterator___item(variable[7])(variable[7]) /*ListIterator::item*/;
1283 variable[9] = variable[8];
1284 variable[11] = CALL_mmbuilder___PImport___module_name( variable[9] /*i*/)( variable[9] /*i*/) /*PImport::module_name*/;
1285 variable[10] = variable[11];
1286 variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*n*/ == NIT_NULL /*null*/) || (( variable[10] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*n*/)( variable[10] /*n*/, NIT_NULL /*null*/) /*Object::==*/)))))));
1287 if (UNTAG_Bool(variable[11])) { /*if*/
1288 CALL_abstract_collection___SimpleCollection___add( variable[4] /*module_names_to_import*/)( variable[4] /*module_names_to_import*/, variable[10] /*n*/) /*AbstractArray::add*/;
1289 variable[11] = CALL_mmbuilder___PImport___visibility_level( variable[9] /*i*/)( variable[9] /*i*/) /*PImport::visibility_level*/;
1290 CALL_abstract_collection___Map_____braeq( variable[5] /*module_visibility*/)( variable[5] /*module_visibility*/, variable[10] /*n*/, variable[11]) /*HashMap::[]=*/;
1291 } else { /*if*/
1292 variable[6] = variable[9] /*i*/ /*no_import=*/;
1293 }
1294 continue_52: while(0);
1295 CALL_abstract_collection___Iterator___next(variable[7])(variable[7]) /*ListIterator::next*/;
1296 }
1297 break_52: while(0);
1298 variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*no_import*/ == NIT_NULL /*null*/) || (( variable[6] /*no_import*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*no_import*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*no_import*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*no_import*/)( variable[6] /*no_import*/, NIT_NULL /*null*/) /*Object::==*/)))))));
1299 if (UNTAG_Bool(variable[7])) { /*if*/
1300 variable[7] = CALL_abstract_collection___Collection___is_empty( variable[4] /*module_names_to_import*/)( variable[4] /*module_names_to_import*/) /*AbstractArray::is_empty*/;
1301 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[7])))) { /*if*/
1302 variable[7] = NEW_Array_array___Array___with_capacity(TAG_Int(3)); /*new Array[String]*/
1303 variable[8] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
1304 variable[9] = variable[8];
1305 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[9]) /*AbstractArray::add*/;
1306 variable[10] = CALL_parser_prod___PNode___locate( variable[6] /*no_import*/)( variable[6] /*no_import*/) /*Prod::locate*/;
1307 variable[11] = variable[10];
1308 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[11]) /*AbstractArray::add*/;
1309 variable[12] = NEW_String_string___String___with_native(BOX_NativeString(": Error: Top modules cannot import other modules."), TAG_Int(49)); /*new String*/
1310 variable[13] = variable[12];
1311 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[13]) /*AbstractArray::add*/;
1312 variable[7] = CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/;
1313 CALL_mmloader___ToolContext___error( variable[1] /*tc*/)( variable[1] /*tc*/, variable[7]) /*ToolContext::error*/;
1314 }
1315 } else { /*if*/
1316 variable[7] = CALL_abstract_collection___Collection___is_empty( variable[4] /*module_names_to_import*/)( variable[4] /*module_names_to_import*/) /*AbstractArray::is_empty*/;
1317 if (UNTAG_Bool(variable[7])) { /*if*/
1318 if (once_bool_53) variable[8] = once_value_53;
1319 else {
1320 variable[8] = NEW_String_string___String___with_native(BOX_NativeString("standard"), TAG_Int(8)); /*new String*/
1321 variable[8] = CALL_symbol___String___to_symbol(variable[8])(variable[8]) /*String::to_symbol*/;
1322 once_value_53 = variable[8];
1323 once_bool_53 = true;
1324 }
1325 variable[7] = variable[8];
1326 CALL_abstract_collection___SimpleCollection___add( variable[4] /*module_names_to_import*/)( variable[4] /*module_names_to_import*/, variable[7] /*stdname*/) /*AbstractArray::add*/;
1327 CALL_abstract_collection___Map_____braeq( variable[5] /*module_visibility*/)( variable[5] /*module_visibility*/, variable[7] /*stdname*/, TAG_Int(1)) /*HashMap::[]=*/;
1328 }
1329 }
1330 CALL_mmloader___MMModule___import_supers_modules( variable[2] /*mod*/)( variable[2] /*mod*/, variable[4] /*module_names_to_import*/) /*MMModule::import_supers_modules*/;
1331 variable[7] = CALL_abstract_collection___Collection___iterator( variable[4] /*module_names_to_import*/)( variable[4] /*module_names_to_import*/) /*AbstractArray::iterator*/;
1332 while (true) { /*for*/
1333 variable[8] = CALL_abstract_collection___Iterator___is_ok(variable[7])(variable[7]) /*ArrayIterator::is_ok*/;
1334 if (!UNTAG_Bool(variable[8])) break; /*for*/
1335 variable[8] = CALL_abstract_collection___Iterator___item(variable[7])(variable[7]) /*ArrayIterator::item*/;
1336 variable[9] = variable[8];
1337 variable[11] = CALL_abstract_collection___Map_____bra( variable[5] /*module_visibility*/)( variable[5] /*module_visibility*/, variable[9] /*mname*/) /*CoupleMap::[]*/;
1338 variable[10] = variable[11];
1339 variable[12] = CALL_mmloader___ToolContext___get_module( variable[1] /*tc*/)( variable[1] /*tc*/, variable[9] /*mname*/, variable[2] /*mod*/) /*ToolContext::get_module*/;
1340 variable[11] = variable[12];
1341 CALL_abstractmetamodel___MMModule___add_super_module( variable[2] /*mod*/)( variable[2] /*mod*/, variable[11] /*m*/, variable[10] /*level*/) /*MMModule::add_super_module*/;
1342 continue_54: while(0);
1343 CALL_abstract_collection___Iterator___next(variable[7])(variable[7]) /*ArrayIterator::next*/;
1344 }
1345 break_54: while(0);
1346 return_label51: while(false);
1347 tracehead = trace.prev;
1348 return;
1349 }
1350 void mmbuilder___APackagedecl___accept_class_builder(val_t self, val_t param0) {
1351 struct trace_t trace = {NULL, NULL, 449, LOCATE_mmbuilder___APackagedecl___accept_class_builder};
1352 val_t variable[15];
1353 void **closurevariable = NULL;
1354 trace.prev = tracehead; tracehead = &trace;
1355 trace.file = LOCATE_mmbuilder;
1356 variable[0] = self;
1357 variable[1] = param0;
1358 variable[3] = variable[0];
1359 variable[3] = CALL_parser_nodes___APackagedecl___n_id(variable[3])(variable[3]) /*APackagedecl::n_id*/;
1360 variable[3] = CALL_syntax_base___Token___to_symbol(variable[3])(variable[3]) /*Token::to_symbol*/;
1361 variable[4] = CALL_syntax_base___AbsSyntaxVisitor___module( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::module*/;
1362 variable[4] = CALL_abstractmetamodel___MMModule___name(variable[4])(variable[4]) /*MMModule::name*/;
1363 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::==*/)))))));
1364 if (UNTAG_Bool(variable[3])) { /*if*/
1365 variable[3] = variable[0];
1366 variable[3] = CALL_parser_nodes___APackagedecl___n_id(variable[3])(variable[3]) /*APackagedecl::n_id*/;
1367 variable[4] = NEW_Array_array___Array___with_capacity(TAG_Int(5)); /*new Array[String]*/
1368 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Error: Package name missmatch between "), TAG_Int(38)); /*new String*/
1369 variable[6] = variable[5];
1370 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[6]) /*AbstractArray::add*/;
1371 variable[7] = CALL_syntax_base___AbsSyntaxVisitor___module( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::module*/;
1372 variable[7] = CALL_abstractmetamodel___MMModule___name(variable[7])(variable[7]) /*MMModule::name*/;
1373 variable[8] = variable[7];
1374 variable[8] = CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/;
1375 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[8]) /*AbstractArray::add*/;
1376 variable[9] = NEW_String_string___String___with_native(BOX_NativeString(" and "), TAG_Int(5)); /*new String*/
1377 variable[10] = variable[9];
1378 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[10]) /*AbstractArray::add*/;
1379 variable[11] = variable[0];
1380 variable[11] = CALL_parser_nodes___APackagedecl___n_id(variable[11])(variable[11]) /*APackagedecl::n_id*/;
1381 variable[11] = CALL_syntax_base___Token___to_symbol(variable[11])(variable[11]) /*Token::to_symbol*/;
1382 variable[12] = variable[11];
1383 variable[12] = CALL_string___Object___to_s(variable[12])(variable[12]) /*Object::to_s*/;
1384 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[12]) /*AbstractArray::add*/;
1385 variable[13] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
1386 variable[14] = variable[13];
1387 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[14]) /*AbstractArray::add*/;
1388 variable[4] = CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/;
1389 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[3], variable[4]) /*AbsSyntaxVisitor::error*/;
1390 }
1391 return_label55: while(false);
1392 tracehead = trace.prev;
1393 return;
1394 }
1395 val_t mmbuilder___PImport___module_name(val_t self) {
1396 struct trace_t trace = {NULL, NULL, 458, LOCATE_mmbuilder___PImport___module_name};
1397 val_t *variable = NULL;
1398 void **closurevariable = NULL;
1399 trace.prev = tracehead; tracehead = &trace;
1400 trace.file = LOCATE_mmbuilder;
1401 fprintf(stderr, "Deferred method called");
1402 fprintf(stderr, " (%s:%d)\n", LOCATE_mmbuilder, 458);
1403 nit_exit(1);
1404 tracehead = trace.prev;
1405 return NIT_NULL;
1406 }
1407 val_t mmbuilder___PImport___visibility_level(val_t self) {
1408 struct trace_t trace = {NULL, NULL, 461, LOCATE_mmbuilder___PImport___visibility_level};
1409 val_t *variable = NULL;
1410 void **closurevariable = NULL;
1411 trace.prev = tracehead; tracehead = &trace;
1412 trace.file = LOCATE_mmbuilder;
1413 fprintf(stderr, "Deferred method called");
1414 fprintf(stderr, " (%s:%d)\n", LOCATE_mmbuilder, 461);
1415 nit_exit(1);
1416 tracehead = trace.prev;
1417 return NIT_NULL;
1418 }
1419 val_t mmbuilder___AImport___module_name(val_t self) {
1420 struct trace_t trace = {NULL, NULL, 465, LOCATE_mmbuilder___AImport___module_name};
1421 val_t variable[3];
1422 void **closurevariable = NULL;
1423 trace.prev = tracehead; tracehead = &trace;
1424 trace.file = LOCATE_mmbuilder;
1425 variable[0] = self;
1426 variable[2] = variable[0];
1427 variable[2] = CALL_parser_nodes___AImport___n_id(variable[2])(variable[2]) /*AImport::n_id*/;
1428 variable[2] = CALL_syntax_base___Token___to_symbol(variable[2])(variable[2]) /*Token::to_symbol*/;
1429 variable[1] = variable[2];
1430 goto return_label56;
1431 return_label56: while(false);
1432 tracehead = trace.prev;
1433 return variable[1];
1434 }
1435 val_t mmbuilder___AImport___visibility_level(val_t self) {
1436 struct trace_t trace = {NULL, NULL, 469, LOCATE_mmbuilder___AImport___visibility_level};
1437 val_t variable[3];
1438 void **closurevariable = NULL;
1439 trace.prev = tracehead; tracehead = &trace;
1440 trace.file = LOCATE_mmbuilder;
1441 variable[0] = self;
1442 variable[2] = variable[0];
1443 variable[2] = CALL_parser_nodes___AImport___n_visibility(variable[2])(variable[2]) /*AImport::n_visibility*/;
1444 variable[2] = CALL_mmbuilder___PVisibility___level(variable[2])(variable[2]) /*PVisibility::level*/;
1445 variable[1] = variable[2];
1446 goto return_label57;
1447 return_label57: while(false);
1448 tracehead = trace.prev;
1449 return variable[1];
1450 }
1451 val_t mmbuilder___ANoImport___module_name(val_t self) {
1452 struct trace_t trace = {NULL, NULL, 475, LOCATE_mmbuilder___ANoImport___module_name};
1453 val_t variable[2];
1454 void **closurevariable = NULL;
1455 trace.prev = tracehead; tracehead = &trace;
1456 trace.file = LOCATE_mmbuilder;
1457 variable[0] = self;
1458 variable[1] = NIT_NULL /*null*/;
1459 goto return_label58;
1460 return_label58: while(false);
1461 tracehead = trace.prev;
1462 return variable[1];
1463 }
1464 val_t mmbuilder___PVisibility___level(val_t self) {
1465 struct trace_t trace = {NULL, NULL, 482, LOCATE_mmbuilder___PVisibility___level};
1466 val_t *variable = NULL;
1467 void **closurevariable = NULL;
1468 trace.prev = tracehead; tracehead = &trace;
1469 trace.file = LOCATE_mmbuilder;
1470 fprintf(stderr, "Deferred method called");
1471 fprintf(stderr, " (%s:%d)\n", LOCATE_mmbuilder, 482);
1472 nit_exit(1);
1473 tracehead = trace.prev;
1474 return NIT_NULL;
1475 }
1476 val_t mmbuilder___APublicVisibility___level(val_t self) {
1477 struct trace_t trace = {NULL, NULL, 486, LOCATE_mmbuilder___APublicVisibility___level};
1478 val_t variable[2];
1479 void **closurevariable = NULL;
1480 trace.prev = tracehead; tracehead = &trace;
1481 trace.file = LOCATE_mmbuilder;
1482 variable[0] = self;
1483 variable[1] = TAG_Int(1);
1484 goto return_label59;
1485 return_label59: while(false);
1486 tracehead = trace.prev;
1487 return variable[1];
1488 }
1489 val_t mmbuilder___AProtectedVisibility___level(val_t self) {
1490 struct trace_t trace = {NULL, NULL, 489, LOCATE_mmbuilder___AProtectedVisibility___level};
1491 val_t variable[2];
1492 void **closurevariable = NULL;
1493 trace.prev = tracehead; tracehead = &trace;
1494 trace.file = LOCATE_mmbuilder;
1495 variable[0] = self;
1496 variable[1] = TAG_Int(2);
1497 goto return_label60;
1498 return_label60: while(false);
1499 tracehead = trace.prev;
1500 return variable[1];
1501 }
1502 val_t mmbuilder___APrivateVisibility___level(val_t self) {
1503 struct trace_t trace = {NULL, NULL, 492, LOCATE_mmbuilder___APrivateVisibility___level};
1504 val_t variable[2];
1505 void **closurevariable = NULL;
1506 trace.prev = tracehead; tracehead = &trace;
1507 trace.file = LOCATE_mmbuilder;
1508 variable[0] = self;
1509 variable[1] = TAG_Int(3);
1510 goto return_label61;
1511 return_label61: while(false);
1512 tracehead = trace.prev;
1513 return variable[1];
1514 }
1515 val_t mmbuilder___AIntrudeVisibility___level(val_t self) {
1516 struct trace_t trace = {NULL, NULL, 495, LOCATE_mmbuilder___AIntrudeVisibility___level};
1517 val_t variable[2];
1518 void **closurevariable = NULL;
1519 trace.prev = tracehead; tracehead = &trace;
1520 trace.file = LOCATE_mmbuilder;
1521 variable[0] = self;
1522 variable[1] = TAG_Int(0);
1523 goto return_label62;
1524 return_label62: while(false);
1525 tracehead = trace.prev;
1526 return variable[1];
1527 }
1528 void mmbuilder___PClassdef___accept_abs_syntax_visitor(val_t self, val_t param0) {
1529 struct trace_t trace = {NULL, NULL, 550, LOCATE_mmbuilder___PClassdef___accept_abs_syntax_visitor};
1530 val_t variable[4];
1531 void **closurevariable = NULL;
1532 trace.prev = tracehead; tracehead = &trace;
1533 trace.file = LOCATE_mmbuilder;
1534 variable[0] = self;
1535 variable[1] = param0;
1536 variable[3] = variable[0];
1537 variable[3] = ATTR_mmbuilder___PClassdef____local_class(variable[3]) /*PClassdef::_local_class*/;
1538 CALL_syntax_base___AbsSyntaxVisitor___local_class__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*AbsSyntaxVisitor::local_class=*/;
1539 CALL_SUPER_mmbuilder___PClassdef___accept_abs_syntax_visitor(variable[0])(variable[0], variable[1]) /*super PClassdef::accept_abs_syntax_visitor*/;
1540 CALL_syntax_base___AbsSyntaxVisitor___local_class__eq( variable[1] /*v*/)( variable[1] /*v*/, NIT_NULL /*null*/) /*AbsSyntaxVisitor::local_class=*/;
1541 return_label63: while(false);
1542 tracehead = trace.prev;
1543 return;
1544 }
1545 val_t mmbuilder___PClassdef___local_class(val_t self) {
1546 struct trace_t trace = {NULL, NULL, 500, LOCATE_mmbuilder___PClassdef___local_class};
1547 val_t *variable = NULL;
1548 void **closurevariable = NULL;
1549 trace.prev = tracehead; tracehead = &trace;
1550 trace.file = LOCATE_mmbuilder;
1551 tracehead = trace.prev;
1552 return ATTR_mmbuilder___PClassdef____local_class( self) /*PClassdef::_local_class*/;
1553 }
1554 void mmbuilder___PClassdef___accept_class_builder(val_t self, val_t param0) {
1555 struct trace_t trace = {NULL, NULL, 511, LOCATE_mmbuilder___PClassdef___accept_class_builder};
1556 val_t variable[18];
1557 void **closurevariable = NULL;
1558 trace.prev = tracehead; tracehead = &trace;
1559 trace.file = LOCATE_mmbuilder;
1560 variable[0] = self;
1561 variable[1] = param0;
1562 /*variable[3] is variable local_class*/
1563 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___module( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::module*/;
1564 variable[4] = variable[5];
1565 variable[6] = CALL_syntax_base___MMSrcModule___src_local_classes( variable[4] /*mod*/)( variable[4] /*mod*/) /*MMSrcModule::src_local_classes*/;
1566 variable[5] = variable[6];
1567 variable[6] = variable[0];
1568 variable[6] = CALL_mmbuilder___PClassdef___name(variable[6])(variable[6]) /*PClassdef::name*/;
1569 variable[6] = CALL_abstract_collection___Map___has_key( variable[5] /*local_classes*/)( variable[5] /*local_classes*/, variable[6]) /*Map::has_key*/;
1570 if (UNTAG_Bool(variable[6])) { /*if*/
1571 variable[6] = variable[0];
1572 variable[6] = CALL_mmbuilder___PClassdef___name(variable[6])(variable[6]) /*PClassdef::name*/;
1573 variable[6] = CALL_abstract_collection___Map_____bra( variable[5] /*local_classes*/)( variable[5] /*local_classes*/, variable[6]) /*Map::[]*/;
1574 variable[3] = variable[6] /*local_class=*/;
1575 variable[6] = variable[0];
1576 variable[6] = TAG_Bool((variable[6]==NIT_NULL) || VAL_ISA(variable[6], COLOR_AClassdef, ID_AClassdef)) /*cast AClassdef*/;
1577 if (UNTAG_Bool(variable[6])) { /*if*/
1578 variable[6] = variable[0];
1579 variable[7] = NEW_Array_array___Array___with_capacity(TAG_Int(5)); /*new Array[String]*/
1580 variable[8] = NEW_String_string___String___with_native(BOX_NativeString("Error: A class "), TAG_Int(15)); /*new String*/
1581 variable[9] = variable[8];
1582 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[9]) /*AbstractArray::add*/;
1583 variable[10] = variable[0];
1584 variable[10] = CALL_mmbuilder___PClassdef___name(variable[10])(variable[10]) /*AClassdef::name*/;
1585 variable[11] = variable[10];
1586 variable[11] = CALL_string___Object___to_s(variable[11])(variable[11]) /*Object::to_s*/;
1587 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[11]) /*AbstractArray::add*/;
1588 variable[12] = NEW_String_string___String___with_native(BOX_NativeString(" is already defined at line "), TAG_Int(28)); /*new String*/
1589 variable[13] = variable[12];
1590 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[13]) /*AbstractArray::add*/;
1591 variable[14] = CALL_syntax_base___MMSrcLocalClass___nodes( variable[3] /*local_class*/)( variable[3] /*local_class*/) /*MMSrcLocalClass::nodes*/;
1592 variable[14] = CALL_abstract_collection___Collection___first(variable[14])(variable[14]) /*IndexedCollection::first*/;
1593 variable[14] = CALL_parser_prod___Prod___first_token(variable[14])(variable[14]) /*Prod::first_token*/;
1594 variable[14] = CALL_lexer___Token___line(variable[14])(variable[14]) /*Token::line*/;
1595 variable[15] = variable[14];
1596 variable[15] = CALL_string___Object___to_s(variable[15])(variable[15]) /*Object::to_s*/;
1597 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[15]) /*AbstractArray::add*/;
1598 variable[16] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/
1599 variable[17] = variable[16];
1600 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[17]) /*AbstractArray::add*/;
1601 variable[7] = CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/;
1602 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[6], variable[7]) /*AbsSyntaxVisitor::error*/;
1603 goto return_label64;
1604 }
1605 variable[6] = CALL_syntax_base___MMSrcLocalClass___nodes( variable[3] /*local_class*/)( variable[3] /*local_class*/) /*MMSrcLocalClass::nodes*/;
1606 variable[7] = variable[0];
1607 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
1608 } else { /*if*/
1609 variable[6] = variable[0];
1610 variable[6] = CALL_mmbuilder___PClassdef___name(variable[6])(variable[6]) /*PClassdef::name*/;
1611 variable[7] = variable[0];
1612 variable[8] = variable[0];
1613 variable[8] = CALL_mmbuilder___PClassdef___arity(variable[8])(variable[8]) /*PClassdef::arity*/;
1614 variable[9] = NEW_MMSrcLocalClass_syntax_base___MMSrcLocalClass___init(variable[6], variable[7], variable[8]); /*new MMSrcLocalClass*/
1615 variable[6] = variable[9];
1616 variable[3] = variable[6] /*local_class=*/;
1617 CALL_abstractmetamodel___MMModule___add_local_class( variable[4] /*mod*/)( variable[4] /*mod*/, variable[3] /*local_class*/) /*MMModule::add_local_class*/;
1618 variable[6] = variable[0];
1619 variable[6] = CALL_mmbuilder___PClassdef___name(variable[6])(variable[6]) /*PClassdef::name*/;
1620 CALL_abstract_collection___Map_____braeq( variable[5] /*local_classes*/)( variable[5] /*local_classes*/, variable[6], variable[3] /*local_class*/) /*Map::[]=*/;
1621 variable[7] = variable[0];
1622 variable[7] = CALL_mmbuilder___PClassdef___name(variable[7])(variable[7]) /*PClassdef::name*/;
1623 variable[7] = CALL_abstractmetamodel___MMModule___global_class_named( variable[4] /*mod*/)( variable[4] /*mod*/, variable[7]) /*MMModule::global_class_named*/;
1624 variable[6] = variable[7];
1625 variable[7] = TAG_Bool(( variable[6] /*g*/ == NIT_NULL /*null*/) || (( variable[6] /*g*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*g*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*g*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*g*/)( variable[6] /*g*/, NIT_NULL /*null*/) /*Object::==*/)))));
1626 if (UNTAG_Bool(variable[7])) { /*if*/
1627 CALL_abstractmetamodel___MMLocalClass___new_global( variable[3] /*local_class*/)( variable[3] /*local_class*/) /*MMLocalClass::new_global*/;
1628 variable[7] = CALL_abstractmetamodel___MMLocalClass___global( variable[3] /*local_class*/)( variable[3] /*local_class*/) /*MMLocalClass::global*/;
1629 variable[6] = variable[7] /*g=*/;
1630 } else { /*if*/
1631 CALL_abstractmetamodel___MMLocalClass___set_global( variable[3] /*local_class*/)( variable[3] /*local_class*/, variable[6] /*g*/) /*MMLocalClass::set_global*/;
1632 }
1633 }
1634 variable[6] = variable[0];
1635 ATTR_mmbuilder___PClassdef____local_class(variable[6]) /*PClassdef::_local_class*/ = variable[3] /*local_class*/;
1636 CALL_mmbuilder___ClassBuilderVisitor___local_class_arity__eq( variable[1] /*v*/)( variable[1] /*v*/, TAG_Int(0)) /*ClassBuilderVisitor::local_class_arity=*/;
1637 variable[6] = NEW_HashMap_hash___HashMap___init(); /*new HashMap[Symbol, MMTypeFormalParameter]*/
1638 CALL_mmbuilder___ClassBuilderVisitor___formals__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[6]) /*ClassBuilderVisitor::formals=*/;
1639 CALL_SUPER_mmbuilder___PClassdef___accept_class_builder(variable[0])(variable[0], variable[1]) /*super PClassdef::accept_class_builder*/;
1640 variable[6] = variable[0];
1641 variable[6] = ATTR_mmbuilder___PClassdef____local_class(variable[6]) /*PClassdef::_local_class*/;
1642 variable[7] = CALL_mmbuilder___ClassBuilderVisitor___formals( variable[1] /*v*/)( variable[1] /*v*/) /*ClassBuilderVisitor::formals*/;
1643 CALL_syntax_base___MMSrcLocalClass___formal_dict__eq(variable[6])(variable[6], variable[7]) /*MMSrcLocalClass::formal_dict=*/;
1644 CALL_mmbuilder___ClassBuilderVisitor___formals__eq( variable[1] /*v*/)( variable[1] /*v*/, NIT_NULL /*null*/) /*ClassBuilderVisitor::formals=*/;
1645 return_label64: while(false);
1646 tracehead = trace.prev;
1647 return;
1648 }
1649 val_t mmbuilder___PClassdef___name(val_t self) {
1650 struct trace_t trace = {NULL, NULL, 502, LOCATE_mmbuilder___PClassdef___name};
1651 val_t *variable = NULL;
1652 void **closurevariable = NULL;
1653 trace.prev = tracehead; tracehead = &trace;
1654 trace.file = LOCATE_mmbuilder;
1655 fprintf(stderr, "Deferred method called");
1656 fprintf(stderr, " (%s:%d)\n", LOCATE_mmbuilder, 502);
1657 nit_exit(1);
1658 tracehead = trace.prev;
1659 return NIT_NULL;
1660 }
1661 val_t mmbuilder___PClassdef___arity(val_t self) {
1662 struct trace_t trace = {NULL, NULL, 505, LOCATE_mmbuilder___PClassdef___arity};
1663 val_t variable[2];
1664 void **closurevariable = NULL;
1665 trace.prev = tracehead; tracehead = &trace;
1666 trace.file = LOCATE_mmbuilder;
1667 variable[0] = self;
1668 variable[1] = TAG_Int(0);
1669 goto return_label65;
1670 return_label65: while(false);
1671 tracehead = trace.prev;
1672 return variable[1];
1673 }
1674 val_t mmbuilder___PClassdef___visibility_level(val_t self) {
1675 struct trace_t trace = {NULL, NULL, 508, LOCATE_mmbuilder___PClassdef___visibility_level};
1676 val_t variable[2];
1677 void **closurevariable = NULL;
1678 trace.prev = tracehead; tracehead = &trace;
1679 trace.file = LOCATE_mmbuilder;
1680 variable[0] = self;
1681 variable[1] = TAG_Int(1);
1682 goto return_label66;
1683 return_label66: while(false);
1684 tracehead = trace.prev;
1685 return variable[1];
1686 }
1687 val_t mmbuilder___PClasskind___is_interface(val_t self) {
1688 struct trace_t trace = {NULL, NULL, 559, LOCATE_mmbuilder___PClasskind___is_interface};
1689 val_t variable[2];
1690 void **closurevariable = NULL;
1691 trace.prev = tracehead; tracehead = &trace;
1692 trace.file = LOCATE_mmbuilder;
1693 variable[0] = self;
1694 variable[1] = TAG_Bool(false);
1695 goto return_label67;
1696 return_label67: while(false);
1697 tracehead = trace.prev;
1698 return variable[1];
1699 }
1700 val_t mmbuilder___PClasskind___is_universal(val_t self) {
1701 struct trace_t trace = {NULL, NULL, 560, LOCATE_mmbuilder___PClasskind___is_universal};
1702 val_t variable[2];
1703 void **closurevariable = NULL;
1704 trace.prev = tracehead; tracehead = &trace;
1705 trace.file = LOCATE_mmbuilder;
1706 variable[0] = self;
1707 variable[1] = TAG_Bool(false);
1708 goto return_label68;
1709 return_label68: while(false);
1710 tracehead = trace.prev;
1711 return variable[1];
1712 }
1713 val_t mmbuilder___PClasskind___is_abstract(val_t self) {
1714 struct trace_t trace = {NULL, NULL, 561, LOCATE_mmbuilder___PClasskind___is_abstract};
1715 val_t variable[2];
1716 void **closurevariable = NULL;
1717 trace.prev = tracehead; tracehead = &trace;
1718 trace.file = LOCATE_mmbuilder;
1719 variable[0] = self;
1720 variable[1] = TAG_Bool(false);
1721 goto return_label69;
1722 return_label69: while(false);
1723 tracehead = trace.prev;
1724 return variable[1];
1725 }
1726 val_t mmbuilder___AInterfaceClasskind___is_interface(val_t self) {
1727 struct trace_t trace = {NULL, NULL, 565, LOCATE_mmbuilder___AInterfaceClasskind___is_interface};
1728 val_t variable[2];
1729 void **closurevariable = NULL;
1730 trace.prev = tracehead; tracehead = &trace;
1731 trace.file = LOCATE_mmbuilder;
1732 variable[0] = self;
1733 variable[1] = TAG_Bool(true);
1734 goto return_label70;
1735 return_label70: while(false);
1736 tracehead = trace.prev;
1737 return variable[1];
1738 }
1739 val_t mmbuilder___AUniversalClasskind___is_universal(val_t self) {
1740 struct trace_t trace = {NULL, NULL, 568, LOCATE_mmbuilder___AUniversalClasskind___is_universal};
1741 val_t variable[2];
1742 void **closurevariable = NULL;
1743 trace.prev = tracehead; tracehead = &trace;
1744 trace.file = LOCATE_mmbuilder;
1745 variable[0] = self;
1746 variable[1] = TAG_Bool(true);
1747 goto return_label71;
1748 return_label71: while(false);
1749 tracehead = trace.prev;
1750 return variable[1];
1751 }
1752 val_t mmbuilder___AAbstractClasskind___is_abstract(val_t self) {
1753 struct trace_t trace = {NULL, NULL, 571, LOCATE_mmbuilder___AAbstractClasskind___is_abstract};
1754 val_t variable[2];
1755 void **closurevariable = NULL;
1756 trace.prev = tracehead; tracehead = &trace;
1757 trace.file = LOCATE_mmbuilder;
1758 variable[0] = self;
1759 variable[1] = TAG_Bool(true);
1760 goto return_label72;
1761 return_label72: while(false);
1762 tracehead = trace.prev;
1763 return variable[1];
1764 }
1765 void mmbuilder___AClassdef___accept_class_verifier(val_t self, val_t param0) {
1766 struct trace_t trace = {NULL, NULL, 583, LOCATE_mmbuilder___AClassdef___accept_class_verifier};
1767 val_t variable[20];
1768 void **closurevariable = NULL;
1769 trace.prev = tracehead; tracehead = &trace;
1770 trace.file = LOCATE_mmbuilder;
1771 variable[0] = self;
1772 variable[1] = param0;
1773 CALL_SUPER_mmbuilder___AClassdef___accept_class_verifier(variable[0])(variable[0], variable[1]) /*super AClassdef::accept_class_verifier*/;
1774 variable[4] = variable[0];
1775 variable[4] = ATTR_mmbuilder___PClassdef____local_class(variable[4]) /*PClassdef::_local_class*/;
1776 variable[4] = CALL_abstractmetamodel___MMLocalClass___global(variable[4])(variable[4]) /*MMLocalClass::global*/;
1777 variable[3] = variable[4];
1778 variable[4] = CALL_abstractmetamodel___MMGlobalClass___intro( variable[3] /*glob*/)( variable[3] /*glob*/) /*MMGlobalClass::intro*/;
1779 variable[5] = variable[0];
1780 variable[5] = ATTR_mmbuilder___PClassdef____local_class(variable[5]) /*PClassdef::_local_class*/;
1781 variable[4] = TAG_Bool((variable[4] == variable[5]) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4],variable[5])):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4], variable[5]) /*Object::==*/)))));
1782 if (UNTAG_Bool(variable[4])) { /*if*/
1783 variable[4] = variable[0];
1784 variable[4] = CALL_mmbuilder___PClassdef___visibility_level(variable[4])(variable[4]) /*AClassdef::visibility_level*/;
1785 CALL_abstractmetamodel___MMGlobalClass___visibility_level__eq( variable[3] /*glob*/)( variable[3] /*glob*/, variable[4]) /*MMGlobalClass::visibility_level=*/;
1786 variable[4] = variable[0];
1787 variable[4] = CALL_parser_nodes___AClassdef___n_classkind(variable[4])(variable[4]) /*AClassdef::n_classkind*/;
1788 variable[4] = CALL_mmbuilder___PClasskind___is_interface(variable[4])(variable[4]) /*PClasskind::is_interface*/;
1789 CALL_abstractmetamodel___MMGlobalClass___is_interface__eq( variable[3] /*glob*/)( variable[3] /*glob*/, variable[4]) /*MMGlobalClass::is_interface=*/;
1790 variable[4] = variable[0];
1791 variable[4] = CALL_parser_nodes___AClassdef___n_classkind(variable[4])(variable[4]) /*AClassdef::n_classkind*/;
1792 variable[4] = CALL_mmbuilder___PClasskind___is_abstract(variable[4])(variable[4]) /*PClasskind::is_abstract*/;
1793 CALL_abstractmetamodel___MMGlobalClass___is_abstract__eq( variable[3] /*glob*/)( variable[3] /*glob*/, variable[4]) /*MMGlobalClass::is_abstract=*/;
1794 variable[4] = variable[0];
1795 variable[4] = CALL_parser_nodes___AClassdef___n_classkind(variable[4])(variable[4]) /*AClassdef::n_classkind*/;
1796 variable[4] = CALL_mmbuilder___PClasskind___is_universal(variable[4])(variable[4]) /*PClasskind::is_universal*/;
1797 CALL_abstractmetamodel___MMGlobalClass___is_universal__eq( variable[3] /*glob*/)( variable[3] /*glob*/, variable[4]) /*MMGlobalClass::is_universal=*/;
1798 variable[4] = variable[0];
1799 variable[4] = CALL_parser_nodes___AClassdef___n_kwredef(variable[4])(variable[4]) /*AClassdef::n_kwredef*/;
1800 variable[4] = TAG_Bool(!UNTAG_Bool(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::==*/)))))));
1801 if (UNTAG_Bool(variable[4])) { /*if*/
1802 variable[4] = variable[0];
1803 variable[5] = NEW_Array_array___Array___with_capacity(TAG_Int(3)); /*new Array[String]*/
1804 variable[6] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: No class "), TAG_Int(22)); /*new String*/
1805 variable[7] = variable[6];
1806 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[7]) /*AbstractArray::add*/;
1807 variable[8] = variable[0];
1808 variable[8] = CALL_mmbuilder___PClassdef___name(variable[8])(variable[8]) /*AClassdef::name*/;
1809 variable[9] = variable[8];
1810 variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
1811 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[9]) /*AbstractArray::add*/;
1812 variable[10] = NEW_String_string___String___with_native(BOX_NativeString(" is imported. Remove the redef keyword to define a new class."), TAG_Int(61)); /*new String*/
1813 variable[11] = variable[10];
1814 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[11]) /*AbstractArray::add*/;
1815 variable[5] = CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/;
1816 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[4], variable[5]) /*AbsSyntaxVisitor::error*/;
1817 }
1818 variable[4] = variable[0];
1819 variable[4] = ATTR_mmbuilder___PClassdef____local_class(variable[4]) /*PClassdef::_local_class*/;
1820 variable[4] = CALL_abstractmetamodel___MMLocalClass___cshe(variable[4])(variable[4]) /*MMLocalClass::cshe*/;
1821 variable[4] = CALL_partial_order___PartialOrderElement___direct_greaters(variable[4])(variable[4]) /*PartialOrderElement::direct_greaters*/;
1822 variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*AbstractArray::iterator*/;
1823 while (true) { /*for*/
1824 variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*ArrayIterator::is_ok*/;
1825 if (!UNTAG_Bool(variable[5])) break; /*for*/
1826 variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*ArrayIterator::item*/;
1827 variable[6] = variable[5];
1828 variable[8] = CALL_abstractmetamodel___MMLocalClass___global( variable[6] /*c*/)( variable[6] /*c*/) /*MMLocalClass::global*/;
1829 variable[7] = variable[8];
1830 variable[8] = CALL_abstractmetamodel___MMGlobalClass___is_interface( variable[3] /*glob*/)( variable[3] /*glob*/) /*MMGlobalClass::is_interface*/;
1831 if (UNTAG_Bool(variable[8])) { /*if*/
1832 variable[8] = CALL_abstractmetamodel___MMGlobalClass___is_universal( variable[7] /*cg*/)( variable[7] /*cg*/) /*MMGlobalClass::is_universal*/;
1833 if (UNTAG_Bool(variable[8])) { /*if*/
1834 variable[8] = variable[0];
1835 variable[9] = NEW_Array_array___Array___with_capacity(TAG_Int(5)); /*new Array[String]*/
1836 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("Special error: Interface "), TAG_Int(25)); /*new String*/
1837 variable[11] = variable[10];
1838 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[11]) /*AbstractArray::add*/;
1839 variable[12] = variable[0];
1840 variable[12] = CALL_mmbuilder___PClassdef___name(variable[12])(variable[12]) /*AClassdef::name*/;
1841 variable[13] = variable[12];
1842 variable[13] = CALL_string___Object___to_s(variable[13])(variable[13]) /*Object::to_s*/;
1843 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[13]) /*AbstractArray::add*/;
1844 variable[14] = NEW_String_string___String___with_native(BOX_NativeString(" try to specialise universal class "), TAG_Int(35)); /*new String*/
1845 variable[15] = variable[14];
1846 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[15]) /*AbstractArray::add*/;
1847 variable[16] = CALL_abstractmetamodel___MMLocalClass___name( variable[6] /*c*/)( variable[6] /*c*/) /*MMLocalClass::name*/;
1848 variable[17] = variable[16];
1849 variable[17] = CALL_string___Object___to_s(variable[17])(variable[17]) /*Object::to_s*/;
1850 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[17]) /*AbstractArray::add*/;
1851 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/
1852 variable[19] = variable[18];
1853 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[19]) /*AbstractArray::add*/;
1854 variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
1855 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[8], variable[9]) /*AbsSyntaxVisitor::error*/;
1856 } else { /*if*/
1857 variable[8] = CALL_abstractmetamodel___MMGlobalClass___is_interface( variable[7] /*cg*/)( variable[7] /*cg*/) /*MMGlobalClass::is_interface*/;
1858 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[8])))) { /*if*/
1859 variable[8] = variable[0];
1860 variable[9] = NEW_Array_array___Array___with_capacity(TAG_Int(5)); /*new Array[String]*/
1861 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("Special error: Interface "), TAG_Int(25)); /*new String*/
1862 variable[11] = variable[10];
1863 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[11]) /*AbstractArray::add*/;
1864 variable[12] = variable[0];
1865 variable[12] = CALL_mmbuilder___PClassdef___name(variable[12])(variable[12]) /*AClassdef::name*/;
1866 variable[13] = variable[12];
1867 variable[13] = CALL_string___Object___to_s(variable[13])(variable[13]) /*Object::to_s*/;
1868 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[13]) /*AbstractArray::add*/;
1869 variable[14] = NEW_String_string___String___with_native(BOX_NativeString(" try to specialise class "), TAG_Int(25)); /*new String*/
1870 variable[15] = variable[14];
1871 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[15]) /*AbstractArray::add*/;
1872 variable[16] = CALL_abstractmetamodel___MMLocalClass___name( variable[6] /*c*/)( variable[6] /*c*/) /*MMLocalClass::name*/;
1873 variable[17] = variable[16];
1874 variable[17] = CALL_string___Object___to_s(variable[17])(variable[17]) /*Object::to_s*/;
1875 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[17]) /*AbstractArray::add*/;
1876 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/
1877 variable[19] = variable[18];
1878 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[19]) /*AbstractArray::add*/;
1879 variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
1880 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[8], variable[9]) /*AbsSyntaxVisitor::error*/;
1881 }
1882 }
1883 } else { /*if*/
1884 variable[8] = CALL_abstractmetamodel___MMGlobalClass___is_universal( variable[3] /*glob*/)( variable[3] /*glob*/) /*MMGlobalClass::is_universal*/;
1885 if (UNTAG_Bool(variable[8])) { /*if*/
1886 variable[8] = CALL_abstractmetamodel___MMGlobalClass___is_interface( variable[7] /*cg*/)( variable[7] /*cg*/) /*MMGlobalClass::is_interface*/;
1887 variable[8] = TAG_Bool(!UNTAG_Bool(variable[8]));
1888 if (UNTAG_Bool(variable[8])) { /* and */
1889 variable[8] = CALL_abstractmetamodel___MMGlobalClass___is_universal( variable[7] /*cg*/)( variable[7] /*cg*/) /*MMGlobalClass::is_universal*/;
1890 variable[8] = TAG_Bool(!UNTAG_Bool(variable[8]));
1891 }
1892 if (UNTAG_Bool(variable[8])) { /*if*/
1893 variable[8] = variable[0];
1894 variable[9] = NEW_Array_array___Array___with_capacity(TAG_Int(5)); /*new Array[String]*/
1895 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("Special error: Universal class "), TAG_Int(31)); /*new String*/
1896 variable[11] = variable[10];
1897 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[11]) /*AbstractArray::add*/;
1898 variable[12] = variable[0];
1899 variable[12] = CALL_mmbuilder___PClassdef___name(variable[12])(variable[12]) /*AClassdef::name*/;
1900 variable[13] = variable[12];
1901 variable[13] = CALL_string___Object___to_s(variable[13])(variable[13]) /*Object::to_s*/;
1902 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[13]) /*AbstractArray::add*/;
1903 variable[14] = NEW_String_string___String___with_native(BOX_NativeString(" try to specialise class "), TAG_Int(25)); /*new String*/
1904 variable[15] = variable[14];
1905 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[15]) /*AbstractArray::add*/;
1906 variable[16] = CALL_abstractmetamodel___MMLocalClass___name( variable[6] /*c*/)( variable[6] /*c*/) /*MMLocalClass::name*/;
1907 variable[17] = variable[16];
1908 variable[17] = CALL_string___Object___to_s(variable[17])(variable[17]) /*Object::to_s*/;
1909 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[17]) /*AbstractArray::add*/;
1910 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/
1911 variable[19] = variable[18];
1912 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[19]) /*AbstractArray::add*/;
1913 variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
1914 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[8], variable[9]) /*AbsSyntaxVisitor::error*/;
1915 }
1916 } else { /*if*/
1917 variable[8] = CALL_abstractmetamodel___MMGlobalClass___is_universal( variable[7] /*cg*/)( variable[7] /*cg*/) /*MMGlobalClass::is_universal*/;
1918 if (UNTAG_Bool(variable[8])) { /*if*/
1919 variable[8] = variable[0];
1920 variable[9] = NEW_Array_array___Array___with_capacity(TAG_Int(5)); /*new Array[String]*/
1921 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("Special error: Class "), TAG_Int(21)); /*new String*/
1922 variable[11] = variable[10];
1923 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[11]) /*AbstractArray::add*/;
1924 variable[12] = variable[0];
1925 variable[12] = CALL_mmbuilder___PClassdef___name(variable[12])(variable[12]) /*AClassdef::name*/;
1926 variable[13] = variable[12];
1927 variable[13] = CALL_string___Object___to_s(variable[13])(variable[13]) /*Object::to_s*/;
1928 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[13]) /*AbstractArray::add*/;
1929 variable[14] = NEW_String_string___String___with_native(BOX_NativeString(" try to specialise universal class "), TAG_Int(35)); /*new String*/
1930 variable[15] = variable[14];
1931 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[15]) /*AbstractArray::add*/;
1932 variable[16] = CALL_abstractmetamodel___MMLocalClass___name( variable[6] /*c*/)( variable[6] /*c*/) /*MMLocalClass::name*/;
1933 variable[17] = variable[16];
1934 variable[17] = CALL_string___Object___to_s(variable[17])(variable[17]) /*Object::to_s*/;
1935 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[17]) /*AbstractArray::add*/;
1936 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/
1937 variable[19] = variable[18];
1938 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[19]) /*AbstractArray::add*/;
1939 variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
1940 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[8], variable[9]) /*AbsSyntaxVisitor::error*/;
1941 }
1942 }
1943 }
1944 continue_74: while(0);
1945 CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*ArrayIterator::next*/;
1946 }
1947 break_74: while(0);
1948 goto return_label73;
1949 }
1950 variable[4] = variable[0];
1951 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___module( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::module*/;
1952 CALL_syntax_base___MMGlobalClass___check_visibility( variable[3] /*glob*/)( variable[3] /*glob*/, variable[1] /*v*/, variable[4], variable[5]) /*MMGlobalClass::check_visibility*/;
1953 variable[4] = variable[0];
1954 variable[4] = CALL_parser_nodes___AClassdef___n_kwredef(variable[4])(variable[4]) /*AClassdef::n_kwredef*/;
1955 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::==*/)))));
1956 if (UNTAG_Bool(variable[4])) { /*if*/
1957 variable[4] = variable[0];
1958 variable[5] = NEW_Array_array___Array___with_capacity(TAG_Int(3)); /*new Array[String]*/
1959 variable[6] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: "), TAG_Int(13)); /*new String*/
1960 variable[7] = variable[6];
1961 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[7]) /*AbstractArray::add*/;
1962 variable[8] = variable[0];
1963 variable[8] = CALL_mmbuilder___PClassdef___name(variable[8])(variable[8]) /*AClassdef::name*/;
1964 variable[9] = variable[8];
1965 variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
1966 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[9]) /*AbstractArray::add*/;
1967 variable[10] = NEW_String_string___String___with_native(BOX_NativeString(" is an imported class. Add the redef keyword to refine it."), TAG_Int(58)); /*new String*/
1968 variable[11] = variable[10];
1969 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[11]) /*AbstractArray::add*/;
1970 variable[5] = CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/;
1971 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[4], variable[5]) /*AbsSyntaxVisitor::error*/;
1972 goto return_label73;
1973 }
1974 variable[4] = CALL_abstractmetamodel___MMGlobalClass___intro( variable[3] /*glob*/)( variable[3] /*glob*/) /*MMGlobalClass::intro*/;
1975 variable[4] = CALL_abstractmetamodel___MMLocalClass___arity(variable[4])(variable[4]) /*MMLocalClass::arity*/;
1976 variable[5] = variable[0];
1977 variable[5] = ATTR_mmbuilder___PClassdef____local_class(variable[5]) /*PClassdef::_local_class*/;
1978 variable[5] = CALL_abstractmetamodel___MMLocalClass___arity(variable[5])(variable[5]) /*MMLocalClass::arity*/;
1979 variable[4] = TAG_Bool((variable[4])!=(variable[5]));
1980 if (UNTAG_Bool(variable[4])) { /*if*/
1981 variable[4] = variable[0];
1982 variable[5] = NEW_Array_array___Array___with_capacity(TAG_Int(5)); /*new Array[String]*/
1983 variable[6] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: Formal parameter arity missmatch; got "), TAG_Int(51)); /*new String*/
1984 variable[7] = variable[6];
1985 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[7]) /*AbstractArray::add*/;
1986 variable[8] = variable[0];
1987 variable[8] = ATTR_mmbuilder___PClassdef____local_class(variable[8]) /*PClassdef::_local_class*/;
1988 variable[8] = CALL_abstractmetamodel___MMLocalClass___arity(variable[8])(variable[8]) /*MMLocalClass::arity*/;
1989 variable[9] = variable[8];
1990 variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
1991 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[9]) /*AbstractArray::add*/;
1992 variable[10] = NEW_String_string___String___with_native(BOX_NativeString(", expected "), TAG_Int(11)); /*new String*/
1993 variable[11] = variable[10];
1994 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[11]) /*AbstractArray::add*/;
1995 variable[12] = CALL_abstractmetamodel___MMGlobalClass___intro( variable[3] /*glob*/)( variable[3] /*glob*/) /*MMGlobalClass::intro*/;
1996 variable[12] = CALL_abstractmetamodel___MMLocalClass___arity(variable[12])(variable[12]) /*MMLocalClass::arity*/;
1997 variable[13] = variable[12];
1998 variable[13] = CALL_string___Object___to_s(variable[13])(variable[13]) /*Object::to_s*/;
1999 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[13]) /*AbstractArray::add*/;
2000 variable[14] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/
2001 variable[15] = variable[14];
2002 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[15]) /*AbstractArray::add*/;
2003 variable[5] = CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/;
2004 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[4], variable[5]) /*AbsSyntaxVisitor::error*/;
2005 }
2006 variable[4] = CALL_abstractmetamodel___MMGlobalClass___is_interface( variable[3] /*glob*/)( variable[3] /*glob*/) /*MMGlobalClass::is_interface*/;
2007 variable[4] = TAG_Bool(!UNTAG_Bool(variable[4]));
2008 if (UNTAG_Bool(variable[4])) { /* and */
2009 variable[4] = variable[0];
2010 variable[4] = CALL_parser_nodes___AClassdef___n_classkind(variable[4])(variable[4]) /*AClassdef::n_classkind*/;
2011 variable[4] = CALL_mmbuilder___PClasskind___is_interface(variable[4])(variable[4]) /*PClasskind::is_interface*/;
2012 }
2013 variable[5] = variable[4];
2014 if (!UNTAG_Bool(variable[5])) { /* or */
2015 variable[5] = CALL_abstractmetamodel___MMGlobalClass___is_abstract( variable[3] /*glob*/)( variable[3] /*glob*/) /*MMGlobalClass::is_abstract*/;
2016 variable[5] = TAG_Bool(!UNTAG_Bool(variable[5]));
2017 }
2018 variable[4] = variable[5];
2019 variable[5] = variable[4];
2020 if (UNTAG_Bool(variable[5])) { /* and */
2021 variable[5] = variable[0];
2022 variable[5] = CALL_parser_nodes___AClassdef___n_classkind(variable[5])(variable[5]) /*AClassdef::n_classkind*/;
2023 variable[5] = CALL_mmbuilder___PClasskind___is_abstract(variable[5])(variable[5]) /*PClasskind::is_abstract*/;
2024 }
2025 variable[4] = variable[5];
2026 variable[5] = variable[4];
2027 if (!UNTAG_Bool(variable[5])) { /* or */
2028 variable[5] = CALL_abstractmetamodel___MMGlobalClass___is_universal( variable[3] /*glob*/)( variable[3] /*glob*/) /*MMGlobalClass::is_universal*/;
2029 variable[5] = TAG_Bool(!UNTAG_Bool(variable[5]));
2030 }
2031 variable[4] = variable[5];
2032 variable[5] = variable[4];
2033 if (UNTAG_Bool(variable[5])) { /* and */
2034 variable[5] = variable[0];
2035 variable[5] = CALL_parser_nodes___AClassdef___n_classkind(variable[5])(variable[5]) /*AClassdef::n_classkind*/;
2036 variable[5] = CALL_mmbuilder___PClasskind___is_universal(variable[5])(variable[5]) /*PClasskind::is_universal*/;
2037 }
2038 variable[4] = variable[5];
2039 if (UNTAG_Bool(variable[4])) { /*if*/
2040 variable[4] = variable[0];
2041 variable[5] = NEW_Array_array___Array___with_capacity(TAG_Int(3)); /*new Array[String]*/
2042 variable[6] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: cannot change kind of class "), TAG_Int(41)); /*new String*/
2043 variable[7] = variable[6];
2044 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[7]) /*AbstractArray::add*/;
2045 variable[8] = variable[0];
2046 variable[8] = CALL_mmbuilder___PClassdef___name(variable[8])(variable[8]) /*AClassdef::name*/;
2047 variable[9] = variable[8];
2048 variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
2049 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[9]) /*AbstractArray::add*/;
2050 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/
2051 variable[11] = variable[10];
2052 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[11]) /*AbstractArray::add*/;
2053 variable[5] = CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/;
2054 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[4], variable[5]) /*AbsSyntaxVisitor::error*/;
2055 }
2056 return_label73: while(false);
2057 tracehead = trace.prev;
2058 return;
2059 }
2060 val_t mmbuilder___AClassdef___name(val_t self) {
2061 struct trace_t trace = {NULL, NULL, 575, LOCATE_mmbuilder___AClassdef___name};
2062 val_t variable[3];
2063 void **closurevariable = NULL;
2064 trace.prev = tracehead; tracehead = &trace;
2065 trace.file = LOCATE_mmbuilder;
2066 variable[0] = self;
2067 variable[2] = variable[0];
2068 variable[2] = CALL_parser_nodes___AClassdef___n_id(variable[2])(variable[2]) /*AClassdef::n_id*/;
2069 variable[2] = CALL_syntax_base___Token___to_symbol(variable[2])(variable[2]) /*Token::to_symbol*/;
2070 variable[1] = variable[2];
2071 goto return_label75;
2072 return_label75: while(false);
2073 tracehead = trace.prev;
2074 return variable[1];
2075 }
2076 val_t mmbuilder___AClassdef___arity(val_t self) {
2077 struct trace_t trace = {NULL, NULL, 579, LOCATE_mmbuilder___AClassdef___arity};
2078 val_t variable[3];
2079 void **closurevariable = NULL;
2080 trace.prev = tracehead; tracehead = &trace;
2081 trace.file = LOCATE_mmbuilder;
2082 variable[0] = self;
2083 variable[2] = variable[0];
2084 variable[2] = CALL_parser_nodes___AClassdef___n_formaldefs(variable[2])(variable[2]) /*AClassdef::n_formaldefs*/;
2085 variable[2] = CALL_abstract_collection___Collection___length(variable[2])(variable[2]) /*List::length*/;
2086 variable[1] = variable[2];
2087 goto return_label76;
2088 return_label76: while(false);
2089 tracehead = trace.prev;
2090 return variable[1];
2091 }
2092 val_t mmbuilder___AClassdef___visibility_level(val_t self) {
2093 struct trace_t trace = {NULL, NULL, 640, LOCATE_mmbuilder___AClassdef___visibility_level};
2094 val_t variable[3];
2095 void **closurevariable = NULL;
2096 trace.prev = tracehead; tracehead = &trace;
2097 trace.file = LOCATE_mmbuilder;
2098 variable[0] = self;
2099 variable[2] = variable[0];
2100 variable[2] = CALL_parser_nodes___AClassdef___n_visibility(variable[2])(variable[2]) /*AClassdef::n_visibility*/;
2101 variable[2] = CALL_mmbuilder___PVisibility___level(variable[2])(variable[2]) /*PVisibility::level*/;
2102 variable[1] = variable[2];
2103 goto return_label77;
2104 return_label77: while(false);
2105 tracehead = trace.prev;
2106 return variable[1];
2107 }
2108 val_t mmbuilder___AMainClassdef___name(val_t self) {
2109 struct trace_t trace = {NULL, NULL, 647, LOCATE_mmbuilder___AMainClassdef___name};
2110 static val_t once_value_79; static int once_bool_79; /* Once value for variable[2]*/
2111 val_t variable[3];
2112 void **closurevariable = NULL;
2113 trace.prev = tracehead; tracehead = &trace;
2114 trace.file = LOCATE_mmbuilder;
2115 variable[0] = self;
2116 if (once_bool_79) variable[2] = once_value_79;
2117 else {
2118 variable[2] = NEW_String_string___String___with_native(BOX_NativeString("Sys"), TAG_Int(3)); /*new String*/
2119 variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/;
2120 once_value_79 = variable[2];
2121 once_bool_79 = true;
2122 }
2123 variable[1] = variable[2];
2124 goto return_label78;
2125 return_label78: while(false);
2126 tracehead = trace.prev;
2127 return variable[1];
2128 }
2129 val_t mmbuilder___ATopClassdef___name(val_t self) {
2130 struct trace_t trace = {NULL, NULL, 654, LOCATE_mmbuilder___ATopClassdef___name};
2131 static val_t once_value_81; static int once_bool_81; /* Once value for variable[2]*/
2132 val_t variable[3];
2133 void **closurevariable = NULL;
2134 trace.prev = tracehead; tracehead = &trace;
2135 trace.file = LOCATE_mmbuilder;
2136 variable[0] = self;
2137 if (once_bool_81) variable[2] = once_value_81;
2138 else {
2139 variable[2] = NEW_String_string___String___with_native(BOX_NativeString("Object"), TAG_Int(6)); /*new String*/
2140 variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/;
2141 once_value_81 = variable[2];
2142 once_bool_81 = true;
2143 }
2144 variable[1] = variable[2];
2145 goto return_label80;
2146 return_label80: while(false);
2147 tracehead = trace.prev;
2148 return variable[1];
2149 }
2150 val_t mmbuilder___MMSrcTypeFormalParameter___node(val_t self) {
2151 struct trace_t trace = {NULL, NULL, 662, LOCATE_mmbuilder___MMSrcTypeFormalParameter___node};
2152 val_t *variable = NULL;
2153 void **closurevariable = NULL;
2154 trace.prev = tracehead; tracehead = &trace;
2155 trace.file = LOCATE_mmbuilder;
2156 tracehead = trace.prev;
2157 return ATTR_mmbuilder___MMSrcTypeFormalParameter____node( self) /*MMSrcTypeFormalParameter::_node*/;
2158 }
2159 void mmbuilder___MMSrcTypeFormalParameter___init(val_t self, val_t param0, val_t param1, val_t param2, val_t param3, int* init_table) {
2160 struct trace_t trace = {NULL, NULL, 665, LOCATE_mmbuilder___MMSrcTypeFormalParameter___init};
2161 val_t variable[7];
2162 void **closurevariable = NULL;
2163 trace.prev = tracehead; tracehead = &trace;
2164 trace.file = LOCATE_mmbuilder;
2165 variable[0] = self;
2166 variable[1] = param0;
2167 variable[2] = param1;
2168 variable[3] = param2;
2169 variable[4] = param3;
2170 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMSrcTypeFormalParameter].i]) return;
2171 CALL_genericity___MMTypeFormalParameter___init(variable[0])(variable[0], variable[1] /*name*/, variable[2] /*pos*/, variable[3] /*local_class*/, init_table /*YYY*/) /*MMTypeFormalParameter::init*/;
2172 variable[6] = variable[0];
2173 ATTR_mmbuilder___MMSrcTypeFormalParameter____node(variable[6]) /*MMSrcTypeFormalParameter::_node*/ = variable[4] /*n*/;
2174 return_label82: while(false);
2175 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMSrcTypeFormalParameter].i] = 1;
2176 tracehead = trace.prev;
2177 return;
2178 }
2179 void mmbuilder___AFormaldef___accept_class_builder(val_t self, val_t param0) {
2180 struct trace_t trace = {NULL, NULL, 676, LOCATE_mmbuilder___AFormaldef___accept_class_builder};
2181 val_t variable[9];
2182 void **closurevariable = NULL;
2183 trace.prev = tracehead; tracehead = &trace;
2184 trace.file = LOCATE_mmbuilder;
2185 variable[0] = self;
2186 variable[1] = param0;
2187 variable[4] = variable[0];
2188 variable[4] = CALL_parser_nodes___AFormaldef___n_id(variable[4])(variable[4]) /*AFormaldef::n_id*/;
2189 variable[4] = CALL_syntax_base___Token___to_symbol(variable[4])(variable[4]) /*Token::to_symbol*/;
2190 variable[3] = variable[4];
2191 variable[5] = CALL_mmbuilder___ClassBuilderVisitor___local_class_arity( variable[1] /*v*/)( variable[1] /*v*/) /*ClassBuilderVisitor::local_class_arity*/;
2192 variable[6] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
2193 variable[7] = variable[0];
2194 variable[8] = NEW_MMSrcTypeFormalParameter_mmbuilder___MMSrcTypeFormalParameter___init( variable[3] /*name*/, variable[5], variable[6], variable[7]); /*new MMSrcTypeFormalParameter*/
2195 variable[5] = variable[8];
2196 variable[4] = variable[5];
2197 variable[5] = variable[0];
2198 ATTR_mmbuilder___AFormaldef____formal(variable[5]) /*AFormaldef::_formal*/ = variable[4] /*formal_type*/;
2199 variable[5] = CALL_mmbuilder___ClassBuilderVisitor___local_class_arity( variable[1] /*v*/)( variable[1] /*v*/) /*ClassBuilderVisitor::local_class_arity*/;
2200 variable[5] = TAG_Int(UNTAG_Int(variable[5])+UNTAG_Int( TAG_Int(1)));
2201 CALL_mmbuilder___ClassBuilderVisitor___local_class_arity__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[5]) /*ClassBuilderVisitor::local_class_arity=*/;
2202 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
2203 CALL_genericity___MMLocalClass___register_formal(variable[5])(variable[5], variable[4] /*formal_type*/) /*MMLocalClass::register_formal*/;
2204 variable[5] = CALL_mmbuilder___ClassBuilderVisitor___formals( variable[1] /*v*/)( variable[1] /*v*/) /*ClassBuilderVisitor::formals*/;
2205 CALL_abstract_collection___Map_____braeq(variable[5])(variable[5], variable[3] /*name*/, variable[4] /*formal_type*/) /*Map::[]=*/;
2206 CALL_SUPER_mmbuilder___AFormaldef___accept_class_builder(variable[0])(variable[0], variable[1]) /*super AFormaldef::accept_class_builder*/;
2207 return_label83: while(false);
2208 tracehead = trace.prev;
2209 return;
2210 }
2211 void mmbuilder___AFormaldef___accept_class_verifier(val_t self, val_t param0) {
2212 struct trace_t trace = {NULL, NULL, 687, LOCATE_mmbuilder___AFormaldef___accept_class_verifier};
2213 val_t variable[20];
2214 void **closurevariable = NULL;
2215 trace.prev = tracehead; tracehead = &trace;
2216 trace.file = LOCATE_mmbuilder;
2217 variable[0] = self;
2218 variable[1] = param0;
2219 CALL_SUPER_mmbuilder___AFormaldef___accept_class_verifier(variable[0])(variable[0], variable[1]) /*super AFormaldef::accept_class_verifier*/;
2220 variable[4] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
2221 variable[3] = variable[4];
2222 variable[5] = CALL_abstractmetamodel___MMLocalClass___global( variable[3] /*c*/)( variable[3] /*c*/) /*MMLocalClass::global*/;
2223 variable[5] = CALL_abstractmetamodel___MMGlobalClass___intro(variable[5])(variable[5]) /*MMGlobalClass::intro*/;
2224 variable[4] = variable[5];
2225 variable[5] = TAG_Bool(( variable[3] /*c*/ == variable[4] /*o*/) || (( variable[3] /*c*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*c*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*c*/, variable[4] /*o*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*c*/)( variable[3] /*c*/, variable[4] /*o*/) /*Object::==*/)))));
2226 if (UNTAG_Bool(variable[5])) { /*if*/
2227 variable[5] = variable[0];
2228 variable[5] = CALL_parser_nodes___AFormaldef___n_type(variable[5])(variable[5]) /*AFormaldef::n_type*/;
2229 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::==*/)))));
2230 if (UNTAG_Bool(variable[5])) { /*if*/
2231 variable[5] = variable[0];
2232 variable[5] = ATTR_mmbuilder___AFormaldef____formal(variable[5]) /*AFormaldef::_formal*/;
2233 variable[6] = CALL_syntax_base___AbsSyntaxVisitor___module( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::module*/;
2234 variable[6] = CALL_inheritance___MMModule___type_any(variable[6])(variable[6]) /*MMModule::type_any*/;
2235 CALL_genericity___MMTypeFormalParameter___bound__eq(variable[5])(variable[5], variable[6]) /*MMTypeFormalParameter::bound=*/;
2236 } else { /*if*/
2237 variable[5] = variable[0];
2238 variable[5] = ATTR_mmbuilder___AFormaldef____formal(variable[5]) /*AFormaldef::_formal*/;
2239 variable[6] = variable[0];
2240 variable[6] = CALL_parser_nodes___AFormaldef___n_type(variable[6])(variable[6]) /*AFormaldef::n_type*/;
2241 variable[6] = CALL_syntax_base___PType___get_stype(variable[6])(variable[6], variable[1] /*v*/) /*PType::get_stype*/;
2242 CALL_genericity___MMTypeFormalParameter___bound__eq(variable[5])(variable[5], variable[6]) /*MMTypeFormalParameter::bound=*/;
2243 }
2244 } else { /*if*/
2245 variable[6] = variable[0];
2246 variable[6] = ATTR_mmbuilder___AFormaldef____formal(variable[6]) /*AFormaldef::_formal*/;
2247 variable[6] = CALL_genericity___MMTypeFormalParameter___position(variable[6])(variable[6]) /*MMTypeFormalParameter::position*/;
2248 variable[6] = CALL_genericity___MMLocalClass___get_formal( variable[4] /*o*/)( variable[4] /*o*/, variable[6]) /*MMLocalClass::get_formal*/;
2249 variable[6] = CALL_type_formal___MMTypeFormal___bound(variable[6])(variable[6]) /*MMTypeFormal::bound*/;
2250 variable[7] = CALL_syntax_base___AbsSyntaxVisitor___module( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::module*/;
2251 variable[6] = CALL_static_type___MMType___for_module(variable[6])(variable[6], variable[7]) /*MMType::for_module*/;
2252 variable[5] = variable[6];
2253 variable[6] = variable[0];
2254 variable[6] = CALL_parser_nodes___AFormaldef___n_type(variable[6])(variable[6]) /*AFormaldef::n_type*/;
2255 variable[6] = TAG_Bool((variable[6] == NIT_NULL /*null*/) || ((variable[6] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[6])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[6], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[6])(variable[6], NIT_NULL /*null*/) /*Object::==*/)))));
2256 if (UNTAG_Bool(variable[6])) { /*if*/
2257 variable[6] = variable[0];
2258 variable[6] = ATTR_mmbuilder___AFormaldef____formal(variable[6]) /*AFormaldef::_formal*/;
2259 CALL_genericity___MMTypeFormalParameter___bound__eq(variable[6])(variable[6], variable[5] /*ob*/) /*MMTypeFormalParameter::bound=*/;
2260 } else { /*if*/
2261 variable[6] = variable[0];
2262 variable[6] = ATTR_mmbuilder___AFormaldef____formal(variable[6]) /*AFormaldef::_formal*/;
2263 variable[7] = variable[0];
2264 variable[7] = CALL_parser_nodes___AFormaldef___n_type(variable[7])(variable[7]) /*AFormaldef::n_type*/;
2265 variable[7] = CALL_syntax_base___PType___get_stype(variable[7])(variable[7], variable[1] /*v*/) /*PType::get_stype*/;
2266 CALL_genericity___MMTypeFormalParameter___bound__eq(variable[6])(variable[6], variable[7]) /*MMTypeFormalParameter::bound=*/;
2267 variable[6] = variable[0];
2268 variable[6] = ATTR_mmbuilder___AFormaldef____formal(variable[6]) /*AFormaldef::_formal*/;
2269 variable[6] = CALL_type_formal___MMTypeFormal___bound(variable[6])(variable[6]) /*MMTypeFormal::bound*/;
2270 variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[6] == variable[5] /*ob*/) || ((variable[6] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[6])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[6], variable[5] /*ob*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[6])(variable[6], variable[5] /*ob*/) /*Object::==*/)))))));
2271 if (UNTAG_Bool(variable[6])) { /*if*/
2272 variable[6] = variable[0];
2273 variable[7] = NEW_Array_array___Array___with_capacity(TAG_Int(7)); /*new Array[String]*/
2274 variable[8] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: Cannot change formal parameter type of class "), TAG_Int(58)); /*new String*/
2275 variable[9] = variable[8];
2276 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[9]) /*AbstractArray::add*/;
2277 variable[10] = variable[3] /*c*/;
2278 variable[10] = CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/;
2279 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[10]) /*AbstractArray::add*/;
2280 variable[11] = NEW_String_string___String___with_native(BOX_NativeString("; got "), TAG_Int(6)); /*new String*/
2281 variable[12] = variable[11];
2282 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[12]) /*AbstractArray::add*/;
2283 variable[13] = variable[0];
2284 variable[13] = ATTR_mmbuilder___AFormaldef____formal(variable[13]) /*AFormaldef::_formal*/;
2285 variable[13] = CALL_type_formal___MMTypeFormal___bound(variable[13])(variable[13]) /*MMTypeFormal::bound*/;
2286 variable[14] = variable[13];
2287 variable[14] = CALL_string___Object___to_s(variable[14])(variable[14]) /*Object::to_s*/;
2288 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[14]) /*AbstractArray::add*/;
2289 variable[15] = NEW_String_string___String___with_native(BOX_NativeString(", expected "), TAG_Int(11)); /*new String*/
2290 variable[16] = variable[15];
2291 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[16]) /*AbstractArray::add*/;
2292 variable[17] = variable[5] /*ob*/;
2293 variable[17] = CALL_string___Object___to_s(variable[17])(variable[17]) /*Object::to_s*/;
2294 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[17]) /*AbstractArray::add*/;
2295 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/
2296 variable[19] = variable[18];
2297 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[19]) /*AbstractArray::add*/;
2298 variable[7] = CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/;
2299 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[6], variable[7]) /*AbsSyntaxVisitor::error*/;
2300 }
2301 }
2302 }
2303 return_label84: while(false);
2304 tracehead = trace.prev;
2305 return;
2306 }
2307 void mmbuilder___ASuperclass___accept_class_specialization_builder(val_t self, val_t param0) {
2308 struct trace_t trace = {NULL, NULL, 715, LOCATE_mmbuilder___ASuperclass___accept_class_specialization_builder};
2309 val_t variable[7];
2310 void **closurevariable = NULL;
2311 trace.prev = tracehead; tracehead = &trace;
2312 trace.file = LOCATE_mmbuilder;
2313 variable[0] = self;
2314 variable[1] = param0;
2315 CALL_SUPER_mmbuilder___ASuperclass___accept_class_specialization_builder(variable[0])(variable[0], variable[1]) /*super ASuperclass::accept_class_specialization_builder*/;
2316 variable[4] = variable[0];
2317 variable[4] = CALL_parser_nodes___ASuperclass___n_type(variable[4])(variable[4]) /*ASuperclass::n_type*/;
2318 variable[4] = CALL_syntax_base___PType___get_local_class(variable[4])(variable[4], variable[1] /*v*/) /*PType::get_local_class*/;
2319 variable[3] = variable[4];
2320 variable[5] = variable[0];
2321 variable[6] = NEW_MMSrcAncestor_mmbuilder___MMSrcAncestor___init(variable[5], variable[3] /*c*/); /*new MMSrcAncestor*/
2322 variable[5] = variable[6];
2323 variable[4] = variable[5];
2324 variable[5] = variable[0];
2325 ATTR_mmbuilder___ASuperclass____ancestor(variable[5]) /*ASuperclass::_ancestor*/ = variable[4] /*ancestor*/;
2326 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
2327 CALL_inheritance___MMLocalClass___add_direct_parent(variable[5])(variable[5], variable[4] /*ancestor*/) /*MMLocalClass::add_direct_parent*/;
2328 return_label85: while(false);
2329 tracehead = trace.prev;
2330 return;
2331 }
2332 void mmbuilder___ASuperclass___accept_class_ancestor_builder(val_t self, val_t param0) {
2333 struct trace_t trace = {NULL, NULL, 724, LOCATE_mmbuilder___ASuperclass___accept_class_ancestor_builder};
2334 val_t variable[5];
2335 void **closurevariable = NULL;
2336 trace.prev = tracehead; tracehead = &trace;
2337 trace.file = LOCATE_mmbuilder;
2338 variable[0] = self;
2339 variable[1] = param0;
2340 CALL_SUPER_mmbuilder___ASuperclass___accept_class_ancestor_builder(variable[0])(variable[0], variable[1]) /*super ASuperclass::accept_class_ancestor_builder*/;
2341 variable[3] = variable[0];
2342 variable[3] = ATTR_mmbuilder___ASuperclass____ancestor(variable[3]) /*ASuperclass::_ancestor*/;
2343 variable[4] = variable[0];
2344 variable[4] = CALL_parser_nodes___ASuperclass___n_type(variable[4])(variable[4]) /*ASuperclass::n_type*/;
2345 variable[4] = CALL_syntax_base___PType___get_unchecked_stype(variable[4])(variable[4], variable[1] /*v*/) /*PType::get_unchecked_stype*/;
2346 CALL_static_type___MMAncestor___stype__eq(variable[3])(variable[3], variable[4]) /*MMAncestor::stype=*/;
2347 variable[3] = variable[0];
2348 variable[3] = ATTR_mmbuilder___ASuperclass____ancestor(variable[3]) /*ASuperclass::_ancestor*/;
2349 variable[4] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
2350 variable[4] = CALL_static_type___MMLocalClass___get_type(variable[4])(variable[4]) /*MMLocalClass::get_type*/;
2351 CALL_static_type___MMAncestor___inheriter__eq(variable[3])(variable[3], variable[4]) /*MMAncestor::inheriter=*/;
2352 return_label86: while(false);
2353 tracehead = trace.prev;
2354 return;
2355 }
2356 void mmbuilder___ASuperclass___accept_class_verifier(val_t self, val_t param0) {
2357 struct trace_t trace = {NULL, NULL, 731, LOCATE_mmbuilder___ASuperclass___accept_class_verifier};
2358 val_t variable[4];
2359 void **closurevariable = NULL;
2360 trace.prev = tracehead; tracehead = &trace;
2361 trace.file = LOCATE_mmbuilder;
2362 variable[0] = self;
2363 variable[1] = param0;
2364 CALL_SUPER_mmbuilder___ASuperclass___accept_class_verifier(variable[0])(variable[0], variable[1]) /*super ASuperclass::accept_class_verifier*/;
2365 variable[3] = variable[0];
2366 variable[3] = CALL_parser_nodes___ASuperclass___n_type(variable[3])(variable[3]) /*ASuperclass::n_type*/;
2367 CALL_syntax_base___PType___check_conform(variable[3])(variable[3], variable[1] /*v*/) /*PType::check_conform*/;
2368 return_label87: while(false);
2369 tracehead = trace.prev;
2370 return;
2371 }
2372 val_t mmbuilder___ASuperclass___ancestor(val_t self) {
2373 struct trace_t trace = {NULL, NULL, 713, LOCATE_mmbuilder___ASuperclass___ancestor};
2374 val_t *variable = NULL;
2375 void **closurevariable = NULL;
2376 trace.prev = tracehead; tracehead = &trace;
2377 trace.file = LOCATE_mmbuilder;
2378 tracehead = trace.prev;
2379 return ATTR_mmbuilder___ASuperclass____ancestor( self) /*ASuperclass::_ancestor*/;
2380 }
2381 void mmbuilder___PPropdef___process_and_check(val_t self, val_t param0, val_t param1, val_t param2, val_t param3) {
2382 struct trace_t trace = {NULL, NULL, 739, LOCATE_mmbuilder___PPropdef___process_and_check};
2383 val_t variable[7];
2384 void **closurevariable = NULL;
2385 trace.prev = tracehead; tracehead = &trace;
2386 trace.file = LOCATE_mmbuilder;
2387 variable[0] = self;
2388 variable[1] = param0;
2389 variable[2] = param1;
2390 variable[3] = param2;
2391 variable[4] = param3;
2392 variable[6] = CALL_abstractmetamodel___MMLocalProperty___global( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::global*/;
2393 variable[6] = CALL_abstractmetamodel___MMGlobalProperty___intro(variable[6])(variable[6]) /*MMGlobalProperty::intro*/;
2394 variable[6] = TAG_Bool((variable[6] == variable[2] /*prop*/) || ((variable[6] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[6])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[6], variable[2] /*prop*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[6])(variable[6], variable[2] /*prop*/) /*Object::==*/)))));
2395 if (UNTAG_Bool(variable[6])) { /*if*/
2396 variable[6] = variable[0];
2397 CALL_mmbuilder___PPropdef___do_and_check_intro(variable[6])(variable[6], variable[1] /*v*/, variable[2] /*prop*/, variable[3] /*has_redef*/, variable[4] /*visibility_level*/) /*PPropdef::do_and_check_intro*/;
2398 } else { /*if*/
2399 variable[6] = variable[0];
2400 CALL_mmbuilder___PPropdef___do_and_check_redef(variable[6])(variable[6], variable[1] /*v*/, variable[2] /*prop*/, variable[3] /*has_redef*/, variable[4] /*visibility_level*/) /*PPropdef::do_and_check_redef*/;
2401 }
2402 return_label88: while(false);
2403 tracehead = trace.prev;
2404 return;
2405 }
2406 void mmbuilder___PPropdef___do_and_check_intro(val_t self, val_t param0, val_t param1, val_t param2, val_t param3) {
2407 struct trace_t trace = {NULL, NULL, 754, LOCATE_mmbuilder___PPropdef___do_and_check_intro};
2408 val_t variable[19];
2409 void **closurevariable = NULL;
2410 trace.prev = tracehead; tracehead = &trace;
2411 trace.file = LOCATE_mmbuilder;
2412 variable[0] = self;
2413 variable[1] = param0;
2414 variable[2] = param1;
2415 variable[3] = param2;
2416 variable[4] = param3;
2417 variable[7] = CALL_abstractmetamodel___MMLocalProperty___global( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::global*/;
2418 variable[6] = variable[7];
2419 variable[8] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
2420 variable[8] = CALL_abstractmetamodel___MMLocalClass___global(variable[8])(variable[8]) /*MMLocalClass::global*/;
2421 variable[7] = variable[8];
2422 variable[8] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
2423 variable[8] = CALL_abstractmetamodel___MMLocalClass___global(variable[8])(variable[8]) /*MMLocalClass::global*/;
2424 variable[8] = CALL_abstractmetamodel___MMGlobalClass___visibility_level(variable[8])(variable[8]) /*MMGlobalClass::visibility_level*/;
2425 variable[8] = TAG_Bool(UNTAG_Int(variable[8])>=UNTAG_Int( TAG_Int(3)));
2426 if (UNTAG_Bool(variable[8])) { /*if*/
2427 variable[4] = TAG_Int(3) /*visibility_level=*/;
2428 }
2429 CALL_abstractmetamodel___MMGlobalProperty___visibility_level__eq( variable[6] /*glob*/)( variable[6] /*glob*/, variable[4] /*visibility_level*/) /*MMGlobalProperty::visibility_level=*/;
2430 if (UNTAG_Bool( variable[3] /*has_redef*/)) { /*if*/
2431 variable[8] = variable[0];
2432 variable[9] = NEW_Array_array___Array___with_capacity(TAG_Int(5)); /*new Array[String]*/
2433 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("Error: No property "), TAG_Int(19)); /*new String*/
2434 variable[11] = variable[10];
2435 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[11]) /*AbstractArray::add*/;
2436 variable[12] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
2437 variable[13] = variable[12];
2438 variable[13] = CALL_string___Object___to_s(variable[13])(variable[13]) /*Object::to_s*/;
2439 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[13]) /*AbstractArray::add*/;
2440 variable[14] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)); /*new String*/
2441 variable[15] = variable[14];
2442 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[15]) /*AbstractArray::add*/;
2443 variable[16] = variable[2] /*prop*/;
2444 variable[16] = CALL_string___Object___to_s(variable[16])(variable[16]) /*Object::to_s*/;
2445 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[16]) /*AbstractArray::add*/;
2446 variable[17] = NEW_String_string___String___with_native(BOX_NativeString(" is inherited. Remove the redef keyword to define a new property."), TAG_Int(65)); /*new String*/
2447 variable[18] = variable[17];
2448 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[18]) /*AbstractArray::add*/;
2449 variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
2450 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[8], variable[9]) /*AbsSyntaxVisitor::error*/;
2451 }
2452 variable[8] = CALL_abstractmetamodel___MMGlobalProperty___is_attribute( variable[6] /*glob*/)( variable[6] /*glob*/) /*MMGlobalProperty::is_attribute*/;
2453 if (UNTAG_Bool(variable[8])) { /*if*/
2454 variable[8] = CALL_abstractmetamodel___MMGlobalClass___is_interface( variable[7] /*gbc*/)( variable[7] /*gbc*/) /*MMGlobalClass::is_interface*/;
2455 if (UNTAG_Bool(variable[8])) { /*if*/
2456 variable[8] = variable[0];
2457 variable[9] = NEW_Array_array___Array___with_capacity(TAG_Int(5)); /*new Array[String]*/
2458 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("Error: Attempt to define attribute "), TAG_Int(35)); /*new String*/
2459 variable[11] = variable[10];
2460 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[11]) /*AbstractArray::add*/;
2461 variable[12] = variable[2] /*prop*/;
2462 variable[12] = CALL_string___Object___to_s(variable[12])(variable[12]) /*Object::to_s*/;
2463 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[12]) /*AbstractArray::add*/;
2464 variable[13] = NEW_String_string___String___with_native(BOX_NativeString(" in the interface "), TAG_Int(18)); /*new String*/
2465 variable[14] = variable[13];
2466 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[14]) /*AbstractArray::add*/;
2467 variable[15] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
2468 variable[16] = variable[15];
2469 variable[16] = CALL_string___Object___to_s(variable[16])(variable[16]) /*Object::to_s*/;
2470 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[16]) /*AbstractArray::add*/;
2471 variable[17] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/
2472 variable[18] = variable[17];
2473 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[18]) /*AbstractArray::add*/;
2474 variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
2475 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[8], variable[9]) /*AbsSyntaxVisitor::error*/;
2476 } else { /*if*/
2477 variable[8] = CALL_abstractmetamodel___MMGlobalClass___is_universal( variable[7] /*gbc*/)( variable[7] /*gbc*/) /*MMGlobalClass::is_universal*/;
2478 if (UNTAG_Bool(variable[8])) { /*if*/
2479 variable[8] = variable[0];
2480 variable[9] = NEW_Array_array___Array___with_capacity(TAG_Int(5)); /*new Array[String]*/
2481 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("Error: Attempt to define attribute "), TAG_Int(35)); /*new String*/
2482 variable[11] = variable[10];
2483 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[11]) /*AbstractArray::add*/;
2484 variable[12] = variable[2] /*prop*/;
2485 variable[12] = CALL_string___Object___to_s(variable[12])(variable[12]) /*Object::to_s*/;
2486 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[12]) /*AbstractArray::add*/;
2487 variable[13] = NEW_String_string___String___with_native(BOX_NativeString(" in the universal class "), TAG_Int(24)); /*new String*/
2488 variable[14] = variable[13];
2489 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[14]) /*AbstractArray::add*/;
2490 variable[15] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
2491 variable[16] = variable[15];
2492 variable[16] = CALL_string___Object___to_s(variable[16])(variable[16]) /*Object::to_s*/;
2493 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[16]) /*AbstractArray::add*/;
2494 variable[17] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/
2495 variable[18] = variable[17];
2496 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[18]) /*AbstractArray::add*/;
2497 variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
2498 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[8], variable[9]) /*AbsSyntaxVisitor::error*/;
2499 }
2500 }
2501 } else { /*if*/
2502 variable[8] = CALL_abstractmetamodel___MMGlobalProperty___is_init( variable[6] /*glob*/)( variable[6] /*glob*/) /*MMGlobalProperty::is_init*/;
2503 if (UNTAG_Bool(variable[8])) { /*if*/
2504 variable[8] = CALL_abstractmetamodel___MMGlobalClass___is_interface( variable[7] /*gbc*/)( variable[7] /*gbc*/) /*MMGlobalClass::is_interface*/;
2505 if (UNTAG_Bool(variable[8])) { /*if*/
2506 variable[8] = variable[0];
2507 variable[9] = NEW_Array_array___Array___with_capacity(TAG_Int(5)); /*new Array[String]*/
2508 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("Error: Attempt to define a constructor "), TAG_Int(39)); /*new String*/
2509 variable[11] = variable[10];
2510 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[11]) /*AbstractArray::add*/;
2511 variable[12] = variable[2] /*prop*/;
2512 variable[12] = CALL_string___Object___to_s(variable[12])(variable[12]) /*Object::to_s*/;
2513 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[12]) /*AbstractArray::add*/;
2514 variable[13] = NEW_String_string___String___with_native(BOX_NativeString(" in the class "), TAG_Int(14)); /*new String*/
2515 variable[14] = variable[13];
2516 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[14]) /*AbstractArray::add*/;
2517 variable[15] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
2518 variable[16] = variable[15];
2519 variable[16] = CALL_string___Object___to_s(variable[16])(variable[16]) /*Object::to_s*/;
2520 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[16]) /*AbstractArray::add*/;
2521 variable[17] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/
2522 variable[18] = variable[17];
2523 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[18]) /*AbstractArray::add*/;
2524 variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
2525 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[8], variable[9]) /*AbsSyntaxVisitor::error*/;
2526 } else { /*if*/
2527 variable[8] = CALL_abstractmetamodel___MMGlobalClass___is_universal( variable[7] /*gbc*/)( variable[7] /*gbc*/) /*MMGlobalClass::is_universal*/;
2528 if (UNTAG_Bool(variable[8])) { /*if*/
2529 variable[8] = variable[0];
2530 variable[9] = NEW_Array_array___Array___with_capacity(TAG_Int(5)); /*new Array[String]*/
2531 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("Error: Attempt to define a constructor "), TAG_Int(39)); /*new String*/
2532 variable[11] = variable[10];
2533 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[11]) /*AbstractArray::add*/;
2534 variable[12] = variable[2] /*prop*/;
2535 variable[12] = CALL_string___Object___to_s(variable[12])(variable[12]) /*Object::to_s*/;
2536 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[12]) /*AbstractArray::add*/;
2537 variable[13] = NEW_String_string___String___with_native(BOX_NativeString(" in the universal "), TAG_Int(18)); /*new String*/
2538 variable[14] = variable[13];
2539 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[14]) /*AbstractArray::add*/;
2540 variable[15] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
2541 variable[16] = variable[15];
2542 variable[16] = CALL_string___Object___to_s(variable[16])(variable[16]) /*Object::to_s*/;
2543 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[16]) /*AbstractArray::add*/;
2544 variable[17] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/
2545 variable[18] = variable[17];
2546 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[18]) /*AbstractArray::add*/;
2547 variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
2548 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[8], variable[9]) /*AbsSyntaxVisitor::error*/;
2549 }
2550 }
2551 }
2552 }
2553 variable[8] = CALL_static_type___MMLocalProperty___signature( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::signature*/;
2554 variable[8] = TAG_Bool((variable[8] == NIT_NULL /*null*/) || ((variable[8] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[8])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[8], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[8])(variable[8], NIT_NULL /*null*/) /*Object::==*/)))));
2555 if (UNTAG_Bool(variable[8])) { /*if*/
2556 variable[8] = CALL_abstractmetamodel___MMGlobalProperty___is_init( variable[6] /*glob*/)( variable[6] /*glob*/) /*MMGlobalProperty::is_init*/;
2557 if (UNTAG_Bool(variable[8])) { /*if*/
2558 variable[9] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
2559 variable[10] = CALL_abstractmetamodel___MMLocalProperty___name( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::name*/;
2560 variable[9] = CALL_abstractmetamodel___MMLocalClass___super_methods_named(variable[9])(variable[9], variable[10]) /*MMLocalClass::super_methods_named*/;
2561 variable[8] = variable[9];
2562 variable[9] = variable[0];
2563 CALL_mmbuilder___PPropdef___inherit_signature(variable[9])(variable[9], variable[1] /*v*/, variable[2] /*prop*/, variable[8] /*supers*/) /*PPropdef::inherit_signature*/;
2564 }
2565 variable[8] = CALL_static_type___MMLocalProperty___signature( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::signature*/;
2566 variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[8] == NIT_NULL /*null*/) || ((variable[8] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[8])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[8], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[8])(variable[8], NIT_NULL /*null*/) /*Object::==*/)))))));
2567 if (UNTAG_Bool(variable[8])) { /*if*/
2568 } else { /*if*/
2569 variable[8] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
2570 variable[8] = CALL_mmbuilder___SignatureBuilder___untyped_params(variable[8])(variable[8]) /*SignatureBuilder::untyped_params*/;
2571 variable[8] = CALL_abstract_collection___Collection___is_empty(variable[8])(variable[8]) /*AbstractArray::is_empty*/;
2572 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[8])))) { /*if*/
2573 variable[8] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
2574 variable[8] = CALL_mmbuilder___SignatureBuilder___untyped_params(variable[8])(variable[8]) /*SignatureBuilder::untyped_params*/;
2575 variable[8] = CALL_abstract_collection___Collection___first(variable[8])(variable[8]) /*IndexedCollection::first*/;
2576 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("Error: Untyped parameter."), TAG_Int(25)); /*new String*/
2577 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[8], variable[9]) /*AbsSyntaxVisitor::error*/;
2578 } else { /*if*/
2579 variable[8] = NEW_Array_array___Array___init(); /*new Array[MMType]*/
2580 variable[9] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
2581 variable[9] = CALL_static_type___MMLocalClass___get_type(variable[9])(variable[9]) /*MMLocalClass::get_type*/;
2582 variable[10] = NEW_MMSignature_static_type___MMSignature___init(variable[8], NIT_NULL /*null*/, variable[9]); /*new MMSignature*/
2583 variable[8] = variable[10];
2584 CALL_static_type___MMLocalProperty___signature__eq( variable[2] /*prop*/)( variable[2] /*prop*/, variable[8]) /*MMLocalProperty::signature=*/;
2585 variable[8] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
2586 variable[8] = CALL_mmbuilder___SignatureBuilder___closure_decls(variable[8])(variable[8]) /*SignatureBuilder::closure_decls*/;
2587 variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[8] == NIT_NULL /*null*/) || ((variable[8] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[8])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[8], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[8])(variable[8], NIT_NULL /*null*/) /*Object::==*/)))))));
2588 if (UNTAG_Bool(variable[8])) { /*if*/
2589 variable[8] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
2590 variable[8] = CALL_mmbuilder___SignatureBuilder___closure_decls(variable[8])(variable[8]) /*SignatureBuilder::closure_decls*/;
2591 variable[8] = CALL_abstract_collection___Collection___iterator(variable[8])(variable[8]) /*AbstractArray::iterator*/;
2592 while (true) { /*for*/
2593 variable[9] = CALL_abstract_collection___Iterator___is_ok(variable[8])(variable[8]) /*ArrayIterator::is_ok*/;
2594 if (!UNTAG_Bool(variable[9])) break; /*for*/
2595 variable[9] = CALL_abstract_collection___Iterator___item(variable[8])(variable[8]) /*ArrayIterator::item*/;
2596 variable[10] = variable[9];
2597 variable[11] = CALL_static_type___MMLocalProperty___signature( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::signature*/;
2598 variable[11] = CALL_static_type___MMSignature___closures(variable[11])(variable[11]) /*MMSignature::closures*/;
2599 variable[12] = CALL_syntax_base___PClosureDecl___variable( variable[10] /*clos*/)( variable[10] /*clos*/) /*AClosureDecl::variable*/;
2600 variable[12] = CALL_syntax_base___ClosureVariable___closure(variable[12])(variable[12]) /*ClosureVariable::closure*/;
2601 CALL_abstract_collection___SimpleCollection___add(variable[11])(variable[11], variable[12]) /*AbstractArray::add*/;
2602 continue_90: while(0);
2603 CALL_abstract_collection___Iterator___next(variable[8])(variable[8]) /*ArrayIterator::next*/;
2604 }
2605 break_90: while(0);
2606 }
2607 }
2608 }
2609 }
2610 return_label89: while(false);
2611 tracehead = trace.prev;
2612 return;
2613 }
2614 void mmbuilder___PPropdef___inherit_signature(val_t self, val_t param0, val_t param1, val_t param2) {
2615 struct trace_t trace = {NULL, NULL, 800, LOCATE_mmbuilder___PPropdef___inherit_signature};
2616 val_t variable[16];
2617 void **closurevariable = NULL;
2618 trace.prev = tracehead; tracehead = &trace;
2619 trace.file = LOCATE_mmbuilder;
2620 variable[0] = self;
2621 variable[1] = param0;
2622 variable[2] = param1;
2623 variable[3] = param2;
2624 variable[6] = CALL_static_type___MMLocalProperty___signature( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::signature*/;
2625 variable[5] = variable[6];
2626 variable[6] = CALL_abstract_collection___Collection___iterator( variable[3] /*supers*/)( variable[3] /*supers*/) /*AbstractArray::iterator*/;
2627 while (true) { /*for*/
2628 variable[7] = CALL_abstract_collection___Iterator___is_ok(variable[6])(variable[6]) /*ArrayIterator::is_ok*/;
2629 if (!UNTAG_Bool(variable[7])) break; /*for*/
2630 variable[7] = CALL_abstract_collection___Iterator___item(variable[6])(variable[6]) /*ArrayIterator::item*/;
2631 variable[8] = variable[7];
2632 variable[10] = CALL_static_type___MMLocalProperty___signature( variable[8] /*ip*/)( variable[8] /*ip*/) /*MMLocalProperty::signature*/;
2633 variable[11] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
2634 variable[11] = CALL_static_type___MMLocalClass___get_type(variable[11])(variable[11]) /*MMLocalClass::get_type*/;
2635 variable[10] = CALL_static_type___MMSignature___adaptation_to(variable[10])(variable[10], variable[11]) /*MMSignature::adaptation_to*/;
2636 variable[9] = variable[10];
2637 variable[10] = TAG_Bool(( variable[5] /*s*/ == NIT_NULL /*null*/) || (( variable[5] /*s*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*s*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*s*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*s*/)( variable[5] /*s*/, NIT_NULL /*null*/) /*Object::==*/)))));
2638 if (UNTAG_Bool(variable[10])) { /*if*/
2639 variable[10] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
2640 variable[10] = CALL_mmbuilder___SignatureBuilder___params(variable[10])(variable[10]) /*SignatureBuilder::params*/;
2641 variable[10] = CALL_abstract_collection___Collection___length(variable[10])(variable[10]) /*AbstractArray::length*/;
2642 variable[11] = CALL_static_type___MMSignature___arity( variable[9] /*isig*/)( variable[9] /*isig*/) /*MMSignature::arity*/;
2643 variable[10] = TAG_Bool((variable[10])!=(variable[11]));
2644 if (UNTAG_Bool(variable[10])) { /*if*/
2645 goto return_label91;
2646 }
2647 variable[10] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
2648 variable[10] = CALL_mmbuilder___SignatureBuilder___params(variable[10])(variable[10]) /*SignatureBuilder::params*/;
2649 variable[10] = CALL_abstract_collection___Collection___iterator(variable[10])(variable[10]) /*AbstractArray::iterator*/;
2650 while (true) { /*for*/
2651 variable[11] = CALL_abstract_collection___Iterator___is_ok(variable[10])(variable[10]) /*ArrayIterator::is_ok*/;
2652 if (!UNTAG_Bool(variable[11])) break; /*for*/
2653 variable[11] = CALL_abstract_collection___Iterator___item(variable[10])(variable[10]) /*ArrayIterator::item*/;
2654 variable[12] = variable[11];
2655 variable[14] = CALL_syntax_base___PParam___position( variable[12] /*p*/)( variable[12] /*p*/) /*PParam::position*/;
2656 variable[14] = CALL_static_type___MMSignature_____bra( variable[9] /*isig*/)( variable[9] /*isig*/, variable[14]) /*MMSignature::[]*/;
2657 variable[13] = variable[14];
2658 CALL_mmbuilder___PParam___stype__eq( variable[12] /*p*/)( variable[12] /*p*/, variable[13] /*t*/) /*PParam::stype=*/;
2659 variable[14] = CALL_syntax_base___PParam___position( variable[12] /*p*/)( variable[12] /*p*/) /*PParam::position*/;
2660 variable[15] = CALL_vararg___MMSignature___vararg_rank( variable[9] /*isig*/)( variable[9] /*isig*/) /*MMSignature::vararg_rank*/;
2661 variable[14] = TAG_Bool((variable[14])==(variable[15]));
2662 if (UNTAG_Bool(variable[14])) { /*if*/
2663 variable[14] = CALL_syntax_base___AbsSyntaxVisitor___type_array( variable[1] /*v*/)( variable[1] /*v*/, variable[13] /*t*/) /*AbsSyntaxVisitor::type_array*/;
2664 variable[13] = variable[14] /*t=*/;
2665 }
2666 variable[14] = CALL_syntax_base___PParam___variable( variable[12] /*p*/)( variable[12] /*p*/) /*PParam::variable*/;
2667 CALL_syntax_base___Variable___stype__eq(variable[14])(variable[14], variable[13] /*t*/) /*Variable::stype=*/;
2668 continue_93: while(0);
2669 CALL_abstract_collection___Iterator___next(variable[10])(variable[10]) /*ArrayIterator::next*/;
2670 }
2671 break_93: while(0);
2672 variable[5] = variable[9] /*isig*/ /*s=*/;
2673 CALL_static_type___MMLocalProperty___signature__eq( variable[2] /*prop*/)( variable[2] /*prop*/, variable[5] /*s*/) /*MMLocalProperty::signature=*/;
2674 }
2675 continue_92: while(0);
2676 CALL_abstract_collection___Iterator___next(variable[6])(variable[6]) /*ArrayIterator::next*/;
2677 }
2678 break_92: while(0);
2679 return_label91: while(false);
2680 tracehead = trace.prev;
2681 return;
2682 }
2683 void mmbuilder___PPropdef___do_and_check_redef(val_t self, val_t param0, val_t param1, val_t param2, val_t param3) {
2684 struct trace_t trace = {NULL, NULL, 826, LOCATE_mmbuilder___PPropdef___do_and_check_redef};
2685 val_t variable[43];
2686 void **closurevariable = NULL;
2687 trace.prev = tracehead; tracehead = &trace;
2688 trace.file = LOCATE_mmbuilder;
2689 variable[0] = self;
2690 variable[1] = param0;
2691 variable[2] = param1;
2692 variable[3] = param2;
2693 variable[4] = param3;
2694 variable[7] = variable[0];
2695 variable[7] = TAG_Bool((variable[7]==NIT_NULL) || VAL_ISA(variable[7], COLOR_AConcreteInitPropdef, ID_AConcreteInitPropdef)) /*cast AConcreteInitPropdef*/;
2696 variable[6] = variable[7];
2697 variable[8] = CALL_abstractmetamodel___MMLocalProperty___global( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::global*/;
2698 variable[7] = variable[8];
2699 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool( variable[3] /*has_redef*/)))) { /*if*/
2700 variable[8] = variable[0];
2701 variable[9] = NEW_Array_array___Array___with_capacity(TAG_Int(5)); /*new Array[String]*/
2702 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: "), TAG_Int(13)); /*new String*/
2703 variable[11] = variable[10];
2704 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[11]) /*AbstractArray::add*/;
2705 variable[12] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
2706 variable[13] = variable[12];
2707 variable[13] = CALL_string___Object___to_s(variable[13])(variable[13]) /*Object::to_s*/;
2708 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[13]) /*AbstractArray::add*/;
2709 variable[14] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)); /*new String*/
2710 variable[15] = variable[14];
2711 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[15]) /*AbstractArray::add*/;
2712 variable[16] = variable[2] /*prop*/;
2713 variable[16] = CALL_string___Object___to_s(variable[16])(variable[16]) /*Object::to_s*/;
2714 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[16]) /*AbstractArray::add*/;
2715 variable[17] = NEW_String_string___String___with_native(BOX_NativeString(" is an inherited property. To redefine it, add the redef keyword."), TAG_Int(65)); /*new String*/
2716 variable[18] = variable[17];
2717 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[18]) /*AbstractArray::add*/;
2718 variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
2719 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[8], variable[9]) /*AbsSyntaxVisitor::error*/;
2720 goto return_label94;
2721 }
2722 variable[8] = CALL_abstractmetamodel___MMGlobalProperty___is_init( variable[7] /*glob*/)( variable[7] /*glob*/) /*MMGlobalProperty::is_init*/;
2723 variable[9] = variable[8];
2724 if (UNTAG_Bool(variable[9])) { /* and */
2725 variable[9] = TAG_Bool(!UNTAG_Bool( variable[6] /*is_init*/));
2726 }
2727 variable[8] = variable[9];
2728 if (UNTAG_Bool(variable[8])) { /*if*/
2729 variable[8] = variable[0];
2730 variable[9] = NEW_Array_array___Array___with_capacity(TAG_Int(5)); /*new Array[String]*/
2731 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: A method "), TAG_Int(22)); /*new String*/
2732 variable[11] = variable[10];
2733 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[11]) /*AbstractArray::add*/;
2734 variable[12] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
2735 variable[13] = variable[12];
2736 variable[13] = CALL_string___Object___to_s(variable[13])(variable[13]) /*Object::to_s*/;
2737 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[13]) /*AbstractArray::add*/;
2738 variable[14] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)); /*new String*/
2739 variable[15] = variable[14];
2740 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[15]) /*AbstractArray::add*/;
2741 variable[16] = variable[2] /*prop*/;
2742 variable[16] = CALL_string___Object___to_s(variable[16])(variable[16]) /*Object::to_s*/;
2743 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[16]) /*AbstractArray::add*/;
2744 variable[17] = NEW_String_string___String___with_native(BOX_NativeString(" cannot redefine a constructor."), TAG_Int(31)); /*new String*/
2745 variable[18] = variable[17];
2746 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[18]) /*AbstractArray::add*/;
2747 variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
2748 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[8], variable[9]) /*AbsSyntaxVisitor::error*/;
2749 } else { /*if*/
2750 variable[8] = CALL_abstractmetamodel___MMGlobalProperty___is_init( variable[7] /*glob*/)( variable[7] /*glob*/) /*MMGlobalProperty::is_init*/;
2751 variable[8] = TAG_Bool(!UNTAG_Bool(variable[8]));
2752 if (UNTAG_Bool(variable[8])) { /* and */
2753 variable[8] = variable[6] /*is_init*/;
2754 }
2755 if (UNTAG_Bool(variable[8])) { /*if*/
2756 variable[8] = variable[0];
2757 variable[9] = NEW_Array_array___Array___with_capacity(TAG_Int(5)); /*new Array[String]*/
2758 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: A constructor "), TAG_Int(27)); /*new String*/
2759 variable[11] = variable[10];
2760 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[11]) /*AbstractArray::add*/;
2761 variable[12] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
2762 variable[13] = variable[12];
2763 variable[13] = CALL_string___Object___to_s(variable[13])(variable[13]) /*Object::to_s*/;
2764 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[13]) /*AbstractArray::add*/;
2765 variable[14] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)); /*new String*/
2766 variable[15] = variable[14];
2767 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[15]) /*AbstractArray::add*/;
2768 variable[16] = variable[2] /*prop*/;
2769 variable[16] = CALL_string___Object___to_s(variable[16])(variable[16]) /*Object::to_s*/;
2770 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[16]) /*AbstractArray::add*/;
2771 variable[17] = NEW_String_string___String___with_native(BOX_NativeString(" cannot redefine a method."), TAG_Int(26)); /*new String*/
2772 variable[18] = variable[17];
2773 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[18]) /*AbstractArray::add*/;
2774 variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
2775 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[8], variable[9]) /*AbsSyntaxVisitor::error*/;
2776 }
2777 }
2778 variable[9] = CALL_static_type___MMLocalProperty___signature( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::signature*/;
2779 variable[8] = variable[9];
2780 variable[9] = CALL_abstractmetamodel___MMLocalProperty___prhe( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::prhe*/;
2781 variable[9] = CALL_partial_order___PartialOrderElement___direct_greaters(variable[9])(variable[9]) /*PartialOrderElement::direct_greaters*/;
2782 variable[9] = CALL_abstract_collection___Collection___iterator(variable[9])(variable[9]) /*AbstractArray::iterator*/;
2783 while (true) { /*for*/
2784 variable[10] = CALL_abstract_collection___Iterator___is_ok(variable[9])(variable[9]) /*ArrayIterator::is_ok*/;
2785 if (!UNTAG_Bool(variable[10])) break; /*for*/
2786 variable[10] = CALL_abstract_collection___Iterator___item(variable[9])(variable[9]) /*ArrayIterator::item*/;
2787 variable[11] = variable[10];
2788 variable[13] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[11] /*i*/)( variable[11] /*i*/) /*MMLocalProperty::local_class*/;
2789 variable[14] = CALL_abstractmetamodel___MMLocalProperty___global( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::global*/;
2790 variable[13] = CALL_abstractmetamodel___MMLocalClass_____bra(variable[13])(variable[13], variable[14]) /*MMLocalClass::[]*/;
2791 variable[12] = variable[13];
2792 variable[14] = CALL_static_type___MMLocalProperty___signature( variable[11] /*i*/)( variable[11] /*i*/) /*MMLocalProperty::signature*/;
2793 variable[15] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
2794 variable[15] = CALL_static_type___MMLocalClass___get_type(variable[15])(variable[15]) /*MMLocalClass::get_type*/;
2795 variable[14] = CALL_static_type___MMSignature___adaptation_to(variable[14])(variable[14], variable[15]) /*MMSignature::adaptation_to*/;
2796 variable[13] = variable[14];
2797 variable[14] = TAG_Bool(( variable[8] /*s*/ == NIT_NULL /*null*/) || (( variable[8] /*s*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*s*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*s*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*s*/)( variable[8] /*s*/, NIT_NULL /*null*/) /*Object::==*/)))));
2798 if (UNTAG_Bool(variable[14])) { /*if*/
2799 variable[14] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
2800 variable[14] = CALL_mmbuilder___SignatureBuilder___params(variable[14])(variable[14]) /*SignatureBuilder::params*/;
2801 variable[14] = CALL_abstract_collection___Collection___length(variable[14])(variable[14]) /*AbstractArray::length*/;
2802 variable[15] = CALL_static_type___MMSignature___arity( variable[13] /*isig*/)( variable[13] /*isig*/) /*MMSignature::arity*/;
2803 variable[14] = TAG_Bool((variable[14])!=(variable[15]));
2804 if (UNTAG_Bool(variable[14])) { /*if*/
2805 variable[14] = variable[0];
2806 variable[15] = NEW_Array_array___Array___with_capacity(TAG_Int(11)); /*new Array[String]*/
2807 variable[16] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: "), TAG_Int(13)); /*new String*/
2808 variable[17] = variable[16];
2809 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[17]) /*AbstractArray::add*/;
2810 variable[18] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
2811 variable[19] = variable[18];
2812 variable[19] = CALL_string___Object___to_s(variable[19])(variable[19]) /*Object::to_s*/;
2813 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[19]) /*AbstractArray::add*/;
2814 variable[20] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)); /*new String*/
2815 variable[21] = variable[20];
2816 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[21]) /*AbstractArray::add*/;
2817 variable[22] = variable[2] /*prop*/;
2818 variable[22] = CALL_string___Object___to_s(variable[22])(variable[22]) /*Object::to_s*/;
2819 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[22]) /*AbstractArray::add*/;
2820 variable[23] = NEW_String_string___String___with_native(BOX_NativeString(" redefines "), TAG_Int(11)); /*new String*/
2821 variable[24] = variable[23];
2822 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[24]) /*AbstractArray::add*/;
2823 variable[25] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[12] /*ip*/)( variable[12] /*ip*/) /*MMLocalProperty::local_class*/;
2824 variable[26] = variable[25];
2825 variable[26] = CALL_string___Object___to_s(variable[26])(variable[26]) /*Object::to_s*/;
2826 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[26]) /*AbstractArray::add*/;
2827 variable[27] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)); /*new String*/
2828 variable[28] = variable[27];
2829 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[28]) /*AbstractArray::add*/;
2830 variable[29] = variable[12] /*ip*/;
2831 variable[29] = CALL_string___Object___to_s(variable[29])(variable[29]) /*Object::to_s*/;
2832 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[29]) /*AbstractArray::add*/;
2833 variable[30] = NEW_String_string___String___with_native(BOX_NativeString(" with "), TAG_Int(6)); /*new String*/
2834 variable[31] = variable[30];
2835 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[31]) /*AbstractArray::add*/;
2836 variable[32] = CALL_static_type___MMSignature___arity( variable[13] /*isig*/)( variable[13] /*isig*/) /*MMSignature::arity*/;
2837 variable[33] = variable[32];
2838 variable[33] = CALL_string___Object___to_s(variable[33])(variable[33]) /*Object::to_s*/;
2839 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[33]) /*AbstractArray::add*/;
2840 variable[34] = NEW_String_string___String___with_native(BOX_NativeString(" parameter(s)."), TAG_Int(14)); /*new String*/
2841 variable[35] = variable[34];
2842 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[35]) /*AbstractArray::add*/;
2843 variable[15] = CALL_string___Object___to_s(variable[15])(variable[15]) /*Object::to_s*/;
2844 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[14], variable[15]) /*AbsSyntaxVisitor::error*/;
2845 goto return_label94;
2846 }
2847 variable[14] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
2848 variable[14] = CALL_mmbuilder___SignatureBuilder___params(variable[14])(variable[14]) /*SignatureBuilder::params*/;
2849 variable[14] = CALL_abstract_collection___Collection___iterator(variable[14])(variable[14]) /*AbstractArray::iterator*/;
2850 while (true) { /*for*/
2851 variable[15] = CALL_abstract_collection___Iterator___is_ok(variable[14])(variable[14]) /*ArrayIterator::is_ok*/;
2852 if (!UNTAG_Bool(variable[15])) break; /*for*/
2853 variable[15] = CALL_abstract_collection___Iterator___item(variable[14])(variable[14]) /*ArrayIterator::item*/;
2854 variable[16] = variable[15];
2855 variable[18] = CALL_syntax_base___PParam___position( variable[16] /*p*/)( variable[16] /*p*/) /*PParam::position*/;
2856 variable[18] = CALL_static_type___MMSignature_____bra( variable[13] /*isig*/)( variable[13] /*isig*/, variable[18]) /*MMSignature::[]*/;
2857 variable[17] = variable[18];
2858 CALL_mmbuilder___PParam___stype__eq( variable[16] /*p*/)( variable[16] /*p*/, variable[17] /*t*/) /*PParam::stype=*/;
2859 variable[18] = CALL_syntax_base___PParam___position( variable[16] /*p*/)( variable[16] /*p*/) /*PParam::position*/;
2860 variable[19] = CALL_vararg___MMSignature___vararg_rank( variable[13] /*isig*/)( variable[13] /*isig*/) /*MMSignature::vararg_rank*/;
2861 variable[18] = TAG_Bool((variable[18])==(variable[19]));
2862 if (UNTAG_Bool(variable[18])) { /*if*/
2863 variable[18] = CALL_syntax_base___AbsSyntaxVisitor___type_array( variable[1] /*v*/)( variable[1] /*v*/, variable[17] /*t*/) /*AbsSyntaxVisitor::type_array*/;
2864 variable[17] = variable[18] /*t=*/;
2865 }
2866 variable[18] = CALL_syntax_base___PParam___variable( variable[16] /*p*/)( variable[16] /*p*/) /*PParam::variable*/;
2867 CALL_syntax_base___Variable___stype__eq(variable[18])(variable[18], variable[17] /*t*/) /*Variable::stype=*/;
2868 continue_96: while(0);
2869 CALL_abstract_collection___Iterator___next(variable[14])(variable[14]) /*ArrayIterator::next*/;
2870 }
2871 break_96: while(0);
2872 variable[8] = variable[13] /*isig*/ /*s=*/;
2873 CALL_static_type___MMLocalProperty___signature__eq( variable[2] /*prop*/)( variable[2] /*prop*/, variable[8] /*s*/) /*MMLocalProperty::signature=*/;
2874 }
2875 variable[14] = CALL_static_type___MMSignature___arity( variable[8] /*s*/)( variable[8] /*s*/) /*MMSignature::arity*/;
2876 variable[15] = CALL_static_type___MMSignature___arity( variable[13] /*isig*/)( variable[13] /*isig*/) /*MMSignature::arity*/;
2877 variable[14] = TAG_Bool((variable[14])!=(variable[15]));
2878 if (UNTAG_Bool(variable[14])) { /*if*/
2879 variable[14] = variable[0];
2880 variable[15] = NEW_Array_array___Array___with_capacity(TAG_Int(11)); /*new Array[String]*/
2881 variable[16] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: "), TAG_Int(13)); /*new String*/
2882 variable[17] = variable[16];
2883 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[17]) /*AbstractArray::add*/;
2884 variable[18] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
2885 variable[19] = variable[18];
2886 variable[19] = CALL_string___Object___to_s(variable[19])(variable[19]) /*Object::to_s*/;
2887 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[19]) /*AbstractArray::add*/;
2888 variable[20] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)); /*new String*/
2889 variable[21] = variable[20];
2890 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[21]) /*AbstractArray::add*/;
2891 variable[22] = variable[2] /*prop*/;
2892 variable[22] = CALL_string___Object___to_s(variable[22])(variable[22]) /*Object::to_s*/;
2893 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[22]) /*AbstractArray::add*/;
2894 variable[23] = NEW_String_string___String___with_native(BOX_NativeString(" redefines "), TAG_Int(11)); /*new String*/
2895 variable[24] = variable[23];
2896 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[24]) /*AbstractArray::add*/;
2897 variable[25] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[12] /*ip*/)( variable[12] /*ip*/) /*MMLocalProperty::local_class*/;
2898 variable[26] = variable[25];
2899 variable[26] = CALL_string___Object___to_s(variable[26])(variable[26]) /*Object::to_s*/;
2900 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[26]) /*AbstractArray::add*/;
2901 variable[27] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)); /*new String*/
2902 variable[28] = variable[27];
2903 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[28]) /*AbstractArray::add*/;
2904 variable[29] = variable[12] /*ip*/;
2905 variable[29] = CALL_string___Object___to_s(variable[29])(variable[29]) /*Object::to_s*/;
2906 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[29]) /*AbstractArray::add*/;
2907 variable[30] = NEW_String_string___String___with_native(BOX_NativeString(" with "), TAG_Int(6)); /*new String*/
2908 variable[31] = variable[30];
2909 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[31]) /*AbstractArray::add*/;
2910 variable[32] = CALL_static_type___MMSignature___arity( variable[13] /*isig*/)( variable[13] /*isig*/) /*MMSignature::arity*/;
2911 variable[33] = variable[32];
2912 variable[33] = CALL_string___Object___to_s(variable[33])(variable[33]) /*Object::to_s*/;
2913 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[33]) /*AbstractArray::add*/;
2914 variable[34] = NEW_String_string___String___with_native(BOX_NativeString(" parameter(s)."), TAG_Int(14)); /*new String*/
2915 variable[35] = variable[34];
2916 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[35]) /*AbstractArray::add*/;
2917 variable[15] = CALL_string___Object___to_s(variable[15])(variable[15]) /*Object::to_s*/;
2918 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[14], variable[15]) /*AbsSyntaxVisitor::error*/;
2919 } else { /*if*/
2920 variable[14] = CALL_static_type___MMSignature___arity( variable[8] /*s*/)( variable[8] /*s*/) /*MMSignature::arity*/;
2921 variable[15] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[14]); /*new Range[Int]*/
2922 variable[14] = variable[15];
2923 variable[14] = CALL_abstract_collection___Collection___iterator(variable[14])(variable[14]) /*Range::iterator*/;
2924 while (true) { /*for*/
2925 variable[15] = CALL_abstract_collection___Iterator___is_ok(variable[14])(variable[14]) /*Iterator::is_ok*/;
2926 if (!UNTAG_Bool(variable[15])) break; /*for*/
2927 variable[15] = CALL_abstract_collection___Iterator___item(variable[14])(variable[14]) /*Iterator::item*/;
2928 variable[16] = variable[15];
2929 variable[17] = CALL_static_type___MMSignature_____bra( variable[8] /*s*/)( variable[8] /*s*/, variable[16] /*i*/) /*MMSignature::[]*/;
2930 variable[18] = CALL_static_type___MMSignature_____bra( variable[13] /*isig*/)( variable[13] /*isig*/, variable[16] /*i*/) /*MMSignature::[]*/;
2931 variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[17] == variable[18]) || ((variable[17] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[17])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[17],variable[18])):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[17])(variable[17], variable[18]) /*Object::==*/)))))));
2932 if (UNTAG_Bool(variable[17])) { /*if*/
2933 variable[17] = variable[0];
2934 variable[18] = NEW_Array_array___Array___with_capacity(TAG_Int(13)); /*new Array[String]*/
2935 variable[19] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: Expected "), TAG_Int(22)); /*new String*/
2936 variable[20] = variable[19];
2937 CALL_abstract_collection___SimpleCollection___add(variable[18])(variable[18], variable[20]) /*AbstractArray::add*/;
2938 variable[21] = CALL_static_type___MMSignature_____bra( variable[13] /*isig*/)( variable[13] /*isig*/, variable[16] /*i*/) /*MMSignature::[]*/;
2939 variable[22] = variable[21];
2940 variable[22] = CALL_string___Object___to_s(variable[22])(variable[22]) /*Object::to_s*/;
2941 CALL_abstract_collection___SimpleCollection___add(variable[18])(variable[18], variable[22]) /*AbstractArray::add*/;
2942 variable[23] = NEW_String_string___String___with_native(BOX_NativeString(" (as in "), TAG_Int(8)); /*new String*/
2943 variable[24] = variable[23];
2944 CALL_abstract_collection___SimpleCollection___add(variable[18])(variable[18], variable[24]) /*AbstractArray::add*/;
2945 variable[25] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[12] /*ip*/)( variable[12] /*ip*/) /*MMLocalProperty::local_class*/;
2946 variable[26] = variable[25];
2947 variable[26] = CALL_string___Object___to_s(variable[26])(variable[26]) /*Object::to_s*/;
2948 CALL_abstract_collection___SimpleCollection___add(variable[18])(variable[18], variable[26]) /*AbstractArray::add*/;
2949 variable[27] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)); /*new String*/
2950 variable[28] = variable[27];
2951 CALL_abstract_collection___SimpleCollection___add(variable[18])(variable[18], variable[28]) /*AbstractArray::add*/;
2952 variable[29] = variable[12] /*ip*/;
2953 variable[29] = CALL_string___Object___to_s(variable[29])(variable[29]) /*Object::to_s*/;
2954 CALL_abstract_collection___SimpleCollection___add(variable[18])(variable[18], variable[29]) /*AbstractArray::add*/;
2955 variable[30] = NEW_String_string___String___with_native(BOX_NativeString("), got "), TAG_Int(7)); /*new String*/
2956 variable[31] = variable[30];
2957 CALL_abstract_collection___SimpleCollection___add(variable[18])(variable[18], variable[31]) /*AbstractArray::add*/;
2958 variable[32] = CALL_static_type___MMSignature_____bra( variable[8] /*s*/)( variable[8] /*s*/, variable[16] /*i*/) /*MMSignature::[]*/;
2959 variable[33] = variable[32];
2960 variable[33] = CALL_string___Object___to_s(variable[33])(variable[33]) /*Object::to_s*/;
2961 CALL_abstract_collection___SimpleCollection___add(variable[18])(variable[18], variable[33]) /*AbstractArray::add*/;
2962 variable[34] = NEW_String_string___String___with_native(BOX_NativeString(" in "), TAG_Int(4)); /*new String*/
2963 variable[35] = variable[34];
2964 CALL_abstract_collection___SimpleCollection___add(variable[18])(variable[18], variable[35]) /*AbstractArray::add*/;
2965 variable[36] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
2966 variable[37] = variable[36];
2967 variable[37] = CALL_string___Object___to_s(variable[37])(variable[37]) /*Object::to_s*/;
2968 CALL_abstract_collection___SimpleCollection___add(variable[18])(variable[18], variable[37]) /*AbstractArray::add*/;
2969 variable[38] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)); /*new String*/
2970 variable[39] = variable[38];
2971 CALL_abstract_collection___SimpleCollection___add(variable[18])(variable[18], variable[39]) /*AbstractArray::add*/;
2972 variable[40] = variable[2] /*prop*/;
2973 variable[40] = CALL_string___Object___to_s(variable[40])(variable[40]) /*Object::to_s*/;
2974 CALL_abstract_collection___SimpleCollection___add(variable[18])(variable[18], variable[40]) /*AbstractArray::add*/;
2975 variable[41] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/
2976 variable[42] = variable[41];
2977 CALL_abstract_collection___SimpleCollection___add(variable[18])(variable[18], variable[42]) /*AbstractArray::add*/;
2978 variable[18] = CALL_string___Object___to_s(variable[18])(variable[18]) /*Object::to_s*/;
2979 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[17], variable[18]) /*AbsSyntaxVisitor::error*/;
2980 }
2981 continue_97: while(0);
2982 CALL_abstract_collection___Iterator___next(variable[14])(variable[14]) /*Iterator::next*/;
2983 }
2984 break_97: while(0);
2985 }
2986 variable[15] = CALL_static_type___MMSignature___return_type( variable[8] /*s*/)( variable[8] /*s*/) /*MMSignature::return_type*/;
2987 variable[14] = variable[15];
2988 variable[16] = CALL_static_type___MMSignature___return_type( variable[13] /*isig*/)( variable[13] /*isig*/) /*MMSignature::return_type*/;
2989 variable[15] = variable[16];
2990 variable[16] = TAG_Bool(( variable[14] /*srt*/ == NIT_NULL /*null*/) || (( variable[14] /*srt*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*srt*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*srt*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*srt*/)( variable[14] /*srt*/, NIT_NULL /*null*/) /*Object::==*/)))));
2991 variable[17] = variable[16];
2992 if (UNTAG_Bool(variable[17])) { /* and */
2993 variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*isrt*/ == NIT_NULL /*null*/) || (( variable[15] /*isrt*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*isrt*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*isrt*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*isrt*/)( variable[15] /*isrt*/, NIT_NULL /*null*/) /*Object::==*/)))))));
2994 }
2995 variable[16] = variable[17];
2996 if (UNTAG_Bool(variable[16])) { /*if*/
2997 variable[16] = variable[0];
2998 variable[17] = NEW_Array_array___Array___with_capacity(TAG_Int(9)); /*new Array[String]*/
2999 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: The procedure "), TAG_Int(27)); /*new String*/
3000 variable[19] = variable[18];
3001 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[19]) /*AbstractArray::add*/;
3002 variable[20] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
3003 variable[21] = variable[20];
3004 variable[21] = CALL_string___Object___to_s(variable[21])(variable[21]) /*Object::to_s*/;
3005 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[21]) /*AbstractArray::add*/;
3006 variable[22] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)); /*new String*/
3007 variable[23] = variable[22];
3008 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[23]) /*AbstractArray::add*/;
3009 variable[24] = variable[2] /*prop*/;
3010 variable[24] = CALL_string___Object___to_s(variable[24])(variable[24]) /*Object::to_s*/;
3011 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[24]) /*AbstractArray::add*/;
3012 variable[25] = NEW_String_string___String___with_native(BOX_NativeString(" redefines the function "), TAG_Int(24)); /*new String*/
3013 variable[26] = variable[25];
3014 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[26]) /*AbstractArray::add*/;
3015 variable[27] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[12] /*ip*/)( variable[12] /*ip*/) /*MMLocalProperty::local_class*/;
3016 variable[28] = variable[27];
3017 variable[28] = CALL_string___Object___to_s(variable[28])(variable[28]) /*Object::to_s*/;
3018 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[28]) /*AbstractArray::add*/;
3019 variable[29] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)); /*new String*/
3020 variable[30] = variable[29];
3021 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[30]) /*AbstractArray::add*/;
3022 variable[31] = variable[12] /*ip*/;
3023 variable[31] = CALL_string___Object___to_s(variable[31])(variable[31]) /*Object::to_s*/;
3024 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[31]) /*AbstractArray::add*/;
3025 variable[32] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/
3026 variable[33] = variable[32];
3027 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[33]) /*AbstractArray::add*/;
3028 variable[17] = CALL_string___Object___to_s(variable[17])(variable[17]) /*Object::to_s*/;
3029 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[16], variable[17]) /*AbsSyntaxVisitor::error*/;
3030 } else { /*if*/
3031 variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*srt*/ == NIT_NULL /*null*/) || (( variable[14] /*srt*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*srt*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*srt*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*srt*/)( variable[14] /*srt*/, NIT_NULL /*null*/) /*Object::==*/)))))));
3032 variable[17] = variable[16];
3033 if (UNTAG_Bool(variable[17])) { /* and */
3034 variable[17] = TAG_Bool(( variable[15] /*isrt*/ == NIT_NULL /*null*/) || (( variable[15] /*isrt*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*isrt*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*isrt*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*isrt*/)( variable[15] /*isrt*/, NIT_NULL /*null*/) /*Object::==*/)))));
3035 }
3036 variable[16] = variable[17];
3037 if (UNTAG_Bool(variable[16])) { /*if*/
3038 variable[16] = variable[0];
3039 variable[17] = NEW_Array_array___Array___with_capacity(TAG_Int(9)); /*new Array[String]*/
3040 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: The function "), TAG_Int(26)); /*new String*/
3041 variable[19] = variable[18];
3042 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[19]) /*AbstractArray::add*/;
3043 variable[20] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
3044 variable[21] = variable[20];
3045 variable[21] = CALL_string___Object___to_s(variable[21])(variable[21]) /*Object::to_s*/;
3046 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[21]) /*AbstractArray::add*/;
3047 variable[22] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)); /*new String*/
3048 variable[23] = variable[22];
3049 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[23]) /*AbstractArray::add*/;
3050 variable[24] = variable[2] /*prop*/;
3051 variable[24] = CALL_string___Object___to_s(variable[24])(variable[24]) /*Object::to_s*/;
3052 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[24]) /*AbstractArray::add*/;
3053 variable[25] = NEW_String_string___String___with_native(BOX_NativeString(" redefines the procedure "), TAG_Int(25)); /*new String*/
3054 variable[26] = variable[25];
3055 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[26]) /*AbstractArray::add*/;
3056 variable[27] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[12] /*ip*/)( variable[12] /*ip*/) /*MMLocalProperty::local_class*/;
3057 variable[28] = variable[27];
3058 variable[28] = CALL_string___Object___to_s(variable[28])(variable[28]) /*Object::to_s*/;
3059 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[28]) /*AbstractArray::add*/;
3060 variable[29] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)); /*new String*/
3061 variable[30] = variable[29];
3062 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[30]) /*AbstractArray::add*/;
3063 variable[31] = variable[12] /*ip*/;
3064 variable[31] = CALL_string___Object___to_s(variable[31])(variable[31]) /*Object::to_s*/;
3065 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[31]) /*AbstractArray::add*/;
3066 variable[32] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/
3067 variable[33] = variable[32];
3068 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[33]) /*AbstractArray::add*/;
3069 variable[17] = CALL_string___Object___to_s(variable[17])(variable[17]) /*Object::to_s*/;
3070 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[16], variable[17]) /*AbsSyntaxVisitor::error*/;
3071 } else { /*if*/
3072 variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*srt*/ == NIT_NULL /*null*/) || (( variable[14] /*srt*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*srt*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*srt*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*srt*/)( variable[14] /*srt*/, NIT_NULL /*null*/) /*Object::==*/)))))));
3073 variable[17] = variable[16];
3074 if (UNTAG_Bool(variable[17])) { /* and */
3075 variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*isrt*/ == NIT_NULL /*null*/) || (( variable[15] /*isrt*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*isrt*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*isrt*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*isrt*/)( variable[15] /*isrt*/, NIT_NULL /*null*/) /*Object::==*/)))))));
3076 }
3077 variable[16] = variable[17];
3078 variable[17] = variable[16];
3079 if (UNTAG_Bool(variable[17])) { /* and */
3080 variable[17] = CALL_static_type___MMType_____l( variable[14] /*srt*/)( variable[14] /*srt*/, variable[15] /*isrt*/) /*MMType::<*/;
3081 variable[17] = TAG_Bool(!UNTAG_Bool(variable[17]));
3082 }
3083 variable[16] = variable[17];
3084 if (UNTAG_Bool(variable[16])) { /*if*/
3085 variable[16] = variable[0];
3086 variable[17] = NEW_Array_array___Array___with_capacity(TAG_Int(13)); /*new Array[String]*/
3087 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: Expected "), TAG_Int(22)); /*new String*/
3088 variable[19] = variable[18];
3089 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[19]) /*AbstractArray::add*/;
3090 variable[20] = variable[15] /*isrt*/;
3091 variable[20] = CALL_string___Object___to_s(variable[20])(variable[20]) /*Object::to_s*/;
3092 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[20]) /*AbstractArray::add*/;
3093 variable[21] = NEW_String_string___String___with_native(BOX_NativeString(" (as in "), TAG_Int(8)); /*new String*/
3094 variable[22] = variable[21];
3095 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[22]) /*AbstractArray::add*/;
3096 variable[23] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[12] /*ip*/)( variable[12] /*ip*/) /*MMLocalProperty::local_class*/;
3097 variable[24] = variable[23];
3098 variable[24] = CALL_string___Object___to_s(variable[24])(variable[24]) /*Object::to_s*/;
3099 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[24]) /*AbstractArray::add*/;
3100 variable[25] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)); /*new String*/
3101 variable[26] = variable[25];
3102 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[26]) /*AbstractArray::add*/;
3103 variable[27] = variable[12] /*ip*/;
3104 variable[27] = CALL_string___Object___to_s(variable[27])(variable[27]) /*Object::to_s*/;
3105 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[27]) /*AbstractArray::add*/;
3106 variable[28] = NEW_String_string___String___with_native(BOX_NativeString("), got "), TAG_Int(7)); /*new String*/
3107 variable[29] = variable[28];
3108 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[29]) /*AbstractArray::add*/;
3109 variable[30] = variable[14] /*srt*/;
3110 variable[30] = CALL_string___Object___to_s(variable[30])(variable[30]) /*Object::to_s*/;
3111 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[30]) /*AbstractArray::add*/;
3112 variable[31] = NEW_String_string___String___with_native(BOX_NativeString(" in "), TAG_Int(4)); /*new String*/
3113 variable[32] = variable[31];
3114 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[32]) /*AbstractArray::add*/;
3115 variable[33] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
3116 variable[34] = variable[33];
3117 variable[34] = CALL_string___Object___to_s(variable[34])(variable[34]) /*Object::to_s*/;
3118 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[34]) /*AbstractArray::add*/;
3119 variable[35] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)); /*new String*/
3120 variable[36] = variable[35];
3121 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[36]) /*AbstractArray::add*/;
3122 variable[37] = variable[2] /*prop*/;
3123 variable[37] = CALL_string___Object___to_s(variable[37])(variable[37]) /*Object::to_s*/;
3124 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[37]) /*AbstractArray::add*/;
3125 variable[38] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/
3126 variable[39] = variable[38];
3127 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[39]) /*AbstractArray::add*/;
3128 variable[17] = CALL_string___Object___to_s(variable[17])(variable[17]) /*Object::to_s*/;
3129 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[16], variable[17]) /*AbsSyntaxVisitor::error*/;
3130 } else { /*if*/
3131 variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*srt*/ == NIT_NULL /*null*/) || (( variable[14] /*srt*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*srt*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*srt*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*srt*/)( variable[14] /*srt*/, NIT_NULL /*null*/) /*Object::==*/)))))));
3132 variable[17] = variable[16];
3133 if (UNTAG_Bool(variable[17])) { /* and */
3134 variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*isrt*/ == NIT_NULL /*null*/) || (( variable[15] /*isrt*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*isrt*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*isrt*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*isrt*/)( variable[15] /*isrt*/, NIT_NULL /*null*/) /*Object::==*/)))))));
3135 }
3136 variable[16] = variable[17];
3137 variable[17] = variable[16];
3138 if (UNTAG_Bool(variable[17])) { /* and */
3139 variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*srt*/ == variable[15] /*isrt*/) || (( variable[14] /*srt*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*srt*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*srt*/, variable[15] /*isrt*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*srt*/)( variable[14] /*srt*/, variable[15] /*isrt*/) /*Object::==*/)))))));
3140 }
3141 variable[16] = variable[17];
3142 variable[17] = variable[16];
3143 if (UNTAG_Bool(variable[17])) { /* and */
3144 variable[17] = TAG_Bool(( variable[2] /*prop*/==NIT_NULL) || VAL_ISA( variable[2] /*prop*/, COLOR_MMAttribute, ID_MMAttribute)) /*cast MMAttribute*/;
3145 }
3146 variable[16] = variable[17];
3147 if (UNTAG_Bool(variable[16])) { /*if*/
3148 variable[16] = variable[0];
3149 variable[17] = NEW_Array_array___Array___with_capacity(TAG_Int(13)); /*new Array[String]*/
3150 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("Redef warning: Expected "), TAG_Int(24)); /*new String*/
3151 variable[19] = variable[18];
3152 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[19]) /*AbstractArray::add*/;
3153 variable[20] = variable[15] /*isrt*/;
3154 variable[20] = CALL_string___Object___to_s(variable[20])(variable[20]) /*Object::to_s*/;
3155 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[20]) /*AbstractArray::add*/;
3156 variable[21] = NEW_String_string___String___with_native(BOX_NativeString(" (as in "), TAG_Int(8)); /*new String*/
3157 variable[22] = variable[21];
3158 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[22]) /*AbstractArray::add*/;
3159 variable[23] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[12] /*ip*/)( variable[12] /*ip*/) /*MMLocalProperty::local_class*/;
3160 variable[24] = variable[23];
3161 variable[24] = CALL_string___Object___to_s(variable[24])(variable[24]) /*Object::to_s*/;
3162 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[24]) /*AbstractArray::add*/;
3163 variable[25] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)); /*new String*/
3164 variable[26] = variable[25];
3165 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[26]) /*AbstractArray::add*/;
3166 variable[27] = variable[12] /*ip*/;
3167 variable[27] = CALL_string___Object___to_s(variable[27])(variable[27]) /*Object::to_s*/;
3168 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[27]) /*AbstractArray::add*/;
3169 variable[28] = NEW_String_string___String___with_native(BOX_NativeString("), got "), TAG_Int(7)); /*new String*/
3170 variable[29] = variable[28];
3171 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[29]) /*AbstractArray::add*/;
3172 variable[30] = variable[14] /*srt*/;
3173 variable[30] = CALL_string___Object___to_s(variable[30])(variable[30]) /*Object::to_s*/;
3174 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[30]) /*AbstractArray::add*/;
3175 variable[31] = NEW_String_string___String___with_native(BOX_NativeString(" in "), TAG_Int(4)); /*new String*/
3176 variable[32] = variable[31];
3177 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[32]) /*AbstractArray::add*/;
3178 variable[33] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
3179 variable[34] = variable[33];
3180 variable[34] = CALL_string___Object___to_s(variable[34])(variable[34]) /*Object::to_s*/;
3181 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[34]) /*AbstractArray::add*/;
3182 variable[35] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)); /*new String*/
3183 variable[36] = variable[35];
3184 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[36]) /*AbstractArray::add*/;
3185 variable[37] = variable[2] /*prop*/;
3186 variable[37] = CALL_string___Object___to_s(variable[37])(variable[37]) /*Object::to_s*/;
3187 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[37]) /*AbstractArray::add*/;
3188 variable[38] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/
3189 variable[39] = variable[38];
3190 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[39]) /*AbstractArray::add*/;
3191 variable[17] = CALL_string___Object___to_s(variable[17])(variable[17]) /*Object::to_s*/;
3192 CALL_syntax_base___AbsSyntaxVisitor___warning( variable[1] /*v*/)( variable[1] /*v*/, variable[16], variable[17]) /*AbsSyntaxVisitor::warning*/;
3193 }
3194 }
3195 }
3196 }
3197 continue_95: while(0);
3198 CALL_abstract_collection___Iterator___next(variable[9])(variable[9]) /*ArrayIterator::next*/;
3199 }
3200 break_95: while(0);
3201 variable[9] = TAG_Bool(( variable[4] /*visibility_level*/)!=( TAG_Int(1)));
3202 variable[10] = variable[9];
3203 if (UNTAG_Bool(variable[10])) { /* and */
3204 variable[10] = CALL_abstractmetamodel___MMGlobalProperty___visibility_level( variable[7] /*glob*/)( variable[7] /*glob*/) /*MMGlobalProperty::visibility_level*/;
3205 variable[10] = TAG_Bool((variable[10])!=( variable[4] /*visibility_level*/));
3206 }
3207 variable[9] = variable[10];
3208 if (UNTAG_Bool(variable[9])) { /*if*/
3209 variable[9] = variable[0];
3210 variable[10] = NEW_Array_array___Array___with_capacity(TAG_Int(5)); /*new Array[String]*/
3211 variable[11] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: "), TAG_Int(13)); /*new String*/
3212 variable[12] = variable[11];
3213 CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[12]) /*AbstractArray::add*/;
3214 variable[13] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
3215 variable[14] = variable[13];
3216 variable[14] = CALL_string___Object___to_s(variable[14])(variable[14]) /*Object::to_s*/;
3217 CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[14]) /*AbstractArray::add*/;
3218 variable[15] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)); /*new String*/
3219 variable[16] = variable[15];
3220 CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[16]) /*AbstractArray::add*/;
3221 variable[17] = variable[2] /*prop*/;
3222 variable[17] = CALL_string___Object___to_s(variable[17])(variable[17]) /*Object::to_s*/;
3223 CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[17]) /*AbstractArray::add*/;
3224 variable[18] = NEW_String_string___String___with_native(BOX_NativeString(" redefinition cannot change visibility."), TAG_Int(39)); /*new String*/
3225 variable[19] = variable[18];
3226 CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[19]) /*AbstractArray::add*/;
3227 variable[10] = CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/;
3228 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[9], variable[10]) /*AbsSyntaxVisitor::error*/;
3229 }
3230 variable[9] = variable[0];
3231 variable[10] = CALL_syntax_base___AbsSyntaxVisitor___module( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::module*/;
3232 CALL_syntax_base___MMGlobalProperty___check_visibility( variable[7] /*glob*/)( variable[7] /*glob*/, variable[1] /*v*/, variable[9], variable[10], TAG_Bool(true)) /*MMGlobalProperty::check_visibility*/;
3233 return_label94: while(false);
3234 tracehead = trace.prev;
3235 return;
3236 }
3237 void mmbuilder___AAttrPropdef___accept_abs_syntax_visitor(val_t self, val_t param0) {
3238 struct trace_t trace = {NULL, NULL, 953, LOCATE_mmbuilder___AAttrPropdef___accept_abs_syntax_visitor};
3239 val_t variable[4];
3240 void **closurevariable = NULL;
3241 trace.prev = tracehead; tracehead = &trace;
3242 trace.file = LOCATE_mmbuilder;
3243 variable[0] = self;
3244 variable[1] = param0;
3245 variable[3] = variable[0];
3246 variable[3] = CALL_syntax_base___AAttrPropdef___prop(variable[3])(variable[3]) /*AAttrPropdef::prop*/;
3247 CALL_syntax_base___AbsSyntaxVisitor___local_property__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*AbsSyntaxVisitor::local_property=*/;
3248 CALL_SUPER_mmbuilder___AAttrPropdef___accept_abs_syntax_visitor(variable[0])(variable[0], variable[1]) /*super AAttrPropdef::accept_abs_syntax_visitor*/;
3249 CALL_syntax_base___AbsSyntaxVisitor___local_property__eq( variable[1] /*v*/)( variable[1] /*v*/, NIT_NULL /*null*/) /*AbsSyntaxVisitor::local_property=*/;
3250 return_label98: while(false);
3251 tracehead = trace.prev;
3252 return;
3253 }
3254 val_t mmbuilder___AAttrPropdef___prop(val_t self) {
3255 struct trace_t trace = {NULL, NULL, 904, LOCATE_mmbuilder___AAttrPropdef___prop};
3256 val_t *variable = NULL;
3257 void **closurevariable = NULL;
3258 trace.prev = tracehead; tracehead = &trace;
3259 trace.file = LOCATE_mmbuilder;
3260 tracehead = trace.prev;
3261 return ATTR_mmbuilder___AAttrPropdef____prop( self) /*AAttrPropdef::_prop*/;
3262 }
3263 val_t mmbuilder___AAttrPropdef___readmethod(val_t self) {
3264 struct trace_t trace = {NULL, NULL, 902, LOCATE_mmbuilder___AAttrPropdef___readmethod};
3265 val_t *variable = NULL;
3266 void **closurevariable = NULL;
3267 trace.prev = tracehead; tracehead = &trace;
3268 trace.file = LOCATE_mmbuilder;
3269 tracehead = trace.prev;
3270 return ATTR_mmbuilder___AAttrPropdef____readmethod( self) /*AAttrPropdef::_readmethod*/;
3271 }
3272 val_t mmbuilder___AAttrPropdef___writemethod(val_t self) {
3273 struct trace_t trace = {NULL, NULL, 903, LOCATE_mmbuilder___AAttrPropdef___writemethod};
3274 val_t *variable = NULL;
3275 void **closurevariable = NULL;
3276 trace.prev = tracehead; tracehead = &trace;
3277 trace.file = LOCATE_mmbuilder;
3278 tracehead = trace.prev;
3279 return ATTR_mmbuilder___AAttrPropdef____writemethod( self) /*AAttrPropdef::_writemethod*/;
3280 }
3281 void mmbuilder___AAttrPropdef___accept_property_builder(val_t self, val_t param0) {
3282 struct trace_t trace = {NULL, NULL, 906, LOCATE_mmbuilder___AAttrPropdef___accept_property_builder};
3283 val_t variable[9];
3284 void **closurevariable = NULL;
3285 trace.prev = tracehead; tracehead = &trace;
3286 trace.file = LOCATE_mmbuilder;
3287 variable[0] = self;
3288 variable[1] = param0;
3289 CALL_SUPER_mmbuilder___AAttrPropdef___accept_property_builder(variable[0])(variable[0], variable[1]) /*super AAttrPropdef::accept_property_builder*/;
3290 variable[4] = variable[0];
3291 variable[4] = CALL_parser_nodes___AAttrPropdef___n_id(variable[4])(variable[4]) /*AAttrPropdef::n_id*/;
3292 variable[4] = CALL_syntax_base___Token___to_symbol(variable[4])(variable[4]) /*Token::to_symbol*/;
3293 variable[3] = variable[4];
3294 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
3295 variable[6] = variable[0];
3296 variable[7] = NEW_MMSrcAttribute_syntax_base___MMSrcAttribute___init( variable[3] /*name*/, variable[5], variable[6]); /*new MMSrcAttribute*/
3297 variable[5] = variable[7];
3298 variable[4] = variable[5];
3299 variable[5] = variable[0];
3300 ATTR_mmbuilder___AAttrPropdef____prop(variable[5]) /*AAttrPropdef::_prop*/ = variable[4] /*prop*/;
3301 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
3302 CALL_mmbuilder___MMSrcLocalClass___add_src_local_property(variable[5])(variable[5], variable[1] /*v*/, variable[4] /*prop*/) /*MMSrcLocalClass::add_src_local_property*/;
3303 variable[5] = variable[0];
3304 variable[5] = CALL_parser_nodes___AAttrPropdef___n_readable(variable[5])(variable[5]) /*AAttrPropdef::n_readable*/;
3305 variable[5] = TAG_Bool(!UNTAG_Bool(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::==*/)))))));
3306 if (UNTAG_Bool(variable[5])) { /*if*/
3307 variable[5] = variable[0];
3308 variable[5] = CALL_parser_nodes___AAttrPropdef___n_id(variable[5])(variable[5]) /*AAttrPropdef::n_id*/;
3309 variable[5] = CALL_lexer___Token___text(variable[5])(variable[5]) /*Token::text*/;
3310 variable[5] = CALL_string___String___substring_from(variable[5])(variable[5], TAG_Int(1)) /*String::substring_from*/;
3311 variable[5] = CALL_symbol___String___to_symbol(variable[5])(variable[5]) /*String::to_symbol*/;
3312 variable[3] = variable[5] /*name=*/;
3313 variable[5] = variable[0];
3314 variable[6] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
3315 variable[7] = variable[0];
3316 variable[8] = NEW_MMReadImplementationMethod_syntax_base___MMReadImplementationMethod___init( variable[3] /*name*/, variable[6], variable[7]); /*new MMReadImplementationMethod*/
3317 variable[6] = variable[8];
3318 ATTR_mmbuilder___AAttrPropdef____readmethod(variable[5]) /*AAttrPropdef::_readmethod*/ = variable[6];
3319 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
3320 variable[6] = variable[0];
3321 variable[6] = ATTR_mmbuilder___AAttrPropdef____readmethod(variable[6]) /*AAttrPropdef::_readmethod*/;
3322 CALL_mmbuilder___MMSrcLocalClass___add_src_local_property(variable[5])(variable[5], variable[1] /*v*/, variable[6]) /*MMSrcLocalClass::add_src_local_property*/;
3323 }
3324 variable[5] = variable[0];
3325 variable[5] = CALL_parser_nodes___AAttrPropdef___n_writable(variable[5])(variable[5]) /*AAttrPropdef::n_writable*/;
3326 variable[5] = TAG_Bool(!UNTAG_Bool(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::==*/)))))));
3327 if (UNTAG_Bool(variable[5])) { /*if*/
3328 variable[5] = variable[0];
3329 variable[5] = CALL_parser_nodes___AAttrPropdef___n_id(variable[5])(variable[5]) /*AAttrPropdef::n_id*/;
3330 variable[5] = CALL_lexer___Token___text(variable[5])(variable[5]) /*Token::text*/;
3331 variable[5] = CALL_string___String___substring_from(variable[5])(variable[5], TAG_Int(1)) /*String::substring_from*/;
3332 variable[6] = NEW_String_string___String___with_native(BOX_NativeString("="), TAG_Int(1)); /*new String*/
3333 variable[5] = CALL_string___String_____plus(variable[5])(variable[5], variable[6]) /*String::+*/;
3334 variable[5] = CALL_symbol___String___to_symbol(variable[5])(variable[5]) /*String::to_symbol*/;
3335 variable[3] = variable[5] /*name=*/;
3336 variable[5] = variable[0];
3337 variable[6] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
3338 variable[7] = variable[0];
3339 variable[8] = NEW_MMWriteImplementationMethod_syntax_base___MMWriteImplementationMethod___init( variable[3] /*name*/, variable[6], variable[7]); /*new MMWriteImplementationMethod*/
3340 variable[6] = variable[8];
3341 ATTR_mmbuilder___AAttrPropdef____writemethod(variable[5]) /*AAttrPropdef::_writemethod*/ = variable[6];
3342 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
3343 variable[6] = variable[0];
3344 variable[6] = ATTR_mmbuilder___AAttrPropdef____writemethod(variable[6]) /*AAttrPropdef::_writemethod*/;
3345 CALL_mmbuilder___MMSrcLocalClass___add_src_local_property(variable[5])(variable[5], variable[1] /*v*/, variable[6]) /*MMSrcLocalClass::add_src_local_property*/;
3346 }
3347 return_label99: while(false);
3348 tracehead = trace.prev;
3349 return;
3350 }
3351 void mmbuilder___AAttrPropdef___accept_property_verifier(val_t self, val_t param0) {
3352 struct trace_t trace = {NULL, NULL, 926, LOCATE_mmbuilder___AAttrPropdef___accept_property_verifier};
3353 val_t variable[16];
3354 void **closurevariable = NULL;
3355 trace.prev = tracehead; tracehead = &trace;
3356 trace.file = LOCATE_mmbuilder;
3357 variable[0] = self;
3358 variable[1] = param0;
3359 CALL_SUPER_mmbuilder___AAttrPropdef___accept_property_verifier(variable[0])(variable[0], variable[1]) /*super AAttrPropdef::accept_property_verifier*/;
3360 /*variable[3] is variable t*/
3361 variable[4] = variable[0];
3362 variable[4] = CALL_parser_nodes___AAttrPropdef___n_type(variable[4])(variable[4]) /*AAttrPropdef::n_type*/;
3363 variable[4] = TAG_Bool(!UNTAG_Bool(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::==*/)))))));
3364 if (UNTAG_Bool(variable[4])) { /*if*/
3365 variable[4] = variable[0];
3366 variable[4] = CALL_parser_nodes___AAttrPropdef___n_type(variable[4])(variable[4]) /*AAttrPropdef::n_type*/;
3367 variable[4] = CALL_syntax_base___PType___get_stype(variable[4])(variable[4], variable[1] /*v*/) /*PType::get_stype*/;
3368 variable[3] = variable[4] /*t=*/;
3369 } else { /*if*/
3370 variable[4] = variable[0];
3371 variable[5] = NEW_Array_array___Array___with_capacity(TAG_Int(5)); /*new Array[String]*/
3372 variable[6] = NEW_String_string___String___with_native(BOX_NativeString("Not yet implemented: Attribute definition "), TAG_Int(42)); /*new String*/
3373 variable[7] = variable[6];
3374 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[7]) /*AbstractArray::add*/;
3375 variable[8] = variable[0];
3376 variable[8] = ATTR_mmbuilder___AAttrPropdef____prop(variable[8]) /*AAttrPropdef::_prop*/;
3377 variable[8] = CALL_abstractmetamodel___MMLocalProperty___local_class(variable[8])(variable[8]) /*MMLocalProperty::local_class*/;
3378 variable[9] = variable[8];
3379 variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
3380 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[9]) /*AbstractArray::add*/;
3381 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)); /*new String*/
3382 variable[11] = variable[10];
3383 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[11]) /*AbstractArray::add*/;
3384 variable[12] = variable[0];
3385 variable[12] = ATTR_mmbuilder___AAttrPropdef____prop(variable[12]) /*AAttrPropdef::_prop*/;
3386 variable[13] = variable[12];
3387 variable[13] = CALL_string___Object___to_s(variable[13])(variable[13]) /*Object::to_s*/;
3388 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[13]) /*AbstractArray::add*/;
3389 variable[14] = NEW_String_string___String___with_native(BOX_NativeString(" requires an explicit type."), TAG_Int(27)); /*new String*/
3390 variable[15] = variable[14];
3391 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[15]) /*AbstractArray::add*/;
3392 variable[5] = CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/;
3393 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[4], variable[5]) /*AbsSyntaxVisitor::error*/;
3394 goto return_label100;
3395 }
3396 variable[5] = NEW_Array_array___Array___init(); /*new Array[MMType]*/
3397 variable[6] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
3398 variable[6] = CALL_static_type___MMLocalClass___get_type(variable[6])(variable[6]) /*MMLocalClass::get_type*/;
3399 variable[7] = NEW_MMSignature_static_type___MMSignature___init(variable[5], variable[3] /*t*/, variable[6]); /*new MMSignature*/
3400 variable[5] = variable[7];
3401 variable[4] = variable[5];
3402 variable[5] = variable[0];
3403 variable[5] = ATTR_mmbuilder___AAttrPropdef____prop(variable[5]) /*AAttrPropdef::_prop*/;
3404 CALL_static_type___MMLocalProperty___signature__eq(variable[5])(variable[5], variable[4] /*signature*/) /*MMLocalProperty::signature=*/;
3405 variable[6] = variable[0];
3406 variable[6] = CALL_parser_nodes___AAttrPropdef___n_visibility(variable[6])(variable[6]) /*AAttrPropdef::n_visibility*/;
3407 variable[6] = CALL_mmbuilder___PVisibility___level(variable[6])(variable[6]) /*PVisibility::level*/;
3408 variable[5] = variable[6];
3409 variable[6] = variable[0];
3410 variable[7] = variable[0];
3411 variable[7] = ATTR_mmbuilder___AAttrPropdef____prop(variable[7]) /*AAttrPropdef::_prop*/;
3412 variable[8] = variable[0];
3413 variable[8] = CALL_parser_nodes___AAttrPropdef___n_kwredef(variable[8])(variable[8]) /*AAttrPropdef::n_kwredef*/;
3414 variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[8] == NIT_NULL /*null*/) || ((variable[8] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[8])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[8], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[8])(variable[8], NIT_NULL /*null*/) /*Object::==*/)))))));
3415 CALL_mmbuilder___PPropdef___process_and_check(variable[6])(variable[6], variable[1] /*v*/, variable[7], variable[8], variable[5] /*visibility_level*/) /*PPropdef::process_and_check*/;
3416 variable[6] = variable[0];
3417 variable[6] = CALL_parser_nodes___AAttrPropdef___n_readable(variable[6])(variable[6]) /*AAttrPropdef::n_readable*/;
3418 variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[6] == NIT_NULL /*null*/) || ((variable[6] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[6])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[6], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[6])(variable[6], NIT_NULL /*null*/) /*Object::==*/)))))));
3419 if (UNTAG_Bool(variable[6])) { /*if*/
3420 variable[6] = variable[0];
3421 variable[6] = ATTR_mmbuilder___AAttrPropdef____readmethod(variable[6]) /*AAttrPropdef::_readmethod*/;
3422 CALL_static_type___MMLocalProperty___signature__eq(variable[6])(variable[6], variable[4] /*signature*/) /*MMLocalProperty::signature=*/;
3423 variable[6] = variable[0];
3424 variable[7] = variable[0];
3425 variable[7] = ATTR_mmbuilder___AAttrPropdef____readmethod(variable[7]) /*AAttrPropdef::_readmethod*/;
3426 variable[8] = variable[0];
3427 variable[8] = CALL_parser_nodes___AAttrPropdef___n_readable(variable[8])(variable[8]) /*AAttrPropdef::n_readable*/;
3428 variable[8] = CALL_parser_nodes___PAble___n_kwredef(variable[8])(variable[8]) /*PAble::n_kwredef*/;
3429 variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[8] == NIT_NULL /*null*/) || ((variable[8] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[8])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[8], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[8])(variable[8], NIT_NULL /*null*/) /*Object::==*/)))))));
3430 CALL_mmbuilder___PPropdef___process_and_check(variable[6])(variable[6], variable[1] /*v*/, variable[7], variable[8], variable[5] /*visibility_level*/) /*PPropdef::process_and_check*/;
3431 variable[6] = variable[0];
3432 variable[6] = CALL_parser_nodes___AAttrPropdef___n_type(variable[6])(variable[6]) /*AAttrPropdef::n_type*/;
3433 variable[7] = variable[0];
3434 variable[7] = ATTR_mmbuilder___AAttrPropdef____readmethod(variable[7]) /*AAttrPropdef::_readmethod*/;
3435 CALL_mmbuilder___PType___check_visibility(variable[6])(variable[6], variable[1] /*v*/, variable[7]) /*PType::check_visibility*/;
3436 }
3437 variable[6] = variable[0];
3438 variable[6] = CALL_parser_nodes___AAttrPropdef___n_writable(variable[6])(variable[6]) /*AAttrPropdef::n_writable*/;
3439 variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[6] == NIT_NULL /*null*/) || ((variable[6] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[6])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[6], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[6])(variable[6], NIT_NULL /*null*/) /*Object::==*/)))))));
3440 if (UNTAG_Bool(variable[6])) { /*if*/
3441 variable[6] = variable[0];
3442 variable[6] = ATTR_mmbuilder___AAttrPropdef____writemethod(variable[6]) /*AAttrPropdef::_writemethod*/;
3443 variable[7] = NEW_Array_array___Array___with_capacity(TAG_Int(1)); /*new Array[MMType]*/
3444 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[3] /*t*/) /*AbstractArray::add*/;
3445 variable[8] = NEW_Array_array___Array___with_items(variable[7]); /*new Array[MMType]*/
3446 variable[7] = variable[8];
3447 variable[8] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
3448 variable[8] = CALL_static_type___MMLocalClass___get_type(variable[8])(variable[8]) /*MMLocalClass::get_type*/;
3449 variable[9] = NEW_MMSignature_static_type___MMSignature___init(variable[7], NIT_NULL /*null*/, variable[8]); /*new MMSignature*/
3450 variable[7] = variable[9];
3451 CALL_static_type___MMLocalProperty___signature__eq(variable[6])(variable[6], variable[7]) /*MMLocalProperty::signature=*/;
3452 variable[6] = variable[0];
3453 variable[7] = variable[0];
3454 variable[7] = ATTR_mmbuilder___AAttrPropdef____writemethod(variable[7]) /*AAttrPropdef::_writemethod*/;
3455 variable[8] = variable[0];
3456 variable[8] = CALL_parser_nodes___AAttrPropdef___n_writable(variable[8])(variable[8]) /*AAttrPropdef::n_writable*/;
3457 variable[8] = CALL_parser_nodes___PAble___n_kwredef(variable[8])(variable[8]) /*PAble::n_kwredef*/;
3458 variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[8] == NIT_NULL /*null*/) || ((variable[8] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[8])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[8], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[8])(variable[8], NIT_NULL /*null*/) /*Object::==*/)))))));
3459 CALL_mmbuilder___PPropdef___process_and_check(variable[6])(variable[6], variable[1] /*v*/, variable[7], variable[8], variable[5] /*visibility_level*/) /*PPropdef::process_and_check*/;
3460 variable[6] = variable[0];
3461 variable[6] = CALL_parser_nodes___AAttrPropdef___n_type(variable[6])(variable[6]) /*AAttrPropdef::n_type*/;
3462 variable[7] = variable[0];
3463 variable[7] = ATTR_mmbuilder___AAttrPropdef____writemethod(variable[7]) /*AAttrPropdef::_writemethod*/;
3464 CALL_mmbuilder___PType___check_visibility(variable[6])(variable[6], variable[1] /*v*/, variable[7]) /*PType::check_visibility*/;
3465 }
3466 return_label100: while(false);
3467 tracehead = trace.prev;
3468 return;
3469 }
3470 void mmbuilder___AMethPropdef___accept_abs_syntax_visitor(val_t self, val_t param0) {
3471 struct trace_t trace = {NULL, NULL, 1009, LOCATE_mmbuilder___AMethPropdef___accept_abs_syntax_visitor};
3472 val_t variable[4];
3473 void **closurevariable = NULL;
3474 trace.prev = tracehead; tracehead = &trace;
3475 trace.file = LOCATE_mmbuilder;
3476 variable[0] = self;
3477 variable[1] = param0;
3478 variable[3] = variable[0];
3479 variable[3] = CALL_syntax_base___AMethPropdef___method(variable[3])(variable[3]) /*AMethPropdef::method*/;
3480 CALL_syntax_base___AbsSyntaxVisitor___local_property__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*AbsSyntaxVisitor::local_property=*/;
3481 CALL_SUPER_mmbuilder___AMethPropdef___accept_abs_syntax_visitor(variable[0])(variable[0], variable[1]) /*super AMethPropdef::accept_abs_syntax_visitor*/;
3482 CALL_syntax_base___AbsSyntaxVisitor___local_property__eq( variable[1] /*v*/)( variable[1] /*v*/, NIT_NULL /*null*/) /*AbsSyntaxVisitor::local_property=*/;
3483 return_label101: while(false);
3484 tracehead = trace.prev;
3485 return;
3486 }
3487 val_t mmbuilder___AMethPropdef___method(val_t self) {
3488 struct trace_t trace = {NULL, NULL, 965, LOCATE_mmbuilder___AMethPropdef___method};
3489 val_t *variable = NULL;
3490 void **closurevariable = NULL;
3491 trace.prev = tracehead; tracehead = &trace;
3492 trace.file = LOCATE_mmbuilder;
3493 tracehead = trace.prev;
3494 return ATTR_mmbuilder___AMethPropdef____method( self) /*AMethPropdef::_method*/;
3495 }
3496 void mmbuilder___AMethPropdef___accept_property_builder(val_t self, val_t param0) {
3497 struct trace_t trace = {NULL, NULL, 967, LOCATE_mmbuilder___AMethPropdef___accept_property_builder};
3498 static val_t once_value_103; static int once_bool_103; /* Once value for variable[4]*/
3499 static val_t once_value_104; static int once_bool_104; /* Once value for variable[4]*/
3500 static val_t once_value_105; static int once_bool_105; /* Once value for variable[4]*/
3501 static val_t once_value_106; static int once_bool_106; /* Once value for variable[5]*/
3502 val_t variable[8];
3503 void **closurevariable = NULL;
3504 trace.prev = tracehead; tracehead = &trace;
3505 trace.file = LOCATE_mmbuilder;
3506 variable[0] = self;
3507 variable[1] = param0;
3508 CALL_SUPER_mmbuilder___AMethPropdef___accept_property_builder(variable[0])(variable[0], variable[1]) /*super AMethPropdef::accept_property_builder*/;
3509 variable[3] = variable[0];
3510 variable[3] = CALL_parser_nodes___AMethPropdef___n_methid(variable[3])(variable[3]) /*AMethPropdef::n_methid*/;
3511 variable[3] = 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::==*/)))));
3512 if (UNTAG_Bool(variable[3])) { /*if*/
3513 variable[3] = variable[0];
3514 variable[3] = TAG_Bool((variable[3]==NIT_NULL) || VAL_ISA(variable[3], COLOR_AConcreteInitPropdef, ID_AConcreteInitPropdef)) /*cast AConcreteInitPropdef*/;
3515 if (UNTAG_Bool(variable[3])) { /*if*/
3516 variable[3] = variable[0];
3517 if (once_bool_103) variable[4] = once_value_103;
3518 else {
3519 variable[4] = NEW_String_string___String___with_native(BOX_NativeString("init"), TAG_Int(4)); /*new String*/
3520 variable[4] = CALL_symbol___String___to_symbol(variable[4])(variable[4]) /*String::to_symbol*/;
3521 once_value_103 = variable[4];
3522 once_bool_103 = true;
3523 }
3524 ATTR_mmbuilder___AMethPropdef____name(variable[3]) /*AMethPropdef::_name*/ = variable[4];
3525 } else { /*if*/
3526 variable[3] = variable[0];
3527 if (once_bool_104) variable[4] = once_value_104;
3528 else {
3529 variable[4] = NEW_String_string___String___with_native(BOX_NativeString("main"), TAG_Int(4)); /*new String*/
3530 variable[4] = CALL_symbol___String___to_symbol(variable[4])(variable[4]) /*String::to_symbol*/;
3531 once_value_104 = variable[4];
3532 once_bool_104 = true;
3533 }
3534 ATTR_mmbuilder___AMethPropdef____name(variable[3]) /*AMethPropdef::_name*/ = variable[4];
3535 }
3536 } else { /*if*/
3537 variable[3] = variable[0];
3538 variable[4] = variable[0];
3539 variable[4] = CALL_parser_nodes___AMethPropdef___n_methid(variable[4])(variable[4]) /*AMethPropdef::n_methid*/;
3540 variable[4] = CALL_mmbuilder___PMethid___name(variable[4])(variable[4]) /*PMethid::name*/;
3541 ATTR_mmbuilder___AMethPropdef____name(variable[3]) /*AMethPropdef::_name*/ = variable[4];
3542 variable[3] = variable[0];
3543 variable[3] = CALL_parser_nodes___AMethPropdef___n_methid(variable[3])(variable[3]) /*AMethPropdef::n_methid*/;
3544 variable[3] = CALL_mmbuilder___PMethid___name(variable[3])(variable[3]) /*PMethid::name*/;
3545 if (once_bool_105) variable[4] = once_value_105;
3546 else {
3547 variable[4] = NEW_String_string___String___with_native(BOX_NativeString("-"), TAG_Int(1)); /*new String*/
3548 variable[4] = CALL_symbol___String___to_symbol(variable[4])(variable[4]) /*String::to_symbol*/;
3549 once_value_105 = variable[4];
3550 once_bool_105 = true;
3551 }
3552 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::==*/)))));
3553 if (UNTAG_Bool(variable[3])) { /*if*/
3554 variable[4] = variable[0];
3555 variable[4] = CALL_parser_nodes___AMethPropdef___n_signature(variable[4])(variable[4]) /*AMethPropdef::n_signature*/;
3556 variable[3] = variable[4];
3557 variable[4] = TAG_Bool(( variable[3] /*ns*/==NIT_NULL) || VAL_ISA( variable[3] /*ns*/, COLOR_ASignature, ID_ASignature)) /*cast ASignature*/;
3558 variable[5] = variable[4];
3559 if (UNTAG_Bool(variable[5])) { /* and */
3560 variable[5] = CALL_parser_nodes___ASignature___n_params( variable[3] /*ns*/)( variable[3] /*ns*/) /*ASignature::n_params*/;
3561 variable[5] = CALL_abstract_collection___Collection___length(variable[5])(variable[5]) /*List::length*/;
3562 variable[5] = TAG_Bool((variable[5])==( TAG_Int(0)));
3563 }
3564 variable[4] = variable[5];
3565 if (UNTAG_Bool(variable[4])) { /*if*/
3566 variable[4] = variable[0];
3567 if (once_bool_106) variable[5] = once_value_106;
3568 else {
3569 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("unary -"), TAG_Int(7)); /*new String*/
3570 variable[5] = CALL_symbol___String___to_symbol(variable[5])(variable[5]) /*String::to_symbol*/;
3571 once_value_106 = variable[5];
3572 once_bool_106 = true;
3573 }
3574 ATTR_mmbuilder___AMethPropdef____name(variable[4]) /*AMethPropdef::_name*/ = variable[5];
3575 }
3576 }
3577 }
3578 variable[4] = variable[0];
3579 variable[4] = ATTR_mmbuilder___AMethPropdef____name(variable[4]) /*AMethPropdef::_name*/;
3580 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
3581 variable[6] = variable[0];
3582 variable[7] = NEW_MMMethSrcMethod_syntax_base___MMMethSrcMethod___init(variable[4], variable[5], variable[6]); /*new MMMethSrcMethod*/
3583 variable[4] = variable[7];
3584 variable[3] = variable[4];
3585 variable[4] = variable[0];
3586 ATTR_mmbuilder___AMethPropdef____method(variable[4]) /*AMethPropdef::_method*/ = variable[3] /*prop*/;
3587 variable[4] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
3588 CALL_mmbuilder___MMSrcLocalClass___add_src_local_property(variable[4])(variable[4], variable[1] /*v*/, variable[3] /*prop*/) /*MMSrcLocalClass::add_src_local_property*/;
3589 return_label102: while(false);
3590 tracehead = trace.prev;
3591 return;
3592 }
3593 void mmbuilder___AMethPropdef___accept_property_verifier(val_t self, val_t param0) {
3594 struct trace_t trace = {NULL, NULL, 991, LOCATE_mmbuilder___AMethPropdef___accept_property_verifier};
3595 val_t variable[7];
3596 void **closurevariable = NULL;
3597 trace.prev = tracehead; tracehead = &trace;
3598 trace.file = LOCATE_mmbuilder;
3599 variable[0] = self;
3600 variable[1] = param0;
3601 variable[3] = NEW_SignatureBuilder_mmbuilder___SignatureBuilder___init(); /*new SignatureBuilder*/
3602 CALL_mmbuilder___PropertyVerifierVisitor___signature_builder__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*PropertyVerifierVisitor::signature_builder=*/;
3603 CALL_SUPER_mmbuilder___AMethPropdef___accept_property_verifier(variable[0])(variable[0], variable[1]) /*super AMethPropdef::accept_property_verifier*/;
3604 variable[3] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
3605 variable[3] = CALL_mmbuilder___SignatureBuilder___signature(variable[3])(variable[3]) /*SignatureBuilder::signature*/;
3606 variable[3] = 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::==*/)))));
3607 if (UNTAG_Bool(variable[3])) { /*if*/
3608 } else { /*if*/
3609 variable[3] = variable[0];
3610 variable[3] = ATTR_mmbuilder___AMethPropdef____method(variable[3]) /*AMethPropdef::_method*/;
3611 variable[4] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
3612 variable[4] = CALL_mmbuilder___SignatureBuilder___signature(variable[4])(variable[4]) /*SignatureBuilder::signature*/;
3613 CALL_static_type___MMLocalProperty___signature__eq(variable[3])(variable[3], variable[4]) /*MMLocalProperty::signature=*/;
3614 }
3615 variable[3] = TAG_Int(1);
3616 variable[4] = variable[0];
3617 variable[4] = CALL_parser_nodes___AMethPropdef___n_visibility(variable[4])(variable[4]) /*AMethPropdef::n_visibility*/;
3618 variable[4] = TAG_Bool(!UNTAG_Bool(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::==*/)))))));
3619 variable[5] = variable[4];
3620 if (UNTAG_Bool(variable[5])) { /* and */
3621 variable[5] = variable[0];
3622 variable[5] = CALL_parser_nodes___AMethPropdef___n_visibility(variable[5])(variable[5]) /*AMethPropdef::n_visibility*/;
3623 variable[5] = CALL_mmbuilder___PVisibility___level(variable[5])(variable[5]) /*PVisibility::level*/;
3624 variable[5] = TAG_Bool(UNTAG_Int(variable[5])>UNTAG_Int( TAG_Int(1)));
3625 }
3626 variable[4] = variable[5];
3627 if (UNTAG_Bool(variable[4])) { /*if*/
3628 variable[4] = variable[0];
3629 variable[4] = CALL_parser_nodes___AMethPropdef___n_visibility(variable[4])(variable[4]) /*AMethPropdef::n_visibility*/;
3630 variable[4] = CALL_mmbuilder___PVisibility___level(variable[4])(variable[4]) /*PVisibility::level*/;
3631 variable[3] = variable[4] /*visibility_level=*/;
3632 }
3633 variable[4] = variable[0];
3634 variable[5] = variable[0];
3635 variable[5] = ATTR_mmbuilder___AMethPropdef____method(variable[5]) /*AMethPropdef::_method*/;
3636 variable[6] = variable[0];
3637 variable[6] = CALL_parser_nodes___AMethPropdef___n_kwredef(variable[6])(variable[6]) /*AMethPropdef::n_kwredef*/;
3638 variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[6] == NIT_NULL /*null*/) || ((variable[6] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[6])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[6], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[6])(variable[6], NIT_NULL /*null*/) /*Object::==*/)))))));
3639 CALL_mmbuilder___PPropdef___process_and_check(variable[4])(variable[4], variable[1] /*v*/, variable[5], variable[6], variable[3] /*visibility_level*/) /*PPropdef::process_and_check*/;
3640 variable[4] = variable[0];
3641 variable[4] = CALL_parser_nodes___AMethPropdef___n_signature(variable[4])(variable[4]) /*AMethPropdef::n_signature*/;
3642 variable[4] = TAG_Bool(!UNTAG_Bool(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::==*/)))))));
3643 if (UNTAG_Bool(variable[4])) { /*if*/
3644 variable[4] = variable[0];
3645 variable[4] = CALL_parser_nodes___AMethPropdef___n_signature(variable[4])(variable[4]) /*AMethPropdef::n_signature*/;
3646 variable[5] = variable[0];
3647 variable[5] = ATTR_mmbuilder___AMethPropdef____method(variable[5]) /*AMethPropdef::_method*/;
3648 CALL_mmbuilder___PSignature___check_visibility(variable[4])(variable[4], variable[1] /*v*/, variable[5]) /*PSignature::check_visibility*/;
3649 }
3650 return_label107: while(false);
3651 tracehead = trace.prev;
3652 return;
3653 }
3654 val_t mmbuilder___AMethPropdef___name(val_t self) {
3655 struct trace_t trace = {NULL, NULL, 962, LOCATE_mmbuilder___AMethPropdef___name};
3656 val_t *variable = NULL;
3657 void **closurevariable = NULL;
3658 trace.prev = tracehead; tracehead = &trace;
3659 trace.file = LOCATE_mmbuilder;
3660 tracehead = trace.prev;
3661 return ATTR_mmbuilder___AMethPropdef____name( self) /*AMethPropdef::_name*/;
3662 }
3663 void mmbuilder___AMainMethPropdef___process_and_check(val_t self, val_t param0, val_t param1, val_t param2, val_t param3) {
3664 struct trace_t trace = {NULL, NULL, 1018, LOCATE_mmbuilder___AMainMethPropdef___process_and_check};
3665 val_t variable[9];
3666 void **closurevariable = NULL;
3667 trace.prev = tracehead; tracehead = &trace;
3668 trace.file = LOCATE_mmbuilder;
3669 variable[0] = self;
3670 variable[1] = param0;
3671 variable[2] = param1;
3672 variable[3] = param2;
3673 variable[4] = param3;
3674 variable[6] = CALL_abstractmetamodel___MMLocalProperty___global( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::global*/;
3675 CALL_abstractmetamodel___MMGlobalProperty___visibility_level__eq(variable[6])(variable[6], variable[4] /*visibility_level*/) /*MMGlobalProperty::visibility_level=*/;
3676 variable[6] = NEW_Array_array___Array___init(); /*new Array[MMType]*/
3677 variable[7] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
3678 variable[7] = CALL_static_type___MMLocalClass___get_type(variable[7])(variable[7]) /*MMLocalClass::get_type*/;
3679 variable[8] = NEW_MMSignature_static_type___MMSignature___init(variable[6], NIT_NULL /*null*/, variable[7]); /*new MMSignature*/
3680 variable[6] = variable[8];
3681 CALL_static_type___MMLocalProperty___signature__eq( variable[2] /*prop*/)( variable[2] /*prop*/, variable[6]) /*MMLocalProperty::signature=*/;
3682 return_label108: while(false);
3683 tracehead = trace.prev;
3684 return;
3685 }
3686 void mmbuilder___ATypePropdef___accept_abs_syntax_visitor(val_t self, val_t param0) {
3687 struct trace_t trace = {NULL, NULL, 1047, LOCATE_mmbuilder___ATypePropdef___accept_abs_syntax_visitor};
3688 val_t variable[4];
3689 void **closurevariable = NULL;
3690 trace.prev = tracehead; tracehead = &trace;
3691 trace.file = LOCATE_mmbuilder;
3692 variable[0] = self;
3693 variable[1] = param0;
3694 variable[3] = variable[0];
3695 variable[3] = CALL_syntax_base___ATypePropdef___prop(variable[3])(variable[3]) /*ATypePropdef::prop*/;
3696 CALL_syntax_base___AbsSyntaxVisitor___local_property__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*AbsSyntaxVisitor::local_property=*/;
3697 CALL_SUPER_mmbuilder___ATypePropdef___accept_abs_syntax_visitor(variable[0])(variable[0], variable[1]) /*super ATypePropdef::accept_abs_syntax_visitor*/;
3698 CALL_syntax_base___AbsSyntaxVisitor___local_property__eq( variable[1] /*v*/)( variable[1] /*v*/, NIT_NULL /*null*/) /*AbsSyntaxVisitor::local_property=*/;
3699 return_label109: while(false);
3700 tracehead = trace.prev;
3701 return;
3702 }
3703 val_t mmbuilder___ATypePropdef___prop(val_t self) {
3704 struct trace_t trace = {NULL, NULL, 1027, LOCATE_mmbuilder___ATypePropdef___prop};
3705 val_t *variable = NULL;
3706 void **closurevariable = NULL;
3707 trace.prev = tracehead; tracehead = &trace;
3708 trace.file = LOCATE_mmbuilder;
3709 tracehead = trace.prev;
3710 return ATTR_mmbuilder___ATypePropdef____prop( self) /*ATypePropdef::_prop*/;
3711 }
3712 void mmbuilder___ATypePropdef___accept_property_builder(val_t self, val_t param0) {
3713 struct trace_t trace = {NULL, NULL, 1029, LOCATE_mmbuilder___ATypePropdef___accept_property_builder};
3714 val_t variable[8];
3715 void **closurevariable = NULL;
3716 trace.prev = tracehead; tracehead = &trace;
3717 trace.file = LOCATE_mmbuilder;
3718 variable[0] = self;
3719 variable[1] = param0;
3720 CALL_SUPER_mmbuilder___ATypePropdef___accept_property_builder(variable[0])(variable[0], variable[1]) /*super ATypePropdef::accept_property_builder*/;
3721 variable[4] = variable[0];
3722 variable[4] = CALL_parser_nodes___ATypePropdef___n_id(variable[4])(variable[4]) /*ATypePropdef::n_id*/;
3723 variable[4] = CALL_syntax_base___Token___to_symbol(variable[4])(variable[4]) /*Token::to_symbol*/;
3724 variable[3] = variable[4];
3725 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
3726 variable[6] = variable[0];
3727 variable[7] = NEW_MMSrcTypeProperty_syntax_base___MMSrcTypeProperty___init( variable[3] /*name*/, variable[5], variable[6]); /*new MMSrcTypeProperty*/
3728 variable[5] = variable[7];
3729 variable[4] = variable[5];
3730 variable[5] = variable[0];
3731 ATTR_mmbuilder___ATypePropdef____prop(variable[5]) /*ATypePropdef::_prop*/ = variable[4] /*prop*/;
3732 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
3733 CALL_mmbuilder___MMSrcLocalClass___add_src_local_property(variable[5])(variable[5], variable[1] /*v*/, variable[4] /*prop*/) /*MMSrcLocalClass::add_src_local_property*/;
3734 return_label110: while(false);
3735 tracehead = trace.prev;
3736 return;
3737 }
3738 void mmbuilder___ATypePropdef___accept_property_verifier(val_t self, val_t param0) {
3739 struct trace_t trace = {NULL, NULL, 1038, LOCATE_mmbuilder___ATypePropdef___accept_property_verifier};
3740 val_t variable[8];
3741 void **closurevariable = NULL;
3742 trace.prev = tracehead; tracehead = &trace;
3743 trace.file = LOCATE_mmbuilder;
3744 variable[0] = self;
3745 variable[1] = param0;
3746 CALL_SUPER_mmbuilder___ATypePropdef___accept_property_verifier(variable[0])(variable[0], variable[1]) /*super ATypePropdef::accept_property_verifier*/;
3747 variable[4] = NEW_Array_array___Array___init(); /*new Array[MMType]*/
3748 variable[5] = variable[0];
3749 variable[5] = CALL_parser_nodes___ATypePropdef___n_type(variable[5])(variable[5]) /*ATypePropdef::n_type*/;
3750 variable[5] = CALL_syntax_base___PType___get_stype(variable[5])(variable[5], variable[1] /*v*/) /*PType::get_stype*/;
3751 variable[6] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
3752 variable[6] = CALL_static_type___MMLocalClass___get_type(variable[6])(variable[6]) /*MMLocalClass::get_type*/;
3753 variable[7] = NEW_MMSignature_static_type___MMSignature___init(variable[4], variable[5], variable[6]); /*new MMSignature*/
3754 variable[4] = variable[7];
3755 variable[3] = variable[4];
3756 variable[4] = variable[0];
3757 variable[4] = ATTR_mmbuilder___ATypePropdef____prop(variable[4]) /*ATypePropdef::_prop*/;
3758 CALL_static_type___MMLocalProperty___signature__eq(variable[4])(variable[4], variable[3] /*signature*/) /*MMLocalProperty::signature=*/;
3759 variable[5] = variable[0];
3760 variable[5] = CALL_parser_nodes___ATypePropdef___n_visibility(variable[5])(variable[5]) /*ATypePropdef::n_visibility*/;
3761 variable[5] = CALL_mmbuilder___PVisibility___level(variable[5])(variable[5]) /*PVisibility::level*/;
3762 variable[4] = variable[5];
3763 variable[5] = variable[0];
3764 variable[6] = variable[0];
3765 variable[6] = ATTR_mmbuilder___ATypePropdef____prop(variable[6]) /*ATypePropdef::_prop*/;
3766 variable[7] = variable[0];
3767 variable[7] = CALL_parser_nodes___ATypePropdef___n_kwredef(variable[7])(variable[7]) /*ATypePropdef::n_kwredef*/;
3768 variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[7] == NIT_NULL /*null*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7], NIT_NULL /*null*/) /*Object::==*/)))))));
3769 CALL_mmbuilder___PPropdef___process_and_check(variable[5])(variable[5], variable[1] /*v*/, variable[6], variable[7], variable[4] /*visibility_level*/) /*PPropdef::process_and_check*/;
3770 return_label111: while(false);
3771 tracehead = trace.prev;
3772 return;
3773 }
3774 void mmbuilder___MethidAccumulator___visit(val_t self, val_t param0) {
3775 struct trace_t trace = {NULL, NULL, 1059, LOCATE_mmbuilder___MethidAccumulator___visit};
3776 val_t variable[5];
3777 void **closurevariable = NULL;
3778 trace.prev = tracehead; tracehead = &trace;
3779 trace.file = LOCATE_mmbuilder;
3780 variable[0] = self;
3781 variable[1] = param0;
3782 variable[3] = TAG_Bool(( variable[1] /*n*/==NIT_NULL) || VAL_ISA( variable[1] /*n*/, COLOR_Token, ID_Token)) /*cast Token*/;
3783 if (UNTAG_Bool(variable[3])) { /*if*/
3784 variable[3] = variable[0];
3785 variable[3] = ATTR_mmbuilder___MethidAccumulator____name(variable[3]) /*MethidAccumulator::_name*/;
3786 variable[4] = CALL_lexer___Token___text( variable[1] /*n*/)( variable[1] /*n*/) /*Token::text*/;
3787 CALL_abstract_collection___IndexedCollection___append(variable[3])(variable[3], variable[4]) /*String::append*/;
3788 } else { /*if*/
3789 variable[3] = variable[0];
3790 CALL_parser_prod___PNode___visit_all( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::visit_all*/;
3791 }
3792 return_label112: while(false);
3793 tracehead = trace.prev;
3794 return;
3795 }
3796 val_t mmbuilder___MethidAccumulator___name(val_t self) {
3797 struct trace_t trace = {NULL, NULL, 1058, LOCATE_mmbuilder___MethidAccumulator___name};
3798 val_t *variable = NULL;
3799 void **closurevariable = NULL;
3800 trace.prev = tracehead; tracehead = &trace;
3801 trace.file = LOCATE_mmbuilder;
3802 tracehead = trace.prev;
3803 return ATTR_mmbuilder___MethidAccumulator____name( self) /*MethidAccumulator::_name*/;
3804 }
3805 void mmbuilder___MethidAccumulator___init(val_t self, int* init_table) {
3806 struct trace_t trace = {NULL, NULL, 1068, LOCATE_mmbuilder___MethidAccumulator___init};
3807 val_t variable[4];
3808 void **closurevariable = NULL;
3809 trace.prev = tracehead; tracehead = &trace;
3810 trace.file = LOCATE_mmbuilder;
3811 variable[0] = self;
3812 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MethidAccumulator].i]) return;
3813 variable[2] = variable[0];
3814 variable[3] = NEW_String_string___String___init(); /*new String*/
3815 ATTR_mmbuilder___MethidAccumulator____name(variable[2]) /*MethidAccumulator::_name*/ = variable[3];
3816 return_label113: while(false);
3817 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MethidAccumulator].i] = 1;
3818 tracehead = trace.prev;
3819 return;
3820 }
3821 void mmbuilder___PMethid___accept_property_builder(val_t self, val_t param0) {
3822 struct trace_t trace = {NULL, NULL, 1078, LOCATE_mmbuilder___PMethid___accept_property_builder};
3823 val_t variable[6];
3824 void **closurevariable = NULL;
3825 trace.prev = tracehead; tracehead = &trace;
3826 trace.file = LOCATE_mmbuilder;
3827 variable[0] = self;
3828 variable[1] = param0;
3829 variable[4] = NEW_MethidAccumulator_mmbuilder___MethidAccumulator___init(); /*new MethidAccumulator*/
3830 variable[3] = variable[4];
3831 variable[4] = variable[0];
3832 CALL_parser_prod___Visitor___visit( variable[3] /*accumulator*/)( variable[3] /*accumulator*/, variable[4]) /*MethidAccumulator::visit*/;
3833 variable[4] = variable[0];
3834 variable[5] = CALL_mmbuilder___MethidAccumulator___name( variable[3] /*accumulator*/)( variable[3] /*accumulator*/) /*MethidAccumulator::name*/;
3835 variable[5] = CALL_symbol___String___to_symbol(variable[5])(variable[5]) /*String::to_symbol*/;
3836 ATTR_mmbuilder___PMethid____name(variable[4]) /*PMethid::_name*/ = variable[5];
3837 CALL_SUPER_mmbuilder___PMethid___accept_property_builder(variable[0])(variable[0], variable[1]) /*super PMethid::accept_property_builder*/;
3838 return_label114: while(false);
3839 tracehead = trace.prev;
3840 return;
3841 }
3842 val_t mmbuilder___PMethid___name(val_t self) {
3843 struct trace_t trace = {NULL, NULL, 1075, LOCATE_mmbuilder___PMethid___name};
3844 val_t *variable = NULL;
3845 void **closurevariable = NULL;
3846 trace.prev = tracehead; tracehead = &trace;
3847 trace.file = LOCATE_mmbuilder;
3848 tracehead = trace.prev;
3849 return ATTR_mmbuilder___PMethid____name( self) /*PMethid::_name*/;
3850 }
3851 void mmbuilder___PSignature___check_visibility(val_t self, val_t param0, val_t param1) {
3852 struct trace_t trace = {NULL, NULL, 1088, LOCATE_mmbuilder___PSignature___check_visibility};
3853 val_t *variable = NULL;
3854 void **closurevariable = NULL;
3855 trace.prev = tracehead; tracehead = &trace;
3856 trace.file = LOCATE_mmbuilder;
3857 fprintf(stderr, "Deferred method called");
3858 fprintf(stderr, " (%s:%d)\n", LOCATE_mmbuilder, 1088);
3859 nit_exit(1);
3860 tracehead = trace.prev;
3861 return;
3862 }
3863 void mmbuilder___ASignature___accept_property_verifier(val_t self, val_t param0) {
3864 struct trace_t trace = {NULL, NULL, 1093, LOCATE_mmbuilder___ASignature___accept_property_verifier};
3865 val_t variable[10];
3866 void **closurevariable = NULL;
3867 trace.prev = tracehead; tracehead = &trace;
3868 trace.file = LOCATE_mmbuilder;
3869 variable[0] = self;
3870 variable[1] = param0;
3871 CALL_SUPER_mmbuilder___ASignature___accept_property_verifier(variable[0])(variable[0], variable[1]) /*super ASignature::accept_property_verifier*/;
3872 variable[3] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
3873 variable[3] = CALL_mmbuilder___SignatureBuilder___untyped_params(variable[3])(variable[3]) /*SignatureBuilder::untyped_params*/;
3874 variable[3] = CALL_abstract_collection___Collection___is_empty(variable[3])(variable[3]) /*AbstractArray::is_empty*/;
3875 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[3])))) { /*if*/
3876 variable[3] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
3877 variable[3] = CALL_mmbuilder___SignatureBuilder___untyped_params(variable[3])(variable[3]) /*SignatureBuilder::untyped_params*/;
3878 variable[3] = CALL_abstract_collection___Collection___first(variable[3])(variable[3]) /*IndexedCollection::first*/;
3879 variable[4] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
3880 variable[4] = CALL_mmbuilder___SignatureBuilder___params(variable[4])(variable[4]) /*SignatureBuilder::params*/;
3881 variable[4] = CALL_abstract_collection___Collection___first(variable[4])(variable[4]) /*IndexedCollection::first*/;
3882 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::==*/)))))));
3883 variable[4] = variable[3];
3884 if (!UNTAG_Bool(variable[4])) { /* or */
3885 variable[4] = variable[0];
3886 variable[4] = CALL_parser_nodes___ASignature___n_type(variable[4])(variable[4]) /*ASignature::n_type*/;
3887 variable[4] = TAG_Bool(!UNTAG_Bool(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::==*/)))))));
3888 }
3889 variable[3] = variable[4];
3890 if (UNTAG_Bool(variable[3])) { /*if*/
3891 variable[3] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
3892 variable[3] = CALL_mmbuilder___SignatureBuilder___untyped_params(variable[3])(variable[3]) /*SignatureBuilder::untyped_params*/;
3893 variable[3] = CALL_abstract_collection___Collection___first(variable[3])(variable[3]) /*IndexedCollection::first*/;
3894 variable[4] = NEW_String_string___String___with_native(BOX_NativeString("Syntax error: untyped parameter."), TAG_Int(32)); /*new String*/
3895 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[3], variable[4]) /*AbsSyntaxVisitor::error*/;
3896 goto return_label115;
3897 }
3898 } else { /*if*/
3899 variable[3] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
3900 variable[3] = CALL_mmbuilder___SignatureBuilder___params(variable[3])(variable[3]) /*SignatureBuilder::params*/;
3901 variable[3] = CALL_abstract_collection___Collection___is_empty(variable[3])(variable[3]) /*AbstractArray::is_empty*/;
3902 variable[3] = TAG_Bool(!UNTAG_Bool(variable[3]));
3903 if (!UNTAG_Bool(variable[3])) { /* or */
3904 variable[3] = variable[0];
3905 variable[3] = CALL_parser_nodes___ASignature___n_type(variable[3])(variable[3]) /*ASignature::n_type*/;
3906 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::==*/)))))));
3907 }
3908 if (UNTAG_Bool(variable[3])) { /*if*/
3909 variable[4] = NEW_Array_array___Array___init(); /*new Array[MMType]*/
3910 variable[3] = variable[4];
3911 variable[4] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
3912 variable[4] = CALL_mmbuilder___SignatureBuilder___params(variable[4])(variable[4]) /*SignatureBuilder::params*/;
3913 variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*AbstractArray::iterator*/;
3914 while (true) { /*for*/
3915 variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*ArrayIterator::is_ok*/;
3916 if (!UNTAG_Bool(variable[5])) break; /*for*/
3917 variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*ArrayIterator::item*/;
3918 variable[6] = variable[5];
3919 variable[7] = CALL_mmbuilder___PParam___stype( variable[6] /*p*/)( variable[6] /*p*/) /*PParam::stype*/;
3920 CALL_abstract_collection___SimpleCollection___add( variable[3] /*pars*/)( variable[3] /*pars*/, variable[7]) /*AbstractArray::add*/;
3921 continue_116: while(0);
3922 CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*ArrayIterator::next*/;
3923 }
3924 break_116: while(0);
3925 variable[4] = NIT_NULL /*null*/;
3926 variable[5] = variable[0];
3927 variable[5] = CALL_parser_nodes___ASignature___n_type(variable[5])(variable[5]) /*ASignature::n_type*/;
3928 variable[5] = TAG_Bool(!UNTAG_Bool(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::==*/)))))));
3929 if (UNTAG_Bool(variable[5])) { /*if*/
3930 variable[5] = variable[0];
3931 variable[5] = CALL_parser_nodes___ASignature___n_type(variable[5])(variable[5]) /*ASignature::n_type*/;
3932 variable[5] = CALL_syntax_base___PType___get_stype(variable[5])(variable[5], variable[1] /*v*/) /*PType::get_stype*/;
3933 variable[4] = variable[5] /*ret=*/;
3934 }
3935 variable[5] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
3936 variable[6] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
3937 variable[6] = CALL_static_type___MMLocalClass___get_type(variable[6])(variable[6]) /*MMLocalClass::get_type*/;
3938 variable[7] = NEW_MMSignature_static_type___MMSignature___init( variable[3] /*pars*/, variable[4] /*ret*/, variable[6]); /*new MMSignature*/
3939 variable[6] = variable[7];
3940 CALL_mmbuilder___SignatureBuilder___signature__eq(variable[5])(variable[5], variable[6]) /*SignatureBuilder::signature=*/;
3941 variable[5] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
3942 variable[5] = CALL_mmbuilder___SignatureBuilder___vararg_rank(variable[5])(variable[5]) /*SignatureBuilder::vararg_rank*/;
3943 variable[5] = TAG_Bool(UNTAG_Int(variable[5])>=UNTAG_Int( TAG_Int(0)));
3944 if (UNTAG_Bool(variable[5])) { /*if*/
3945 variable[5] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
3946 variable[5] = CALL_mmbuilder___SignatureBuilder___signature(variable[5])(variable[5]) /*SignatureBuilder::signature*/;
3947 variable[6] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
3948 variable[6] = CALL_mmbuilder___SignatureBuilder___vararg_rank(variable[6])(variable[6]) /*SignatureBuilder::vararg_rank*/;
3949 CALL_vararg___MMSignature___vararg_rank__eq(variable[5])(variable[5], variable[6]) /*MMSignature::vararg_rank=*/;
3950 }
3951 variable[5] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
3952 variable[5] = CALL_mmbuilder___SignatureBuilder___closure_decls(variable[5])(variable[5]) /*SignatureBuilder::closure_decls*/;
3953 variable[5] = CALL_abstract_collection___Collection___iterator(variable[5])(variable[5]) /*AbstractArray::iterator*/;
3954 while (true) { /*for*/
3955 variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*ArrayIterator::is_ok*/;
3956 if (!UNTAG_Bool(variable[6])) break; /*for*/
3957 variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*ArrayIterator::item*/;
3958 variable[7] = variable[6];
3959 variable[8] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
3960 variable[8] = CALL_mmbuilder___SignatureBuilder___signature(variable[8])(variable[8]) /*SignatureBuilder::signature*/;
3961 variable[8] = CALL_static_type___MMSignature___closures(variable[8])(variable[8]) /*MMSignature::closures*/;
3962 variable[9] = CALL_syntax_base___PClosureDecl___variable( variable[7] /*clos*/)( variable[7] /*clos*/) /*AClosureDecl::variable*/;
3963 variable[9] = CALL_syntax_base___ClosureVariable___closure(variable[9])(variable[9]) /*ClosureVariable::closure*/;
3964 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
3965 continue_117: while(0);
3966 CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*ArrayIterator::next*/;
3967 }
3968 break_117: while(0);
3969 }
3970 }
3971 return_label115: while(false);
3972 tracehead = trace.prev;
3973 return;
3974 }
3975 void mmbuilder___ASignature___check_visibility(val_t self, val_t param0, val_t param1) {
3976 struct trace_t trace = {NULL, NULL, 1120, LOCATE_mmbuilder___ASignature___check_visibility};
3977 val_t variable[8];
3978 void **closurevariable = NULL;
3979 trace.prev = tracehead; tracehead = &trace;
3980 trace.file = LOCATE_mmbuilder;
3981 variable[0] = self;
3982 variable[1] = param0;
3983 variable[2] = param1;
3984 variable[4] = CALL_abstractmetamodel___MMLocalProperty___global( variable[2] /*p*/)( variable[2] /*p*/) /*MMLocalProperty::global*/;
3985 variable[4] = CALL_abstractmetamodel___MMGlobalProperty___visibility_level(variable[4])(variable[4]) /*MMGlobalProperty::visibility_level*/;
3986 variable[4] = TAG_Bool(UNTAG_Int(variable[4])>=UNTAG_Int( TAG_Int(3)));
3987 if (UNTAG_Bool(variable[4])) { /*if*/
3988 goto return_label118;
3989 }
3990 variable[4] = variable[0];
3991 variable[4] = CALL_parser_nodes___ASignature___n_params(variable[4])(variable[4]) /*ASignature::n_params*/;
3992 variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*List::iterator*/;
3993 while (true) { /*for*/
3994 variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*ListIterator::is_ok*/;
3995 if (!UNTAG_Bool(variable[5])) break; /*for*/
3996 variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*ListIterator::item*/;
3997 variable[6] = variable[5];
3998 variable[7] = CALL_parser_nodes___PParam___n_type( variable[6] /*n*/)( variable[6] /*n*/) /*PParam::n_type*/;
3999 variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[7] == NIT_NULL /*null*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7], NIT_NULL /*null*/) /*Object::==*/)))))));
4000 if (UNTAG_Bool(variable[7])) { /*if*/
4001 variable[7] = CALL_parser_nodes___PParam___n_type( variable[6] /*n*/)( variable[6] /*n*/) /*PParam::n_type*/;
4002 CALL_mmbuilder___PType___check_visibility(variable[7])(variable[7], variable[1] /*v*/, variable[2] /*p*/) /*PType::check_visibility*/;
4003 }
4004 continue_119: while(0);
4005 CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*ListIterator::next*/;
4006 }
4007 break_119: while(0);
4008 variable[4] = variable[0];
4009 variable[4] = CALL_parser_nodes___ASignature___n_type(variable[4])(variable[4]) /*ASignature::n_type*/;
4010 variable[4] = TAG_Bool(!UNTAG_Bool(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::==*/)))))));
4011 if (UNTAG_Bool(variable[4])) { /*if*/
4012 variable[4] = variable[0];
4013 variable[4] = CALL_parser_nodes___ASignature___n_type(variable[4])(variable[4]) /*ASignature::n_type*/;
4014 CALL_mmbuilder___PType___check_visibility(variable[4])(variable[4], variable[1] /*v*/, variable[2] /*p*/) /*PType::check_visibility*/;
4015 }
4016 return_label118: while(false);
4017 tracehead = trace.prev;
4018 return;
4019 }
4020 val_t mmbuilder___PParam___position(val_t self) {
4021 struct trace_t trace = {NULL, NULL, 1131, LOCATE_mmbuilder___PParam___position};
4022 val_t *variable = NULL;
4023 void **closurevariable = NULL;
4024 trace.prev = tracehead; tracehead = &trace;
4025 trace.file = LOCATE_mmbuilder;
4026 tracehead = trace.prev;
4027 return ATTR_mmbuilder___PParam____position( self) /*PParam::_position*/;
4028 }
4029 val_t mmbuilder___PParam___variable(val_t self) {
4030 struct trace_t trace = {NULL, NULL, 1133, LOCATE_mmbuilder___PParam___variable};
4031 val_t *variable = NULL;
4032 void **closurevariable = NULL;
4033 trace.prev = tracehead; tracehead = &trace;
4034 trace.file = LOCATE_mmbuilder;
4035 tracehead = trace.prev;
4036 return ATTR_mmbuilder___PParam____variable( self) /*PParam::_variable*/;
4037 }
4038 void mmbuilder___PParam___accept_property_verifier(val_t self, val_t param0) {
4039 struct trace_t trace = {NULL, NULL, 1138, LOCATE_mmbuilder___PParam___accept_property_verifier};
4040 val_t variable[9];
4041 void **closurevariable = NULL;
4042 trace.prev = tracehead; tracehead = &trace;
4043 trace.file = LOCATE_mmbuilder;
4044 variable[0] = self;
4045 variable[1] = param0;
4046 CALL_SUPER_mmbuilder___PParam___accept_property_verifier(variable[0])(variable[0], variable[1]) /*super PParam::accept_property_verifier*/;
4047 variable[3] = variable[0];
4048 variable[4] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
4049 variable[4] = CALL_mmbuilder___SignatureBuilder___params(variable[4])(variable[4]) /*SignatureBuilder::params*/;
4050 variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*AbstractArray::length*/;
4051 ATTR_mmbuilder___PParam____position(variable[3]) /*PParam::_position*/ = variable[4];
4052 variable[3] = variable[0];
4053 variable[4] = variable[0];
4054 variable[4] = CALL_parser_nodes___PParam___n_id(variable[4])(variable[4]) /*PParam::n_id*/;
4055 variable[4] = CALL_syntax_base___Token___to_symbol(variable[4])(variable[4]) /*Token::to_symbol*/;
4056 variable[5] = variable[0];
4057 variable[6] = NEW_ParamVariable_syntax_base___ParamVariable___init(variable[4], variable[5]); /*new ParamVariable*/
4058 variable[4] = variable[6];
4059 ATTR_mmbuilder___PParam____variable(variable[3]) /*PParam::_variable*/ = variable[4];
4060 variable[3] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
4061 variable[3] = CALL_mmbuilder___SignatureBuilder___params(variable[3])(variable[3]) /*SignatureBuilder::params*/;
4062 variable[4] = variable[0];
4063 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
4064 variable[3] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
4065 variable[3] = CALL_mmbuilder___SignatureBuilder___untyped_params(variable[3])(variable[3]) /*SignatureBuilder::untyped_params*/;
4066 variable[4] = variable[0];
4067 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
4068 variable[3] = variable[0];
4069 variable[3] = CALL_parser_nodes___PParam___n_type(variable[3])(variable[3]) /*PParam::n_type*/;
4070 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::==*/)))))));
4071 if (UNTAG_Bool(variable[3])) { /*if*/
4072 variable[4] = variable[0];
4073 variable[4] = CALL_parser_nodes___PParam___n_type(variable[4])(variable[4]) /*PParam::n_type*/;
4074 variable[4] = CALL_syntax_base___PType___get_stype(variable[4])(variable[4], variable[1] /*v*/) /*PType::get_stype*/;
4075 variable[3] = variable[4];
4076 variable[4] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
4077 variable[4] = CALL_mmbuilder___SignatureBuilder___untyped_params(variable[4])(variable[4]) /*SignatureBuilder::untyped_params*/;
4078 variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*AbstractArray::iterator*/;
4079 while (true) { /*for*/
4080 variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*ArrayIterator::is_ok*/;
4081 if (!UNTAG_Bool(variable[5])) break; /*for*/
4082 variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*ArrayIterator::item*/;
4083 variable[6] = variable[5];
4084 CALL_mmbuilder___PParam___stype__eq( variable[6] /*p*/)( variable[6] /*p*/, variable[3] /*stype*/) /*PParam::stype=*/;
4085 variable[7] = variable[0];
4086 variable[7] = CALL_mmbuilder___PParam___is_vararg(variable[7])(variable[7]) /*PParam::is_vararg*/;
4087 if (UNTAG_Bool(variable[7])) { /*if*/
4088 variable[7] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
4089 variable[7] = CALL_mmbuilder___SignatureBuilder___vararg_rank(variable[7])(variable[7]) /*SignatureBuilder::vararg_rank*/;
4090 variable[8] = TAG_Int(-UNTAG_Int( TAG_Int(1)));
4091 variable[7] = TAG_Bool((variable[7])==(variable[8]));
4092 if (UNTAG_Bool(variable[7])) { /*if*/
4093 variable[7] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
4094 variable[8] = CALL_syntax_base___PParam___position( variable[6] /*p*/)( variable[6] /*p*/) /*PParam::position*/;
4095 CALL_mmbuilder___SignatureBuilder___vararg_rank__eq(variable[7])(variable[7], variable[8]) /*SignatureBuilder::vararg_rank=*/;
4096 } else { /*if*/
4097 variable[7] = variable[0];
4098 variable[8] = NEW_String_string___String___with_native(BOX_NativeString("Error: A vararg parameter is already defined."), TAG_Int(45)); /*new String*/
4099 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[7], variable[8]) /*AbsSyntaxVisitor::error*/;
4100 }
4101 variable[7] = CALL_syntax_base___AbsSyntaxVisitor___type_array( variable[1] /*v*/)( variable[1] /*v*/, variable[3] /*stype*/) /*AbsSyntaxVisitor::type_array*/;
4102 variable[3] = variable[7] /*stype=*/;
4103 }
4104 variable[7] = CALL_syntax_base___PParam___variable( variable[6] /*p*/)( variable[6] /*p*/) /*PParam::variable*/;
4105 CALL_syntax_base___Variable___stype__eq(variable[7])(variable[7], variable[3] /*stype*/) /*Variable::stype=*/;
4106 continue_121: while(0);
4107 CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*ArrayIterator::next*/;
4108 }
4109 break_121: while(0);
4110 variable[4] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
4111 variable[4] = CALL_mmbuilder___SignatureBuilder___untyped_params(variable[4])(variable[4]) /*SignatureBuilder::untyped_params*/;
4112 CALL_abstract_collection___RemovableCollection___clear(variable[4])(variable[4]) /*AbstractArray::clear*/;
4113 }
4114 return_label120: while(false);
4115 tracehead = trace.prev;
4116 return;
4117 }
4118 val_t mmbuilder___PParam___stype(val_t self) {
4119 struct trace_t trace = {NULL, NULL, 1135, LOCATE_mmbuilder___PParam___stype};
4120 val_t *variable = NULL;
4121 void **closurevariable = NULL;
4122 trace.prev = tracehead; tracehead = &trace;
4123 trace.file = LOCATE_mmbuilder;
4124 tracehead = trace.prev;
4125 return ATTR_mmbuilder___PParam____stype( self) /*PParam::_stype*/;
4126 }
4127 void mmbuilder___PParam___stype__eq(val_t self, val_t param0) {
4128 struct trace_t trace = {NULL, NULL, 1135, LOCATE_mmbuilder___PParam___stype__eq};
4129 val_t *variable = NULL;
4130 void **closurevariable = NULL;
4131 trace.prev = tracehead; tracehead = &trace;
4132 trace.file = LOCATE_mmbuilder;
4133 ATTR_mmbuilder___PParam____stype( self) /*PParam::_stype*/ = param0;
4134 tracehead = trace.prev;
4135 return;
4136 }
4137 val_t mmbuilder___PParam___is_vararg(val_t self) {
4138 struct trace_t trace = {NULL, NULL, 1163, LOCATE_mmbuilder___PParam___is_vararg};
4139 val_t *variable = NULL;
4140 void **closurevariable = NULL;
4141 trace.prev = tracehead; tracehead = &trace;
4142 trace.file = LOCATE_mmbuilder;
4143 fprintf(stderr, "Deferred method called");
4144 fprintf(stderr, " (%s:%d)\n", LOCATE_mmbuilder, 1163);
4145 nit_exit(1);
4146 tracehead = trace.prev;
4147 return NIT_NULL;
4148 }
4149 val_t mmbuilder___AParam___is_vararg(val_t self) {
4150 struct trace_t trace = {NULL, NULL, 1167, LOCATE_mmbuilder___AParam___is_vararg};
4151 val_t variable[3];
4152 void **closurevariable = NULL;
4153 trace.prev = tracehead; tracehead = &trace;
4154 trace.file = LOCATE_mmbuilder;
4155 variable[0] = self;
4156 variable[2] = variable[0];
4157 variable[2] = CALL_parser_nodes___AParam___n_dotdotdot(variable[2])(variable[2]) /*AParam::n_dotdotdot*/;
4158 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::==*/)))))));
4159 variable[1] = variable[2];
4160 goto return_label122;
4161 return_label122: while(false);
4162 tracehead = trace.prev;
4163 return variable[1];
4164 }
4165 val_t mmbuilder___AClosureDecl___variable(val_t self) {
4166 struct trace_t trace = {NULL, NULL, 1171, LOCATE_mmbuilder___AClosureDecl___variable};
4167 val_t *variable = NULL;
4168 void **closurevariable = NULL;
4169 trace.prev = tracehead; tracehead = &trace;
4170 trace.file = LOCATE_mmbuilder;
4171 tracehead = trace.prev;
4172 return ATTR_mmbuilder___AClosureDecl____variable( self) /*AClosureDecl::_variable*/;
4173 }
4174 void mmbuilder___AClosureDecl___accept_property_verifier(val_t self, val_t param0) {
4175 struct trace_t trace = {NULL, NULL, 1173, LOCATE_mmbuilder___AClosureDecl___accept_property_verifier};
4176 val_t variable[12];
4177 void **closurevariable = NULL;
4178 trace.prev = tracehead; tracehead = &trace;
4179 trace.file = LOCATE_mmbuilder;
4180 variable[0] = self;
4181 variable[1] = param0;
4182 variable[4] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
4183 variable[3] = variable[4];
4184 variable[4] = NEW_SignatureBuilder_mmbuilder___SignatureBuilder___init(); /*new SignatureBuilder*/
4185 CALL_mmbuilder___PropertyVerifierVisitor___signature_builder__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*PropertyVerifierVisitor::signature_builder=*/;
4186 CALL_SUPER_mmbuilder___AClosureDecl___accept_property_verifier(variable[0])(variable[0], variable[1]) /*super AClosureDecl::accept_property_verifier*/;
4187 variable[5] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
4188 variable[5] = CALL_mmbuilder___SignatureBuilder___signature(variable[5])(variable[5]) /*SignatureBuilder::signature*/;
4189 variable[4] = variable[5];
4190 variable[5] = TAG_Bool(( variable[4] /*sig*/ == NIT_NULL /*null*/) || (( variable[4] /*sig*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*sig*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*sig*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*sig*/)( variable[4] /*sig*/, NIT_NULL /*null*/) /*Object::==*/)))));
4191 if (UNTAG_Bool(variable[5])) { /*if*/
4192 variable[5] = NEW_Array_array___Array___init(); /*new Array[MMType]*/
4193 variable[6] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
4194 variable[6] = CALL_static_type___MMLocalClass___get_type(variable[6])(variable[6]) /*MMLocalClass::get_type*/;
4195 variable[7] = NEW_MMSignature_static_type___MMSignature___init(variable[5], NIT_NULL /*null*/, variable[6]); /*new MMSignature*/
4196 variable[5] = variable[7];
4197 variable[4] = variable[5] /*sig=*/;
4198 }
4199 variable[5] = CALL_static_type___MMSignature___return_type( variable[4] /*sig*/)( variable[4] /*sig*/) /*MMSignature::return_type*/;
4200 variable[5] = TAG_Bool(!UNTAG_Bool(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::==*/)))))));
4201 variable[6] = variable[5];
4202 if (UNTAG_Bool(variable[6])) { /* and */
4203 variable[6] = variable[0];
4204 variable[6] = CALL_parser_nodes___AClosureDecl___n_kwbreak(variable[6])(variable[6]) /*AClosureDecl::n_kwbreak*/;
4205 variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[6] == NIT_NULL /*null*/) || ((variable[6] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[6])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[6], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[6])(variable[6], NIT_NULL /*null*/) /*Object::==*/)))))));
4206 }
4207 variable[5] = variable[6];
4208 if (UNTAG_Bool(variable[5])) { /*if*/
4209 variable[5] = variable[0];
4210 variable[6] = NEW_String_string___String___with_native(BOX_NativeString("Syntax Error: A break bloc cannot have a return value."), TAG_Int(54)); /*new String*/
4211 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[5], variable[6]) /*AbsSyntaxVisitor::error*/;
4212 }
4213 variable[6] = NEW_Array_array___Array___init(); /*new Array[MMType]*/
4214 variable[7] = NEW_MMSignature_static_type___MMSignature___init(variable[6], NIT_NULL /*null*/, NIT_NULL /*null*/); /*new MMSignature*/
4215 variable[6] = variable[7];
4216 variable[5] = variable[6];
4217 variable[7] = NEW_MMClosure_static_type___MMClosure___init( variable[5] /*finalize_sig*/, TAG_Bool(false), TAG_Bool(true)); /*new MMClosure*/
4218 variable[6] = variable[7];
4219 variable[7] = CALL_static_type___MMSignature___closures( variable[4] /*sig*/)( variable[4] /*sig*/) /*MMSignature::closures*/;
4220 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[6] /*finalizer_clos*/) /*AbstractArray::add*/;
4221 variable[8] = variable[0];
4222 variable[8] = CALL_parser_nodes___AClosureDecl___n_kwbreak(variable[8])(variable[8]) /*AClosureDecl::n_kwbreak*/;
4223 variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[8] == NIT_NULL /*null*/) || ((variable[8] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[8])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[8], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[8])(variable[8], NIT_NULL /*null*/) /*Object::==*/)))))));
4224 variable[9] = variable[0];
4225 variable[9] = CALL_parser_nodes___AClosureDecl___n_expr(variable[9])(variable[9]) /*AClosureDecl::n_expr*/;
4226 variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[9] == NIT_NULL /*null*/) || ((variable[9] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[9])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[9], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[9])(variable[9], NIT_NULL /*null*/) /*Object::==*/)))))));
4227 variable[10] = NEW_MMClosure_static_type___MMClosure___init( variable[4] /*sig*/, variable[8], variable[9]); /*new MMClosure*/
4228 variable[8] = variable[10];
4229 variable[7] = variable[8];
4230 CALL_mmbuilder___PropertyVerifierVisitor___signature_builder__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3] /*old_signature_builder*/) /*PropertyVerifierVisitor::signature_builder=*/;
4231 variable[8] = CALL_mmbuilder___SignatureBuilder___closure_decls( variable[3] /*old_signature_builder*/)( variable[3] /*old_signature_builder*/) /*SignatureBuilder::closure_decls*/;
4232 variable[9] = variable[0];
4233 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
4234 variable[8] = variable[0];
4235 variable[9] = variable[0];
4236 variable[9] = CALL_parser_nodes___AClosureDecl___n_id(variable[9])(variable[9]) /*AClosureDecl::n_id*/;
4237 variable[9] = CALL_syntax_base___Token___to_symbol(variable[9])(variable[9]) /*Token::to_symbol*/;
4238 variable[10] = variable[0];
4239 variable[11] = NEW_ClosureVariable_syntax_base___ClosureVariable___init(variable[9], variable[10], variable[7] /*clos*/); /*new ClosureVariable*/
4240 variable[9] = variable[11];
4241 ATTR_mmbuilder___AClosureDecl____variable(variable[8]) /*AClosureDecl::_variable*/ = variable[9];
4242 return_label123: while(false);
4243 tracehead = trace.prev;
4244 return;
4245 }
4246 void mmbuilder___PType___check_visibility(val_t self, val_t param0, val_t param1) {
4247 struct trace_t trace = {NULL, NULL, 1199, LOCATE_mmbuilder___PType___check_visibility};
4248 val_t *variable = NULL;
4249 void **closurevariable = NULL;
4250 trace.prev = tracehead; tracehead = &trace;
4251 trace.file = LOCATE_mmbuilder;
4252 fprintf(stderr, "Deferred method called");
4253 fprintf(stderr, " (%s:%d)\n", LOCATE_mmbuilder, 1199);
4254 nit_exit(1);
4255 tracehead = trace.prev;
4256 return;
4257 }
4258 void mmbuilder___AType___check_visibility(val_t self, val_t param0, val_t param1) {
4259 struct trace_t trace = {NULL, NULL, 1204, LOCATE_mmbuilder___AType___check_visibility};
4260 val_t variable[16];
4261 void **closurevariable = NULL;
4262 trace.prev = tracehead; tracehead = &trace;
4263 trace.file = LOCATE_mmbuilder;
4264 variable[0] = self;
4265 variable[1] = param0;
4266 variable[2] = param1;
4267 variable[4] = CALL_abstractmetamodel___MMLocalProperty___global( variable[2] /*p*/)( variable[2] /*p*/) /*MMLocalProperty::global*/;
4268 variable[4] = CALL_abstractmetamodel___MMGlobalProperty___visibility_level(variable[4])(variable[4]) /*MMGlobalProperty::visibility_level*/;
4269 variable[4] = TAG_Bool(UNTAG_Int(variable[4])>=UNTAG_Int( TAG_Int(3)));
4270 if (UNTAG_Bool(variable[4])) { /*if*/
4271 goto return_label124;
4272 }
4273 variable[5] = variable[0];
4274 variable[5] = CALL_syntax_base___PType___get_stype(variable[5])(variable[5], variable[1] /*v*/) /*AType::get_stype*/;
4275 variable[4] = variable[5];
4276 variable[5] = TAG_Bool(( variable[4] /*t*/ == NIT_NULL /*null*/) || (( variable[4] /*t*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*t*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*t*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*t*/)( variable[4] /*t*/, NIT_NULL /*null*/) /*Object::==*/)))));
4277 if (UNTAG_Bool(variable[5])) { /*if*/
4278 goto return_label124;
4279 }
4280 variable[6] = CALL_static_type___MMType___local_class( variable[4] /*t*/)( variable[4] /*t*/) /*MMType::local_class*/;
4281 variable[5] = variable[6];
4282 variable[6] = TAG_Bool(( variable[5] /*bc*/ == NIT_NULL /*null*/) || (( variable[5] /*bc*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*bc*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*bc*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*bc*/)( variable[5] /*bc*/, NIT_NULL /*null*/) /*Object::==*/)))));
4283 if (UNTAG_Bool(variable[6])) { /*if*/
4284 goto return_label124;
4285 }
4286 variable[6] = CALL_abstractmetamodel___MMLocalClass___global( variable[5] /*bc*/)( variable[5] /*bc*/) /*MMLocalClass::global*/;
4287 variable[6] = CALL_abstractmetamodel___MMGlobalClass___visibility_level(variable[6])(variable[6]) /*MMGlobalClass::visibility_level*/;
4288 variable[6] = TAG_Bool(UNTAG_Int(variable[6])>=UNTAG_Int( TAG_Int(3)));
4289 if (UNTAG_Bool(variable[6])) { /*if*/
4290 variable[6] = variable[0];
4291 variable[7] = NEW_Array_array___Array___with_capacity(TAG_Int(5)); /*new Array[String]*/
4292 variable[8] = NEW_String_string___String___with_native(BOX_NativeString("Access error: Class "), TAG_Int(20)); /*new String*/
4293 variable[9] = variable[8];
4294 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[9]) /*AbstractArray::add*/;
4295 variable[10] = variable[5] /*bc*/;
4296 variable[10] = CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/;
4297 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[10]) /*AbstractArray::add*/;
4298 variable[11] = NEW_String_string___String___with_native(BOX_NativeString(" is private and cannot be used in the signature of the non-private property "), TAG_Int(76)); /*new String*/
4299 variable[12] = variable[11];
4300 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[12]) /*AbstractArray::add*/;
4301 variable[13] = variable[2] /*p*/;
4302 variable[13] = CALL_string___Object___to_s(variable[13])(variable[13]) /*Object::to_s*/;
4303 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[13]) /*AbstractArray::add*/;
4304 variable[14] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)); /*new String*/
4305 variable[15] = variable[14];
4306 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[15]) /*AbstractArray::add*/;
4307 variable[7] = CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/;
4308 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[6], variable[7]) /*AbsSyntaxVisitor::error*/;
4309 }
4310 variable[6] = variable[0];
4311 variable[6] = CALL_parser_nodes___AType___n_types(variable[6])(variable[6]) /*AType::n_types*/;
4312 variable[6] = CALL_abstract_collection___Collection___iterator(variable[6])(variable[6]) /*List::iterator*/;
4313 while (true) { /*for*/
4314 variable[7] = CALL_abstract_collection___Iterator___is_ok(variable[6])(variable[6]) /*ListIterator::is_ok*/;
4315 if (!UNTAG_Bool(variable[7])) break; /*for*/
4316 variable[7] = CALL_abstract_collection___Iterator___item(variable[6])(variable[6]) /*ListIterator::item*/;
4317 variable[8] = variable[7];
4318 CALL_mmbuilder___PType___check_visibility( variable[8] /*n*/)( variable[8] /*n*/, variable[1] /*v*/, variable[2] /*p*/) /*PType::check_visibility*/;
4319 continue_125: while(0);
4320 CALL_abstract_collection___Iterator___next(variable[6])(variable[6]) /*ListIterator::next*/;
4321 }
4322 break_125: while(0);
4323 return_label124: while(false);
4324 tracehead = trace.prev;
4325 return;
4326 }
4327 void mmbuilder___PExpr___accept_class_builder(val_t self, val_t param0) {
4328 struct trace_t trace = {NULL, NULL, 1221, LOCATE_mmbuilder___PExpr___accept_class_builder};
4329 val_t variable[3];
4330 void **closurevariable = NULL;
4331 trace.prev = tracehead; tracehead = &trace;
4332 trace.file = LOCATE_mmbuilder;
4333 variable[0] = self;
4334 variable[1] = param0;
4335 return_label126: while(false);
4336 tracehead = trace.prev;
4337 return;
4338 }
4339 void mmbuilder___PExpr___accept_property_builder(val_t self, val_t param0) {
4340 struct trace_t trace = {NULL, NULL, 1222, LOCATE_mmbuilder___PExpr___accept_property_builder};
4341 val_t variable[3];
4342 void **closurevariable = NULL;
4343 trace.prev = tracehead; tracehead = &trace;
4344 trace.file = LOCATE_mmbuilder;
4345 variable[0] = self;
4346 variable[1] = param0;
4347 return_label127: while(false);
4348 tracehead = trace.prev;
4349 return;
4350 }
4351 void mmbuilder___PExpr___accept_property_verifier(val_t self, val_t param0) {
4352 struct trace_t trace = {NULL, NULL, 1223, LOCATE_mmbuilder___PExpr___accept_property_verifier};
4353 val_t variable[3];
4354 void **closurevariable = NULL;
4355 trace.prev = tracehead; tracehead = &trace;
4356 trace.file = LOCATE_mmbuilder;
4357 variable[0] = self;
4358 variable[1] = param0;
4359 return_label128: while(false);
4360 tracehead = trace.prev;
4361 return;
4362 }