misc: update Changelog and NOTICE; remove BUGS and TODO
[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 struct WBT_ **closurevariable = NULL;
7 trace.prev = tracehead; tracehead = &trace;
8 trace.file = LOCATE_mmbuilder;
9 /* Register variable[0]: Local variable */
10 variable[0] = self;
11 /* Register variable[1]: Local variable */
12 variable[1] = param0;
13 /* Register variable[2]: Local variable */
14 variable[2] = param1;
15 /* Register variable[3]: Method return value and escape marker */
16 /* Register variable[4]: Result */
17 variable[4] = CALL_abstractmetamodel___MMLocalClass___cshe( variable[1] /*a*/)( variable[1] /*a*/) /*MMLocalClass::cshe*/;
18 /* Register variable[4]: Result */
19 variable[4] = CALL_partial_order___PartialOrderElement___rank(variable[4])(variable[4]) /*PartialOrderElement::rank*/;
20 /* Register variable[5]: Result */
21 variable[5] = CALL_abstractmetamodel___MMLocalClass___cshe( variable[2] /*b*/)( variable[2] /*b*/) /*MMLocalClass::cshe*/;
22 /* Register variable[5]: Result */
23 variable[5] = CALL_partial_order___PartialOrderElement___rank(variable[5])(variable[5]) /*PartialOrderElement::rank*/;
24 /* Register variable[4]: Result */
25 variable[4] = CALL_kernel___Comparable_____leqg(variable[4])(variable[4], variable[5]) /*Int::<=>*/;
26 variable[3] = variable[4];
27 goto return_label0;
28 return_label0: while(false);
29 tracehead = trace.prev;
30 return variable[3];
31 }
32 void mmbuilder___CSHSorter___init(val_t self, int* init_table) {
33 struct trace_t trace = {NULL, NULL, 32, LOCATE_mmbuilder___CSHSorter___init};
34 val_t variable[2];
35 struct WBT_ **closurevariable = NULL;
36 trace.prev = tracehead; tracehead = &trace;
37 trace.file = LOCATE_mmbuilder;
38 /* Register variable[0]: Local variable */
39 variable[0] = self;
40 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_CSHSorter].i]) return;
41 /* Register variable[1]: Method return value and escape marker */
42 return_label1: while(false);
43 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_CSHSorter].i] = 1;
44 tracehead = trace.prev;
45 return;
46 }
47 void mmbuilder___MMSrcModule___do_mmbuilder(val_t self, val_t param0) {
48 struct trace_t trace = {NULL, NULL, 36, LOCATE_mmbuilder___MMSrcModule___do_mmbuilder};
49 static val_t once_value_4; static int once_bool_4; /* Once value for variable[7]*/
50 val_t variable[19];
51 struct WBT_ **closurevariable = NULL;
52 trace.prev = tracehead; tracehead = &trace;
53 trace.file = LOCATE_mmbuilder;
54 /* Register variable[0]: Local variable */
55 variable[0] = self;
56 /* Register variable[1]: Local variable */
57 variable[1] = param0;
58 /* Register variable[2]: Method return value and escape marker */
59 CALL_inheritance___MMModule___import_global_classes(variable[0])(variable[0]) /*MMModule::import_global_classes*/;
60 /* Register variable[3]: Local variable */
61 /* Register variable[4]: Result */
62 variable[4] = NEW_ClassBuilderVisitor_mmbuilder___ClassBuilderVisitor___init( variable[1] /*tc*/, variable[0]) /*new ClassBuilderVisitor*/;
63 variable[3] = variable[4];
64 /* Register variable[4]: Result */
65 variable[4] = CALL_syntax_base___MMSrcModule___node(variable[0])(variable[0]) /*MMSrcModule::node*/;
66 CALL_parser_prod___Visitor___visit( variable[3] /*mmbv*/)( variable[3] /*mmbv*/, variable[4]) /*ClassBuilderVisitor::visit*/;
67 /* Register variable[4]: Result */
68 variable[4] = CALL_mmloader___ToolContext___error_count( variable[1] /*tc*/)( variable[1] /*tc*/) /*ToolContext::error_count*/;
69 /* Register variable[4]: Result */
70 variable[4] = TAG_Bool(UNTAG_Int(variable[4])>UNTAG_Int( TAG_Int(0)));
71 if (UNTAG_Bool(variable[4])) { /*if*/
72 exit(UNTAG_Int( TAG_Int(1)));
73 }
74 CALL_inheritance___MMModule___import_local_classes(variable[0])(variable[0]) /*MMModule::import_local_classes*/;
75 /* Register variable[4]: Local variable */
76 /* Register variable[5]: Result */
77 variable[5] = NEW_ClassSpecializationBuilderVisitor_mmbuilder___ClassSpecializationBuilderVisitor___init( variable[1] /*tc*/, variable[0]) /*new ClassSpecializationBuilderVisitor*/;
78 variable[4] = variable[5];
79 /* Register variable[5]: Result */
80 variable[5] = CALL_syntax_base___MMSrcModule___node(variable[0])(variable[0]) /*MMSrcModule::node*/;
81 CALL_parser_prod___Visitor___visit( variable[4] /*mmbv1*/)( variable[4] /*mmbv1*/, variable[5]) /*ClassSpecializationBuilderVisitor::visit*/;
82 /* Register variable[5]: Result */
83 variable[5] = CALL_mmloader___ToolContext___error_count( variable[1] /*tc*/)( variable[1] /*tc*/) /*ToolContext::error_count*/;
84 /* Register variable[5]: Result */
85 variable[5] = TAG_Bool(UNTAG_Int(variable[5])>UNTAG_Int( TAG_Int(0)));
86 if (UNTAG_Bool(variable[5])) { /*if*/
87 exit(UNTAG_Int( TAG_Int(1)));
88 }
89 /* Register variable[5]: Result */
90 variable[5] = CALL_abstractmetamodel___MMModule___local_classes(variable[0])(variable[0]) /*MMModule::local_classes*/;
91 /* Register variable[5]: For iterator */
92 variable[5] = CALL_abstract_collection___Collection___iterator(variable[5])(variable[5]) /*AbstractArrayRead::iterator*/;
93 while (true) { /*for*/
94 /* Register variable[6]: For 'is_ok' result */
95 variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*ArrayIterator::is_ok*/;
96 if (!UNTAG_Bool(variable[6])) break; /*for*/
97 variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
98 /* Register variable[7]: Local variable */
99 variable[7] = variable[6];
100 /* Register variable[8]: Result */
101 variable[8] = CALL_abstractmetamodel___MMLocalClass___global( variable[7] /*c*/)( variable[7] /*c*/) /*MMLocalClass::global*/;
102 /* Register variable[8]: Result */
103 variable[8] = CALL_abstractmetamodel___MMGlobalClass___intro(variable[8])(variable[8]) /*MMGlobalClass::intro*/;
104 /* Register variable[8]: Result */
105 variable[8] = CALL_abstractmetamodel___MMLocalClass___module(variable[8])(variable[8]) /*MMLocalClass::module*/;
106 /* Register variable[8]: Result */
107 variable[8] = CALL_abstractmetamodel___MMModule___visibility_for(variable[0])(variable[0], variable[8]) /*MMModule::visibility_for*/;
108 /* Register variable[9]: Result */
109 variable[9] = CALL_abstractmetamodel___MMLocalClass___global( variable[7] /*c*/)( variable[7] /*c*/) /*MMLocalClass::global*/;
110 /* Register variable[9]: Result */
111 variable[9] = CALL_abstractmetamodel___MMGlobalClass___visibility_level(variable[9])(variable[9]) /*MMGlobalClass::visibility_level*/;
112 /* Register variable[8]: Result */
113 variable[8] = TAG_Bool(UNTAG_Int(variable[8])<UNTAG_Int(variable[9]));
114 if (UNTAG_Bool(variable[8])) { /*if*/
115 goto continue_3;
116 }
117 CALL_inheritance___MMLocalClass___compute_super_classes( variable[7] /*c*/)( variable[7] /*c*/) /*MMLocalClass::compute_super_classes*/;
118 continue_3: while(0);
119 CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*ArrayIterator::next*/;
120 }
121 break_3: while(0);
122 /* Register variable[5]: Local variable */
123 /* Register variable[6]: Result */
124 variable[6] = CALL_abstractmetamodel___MMModule___class_specialization_hierarchy(variable[0])(variable[0]) /*MMModule::class_specialization_hierarchy*/;
125 /* Register variable[6]: Result */
126 variable[6] = CALL_array___Collection___to_a(variable[6])(variable[6]) /*Collection::to_a*/;
127 variable[5] = variable[6];
128 /* Register variable[6]: Local variable */
129 /* Register variable[7]: Once expression result */
130 if (once_bool_4) variable[7] = once_value_4;
131 else {
132 /* Register variable[7]: Result */
133 variable[7] = NEW_CSHSorter_mmbuilder___CSHSorter___init() /*new CSHSorter*/;
134 once_value_4 = variable[7];
135 once_bool_4 = true;
136 }
137 /* Register variable[7]: Result */
138 variable[6] = variable[7];
139 CALL_sorter___AbstractSorter___sort( variable[6] /*sorter*/)( variable[6] /*sorter*/, variable[5] /*classes*/) /*AbstractSorter::sort*/;
140 /* Register variable[7]: Local variable */
141 /* Register variable[8]: Result */
142 variable[8] = NEW_ClassAncestorBuilder_mmbuilder___ClassAncestorBuilder___init( variable[1] /*tc*/, variable[0]) /*new ClassAncestorBuilder*/;
143 variable[7] = variable[8];
144 /* Register variable[8]: For iterator */
145 variable[8] = CALL_abstract_collection___Collection___iterator( variable[5] /*classes*/)( variable[5] /*classes*/) /*AbstractArrayRead::iterator*/;
146 while (true) { /*for*/
147 /* Register variable[9]: For 'is_ok' result */
148 variable[9] = CALL_abstract_collection___Iterator___is_ok(variable[8])(variable[8]) /*ArrayIterator::is_ok*/;
149 if (!UNTAG_Bool(variable[9])) break; /*for*/
150 variable[9] = CALL_abstract_collection___Iterator___item(variable[8])(variable[8]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
151 /* Register variable[10]: Local variable */
152 variable[10] = variable[9];
153 CALL_mmbuilder___MMLocalClass___accept_class_visitor( variable[10] /*c*/)( variable[10] /*c*/, variable[7] /*mmbv1b*/) /*MMLocalClass::accept_class_visitor*/;
154 CALL_inheritance___MMLocalClass___compute_ancestors( variable[10] /*c*/)( variable[10] /*c*/) /*MMLocalClass::compute_ancestors*/;
155 continue_5: while(0);
156 CALL_abstract_collection___Iterator___next(variable[8])(variable[8]) /*ArrayIterator::next*/;
157 }
158 break_5: while(0);
159 /* Register variable[8]: Result */
160 variable[8] = CALL_mmloader___ToolContext___error_count( variable[1] /*tc*/)( variable[1] /*tc*/) /*ToolContext::error_count*/;
161 /* Register variable[8]: Result */
162 variable[8] = TAG_Bool(UNTAG_Int(variable[8])>UNTAG_Int( TAG_Int(0)));
163 if (UNTAG_Bool(variable[8])) { /*if*/
164 exit(UNTAG_Int( TAG_Int(1)));
165 }
166 /* Register variable[8]: Local variable */
167 /* Register variable[9]: Result */
168 variable[9] = NEW_ClassVerifierVisitor_mmbuilder___ClassVerifierVisitor___init( variable[1] /*tc*/, variable[0]) /*new ClassVerifierVisitor*/;
169 variable[8] = variable[9];
170 /* Register variable[9]: For iterator */
171 variable[9] = CALL_abstract_collection___Collection___iterator( variable[5] /*classes*/)( variable[5] /*classes*/) /*AbstractArrayRead::iterator*/;
172 while (true) { /*for*/
173 /* Register variable[10]: For 'is_ok' result */
174 variable[10] = CALL_abstract_collection___Iterator___is_ok(variable[9])(variable[9]) /*ArrayIterator::is_ok*/;
175 if (!UNTAG_Bool(variable[10])) break; /*for*/
176 variable[10] = CALL_abstract_collection___Iterator___item(variable[9])(variable[9]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
177 /* Register variable[11]: Local variable */
178 variable[11] = variable[10];
179 CALL_mmbuilder___MMLocalClass___accept_class_visitor( variable[11] /*c*/)( variable[11] /*c*/, variable[8] /*mmbv1b*/) /*MMLocalClass::accept_class_visitor*/;
180 continue_6: while(0);
181 CALL_abstract_collection___Iterator___next(variable[9])(variable[9]) /*ArrayIterator::next*/;
182 }
183 break_6: while(0);
184 /* Register variable[9]: Result */
185 variable[9] = CALL_mmloader___ToolContext___error_count( variable[1] /*tc*/)( variable[1] /*tc*/) /*ToolContext::error_count*/;
186 /* Register variable[9]: Result */
187 variable[9] = TAG_Bool(UNTAG_Int(variable[9])>UNTAG_Int( TAG_Int(0)));
188 if (UNTAG_Bool(variable[9])) { /*if*/
189 exit(UNTAG_Int( TAG_Int(1)));
190 }
191 /* Register variable[9]: Local variable */
192 /* Register variable[10]: Result */
193 variable[10] = NEW_PropertyBuilderVisitor_mmbuilder___PropertyBuilderVisitor___init( variable[1] /*tc*/, variable[0]) /*new PropertyBuilderVisitor*/;
194 variable[9] = variable[10];
195 /* Register variable[10]: For iterator */
196 variable[10] = CALL_abstract_collection___Collection___iterator( variable[5] /*classes*/)( variable[5] /*classes*/) /*AbstractArrayRead::iterator*/;
197 while (true) { /*for*/
198 /* Register variable[11]: For 'is_ok' result */
199 variable[11] = CALL_abstract_collection___Iterator___is_ok(variable[10])(variable[10]) /*ArrayIterator::is_ok*/;
200 if (!UNTAG_Bool(variable[11])) break; /*for*/
201 variable[11] = CALL_abstract_collection___Iterator___item(variable[10])(variable[10]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
202 /* Register variable[12]: Local variable */
203 variable[12] = variable[11];
204 CALL_inheritance___MMLocalClass___inherit_global_properties( variable[12] /*c*/)( variable[12] /*c*/) /*MMLocalClass::inherit_global_properties*/;
205 CALL_mmbuilder___MMLocalClass___accept_class_visitor( variable[12] /*c*/)( variable[12] /*c*/, variable[9] /*mmbv2*/) /*MMLocalClass::accept_class_visitor*/;
206 /* Register variable[13]: Result */
207 variable[13] = TAG_Bool(( variable[12] /*c*/==NIT_NULL) || VAL_ISA( variable[12] /*c*/, COLOR_MMSrcLocalClass, ID_MMSrcLocalClass)) /*cast MMSrcLocalClass*/;
208 /* Ensure var variable[13]: Left 'and' operand*/
209 if (UNTAG_Bool(variable[13])) { /* and */
210 /* Register variable[13]: Result */
211 variable[13] = CALL_abstractmetamodel___MMLocalClass___global( variable[12] /*c*/)( variable[12] /*c*/) /*MMLocalClass::global*/;
212 /* Register variable[13]: Result */
213 variable[13] = CALL_abstractmetamodel___MMGlobalClass___intro(variable[13])(variable[13]) /*MMGlobalClass::intro*/;
214 /* Register variable[13]: Result */
215 variable[13] = TAG_Bool((variable[13] == variable[12] /*c*/) || ((variable[13] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[13])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[13], variable[12] /*c*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[13])(variable[13], variable[12] /*c*/) /*Object::==*/)))));
216 }
217 /* Register variable[13]: Result */
218 /* Ensure var variable[13]: Left 'and' operand*/
219 if (UNTAG_Bool(variable[13])) { /* and */
220 /* Register variable[13]: Result */
221 variable[13] = CALL_abstractmetamodel___MMLocalClass___global( variable[12] /*c*/)( variable[12] /*c*/) /*MMLocalClass::global*/;
222 /* Register variable[13]: Result */
223 variable[13] = CALL_abstractmetamodel___MMGlobalClass___is_universal(variable[13])(variable[13]) /*MMGlobalClass::is_universal*/;
224 variable[13] = TAG_Bool(!UNTAG_Bool(variable[13]));
225 }
226 /* Register variable[13]: Result */
227 /* Ensure var variable[13]: Left 'and' operand*/
228 if (UNTAG_Bool(variable[13])) { /* and */
229 /* Register variable[13]: Result */
230 variable[13] = CALL_abstractmetamodel___MMLocalClass___global( variable[12] /*c*/)( variable[12] /*c*/) /*MMLocalClass::global*/;
231 /* Register variable[13]: Result */
232 variable[13] = CALL_abstractmetamodel___MMGlobalClass___is_interface(variable[13])(variable[13]) /*MMGlobalClass::is_interface*/;
233 variable[13] = TAG_Bool(!UNTAG_Bool(variable[13]));
234 }
235 /* Register variable[13]: Result */
236 if (UNTAG_Bool(variable[13])) { /*if*/
237 CALL_mmbuilder___MMSrcLocalClass___process_default_constructors( variable[12] /*c*/)( variable[12] /*c*/, variable[9] /*mmbv2*/) /*MMSrcLocalClass::process_default_constructors*/;
238 }
239 continue_7: while(0);
240 CALL_abstract_collection___Iterator___next(variable[10])(variable[10]) /*ArrayIterator::next*/;
241 }
242 break_7: while(0);
243 /* Register variable[10]: Result */
244 variable[10] = CALL_mmloader___ToolContext___error_count( variable[1] /*tc*/)( variable[1] /*tc*/) /*ToolContext::error_count*/;
245 /* Register variable[10]: Result */
246 variable[10] = TAG_Bool(UNTAG_Int(variable[10])>UNTAG_Int( TAG_Int(0)));
247 if (UNTAG_Bool(variable[10])) { /*if*/
248 exit(UNTAG_Int( TAG_Int(1)));
249 }
250 /* Register variable[10]: Local variable */
251 /* Register variable[11]: Result */
252 variable[11] = NEW_PropertyVerifierVisitor_mmbuilder___PropertyVerifierVisitor___init( variable[1] /*tc*/, variable[0]) /*new PropertyVerifierVisitor*/;
253 variable[10] = variable[11];
254 /* Register variable[11]: For iterator */
255 variable[11] = CALL_abstract_collection___Collection___iterator( variable[5] /*classes*/)( variable[5] /*classes*/) /*AbstractArrayRead::iterator*/;
256 while (true) { /*for*/
257 /* Register variable[12]: For 'is_ok' result */
258 variable[12] = CALL_abstract_collection___Iterator___is_ok(variable[11])(variable[11]) /*ArrayIterator::is_ok*/;
259 if (!UNTAG_Bool(variable[12])) break; /*for*/
260 variable[12] = CALL_abstract_collection___Iterator___item(variable[11])(variable[11]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
261 /* Register variable[13]: Local variable */
262 variable[13] = variable[12];
263 CALL_mmbuilder___MMLocalClass___accept_properties_visitor( variable[13] /*c*/)( variable[13] /*c*/, variable[10] /*mmbv3*/) /*MMLocalClass::accept_properties_visitor*/;
264 continue_8: while(0);
265 CALL_abstract_collection___Iterator___next(variable[11])(variable[11]) /*ArrayIterator::next*/;
266 }
267 break_8: while(0);
268 /* Register variable[11]: For iterator */
269 variable[11] = CALL_abstract_collection___Collection___iterator( variable[5] /*classes*/)( variable[5] /*classes*/) /*AbstractArrayRead::iterator*/;
270 while (true) { /*for*/
271 /* Register variable[12]: For 'is_ok' result */
272 variable[12] = CALL_abstract_collection___Iterator___is_ok(variable[11])(variable[11]) /*ArrayIterator::is_ok*/;
273 if (!UNTAG_Bool(variable[12])) break; /*for*/
274 variable[12] = CALL_abstract_collection___Iterator___item(variable[11])(variable[11]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
275 /* Register variable[13]: Local variable */
276 variable[13] = variable[12];
277 /* Register variable[14]: Result */
278 variable[14] = CALL_abstractmetamodel___MMLocalClass___global_properties( variable[13] /*c*/)( variable[13] /*c*/) /*MMLocalClass::global_properties*/;
279 /* Register variable[14]: For iterator */
280 variable[14] = CALL_abstract_collection___Collection___iterator(variable[14])(variable[14]) /*Collection::iterator*/;
281 while (true) { /*for*/
282 /* Register variable[15]: For 'is_ok' result */
283 variable[15] = CALL_abstract_collection___Iterator___is_ok(variable[14])(variable[14]) /*Iterator::is_ok*/;
284 if (!UNTAG_Bool(variable[15])) break; /*for*/
285 variable[15] = CALL_abstract_collection___Iterator___item(variable[14])(variable[14]) /*Iterator::item*/ /* Ensure var: For item*/;
286 /* Register variable[16]: Local variable */
287 variable[16] = variable[15];
288 /* Register variable[17]: Result */
289 variable[17] = CALL_abstractmetamodel___MMGlobalProperty___intro( variable[16] /*g*/)( variable[16] /*g*/) /*MMGlobalProperty::intro*/;
290 /* Register variable[17]: Result */
291 variable[17] = CALL_abstractmetamodel___MMLocalProperty___module(variable[17])(variable[17]) /*MMLocalProperty::module*/;
292 /* Register variable[17]: Result */
293 variable[17] = CALL_abstractmetamodel___MMModule___visibility_for(variable[0])(variable[0], variable[17]) /*MMModule::visibility_for*/;
294 /* Register variable[18]: Result */
295 variable[18] = CALL_abstractmetamodel___MMGlobalProperty___visibility_level( variable[16] /*g*/)( variable[16] /*g*/) /*MMGlobalProperty::visibility_level*/;
296 /* Register variable[17]: Result */
297 variable[17] = TAG_Bool(UNTAG_Int(variable[17])<UNTAG_Int(variable[18]));
298 if (UNTAG_Bool(variable[17])) { /*if*/
299 goto continue_10;
300 }
301 /* Register variable[17]: Local variable */
302 /* Register variable[18]: Result */
303 variable[18] = CALL_abstractmetamodel___MMLocalClass_____bra( variable[13] /*c*/)( variable[13] /*c*/, variable[16] /*g*/) /*MMLocalClass::[]*/;
304 variable[17] = variable[18];
305 continue_10: while(0);
306 CALL_abstract_collection___Iterator___next(variable[14])(variable[14]) /*Iterator::next*/;
307 }
308 break_10: while(0);
309 continue_9: while(0);
310 CALL_abstract_collection___Iterator___next(variable[11])(variable[11]) /*ArrayIterator::next*/;
311 }
312 break_9: while(0);
313 /* Register variable[11]: Result */
314 variable[11] = CALL_mmloader___ToolContext___error_count( variable[1] /*tc*/)( variable[1] /*tc*/) /*ToolContext::error_count*/;
315 /* Register variable[11]: Result */
316 variable[11] = TAG_Bool(UNTAG_Int(variable[11])>UNTAG_Int( TAG_Int(0)));
317 if (UNTAG_Bool(variable[11])) { /*if*/
318 exit(UNTAG_Int( TAG_Int(1)));
319 }
320 return_label2: while(false);
321 tracehead = trace.prev;
322 return;
323 }
324 void mmbuilder___MMLocalClass___accept_class_visitor(val_t self, val_t param0) {
325 struct trace_t trace = {NULL, NULL, 125, LOCATE_mmbuilder___MMLocalClass___accept_class_visitor};
326 val_t variable[3];
327 struct WBT_ **closurevariable = NULL;
328 trace.prev = tracehead; tracehead = &trace;
329 trace.file = LOCATE_mmbuilder;
330 /* Register variable[0]: Local variable */
331 variable[0] = self;
332 /* Register variable[1]: Local variable */
333 variable[1] = param0;
334 /* Register variable[2]: Method return value and escape marker */
335 return_label11: while(false);
336 tracehead = trace.prev;
337 return;
338 }
339 void mmbuilder___MMLocalClass___accept_properties_visitor(val_t self, val_t param0) {
340 struct trace_t trace = {NULL, NULL, 130, LOCATE_mmbuilder___MMLocalClass___accept_properties_visitor};
341 val_t variable[3];
342 struct WBT_ **closurevariable = NULL;
343 trace.prev = tracehead; tracehead = &trace;
344 trace.file = LOCATE_mmbuilder;
345 /* Register variable[0]: Local variable */
346 variable[0] = self;
347 /* Register variable[1]: Local variable */
348 variable[1] = param0;
349 /* Register variable[2]: Method return value and escape marker */
350 return_label12: while(false);
351 tracehead = trace.prev;
352 return;
353 }
354 void mmbuilder___MMSrcLocalClass___accept_class_visitor(val_t self, val_t param0) {
355 struct trace_t trace = {NULL, NULL, 137, LOCATE_mmbuilder___MMSrcLocalClass___accept_class_visitor};
356 val_t variable[6];
357 struct WBT_ **closurevariable = NULL;
358 trace.prev = tracehead; tracehead = &trace;
359 trace.file = LOCATE_mmbuilder;
360 /* Register variable[0]: Local variable */
361 variable[0] = self;
362 /* Register variable[1]: Local variable */
363 variable[1] = param0;
364 /* Register variable[2]: Method return value and escape marker */
365 /* Register variable[3]: Result */
366 variable[3] = CALL_syntax_base___MMSrcLocalClass___nodes(variable[0])(variable[0]) /*MMSrcLocalClass::nodes*/;
367 /* Register variable[3]: For iterator */
368 variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*AbstractArrayRead::iterator*/;
369 while (true) { /*for*/
370 /* Register variable[4]: For 'is_ok' result */
371 variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ArrayIterator::is_ok*/;
372 if (!UNTAG_Bool(variable[4])) break; /*for*/
373 variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
374 /* Register variable[5]: Local variable */
375 variable[5] = variable[4];
376 CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[5] /*n*/) /*Visitor::visit*/;
377 continue_14: while(0);
378 CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ArrayIterator::next*/;
379 }
380 break_14: while(0);
381 return_label13: while(false);
382 tracehead = trace.prev;
383 return;
384 }
385 void mmbuilder___MMSrcLocalClass___accept_properties_visitor(val_t self, val_t param0) {
386 struct trace_t trace = {NULL, NULL, 144, LOCATE_mmbuilder___MMSrcLocalClass___accept_properties_visitor};
387 val_t variable[6];
388 struct WBT_ **closurevariable = NULL;
389 trace.prev = tracehead; tracehead = &trace;
390 trace.file = LOCATE_mmbuilder;
391 /* Register variable[0]: Local variable */
392 variable[0] = self;
393 /* Register variable[1]: Local variable */
394 variable[1] = param0;
395 /* Register variable[2]: Method return value and escape marker */
396 /* Register variable[3]: Result */
397 variable[3] = CALL_syntax_base___MMSrcLocalClass___nodes(variable[0])(variable[0]) /*MMSrcLocalClass::nodes*/;
398 /* Register variable[3]: For iterator */
399 variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*AbstractArrayRead::iterator*/;
400 while (true) { /*for*/
401 /* Register variable[4]: For 'is_ok' result */
402 variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ArrayIterator::is_ok*/;
403 if (!UNTAG_Bool(variable[4])) break; /*for*/
404 variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
405 /* Register variable[5]: Local variable */
406 variable[5] = variable[4];
407 CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[5] /*n*/) /*Visitor::visit*/;
408 continue_16: while(0);
409 CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ArrayIterator::next*/;
410 }
411 break_16: while(0);
412 /* Register variable[3]: Result */
413 variable[3] = CALL_syntax_base___MMSrcLocalClass___src_local_properties(variable[0])(variable[0]) /*MMSrcLocalClass::src_local_properties*/;
414 /* Register variable[3]: For iterator */
415 variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*MapRead::iterator*/;
416 while (true) { /*for*/
417 /* Register variable[4]: For 'is_ok' result */
418 variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*Iterator::is_ok*/;
419 if (!UNTAG_Bool(variable[4])) break; /*for*/
420 variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*Iterator::item*/ /* Ensure var: For item*/;
421 /* Register variable[5]: Local variable */
422 variable[5] = variable[4];
423 CALL_mmbuilder___MMLocalProperty___accept_property_visitor( variable[5] /*p*/)( variable[5] /*p*/, variable[1] /*v*/) /*MMLocalProperty::accept_property_visitor*/;
424 continue_17: while(0);
425 CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*Iterator::next*/;
426 }
427 break_17: while(0);
428 return_label15: while(false);
429 tracehead = trace.prev;
430 return;
431 }
432 void mmbuilder___MMSrcLocalClass___process_default_constructors(val_t self, val_t param0) {
433 struct trace_t trace = {NULL, NULL, 156, LOCATE_mmbuilder___MMSrcLocalClass___process_default_constructors};
434 static val_t once_value_22; static int once_bool_22; /* Once value for variable[9]*/
435 static val_t once_value_23 = NIT_NULL; /* Once value for string variable[9]*/
436 static val_t once_value_26 = NIT_NULL; /* Once value for string variable[10]*/
437 static val_t once_value_27 = NIT_NULL; /* Once value for string variable[10]*/
438 static val_t once_value_28 = NIT_NULL; /* Once value for string variable[10]*/
439 static val_t once_value_29 = NIT_NULL; /* Once value for string variable[10]*/
440 static val_t once_value_30 = NIT_NULL; /* Once value for string variable[10]*/
441 static val_t once_value_31 = NIT_NULL; /* Once value for string variable[10]*/
442 val_t variable[12];
443 struct WBT_ **closurevariable = NULL;
444 trace.prev = tracehead; tracehead = &trace;
445 trace.file = LOCATE_mmbuilder;
446 /* Register variable[0]: Local variable */
447 variable[0] = self;
448 /* Register variable[1]: Local variable */
449 variable[1] = param0;
450 /* Register variable[2]: Method return value and escape marker */
451 /* Register variable[3]: Result */
452 variable[3] = CALL_abstractmetamodel___MMLocalClass___global_properties(variable[0])(variable[0]) /*MMLocalClass::global_properties*/;
453 /* Register variable[3]: For iterator */
454 variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*Collection::iterator*/;
455 while (true) { /*for*/
456 /* Register variable[4]: For 'is_ok' result */
457 variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*Iterator::is_ok*/;
458 if (!UNTAG_Bool(variable[4])) break; /*for*/
459 variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*Iterator::item*/ /* Ensure var: For item*/;
460 /* Register variable[5]: Local variable */
461 variable[5] = variable[4];
462 /* Register variable[6]: Result */
463 variable[6] = CALL_abstractmetamodel___MMGlobalProperty___is_init( variable[5] /*gp*/)( variable[5] /*gp*/) /*MMGlobalProperty::is_init*/;
464 if (UNTAG_Bool(variable[6])) { /*if*/
465 /* Register variable[6]: Result */
466 variable[6] = CALL_abstractmetamodel___MMGlobalProperty___intro( variable[5] /*gp*/)( variable[5] /*gp*/) /*MMGlobalProperty::intro*/;
467 /* Register variable[6]: Result */
468 variable[6] = CALL_abstractmetamodel___MMLocalProperty___local_class(variable[6])(variable[6]) /*MMLocalProperty::local_class*/;
469 /* Register variable[6]: Result */
470 variable[6] = TAG_Bool((variable[6] == variable[0]) || ((variable[6] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[6])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[6],variable[0])):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[6])(variable[6], variable[0]) /*Object::==*/)))));
471 if (UNTAG_Bool(variable[6])) { /*if*/
472 goto return_label18;
473 }
474 }
475 continue_19: while(0);
476 CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*Iterator::next*/;
477 }
478 break_19: while(0);
479 /* Register variable[3]: Local variable */
480 /* Register variable[4]: Result */
481 variable[4] = NEW_ArraySet_array___ArraySet___init() /*new ArraySet[MMLocalProperty]*/;
482 variable[3] = variable[4];
483 /* Register variable[4]: Local variable */
484 /* Register variable[5]: Result */
485 variable[5] = NEW_ArraySet_array___ArraySet___init() /*new ArraySet[MMGlobalProperty]*/;
486 variable[4] = variable[5];
487 /* Register variable[5]: Result */
488 variable[5] = CALL_abstractmetamodel___MMLocalClass___che(variable[0])(variable[0]) /*MMLocalClass::che*/;
489 /* Register variable[5]: Result */
490 variable[5] = CALL_partial_order___PartialOrderElement___direct_greaters(variable[5])(variable[5]) /*PartialOrderElement::direct_greaters*/;
491 /* Register variable[5]: For iterator */
492 variable[5] = CALL_abstract_collection___Collection___iterator(variable[5])(variable[5]) /*AbstractArrayRead::iterator*/;
493 while (true) { /*for*/
494 /* Register variable[6]: For 'is_ok' result */
495 variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*ArrayIterator::is_ok*/;
496 if (!UNTAG_Bool(variable[6])) break; /*for*/
497 variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
498 /* Register variable[7]: Local variable */
499 variable[7] = variable[6];
500 /* Register variable[8]: Result */
501 variable[8] = CALL_abstractmetamodel___MMLocalClass___global( variable[7] /*sc*/)( variable[7] /*sc*/) /*MMLocalClass::global*/;
502 /* Register variable[8]: Result */
503 variable[8] = CALL_abstractmetamodel___MMGlobalClass___is_universal(variable[8])(variable[8]) /*MMGlobalClass::is_universal*/;
504 /* Ensure var variable[8]: Left 'or' operand*/
505 if (!UNTAG_Bool(variable[8])) { /* or */
506 /* Register variable[8]: Result */
507 variable[8] = CALL_abstractmetamodel___MMLocalClass___global( variable[7] /*sc*/)( variable[7] /*sc*/) /*MMLocalClass::global*/;
508 /* Register variable[8]: Result */
509 variable[8] = CALL_abstractmetamodel___MMGlobalClass___is_interface(variable[8])(variable[8]) /*MMGlobalClass::is_interface*/;
510 }
511 /* Register variable[8]: Result */
512 if (UNTAG_Bool(variable[8])) { /*if*/
513 goto continue_20;
514 }
515 /* Register variable[8]: Result */
516 variable[8] = CALL_abstractmetamodel___MMLocalClass___global_properties( variable[7] /*sc*/)( variable[7] /*sc*/) /*MMLocalClass::global_properties*/;
517 /* Register variable[8]: For iterator */
518 variable[8] = CALL_abstract_collection___Collection___iterator(variable[8])(variable[8]) /*Collection::iterator*/;
519 while (true) { /*for*/
520 /* Register variable[9]: For 'is_ok' result */
521 variable[9] = CALL_abstract_collection___Iterator___is_ok(variable[8])(variable[8]) /*Iterator::is_ok*/;
522 if (!UNTAG_Bool(variable[9])) break; /*for*/
523 variable[9] = CALL_abstract_collection___Iterator___item(variable[8])(variable[8]) /*Iterator::item*/ /* Ensure var: For item*/;
524 /* Register variable[10]: Local variable */
525 variable[10] = variable[9];
526 /* Register variable[11]: Result */
527 variable[11] = CALL_abstractmetamodel___MMGlobalProperty___is_init( variable[10] /*gp*/)( variable[10] /*gp*/) /*MMGlobalProperty::is_init*/;
528 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[11])))) { /*if*/
529 goto continue_21;
530 }
531 CALL_abstract_collection___SimpleCollection___add( variable[4] /*super_constructors*/)( variable[4] /*super_constructors*/, variable[10] /*gp*/) /*ArraySet::add*/;
532 continue_21: while(0);
533 CALL_abstract_collection___Iterator___next(variable[8])(variable[8]) /*Iterator::next*/;
534 }
535 break_21: while(0);
536 /* Register variable[8]: Local variable */
537 /* Register variable[9]: Once expression result */
538 if (once_bool_22) variable[9] = once_value_22;
539 else {
540 /* Register variable[9]: Once String constant */
541 if (once_value_23 != NIT_NULL) variable[9] = once_value_23;
542 else {
543 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("init"), TAG_Int(4)) /*new String*/;
544 once_value_23 = variable[9];
545 }
546 /* Register variable[9]: Result */
547 /* Register variable[9]: Result */
548 variable[9] = CALL_symbol___String___to_symbol(variable[9])(variable[9]) /*String::to_symbol*/;
549 once_value_22 = variable[9];
550 once_bool_22 = true;
551 }
552 /* Register variable[9]: Result */
553 variable[8] = variable[9];
554 /* Register variable[9]: Result */
555 variable[9] = CALL_abstractmetamodel___MMLocalClass___has_global_property_by_name( variable[7] /*sc*/)( variable[7] /*sc*/, variable[8] /*initname*/) /*MMLocalClass::has_global_property_by_name*/;
556 if (UNTAG_Bool(variable[9])) { /*if*/
557 /* Register variable[9]: Local variable */
558 /* Register variable[10]: Result */
559 variable[10] = CALL_abstractmetamodel___MMLocalClass___get_property_by_name( variable[7] /*sc*/)( variable[7] /*sc*/, variable[8] /*initname*/) /*MMLocalClass::get_property_by_name*/;
560 variable[9] = variable[10];
561 /* Register variable[10]: Result */
562 variable[10] = CALL_abstractmetamodel___MMLocalClass_____bra(variable[0])(variable[0], variable[9] /*gp*/) /*MMLocalClass::[]*/;
563 CALL_abstract_collection___SimpleCollection___add( variable[3] /*super_inits*/)( variable[3] /*super_inits*/, variable[10]) /*ArraySet::add*/;
564 }
565 continue_20: while(0);
566 CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*ArrayIterator::next*/;
567 }
568 break_20: while(0);
569 /* Register variable[5]: Local variable */
570 /* Register variable[6]: Result */
571 variable[6] = NEW_Array_array___Array___init() /*new Array[MMSrcAttribute]*/;
572 variable[5] = variable[6];
573 /* Register variable[6]: Result */
574 variable[6] = CALL_syntax_base___MMSrcLocalClass___src_local_properties(variable[0])(variable[0]) /*MMSrcLocalClass::src_local_properties*/;
575 /* Register variable[6]: For iterator */
576 variable[6] = CALL_abstract_collection___Collection___iterator(variable[6])(variable[6]) /*MapRead::iterator*/;
577 while (true) { /*for*/
578 /* Register variable[7]: For 'is_ok' result */
579 variable[7] = CALL_abstract_collection___Iterator___is_ok(variable[6])(variable[6]) /*Iterator::is_ok*/;
580 if (!UNTAG_Bool(variable[7])) break; /*for*/
581 variable[7] = CALL_abstract_collection___Iterator___item(variable[6])(variable[6]) /*Iterator::item*/ /* Ensure var: For item*/;
582 /* Register variable[8]: Local variable */
583 variable[8] = variable[7];
584 /* Register variable[9]: Result */
585 variable[9] = TAG_Bool(( variable[8] /*a*/==NIT_NULL) || VAL_ISA( variable[8] /*a*/, COLOR_MMSrcAttribute, ID_MMSrcAttribute)) /*cast MMSrcAttribute*/;
586 if (UNTAG_Bool(variable[9])) { /*if*/
587 /* Register variable[9]: Local variable */
588 /* Register variable[10]: Result */
589 variable[10] = CALL_syntax_base___MMLocalProperty___node( variable[8] /*a*/)( variable[8] /*a*/) /*MMSrcAttribute::node*/;
590 variable[9] = variable[10];
591 /* Register variable[10]: Result */
592 variable[10] = TAG_Bool(( variable[9] /*n*/==NIT_NULL) || VAL_ISA( variable[9] /*n*/, COLOR_AAttrPropdef, ID_AAttrPropdef)) /*cast AAttrPropdef*/;
593 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, 188); nit_exit(1);}
594 /* Register variable[10]: Result */
595 variable[10] = CALL_parser_nodes___AAttrPropdef___n_expr( variable[9] /*n*/)( variable[9] /*n*/) /*AAttrPropdef::n_expr*/;
596 /* Register variable[10]: Result */
597 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::==*/)))));
598 if (UNTAG_Bool(variable[10])) { /*if*/
599 CALL_abstract_collection___SimpleCollection___add( variable[5] /*unassigned_attributes*/)( variable[5] /*unassigned_attributes*/, variable[8] /*a*/) /*AbstractArray::add*/;
600 }
601 }
602 continue_24: while(0);
603 CALL_abstract_collection___Iterator___next(variable[6])(variable[6]) /*Iterator::next*/;
604 }
605 break_24: while(0);
606 /* Register variable[6]: Result */
607 variable[6] = CALL_abstract_collection___Collection___is_empty( variable[4] /*super_constructors*/)( variable[4] /*super_constructors*/) /*ArraySet::is_empty*/;
608 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[6])))) { /*if*/
609 /* Register variable[6]: Local variable */
610 /* Register variable[7]: Result */
611 variable[7] = NEW_Array_array___Array___init() /*new Array[MMLocalClass]*/;
612 variable[6] = variable[7];
613 /* Register variable[7]: For iterator */
614 variable[7] = CALL_abstract_collection___Collection___iterator( variable[4] /*super_constructors*/)( variable[4] /*super_constructors*/) /*ArraySet::iterator*/;
615 while (true) { /*for*/
616 /* Register variable[8]: For 'is_ok' result */
617 variable[8] = CALL_abstract_collection___Iterator___is_ok(variable[7])(variable[7]) /*Iterator::is_ok*/;
618 if (!UNTAG_Bool(variable[8])) break; /*for*/
619 variable[8] = CALL_abstract_collection___Iterator___item(variable[7])(variable[7]) /*Iterator::item*/ /* Ensure var: For item*/;
620 /* Register variable[9]: Local variable */
621 variable[9] = variable[8];
622 /* Register variable[10]: Local variable */
623 /* Register variable[11]: Result */
624 variable[11] = CALL_abstractmetamodel___MMGlobalProperty___local_class( variable[9] /*gp*/)( variable[9] /*gp*/) /*MMGlobalProperty::local_class*/;
625 variable[10] = variable[11];
626 /* Register variable[11]: Result */
627 variable[11] = CALL_abstract_collection___Collection___has( variable[6] /*supers*/)( variable[6] /*supers*/, variable[10] /*sc*/) /*AbstractArrayRead::has*/;
628 if (UNTAG_Bool(variable[11])) { /*if*/
629 goto continue_25;
630 }
631 /* Register variable[11]: Result */
632 variable[11] = CALL_abstractmetamodel___MMLocalClass___global( variable[10] /*sc*/)( variable[10] /*sc*/) /*MMLocalClass::global*/;
633 /* Register variable[11]: Result */
634 variable[11] = CALL_abstractmetamodel___MMGlobalClass___is_mixin(variable[11])(variable[11]) /*MMGlobalClass::is_mixin*/;
635 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[11])))) { /*if*/
636 CALL_abstract_collection___SimpleCollection___add( variable[6] /*supers*/)( variable[6] /*supers*/, variable[10] /*sc*/) /*AbstractArray::add*/;
637 }
638 continue_25: while(0);
639 CALL_abstract_collection___Iterator___next(variable[7])(variable[7]) /*Iterator::next*/;
640 }
641 break_25: while(0);
642 /* Register variable[7]: Result */
643 variable[7] = CALL_abstractmetamodel___MMLocalClass___che(variable[0])(variable[0]) /*MMLocalClass::che*/;
644 /* Register variable[7]: Result */
645 variable[7] = CALL_partial_order___PartialOrderElement___order(variable[7])(variable[7]) /*PartialOrderElement::order*/;
646 /* Register variable[7]: Result */
647 variable[7] = CALL_partial_order___PartialOrder___select_smallests(variable[7])(variable[7], variable[6] /*supers*/) /*PartialOrder::select_smallests*/;
648 variable[6] = variable[7] /*supers=*/;
649 /* Register variable[7]: Local variable */
650 variable[7] = NIT_NULL /*null*/;
651 /* Register variable[8]: Result */
652 variable[8] = CALL_abstract_collection___Collection___length( variable[6] /*supers*/)( variable[6] /*supers*/) /*AbstractArrayRead::length*/;
653 /* Register variable[8]: Result */
654 variable[8] = TAG_Bool(UNTAG_Int(variable[8])>UNTAG_Int( TAG_Int(1)));
655 if (UNTAG_Bool(variable[8])) { /*if*/
656 /* Register variable[8]: Result */
657 variable[8] = CALL_syntax_base___MMSrcLocalClass___nodes(variable[0])(variable[0]) /*MMSrcLocalClass::nodes*/;
658 /* Register variable[8]: Result */
659 variable[8] = CALL_abstract_collection___Collection___first(variable[8])(variable[8]) /*IndexedCollectionRead::first*/;
660 variable[9] = NEW_Array_array___Array___with_capacity(TAG_Int(7)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
661 /* Register variable[10]: Once String constant */
662 if (once_value_26 != NIT_NULL) variable[10] = once_value_26;
663 else {
664 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("Error: Explicit constructor required in "), TAG_Int(40)) /*new String*/;
665 once_value_26 = variable[10];
666 }
667 /* Register variable[10]: Result */
668 /* Ensure var variable[10]: super-string element*/
669 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
670 /* Ensure var variable[0]: super-string element*/
671 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], CALL_string___Object___to_s(variable[0])(variable[0]) /*Object::to_s*/) /*AbstractArray::add*/;
672 /* Register variable[10]: Once String constant */
673 if (once_value_27 != NIT_NULL) variable[10] = once_value_27;
674 else {
675 variable[10] = NEW_String_string___String___with_native(BOX_NativeString(" since multiple inheritance of constructor is forbiden. Conflicting classes are "), TAG_Int(80)) /*new String*/;
676 once_value_27 = variable[10];
677 }
678 /* Register variable[10]: Result */
679 /* Ensure var variable[10]: super-string element*/
680 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
681 /* Register variable[10]: Once String constant */
682 if (once_value_28 != NIT_NULL) variable[10] = once_value_28;
683 else {
684 variable[10] = NEW_String_string___String___with_native(BOX_NativeString(", "), TAG_Int(2)) /*new String*/;
685 once_value_28 = variable[10];
686 }
687 /* Register variable[10]: Result */
688 /* Register variable[10]: Result */
689 variable[10] = CALL_string___Collection___join( variable[6] /*supers*/)( variable[6] /*supers*/, variable[10]) /*Collection::join*/;
690 /* Ensure var variable[10]: super-string element*/
691 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
692 /* Register variable[10]: Once String constant */
693 if (once_value_29 != NIT_NULL) variable[10] = once_value_29;
694 else {
695 variable[10] = NEW_String_string___String___with_native(BOX_NativeString(". Costructors are "), TAG_Int(18)) /*new String*/;
696 once_value_29 = variable[10];
697 }
698 /* Register variable[10]: Result */
699 /* Ensure var variable[10]: super-string element*/
700 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
701 /* Register variable[10]: Once String constant */
702 if (once_value_30 != NIT_NULL) variable[10] = once_value_30;
703 else {
704 variable[10] = NEW_String_string___String___with_native(BOX_NativeString(", "), TAG_Int(2)) /*new String*/;
705 once_value_30 = variable[10];
706 }
707 /* Register variable[10]: Result */
708 /* Register variable[10]: Result */
709 variable[10] = CALL_string___Collection___join( variable[4] /*super_constructors*/)( variable[4] /*super_constructors*/, variable[10]) /*Collection::join*/;
710 /* Ensure var variable[10]: super-string element*/
711 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
712 /* Register variable[10]: Once String constant */
713 if (once_value_31 != NIT_NULL) variable[10] = once_value_31;
714 else {
715 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
716 once_value_31 = variable[10];
717 }
718 /* Register variable[10]: Result */
719 /* Ensure var variable[10]: super-string element*/
720 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
721 /* Register variable[9]: Result */
722 variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
723 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[8], variable[9]) /*AbsSyntaxVisitor::error*/;
724 goto return_label18;
725 } else { /*if*/
726 /* Register variable[8]: Result */
727 variable[8] = CALL_abstract_collection___Collection___length( variable[6] /*supers*/)( variable[6] /*supers*/) /*AbstractArrayRead::length*/;
728 /* Register variable[8]: Result */
729 variable[8] = TAG_Bool((variable[8])==( TAG_Int(1)));
730 if (UNTAG_Bool(variable[8])) { /*if*/
731 /* Register variable[8]: Result */
732 variable[8] = CALL_abstract_collection___Collection___first( variable[6] /*supers*/)( variable[6] /*supers*/) /*IndexedCollectionRead::first*/;
733 variable[7] = variable[8] /*superclass=*/;
734 }
735 }
736 /* Register variable[8]: For iterator */
737 variable[8] = CALL_abstract_collection___Collection___iterator( variable[4] /*super_constructors*/)( variable[4] /*super_constructors*/) /*ArraySet::iterator*/;
738 while (true) { /*for*/
739 /* Register variable[9]: For 'is_ok' result */
740 variable[9] = CALL_abstract_collection___Iterator___is_ok(variable[8])(variable[8]) /*Iterator::is_ok*/;
741 if (!UNTAG_Bool(variable[9])) break; /*for*/
742 variable[9] = CALL_abstract_collection___Iterator___item(variable[8])(variable[8]) /*Iterator::item*/ /* Ensure var: For item*/;
743 /* Register variable[10]: Local variable */
744 variable[10] = variable[9];
745 /* Register variable[11]: Result */
746 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::==*/)))));
747 /* Ensure var variable[11]: Left 'or' operand*/
748 if (!UNTAG_Bool(variable[11])) { /* or */
749 /* Register variable[11]: Result */
750 variable[11] = CALL_abstractmetamodel___MMGlobalProperty___local_class( variable[10] /*gp*/)( variable[10] /*gp*/) /*MMGlobalProperty::local_class*/;
751 /* Register variable[11]: Result */
752 variable[11] = TAG_Bool((variable[11] == variable[7] /*superclass*/) || ((variable[11] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[11])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[11], variable[7] /*superclass*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[11])(variable[11], variable[7] /*superclass*/) /*Object::==*/)))));
753 }
754 /* Register variable[11]: Result */
755 if (UNTAG_Bool(variable[11])) { /*if*/
756 CALL_inheritance___MMLocalClass___make_visible_an_inherited_global_property(variable[0])(variable[0], variable[10] /*gp*/) /*MMLocalClass::make_visible_an_inherited_global_property*/;
757 }
758 continue_32: while(0);
759 CALL_abstract_collection___Iterator___next(variable[8])(variable[8]) /*Iterator::next*/;
760 }
761 break_32: while(0);
762 /* Register variable[8]: Result */
763 variable[8] = CALL_abstractmetamodel___MMLocalClass___global(variable[0])(variable[0]) /*MMLocalClass::global*/;
764 /* Register variable[9]: Result */
765 variable[9] = CALL_abstractmetamodel___MMLocalClass___global( variable[7] /*superclass*/)( variable[7] /*superclass*/) /*MMLocalClass::global*/;
766 CALL_abstractmetamodel___MMGlobalClass___mixin_of__eq(variable[8])(variable[8], variable[9]) /*MMGlobalClass::mixin_of=*/;
767 } else { /*if*/
768 /* Register variable[6]: Local variable */
769 /* Register variable[7]: Result */
770 variable[7] = CALL_array___Collection___to_a( variable[3] /*super_inits*/)( variable[3] /*super_inits*/) /*Collection::to_a*/;
771 /* Register variable[7]: Result */
772 variable[7] = NEW_MMImplicitInit_syntax_base___MMImplicitInit___init(variable[0], variable[5] /*unassigned_attributes*/, variable[7]) /*new MMImplicitInit*/;
773 variable[6] = variable[7];
774 CALL_mmbuilder___MMSrcLocalClass___add_src_local_property(variable[0])(variable[0], variable[1] /*v*/, variable[6] /*p*/) /*MMSrcLocalClass::add_src_local_property*/;
775 }
776 return_label18: while(false);
777 tracehead = trace.prev;
778 return;
779 }
780 void mmbuilder___MMSrcLocalClass___add_src_local_property(val_t self, val_t param0, val_t param1) {
781 struct trace_t trace = {NULL, NULL, 233, LOCATE_mmbuilder___MMSrcLocalClass___add_src_local_property};
782 static val_t once_value_34 = NIT_NULL; /* Once value for string variable[7]*/
783 static val_t once_value_35 = NIT_NULL; /* Once value for string variable[7]*/
784 static val_t once_value_36 = NIT_NULL; /* Once value for string variable[7]*/
785 static val_t once_value_37 = NIT_NULL; /* Once value for string variable[8]*/
786 static val_t once_value_38 = NIT_NULL; /* Once value for string variable[8]*/
787 static val_t once_value_39 = NIT_NULL; /* Once value for string variable[8]*/
788 static val_t once_value_40 = NIT_NULL; /* Once value for string variable[8]*/
789 val_t variable[9];
790 struct WBT_ **closurevariable = NULL;
791 trace.prev = tracehead; tracehead = &trace;
792 trace.file = LOCATE_mmbuilder;
793 /* Register variable[0]: Local variable */
794 variable[0] = self;
795 /* Register variable[1]: Local variable */
796 variable[1] = param0;
797 /* Register variable[2]: Local variable */
798 variable[2] = param1;
799 /* Register variable[3]: Method return value and escape marker */
800 /* Register variable[4]: Local variable */
801 /* Register variable[5]: Result */
802 variable[5] = CALL_abstractmetamodel___MMLocalProperty___name( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::name*/;
803 variable[4] = variable[5];
804 /* Register variable[5]: Result */
805 variable[5] = CALL_syntax_base___MMSrcLocalClass___src_local_properties(variable[0])(variable[0]) /*MMSrcLocalClass::src_local_properties*/;
806 /* Register variable[5]: Result */
807 variable[5] = CALL_abstract_collection___MapRead___has_key(variable[5])(variable[5], variable[4] /*pname*/) /*MapRead::has_key*/;
808 if (UNTAG_Bool(variable[5])) { /*if*/
809 /* Register variable[5]: Result */
810 variable[5] = CALL_syntax_base___MMLocalProperty___node( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::node*/;
811 variable[6] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
812 /* Register variable[7]: Once String constant */
813 if (once_value_34 != NIT_NULL) variable[7] = once_value_34;
814 else {
815 variable[7] = NEW_String_string___String___with_native(BOX_NativeString("Error: A property "), TAG_Int(18)) /*new String*/;
816 once_value_34 = variable[7];
817 }
818 /* Register variable[7]: Result */
819 /* Ensure var variable[7]: super-string element*/
820 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
821 variable[7] = variable[4] /*pname*/ /* Ensure var: super-string element*/;
822 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/) /*AbstractArray::add*/;
823 /* Register variable[7]: Once String constant */
824 if (once_value_35 != NIT_NULL) variable[7] = once_value_35;
825 else {
826 variable[7] = NEW_String_string___String___with_native(BOX_NativeString(" is already defined in class "), TAG_Int(29)) /*new String*/;
827 once_value_35 = variable[7];
828 }
829 /* Register variable[7]: Result */
830 /* Ensure var variable[7]: super-string element*/
831 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
832 /* Register variable[7]: Result */
833 variable[7] = CALL_abstractmetamodel___MMLocalClass___name(variable[0])(variable[0]) /*MMLocalClass::name*/;
834 /* Ensure var variable[7]: super-string element*/
835 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/) /*AbstractArray::add*/;
836 /* Register variable[7]: Once String constant */
837 if (once_value_36 != NIT_NULL) variable[7] = once_value_36;
838 else {
839 variable[7] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
840 once_value_36 = variable[7];
841 }
842 /* Register variable[7]: Result */
843 /* Ensure var variable[7]: super-string element*/
844 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
845 /* Register variable[6]: Result */
846 variable[6] = CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/;
847 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[5], variable[6]) /*AbsSyntaxVisitor::error*/;
848 goto return_label33;
849 }
850 /* Register variable[5]: Result */
851 variable[5] = CALL_syntax_base___MMSrcLocalClass___src_local_properties(variable[0])(variable[0]) /*MMSrcLocalClass::src_local_properties*/;
852 CALL_abstract_collection___Map_____braeq(variable[5])(variable[5], variable[4] /*pname*/, variable[2] /*prop*/) /*Map::[]=*/;
853 /* Register variable[5]: Result */
854 variable[5] = CALL_abstractmetamodel___MMLocalClass___has_global_property_by_name(variable[0])(variable[0], variable[4] /*pname*/) /*MMLocalClass::has_global_property_by_name*/;
855 if (UNTAG_Bool(variable[5])) { /*if*/
856 /* Register variable[5]: Local variable */
857 /* Register variable[6]: Result */
858 variable[6] = CALL_abstractmetamodel___MMLocalClass___properties_by_name(variable[0])(variable[0]) /*MMLocalClass::properties_by_name*/;
859 /* Register variable[6]: Result */
860 variable[6] = CALL_abstract_collection___MapRead_____bra(variable[6])(variable[6], variable[4] /*pname*/) /*MapRead::[]*/;
861 variable[5] = variable[6];
862 /* Register variable[6]: Result */
863 variable[6] = CALL_abstract_collection___Collection___length( variable[5] /*globs*/)( variable[5] /*globs*/) /*AbstractArrayRead::length*/;
864 /* Register variable[6]: Result */
865 variable[6] = TAG_Bool(UNTAG_Int(variable[6])>UNTAG_Int( TAG_Int(1)));
866 if (UNTAG_Bool(variable[6])) { /*if*/
867 /* Register variable[6]: Result */
868 variable[6] = CALL_syntax_base___MMLocalProperty___node( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::node*/;
869 variable[7] = NEW_Array_array___Array___with_capacity(TAG_Int(7)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
870 /* Register variable[8]: Once String constant */
871 if (once_value_37 != NIT_NULL) variable[8] = once_value_37;
872 else {
873 variable[8] = NEW_String_string___String___with_native(BOX_NativeString("Name error: "), TAG_Int(12)) /*new String*/;
874 once_value_37 = variable[8];
875 }
876 /* Register variable[8]: Result */
877 /* Ensure var variable[8]: super-string element*/
878 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
879 /* Ensure var variable[0]: super-string element*/
880 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], CALL_string___Object___to_s(variable[0])(variable[0]) /*Object::to_s*/) /*AbstractArray::add*/;
881 /* Register variable[8]: Once String constant */
882 if (once_value_38 != NIT_NULL) variable[8] = once_value_38;
883 else {
884 variable[8] = NEW_String_string___String___with_native(BOX_NativeString(" inherits "), TAG_Int(10)) /*new String*/;
885 once_value_38 = variable[8];
886 }
887 /* Register variable[8]: Result */
888 /* Ensure var variable[8]: super-string element*/
889 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
890 /* Register variable[8]: Result */
891 variable[8] = CALL_abstract_collection___Collection___length( variable[5] /*globs*/)( variable[5] /*globs*/) /*AbstractArrayRead::length*/;
892 /* Ensure var variable[8]: super-string element*/
893 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/) /*AbstractArray::add*/;
894 /* Register variable[8]: Once String constant */
895 if (once_value_39 != NIT_NULL) variable[8] = once_value_39;
896 else {
897 variable[8] = NEW_String_string___String___with_native(BOX_NativeString(" global properties named "), TAG_Int(25)) /*new String*/;
898 once_value_39 = variable[8];
899 }
900 /* Register variable[8]: Result */
901 /* Ensure var variable[8]: super-string element*/
902 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
903 variable[8] = variable[4] /*pname*/ /* Ensure var: super-string element*/;
904 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/) /*AbstractArray::add*/;
905 /* Register variable[8]: Once String constant */
906 if (once_value_40 != NIT_NULL) variable[8] = once_value_40;
907 else {
908 variable[8] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
909 once_value_40 = variable[8];
910 }
911 /* Register variable[8]: Result */
912 /* Ensure var variable[8]: super-string element*/
913 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
914 /* Register variable[7]: Result */
915 variable[7] = CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/;
916 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[6], variable[7]) /*AbsSyntaxVisitor::error*/;
917 }
918 /* Register variable[6]: Local variable */
919 /* Register variable[7]: Result */
920 variable[7] = CALL_abstract_collection___Collection___first( variable[5] /*globs*/)( variable[5] /*globs*/) /*IndexedCollectionRead::first*/;
921 variable[6] = variable[7];
922 CALL_inheritance___MMLocalProperty___inherit_global( variable[2] /*prop*/)( variable[2] /*prop*/, variable[6] /*g*/) /*MMLocalProperty::inherit_global*/;
923 }
924 /* Register variable[5]: Result */
925 variable[5] = CALL_abstractmetamodel___MMLocalProperty___global( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::global*/;
926 /* Register variable[5]: Result */
927 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::==*/)))));
928 if (UNTAG_Bool(variable[5])) { /*if*/
929 CALL_abstractmetamodel___MMLocalProperty___new_global( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::new_global*/;
930 /* Register variable[5]: Result */
931 variable[5] = CALL_abstractmetamodel___MMLocalProperty___global( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::global*/;
932 /* Register variable[6]: Result */
933 variable[6] = CALL_syntax_base___MMLocalProperty___is_init( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::is_init*/;
934 CALL_abstractmetamodel___MMGlobalProperty___is_init__eq(variable[5])(variable[5], variable[6]) /*MMGlobalProperty::is_init=*/;
935 }
936 return_label33: while(false);
937 tracehead = trace.prev;
938 return;
939 }
940 void mmbuilder___MMLocalProperty___accept_property_visitor(val_t self, val_t param0) {
941 struct trace_t trace = {NULL, NULL, 263, LOCATE_mmbuilder___MMLocalProperty___accept_property_visitor};
942 val_t variable[3];
943 struct WBT_ **closurevariable = NULL;
944 trace.prev = tracehead; tracehead = &trace;
945 trace.file = LOCATE_mmbuilder;
946 /* Register variable[0]: Local variable */
947 variable[0] = self;
948 /* Register variable[1]: Local variable */
949 variable[1] = param0;
950 /* Register variable[2]: Method return value and escape marker */
951 return_label41: while(false);
952 tracehead = trace.prev;
953 return;
954 }
955 void mmbuilder___MMImplicitInit___accept_property_visitor(val_t self, val_t param0) {
956 struct trace_t trace = {NULL, NULL, 270, LOCATE_mmbuilder___MMImplicitInit___accept_property_visitor};
957 static val_t once_value_44 = NIT_NULL; /* Once value for string variable[8]*/
958 static val_t once_value_45 = NIT_NULL; /* Once value for string variable[8]*/
959 static val_t once_value_46 = NIT_NULL; /* Once value for string variable[8]*/
960 static val_t once_value_47 = NIT_NULL; /* Once value for string variable[8]*/
961 val_t variable[10];
962 struct WBT_ **closurevariable = NULL;
963 trace.prev = tracehead; tracehead = &trace;
964 trace.file = LOCATE_mmbuilder;
965 /* Register variable[0]: Local variable */
966 variable[0] = self;
967 /* Register variable[1]: Local variable */
968 variable[1] = param0;
969 /* Register variable[2]: Method return value and escape marker */
970 /* Register variable[3]: Local variable */
971 variable[3] = NIT_NULL /*null*/;
972 /* Register variable[4]: Result */
973 variable[4] = CALL_syntax_base___MMImplicitInit___super_inits(variable[0])(variable[0]) /*MMImplicitInit::super_inits*/;
974 /* Register variable[4]: For iterator */
975 variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*AbstractArrayRead::iterator*/;
976 while (true) { /*for*/
977 /* Register variable[5]: For 'is_ok' result */
978 variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*ArrayIterator::is_ok*/;
979 if (!UNTAG_Bool(variable[5])) break; /*for*/
980 variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
981 /* Register variable[6]: Local variable */
982 variable[6] = variable[5];
983 /* Register variable[7]: Result */
984 variable[7] = CALL_static_type___MMLocalProperty___signature( variable[6] /*p*/)( variable[6] /*p*/) /*MMLocalProperty::signature*/;
985 /* Register variable[7]: Result */
986 variable[7] = CALL_static_type___MMSignature___arity(variable[7])(variable[7]) /*MMSignature::arity*/;
987 /* Register variable[7]: Result */
988 variable[7] = TAG_Bool(UNTAG_Int(variable[7])>UNTAG_Int( TAG_Int(0)));
989 if (UNTAG_Bool(variable[7])) { /*if*/
990 /* Register variable[7]: Result */
991 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::==*/)))));
992 if (UNTAG_Bool(variable[7])) { /*if*/
993 variable[3] = variable[6] /*p*/ /*base=*/;
994 } else { /*if*/
995 variable[7] = NEW_Array_array___Array___with_capacity(TAG_Int(7)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
996 /* Register variable[8]: Once String constant */
997 if (once_value_44 != NIT_NULL) variable[8] = once_value_44;
998 else {
999 variable[8] = NEW_String_string___String___with_native(BOX_NativeString("Error: explicit constructor needed in "), TAG_Int(38)) /*new String*/;
1000 once_value_44 = variable[8];
1001 }
1002 /* Register variable[8]: Result */
1003 /* Ensure var variable[8]: super-string element*/
1004 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
1005 /* Register variable[8]: Result */
1006 variable[8] = CALL_abstractmetamodel___MMLocalProperty___local_class(variable[0])(variable[0]) /*MMLocalProperty::local_class*/;
1007 /* Ensure var variable[8]: super-string element*/
1008 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/) /*AbstractArray::add*/;
1009 /* Register variable[8]: Once String constant */
1010 if (once_value_45 != NIT_NULL) variable[8] = once_value_45;
1011 else {
1012 variable[8] = NEW_String_string___String___with_native(BOX_NativeString(" since both super-constructor "), TAG_Int(30)) /*new String*/;
1013 once_value_45 = variable[8];
1014 }
1015 /* Register variable[8]: Result */
1016 /* Ensure var variable[8]: super-string element*/
1017 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
1018 /* Register variable[8]: Result */
1019 variable[8] = CALL_abstractmetamodel___MMLocalProperty___full_name( variable[3] /*base*/)( variable[3] /*base*/) /*MMLocalProperty::full_name*/;
1020 /* Ensure var variable[8]: super-string element*/
1021 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
1022 /* Register variable[8]: Once String constant */
1023 if (once_value_46 != NIT_NULL) variable[8] = once_value_46;
1024 else {
1025 variable[8] = NEW_String_string___String___with_native(BOX_NativeString(" and "), TAG_Int(5)) /*new String*/;
1026 once_value_46 = variable[8];
1027 }
1028 /* Register variable[8]: Result */
1029 /* Ensure var variable[8]: super-string element*/
1030 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
1031 /* Register variable[8]: Result */
1032 variable[8] = CALL_abstractmetamodel___MMLocalProperty___full_name( variable[6] /*p*/)( variable[6] /*p*/) /*MMLocalProperty::full_name*/;
1033 /* Ensure var variable[8]: super-string element*/
1034 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
1035 /* Register variable[8]: Once String constant */
1036 if (once_value_47 != NIT_NULL) variable[8] = once_value_47;
1037 else {
1038 variable[8] = NEW_String_string___String___with_native(BOX_NativeString(" have paramters"), TAG_Int(15)) /*new String*/;
1039 once_value_47 = variable[8];
1040 }
1041 /* Register variable[8]: Result */
1042 /* Ensure var variable[8]: super-string element*/
1043 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
1044 /* Register variable[7]: Result */
1045 variable[7] = CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/;
1046 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, NIT_NULL /*null*/, variable[7]) /*AbsSyntaxVisitor::error*/;
1047 goto return_label42;
1048 }
1049 }
1050 continue_43: while(0);
1051 CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*ArrayIterator::next*/;
1052 }
1053 break_43: while(0);
1054 ATTR_mmbuilder___MMImplicitInit____super_init(variable[0]) /*MMImplicitInit::_super_init*/ = variable[3] /*base*/;
1055 /* Register variable[4]: Local variable */
1056 /* Register variable[5]: Result */
1057 variable[5] = NEW_Array_array___Array___init() /*new Array[MMType]*/;
1058 variable[4] = variable[5];
1059 /* Register variable[5]: Result */
1060 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::==*/)))))));
1061 if (UNTAG_Bool(variable[5])) { /*if*/
1062 /* Register variable[5]: Local variable */
1063 /* Register variable[6]: Result */
1064 variable[6] = CALL_static_type___MMLocalProperty___signature( variable[3] /*base*/)( variable[3] /*base*/) /*MMLocalProperty::signature*/;
1065 variable[5] = variable[6];
1066 /* Register variable[6]: Result */
1067 variable[6] = CALL_static_type___MMSignature___arity( variable[5] /*sig*/)( variable[5] /*sig*/) /*MMSignature::arity*/;
1068 /* Register variable[6]: Result */
1069 variable[6] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[6]) /*new Range[Int]*/;
1070 /* Register variable[6]: For iterator */
1071 variable[6] = CALL_abstract_collection___Collection___iterator(variable[6])(variable[6]) /*Range::iterator*/;
1072 while (true) { /*for*/
1073 /* Register variable[7]: For 'is_ok' result */
1074 variable[7] = CALL_abstract_collection___Iterator___is_ok(variable[6])(variable[6]) /*Iterator::is_ok*/;
1075 if (!UNTAG_Bool(variable[7])) break; /*for*/
1076 variable[7] = CALL_abstract_collection___Iterator___item(variable[6])(variable[6]) /*Iterator::item*/ /* Ensure var: For item*/;
1077 /* Register variable[8]: Local variable */
1078 variable[8] = variable[7];
1079 /* Register variable[9]: Result */
1080 variable[9] = CALL_static_type___MMSignature_____bra( variable[5] /*sig*/)( variable[5] /*sig*/, variable[8] /*i*/) /*MMSignature::[]*/;
1081 CALL_abstract_collection___SimpleCollection___add( variable[4] /*params*/)( variable[4] /*params*/, variable[9]) /*AbstractArray::add*/;
1082 continue_48: while(0);
1083 CALL_abstract_collection___Iterator___next(variable[6])(variable[6]) /*Iterator::next*/;
1084 }
1085 break_48: while(0);
1086 }
1087 /* Register variable[5]: Result */
1088 variable[5] = CALL_syntax_base___MMImplicitInit___unassigned_attributes(variable[0])(variable[0]) /*MMImplicitInit::unassigned_attributes*/;
1089 /* Register variable[5]: For iterator */
1090 variable[5] = CALL_abstract_collection___Collection___iterator(variable[5])(variable[5]) /*AbstractArrayRead::iterator*/;
1091 while (true) { /*for*/
1092 /* Register variable[6]: For 'is_ok' result */
1093 variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*ArrayIterator::is_ok*/;
1094 if (!UNTAG_Bool(variable[6])) break; /*for*/
1095 variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
1096 /* Register variable[7]: Local variable */
1097 variable[7] = variable[6];
1098 /* Register variable[8]: Result */
1099 variable[8] = CALL_static_type___MMLocalProperty___signature( variable[7] /*a*/)( variable[7] /*a*/) /*MMLocalProperty::signature*/;
1100 /* Register variable[8]: Result */
1101 variable[8] = CALL_static_type___MMSignature___return_type(variable[8])(variable[8]) /*MMSignature::return_type*/;
1102 CALL_abstract_collection___SimpleCollection___add( variable[4] /*params*/)( variable[4] /*params*/, variable[8]) /*AbstractArray::add*/;
1103 continue_49: while(0);
1104 CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*ArrayIterator::next*/;
1105 }
1106 break_49: while(0);
1107 /* Register variable[5]: Result */
1108 variable[5] = CALL_abstractmetamodel___MMLocalProperty___local_class(variable[0])(variable[0]) /*MMLocalProperty::local_class*/;
1109 /* Register variable[5]: Result */
1110 variable[5] = CALL_static_type___MMLocalClass___get_type(variable[5])(variable[5]) /*MMLocalClass::get_type*/;
1111 /* Register variable[5]: Result */
1112 variable[5] = NEW_MMSignature_static_type___MMSignature___init( variable[4] /*params*/, NIT_NULL /*null*/, variable[5]) /*new MMSignature*/;
1113 CALL_static_type___MMLocalProperty___signature__eq(variable[0])(variable[0], variable[5]) /*MMLocalProperty::signature=*/;
1114 return_label42: while(false);
1115 tracehead = trace.prev;
1116 return;
1117 }
1118 val_t mmbuilder___MMImplicitInit___super_init(val_t self) {
1119 struct trace_t trace = {NULL, NULL, 269, LOCATE_mmbuilder___MMImplicitInit___super_init};
1120 val_t *variable = NULL;
1121 struct WBT_ **closurevariable = NULL;
1122 trace.prev = tracehead; tracehead = &trace;
1123 trace.file = LOCATE_mmbuilder;
1124 tracehead = trace.prev;
1125 return ATTR_mmbuilder___MMImplicitInit____super_init( self) /*MMImplicitInit::_super_init*/;
1126 }
1127 val_t mmbuilder___MMSrcAncestor___local_class(val_t self) {
1128 struct trace_t trace = {NULL, NULL, 305, LOCATE_mmbuilder___MMSrcAncestor___local_class};
1129 val_t *variable = NULL;
1130 struct WBT_ **closurevariable = NULL;
1131 trace.prev = tracehead; tracehead = &trace;
1132 trace.file = LOCATE_mmbuilder;
1133 tracehead = trace.prev;
1134 return ATTR_mmbuilder___MMSrcAncestor____local_class( self) /*MMSrcAncestor::_local_class*/;
1135 }
1136 val_t mmbuilder___MMSrcAncestor___node(val_t self) {
1137 struct trace_t trace = {NULL, NULL, 303, LOCATE_mmbuilder___MMSrcAncestor___node};
1138 val_t *variable = NULL;
1139 struct WBT_ **closurevariable = NULL;
1140 trace.prev = tracehead; tracehead = &trace;
1141 trace.file = LOCATE_mmbuilder;
1142 tracehead = trace.prev;
1143 return ATTR_mmbuilder___MMSrcAncestor____node( self) /*MMSrcAncestor::_node*/;
1144 }
1145 void mmbuilder___MMSrcAncestor___init(val_t self, val_t param0, val_t param1, int* init_table) {
1146 struct trace_t trace = {NULL, NULL, 307, LOCATE_mmbuilder___MMSrcAncestor___init};
1147 val_t variable[4];
1148 struct WBT_ **closurevariable = NULL;
1149 trace.prev = tracehead; tracehead = &trace;
1150 trace.file = LOCATE_mmbuilder;
1151 /* Register variable[0]: Local variable */
1152 variable[0] = self;
1153 /* Register variable[1]: Local variable */
1154 variable[1] = param0;
1155 /* Register variable[2]: Local variable */
1156 variable[2] = param1;
1157 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMSrcAncestor].i]) return;
1158 /* Register variable[3]: Method return value and escape marker */
1159 ATTR_mmbuilder___MMSrcAncestor____node(variable[0]) /*MMSrcAncestor::_node*/ = variable[1] /*n*/;
1160 ATTR_mmbuilder___MMSrcAncestor____local_class(variable[0]) /*MMSrcAncestor::_local_class*/ = variable[2] /*c*/;
1161 return_label50: while(false);
1162 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMSrcAncestor].i] = 1;
1163 tracehead = trace.prev;
1164 return;
1165 }
1166 void mmbuilder___ClassBuilderVisitor___visit(val_t self, val_t param0) {
1167 struct trace_t trace = {NULL, NULL, 327, LOCATE_mmbuilder___ClassBuilderVisitor___visit};
1168 val_t variable[3];
1169 struct WBT_ **closurevariable = NULL;
1170 trace.prev = tracehead; tracehead = &trace;
1171 trace.file = LOCATE_mmbuilder;
1172 /* Register variable[0]: Local variable */
1173 variable[0] = self;
1174 /* Register variable[1]: Local variable */
1175 variable[1] = param0;
1176 /* Register variable[2]: Method return value and escape marker */
1177 CALL_mmbuilder___PNode___accept_class_builder( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::accept_class_builder*/;
1178 return_label51: while(false);
1179 tracehead = trace.prev;
1180 return;
1181 }
1182 val_t mmbuilder___ClassBuilderVisitor___local_class_arity(val_t self) {
1183 struct trace_t trace = {NULL, NULL, 321, LOCATE_mmbuilder___ClassBuilderVisitor___local_class_arity};
1184 val_t *variable = NULL;
1185 struct WBT_ **closurevariable = NULL;
1186 trace.prev = tracehead; tracehead = &trace;
1187 trace.file = LOCATE_mmbuilder;
1188 tracehead = trace.prev;
1189 return ATTR_mmbuilder___ClassBuilderVisitor____local_class_arity( self) /*ClassBuilderVisitor::_local_class_arity*/;
1190 }
1191 void mmbuilder___ClassBuilderVisitor___local_class_arity__eq(val_t self, val_t param0) {
1192 struct trace_t trace = {NULL, NULL, 321, LOCATE_mmbuilder___ClassBuilderVisitor___local_class_arity__eq};
1193 val_t *variable = NULL;
1194 struct WBT_ **closurevariable = NULL;
1195 trace.prev = tracehead; tracehead = &trace;
1196 trace.file = LOCATE_mmbuilder;
1197 ATTR_mmbuilder___ClassBuilderVisitor____local_class_arity( self) /*ClassBuilderVisitor::_local_class_arity*/ = param0;
1198 tracehead = trace.prev;
1199 return;
1200 }
1201 val_t mmbuilder___ClassBuilderVisitor___formals(val_t self) {
1202 struct trace_t trace = {NULL, NULL, 324, LOCATE_mmbuilder___ClassBuilderVisitor___formals};
1203 val_t *variable = NULL;
1204 struct WBT_ **closurevariable = NULL;
1205 trace.prev = tracehead; tracehead = &trace;
1206 trace.file = LOCATE_mmbuilder;
1207 tracehead = trace.prev;
1208 return ATTR_mmbuilder___ClassBuilderVisitor____formals( self) /*ClassBuilderVisitor::_formals*/;
1209 }
1210 void mmbuilder___ClassBuilderVisitor___formals__eq(val_t self, val_t param0) {
1211 struct trace_t trace = {NULL, NULL, 324, LOCATE_mmbuilder___ClassBuilderVisitor___formals__eq};
1212 val_t *variable = NULL;
1213 struct WBT_ **closurevariable = NULL;
1214 trace.prev = tracehead; tracehead = &trace;
1215 trace.file = LOCATE_mmbuilder;
1216 ATTR_mmbuilder___ClassBuilderVisitor____formals( self) /*ClassBuilderVisitor::_formals*/ = param0;
1217 tracehead = trace.prev;
1218 return;
1219 }
1220 void mmbuilder___ClassBuilderVisitor___init(val_t self, val_t param0, val_t param1, int* init_table) {
1221 struct trace_t trace = {NULL, NULL, 328, LOCATE_mmbuilder___ClassBuilderVisitor___init};
1222 val_t variable[4];
1223 struct WBT_ **closurevariable = NULL;
1224 trace.prev = tracehead; tracehead = &trace;
1225 trace.file = LOCATE_mmbuilder;
1226 /* Register variable[0]: Local variable */
1227 variable[0] = self;
1228 /* Register variable[1]: Local variable */
1229 variable[1] = param0;
1230 /* Register variable[2]: Local variable */
1231 variable[2] = param1;
1232 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ClassBuilderVisitor].i]) return;
1233 /* Register variable[3]: Method return value and escape marker */
1234 CALL_syntax_base___AbsSyntaxVisitor___init(variable[0])(variable[0], variable[1], variable[2], init_table /*YYY*/) /*AbsSyntaxVisitor::init*/;
1235 return_label52: while(false);
1236 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ClassBuilderVisitor].i] = 1;
1237 tracehead = trace.prev;
1238 return;
1239 }
1240 void mmbuilder___ClassSpecializationBuilderVisitor___visit(val_t self, val_t param0) {
1241 struct trace_t trace = {NULL, NULL, 335, LOCATE_mmbuilder___ClassSpecializationBuilderVisitor___visit};
1242 val_t variable[3];
1243 struct WBT_ **closurevariable = NULL;
1244 trace.prev = tracehead; tracehead = &trace;
1245 trace.file = LOCATE_mmbuilder;
1246 /* Register variable[0]: Local variable */
1247 variable[0] = self;
1248 /* Register variable[1]: Local variable */
1249 variable[1] = param0;
1250 /* Register variable[2]: Method return value and escape marker */
1251 CALL_mmbuilder___PNode___accept_class_specialization_builder( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::accept_class_specialization_builder*/;
1252 return_label53: while(false);
1253 tracehead = trace.prev;
1254 return;
1255 }
1256 void mmbuilder___ClassSpecializationBuilderVisitor___init(val_t self, val_t param0, val_t param1, int* init_table) {
1257 struct trace_t trace = {NULL, NULL, 336, LOCATE_mmbuilder___ClassSpecializationBuilderVisitor___init};
1258 val_t variable[4];
1259 struct WBT_ **closurevariable = NULL;
1260 trace.prev = tracehead; tracehead = &trace;
1261 trace.file = LOCATE_mmbuilder;
1262 /* Register variable[0]: Local variable */
1263 variable[0] = self;
1264 /* Register variable[1]: Local variable */
1265 variable[1] = param0;
1266 /* Register variable[2]: Local variable */
1267 variable[2] = param1;
1268 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ClassSpecializationBuilderVisitor].i]) return;
1269 /* Register variable[3]: Method return value and escape marker */
1270 CALL_syntax_base___AbsSyntaxVisitor___init(variable[0])(variable[0], variable[1], variable[2], init_table /*YYY*/) /*AbsSyntaxVisitor::init*/;
1271 return_label54: while(false);
1272 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ClassSpecializationBuilderVisitor].i] = 1;
1273 tracehead = trace.prev;
1274 return;
1275 }
1276 void mmbuilder___ClassAncestorBuilder___visit(val_t self, val_t param0) {
1277 struct trace_t trace = {NULL, NULL, 343, LOCATE_mmbuilder___ClassAncestorBuilder___visit};
1278 val_t variable[3];
1279 struct WBT_ **closurevariable = NULL;
1280 trace.prev = tracehead; tracehead = &trace;
1281 trace.file = LOCATE_mmbuilder;
1282 /* Register variable[0]: Local variable */
1283 variable[0] = self;
1284 /* Register variable[1]: Local variable */
1285 variable[1] = param0;
1286 /* Register variable[2]: Method return value and escape marker */
1287 CALL_mmbuilder___PNode___accept_class_ancestor_builder( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::accept_class_ancestor_builder*/;
1288 return_label55: while(false);
1289 tracehead = trace.prev;
1290 return;
1291 }
1292 void mmbuilder___ClassAncestorBuilder___init(val_t self, val_t param0, val_t param1, int* init_table) {
1293 struct trace_t trace = {NULL, NULL, 344, LOCATE_mmbuilder___ClassAncestorBuilder___init};
1294 val_t variable[4];
1295 struct WBT_ **closurevariable = NULL;
1296 trace.prev = tracehead; tracehead = &trace;
1297 trace.file = LOCATE_mmbuilder;
1298 /* Register variable[0]: Local variable */
1299 variable[0] = self;
1300 /* Register variable[1]: Local variable */
1301 variable[1] = param0;
1302 /* Register variable[2]: Local variable */
1303 variable[2] = param1;
1304 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ClassAncestorBuilder].i]) return;
1305 /* Register variable[3]: Method return value and escape marker */
1306 CALL_syntax_base___AbsSyntaxVisitor___init(variable[0])(variable[0], variable[1], variable[2], init_table /*YYY*/) /*AbsSyntaxVisitor::init*/;
1307 return_label56: while(false);
1308 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ClassAncestorBuilder].i] = 1;
1309 tracehead = trace.prev;
1310 return;
1311 }
1312 void mmbuilder___ClassVerifierVisitor___visit(val_t self, val_t param0) {
1313 struct trace_t trace = {NULL, NULL, 351, LOCATE_mmbuilder___ClassVerifierVisitor___visit};
1314 val_t variable[3];
1315 struct WBT_ **closurevariable = NULL;
1316 trace.prev = tracehead; tracehead = &trace;
1317 trace.file = LOCATE_mmbuilder;
1318 /* Register variable[0]: Local variable */
1319 variable[0] = self;
1320 /* Register variable[1]: Local variable */
1321 variable[1] = param0;
1322 /* Register variable[2]: Method return value and escape marker */
1323 CALL_mmbuilder___PNode___accept_class_verifier( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::accept_class_verifier*/;
1324 return_label57: while(false);
1325 tracehead = trace.prev;
1326 return;
1327 }
1328 void mmbuilder___ClassVerifierVisitor___init(val_t self, val_t param0, val_t param1, int* init_table) {
1329 struct trace_t trace = {NULL, NULL, 352, LOCATE_mmbuilder___ClassVerifierVisitor___init};
1330 val_t variable[4];
1331 struct WBT_ **closurevariable = NULL;
1332 trace.prev = tracehead; tracehead = &trace;
1333 trace.file = LOCATE_mmbuilder;
1334 /* Register variable[0]: Local variable */
1335 variable[0] = self;
1336 /* Register variable[1]: Local variable */
1337 variable[1] = param0;
1338 /* Register variable[2]: Local variable */
1339 variable[2] = param1;
1340 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ClassVerifierVisitor].i]) return;
1341 /* Register variable[3]: Method return value and escape marker */
1342 CALL_syntax_base___AbsSyntaxVisitor___init(variable[0])(variable[0], variable[1], variable[2], init_table /*YYY*/) /*AbsSyntaxVisitor::init*/;
1343 return_label58: while(false);
1344 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ClassVerifierVisitor].i] = 1;
1345 tracehead = trace.prev;
1346 return;
1347 }
1348 void mmbuilder___PropertyBuilderVisitor___visit(val_t self, val_t param0) {
1349 struct trace_t trace = {NULL, NULL, 362, LOCATE_mmbuilder___PropertyBuilderVisitor___visit};
1350 val_t variable[3];
1351 struct WBT_ **closurevariable = NULL;
1352 trace.prev = tracehead; tracehead = &trace;
1353 trace.file = LOCATE_mmbuilder;
1354 /* Register variable[0]: Local variable */
1355 variable[0] = self;
1356 /* Register variable[1]: Local variable */
1357 variable[1] = param0;
1358 /* Register variable[2]: Method return value and escape marker */
1359 CALL_mmbuilder___PNode___accept_property_builder( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::accept_property_builder*/;
1360 return_label59: while(false);
1361 tracehead = trace.prev;
1362 return;
1363 }
1364 void mmbuilder___PropertyBuilderVisitor___init(val_t self, val_t param0, val_t param1, int* init_table) {
1365 struct trace_t trace = {NULL, NULL, 363, LOCATE_mmbuilder___PropertyBuilderVisitor___init};
1366 val_t variable[4];
1367 struct WBT_ **closurevariable = NULL;
1368 trace.prev = tracehead; tracehead = &trace;
1369 trace.file = LOCATE_mmbuilder;
1370 /* Register variable[0]: Local variable */
1371 variable[0] = self;
1372 /* Register variable[1]: Local variable */
1373 variable[1] = param0;
1374 /* Register variable[2]: Local variable */
1375 variable[2] = param1;
1376 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_PropertyBuilderVisitor].i]) return;
1377 /* Register variable[3]: Method return value and escape marker */
1378 CALL_syntax_base___AbsSyntaxVisitor___init(variable[0])(variable[0], variable[1], variable[2], init_table /*YYY*/) /*AbsSyntaxVisitor::init*/;
1379 return_label60: while(false);
1380 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_PropertyBuilderVisitor].i] = 1;
1381 tracehead = trace.prev;
1382 return;
1383 }
1384 void mmbuilder___PropertyVerifierVisitor___visit(val_t self, val_t param0) {
1385 struct trace_t trace = {NULL, NULL, 374, LOCATE_mmbuilder___PropertyVerifierVisitor___visit};
1386 val_t variable[3];
1387 struct WBT_ **closurevariable = NULL;
1388 trace.prev = tracehead; tracehead = &trace;
1389 trace.file = LOCATE_mmbuilder;
1390 /* Register variable[0]: Local variable */
1391 variable[0] = self;
1392 /* Register variable[1]: Local variable */
1393 variable[1] = param0;
1394 /* Register variable[2]: Method return value and escape marker */
1395 CALL_mmbuilder___PNode___accept_property_verifier( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::accept_property_verifier*/;
1396 return_label61: while(false);
1397 tracehead = trace.prev;
1398 return;
1399 }
1400 val_t mmbuilder___PropertyVerifierVisitor___signature_builder(val_t self) {
1401 struct trace_t trace = {NULL, NULL, 371, LOCATE_mmbuilder___PropertyVerifierVisitor___signature_builder};
1402 val_t *variable = NULL;
1403 struct WBT_ **closurevariable = NULL;
1404 trace.prev = tracehead; tracehead = &trace;
1405 trace.file = LOCATE_mmbuilder;
1406 tracehead = trace.prev;
1407 return ATTR_mmbuilder___PropertyVerifierVisitor____signature_builder( self) /*PropertyVerifierVisitor::_signature_builder*/;
1408 }
1409 void mmbuilder___PropertyVerifierVisitor___signature_builder__eq(val_t self, val_t param0) {
1410 struct trace_t trace = {NULL, NULL, 371, LOCATE_mmbuilder___PropertyVerifierVisitor___signature_builder__eq};
1411 val_t *variable = NULL;
1412 struct WBT_ **closurevariable = NULL;
1413 trace.prev = tracehead; tracehead = &trace;
1414 trace.file = LOCATE_mmbuilder;
1415 ATTR_mmbuilder___PropertyVerifierVisitor____signature_builder( self) /*PropertyVerifierVisitor::_signature_builder*/ = param0;
1416 tracehead = trace.prev;
1417 return;
1418 }
1419 void mmbuilder___PropertyVerifierVisitor___init(val_t self, val_t param0, val_t param1, int* init_table) {
1420 struct trace_t trace = {NULL, NULL, 376, LOCATE_mmbuilder___PropertyVerifierVisitor___init};
1421 val_t variable[5];
1422 struct WBT_ **closurevariable = NULL;
1423 trace.prev = tracehead; tracehead = &trace;
1424 trace.file = LOCATE_mmbuilder;
1425 /* Register variable[0]: Local variable */
1426 variable[0] = self;
1427 /* Register variable[1]: Local variable */
1428 variable[1] = param0;
1429 /* Register variable[2]: Local variable */
1430 variable[2] = param1;
1431 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_PropertyVerifierVisitor].i]) return;
1432 /* Register variable[3]: Method return value and escape marker */
1433 CALL_syntax_base___AbsSyntaxVisitor___init(variable[0])(variable[0], variable[1], variable[2], init_table /*YYY*/) /*AbsSyntaxVisitor::init*/;
1434 /* Register variable[4]: Result */
1435 variable[4] = NEW_SignatureBuilder_mmbuilder___SignatureBuilder___init() /*new SignatureBuilder*/;
1436 ATTR_mmbuilder___PropertyVerifierVisitor____signature_builder(variable[0]) /*PropertyVerifierVisitor::_signature_builder*/ = variable[4];
1437 return_label62: while(false);
1438 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_PropertyVerifierVisitor].i] = 1;
1439 tracehead = trace.prev;
1440 return;
1441 }
1442 val_t mmbuilder___SignatureBuilder___params(val_t self) {
1443 struct trace_t trace = {NULL, NULL, 385, LOCATE_mmbuilder___SignatureBuilder___params};
1444 val_t *variable = NULL;
1445 struct WBT_ **closurevariable = NULL;
1446 trace.prev = tracehead; tracehead = &trace;
1447 trace.file = LOCATE_mmbuilder;
1448 tracehead = trace.prev;
1449 return ATTR_mmbuilder___SignatureBuilder____params( self) /*SignatureBuilder::_params*/;
1450 }
1451 void mmbuilder___SignatureBuilder___params__eq(val_t self, val_t param0) {
1452 struct trace_t trace = {NULL, NULL, 385, LOCATE_mmbuilder___SignatureBuilder___params__eq};
1453 val_t *variable = NULL;
1454 struct WBT_ **closurevariable = NULL;
1455 trace.prev = tracehead; tracehead = &trace;
1456 trace.file = LOCATE_mmbuilder;
1457 ATTR_mmbuilder___SignatureBuilder____params( self) /*SignatureBuilder::_params*/ = param0;
1458 tracehead = trace.prev;
1459 return;
1460 }
1461 val_t mmbuilder___SignatureBuilder___untyped_params(val_t self) {
1462 struct trace_t trace = {NULL, NULL, 388, LOCATE_mmbuilder___SignatureBuilder___untyped_params};
1463 val_t *variable = NULL;
1464 struct WBT_ **closurevariable = NULL;
1465 trace.prev = tracehead; tracehead = &trace;
1466 trace.file = LOCATE_mmbuilder;
1467 tracehead = trace.prev;
1468 return ATTR_mmbuilder___SignatureBuilder____untyped_params( self) /*SignatureBuilder::_untyped_params*/;
1469 }
1470 void mmbuilder___SignatureBuilder___untyped_params__eq(val_t self, val_t param0) {
1471 struct trace_t trace = {NULL, NULL, 388, LOCATE_mmbuilder___SignatureBuilder___untyped_params__eq};
1472 val_t *variable = NULL;
1473 struct WBT_ **closurevariable = NULL;
1474 trace.prev = tracehead; tracehead = &trace;
1475 trace.file = LOCATE_mmbuilder;
1476 ATTR_mmbuilder___SignatureBuilder____untyped_params( self) /*SignatureBuilder::_untyped_params*/ = param0;
1477 tracehead = trace.prev;
1478 return;
1479 }
1480 val_t mmbuilder___SignatureBuilder___vararg_rank(val_t self) {
1481 struct trace_t trace = {NULL, NULL, 391, LOCATE_mmbuilder___SignatureBuilder___vararg_rank};
1482 val_t *variable = NULL;
1483 struct WBT_ **closurevariable = NULL;
1484 trace.prev = tracehead; tracehead = &trace;
1485 trace.file = LOCATE_mmbuilder;
1486 tracehead = trace.prev;
1487 return ATTR_mmbuilder___SignatureBuilder____vararg_rank( self) /*SignatureBuilder::_vararg_rank*/;
1488 }
1489 void mmbuilder___SignatureBuilder___vararg_rank__eq(val_t self, val_t param0) {
1490 struct trace_t trace = {NULL, NULL, 391, LOCATE_mmbuilder___SignatureBuilder___vararg_rank__eq};
1491 val_t *variable = NULL;
1492 struct WBT_ **closurevariable = NULL;
1493 trace.prev = tracehead; tracehead = &trace;
1494 trace.file = LOCATE_mmbuilder;
1495 ATTR_mmbuilder___SignatureBuilder____vararg_rank( self) /*SignatureBuilder::_vararg_rank*/ = param0;
1496 tracehead = trace.prev;
1497 return;
1498 }
1499 val_t mmbuilder___SignatureBuilder___closure_decls(val_t self) {
1500 struct trace_t trace = {NULL, NULL, 394, LOCATE_mmbuilder___SignatureBuilder___closure_decls};
1501 val_t *variable = NULL;
1502 struct WBT_ **closurevariable = NULL;
1503 trace.prev = tracehead; tracehead = &trace;
1504 trace.file = LOCATE_mmbuilder;
1505 tracehead = trace.prev;
1506 return ATTR_mmbuilder___SignatureBuilder____closure_decls( self) /*SignatureBuilder::_closure_decls*/;
1507 }
1508 void mmbuilder___SignatureBuilder___closure_decls__eq(val_t self, val_t param0) {
1509 struct trace_t trace = {NULL, NULL, 394, LOCATE_mmbuilder___SignatureBuilder___closure_decls__eq};
1510 val_t *variable = NULL;
1511 struct WBT_ **closurevariable = NULL;
1512 trace.prev = tracehead; tracehead = &trace;
1513 trace.file = LOCATE_mmbuilder;
1514 ATTR_mmbuilder___SignatureBuilder____closure_decls( self) /*SignatureBuilder::_closure_decls*/ = param0;
1515 tracehead = trace.prev;
1516 return;
1517 }
1518 val_t mmbuilder___SignatureBuilder___signature(val_t self) {
1519 struct trace_t trace = {NULL, NULL, 397, LOCATE_mmbuilder___SignatureBuilder___signature};
1520 val_t *variable = NULL;
1521 struct WBT_ **closurevariable = NULL;
1522 trace.prev = tracehead; tracehead = &trace;
1523 trace.file = LOCATE_mmbuilder;
1524 tracehead = trace.prev;
1525 return ATTR_mmbuilder___SignatureBuilder____signature( self) /*SignatureBuilder::_signature*/;
1526 }
1527 void mmbuilder___SignatureBuilder___signature__eq(val_t self, val_t param0) {
1528 struct trace_t trace = {NULL, NULL, 397, LOCATE_mmbuilder___SignatureBuilder___signature__eq};
1529 val_t *variable = NULL;
1530 struct WBT_ **closurevariable = NULL;
1531 trace.prev = tracehead; tracehead = &trace;
1532 trace.file = LOCATE_mmbuilder;
1533 ATTR_mmbuilder___SignatureBuilder____signature( self) /*SignatureBuilder::_signature*/ = param0;
1534 tracehead = trace.prev;
1535 return;
1536 }
1537 void mmbuilder___SignatureBuilder___init(val_t self, int* init_table) {
1538 struct trace_t trace = {NULL, NULL, 0, LOCATE_mmbuilder___SignatureBuilder___init};
1539 val_t *variable = NULL;
1540 struct WBT_ **closurevariable = NULL;
1541 trace.prev = tracehead; tracehead = &trace;
1542 trace.file = LOCATE_mmbuilder;
1543 tracehead = trace.prev;
1544 return;
1545 }
1546 void mmbuilder___PNode___accept_class_builder(val_t self, val_t param0) {
1547 struct trace_t trace = {NULL, NULL, 404, LOCATE_mmbuilder___PNode___accept_class_builder};
1548 val_t variable[3];
1549 struct WBT_ **closurevariable = NULL;
1550 trace.prev = tracehead; tracehead = &trace;
1551 trace.file = LOCATE_mmbuilder;
1552 /* Register variable[0]: Local variable */
1553 variable[0] = self;
1554 /* Register variable[1]: Local variable */
1555 variable[1] = param0;
1556 /* Register variable[2]: Method return value and escape marker */
1557 CALL_syntax_base___PNode___accept_abs_syntax_visitor(variable[0])(variable[0], variable[1] /*v*/) /*PNode::accept_abs_syntax_visitor*/;
1558 return_label63: while(false);
1559 tracehead = trace.prev;
1560 return;
1561 }
1562 void mmbuilder___PNode___accept_class_specialization_builder(val_t self, val_t param0) {
1563 struct trace_t trace = {NULL, NULL, 405, LOCATE_mmbuilder___PNode___accept_class_specialization_builder};
1564 val_t variable[3];
1565 struct WBT_ **closurevariable = NULL;
1566 trace.prev = tracehead; tracehead = &trace;
1567 trace.file = LOCATE_mmbuilder;
1568 /* Register variable[0]: Local variable */
1569 variable[0] = self;
1570 /* Register variable[1]: Local variable */
1571 variable[1] = param0;
1572 /* Register variable[2]: Method return value and escape marker */
1573 CALL_syntax_base___PNode___accept_abs_syntax_visitor(variable[0])(variable[0], variable[1] /*v*/) /*PNode::accept_abs_syntax_visitor*/;
1574 return_label64: while(false);
1575 tracehead = trace.prev;
1576 return;
1577 }
1578 void mmbuilder___PNode___accept_class_ancestor_builder(val_t self, val_t param0) {
1579 struct trace_t trace = {NULL, NULL, 406, LOCATE_mmbuilder___PNode___accept_class_ancestor_builder};
1580 val_t variable[3];
1581 struct WBT_ **closurevariable = NULL;
1582 trace.prev = tracehead; tracehead = &trace;
1583 trace.file = LOCATE_mmbuilder;
1584 /* Register variable[0]: Local variable */
1585 variable[0] = self;
1586 /* Register variable[1]: Local variable */
1587 variable[1] = param0;
1588 /* Register variable[2]: Method return value and escape marker */
1589 CALL_syntax_base___PNode___accept_abs_syntax_visitor(variable[0])(variable[0], variable[1] /*v*/) /*PNode::accept_abs_syntax_visitor*/;
1590 return_label65: while(false);
1591 tracehead = trace.prev;
1592 return;
1593 }
1594 void mmbuilder___PNode___accept_class_verifier(val_t self, val_t param0) {
1595 struct trace_t trace = {NULL, NULL, 407, LOCATE_mmbuilder___PNode___accept_class_verifier};
1596 val_t variable[3];
1597 struct WBT_ **closurevariable = NULL;
1598 trace.prev = tracehead; tracehead = &trace;
1599 trace.file = LOCATE_mmbuilder;
1600 /* Register variable[0]: Local variable */
1601 variable[0] = self;
1602 /* Register variable[1]: Local variable */
1603 variable[1] = param0;
1604 /* Register variable[2]: Method return value and escape marker */
1605 CALL_syntax_base___PNode___accept_abs_syntax_visitor(variable[0])(variable[0], variable[1] /*v*/) /*PNode::accept_abs_syntax_visitor*/;
1606 return_label66: while(false);
1607 tracehead = trace.prev;
1608 return;
1609 }
1610 void mmbuilder___PNode___accept_property_builder(val_t self, val_t param0) {
1611 struct trace_t trace = {NULL, NULL, 408, LOCATE_mmbuilder___PNode___accept_property_builder};
1612 val_t variable[3];
1613 struct WBT_ **closurevariable = NULL;
1614 trace.prev = tracehead; tracehead = &trace;
1615 trace.file = LOCATE_mmbuilder;
1616 /* Register variable[0]: Local variable */
1617 variable[0] = self;
1618 /* Register variable[1]: Local variable */
1619 variable[1] = param0;
1620 /* Register variable[2]: Method return value and escape marker */
1621 CALL_syntax_base___PNode___accept_abs_syntax_visitor(variable[0])(variable[0], variable[1] /*v*/) /*PNode::accept_abs_syntax_visitor*/;
1622 return_label67: while(false);
1623 tracehead = trace.prev;
1624 return;
1625 }
1626 void mmbuilder___PNode___accept_property_verifier(val_t self, val_t param0) {
1627 struct trace_t trace = {NULL, NULL, 409, LOCATE_mmbuilder___PNode___accept_property_verifier};
1628 val_t variable[3];
1629 struct WBT_ **closurevariable = NULL;
1630 trace.prev = tracehead; tracehead = &trace;
1631 trace.file = LOCATE_mmbuilder;
1632 /* Register variable[0]: Local variable */
1633 variable[0] = self;
1634 /* Register variable[1]: Local variable */
1635 variable[1] = param0;
1636 /* Register variable[2]: Method return value and escape marker */
1637 CALL_syntax_base___PNode___accept_abs_syntax_visitor(variable[0])(variable[0], variable[1] /*v*/) /*PNode::accept_abs_syntax_visitor*/;
1638 return_label68: while(false);
1639 tracehead = trace.prev;
1640 return;
1641 }
1642 void mmbuilder___AModule___import_super_modules(val_t self, val_t param0, val_t param1) {
1643 struct trace_t trace = {NULL, NULL, 413, LOCATE_mmbuilder___AModule___import_super_modules};
1644 static val_t once_value_71 = NIT_NULL; /* Once value for string variable[8]*/
1645 static val_t once_value_72 = NIT_NULL; /* Once value for string variable[8]*/
1646 static val_t once_value_73; static int once_bool_73; /* Once value for variable[8]*/
1647 static val_t once_value_74 = NIT_NULL; /* Once value for string variable[8]*/
1648 val_t variable[13];
1649 struct WBT_ **closurevariable = NULL;
1650 trace.prev = tracehead; tracehead = &trace;
1651 trace.file = LOCATE_mmbuilder;
1652 /* Register variable[0]: Local variable */
1653 variable[0] = self;
1654 /* Register variable[1]: Local variable */
1655 variable[1] = param0;
1656 /* Register variable[2]: Local variable */
1657 variable[2] = param1;
1658 /* Register variable[3]: Method return value and escape marker */
1659 /* Register variable[4]: Local variable */
1660 /* Register variable[5]: Result */
1661 variable[5] = NEW_Array_array___Array___init() /*new Array[Symbol]*/;
1662 variable[4] = variable[5];
1663 /* Register variable[5]: Local variable */
1664 /* Register variable[6]: Result */
1665 variable[6] = NEW_HashMap_hash___HashMap___init() /*new HashMap[Symbol, Int]*/;
1666 variable[5] = variable[6];
1667 /* Register variable[6]: Local variable */
1668 variable[6] = NIT_NULL /*null*/;
1669 /* Register variable[7]: Result */
1670 variable[7] = CALL_parser_nodes___AModule___n_imports(variable[0])(variable[0]) /*AModule::n_imports*/;
1671 /* Register variable[7]: For iterator */
1672 variable[7] = CALL_abstract_collection___Collection___iterator(variable[7])(variable[7]) /*List::iterator*/;
1673 while (true) { /*for*/
1674 /* Register variable[8]: For 'is_ok' result */
1675 variable[8] = CALL_abstract_collection___Iterator___is_ok(variable[7])(variable[7]) /*ListIterator::is_ok*/;
1676 if (!UNTAG_Bool(variable[8])) break; /*for*/
1677 variable[8] = CALL_abstract_collection___Iterator___item(variable[7])(variable[7]) /*ListIterator::item*/ /* Ensure var: For item*/;
1678 /* Register variable[9]: Local variable */
1679 variable[9] = variable[8];
1680 /* Register variable[10]: Local variable */
1681 /* Register variable[11]: Result */
1682 variable[11] = CALL_mmbuilder___PImport___module_name( variable[9] /*i*/)( variable[9] /*i*/) /*PImport::module_name*/;
1683 variable[10] = variable[11];
1684 /* Register variable[11]: Result */
1685 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::==*/)))))));
1686 if (UNTAG_Bool(variable[11])) { /*if*/
1687 CALL_abstract_collection___SimpleCollection___add( variable[4] /*module_names_to_import*/)( variable[4] /*module_names_to_import*/, variable[10] /*n*/) /*AbstractArray::add*/;
1688 /* Register variable[11]: Result */
1689 variable[11] = CALL_mmbuilder___PImport___visibility_level( variable[9] /*i*/)( variable[9] /*i*/) /*PImport::visibility_level*/;
1690 CALL_abstract_collection___Map_____braeq( variable[5] /*module_visibility*/)( variable[5] /*module_visibility*/, variable[10] /*n*/, variable[11]) /*HashMap::[]=*/;
1691 } else { /*if*/
1692 variable[6] = variable[9] /*i*/ /*no_import=*/;
1693 }
1694 continue_70: while(0);
1695 CALL_abstract_collection___Iterator___next(variable[7])(variable[7]) /*ListIterator::next*/;
1696 }
1697 break_70: while(0);
1698 /* Register variable[7]: Result */
1699 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::==*/)))))));
1700 if (UNTAG_Bool(variable[7])) { /*if*/
1701 /* Register variable[7]: Result */
1702 variable[7] = CALL_abstract_collection___Collection___is_empty( variable[4] /*module_names_to_import*/)( variable[4] /*module_names_to_import*/) /*AbstractArrayRead::is_empty*/;
1703 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[7])))) { /*if*/
1704 variable[7] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
1705 /* Register variable[8]: Once String constant */
1706 if (once_value_71 != NIT_NULL) variable[8] = once_value_71;
1707 else {
1708 variable[8] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
1709 once_value_71 = variable[8];
1710 }
1711 /* Register variable[8]: Result */
1712 /* Ensure var variable[8]: super-string element*/
1713 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
1714 /* Register variable[8]: Result */
1715 variable[8] = CALL_parser_prod___PNode___locate( variable[6] /*no_import*/)( variable[6] /*no_import*/) /*Prod::locate*/;
1716 /* Ensure var variable[8]: super-string element*/
1717 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
1718 /* Register variable[8]: Once String constant */
1719 if (once_value_72 != NIT_NULL) variable[8] = once_value_72;
1720 else {
1721 variable[8] = NEW_String_string___String___with_native(BOX_NativeString(": Error: Top modules cannot import other modules."), TAG_Int(49)) /*new String*/;
1722 once_value_72 = variable[8];
1723 }
1724 /* Register variable[8]: Result */
1725 /* Ensure var variable[8]: super-string element*/
1726 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
1727 /* Register variable[7]: Result */
1728 variable[7] = CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/;
1729 CALL_mmloader___ToolContext___error( variable[1] /*tc*/)( variable[1] /*tc*/, variable[7]) /*ToolContext::error*/;
1730 }
1731 } else { /*if*/
1732 /* Register variable[7]: Result */
1733 variable[7] = CALL_abstract_collection___Collection___is_empty( variable[4] /*module_names_to_import*/)( variable[4] /*module_names_to_import*/) /*AbstractArrayRead::is_empty*/;
1734 if (UNTAG_Bool(variable[7])) { /*if*/
1735 /* Register variable[7]: Local variable */
1736 /* Register variable[8]: Once expression result */
1737 if (once_bool_73) variable[8] = once_value_73;
1738 else {
1739 /* Register variable[8]: Once String constant */
1740 if (once_value_74 != NIT_NULL) variable[8] = once_value_74;
1741 else {
1742 variable[8] = NEW_String_string___String___with_native(BOX_NativeString("standard"), TAG_Int(8)) /*new String*/;
1743 once_value_74 = variable[8];
1744 }
1745 /* Register variable[8]: Result */
1746 /* Register variable[8]: Result */
1747 variable[8] = CALL_symbol___String___to_symbol(variable[8])(variable[8]) /*String::to_symbol*/;
1748 once_value_73 = variable[8];
1749 once_bool_73 = true;
1750 }
1751 /* Register variable[8]: Result */
1752 variable[7] = variable[8];
1753 CALL_abstract_collection___SimpleCollection___add( variable[4] /*module_names_to_import*/)( variable[4] /*module_names_to_import*/, variable[7] /*stdname*/) /*AbstractArray::add*/;
1754 CALL_abstract_collection___Map_____braeq( variable[5] /*module_visibility*/)( variable[5] /*module_visibility*/, variable[7] /*stdname*/, TAG_Int(1)) /*HashMap::[]=*/;
1755 }
1756 }
1757 CALL_mmloader___MMModule___import_supers_modules( variable[2] /*mod*/)( variable[2] /*mod*/, variable[4] /*module_names_to_import*/) /*MMModule::import_supers_modules*/;
1758 /* Register variable[7]: For iterator */
1759 variable[7] = CALL_abstract_collection___Collection___iterator( variable[4] /*module_names_to_import*/)( variable[4] /*module_names_to_import*/) /*AbstractArrayRead::iterator*/;
1760 while (true) { /*for*/
1761 /* Register variable[8]: For 'is_ok' result */
1762 variable[8] = CALL_abstract_collection___Iterator___is_ok(variable[7])(variable[7]) /*ArrayIterator::is_ok*/;
1763 if (!UNTAG_Bool(variable[8])) break; /*for*/
1764 variable[8] = CALL_abstract_collection___Iterator___item(variable[7])(variable[7]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
1765 /* Register variable[9]: Local variable */
1766 variable[9] = variable[8];
1767 /* Register variable[10]: Local variable */
1768 /* Register variable[11]: Result */
1769 variable[11] = CALL_abstract_collection___MapRead_____bra( variable[5] /*module_visibility*/)( variable[5] /*module_visibility*/, variable[9] /*mname*/) /*CoupleMap::[]*/;
1770 variable[10] = variable[11];
1771 /* Register variable[11]: Local variable */
1772 /* Register variable[12]: Result */
1773 variable[12] = CALL_mmloader___ToolContext___get_module( variable[1] /*tc*/)( variable[1] /*tc*/, variable[9] /*mname*/, variable[2] /*mod*/) /*ToolContext::get_module*/;
1774 variable[11] = variable[12];
1775 CALL_abstractmetamodel___MMModule___add_super_module( variable[2] /*mod*/)( variable[2] /*mod*/, variable[11] /*m*/, variable[10] /*level*/) /*MMModule::add_super_module*/;
1776 continue_75: while(0);
1777 CALL_abstract_collection___Iterator___next(variable[7])(variable[7]) /*ArrayIterator::next*/;
1778 }
1779 break_75: while(0);
1780 return_label69: while(false);
1781 tracehead = trace.prev;
1782 return;
1783 }
1784 void mmbuilder___APackagedecl___accept_class_builder(val_t self, val_t param0) {
1785 struct trace_t trace = {NULL, NULL, 450, LOCATE_mmbuilder___APackagedecl___accept_class_builder};
1786 static val_t once_value_77 = NIT_NULL; /* Once value for string variable[5]*/
1787 static val_t once_value_78 = NIT_NULL; /* Once value for string variable[5]*/
1788 static val_t once_value_79 = NIT_NULL; /* Once value for string variable[5]*/
1789 val_t variable[6];
1790 struct WBT_ **closurevariable = NULL;
1791 trace.prev = tracehead; tracehead = &trace;
1792 trace.file = LOCATE_mmbuilder;
1793 /* Register variable[0]: Local variable */
1794 variable[0] = self;
1795 /* Register variable[1]: Local variable */
1796 variable[1] = param0;
1797 /* Register variable[2]: Method return value and escape marker */
1798 /* Register variable[3]: Result */
1799 variable[3] = CALL_parser_nodes___APackagedecl___n_id(variable[0])(variable[0]) /*APackagedecl::n_id*/;
1800 /* Register variable[3]: Result */
1801 variable[3] = CALL_syntax_base___Token___to_symbol(variable[3])(variable[3]) /*Token::to_symbol*/;
1802 /* Register variable[4]: Result */
1803 variable[4] = CALL_syntax_base___AbsSyntaxVisitor___module( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::module*/;
1804 /* Register variable[4]: Result */
1805 variable[4] = CALL_abstractmetamodel___MMModule___name(variable[4])(variable[4]) /*MMModule::name*/;
1806 /* Register variable[3]: Result */
1807 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::==*/)))))));
1808 if (UNTAG_Bool(variable[3])) { /*if*/
1809 /* Register variable[3]: Result */
1810 variable[3] = CALL_parser_nodes___APackagedecl___n_id(variable[0])(variable[0]) /*APackagedecl::n_id*/;
1811 variable[4] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
1812 /* Register variable[5]: Once String constant */
1813 if (once_value_77 != NIT_NULL) variable[5] = once_value_77;
1814 else {
1815 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Error: Package name missmatch between "), TAG_Int(38)) /*new String*/;
1816 once_value_77 = variable[5];
1817 }
1818 /* Register variable[5]: Result */
1819 /* Ensure var variable[5]: super-string element*/
1820 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
1821 /* Register variable[5]: Result */
1822 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___module( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::module*/;
1823 /* Register variable[5]: Result */
1824 variable[5] = CALL_abstractmetamodel___MMModule___name(variable[5])(variable[5]) /*MMModule::name*/;
1825 /* Ensure var variable[5]: super-string element*/
1826 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/) /*AbstractArray::add*/;
1827 /* Register variable[5]: Once String constant */
1828 if (once_value_78 != NIT_NULL) variable[5] = once_value_78;
1829 else {
1830 variable[5] = NEW_String_string___String___with_native(BOX_NativeString(" and "), TAG_Int(5)) /*new String*/;
1831 once_value_78 = variable[5];
1832 }
1833 /* Register variable[5]: Result */
1834 /* Ensure var variable[5]: super-string element*/
1835 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
1836 /* Register variable[5]: Result */
1837 variable[5] = CALL_parser_nodes___APackagedecl___n_id(variable[0])(variable[0]) /*APackagedecl::n_id*/;
1838 /* Register variable[5]: Result */
1839 variable[5] = CALL_syntax_base___Token___to_symbol(variable[5])(variable[5]) /*Token::to_symbol*/;
1840 /* Ensure var variable[5]: super-string element*/
1841 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/) /*AbstractArray::add*/;
1842 /* Register variable[5]: Once String constant */
1843 if (once_value_79 != NIT_NULL) variable[5] = once_value_79;
1844 else {
1845 variable[5] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
1846 once_value_79 = variable[5];
1847 }
1848 /* Register variable[5]: Result */
1849 /* Ensure var variable[5]: super-string element*/
1850 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
1851 /* Register variable[4]: Result */
1852 variable[4] = CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/;
1853 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[3], variable[4]) /*AbsSyntaxVisitor::error*/;
1854 }
1855 return_label76: while(false);
1856 tracehead = trace.prev;
1857 return;
1858 }
1859 val_t mmbuilder___PImport___module_name(val_t self) {
1860 struct trace_t trace = {NULL, NULL, 459, LOCATE_mmbuilder___PImport___module_name};
1861 val_t *variable = NULL;
1862 struct WBT_ **closurevariable = NULL;
1863 trace.prev = tracehead; tracehead = &trace;
1864 trace.file = LOCATE_mmbuilder;
1865 fprintf(stderr, "Deferred method called");
1866 fprintf(stderr, " (%s:%d)\n", LOCATE_mmbuilder, 459);
1867 nit_exit(1);
1868 tracehead = trace.prev;
1869 return NIT_NULL;
1870 }
1871 val_t mmbuilder___PImport___visibility_level(val_t self) {
1872 struct trace_t trace = {NULL, NULL, 462, LOCATE_mmbuilder___PImport___visibility_level};
1873 val_t *variable = NULL;
1874 struct WBT_ **closurevariable = NULL;
1875 trace.prev = tracehead; tracehead = &trace;
1876 trace.file = LOCATE_mmbuilder;
1877 fprintf(stderr, "Deferred method called");
1878 fprintf(stderr, " (%s:%d)\n", LOCATE_mmbuilder, 462);
1879 nit_exit(1);
1880 tracehead = trace.prev;
1881 return NIT_NULL;
1882 }
1883 val_t mmbuilder___AImport___module_name(val_t self) {
1884 struct trace_t trace = {NULL, NULL, 466, LOCATE_mmbuilder___AImport___module_name};
1885 val_t variable[3];
1886 struct WBT_ **closurevariable = NULL;
1887 trace.prev = tracehead; tracehead = &trace;
1888 trace.file = LOCATE_mmbuilder;
1889 /* Register variable[0]: Local variable */
1890 variable[0] = self;
1891 /* Register variable[1]: Method return value and escape marker */
1892 /* Register variable[2]: Result */
1893 variable[2] = CALL_parser_nodes___AImport___n_id(variable[0])(variable[0]) /*AImport::n_id*/;
1894 /* Register variable[2]: Result */
1895 variable[2] = CALL_syntax_base___Token___to_symbol(variable[2])(variable[2]) /*Token::to_symbol*/;
1896 variable[1] = variable[2];
1897 goto return_label80;
1898 return_label80: while(false);
1899 tracehead = trace.prev;
1900 return variable[1];
1901 }
1902 val_t mmbuilder___AImport___visibility_level(val_t self) {
1903 struct trace_t trace = {NULL, NULL, 470, LOCATE_mmbuilder___AImport___visibility_level};
1904 val_t variable[3];
1905 struct WBT_ **closurevariable = NULL;
1906 trace.prev = tracehead; tracehead = &trace;
1907 trace.file = LOCATE_mmbuilder;
1908 /* Register variable[0]: Local variable */
1909 variable[0] = self;
1910 /* Register variable[1]: Method return value and escape marker */
1911 /* Register variable[2]: Result */
1912 variable[2] = CALL_parser_nodes___AImport___n_visibility(variable[0])(variable[0]) /*AImport::n_visibility*/;
1913 /* Register variable[2]: Result */
1914 variable[2] = CALL_mmbuilder___PVisibility___level(variable[2])(variable[2]) /*PVisibility::level*/;
1915 variable[1] = variable[2];
1916 goto return_label81;
1917 return_label81: while(false);
1918 tracehead = trace.prev;
1919 return variable[1];
1920 }
1921 val_t mmbuilder___ANoImport___module_name(val_t self) {
1922 struct trace_t trace = {NULL, NULL, 476, LOCATE_mmbuilder___ANoImport___module_name};
1923 val_t variable[2];
1924 struct WBT_ **closurevariable = NULL;
1925 trace.prev = tracehead; tracehead = &trace;
1926 trace.file = LOCATE_mmbuilder;
1927 /* Register variable[0]: Local variable */
1928 variable[0] = self;
1929 /* Register variable[1]: Method return value and escape marker */
1930 variable[1] = NIT_NULL /*null*/;
1931 goto return_label82;
1932 return_label82: while(false);
1933 tracehead = trace.prev;
1934 return variable[1];
1935 }
1936 val_t mmbuilder___PVisibility___level(val_t self) {
1937 struct trace_t trace = {NULL, NULL, 483, LOCATE_mmbuilder___PVisibility___level};
1938 val_t *variable = NULL;
1939 struct WBT_ **closurevariable = NULL;
1940 trace.prev = tracehead; tracehead = &trace;
1941 trace.file = LOCATE_mmbuilder;
1942 fprintf(stderr, "Deferred method called");
1943 fprintf(stderr, " (%s:%d)\n", LOCATE_mmbuilder, 483);
1944 nit_exit(1);
1945 tracehead = trace.prev;
1946 return NIT_NULL;
1947 }
1948 val_t mmbuilder___APublicVisibility___level(val_t self) {
1949 struct trace_t trace = {NULL, NULL, 487, LOCATE_mmbuilder___APublicVisibility___level};
1950 val_t variable[2];
1951 struct WBT_ **closurevariable = NULL;
1952 trace.prev = tracehead; tracehead = &trace;
1953 trace.file = LOCATE_mmbuilder;
1954 /* Register variable[0]: Local variable */
1955 variable[0] = self;
1956 /* Register variable[1]: Method return value and escape marker */
1957 variable[1] = TAG_Int(1);
1958 goto return_label83;
1959 return_label83: while(false);
1960 tracehead = trace.prev;
1961 return variable[1];
1962 }
1963 val_t mmbuilder___AProtectedVisibility___level(val_t self) {
1964 struct trace_t trace = {NULL, NULL, 490, LOCATE_mmbuilder___AProtectedVisibility___level};
1965 val_t variable[2];
1966 struct WBT_ **closurevariable = NULL;
1967 trace.prev = tracehead; tracehead = &trace;
1968 trace.file = LOCATE_mmbuilder;
1969 /* Register variable[0]: Local variable */
1970 variable[0] = self;
1971 /* Register variable[1]: Method return value and escape marker */
1972 variable[1] = TAG_Int(2);
1973 goto return_label84;
1974 return_label84: while(false);
1975 tracehead = trace.prev;
1976 return variable[1];
1977 }
1978 val_t mmbuilder___APrivateVisibility___level(val_t self) {
1979 struct trace_t trace = {NULL, NULL, 493, LOCATE_mmbuilder___APrivateVisibility___level};
1980 val_t variable[2];
1981 struct WBT_ **closurevariable = NULL;
1982 trace.prev = tracehead; tracehead = &trace;
1983 trace.file = LOCATE_mmbuilder;
1984 /* Register variable[0]: Local variable */
1985 variable[0] = self;
1986 /* Register variable[1]: Method return value and escape marker */
1987 variable[1] = TAG_Int(3);
1988 goto return_label85;
1989 return_label85: while(false);
1990 tracehead = trace.prev;
1991 return variable[1];
1992 }
1993 val_t mmbuilder___AIntrudeVisibility___level(val_t self) {
1994 struct trace_t trace = {NULL, NULL, 496, LOCATE_mmbuilder___AIntrudeVisibility___level};
1995 val_t variable[2];
1996 struct WBT_ **closurevariable = NULL;
1997 trace.prev = tracehead; tracehead = &trace;
1998 trace.file = LOCATE_mmbuilder;
1999 /* Register variable[0]: Local variable */
2000 variable[0] = self;
2001 /* Register variable[1]: Method return value and escape marker */
2002 variable[1] = TAG_Int(0);
2003 goto return_label86;
2004 return_label86: while(false);
2005 tracehead = trace.prev;
2006 return variable[1];
2007 }
2008 void mmbuilder___PClassdef___accept_abs_syntax_visitor(val_t self, val_t param0) {
2009 struct trace_t trace = {NULL, NULL, 547, LOCATE_mmbuilder___PClassdef___accept_abs_syntax_visitor};
2010 val_t variable[4];
2011 struct WBT_ **closurevariable = NULL;
2012 trace.prev = tracehead; tracehead = &trace;
2013 trace.file = LOCATE_mmbuilder;
2014 /* Register variable[0]: Local variable */
2015 variable[0] = self;
2016 /* Register variable[1]: Local variable */
2017 variable[1] = param0;
2018 /* Register variable[2]: Method return value and escape marker */
2019 /* Register variable[3]: Result */
2020 variable[3] = ATTR_mmbuilder___PClassdef____local_class(variable[0]) /*PClassdef::_local_class*/;
2021 CALL_syntax_base___AbsSyntaxVisitor___local_class__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*AbsSyntaxVisitor::local_class=*/;
2022 CALL_SUPER_mmbuilder___PClassdef___accept_abs_syntax_visitor(variable[0])(variable[0], variable[1]) /*super PClassdef::accept_abs_syntax_visitor*/;
2023 CALL_syntax_base___AbsSyntaxVisitor___local_class__eq( variable[1] /*v*/)( variable[1] /*v*/, NIT_NULL /*null*/) /*AbsSyntaxVisitor::local_class=*/;
2024 return_label87: while(false);
2025 tracehead = trace.prev;
2026 return;
2027 }
2028 val_t mmbuilder___PClassdef___local_class(val_t self) {
2029 struct trace_t trace = {NULL, NULL, 501, LOCATE_mmbuilder___PClassdef___local_class};
2030 val_t *variable = NULL;
2031 struct WBT_ **closurevariable = NULL;
2032 trace.prev = tracehead; tracehead = &trace;
2033 trace.file = LOCATE_mmbuilder;
2034 tracehead = trace.prev;
2035 return ATTR_mmbuilder___PClassdef____local_class( self) /*PClassdef::_local_class*/;
2036 }
2037 void mmbuilder___PClassdef___accept_class_builder(val_t self, val_t param0) {
2038 struct trace_t trace = {NULL, NULL, 512, LOCATE_mmbuilder___PClassdef___accept_class_builder};
2039 static val_t once_value_89 = NIT_NULL; /* Once value for string variable[7]*/
2040 static val_t once_value_90 = NIT_NULL; /* Once value for string variable[7]*/
2041 static val_t once_value_91 = NIT_NULL; /* Once value for string variable[7]*/
2042 val_t variable[8];
2043 struct WBT_ **closurevariable = NULL;
2044 trace.prev = tracehead; tracehead = &trace;
2045 trace.file = LOCATE_mmbuilder;
2046 /* Register variable[0]: Local variable */
2047 variable[0] = self;
2048 /* Register variable[1]: Local variable */
2049 variable[1] = param0;
2050 /* Register variable[2]: Method return value and escape marker */
2051 /* Register variable[3]: Local variable */
2052 /*variable[3] is variable local_class*/
2053 /* Register variable[4]: Local variable */
2054 /* Register variable[5]: Result */
2055 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___module( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::module*/;
2056 variable[4] = variable[5];
2057 /* Register variable[5]: Local variable */
2058 /* Register variable[6]: Result */
2059 variable[6] = CALL_syntax_base___MMSrcModule___src_local_classes( variable[4] /*mod*/)( variable[4] /*mod*/) /*MMSrcModule::src_local_classes*/;
2060 variable[5] = variable[6];
2061 /* Register variable[6]: Result */
2062 variable[6] = CALL_mmbuilder___PClassdef___name(variable[0])(variable[0]) /*PClassdef::name*/;
2063 /* Register variable[6]: Result */
2064 variable[6] = CALL_abstract_collection___MapRead___has_key( variable[5] /*local_classes*/)( variable[5] /*local_classes*/, variable[6]) /*MapRead::has_key*/;
2065 if (UNTAG_Bool(variable[6])) { /*if*/
2066 /* Register variable[6]: Result */
2067 variable[6] = CALL_mmbuilder___PClassdef___name(variable[0])(variable[0]) /*PClassdef::name*/;
2068 /* Register variable[6]: Result */
2069 variable[6] = CALL_abstract_collection___MapRead_____bra( variable[5] /*local_classes*/)( variable[5] /*local_classes*/, variable[6]) /*MapRead::[]*/;
2070 variable[3] = variable[6] /*local_class=*/;
2071 /* Register variable[6]: Result */
2072 variable[6] = TAG_Bool((variable[0]==NIT_NULL) || VAL_ISA(variable[0], COLOR_AClassdef, ID_AClassdef)) /*cast AClassdef*/;
2073 if (UNTAG_Bool(variable[6])) { /*if*/
2074 variable[6] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
2075 /* Register variable[7]: Once String constant */
2076 if (once_value_89 != NIT_NULL) variable[7] = once_value_89;
2077 else {
2078 variable[7] = NEW_String_string___String___with_native(BOX_NativeString("Error: A class "), TAG_Int(15)) /*new String*/;
2079 once_value_89 = variable[7];
2080 }
2081 /* Register variable[7]: Result */
2082 /* Ensure var variable[7]: super-string element*/
2083 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
2084 /* Register variable[7]: Result */
2085 variable[7] = CALL_mmbuilder___PClassdef___name(variable[0])(variable[0]) /*AClassdef::name*/;
2086 /* Ensure var variable[7]: super-string element*/
2087 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/) /*AbstractArray::add*/;
2088 /* Register variable[7]: Once String constant */
2089 if (once_value_90 != NIT_NULL) variable[7] = once_value_90;
2090 else {
2091 variable[7] = NEW_String_string___String___with_native(BOX_NativeString(" is already defined at line "), TAG_Int(28)) /*new String*/;
2092 once_value_90 = variable[7];
2093 }
2094 /* Register variable[7]: Result */
2095 /* Ensure var variable[7]: super-string element*/
2096 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
2097 /* Register variable[7]: Result */
2098 variable[7] = CALL_syntax_base___MMSrcLocalClass___nodes( variable[3] /*local_class*/)( variable[3] /*local_class*/) /*MMSrcLocalClass::nodes*/;
2099 /* Register variable[7]: Result */
2100 variable[7] = CALL_abstract_collection___Collection___first(variable[7])(variable[7]) /*IndexedCollectionRead::first*/;
2101 /* Register variable[7]: Result */
2102 variable[7] = CALL_parser_prod___Prod___first_token(variable[7])(variable[7]) /*Prod::first_token*/;
2103 /* Register variable[7]: Result */
2104 variable[7] = CALL_lexer___Token___line(variable[7])(variable[7]) /*Token::line*/;
2105 /* Ensure var variable[7]: super-string element*/
2106 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/) /*AbstractArray::add*/;
2107 /* Register variable[7]: Once String constant */
2108 if (once_value_91 != NIT_NULL) variable[7] = once_value_91;
2109 else {
2110 variable[7] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
2111 once_value_91 = variable[7];
2112 }
2113 /* Register variable[7]: Result */
2114 /* Ensure var variable[7]: super-string element*/
2115 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
2116 /* Register variable[6]: Result */
2117 variable[6] = CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/;
2118 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[6]) /*AbsSyntaxVisitor::error*/;
2119 goto return_label88;
2120 }
2121 /* Register variable[6]: Result */
2122 variable[6] = CALL_syntax_base___MMSrcLocalClass___nodes( variable[3] /*local_class*/)( variable[3] /*local_class*/) /*MMSrcLocalClass::nodes*/;
2123 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[0]) /*AbstractArray::add*/;
2124 } else { /*if*/
2125 /* Register variable[6]: Result */
2126 variable[6] = CALL_mmbuilder___PClassdef___name(variable[0])(variable[0]) /*PClassdef::name*/;
2127 /* Register variable[7]: Result */
2128 variable[7] = CALL_mmbuilder___PClassdef___arity(variable[0])(variable[0]) /*PClassdef::arity*/;
2129 /* Register variable[6]: Result */
2130 variable[6] = NEW_MMSrcLocalClass_syntax_base___MMSrcLocalClass___init( variable[4] /*mod*/, variable[6], variable[0], variable[7]) /*new MMSrcLocalClass*/;
2131 variable[3] = variable[6] /*local_class=*/;
2132 /* Register variable[6]: Result */
2133 variable[6] = CALL_mmbuilder___PClassdef___name(variable[0])(variable[0]) /*PClassdef::name*/;
2134 CALL_abstract_collection___Map_____braeq( variable[5] /*local_classes*/)( variable[5] /*local_classes*/, variable[6], variable[3] /*local_class*/) /*Map::[]=*/;
2135 /* Register variable[6]: Result */
2136 variable[6] = CALL_mmbuilder___PClassdef___name(variable[0])(variable[0]) /*PClassdef::name*/;
2137 /* Register variable[6]: Result */
2138 variable[6] = CALL_abstractmetamodel___MMModule___has_global_class_named( variable[4] /*mod*/)( variable[4] /*mod*/, variable[6]) /*MMModule::has_global_class_named*/;
2139 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[6])))) { /*if*/
2140 CALL_abstractmetamodel___MMLocalClass___new_global( variable[3] /*local_class*/)( variable[3] /*local_class*/) /*MMLocalClass::new_global*/;
2141 } else { /*if*/
2142 /* Register variable[6]: Result */
2143 variable[6] = CALL_mmbuilder___PClassdef___name(variable[0])(variable[0]) /*PClassdef::name*/;
2144 /* Register variable[6]: Result */
2145 variable[6] = CALL_abstractmetamodel___MMModule___global_class_named( variable[4] /*mod*/)( variable[4] /*mod*/, variable[6]) /*MMModule::global_class_named*/;
2146 CALL_abstractmetamodel___MMLocalClass___set_global( variable[3] /*local_class*/)( variable[3] /*local_class*/, variable[6]) /*MMLocalClass::set_global*/;
2147 }
2148 }
2149 ATTR_mmbuilder___PClassdef____local_class(variable[0]) /*PClassdef::_local_class*/ = variable[3] /*local_class*/;
2150 CALL_mmbuilder___ClassBuilderVisitor___local_class_arity__eq( variable[1] /*v*/)( variable[1] /*v*/, TAG_Int(0)) /*ClassBuilderVisitor::local_class_arity=*/;
2151 /* Register variable[6]: Result */
2152 variable[6] = NEW_HashMap_hash___HashMap___init() /*new HashMap[Symbol, MMTypeFormalParameter]*/;
2153 CALL_mmbuilder___ClassBuilderVisitor___formals__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[6]) /*ClassBuilderVisitor::formals=*/;
2154 CALL_SUPER_mmbuilder___PClassdef___accept_class_builder(variable[0])(variable[0], variable[1]) /*super PClassdef::accept_class_builder*/;
2155 /* Register variable[6]: Result */
2156 variable[6] = ATTR_mmbuilder___PClassdef____local_class(variable[0]) /*PClassdef::_local_class*/;
2157 /* Register variable[7]: Result */
2158 variable[7] = CALL_mmbuilder___ClassBuilderVisitor___formals( variable[1] /*v*/)( variable[1] /*v*/) /*ClassBuilderVisitor::formals*/;
2159 CALL_syntax_base___MMSrcLocalClass___formal_dict__eq(variable[6])(variable[6], variable[7]) /*MMSrcLocalClass::formal_dict=*/;
2160 CALL_mmbuilder___ClassBuilderVisitor___formals__eq( variable[1] /*v*/)( variable[1] /*v*/, NIT_NULL /*null*/) /*ClassBuilderVisitor::formals=*/;
2161 return_label88: while(false);
2162 tracehead = trace.prev;
2163 return;
2164 }
2165 val_t mmbuilder___PClassdef___name(val_t self) {
2166 struct trace_t trace = {NULL, NULL, 503, LOCATE_mmbuilder___PClassdef___name};
2167 val_t *variable = NULL;
2168 struct WBT_ **closurevariable = NULL;
2169 trace.prev = tracehead; tracehead = &trace;
2170 trace.file = LOCATE_mmbuilder;
2171 fprintf(stderr, "Deferred method called");
2172 fprintf(stderr, " (%s:%d)\n", LOCATE_mmbuilder, 503);
2173 nit_exit(1);
2174 tracehead = trace.prev;
2175 return NIT_NULL;
2176 }
2177 val_t mmbuilder___PClassdef___arity(val_t self) {
2178 struct trace_t trace = {NULL, NULL, 506, LOCATE_mmbuilder___PClassdef___arity};
2179 val_t variable[2];
2180 struct WBT_ **closurevariable = NULL;
2181 trace.prev = tracehead; tracehead = &trace;
2182 trace.file = LOCATE_mmbuilder;
2183 /* Register variable[0]: Local variable */
2184 variable[0] = self;
2185 /* Register variable[1]: Method return value and escape marker */
2186 variable[1] = TAG_Int(0);
2187 goto return_label92;
2188 return_label92: while(false);
2189 tracehead = trace.prev;
2190 return variable[1];
2191 }
2192 val_t mmbuilder___PClassdef___visibility_level(val_t self) {
2193 struct trace_t trace = {NULL, NULL, 509, LOCATE_mmbuilder___PClassdef___visibility_level};
2194 val_t variable[2];
2195 struct WBT_ **closurevariable = NULL;
2196 trace.prev = tracehead; tracehead = &trace;
2197 trace.file = LOCATE_mmbuilder;
2198 /* Register variable[0]: Local variable */
2199 variable[0] = self;
2200 /* Register variable[1]: Method return value and escape marker */
2201 variable[1] = TAG_Int(1);
2202 goto return_label93;
2203 return_label93: while(false);
2204 tracehead = trace.prev;
2205 return variable[1];
2206 }
2207 val_t mmbuilder___PClasskind___is_interface(val_t self) {
2208 struct trace_t trace = {NULL, NULL, 556, LOCATE_mmbuilder___PClasskind___is_interface};
2209 val_t variable[2];
2210 struct WBT_ **closurevariable = NULL;
2211 trace.prev = tracehead; tracehead = &trace;
2212 trace.file = LOCATE_mmbuilder;
2213 /* Register variable[0]: Local variable */
2214 variable[0] = self;
2215 /* Register variable[1]: Method return value and escape marker */
2216 variable[1] = TAG_Bool(false);
2217 goto return_label94;
2218 return_label94: while(false);
2219 tracehead = trace.prev;
2220 return variable[1];
2221 }
2222 val_t mmbuilder___PClasskind___is_universal(val_t self) {
2223 struct trace_t trace = {NULL, NULL, 557, LOCATE_mmbuilder___PClasskind___is_universal};
2224 val_t variable[2];
2225 struct WBT_ **closurevariable = NULL;
2226 trace.prev = tracehead; tracehead = &trace;
2227 trace.file = LOCATE_mmbuilder;
2228 /* Register variable[0]: Local variable */
2229 variable[0] = self;
2230 /* Register variable[1]: Method return value and escape marker */
2231 variable[1] = TAG_Bool(false);
2232 goto return_label95;
2233 return_label95: while(false);
2234 tracehead = trace.prev;
2235 return variable[1];
2236 }
2237 val_t mmbuilder___PClasskind___is_abstract(val_t self) {
2238 struct trace_t trace = {NULL, NULL, 558, LOCATE_mmbuilder___PClasskind___is_abstract};
2239 val_t variable[2];
2240 struct WBT_ **closurevariable = NULL;
2241 trace.prev = tracehead; tracehead = &trace;
2242 trace.file = LOCATE_mmbuilder;
2243 /* Register variable[0]: Local variable */
2244 variable[0] = self;
2245 /* Register variable[1]: Method return value and escape marker */
2246 variable[1] = TAG_Bool(false);
2247 goto return_label96;
2248 return_label96: while(false);
2249 tracehead = trace.prev;
2250 return variable[1];
2251 }
2252 val_t mmbuilder___AInterfaceClasskind___is_interface(val_t self) {
2253 struct trace_t trace = {NULL, NULL, 562, LOCATE_mmbuilder___AInterfaceClasskind___is_interface};
2254 val_t variable[2];
2255 struct WBT_ **closurevariable = NULL;
2256 trace.prev = tracehead; tracehead = &trace;
2257 trace.file = LOCATE_mmbuilder;
2258 /* Register variable[0]: Local variable */
2259 variable[0] = self;
2260 /* Register variable[1]: Method return value and escape marker */
2261 variable[1] = TAG_Bool(true);
2262 goto return_label97;
2263 return_label97: while(false);
2264 tracehead = trace.prev;
2265 return variable[1];
2266 }
2267 val_t mmbuilder___AUniversalClasskind___is_universal(val_t self) {
2268 struct trace_t trace = {NULL, NULL, 565, LOCATE_mmbuilder___AUniversalClasskind___is_universal};
2269 val_t variable[2];
2270 struct WBT_ **closurevariable = NULL;
2271 trace.prev = tracehead; tracehead = &trace;
2272 trace.file = LOCATE_mmbuilder;
2273 /* Register variable[0]: Local variable */
2274 variable[0] = self;
2275 /* Register variable[1]: Method return value and escape marker */
2276 variable[1] = TAG_Bool(true);
2277 goto return_label98;
2278 return_label98: while(false);
2279 tracehead = trace.prev;
2280 return variable[1];
2281 }
2282 val_t mmbuilder___AAbstractClasskind___is_abstract(val_t self) {
2283 struct trace_t trace = {NULL, NULL, 568, LOCATE_mmbuilder___AAbstractClasskind___is_abstract};
2284 val_t variable[2];
2285 struct WBT_ **closurevariable = NULL;
2286 trace.prev = tracehead; tracehead = &trace;
2287 trace.file = LOCATE_mmbuilder;
2288 /* Register variable[0]: Local variable */
2289 variable[0] = self;
2290 /* Register variable[1]: Method return value and escape marker */
2291 variable[1] = TAG_Bool(true);
2292 goto return_label99;
2293 return_label99: while(false);
2294 tracehead = trace.prev;
2295 return variable[1];
2296 }
2297 void mmbuilder___AClassdef___accept_class_verifier(val_t self, val_t param0) {
2298 struct trace_t trace = {NULL, NULL, 580, LOCATE_mmbuilder___AClassdef___accept_class_verifier};
2299 static val_t once_value_101 = NIT_NULL; /* Once value for string variable[5]*/
2300 static val_t once_value_102 = NIT_NULL; /* Once value for string variable[5]*/
2301 static val_t once_value_104 = NIT_NULL; /* Once value for string variable[9]*/
2302 static val_t once_value_105 = NIT_NULL; /* Once value for string variable[9]*/
2303 static val_t once_value_106 = NIT_NULL; /* Once value for string variable[9]*/
2304 static val_t once_value_107 = NIT_NULL; /* Once value for string variable[9]*/
2305 static val_t once_value_108 = NIT_NULL; /* Once value for string variable[9]*/
2306 static val_t once_value_109 = NIT_NULL; /* Once value for string variable[9]*/
2307 static val_t once_value_110 = NIT_NULL; /* Once value for string variable[9]*/
2308 static val_t once_value_111 = NIT_NULL; /* Once value for string variable[9]*/
2309 static val_t once_value_112 = NIT_NULL; /* Once value for string variable[9]*/
2310 static val_t once_value_113 = NIT_NULL; /* Once value for string variable[9]*/
2311 static val_t once_value_114 = NIT_NULL; /* Once value for string variable[9]*/
2312 static val_t once_value_115 = NIT_NULL; /* Once value for string variable[9]*/
2313 static val_t once_value_116 = NIT_NULL; /* Once value for string variable[5]*/
2314 static val_t once_value_117 = NIT_NULL; /* Once value for string variable[5]*/
2315 static val_t once_value_118 = NIT_NULL; /* Once value for string variable[5]*/
2316 static val_t once_value_119 = NIT_NULL; /* Once value for string variable[5]*/
2317 static val_t once_value_120 = NIT_NULL; /* Once value for string variable[5]*/
2318 static val_t once_value_121 = NIT_NULL; /* Once value for string variable[5]*/
2319 static val_t once_value_122 = NIT_NULL; /* Once value for string variable[5]*/
2320 val_t variable[10];
2321 struct WBT_ **closurevariable = NULL;
2322 trace.prev = tracehead; tracehead = &trace;
2323 trace.file = LOCATE_mmbuilder;
2324 /* Register variable[0]: Local variable */
2325 variable[0] = self;
2326 /* Register variable[1]: Local variable */
2327 variable[1] = param0;
2328 /* Register variable[2]: Method return value and escape marker */
2329 CALL_SUPER_mmbuilder___AClassdef___accept_class_verifier(variable[0])(variable[0], variable[1]) /*super AClassdef::accept_class_verifier*/;
2330 /* Register variable[3]: Local variable */
2331 /* Register variable[4]: Result */
2332 variable[4] = ATTR_mmbuilder___PClassdef____local_class(variable[0]) /*PClassdef::_local_class*/;
2333 /* Register variable[4]: Result */
2334 variable[4] = CALL_abstractmetamodel___MMLocalClass___global(variable[4])(variable[4]) /*MMLocalClass::global*/;
2335 variable[3] = variable[4];
2336 /* Register variable[4]: Result */
2337 variable[4] = CALL_abstractmetamodel___MMGlobalClass___intro( variable[3] /*glob*/)( variable[3] /*glob*/) /*MMGlobalClass::intro*/;
2338 /* Register variable[5]: Result */
2339 variable[5] = ATTR_mmbuilder___PClassdef____local_class(variable[0]) /*PClassdef::_local_class*/;
2340 /* Register variable[4]: Result */
2341 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::==*/)))));
2342 if (UNTAG_Bool(variable[4])) { /*if*/
2343 /* Register variable[4]: Result */
2344 variable[4] = CALL_mmbuilder___PClassdef___visibility_level(variable[0])(variable[0]) /*AClassdef::visibility_level*/;
2345 CALL_abstractmetamodel___MMGlobalClass___visibility_level__eq( variable[3] /*glob*/)( variable[3] /*glob*/, variable[4]) /*MMGlobalClass::visibility_level=*/;
2346 /* Register variable[4]: Result */
2347 variable[4] = CALL_parser_nodes___AClassdef___n_classkind(variable[0])(variable[0]) /*AClassdef::n_classkind*/;
2348 /* Register variable[4]: Result */
2349 variable[4] = CALL_mmbuilder___PClasskind___is_interface(variable[4])(variable[4]) /*PClasskind::is_interface*/;
2350 CALL_abstractmetamodel___MMGlobalClass___is_interface__eq( variable[3] /*glob*/)( variable[3] /*glob*/, variable[4]) /*MMGlobalClass::is_interface=*/;
2351 /* Register variable[4]: Result */
2352 variable[4] = CALL_parser_nodes___AClassdef___n_classkind(variable[0])(variable[0]) /*AClassdef::n_classkind*/;
2353 /* Register variable[4]: Result */
2354 variable[4] = CALL_mmbuilder___PClasskind___is_abstract(variable[4])(variable[4]) /*PClasskind::is_abstract*/;
2355 CALL_abstractmetamodel___MMGlobalClass___is_abstract__eq( variable[3] /*glob*/)( variable[3] /*glob*/, variable[4]) /*MMGlobalClass::is_abstract=*/;
2356 /* Register variable[4]: Result */
2357 variable[4] = CALL_parser_nodes___AClassdef___n_classkind(variable[0])(variable[0]) /*AClassdef::n_classkind*/;
2358 /* Register variable[4]: Result */
2359 variable[4] = CALL_mmbuilder___PClasskind___is_universal(variable[4])(variable[4]) /*PClasskind::is_universal*/;
2360 CALL_abstractmetamodel___MMGlobalClass___is_universal__eq( variable[3] /*glob*/)( variable[3] /*glob*/, variable[4]) /*MMGlobalClass::is_universal=*/;
2361 /* Register variable[4]: Result */
2362 variable[4] = CALL_parser_nodes___AClassdef___n_kwredef(variable[0])(variable[0]) /*AClassdef::n_kwredef*/;
2363 /* Register variable[4]: Result */
2364 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::==*/)))))));
2365 if (UNTAG_Bool(variable[4])) { /*if*/
2366 variable[4] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
2367 /* Register variable[5]: Once String constant */
2368 if (once_value_101 != NIT_NULL) variable[5] = once_value_101;
2369 else {
2370 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: No class "), TAG_Int(22)) /*new String*/;
2371 once_value_101 = variable[5];
2372 }
2373 /* Register variable[5]: Result */
2374 /* Ensure var variable[5]: super-string element*/
2375 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
2376 /* Register variable[5]: Result */
2377 variable[5] = CALL_mmbuilder___PClassdef___name(variable[0])(variable[0]) /*AClassdef::name*/;
2378 /* Ensure var variable[5]: super-string element*/
2379 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/) /*AbstractArray::add*/;
2380 /* Register variable[5]: Once String constant */
2381 if (once_value_102 != NIT_NULL) variable[5] = once_value_102;
2382 else {
2383 variable[5] = NEW_String_string___String___with_native(BOX_NativeString(" is imported. Remove the redef keyword to define a new class."), TAG_Int(61)) /*new String*/;
2384 once_value_102 = variable[5];
2385 }
2386 /* Register variable[5]: Result */
2387 /* Ensure var variable[5]: super-string element*/
2388 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
2389 /* Register variable[4]: Result */
2390 variable[4] = CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/;
2391 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[4]) /*AbsSyntaxVisitor::error*/;
2392 }
2393 /* Register variable[4]: Result */
2394 variable[4] = ATTR_mmbuilder___PClassdef____local_class(variable[0]) /*PClassdef::_local_class*/;
2395 /* Register variable[4]: Result */
2396 variable[4] = CALL_abstractmetamodel___MMLocalClass___cshe(variable[4])(variable[4]) /*MMLocalClass::cshe*/;
2397 /* Register variable[4]: Result */
2398 variable[4] = CALL_partial_order___PartialOrderElement___direct_greaters(variable[4])(variable[4]) /*PartialOrderElement::direct_greaters*/;
2399 /* Register variable[4]: For iterator */
2400 variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*AbstractArrayRead::iterator*/;
2401 while (true) { /*for*/
2402 /* Register variable[5]: For 'is_ok' result */
2403 variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*ArrayIterator::is_ok*/;
2404 if (!UNTAG_Bool(variable[5])) break; /*for*/
2405 variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
2406 /* Register variable[6]: Local variable */
2407 variable[6] = variable[5];
2408 /* Register variable[7]: Local variable */
2409 /* Register variable[8]: Result */
2410 variable[8] = CALL_abstractmetamodel___MMLocalClass___global( variable[6] /*c*/)( variable[6] /*c*/) /*MMLocalClass::global*/;
2411 variable[7] = variable[8];
2412 /* Register variable[8]: Result */
2413 variable[8] = CALL_abstractmetamodel___MMGlobalClass___is_interface( variable[3] /*glob*/)( variable[3] /*glob*/) /*MMGlobalClass::is_interface*/;
2414 if (UNTAG_Bool(variable[8])) { /*if*/
2415 /* Register variable[8]: Result */
2416 variable[8] = CALL_abstractmetamodel___MMGlobalClass___is_universal( variable[7] /*cg*/)( variable[7] /*cg*/) /*MMGlobalClass::is_universal*/;
2417 if (UNTAG_Bool(variable[8])) { /*if*/
2418 variable[8] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
2419 /* Register variable[9]: Once String constant */
2420 if (once_value_104 != NIT_NULL) variable[9] = once_value_104;
2421 else {
2422 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("Special error: Interface "), TAG_Int(25)) /*new String*/;
2423 once_value_104 = variable[9];
2424 }
2425 /* Register variable[9]: Result */
2426 /* Ensure var variable[9]: super-string element*/
2427 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
2428 /* Register variable[9]: Result */
2429 variable[9] = CALL_mmbuilder___PClassdef___name(variable[0])(variable[0]) /*AClassdef::name*/;
2430 /* Ensure var variable[9]: super-string element*/
2431 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
2432 /* Register variable[9]: Once String constant */
2433 if (once_value_105 != NIT_NULL) variable[9] = once_value_105;
2434 else {
2435 variable[9] = NEW_String_string___String___with_native(BOX_NativeString(" try to specialise universal class "), TAG_Int(35)) /*new String*/;
2436 once_value_105 = variable[9];
2437 }
2438 /* Register variable[9]: Result */
2439 /* Ensure var variable[9]: super-string element*/
2440 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
2441 /* Register variable[9]: Result */
2442 variable[9] = CALL_abstractmetamodel___MMLocalClass___name( variable[6] /*c*/)( variable[6] /*c*/) /*MMLocalClass::name*/;
2443 /* Ensure var variable[9]: super-string element*/
2444 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
2445 /* Register variable[9]: Once String constant */
2446 if (once_value_106 != NIT_NULL) variable[9] = once_value_106;
2447 else {
2448 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
2449 once_value_106 = variable[9];
2450 }
2451 /* Register variable[9]: Result */
2452 /* Ensure var variable[9]: super-string element*/
2453 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
2454 /* Register variable[8]: Result */
2455 variable[8] = CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/;
2456 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[8]) /*AbsSyntaxVisitor::error*/;
2457 } else { /*if*/
2458 /* Register variable[8]: Result */
2459 variable[8] = CALL_abstractmetamodel___MMGlobalClass___is_interface( variable[7] /*cg*/)( variable[7] /*cg*/) /*MMGlobalClass::is_interface*/;
2460 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[8])))) { /*if*/
2461 variable[8] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
2462 /* Register variable[9]: Once String constant */
2463 if (once_value_107 != NIT_NULL) variable[9] = once_value_107;
2464 else {
2465 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("Special error: Interface "), TAG_Int(25)) /*new String*/;
2466 once_value_107 = variable[9];
2467 }
2468 /* Register variable[9]: Result */
2469 /* Ensure var variable[9]: super-string element*/
2470 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
2471 /* Register variable[9]: Result */
2472 variable[9] = CALL_mmbuilder___PClassdef___name(variable[0])(variable[0]) /*AClassdef::name*/;
2473 /* Ensure var variable[9]: super-string element*/
2474 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
2475 /* Register variable[9]: Once String constant */
2476 if (once_value_108 != NIT_NULL) variable[9] = once_value_108;
2477 else {
2478 variable[9] = NEW_String_string___String___with_native(BOX_NativeString(" try to specialise class "), TAG_Int(25)) /*new String*/;
2479 once_value_108 = variable[9];
2480 }
2481 /* Register variable[9]: Result */
2482 /* Ensure var variable[9]: super-string element*/
2483 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
2484 /* Register variable[9]: Result */
2485 variable[9] = CALL_abstractmetamodel___MMLocalClass___name( variable[6] /*c*/)( variable[6] /*c*/) /*MMLocalClass::name*/;
2486 /* Ensure var variable[9]: super-string element*/
2487 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
2488 /* Register variable[9]: Once String constant */
2489 if (once_value_109 != NIT_NULL) variable[9] = once_value_109;
2490 else {
2491 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
2492 once_value_109 = variable[9];
2493 }
2494 /* Register variable[9]: Result */
2495 /* Ensure var variable[9]: super-string element*/
2496 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
2497 /* Register variable[8]: Result */
2498 variable[8] = CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/;
2499 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[8]) /*AbsSyntaxVisitor::error*/;
2500 }
2501 }
2502 } else { /*if*/
2503 /* Register variable[8]: Result */
2504 variable[8] = CALL_abstractmetamodel___MMGlobalClass___is_universal( variable[3] /*glob*/)( variable[3] /*glob*/) /*MMGlobalClass::is_universal*/;
2505 if (UNTAG_Bool(variable[8])) { /*if*/
2506 /* Register variable[8]: Result */
2507 variable[8] = CALL_abstractmetamodel___MMGlobalClass___is_interface( variable[7] /*cg*/)( variable[7] /*cg*/) /*MMGlobalClass::is_interface*/;
2508 variable[8] = TAG_Bool(!UNTAG_Bool(variable[8])) /* Ensure var: Left 'and' operand*/;
2509 if (UNTAG_Bool(variable[8])) { /* and */
2510 /* Register variable[8]: Result */
2511 variable[8] = CALL_abstractmetamodel___MMGlobalClass___is_universal( variable[7] /*cg*/)( variable[7] /*cg*/) /*MMGlobalClass::is_universal*/;
2512 variable[8] = TAG_Bool(!UNTAG_Bool(variable[8]));
2513 }
2514 /* Register variable[8]: Result */
2515 if (UNTAG_Bool(variable[8])) { /*if*/
2516 variable[8] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
2517 /* Register variable[9]: Once String constant */
2518 if (once_value_110 != NIT_NULL) variable[9] = once_value_110;
2519 else {
2520 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("Special error: Universal class "), TAG_Int(31)) /*new String*/;
2521 once_value_110 = variable[9];
2522 }
2523 /* Register variable[9]: Result */
2524 /* Ensure var variable[9]: super-string element*/
2525 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
2526 /* Register variable[9]: Result */
2527 variable[9] = CALL_mmbuilder___PClassdef___name(variable[0])(variable[0]) /*AClassdef::name*/;
2528 /* Ensure var variable[9]: super-string element*/
2529 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
2530 /* Register variable[9]: Once String constant */
2531 if (once_value_111 != NIT_NULL) variable[9] = once_value_111;
2532 else {
2533 variable[9] = NEW_String_string___String___with_native(BOX_NativeString(" try to specialise class "), TAG_Int(25)) /*new String*/;
2534 once_value_111 = variable[9];
2535 }
2536 /* Register variable[9]: Result */
2537 /* Ensure var variable[9]: super-string element*/
2538 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
2539 /* Register variable[9]: Result */
2540 variable[9] = CALL_abstractmetamodel___MMLocalClass___name( variable[6] /*c*/)( variable[6] /*c*/) /*MMLocalClass::name*/;
2541 /* Ensure var variable[9]: super-string element*/
2542 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
2543 /* Register variable[9]: Once String constant */
2544 if (once_value_112 != NIT_NULL) variable[9] = once_value_112;
2545 else {
2546 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
2547 once_value_112 = variable[9];
2548 }
2549 /* Register variable[9]: Result */
2550 /* Ensure var variable[9]: super-string element*/
2551 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
2552 /* Register variable[8]: Result */
2553 variable[8] = CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/;
2554 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[8]) /*AbsSyntaxVisitor::error*/;
2555 }
2556 } else { /*if*/
2557 /* Register variable[8]: Result */
2558 variable[8] = CALL_abstractmetamodel___MMGlobalClass___is_universal( variable[7] /*cg*/)( variable[7] /*cg*/) /*MMGlobalClass::is_universal*/;
2559 if (UNTAG_Bool(variable[8])) { /*if*/
2560 variable[8] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
2561 /* Register variable[9]: Once String constant */
2562 if (once_value_113 != NIT_NULL) variable[9] = once_value_113;
2563 else {
2564 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("Special error: Class "), TAG_Int(21)) /*new String*/;
2565 once_value_113 = variable[9];
2566 }
2567 /* Register variable[9]: Result */
2568 /* Ensure var variable[9]: super-string element*/
2569 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
2570 /* Register variable[9]: Result */
2571 variable[9] = CALL_mmbuilder___PClassdef___name(variable[0])(variable[0]) /*AClassdef::name*/;
2572 /* Ensure var variable[9]: super-string element*/
2573 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
2574 /* Register variable[9]: Once String constant */
2575 if (once_value_114 != NIT_NULL) variable[9] = once_value_114;
2576 else {
2577 variable[9] = NEW_String_string___String___with_native(BOX_NativeString(" try to specialise universal class "), TAG_Int(35)) /*new String*/;
2578 once_value_114 = variable[9];
2579 }
2580 /* Register variable[9]: Result */
2581 /* Ensure var variable[9]: super-string element*/
2582 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
2583 /* Register variable[9]: Result */
2584 variable[9] = CALL_abstractmetamodel___MMLocalClass___name( variable[6] /*c*/)( variable[6] /*c*/) /*MMLocalClass::name*/;
2585 /* Ensure var variable[9]: super-string element*/
2586 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
2587 /* Register variable[9]: Once String constant */
2588 if (once_value_115 != NIT_NULL) variable[9] = once_value_115;
2589 else {
2590 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
2591 once_value_115 = variable[9];
2592 }
2593 /* Register variable[9]: Result */
2594 /* Ensure var variable[9]: super-string element*/
2595 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
2596 /* Register variable[8]: Result */
2597 variable[8] = CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/;
2598 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[8]) /*AbsSyntaxVisitor::error*/;
2599 }
2600 }
2601 }
2602 continue_103: while(0);
2603 CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*ArrayIterator::next*/;
2604 }
2605 break_103: while(0);
2606 goto return_label100;
2607 }
2608 /* Register variable[4]: Result */
2609 variable[4] = CALL_syntax_base___AbsSyntaxVisitor___module( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::module*/;
2610 CALL_syntax_base___MMGlobalClass___check_visibility( variable[3] /*glob*/)( variable[3] /*glob*/, variable[1] /*v*/, variable[0], variable[4]) /*MMGlobalClass::check_visibility*/;
2611 /* Register variable[4]: Result */
2612 variable[4] = CALL_parser_nodes___AClassdef___n_kwredef(variable[0])(variable[0]) /*AClassdef::n_kwredef*/;
2613 /* Register variable[4]: Result */
2614 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::==*/)))));
2615 if (UNTAG_Bool(variable[4])) { /*if*/
2616 variable[4] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
2617 /* Register variable[5]: Once String constant */
2618 if (once_value_116 != NIT_NULL) variable[5] = once_value_116;
2619 else {
2620 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: "), TAG_Int(13)) /*new String*/;
2621 once_value_116 = variable[5];
2622 }
2623 /* Register variable[5]: Result */
2624 /* Ensure var variable[5]: super-string element*/
2625 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
2626 /* Register variable[5]: Result */
2627 variable[5] = CALL_mmbuilder___PClassdef___name(variable[0])(variable[0]) /*AClassdef::name*/;
2628 /* Ensure var variable[5]: super-string element*/
2629 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/) /*AbstractArray::add*/;
2630 /* Register variable[5]: Once String constant */
2631 if (once_value_117 != NIT_NULL) variable[5] = once_value_117;
2632 else {
2633 variable[5] = NEW_String_string___String___with_native(BOX_NativeString(" is an imported class. Add the redef keyword to refine it."), TAG_Int(58)) /*new String*/;
2634 once_value_117 = variable[5];
2635 }
2636 /* Register variable[5]: Result */
2637 /* Ensure var variable[5]: super-string element*/
2638 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
2639 /* Register variable[4]: Result */
2640 variable[4] = CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/;
2641 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[4]) /*AbsSyntaxVisitor::error*/;
2642 goto return_label100;
2643 }
2644 /* Register variable[4]: Result */
2645 variable[4] = CALL_abstractmetamodel___MMGlobalClass___intro( variable[3] /*glob*/)( variable[3] /*glob*/) /*MMGlobalClass::intro*/;
2646 /* Register variable[4]: Result */
2647 variable[4] = CALL_abstractmetamodel___MMLocalClass___arity(variable[4])(variable[4]) /*MMLocalClass::arity*/;
2648 /* Register variable[5]: Result */
2649 variable[5] = ATTR_mmbuilder___PClassdef____local_class(variable[0]) /*PClassdef::_local_class*/;
2650 /* Register variable[5]: Result */
2651 variable[5] = CALL_abstractmetamodel___MMLocalClass___arity(variable[5])(variable[5]) /*MMLocalClass::arity*/;
2652 /* Register variable[4]: Result */
2653 variable[4] = TAG_Bool((variable[4])!=(variable[5]));
2654 if (UNTAG_Bool(variable[4])) { /*if*/
2655 variable[4] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
2656 /* Register variable[5]: Once String constant */
2657 if (once_value_118 != NIT_NULL) variable[5] = once_value_118;
2658 else {
2659 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: Formal parameter arity missmatch; got "), TAG_Int(51)) /*new String*/;
2660 once_value_118 = variable[5];
2661 }
2662 /* Register variable[5]: Result */
2663 /* Ensure var variable[5]: super-string element*/
2664 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
2665 /* Register variable[5]: Result */
2666 variable[5] = ATTR_mmbuilder___PClassdef____local_class(variable[0]) /*PClassdef::_local_class*/;
2667 /* Register variable[5]: Result */
2668 variable[5] = CALL_abstractmetamodel___MMLocalClass___arity(variable[5])(variable[5]) /*MMLocalClass::arity*/;
2669 /* Ensure var variable[5]: super-string element*/
2670 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/) /*AbstractArray::add*/;
2671 /* Register variable[5]: Once String constant */
2672 if (once_value_119 != NIT_NULL) variable[5] = once_value_119;
2673 else {
2674 variable[5] = NEW_String_string___String___with_native(BOX_NativeString(", expected "), TAG_Int(11)) /*new String*/;
2675 once_value_119 = variable[5];
2676 }
2677 /* Register variable[5]: Result */
2678 /* Ensure var variable[5]: super-string element*/
2679 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
2680 /* Register variable[5]: Result */
2681 variable[5] = CALL_abstractmetamodel___MMGlobalClass___intro( variable[3] /*glob*/)( variable[3] /*glob*/) /*MMGlobalClass::intro*/;
2682 /* Register variable[5]: Result */
2683 variable[5] = CALL_abstractmetamodel___MMLocalClass___arity(variable[5])(variable[5]) /*MMLocalClass::arity*/;
2684 /* Ensure var variable[5]: super-string element*/
2685 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/) /*AbstractArray::add*/;
2686 /* Register variable[5]: Once String constant */
2687 if (once_value_120 != NIT_NULL) variable[5] = once_value_120;
2688 else {
2689 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
2690 once_value_120 = variable[5];
2691 }
2692 /* Register variable[5]: Result */
2693 /* Ensure var variable[5]: super-string element*/
2694 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
2695 /* Register variable[4]: Result */
2696 variable[4] = CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/;
2697 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[4]) /*AbsSyntaxVisitor::error*/;
2698 }
2699 /* Register variable[4]: Result */
2700 variable[4] = CALL_abstractmetamodel___MMGlobalClass___is_interface( variable[3] /*glob*/)( variable[3] /*glob*/) /*MMGlobalClass::is_interface*/;
2701 variable[4] = TAG_Bool(!UNTAG_Bool(variable[4])) /* Ensure var: Left 'and' operand*/;
2702 if (UNTAG_Bool(variable[4])) { /* and */
2703 /* Register variable[4]: Result */
2704 variable[4] = CALL_parser_nodes___AClassdef___n_classkind(variable[0])(variable[0]) /*AClassdef::n_classkind*/;
2705 /* Register variable[4]: Result */
2706 variable[4] = CALL_mmbuilder___PClasskind___is_interface(variable[4])(variable[4]) /*PClasskind::is_interface*/;
2707 }
2708 /* Register variable[4]: Result */
2709 /* Ensure var variable[4]: Left 'or' operand*/
2710 if (!UNTAG_Bool(variable[4])) { /* or */
2711 /* Register variable[4]: Result */
2712 variable[4] = CALL_abstractmetamodel___MMGlobalClass___is_abstract( variable[3] /*glob*/)( variable[3] /*glob*/) /*MMGlobalClass::is_abstract*/;
2713 variable[4] = TAG_Bool(!UNTAG_Bool(variable[4]));
2714 }
2715 /* Register variable[4]: Result */
2716 /* Ensure var variable[4]: Left 'and' operand*/
2717 if (UNTAG_Bool(variable[4])) { /* and */
2718 /* Register variable[4]: Result */
2719 variable[4] = CALL_parser_nodes___AClassdef___n_classkind(variable[0])(variable[0]) /*AClassdef::n_classkind*/;
2720 /* Register variable[4]: Result */
2721 variable[4] = CALL_mmbuilder___PClasskind___is_abstract(variable[4])(variable[4]) /*PClasskind::is_abstract*/;
2722 }
2723 /* Register variable[4]: Result */
2724 /* Ensure var variable[4]: Left 'or' operand*/
2725 if (!UNTAG_Bool(variable[4])) { /* or */
2726 /* Register variable[4]: Result */
2727 variable[4] = CALL_abstractmetamodel___MMGlobalClass___is_universal( variable[3] /*glob*/)( variable[3] /*glob*/) /*MMGlobalClass::is_universal*/;
2728 variable[4] = TAG_Bool(!UNTAG_Bool(variable[4]));
2729 }
2730 /* Register variable[4]: Result */
2731 /* Ensure var variable[4]: Left 'and' operand*/
2732 if (UNTAG_Bool(variable[4])) { /* and */
2733 /* Register variable[4]: Result */
2734 variable[4] = CALL_parser_nodes___AClassdef___n_classkind(variable[0])(variable[0]) /*AClassdef::n_classkind*/;
2735 /* Register variable[4]: Result */
2736 variable[4] = CALL_mmbuilder___PClasskind___is_universal(variable[4])(variable[4]) /*PClasskind::is_universal*/;
2737 }
2738 /* Register variable[4]: Result */
2739 if (UNTAG_Bool(variable[4])) { /*if*/
2740 variable[4] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
2741 /* Register variable[5]: Once String constant */
2742 if (once_value_121 != NIT_NULL) variable[5] = once_value_121;
2743 else {
2744 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: cannot change kind of class "), TAG_Int(41)) /*new String*/;
2745 once_value_121 = variable[5];
2746 }
2747 /* Register variable[5]: Result */
2748 /* Ensure var variable[5]: super-string element*/
2749 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
2750 /* Register variable[5]: Result */
2751 variable[5] = CALL_mmbuilder___PClassdef___name(variable[0])(variable[0]) /*AClassdef::name*/;
2752 /* Ensure var variable[5]: super-string element*/
2753 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/) /*AbstractArray::add*/;
2754 /* Register variable[5]: Once String constant */
2755 if (once_value_122 != NIT_NULL) variable[5] = once_value_122;
2756 else {
2757 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
2758 once_value_122 = variable[5];
2759 }
2760 /* Register variable[5]: Result */
2761 /* Ensure var variable[5]: super-string element*/
2762 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
2763 /* Register variable[4]: Result */
2764 variable[4] = CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/;
2765 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[4]) /*AbsSyntaxVisitor::error*/;
2766 }
2767 return_label100: while(false);
2768 tracehead = trace.prev;
2769 return;
2770 }
2771 val_t mmbuilder___AClassdef___name(val_t self) {
2772 struct trace_t trace = {NULL, NULL, 572, LOCATE_mmbuilder___AClassdef___name};
2773 val_t variable[3];
2774 struct WBT_ **closurevariable = NULL;
2775 trace.prev = tracehead; tracehead = &trace;
2776 trace.file = LOCATE_mmbuilder;
2777 /* Register variable[0]: Local variable */
2778 variable[0] = self;
2779 /* Register variable[1]: Method return value and escape marker */
2780 /* Register variable[2]: Result */
2781 variable[2] = CALL_parser_nodes___AClassdef___n_id(variable[0])(variable[0]) /*AClassdef::n_id*/;
2782 /* Register variable[2]: Result */
2783 variable[2] = CALL_syntax_base___Token___to_symbol(variable[2])(variable[2]) /*Token::to_symbol*/;
2784 variable[1] = variable[2];
2785 goto return_label123;
2786 return_label123: while(false);
2787 tracehead = trace.prev;
2788 return variable[1];
2789 }
2790 val_t mmbuilder___AClassdef___arity(val_t self) {
2791 struct trace_t trace = {NULL, NULL, 576, LOCATE_mmbuilder___AClassdef___arity};
2792 val_t variable[3];
2793 struct WBT_ **closurevariable = NULL;
2794 trace.prev = tracehead; tracehead = &trace;
2795 trace.file = LOCATE_mmbuilder;
2796 /* Register variable[0]: Local variable */
2797 variable[0] = self;
2798 /* Register variable[1]: Method return value and escape marker */
2799 /* Register variable[2]: Result */
2800 variable[2] = CALL_parser_nodes___AClassdef___n_formaldefs(variable[0])(variable[0]) /*AClassdef::n_formaldefs*/;
2801 /* Register variable[2]: Result */
2802 variable[2] = CALL_abstract_collection___Collection___length(variable[2])(variable[2]) /*List::length*/;
2803 variable[1] = variable[2];
2804 goto return_label124;
2805 return_label124: while(false);
2806 tracehead = trace.prev;
2807 return variable[1];
2808 }
2809 val_t mmbuilder___AClassdef___visibility_level(val_t self) {
2810 struct trace_t trace = {NULL, NULL, 637, LOCATE_mmbuilder___AClassdef___visibility_level};
2811 val_t variable[3];
2812 struct WBT_ **closurevariable = NULL;
2813 trace.prev = tracehead; tracehead = &trace;
2814 trace.file = LOCATE_mmbuilder;
2815 /* Register variable[0]: Local variable */
2816 variable[0] = self;
2817 /* Register variable[1]: Method return value and escape marker */
2818 /* Register variable[2]: Result */
2819 variable[2] = CALL_parser_nodes___AClassdef___n_visibility(variable[0])(variable[0]) /*AClassdef::n_visibility*/;
2820 /* Register variable[2]: Result */
2821 variable[2] = CALL_mmbuilder___PVisibility___level(variable[2])(variable[2]) /*PVisibility::level*/;
2822 variable[1] = variable[2];
2823 goto return_label125;
2824 return_label125: while(false);
2825 tracehead = trace.prev;
2826 return variable[1];
2827 }
2828 val_t mmbuilder___AMainClassdef___name(val_t self) {
2829 struct trace_t trace = {NULL, NULL, 644, LOCATE_mmbuilder___AMainClassdef___name};
2830 static val_t once_value_127; static int once_bool_127; /* Once value for variable[2]*/
2831 static val_t once_value_128 = NIT_NULL; /* Once value for string variable[2]*/
2832 val_t variable[3];
2833 struct WBT_ **closurevariable = NULL;
2834 trace.prev = tracehead; tracehead = &trace;
2835 trace.file = LOCATE_mmbuilder;
2836 /* Register variable[0]: Local variable */
2837 variable[0] = self;
2838 /* Register variable[1]: Method return value and escape marker */
2839 /* Register variable[2]: Once expression result */
2840 if (once_bool_127) variable[2] = once_value_127;
2841 else {
2842 /* Register variable[2]: Once String constant */
2843 if (once_value_128 != NIT_NULL) variable[2] = once_value_128;
2844 else {
2845 variable[2] = NEW_String_string___String___with_native(BOX_NativeString("Sys"), TAG_Int(3)) /*new String*/;
2846 once_value_128 = variable[2];
2847 }
2848 /* Register variable[2]: Result */
2849 /* Register variable[2]: Result */
2850 variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/;
2851 once_value_127 = variable[2];
2852 once_bool_127 = true;
2853 }
2854 /* Register variable[2]: Result */
2855 variable[1] = variable[2];
2856 goto return_label126;
2857 return_label126: while(false);
2858 tracehead = trace.prev;
2859 return variable[1];
2860 }
2861 val_t mmbuilder___ATopClassdef___name(val_t self) {
2862 struct trace_t trace = {NULL, NULL, 651, LOCATE_mmbuilder___ATopClassdef___name};
2863 static val_t once_value_130; static int once_bool_130; /* Once value for variable[2]*/
2864 static val_t once_value_131 = NIT_NULL; /* Once value for string variable[2]*/
2865 val_t variable[3];
2866 struct WBT_ **closurevariable = NULL;
2867 trace.prev = tracehead; tracehead = &trace;
2868 trace.file = LOCATE_mmbuilder;
2869 /* Register variable[0]: Local variable */
2870 variable[0] = self;
2871 /* Register variable[1]: Method return value and escape marker */
2872 /* Register variable[2]: Once expression result */
2873 if (once_bool_130) variable[2] = once_value_130;
2874 else {
2875 /* Register variable[2]: Once String constant */
2876 if (once_value_131 != NIT_NULL) variable[2] = once_value_131;
2877 else {
2878 variable[2] = NEW_String_string___String___with_native(BOX_NativeString("Object"), TAG_Int(6)) /*new String*/;
2879 once_value_131 = variable[2];
2880 }
2881 /* Register variable[2]: Result */
2882 /* Register variable[2]: Result */
2883 variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/;
2884 once_value_130 = variable[2];
2885 once_bool_130 = true;
2886 }
2887 /* Register variable[2]: Result */
2888 variable[1] = variable[2];
2889 goto return_label129;
2890 return_label129: while(false);
2891 tracehead = trace.prev;
2892 return variable[1];
2893 }
2894 val_t mmbuilder___MMSrcTypeFormalParameter___node(val_t self) {
2895 struct trace_t trace = {NULL, NULL, 659, LOCATE_mmbuilder___MMSrcTypeFormalParameter___node};
2896 val_t *variable = NULL;
2897 struct WBT_ **closurevariable = NULL;
2898 trace.prev = tracehead; tracehead = &trace;
2899 trace.file = LOCATE_mmbuilder;
2900 tracehead = trace.prev;
2901 return ATTR_mmbuilder___MMSrcTypeFormalParameter____node( self) /*MMSrcTypeFormalParameter::_node*/;
2902 }
2903 void mmbuilder___MMSrcTypeFormalParameter___init(val_t self, val_t param0, val_t param1, val_t param2, val_t param3, int* init_table) {
2904 struct trace_t trace = {NULL, NULL, 662, LOCATE_mmbuilder___MMSrcTypeFormalParameter___init};
2905 val_t variable[6];
2906 struct WBT_ **closurevariable = NULL;
2907 trace.prev = tracehead; tracehead = &trace;
2908 trace.file = LOCATE_mmbuilder;
2909 /* Register variable[0]: Local variable */
2910 variable[0] = self;
2911 /* Register variable[1]: Local variable */
2912 variable[1] = param0;
2913 /* Register variable[2]: Local variable */
2914 variable[2] = param1;
2915 /* Register variable[3]: Local variable */
2916 variable[3] = param2;
2917 /* Register variable[4]: Local variable */
2918 variable[4] = param3;
2919 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMSrcTypeFormalParameter].i]) return;
2920 /* Register variable[5]: Method return value and escape marker */
2921 CALL_genericity___MMTypeFormalParameter___init(variable[0])(variable[0], variable[1] /*name*/, variable[2] /*pos*/, variable[3] /*local_class*/, init_table /*YYY*/) /*MMTypeFormalParameter::init*/;
2922 ATTR_mmbuilder___MMSrcTypeFormalParameter____node(variable[0]) /*MMSrcTypeFormalParameter::_node*/ = variable[4] /*n*/;
2923 return_label132: while(false);
2924 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMSrcTypeFormalParameter].i] = 1;
2925 tracehead = trace.prev;
2926 return;
2927 }
2928 void mmbuilder___AFormaldef___accept_class_builder(val_t self, val_t param0) {
2929 struct trace_t trace = {NULL, NULL, 673, LOCATE_mmbuilder___AFormaldef___accept_class_builder};
2930 val_t variable[7];
2931 struct WBT_ **closurevariable = NULL;
2932 trace.prev = tracehead; tracehead = &trace;
2933 trace.file = LOCATE_mmbuilder;
2934 /* Register variable[0]: Local variable */
2935 variable[0] = self;
2936 /* Register variable[1]: Local variable */
2937 variable[1] = param0;
2938 /* Register variable[2]: Method return value and escape marker */
2939 /* Register variable[3]: Local variable */
2940 /* Register variable[4]: Result */
2941 variable[4] = CALL_parser_nodes___AFormaldef___n_id(variable[0])(variable[0]) /*AFormaldef::n_id*/;
2942 /* Register variable[4]: Result */
2943 variable[4] = CALL_syntax_base___Token___to_symbol(variable[4])(variable[4]) /*Token::to_symbol*/;
2944 variable[3] = variable[4];
2945 /* Register variable[4]: Local variable */
2946 /* Register variable[5]: Result */
2947 variable[5] = CALL_mmbuilder___ClassBuilderVisitor___local_class_arity( variable[1] /*v*/)( variable[1] /*v*/) /*ClassBuilderVisitor::local_class_arity*/;
2948 /* Register variable[6]: Result */
2949 variable[6] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
2950 /* Register variable[5]: Result */
2951 variable[5] = NEW_MMSrcTypeFormalParameter_mmbuilder___MMSrcTypeFormalParameter___init( variable[3] /*name*/, variable[5], variable[6], variable[0]) /*new MMSrcTypeFormalParameter*/;
2952 variable[4] = variable[5];
2953 ATTR_mmbuilder___AFormaldef____formal(variable[0]) /*AFormaldef::_formal*/ = variable[4] /*formal_type*/;
2954 /* Register variable[5]: Result */
2955 variable[5] = CALL_mmbuilder___ClassBuilderVisitor___local_class_arity( variable[1] /*v*/)( variable[1] /*v*/) /*ClassBuilderVisitor::local_class_arity*/;
2956 /* Register variable[5]: Result */
2957 variable[5] = TAG_Int(UNTAG_Int(variable[5])+UNTAG_Int( TAG_Int(1)));
2958 CALL_mmbuilder___ClassBuilderVisitor___local_class_arity__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[5]) /*ClassBuilderVisitor::local_class_arity=*/;
2959 /* Register variable[5]: Result */
2960 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
2961 CALL_genericity___MMLocalClass___register_formal(variable[5])(variable[5], variable[4] /*formal_type*/) /*MMLocalClass::register_formal*/;
2962 /* Register variable[5]: Result */
2963 variable[5] = CALL_mmbuilder___ClassBuilderVisitor___formals( variable[1] /*v*/)( variable[1] /*v*/) /*ClassBuilderVisitor::formals*/;
2964 CALL_abstract_collection___Map_____braeq(variable[5])(variable[5], variable[3] /*name*/, variable[4] /*formal_type*/) /*Map::[]=*/;
2965 CALL_SUPER_mmbuilder___AFormaldef___accept_class_builder(variable[0])(variable[0], variable[1]) /*super AFormaldef::accept_class_builder*/;
2966 return_label133: while(false);
2967 tracehead = trace.prev;
2968 return;
2969 }
2970 void mmbuilder___AFormaldef___accept_class_verifier(val_t self, val_t param0) {
2971 struct trace_t trace = {NULL, NULL, 684, LOCATE_mmbuilder___AFormaldef___accept_class_verifier};
2972 static val_t once_value_135 = NIT_NULL; /* Once value for string variable[7]*/
2973 static val_t once_value_136 = NIT_NULL; /* Once value for string variable[7]*/
2974 static val_t once_value_137 = NIT_NULL; /* Once value for string variable[7]*/
2975 static val_t once_value_138 = NIT_NULL; /* Once value for string variable[7]*/
2976 val_t variable[8];
2977 struct WBT_ **closurevariable = NULL;
2978 trace.prev = tracehead; tracehead = &trace;
2979 trace.file = LOCATE_mmbuilder;
2980 /* Register variable[0]: Local variable */
2981 variable[0] = self;
2982 /* Register variable[1]: Local variable */
2983 variable[1] = param0;
2984 /* Register variable[2]: Method return value and escape marker */
2985 CALL_SUPER_mmbuilder___AFormaldef___accept_class_verifier(variable[0])(variable[0], variable[1]) /*super AFormaldef::accept_class_verifier*/;
2986 /* Register variable[3]: Local variable */
2987 /* Register variable[4]: Result */
2988 variable[4] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
2989 variable[3] = variable[4];
2990 /* Register variable[4]: Local variable */
2991 /* Register variable[5]: Result */
2992 variable[5] = CALL_abstractmetamodel___MMLocalClass___global( variable[3] /*c*/)( variable[3] /*c*/) /*MMLocalClass::global*/;
2993 /* Register variable[5]: Result */
2994 variable[5] = CALL_abstractmetamodel___MMGlobalClass___intro(variable[5])(variable[5]) /*MMGlobalClass::intro*/;
2995 variable[4] = variable[5];
2996 /* Register variable[5]: Result */
2997 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::==*/)))));
2998 if (UNTAG_Bool(variable[5])) { /*if*/
2999 /* Register variable[5]: Result */
3000 variable[5] = CALL_parser_nodes___AFormaldef___n_type(variable[0])(variable[0]) /*AFormaldef::n_type*/;
3001 /* Register variable[5]: Result */
3002 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::==*/)))));
3003 if (UNTAG_Bool(variable[5])) { /*if*/
3004 /* Register variable[5]: Result */
3005 variable[5] = ATTR_mmbuilder___AFormaldef____formal(variable[0]) /*AFormaldef::_formal*/;
3006 /* Register variable[6]: Result */
3007 variable[6] = CALL_syntax_base___AbsSyntaxVisitor___module( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::module*/;
3008 /* Register variable[6]: Result */
3009 variable[6] = CALL_inheritance___MMModule___type_any(variable[6])(variable[6]) /*MMModule::type_any*/;
3010 /* Register variable[6]: Result */
3011 variable[6] = CALL_static_type___MMType___as_nullable(variable[6])(variable[6]) /*MMType::as_nullable*/;
3012 CALL_genericity___MMTypeFormalParameter___bound__eq(variable[5])(variable[5], variable[6]) /*MMTypeFormalParameter::bound=*/;
3013 } else { /*if*/
3014 /* Register variable[5]: Result */
3015 variable[5] = ATTR_mmbuilder___AFormaldef____formal(variable[0]) /*AFormaldef::_formal*/;
3016 /* Register variable[6]: Result */
3017 variable[6] = CALL_parser_nodes___AFormaldef___n_type(variable[0])(variable[0]) /*AFormaldef::n_type*/;
3018 /* Register variable[6]: Result */
3019 variable[6] = CALL_syntax_base___PType___get_stype(variable[6])(variable[6], variable[1] /*v*/) /*PType::get_stype*/;
3020 CALL_genericity___MMTypeFormalParameter___bound__eq(variable[5])(variable[5], variable[6]) /*MMTypeFormalParameter::bound=*/;
3021 }
3022 } else { /*if*/
3023 /* Register variable[5]: Local variable */
3024 /* Register variable[6]: Result */
3025 variable[6] = ATTR_mmbuilder___AFormaldef____formal(variable[0]) /*AFormaldef::_formal*/;
3026 /* Register variable[6]: Result */
3027 variable[6] = CALL_genericity___MMTypeFormalParameter___position(variable[6])(variable[6]) /*MMTypeFormalParameter::position*/;
3028 /* Register variable[6]: Result */
3029 variable[6] = CALL_genericity___MMLocalClass___get_formal( variable[4] /*o*/)( variable[4] /*o*/, variable[6]) /*MMLocalClass::get_formal*/;
3030 /* Register variable[6]: Result */
3031 variable[6] = CALL_type_formal___MMTypeFormal___bound(variable[6])(variable[6]) /*MMTypeFormal::bound*/;
3032 /* Register variable[7]: Result */
3033 variable[7] = CALL_syntax_base___AbsSyntaxVisitor___module( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::module*/;
3034 /* Register variable[6]: Result */
3035 variable[6] = CALL_static_type___MMType___for_module(variable[6])(variable[6], variable[7]) /*MMType::for_module*/;
3036 variable[5] = variable[6];
3037 /* Register variable[6]: Result */
3038 variable[6] = CALL_parser_nodes___AFormaldef___n_type(variable[0])(variable[0]) /*AFormaldef::n_type*/;
3039 /* Register variable[6]: Result */
3040 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::==*/)))));
3041 if (UNTAG_Bool(variable[6])) { /*if*/
3042 /* Register variable[6]: Result */
3043 variable[6] = ATTR_mmbuilder___AFormaldef____formal(variable[0]) /*AFormaldef::_formal*/;
3044 CALL_genericity___MMTypeFormalParameter___bound__eq(variable[6])(variable[6], variable[5] /*ob*/) /*MMTypeFormalParameter::bound=*/;
3045 } else { /*if*/
3046 /* Register variable[6]: Result */
3047 variable[6] = ATTR_mmbuilder___AFormaldef____formal(variable[0]) /*AFormaldef::_formal*/;
3048 /* Register variable[7]: Result */
3049 variable[7] = CALL_parser_nodes___AFormaldef___n_type(variable[0])(variable[0]) /*AFormaldef::n_type*/;
3050 /* Register variable[7]: Result */
3051 variable[7] = CALL_syntax_base___PType___get_stype(variable[7])(variable[7], variable[1] /*v*/) /*PType::get_stype*/;
3052 CALL_genericity___MMTypeFormalParameter___bound__eq(variable[6])(variable[6], variable[7]) /*MMTypeFormalParameter::bound=*/;
3053 /* Register variable[6]: Result */
3054 variable[6] = ATTR_mmbuilder___AFormaldef____formal(variable[0]) /*AFormaldef::_formal*/;
3055 /* Register variable[6]: Result */
3056 variable[6] = CALL_type_formal___MMTypeFormal___bound(variable[6])(variable[6]) /*MMTypeFormal::bound*/;
3057 /* Register variable[6]: Result */
3058 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::==*/)))))));
3059 if (UNTAG_Bool(variable[6])) { /*if*/
3060 variable[6] = NEW_Array_array___Array___with_capacity(TAG_Int(7)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
3061 /* Register variable[7]: Once String constant */
3062 if (once_value_135 != NIT_NULL) variable[7] = once_value_135;
3063 else {
3064 variable[7] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: Cannot change formal parameter type of class "), TAG_Int(58)) /*new String*/;
3065 once_value_135 = variable[7];
3066 }
3067 /* Register variable[7]: Result */
3068 /* Ensure var variable[7]: super-string element*/
3069 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
3070 variable[7] = variable[3] /*c*/ /* Ensure var: super-string element*/;
3071 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/) /*AbstractArray::add*/;
3072 /* Register variable[7]: Once String constant */
3073 if (once_value_136 != NIT_NULL) variable[7] = once_value_136;
3074 else {
3075 variable[7] = NEW_String_string___String___with_native(BOX_NativeString("; got "), TAG_Int(6)) /*new String*/;
3076 once_value_136 = variable[7];
3077 }
3078 /* Register variable[7]: Result */
3079 /* Ensure var variable[7]: super-string element*/
3080 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
3081 /* Register variable[7]: Result */
3082 variable[7] = ATTR_mmbuilder___AFormaldef____formal(variable[0]) /*AFormaldef::_formal*/;
3083 /* Register variable[7]: Result */
3084 variable[7] = CALL_type_formal___MMTypeFormal___bound(variable[7])(variable[7]) /*MMTypeFormal::bound*/;
3085 /* Ensure var variable[7]: super-string element*/
3086 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/) /*AbstractArray::add*/;
3087 /* Register variable[7]: Once String constant */
3088 if (once_value_137 != NIT_NULL) variable[7] = once_value_137;
3089 else {
3090 variable[7] = NEW_String_string___String___with_native(BOX_NativeString(", expected "), TAG_Int(11)) /*new String*/;
3091 once_value_137 = variable[7];
3092 }
3093 /* Register variable[7]: Result */
3094 /* Ensure var variable[7]: super-string element*/
3095 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
3096 variable[7] = variable[5] /*ob*/ /* Ensure var: super-string element*/;
3097 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/) /*AbstractArray::add*/;
3098 /* Register variable[7]: Once String constant */
3099 if (once_value_138 != NIT_NULL) variable[7] = once_value_138;
3100 else {
3101 variable[7] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
3102 once_value_138 = variable[7];
3103 }
3104 /* Register variable[7]: Result */
3105 /* Ensure var variable[7]: super-string element*/
3106 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
3107 /* Register variable[6]: Result */
3108 variable[6] = CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/;
3109 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[6]) /*AbsSyntaxVisitor::error*/;
3110 }
3111 }
3112 }
3113 return_label134: while(false);
3114 tracehead = trace.prev;
3115 return;
3116 }
3117 void mmbuilder___ASuperclass___accept_class_specialization_builder(val_t self, val_t param0) {
3118 struct trace_t trace = {NULL, NULL, 712, LOCATE_mmbuilder___ASuperclass___accept_class_specialization_builder};
3119 val_t variable[6];
3120 struct WBT_ **closurevariable = NULL;
3121 trace.prev = tracehead; tracehead = &trace;
3122 trace.file = LOCATE_mmbuilder;
3123 /* Register variable[0]: Local variable */
3124 variable[0] = self;
3125 /* Register variable[1]: Local variable */
3126 variable[1] = param0;
3127 /* Register variable[2]: Method return value and escape marker */
3128 CALL_SUPER_mmbuilder___ASuperclass___accept_class_specialization_builder(variable[0])(variable[0], variable[1]) /*super ASuperclass::accept_class_specialization_builder*/;
3129 /* Register variable[3]: Local variable */
3130 /* Register variable[4]: Result */
3131 variable[4] = CALL_parser_nodes___ASuperclass___n_type(variable[0])(variable[0]) /*ASuperclass::n_type*/;
3132 /* Register variable[4]: Result */
3133 variable[4] = CALL_syntax_base___PType___get_local_class(variable[4])(variable[4], variable[1] /*v*/) /*PType::get_local_class*/;
3134 variable[3] = variable[4];
3135 /* Register variable[4]: Local variable */
3136 /* Register variable[5]: Result */
3137 variable[5] = NEW_MMSrcAncestor_mmbuilder___MMSrcAncestor___init(variable[0], variable[3] /*c*/) /*new MMSrcAncestor*/;
3138 variable[4] = variable[5];
3139 ATTR_mmbuilder___ASuperclass____ancestor(variable[0]) /*ASuperclass::_ancestor*/ = variable[4] /*ancestor*/;
3140 /* Register variable[5]: Result */
3141 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
3142 CALL_inheritance___MMLocalClass___add_direct_parent(variable[5])(variable[5], variable[4] /*ancestor*/) /*MMLocalClass::add_direct_parent*/;
3143 return_label139: while(false);
3144 tracehead = trace.prev;
3145 return;
3146 }
3147 void mmbuilder___ASuperclass___accept_class_ancestor_builder(val_t self, val_t param0) {
3148 struct trace_t trace = {NULL, NULL, 721, LOCATE_mmbuilder___ASuperclass___accept_class_ancestor_builder};
3149 val_t variable[5];
3150 struct WBT_ **closurevariable = NULL;
3151 trace.prev = tracehead; tracehead = &trace;
3152 trace.file = LOCATE_mmbuilder;
3153 /* Register variable[0]: Local variable */
3154 variable[0] = self;
3155 /* Register variable[1]: Local variable */
3156 variable[1] = param0;
3157 /* Register variable[2]: Method return value and escape marker */
3158 CALL_SUPER_mmbuilder___ASuperclass___accept_class_ancestor_builder(variable[0])(variable[0], variable[1]) /*super ASuperclass::accept_class_ancestor_builder*/;
3159 /* Register variable[3]: Result */
3160 variable[3] = ATTR_mmbuilder___ASuperclass____ancestor(variable[0]) /*ASuperclass::_ancestor*/;
3161 /* Register variable[4]: Result */
3162 variable[4] = CALL_parser_nodes___ASuperclass___n_type(variable[0])(variable[0]) /*ASuperclass::n_type*/;
3163 /* Register variable[4]: Result */
3164 variable[4] = CALL_syntax_base___PType___get_unchecked_stype(variable[4])(variable[4], variable[1] /*v*/) /*PType::get_unchecked_stype*/;
3165 CALL_static_type___MMAncestor___stype__eq(variable[3])(variable[3], variable[4]) /*MMAncestor::stype=*/;
3166 /* Register variable[3]: Result */
3167 variable[3] = ATTR_mmbuilder___ASuperclass____ancestor(variable[0]) /*ASuperclass::_ancestor*/;
3168 /* Register variable[4]: Result */
3169 variable[4] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
3170 /* Register variable[4]: Result */
3171 variable[4] = CALL_static_type___MMLocalClass___get_type(variable[4])(variable[4]) /*MMLocalClass::get_type*/;
3172 CALL_static_type___MMAncestor___inheriter__eq(variable[3])(variable[3], variable[4]) /*MMAncestor::inheriter=*/;
3173 return_label140: while(false);
3174 tracehead = trace.prev;
3175 return;
3176 }
3177 void mmbuilder___ASuperclass___accept_class_verifier(val_t self, val_t param0) {
3178 struct trace_t trace = {NULL, NULL, 728, LOCATE_mmbuilder___ASuperclass___accept_class_verifier};
3179 val_t variable[4];
3180 struct WBT_ **closurevariable = NULL;
3181 trace.prev = tracehead; tracehead = &trace;
3182 trace.file = LOCATE_mmbuilder;
3183 /* Register variable[0]: Local variable */
3184 variable[0] = self;
3185 /* Register variable[1]: Local variable */
3186 variable[1] = param0;
3187 /* Register variable[2]: Method return value and escape marker */
3188 CALL_SUPER_mmbuilder___ASuperclass___accept_class_verifier(variable[0])(variable[0], variable[1]) /*super ASuperclass::accept_class_verifier*/;
3189 /* Register variable[3]: Result */
3190 variable[3] = CALL_parser_nodes___ASuperclass___n_type(variable[0])(variable[0]) /*ASuperclass::n_type*/;
3191 CALL_syntax_base___PType___check_conform(variable[3])(variable[3], variable[1] /*v*/) /*PType::check_conform*/;
3192 return_label141: while(false);
3193 tracehead = trace.prev;
3194 return;
3195 }
3196 val_t mmbuilder___ASuperclass___ancestor(val_t self) {
3197 struct trace_t trace = {NULL, NULL, 710, LOCATE_mmbuilder___ASuperclass___ancestor};
3198 val_t *variable = NULL;
3199 struct WBT_ **closurevariable = NULL;
3200 trace.prev = tracehead; tracehead = &trace;
3201 trace.file = LOCATE_mmbuilder;
3202 tracehead = trace.prev;
3203 return ATTR_mmbuilder___ASuperclass____ancestor( self) /*ASuperclass::_ancestor*/;
3204 }
3205 void mmbuilder___PPropdef___process_and_check(val_t self, val_t param0, val_t param1, val_t param2, val_t param3) {
3206 struct trace_t trace = {NULL, NULL, 736, LOCATE_mmbuilder___PPropdef___process_and_check};
3207 val_t variable[7];
3208 struct WBT_ **closurevariable = NULL;
3209 trace.prev = tracehead; tracehead = &trace;
3210 trace.file = LOCATE_mmbuilder;
3211 /* Register variable[0]: Local variable */
3212 variable[0] = self;
3213 /* Register variable[1]: Local variable */
3214 variable[1] = param0;
3215 /* Register variable[2]: Local variable */
3216 variable[2] = param1;
3217 /* Register variable[3]: Local variable */
3218 variable[3] = param2;
3219 /* Register variable[4]: Local variable */
3220 variable[4] = param3;
3221 /* Register variable[5]: Method return value and escape marker */
3222 /* Register variable[6]: Result */
3223 variable[6] = CALL_abstractmetamodel___MMLocalProperty___global( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::global*/;
3224 /* Register variable[6]: Result */
3225 variable[6] = CALL_abstractmetamodel___MMGlobalProperty___intro(variable[6])(variable[6]) /*MMGlobalProperty::intro*/;
3226 /* Register variable[6]: Result */
3227 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::==*/)))));
3228 if (UNTAG_Bool(variable[6])) { /*if*/
3229 CALL_mmbuilder___PPropdef___do_and_check_intro(variable[0])(variable[0], variable[1] /*v*/, variable[2] /*prop*/, variable[3] /*has_redef*/, variable[4] /*visibility_level*/) /*PPropdef::do_and_check_intro*/;
3230 } else { /*if*/
3231 CALL_mmbuilder___PPropdef___do_and_check_redef(variable[0])(variable[0], variable[1] /*v*/, variable[2] /*prop*/, variable[3] /*has_redef*/, variable[4] /*visibility_level*/) /*PPropdef::do_and_check_redef*/;
3232 }
3233 return_label142: while(false);
3234 tracehead = trace.prev;
3235 return;
3236 }
3237 void mmbuilder___PPropdef___do_and_check_intro(val_t self, val_t param0, val_t param1, val_t param2, val_t param3) {
3238 struct trace_t trace = {NULL, NULL, 751, LOCATE_mmbuilder___PPropdef___do_and_check_intro};
3239 static val_t once_value_144 = NIT_NULL; /* Once value for string variable[9]*/
3240 static val_t once_value_145 = NIT_NULL; /* Once value for string variable[9]*/
3241 static val_t once_value_146 = NIT_NULL; /* Once value for string variable[9]*/
3242 static val_t once_value_147 = NIT_NULL; /* Once value for string variable[9]*/
3243 static val_t once_value_148 = NIT_NULL; /* Once value for string variable[9]*/
3244 static val_t once_value_149 = NIT_NULL; /* Once value for string variable[9]*/
3245 static val_t once_value_150 = NIT_NULL; /* Once value for string variable[9]*/
3246 static val_t once_value_151 = NIT_NULL; /* Once value for string variable[9]*/
3247 static val_t once_value_152 = NIT_NULL; /* Once value for string variable[9]*/
3248 static val_t once_value_153 = NIT_NULL; /* Once value for string variable[9]*/
3249 static val_t once_value_154 = NIT_NULL; /* Once value for string variable[9]*/
3250 static val_t once_value_155 = NIT_NULL; /* Once value for string variable[9]*/
3251 static val_t once_value_156 = NIT_NULL; /* Once value for string variable[9]*/
3252 static val_t once_value_157 = NIT_NULL; /* Once value for string variable[9]*/
3253 static val_t once_value_158 = NIT_NULL; /* Once value for string variable[9]*/
3254 static val_t once_value_159 = NIT_NULL; /* Once value for string variable[9]*/
3255 val_t variable[13];
3256 struct WBT_ **closurevariable = NULL;
3257 trace.prev = tracehead; tracehead = &trace;
3258 trace.file = LOCATE_mmbuilder;
3259 /* Register variable[0]: Local variable */
3260 variable[0] = self;
3261 /* Register variable[1]: Local variable */
3262 variable[1] = param0;
3263 /* Register variable[2]: Local variable */
3264 variable[2] = param1;
3265 /* Register variable[3]: Local variable */
3266 variable[3] = param2;
3267 /* Register variable[4]: Local variable */
3268 variable[4] = param3;
3269 /* Register variable[5]: Method return value and escape marker */
3270 /* Register variable[6]: Local variable */
3271 /* Register variable[7]: Result */
3272 variable[7] = CALL_abstractmetamodel___MMLocalProperty___global( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::global*/;
3273 variable[6] = variable[7];
3274 /* Register variable[7]: Local variable */
3275 /* Register variable[8]: Result */
3276 variable[8] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
3277 /* Register variable[8]: Result */
3278 variable[8] = CALL_abstractmetamodel___MMLocalClass___global(variable[8])(variable[8]) /*MMLocalClass::global*/;
3279 variable[7] = variable[8];
3280 /* Register variable[8]: Result */
3281 variable[8] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
3282 /* Register variable[8]: Result */
3283 variable[8] = CALL_abstractmetamodel___MMLocalClass___global(variable[8])(variable[8]) /*MMLocalClass::global*/;
3284 /* Register variable[8]: Result */
3285 variable[8] = CALL_abstractmetamodel___MMGlobalClass___visibility_level(variable[8])(variable[8]) /*MMGlobalClass::visibility_level*/;
3286 /* Register variable[8]: Result */
3287 variable[8] = TAG_Bool(UNTAG_Int(variable[8])>=UNTAG_Int( TAG_Int(3)));
3288 if (UNTAG_Bool(variable[8])) { /*if*/
3289 variable[4] = TAG_Int(3) /*visibility_level=*/;
3290 }
3291 CALL_abstractmetamodel___MMGlobalProperty___visibility_level__eq( variable[6] /*glob*/)( variable[6] /*glob*/, variable[4] /*visibility_level*/) /*MMGlobalProperty::visibility_level=*/;
3292 if (UNTAG_Bool( variable[3] /*has_redef*/)) { /*if*/
3293 variable[8] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
3294 /* Register variable[9]: Once String constant */
3295 if (once_value_144 != NIT_NULL) variable[9] = once_value_144;
3296 else {
3297 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("Error: No property "), TAG_Int(19)) /*new String*/;
3298 once_value_144 = variable[9];
3299 }
3300 /* Register variable[9]: Result */
3301 /* Ensure var variable[9]: super-string element*/
3302 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
3303 /* Register variable[9]: Result */
3304 variable[9] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
3305 /* Ensure var variable[9]: super-string element*/
3306 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
3307 /* Register variable[9]: Once String constant */
3308 if (once_value_145 != NIT_NULL) variable[9] = once_value_145;
3309 else {
3310 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
3311 once_value_145 = variable[9];
3312 }
3313 /* Register variable[9]: Result */
3314 /* Ensure var variable[9]: super-string element*/
3315 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
3316 variable[9] = variable[2] /*prop*/ /* Ensure var: super-string element*/;
3317 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
3318 /* Register variable[9]: Once String constant */
3319 if (once_value_146 != NIT_NULL) variable[9] = once_value_146;
3320 else {
3321 variable[9] = NEW_String_string___String___with_native(BOX_NativeString(" is inherited. Remove the redef keyword to define a new property."), TAG_Int(65)) /*new String*/;
3322 once_value_146 = variable[9];
3323 }
3324 /* Register variable[9]: Result */
3325 /* Ensure var variable[9]: super-string element*/
3326 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
3327 /* Register variable[8]: Result */
3328 variable[8] = CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/;
3329 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[8]) /*AbsSyntaxVisitor::error*/;
3330 }
3331 /* Register variable[8]: Result */
3332 variable[8] = CALL_abstractmetamodel___MMGlobalProperty___is_attribute( variable[6] /*glob*/)( variable[6] /*glob*/) /*MMGlobalProperty::is_attribute*/;
3333 if (UNTAG_Bool(variable[8])) { /*if*/
3334 /* Register variable[8]: Result */
3335 variable[8] = CALL_abstractmetamodel___MMGlobalClass___is_interface( variable[7] /*gbc*/)( variable[7] /*gbc*/) /*MMGlobalClass::is_interface*/;
3336 if (UNTAG_Bool(variable[8])) { /*if*/
3337 variable[8] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
3338 /* Register variable[9]: Once String constant */
3339 if (once_value_147 != NIT_NULL) variable[9] = once_value_147;
3340 else {
3341 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("Error: Attempt to define attribute "), TAG_Int(35)) /*new String*/;
3342 once_value_147 = variable[9];
3343 }
3344 /* Register variable[9]: Result */
3345 /* Ensure var variable[9]: super-string element*/
3346 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
3347 variable[9] = variable[2] /*prop*/ /* Ensure var: super-string element*/;
3348 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
3349 /* Register variable[9]: Once String constant */
3350 if (once_value_148 != NIT_NULL) variable[9] = once_value_148;
3351 else {
3352 variable[9] = NEW_String_string___String___with_native(BOX_NativeString(" in the interface "), TAG_Int(18)) /*new String*/;
3353 once_value_148 = variable[9];
3354 }
3355 /* Register variable[9]: Result */
3356 /* Ensure var variable[9]: super-string element*/
3357 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
3358 /* Register variable[9]: Result */
3359 variable[9] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
3360 /* Ensure var variable[9]: super-string element*/
3361 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
3362 /* Register variable[9]: Once String constant */
3363 if (once_value_149 != NIT_NULL) variable[9] = once_value_149;
3364 else {
3365 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
3366 once_value_149 = variable[9];
3367 }
3368 /* Register variable[9]: Result */
3369 /* Ensure var variable[9]: super-string element*/
3370 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
3371 /* Register variable[8]: Result */
3372 variable[8] = CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/;
3373 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[8]) /*AbsSyntaxVisitor::error*/;
3374 } else { /*if*/
3375 /* Register variable[8]: Result */
3376 variable[8] = CALL_abstractmetamodel___MMGlobalClass___is_universal( variable[7] /*gbc*/)( variable[7] /*gbc*/) /*MMGlobalClass::is_universal*/;
3377 if (UNTAG_Bool(variable[8])) { /*if*/
3378 variable[8] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
3379 /* Register variable[9]: Once String constant */
3380 if (once_value_150 != NIT_NULL) variable[9] = once_value_150;
3381 else {
3382 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("Error: Attempt to define attribute "), TAG_Int(35)) /*new String*/;
3383 once_value_150 = variable[9];
3384 }
3385 /* Register variable[9]: Result */
3386 /* Ensure var variable[9]: super-string element*/
3387 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
3388 variable[9] = variable[2] /*prop*/ /* Ensure var: super-string element*/;
3389 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
3390 /* Register variable[9]: Once String constant */
3391 if (once_value_151 != NIT_NULL) variable[9] = once_value_151;
3392 else {
3393 variable[9] = NEW_String_string___String___with_native(BOX_NativeString(" in the universal class "), TAG_Int(24)) /*new String*/;
3394 once_value_151 = variable[9];
3395 }
3396 /* Register variable[9]: Result */
3397 /* Ensure var variable[9]: super-string element*/
3398 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
3399 /* Register variable[9]: Result */
3400 variable[9] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
3401 /* Ensure var variable[9]: super-string element*/
3402 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
3403 /* Register variable[9]: Once String constant */
3404 if (once_value_152 != NIT_NULL) variable[9] = once_value_152;
3405 else {
3406 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
3407 once_value_152 = variable[9];
3408 }
3409 /* Register variable[9]: Result */
3410 /* Ensure var variable[9]: super-string element*/
3411 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
3412 /* Register variable[8]: Result */
3413 variable[8] = CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/;
3414 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[8]) /*AbsSyntaxVisitor::error*/;
3415 }
3416 }
3417 } else { /*if*/
3418 /* Register variable[8]: Result */
3419 variable[8] = CALL_abstractmetamodel___MMGlobalProperty___is_init( variable[6] /*glob*/)( variable[6] /*glob*/) /*MMGlobalProperty::is_init*/;
3420 if (UNTAG_Bool(variable[8])) { /*if*/
3421 /* Register variable[8]: Result */
3422 variable[8] = CALL_abstractmetamodel___MMGlobalClass___is_interface( variable[7] /*gbc*/)( variable[7] /*gbc*/) /*MMGlobalClass::is_interface*/;
3423 if (UNTAG_Bool(variable[8])) { /*if*/
3424 variable[8] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
3425 /* Register variable[9]: Once String constant */
3426 if (once_value_153 != NIT_NULL) variable[9] = once_value_153;
3427 else {
3428 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("Error: Attempt to define a constructor "), TAG_Int(39)) /*new String*/;
3429 once_value_153 = variable[9];
3430 }
3431 /* Register variable[9]: Result */
3432 /* Ensure var variable[9]: super-string element*/
3433 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
3434 variable[9] = variable[2] /*prop*/ /* Ensure var: super-string element*/;
3435 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
3436 /* Register variable[9]: Once String constant */
3437 if (once_value_154 != NIT_NULL) variable[9] = once_value_154;
3438 else {
3439 variable[9] = NEW_String_string___String___with_native(BOX_NativeString(" in the class "), TAG_Int(14)) /*new String*/;
3440 once_value_154 = variable[9];
3441 }
3442 /* Register variable[9]: Result */
3443 /* Ensure var variable[9]: super-string element*/
3444 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
3445 /* Register variable[9]: Result */
3446 variable[9] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
3447 /* Ensure var variable[9]: super-string element*/
3448 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
3449 /* Register variable[9]: Once String constant */
3450 if (once_value_155 != NIT_NULL) variable[9] = once_value_155;
3451 else {
3452 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
3453 once_value_155 = variable[9];
3454 }
3455 /* Register variable[9]: Result */
3456 /* Ensure var variable[9]: super-string element*/
3457 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
3458 /* Register variable[8]: Result */
3459 variable[8] = CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/;
3460 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[8]) /*AbsSyntaxVisitor::error*/;
3461 } else { /*if*/
3462 /* Register variable[8]: Result */
3463 variable[8] = CALL_abstractmetamodel___MMGlobalClass___is_universal( variable[7] /*gbc*/)( variable[7] /*gbc*/) /*MMGlobalClass::is_universal*/;
3464 if (UNTAG_Bool(variable[8])) { /*if*/
3465 variable[8] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
3466 /* Register variable[9]: Once String constant */
3467 if (once_value_156 != NIT_NULL) variable[9] = once_value_156;
3468 else {
3469 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("Error: Attempt to define a constructor "), TAG_Int(39)) /*new String*/;
3470 once_value_156 = variable[9];
3471 }
3472 /* Register variable[9]: Result */
3473 /* Ensure var variable[9]: super-string element*/
3474 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
3475 variable[9] = variable[2] /*prop*/ /* Ensure var: super-string element*/;
3476 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
3477 /* Register variable[9]: Once String constant */
3478 if (once_value_157 != NIT_NULL) variable[9] = once_value_157;
3479 else {
3480 variable[9] = NEW_String_string___String___with_native(BOX_NativeString(" in the universal "), TAG_Int(18)) /*new String*/;
3481 once_value_157 = variable[9];
3482 }
3483 /* Register variable[9]: Result */
3484 /* Ensure var variable[9]: super-string element*/
3485 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
3486 /* Register variable[9]: Result */
3487 variable[9] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
3488 /* Ensure var variable[9]: super-string element*/
3489 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
3490 /* Register variable[9]: Once String constant */
3491 if (once_value_158 != NIT_NULL) variable[9] = once_value_158;
3492 else {
3493 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
3494 once_value_158 = variable[9];
3495 }
3496 /* Register variable[9]: Result */
3497 /* Ensure var variable[9]: super-string element*/
3498 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
3499 /* Register variable[8]: Result */
3500 variable[8] = CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/;
3501 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[8]) /*AbsSyntaxVisitor::error*/;
3502 }
3503 }
3504 }
3505 }
3506 /* Register variable[8]: Result */
3507 variable[8] = CALL_static_type___MMLocalProperty___signature( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::signature*/;
3508 /* Register variable[8]: Result */
3509 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::==*/)))));
3510 if (UNTAG_Bool(variable[8])) { /*if*/
3511 /* Register variable[8]: Result */
3512 variable[8] = CALL_abstractmetamodel___MMGlobalProperty___is_init( variable[6] /*glob*/)( variable[6] /*glob*/) /*MMGlobalProperty::is_init*/;
3513 if (UNTAG_Bool(variable[8])) { /*if*/
3514 /* Register variable[8]: Local variable */
3515 /* Register variable[9]: Result */
3516 variable[9] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
3517 /* Register variable[10]: Result */
3518 variable[10] = CALL_abstractmetamodel___MMLocalProperty___name( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::name*/;
3519 /* Register variable[9]: Result */
3520 variable[9] = CALL_abstractmetamodel___MMLocalClass___super_methods_named(variable[9])(variable[9], variable[10]) /*MMLocalClass::super_methods_named*/;
3521 variable[8] = variable[9];
3522 CALL_mmbuilder___PPropdef___inherit_signature(variable[0])(variable[0], variable[1] /*v*/, variable[2] /*prop*/, variable[8] /*supers*/) /*PPropdef::inherit_signature*/;
3523 }
3524 /* Register variable[8]: Result */
3525 variable[8] = CALL_static_type___MMLocalProperty___signature( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::signature*/;
3526 /* Register variable[8]: Result */
3527 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::==*/)))))));
3528 if (UNTAG_Bool(variable[8])) { /*if*/
3529 } else { /*if*/
3530 /* Register variable[8]: Result */
3531 variable[8] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
3532 /* Register variable[8]: Result */
3533 variable[8] = CALL_mmbuilder___SignatureBuilder___untyped_params(variable[8])(variable[8]) /*SignatureBuilder::untyped_params*/;
3534 /* Register variable[8]: Result */
3535 variable[8] = CALL_abstract_collection___Collection___is_empty(variable[8])(variable[8]) /*AbstractArrayRead::is_empty*/;
3536 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[8])))) { /*if*/
3537 /* Register variable[8]: Result */
3538 variable[8] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
3539 /* Register variable[8]: Result */
3540 variable[8] = CALL_mmbuilder___SignatureBuilder___untyped_params(variable[8])(variable[8]) /*SignatureBuilder::untyped_params*/;
3541 /* Register variable[8]: Result */
3542 variable[8] = CALL_abstract_collection___Collection___first(variable[8])(variable[8]) /*IndexedCollectionRead::first*/;
3543 /* Register variable[9]: Once String constant */
3544 if (once_value_159 != NIT_NULL) variable[9] = once_value_159;
3545 else {
3546 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("Error: Untyped parameter."), TAG_Int(25)) /*new String*/;
3547 once_value_159 = variable[9];
3548 }
3549 /* Register variable[9]: Result */
3550 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[8], variable[9]) /*AbsSyntaxVisitor::error*/;
3551 } else { /*if*/
3552 /* Register variable[8]: Result */
3553 variable[8] = NEW_Array_array___Array___init() /*new Array[MMType]*/;
3554 /* Register variable[9]: Result */
3555 variable[9] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
3556 /* Register variable[9]: Result */
3557 variable[9] = CALL_static_type___MMLocalClass___get_type(variable[9])(variable[9]) /*MMLocalClass::get_type*/;
3558 /* Register variable[8]: Result */
3559 variable[8] = NEW_MMSignature_static_type___MMSignature___init(variable[8], NIT_NULL /*null*/, variable[9]) /*new MMSignature*/;
3560 CALL_static_type___MMLocalProperty___signature__eq( variable[2] /*prop*/)( variable[2] /*prop*/, variable[8]) /*MMLocalProperty::signature=*/;
3561 /* Register variable[8]: Result */
3562 variable[8] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
3563 /* Register variable[8]: Result */
3564 variable[8] = CALL_mmbuilder___SignatureBuilder___closure_decls(variable[8])(variable[8]) /*SignatureBuilder::closure_decls*/;
3565 /* Register variable[8]: Result */
3566 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::==*/)))))));
3567 if (UNTAG_Bool(variable[8])) { /*if*/
3568 /* Register variable[8]: Result */
3569 variable[8] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
3570 /* Register variable[8]: Result */
3571 variable[8] = CALL_mmbuilder___SignatureBuilder___closure_decls(variable[8])(variable[8]) /*SignatureBuilder::closure_decls*/;
3572 /* Register variable[8]: For iterator */
3573 variable[8] = CALL_abstract_collection___Collection___iterator(variable[8])(variable[8]) /*AbstractArrayRead::iterator*/;
3574 while (true) { /*for*/
3575 /* Register variable[9]: For 'is_ok' result */
3576 variable[9] = CALL_abstract_collection___Iterator___is_ok(variable[8])(variable[8]) /*ArrayIterator::is_ok*/;
3577 if (!UNTAG_Bool(variable[9])) break; /*for*/
3578 variable[9] = CALL_abstract_collection___Iterator___item(variable[8])(variable[8]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
3579 /* Register variable[10]: Local variable */
3580 variable[10] = variable[9];
3581 /* Register variable[11]: Result */
3582 variable[11] = CALL_static_type___MMLocalProperty___signature( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::signature*/;
3583 /* Register variable[11]: Result */
3584 variable[11] = CALL_static_type___MMSignature___closures(variable[11])(variable[11]) /*MMSignature::closures*/;
3585 /* Register variable[12]: Result */
3586 variable[12] = CALL_syntax_base___PClosureDecl___variable( variable[10] /*clos*/)( variable[10] /*clos*/) /*AClosureDecl::variable*/;
3587 /* Register variable[12]: Result */
3588 variable[12] = CALL_syntax_base___ClosureVariable___closure(variable[12])(variable[12]) /*ClosureVariable::closure*/;
3589 CALL_abstract_collection___SimpleCollection___add(variable[11])(variable[11], variable[12]) /*AbstractArray::add*/;
3590 continue_160: while(0);
3591 CALL_abstract_collection___Iterator___next(variable[8])(variable[8]) /*ArrayIterator::next*/;
3592 }
3593 break_160: while(0);
3594 }
3595 }
3596 }
3597 }
3598 return_label143: while(false);
3599 tracehead = trace.prev;
3600 return;
3601 }
3602 void mmbuilder___PPropdef___inherit_signature(val_t self, val_t param0, val_t param1, val_t param2) {
3603 struct trace_t trace = {NULL, NULL, 797, LOCATE_mmbuilder___PPropdef___inherit_signature};
3604 val_t variable[16];
3605 struct WBT_ **closurevariable = NULL;
3606 trace.prev = tracehead; tracehead = &trace;
3607 trace.file = LOCATE_mmbuilder;
3608 /* Register variable[0]: Local variable */
3609 variable[0] = self;
3610 /* Register variable[1]: Local variable */
3611 variable[1] = param0;
3612 /* Register variable[2]: Local variable */
3613 variable[2] = param1;
3614 /* Register variable[3]: Local variable */
3615 variable[3] = param2;
3616 /* Register variable[4]: Method return value and escape marker */
3617 /* Register variable[5]: Local variable */
3618 /* Register variable[6]: Result */
3619 variable[6] = CALL_static_type___MMLocalProperty___signature( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::signature*/;
3620 variable[5] = variable[6];
3621 /* Register variable[6]: For iterator */
3622 variable[6] = CALL_abstract_collection___Collection___iterator( variable[3] /*supers*/)( variable[3] /*supers*/) /*AbstractArrayRead::iterator*/;
3623 while (true) { /*for*/
3624 /* Register variable[7]: For 'is_ok' result */
3625 variable[7] = CALL_abstract_collection___Iterator___is_ok(variable[6])(variable[6]) /*ArrayIterator::is_ok*/;
3626 if (!UNTAG_Bool(variable[7])) break; /*for*/
3627 variable[7] = CALL_abstract_collection___Iterator___item(variable[6])(variable[6]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
3628 /* Register variable[8]: Local variable */
3629 variable[8] = variable[7];
3630 /* Register variable[9]: Local variable */
3631 /* Register variable[10]: Result */
3632 variable[10] = CALL_static_type___MMLocalProperty___signature( variable[8] /*ip*/)( variable[8] /*ip*/) /*MMLocalProperty::signature*/;
3633 /* Register variable[11]: Result */
3634 variable[11] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
3635 /* Register variable[11]: Result */
3636 variable[11] = CALL_static_type___MMLocalClass___get_type(variable[11])(variable[11]) /*MMLocalClass::get_type*/;
3637 /* Register variable[10]: Result */
3638 variable[10] = CALL_static_type___MMSignature___adaptation_to(variable[10])(variable[10], variable[11]) /*MMSignature::adaptation_to*/;
3639 variable[9] = variable[10];
3640 /* Register variable[10]: Result */
3641 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::==*/)))));
3642 if (UNTAG_Bool(variable[10])) { /*if*/
3643 /* Register variable[10]: Result */
3644 variable[10] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
3645 /* Register variable[10]: Result */
3646 variable[10] = CALL_mmbuilder___SignatureBuilder___params(variable[10])(variable[10]) /*SignatureBuilder::params*/;
3647 /* Register variable[10]: Result */
3648 variable[10] = CALL_abstract_collection___Collection___length(variable[10])(variable[10]) /*AbstractArrayRead::length*/;
3649 /* Register variable[11]: Result */
3650 variable[11] = CALL_static_type___MMSignature___arity( variable[9] /*isig*/)( variable[9] /*isig*/) /*MMSignature::arity*/;
3651 /* Register variable[10]: Result */
3652 variable[10] = TAG_Bool((variable[10])!=(variable[11]));
3653 if (UNTAG_Bool(variable[10])) { /*if*/
3654 goto return_label161;
3655 }
3656 /* Register variable[10]: Result */
3657 variable[10] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
3658 /* Register variable[10]: Result */
3659 variable[10] = CALL_mmbuilder___SignatureBuilder___params(variable[10])(variable[10]) /*SignatureBuilder::params*/;
3660 /* Register variable[10]: For iterator */
3661 variable[10] = CALL_abstract_collection___Collection___iterator(variable[10])(variable[10]) /*AbstractArrayRead::iterator*/;
3662 while (true) { /*for*/
3663 /* Register variable[11]: For 'is_ok' result */
3664 variable[11] = CALL_abstract_collection___Iterator___is_ok(variable[10])(variable[10]) /*ArrayIterator::is_ok*/;
3665 if (!UNTAG_Bool(variable[11])) break; /*for*/
3666 variable[11] = CALL_abstract_collection___Iterator___item(variable[10])(variable[10]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
3667 /* Register variable[12]: Local variable */
3668 variable[12] = variable[11];
3669 /* Register variable[13]: Local variable */
3670 /* Register variable[14]: Result */
3671 variable[14] = CALL_syntax_base___PParam___position( variable[12] /*p*/)( variable[12] /*p*/) /*PParam::position*/;
3672 /* Register variable[14]: Result */
3673 variable[14] = CALL_static_type___MMSignature_____bra( variable[9] /*isig*/)( variable[9] /*isig*/, variable[14]) /*MMSignature::[]*/;
3674 variable[13] = variable[14];
3675 CALL_mmbuilder___PParam___stype__eq( variable[12] /*p*/)( variable[12] /*p*/, variable[13] /*t*/) /*PParam::stype=*/;
3676 /* Register variable[14]: Result */
3677 variable[14] = CALL_syntax_base___PParam___position( variable[12] /*p*/)( variable[12] /*p*/) /*PParam::position*/;
3678 /* Register variable[15]: Result */
3679 variable[15] = CALL_vararg___MMSignature___vararg_rank( variable[9] /*isig*/)( variable[9] /*isig*/) /*MMSignature::vararg_rank*/;
3680 /* Register variable[14]: Result */
3681 variable[14] = TAG_Bool((variable[14])==(variable[15]));
3682 if (UNTAG_Bool(variable[14])) { /*if*/
3683 /* Register variable[14]: Result */
3684 variable[14] = CALL_syntax_base___AbsSyntaxVisitor___type_array( variable[1] /*v*/)( variable[1] /*v*/, variable[13] /*t*/) /*AbsSyntaxVisitor::type_array*/;
3685 variable[13] = variable[14] /*t=*/;
3686 }
3687 /* Register variable[14]: Result */
3688 variable[14] = CALL_syntax_base___PParam___variable( variable[12] /*p*/)( variable[12] /*p*/) /*PParam::variable*/;
3689 CALL_syntax_base___Variable___stype__eq(variable[14])(variable[14], variable[13] /*t*/) /*Variable::stype=*/;
3690 continue_163: while(0);
3691 CALL_abstract_collection___Iterator___next(variable[10])(variable[10]) /*ArrayIterator::next*/;
3692 }
3693 break_163: while(0);
3694 variable[5] = variable[9] /*isig*/ /*s=*/;
3695 CALL_static_type___MMLocalProperty___signature__eq( variable[2] /*prop*/)( variable[2] /*prop*/, variable[5] /*s*/) /*MMLocalProperty::signature=*/;
3696 }
3697 continue_162: while(0);
3698 CALL_abstract_collection___Iterator___next(variable[6])(variable[6]) /*ArrayIterator::next*/;
3699 }
3700 break_162: while(0);
3701 return_label161: while(false);
3702 tracehead = trace.prev;
3703 return;
3704 }
3705 void mmbuilder___PPropdef___do_and_check_redef(val_t self, val_t param0, val_t param1, val_t param2, val_t param3) {
3706 struct trace_t trace = {NULL, NULL, 823, LOCATE_mmbuilder___PPropdef___do_and_check_redef};
3707 static val_t once_value_165 = NIT_NULL; /* Once value for string variable[9]*/
3708 static val_t once_value_166 = NIT_NULL; /* Once value for string variable[9]*/
3709 static val_t once_value_167 = NIT_NULL; /* Once value for string variable[9]*/
3710 static val_t once_value_168 = NIT_NULL; /* Once value for string variable[9]*/
3711 static val_t once_value_169 = NIT_NULL; /* Once value for string variable[9]*/
3712 static val_t once_value_170 = NIT_NULL; /* Once value for string variable[9]*/
3713 static val_t once_value_171 = NIT_NULL; /* Once value for string variable[9]*/
3714 static val_t once_value_172 = NIT_NULL; /* Once value for string variable[9]*/
3715 static val_t once_value_173 = NIT_NULL; /* Once value for string variable[9]*/
3716 static val_t once_value_175 = NIT_NULL; /* Once value for string variable[15]*/
3717 static val_t once_value_176 = NIT_NULL; /* Once value for string variable[15]*/
3718 static val_t once_value_177 = NIT_NULL; /* Once value for string variable[15]*/
3719 static val_t once_value_178 = NIT_NULL; /* Once value for string variable[15]*/
3720 static val_t once_value_179 = NIT_NULL; /* Once value for string variable[15]*/
3721 static val_t once_value_180 = NIT_NULL; /* Once value for string variable[15]*/
3722 static val_t once_value_181 = NIT_NULL; /* Once value for string variable[15]*/
3723 static val_t once_value_182 = NIT_NULL; /* Once value for string variable[15]*/
3724 static val_t once_value_183 = NIT_NULL; /* Once value for string variable[15]*/
3725 static val_t once_value_184 = NIT_NULL; /* Once value for string variable[15]*/
3726 static val_t once_value_185 = NIT_NULL; /* Once value for string variable[15]*/
3727 static val_t once_value_186 = NIT_NULL; /* Once value for string variable[15]*/
3728 static val_t once_value_188 = NIT_NULL; /* Once value for string variable[16]*/
3729 static val_t once_value_189 = NIT_NULL; /* Once value for string variable[16]*/
3730 static val_t once_value_190 = NIT_NULL; /* Once value for string variable[16]*/
3731 static val_t once_value_191 = NIT_NULL; /* Once value for string variable[16]*/
3732 static val_t once_value_192 = NIT_NULL; /* Once value for string variable[16]*/
3733 static val_t once_value_193 = NIT_NULL; /* Once value for string variable[16]*/
3734 static val_t once_value_195 = NIT_NULL; /* Once value for string variable[19]*/
3735 static val_t once_value_196 = NIT_NULL; /* Once value for string variable[19]*/
3736 static val_t once_value_197 = NIT_NULL; /* Once value for string variable[19]*/
3737 static val_t once_value_198 = NIT_NULL; /* Once value for string variable[19]*/
3738 static val_t once_value_199 = NIT_NULL; /* Once value for string variable[19]*/
3739 static val_t once_value_200 = NIT_NULL; /* Once value for string variable[19]*/
3740 static val_t once_value_201 = NIT_NULL; /* Once value for string variable[19]*/
3741 static val_t once_value_202 = NIT_NULL; /* Once value for string variable[18]*/
3742 static val_t once_value_203 = NIT_NULL; /* Once value for string variable[18]*/
3743 static val_t once_value_204 = NIT_NULL; /* Once value for string variable[18]*/
3744 static val_t once_value_205 = NIT_NULL; /* Once value for string variable[18]*/
3745 static val_t once_value_206 = NIT_NULL; /* Once value for string variable[18]*/
3746 static val_t once_value_207 = NIT_NULL; /* Once value for string variable[18]*/
3747 static val_t once_value_208 = NIT_NULL; /* Once value for string variable[18]*/
3748 static val_t once_value_209 = NIT_NULL; /* Once value for string variable[18]*/
3749 static val_t once_value_210 = NIT_NULL; /* Once value for string variable[18]*/
3750 static val_t once_value_211 = NIT_NULL; /* Once value for string variable[18]*/
3751 static val_t once_value_212 = NIT_NULL; /* Once value for string variable[18]*/
3752 static val_t once_value_213 = NIT_NULL; /* Once value for string variable[18]*/
3753 static val_t once_value_214 = NIT_NULL; /* Once value for string variable[18]*/
3754 static val_t once_value_215 = NIT_NULL; /* Once value for string variable[18]*/
3755 static val_t once_value_216 = NIT_NULL; /* Once value for string variable[18]*/
3756 static val_t once_value_217 = NIT_NULL; /* Once value for string variable[18]*/
3757 static val_t once_value_218 = NIT_NULL; /* Once value for string variable[18]*/
3758 static val_t once_value_219 = NIT_NULL; /* Once value for string variable[18]*/
3759 static val_t once_value_220 = NIT_NULL; /* Once value for string variable[18]*/
3760 static val_t once_value_221 = NIT_NULL; /* Once value for string variable[18]*/
3761 static val_t once_value_222 = NIT_NULL; /* Once value for string variable[18]*/
3762 static val_t once_value_223 = NIT_NULL; /* Once value for string variable[18]*/
3763 static val_t once_value_224 = NIT_NULL; /* Once value for string variable[18]*/
3764 static val_t once_value_225 = NIT_NULL; /* Once value for string variable[18]*/
3765 static val_t once_value_226 = NIT_NULL; /* Once value for string variable[18]*/
3766 static val_t once_value_227 = NIT_NULL; /* Once value for string variable[18]*/
3767 static val_t once_value_228 = NIT_NULL; /* Once value for string variable[18]*/
3768 static val_t once_value_229 = NIT_NULL; /* Once value for string variable[18]*/
3769 static val_t once_value_230 = NIT_NULL; /* Once value for string variable[18]*/
3770 static val_t once_value_231 = NIT_NULL; /* Once value for string variable[10]*/
3771 static val_t once_value_232 = NIT_NULL; /* Once value for string variable[10]*/
3772 static val_t once_value_233 = NIT_NULL; /* Once value for string variable[10]*/
3773 val_t variable[20];
3774 struct WBT_ **closurevariable = NULL;
3775 trace.prev = tracehead; tracehead = &trace;
3776 trace.file = LOCATE_mmbuilder;
3777 /* Register variable[0]: Local variable */
3778 variable[0] = self;
3779 /* Register variable[1]: Local variable */
3780 variable[1] = param0;
3781 /* Register variable[2]: Local variable */
3782 variable[2] = param1;
3783 /* Register variable[3]: Local variable */
3784 variable[3] = param2;
3785 /* Register variable[4]: Local variable */
3786 variable[4] = param3;
3787 /* Register variable[5]: Method return value and escape marker */
3788 /* Register variable[6]: Local variable */
3789 /* Register variable[7]: Result */
3790 variable[7] = TAG_Bool((variable[0]==NIT_NULL) || VAL_ISA(variable[0], COLOR_AConcreteInitPropdef, ID_AConcreteInitPropdef)) /*cast AConcreteInitPropdef*/;
3791 variable[6] = variable[7];
3792 /* Register variable[7]: Local variable */
3793 /* Register variable[8]: Result */
3794 variable[8] = CALL_abstractmetamodel___MMLocalProperty___global( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::global*/;
3795 variable[7] = variable[8];
3796 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool( variable[3] /*has_redef*/)))) { /*if*/
3797 variable[8] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
3798 /* Register variable[9]: Once String constant */
3799 if (once_value_165 != NIT_NULL) variable[9] = once_value_165;
3800 else {
3801 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: "), TAG_Int(13)) /*new String*/;
3802 once_value_165 = variable[9];
3803 }
3804 /* Register variable[9]: Result */
3805 /* Ensure var variable[9]: super-string element*/
3806 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
3807 /* Register variable[9]: Result */
3808 variable[9] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
3809 /* Ensure var variable[9]: super-string element*/
3810 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
3811 /* Register variable[9]: Once String constant */
3812 if (once_value_166 != NIT_NULL) variable[9] = once_value_166;
3813 else {
3814 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
3815 once_value_166 = variable[9];
3816 }
3817 /* Register variable[9]: Result */
3818 /* Ensure var variable[9]: super-string element*/
3819 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
3820 variable[9] = variable[2] /*prop*/ /* Ensure var: super-string element*/;
3821 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
3822 /* Register variable[9]: Once String constant */
3823 if (once_value_167 != NIT_NULL) variable[9] = once_value_167;
3824 else {
3825 variable[9] = NEW_String_string___String___with_native(BOX_NativeString(" is an inherited property. To redefine it, add the redef keyword."), TAG_Int(65)) /*new String*/;
3826 once_value_167 = variable[9];
3827 }
3828 /* Register variable[9]: Result */
3829 /* Ensure var variable[9]: super-string element*/
3830 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
3831 /* Register variable[8]: Result */
3832 variable[8] = CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/;
3833 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[8]) /*AbsSyntaxVisitor::error*/;
3834 goto return_label164;
3835 }
3836 /* Register variable[8]: Result */
3837 variable[8] = CALL_abstractmetamodel___MMGlobalProperty___is_init( variable[7] /*glob*/)( variable[7] /*glob*/) /*MMGlobalProperty::is_init*/;
3838 /* Ensure var variable[8]: Left 'and' operand*/
3839 if (UNTAG_Bool(variable[8])) { /* and */
3840 variable[8] = TAG_Bool(!UNTAG_Bool( variable[6] /*is_init*/));
3841 }
3842 /* Register variable[8]: Result */
3843 if (UNTAG_Bool(variable[8])) { /*if*/
3844 variable[8] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
3845 /* Register variable[9]: Once String constant */
3846 if (once_value_168 != NIT_NULL) variable[9] = once_value_168;
3847 else {
3848 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: A method "), TAG_Int(22)) /*new String*/;
3849 once_value_168 = variable[9];
3850 }
3851 /* Register variable[9]: Result */
3852 /* Ensure var variable[9]: super-string element*/
3853 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
3854 /* Register variable[9]: Result */
3855 variable[9] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
3856 /* Ensure var variable[9]: super-string element*/
3857 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
3858 /* Register variable[9]: Once String constant */
3859 if (once_value_169 != NIT_NULL) variable[9] = once_value_169;
3860 else {
3861 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
3862 once_value_169 = variable[9];
3863 }
3864 /* Register variable[9]: Result */
3865 /* Ensure var variable[9]: super-string element*/
3866 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
3867 variable[9] = variable[2] /*prop*/ /* Ensure var: super-string element*/;
3868 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
3869 /* Register variable[9]: Once String constant */
3870 if (once_value_170 != NIT_NULL) variable[9] = once_value_170;
3871 else {
3872 variable[9] = NEW_String_string___String___with_native(BOX_NativeString(" cannot redefine a constructor."), TAG_Int(31)) /*new String*/;
3873 once_value_170 = variable[9];
3874 }
3875 /* Register variable[9]: Result */
3876 /* Ensure var variable[9]: super-string element*/
3877 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
3878 /* Register variable[8]: Result */
3879 variable[8] = CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/;
3880 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[8]) /*AbsSyntaxVisitor::error*/;
3881 } else { /*if*/
3882 /* Register variable[8]: Result */
3883 variable[8] = CALL_abstractmetamodel___MMGlobalProperty___is_init( variable[7] /*glob*/)( variable[7] /*glob*/) /*MMGlobalProperty::is_init*/;
3884 variable[8] = TAG_Bool(!UNTAG_Bool(variable[8])) /* Ensure var: Left 'and' operand*/;
3885 if (UNTAG_Bool(variable[8])) { /* and */
3886 variable[8] = variable[6] /*is_init*/;
3887 }
3888 /* Register variable[8]: Result */
3889 if (UNTAG_Bool(variable[8])) { /*if*/
3890 variable[8] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
3891 /* Register variable[9]: Once String constant */
3892 if (once_value_171 != NIT_NULL) variable[9] = once_value_171;
3893 else {
3894 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: A constructor "), TAG_Int(27)) /*new String*/;
3895 once_value_171 = variable[9];
3896 }
3897 /* Register variable[9]: Result */
3898 /* Ensure var variable[9]: super-string element*/
3899 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
3900 /* Register variable[9]: Result */
3901 variable[9] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
3902 /* Ensure var variable[9]: super-string element*/
3903 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
3904 /* Register variable[9]: Once String constant */
3905 if (once_value_172 != NIT_NULL) variable[9] = once_value_172;
3906 else {
3907 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
3908 once_value_172 = variable[9];
3909 }
3910 /* Register variable[9]: Result */
3911 /* Ensure var variable[9]: super-string element*/
3912 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
3913 variable[9] = variable[2] /*prop*/ /* Ensure var: super-string element*/;
3914 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
3915 /* Register variable[9]: Once String constant */
3916 if (once_value_173 != NIT_NULL) variable[9] = once_value_173;
3917 else {
3918 variable[9] = NEW_String_string___String___with_native(BOX_NativeString(" cannot redefine a method."), TAG_Int(26)) /*new String*/;
3919 once_value_173 = variable[9];
3920 }
3921 /* Register variable[9]: Result */
3922 /* Ensure var variable[9]: super-string element*/
3923 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
3924 /* Register variable[8]: Result */
3925 variable[8] = CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/;
3926 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[8]) /*AbsSyntaxVisitor::error*/;
3927 }
3928 }
3929 /* Register variable[8]: Local variable */
3930 /* Register variable[9]: Result */
3931 variable[9] = CALL_static_type___MMLocalProperty___signature( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::signature*/;
3932 variable[8] = variable[9];
3933 /* Register variable[9]: Result */
3934 variable[9] = CALL_abstractmetamodel___MMLocalProperty___prhe( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::prhe*/;
3935 /* Register variable[9]: Result */
3936 variable[9] = CALL_partial_order___PartialOrderElement___direct_greaters(variable[9])(variable[9]) /*PartialOrderElement::direct_greaters*/;
3937 /* Register variable[9]: For iterator */
3938 variable[9] = CALL_abstract_collection___Collection___iterator(variable[9])(variable[9]) /*AbstractArrayRead::iterator*/;
3939 while (true) { /*for*/
3940 /* Register variable[10]: For 'is_ok' result */
3941 variable[10] = CALL_abstract_collection___Iterator___is_ok(variable[9])(variable[9]) /*ArrayIterator::is_ok*/;
3942 if (!UNTAG_Bool(variable[10])) break; /*for*/
3943 variable[10] = CALL_abstract_collection___Iterator___item(variable[9])(variable[9]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
3944 /* Register variable[11]: Local variable */
3945 variable[11] = variable[10];
3946 /* Register variable[12]: Local variable */
3947 /* Register variable[13]: Result */
3948 variable[13] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[11] /*i*/)( variable[11] /*i*/) /*MMLocalProperty::local_class*/;
3949 /* Register variable[14]: Result */
3950 variable[14] = CALL_abstractmetamodel___MMLocalProperty___global( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::global*/;
3951 /* Register variable[13]: Result */
3952 variable[13] = CALL_abstractmetamodel___MMLocalClass_____bra(variable[13])(variable[13], variable[14]) /*MMLocalClass::[]*/;
3953 variable[12] = variable[13];
3954 /* Register variable[13]: Local variable */
3955 /* Register variable[14]: Result */
3956 variable[14] = CALL_static_type___MMLocalProperty___signature( variable[11] /*i*/)( variable[11] /*i*/) /*MMLocalProperty::signature*/;
3957 /* Register variable[15]: Result */
3958 variable[15] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
3959 /* Register variable[15]: Result */
3960 variable[15] = CALL_static_type___MMLocalClass___get_type(variable[15])(variable[15]) /*MMLocalClass::get_type*/;
3961 /* Register variable[14]: Result */
3962 variable[14] = CALL_static_type___MMSignature___adaptation_to(variable[14])(variable[14], variable[15]) /*MMSignature::adaptation_to*/;
3963 variable[13] = variable[14];
3964 /* Register variable[14]: Result */
3965 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::==*/)))));
3966 if (UNTAG_Bool(variable[14])) { /*if*/
3967 /* Register variable[14]: Result */
3968 variable[14] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
3969 /* Register variable[14]: Result */
3970 variable[14] = CALL_mmbuilder___SignatureBuilder___params(variable[14])(variable[14]) /*SignatureBuilder::params*/;
3971 /* Register variable[14]: Result */
3972 variable[14] = CALL_abstract_collection___Collection___length(variable[14])(variable[14]) /*AbstractArrayRead::length*/;
3973 /* Register variable[15]: Result */
3974 variable[15] = CALL_static_type___MMSignature___arity( variable[13] /*isig*/)( variable[13] /*isig*/) /*MMSignature::arity*/;
3975 /* Register variable[14]: Result */
3976 variable[14] = TAG_Bool((variable[14])!=(variable[15]));
3977 if (UNTAG_Bool(variable[14])) { /*if*/
3978 variable[14] = NEW_Array_array___Array___with_capacity(TAG_Int(11)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
3979 /* Register variable[15]: Once String constant */
3980 if (once_value_175 != NIT_NULL) variable[15] = once_value_175;
3981 else {
3982 variable[15] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: "), TAG_Int(13)) /*new String*/;
3983 once_value_175 = variable[15];
3984 }
3985 /* Register variable[15]: Result */
3986 /* Ensure var variable[15]: super-string element*/
3987 CALL_abstract_collection___SimpleCollection___add(variable[14])(variable[14], variable[15]) /*AbstractArray::add*/;
3988 /* Register variable[15]: Result */
3989 variable[15] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
3990 /* Ensure var variable[15]: super-string element*/
3991 CALL_abstract_collection___SimpleCollection___add(variable[14])(variable[14], CALL_string___Object___to_s(variable[15])(variable[15]) /*Object::to_s*/) /*AbstractArray::add*/;
3992 /* Register variable[15]: Once String constant */
3993 if (once_value_176 != NIT_NULL) variable[15] = once_value_176;
3994 else {
3995 variable[15] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
3996 once_value_176 = variable[15];
3997 }
3998 /* Register variable[15]: Result */
3999 /* Ensure var variable[15]: super-string element*/
4000 CALL_abstract_collection___SimpleCollection___add(variable[14])(variable[14], variable[15]) /*AbstractArray::add*/;
4001 variable[15] = variable[2] /*prop*/ /* Ensure var: super-string element*/;
4002 CALL_abstract_collection___SimpleCollection___add(variable[14])(variable[14], CALL_string___Object___to_s(variable[15])(variable[15]) /*Object::to_s*/) /*AbstractArray::add*/;
4003 /* Register variable[15]: Once String constant */
4004 if (once_value_177 != NIT_NULL) variable[15] = once_value_177;
4005 else {
4006 variable[15] = NEW_String_string___String___with_native(BOX_NativeString(" redefines "), TAG_Int(11)) /*new String*/;
4007 once_value_177 = variable[15];
4008 }
4009 /* Register variable[15]: Result */
4010 /* Ensure var variable[15]: super-string element*/
4011 CALL_abstract_collection___SimpleCollection___add(variable[14])(variable[14], variable[15]) /*AbstractArray::add*/;
4012 /* Register variable[15]: Result */
4013 variable[15] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[12] /*ip*/)( variable[12] /*ip*/) /*MMLocalProperty::local_class*/;
4014 /* Ensure var variable[15]: super-string element*/
4015 CALL_abstract_collection___SimpleCollection___add(variable[14])(variable[14], CALL_string___Object___to_s(variable[15])(variable[15]) /*Object::to_s*/) /*AbstractArray::add*/;
4016 /* Register variable[15]: Once String constant */
4017 if (once_value_178 != NIT_NULL) variable[15] = once_value_178;
4018 else {
4019 variable[15] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
4020 once_value_178 = variable[15];
4021 }
4022 /* Register variable[15]: Result */
4023 /* Ensure var variable[15]: super-string element*/
4024 CALL_abstract_collection___SimpleCollection___add(variable[14])(variable[14], variable[15]) /*AbstractArray::add*/;
4025 variable[15] = variable[12] /*ip*/ /* Ensure var: super-string element*/;
4026 CALL_abstract_collection___SimpleCollection___add(variable[14])(variable[14], CALL_string___Object___to_s(variable[15])(variable[15]) /*Object::to_s*/) /*AbstractArray::add*/;
4027 /* Register variable[15]: Once String constant */
4028 if (once_value_179 != NIT_NULL) variable[15] = once_value_179;
4029 else {
4030 variable[15] = NEW_String_string___String___with_native(BOX_NativeString(" with "), TAG_Int(6)) /*new String*/;
4031 once_value_179 = variable[15];
4032 }
4033 /* Register variable[15]: Result */
4034 /* Ensure var variable[15]: super-string element*/
4035 CALL_abstract_collection___SimpleCollection___add(variable[14])(variable[14], variable[15]) /*AbstractArray::add*/;
4036 /* Register variable[15]: Result */
4037 variable[15] = CALL_static_type___MMSignature___arity( variable[13] /*isig*/)( variable[13] /*isig*/) /*MMSignature::arity*/;
4038 /* Ensure var variable[15]: super-string element*/
4039 CALL_abstract_collection___SimpleCollection___add(variable[14])(variable[14], CALL_string___Object___to_s(variable[15])(variable[15]) /*Object::to_s*/) /*AbstractArray::add*/;
4040 /* Register variable[15]: Once String constant */
4041 if (once_value_180 != NIT_NULL) variable[15] = once_value_180;
4042 else {
4043 variable[15] = NEW_String_string___String___with_native(BOX_NativeString(" parameter(s)."), TAG_Int(14)) /*new String*/;
4044 once_value_180 = variable[15];
4045 }
4046 /* Register variable[15]: Result */
4047 /* Ensure var variable[15]: super-string element*/
4048 CALL_abstract_collection___SimpleCollection___add(variable[14])(variable[14], variable[15]) /*AbstractArray::add*/;
4049 /* Register variable[14]: Result */
4050 variable[14] = CALL_string___Object___to_s(variable[14])(variable[14]) /*Object::to_s*/;
4051 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[14]) /*AbsSyntaxVisitor::error*/;
4052 goto return_label164;
4053 }
4054 /* Register variable[14]: Result */
4055 variable[14] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
4056 /* Register variable[14]: Result */
4057 variable[14] = CALL_mmbuilder___SignatureBuilder___closure_decls(variable[14])(variable[14]) /*SignatureBuilder::closure_decls*/;
4058 /* Register variable[14]: Result */
4059 variable[14] = CALL_abstract_collection___Collection___length(variable[14])(variable[14]) /*AbstractArrayRead::length*/;
4060 /* Register variable[15]: Result */
4061 variable[15] = CALL_static_type___MMSignature___closures( variable[13] /*isig*/)( variable[13] /*isig*/) /*MMSignature::closures*/;
4062 /* Register variable[15]: Result */
4063 variable[15] = CALL_abstract_collection___Collection___length(variable[15])(variable[15]) /*AbstractArrayRead::length*/;
4064 /* Register variable[14]: Result */
4065 variable[14] = TAG_Bool((variable[14])!=(variable[15]));
4066 if (UNTAG_Bool(variable[14])) { /*if*/
4067 variable[14] = NEW_Array_array___Array___with_capacity(TAG_Int(11)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
4068 /* Register variable[15]: Once String constant */
4069 if (once_value_181 != NIT_NULL) variable[15] = once_value_181;
4070 else {
4071 variable[15] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: "), TAG_Int(13)) /*new String*/;
4072 once_value_181 = variable[15];
4073 }
4074 /* Register variable[15]: Result */
4075 /* Ensure var variable[15]: super-string element*/
4076 CALL_abstract_collection___SimpleCollection___add(variable[14])(variable[14], variable[15]) /*AbstractArray::add*/;
4077 /* Register variable[15]: Result */
4078 variable[15] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
4079 /* Ensure var variable[15]: super-string element*/
4080 CALL_abstract_collection___SimpleCollection___add(variable[14])(variable[14], CALL_string___Object___to_s(variable[15])(variable[15]) /*Object::to_s*/) /*AbstractArray::add*/;
4081 /* Register variable[15]: Once String constant */
4082 if (once_value_182 != NIT_NULL) variable[15] = once_value_182;
4083 else {
4084 variable[15] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
4085 once_value_182 = variable[15];
4086 }
4087 /* Register variable[15]: Result */
4088 /* Ensure var variable[15]: super-string element*/
4089 CALL_abstract_collection___SimpleCollection___add(variable[14])(variable[14], variable[15]) /*AbstractArray::add*/;
4090 variable[15] = variable[2] /*prop*/ /* Ensure var: super-string element*/;
4091 CALL_abstract_collection___SimpleCollection___add(variable[14])(variable[14], CALL_string___Object___to_s(variable[15])(variable[15]) /*Object::to_s*/) /*AbstractArray::add*/;
4092 /* Register variable[15]: Once String constant */
4093 if (once_value_183 != NIT_NULL) variable[15] = once_value_183;
4094 else {
4095 variable[15] = NEW_String_string___String___with_native(BOX_NativeString(" redefines "), TAG_Int(11)) /*new String*/;
4096 once_value_183 = variable[15];
4097 }
4098 /* Register variable[15]: Result */
4099 /* Ensure var variable[15]: super-string element*/
4100 CALL_abstract_collection___SimpleCollection___add(variable[14])(variable[14], variable[15]) /*AbstractArray::add*/;
4101 /* Register variable[15]: Result */
4102 variable[15] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[12] /*ip*/)( variable[12] /*ip*/) /*MMLocalProperty::local_class*/;
4103 /* Ensure var variable[15]: super-string element*/
4104 CALL_abstract_collection___SimpleCollection___add(variable[14])(variable[14], CALL_string___Object___to_s(variable[15])(variable[15]) /*Object::to_s*/) /*AbstractArray::add*/;
4105 /* Register variable[15]: Once String constant */
4106 if (once_value_184 != NIT_NULL) variable[15] = once_value_184;
4107 else {
4108 variable[15] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
4109 once_value_184 = variable[15];
4110 }
4111 /* Register variable[15]: Result */
4112 /* Ensure var variable[15]: super-string element*/
4113 CALL_abstract_collection___SimpleCollection___add(variable[14])(variable[14], variable[15]) /*AbstractArray::add*/;
4114 variable[15] = variable[12] /*ip*/ /* Ensure var: super-string element*/;
4115 CALL_abstract_collection___SimpleCollection___add(variable[14])(variable[14], CALL_string___Object___to_s(variable[15])(variable[15]) /*Object::to_s*/) /*AbstractArray::add*/;
4116 /* Register variable[15]: Once String constant */
4117 if (once_value_185 != NIT_NULL) variable[15] = once_value_185;
4118 else {
4119 variable[15] = NEW_String_string___String___with_native(BOX_NativeString(" with "), TAG_Int(6)) /*new String*/;
4120 once_value_185 = variable[15];
4121 }
4122 /* Register variable[15]: Result */
4123 /* Ensure var variable[15]: super-string element*/
4124 CALL_abstract_collection___SimpleCollection___add(variable[14])(variable[14], variable[15]) /*AbstractArray::add*/;
4125 /* Register variable[15]: Result */
4126 variable[15] = CALL_static_type___MMSignature___arity( variable[13] /*isig*/)( variable[13] /*isig*/) /*MMSignature::arity*/;
4127 /* Ensure var variable[15]: super-string element*/
4128 CALL_abstract_collection___SimpleCollection___add(variable[14])(variable[14], CALL_string___Object___to_s(variable[15])(variable[15]) /*Object::to_s*/) /*AbstractArray::add*/;
4129 /* Register variable[15]: Once String constant */
4130 if (once_value_186 != NIT_NULL) variable[15] = once_value_186;
4131 else {
4132 variable[15] = NEW_String_string___String___with_native(BOX_NativeString(" closure(s)."), TAG_Int(12)) /*new String*/;
4133 once_value_186 = variable[15];
4134 }
4135 /* Register variable[15]: Result */
4136 /* Ensure var variable[15]: super-string element*/
4137 CALL_abstract_collection___SimpleCollection___add(variable[14])(variable[14], variable[15]) /*AbstractArray::add*/;
4138 /* Register variable[14]: Result */
4139 variable[14] = CALL_string___Object___to_s(variable[14])(variable[14]) /*Object::to_s*/;
4140 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[14]) /*AbsSyntaxVisitor::error*/;
4141 goto return_label164;
4142 }
4143 /* Register variable[14]: Result */
4144 variable[14] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
4145 /* Register variable[14]: Result */
4146 variable[14] = CALL_mmbuilder___SignatureBuilder___params(variable[14])(variable[14]) /*SignatureBuilder::params*/;
4147 /* Register variable[14]: For iterator */
4148 variable[14] = CALL_abstract_collection___Collection___iterator(variable[14])(variable[14]) /*AbstractArrayRead::iterator*/;
4149 while (true) { /*for*/
4150 /* Register variable[15]: For 'is_ok' result */
4151 variable[15] = CALL_abstract_collection___Iterator___is_ok(variable[14])(variable[14]) /*ArrayIterator::is_ok*/;
4152 if (!UNTAG_Bool(variable[15])) break; /*for*/
4153 variable[15] = CALL_abstract_collection___Iterator___item(variable[14])(variable[14]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
4154 /* Register variable[16]: Local variable */
4155 variable[16] = variable[15];
4156 /* Register variable[17]: Local variable */
4157 /* Register variable[18]: Result */
4158 variable[18] = CALL_syntax_base___PParam___position( variable[16] /*p*/)( variable[16] /*p*/) /*PParam::position*/;
4159 /* Register variable[18]: Result */
4160 variable[18] = CALL_static_type___MMSignature_____bra( variable[13] /*isig*/)( variable[13] /*isig*/, variable[18]) /*MMSignature::[]*/;
4161 variable[17] = variable[18];
4162 CALL_mmbuilder___PParam___stype__eq( variable[16] /*p*/)( variable[16] /*p*/, variable[17] /*t*/) /*PParam::stype=*/;
4163 /* Register variable[18]: Result */
4164 variable[18] = CALL_syntax_base___PParam___position( variable[16] /*p*/)( variable[16] /*p*/) /*PParam::position*/;
4165 /* Register variable[19]: Result */
4166 variable[19] = CALL_vararg___MMSignature___vararg_rank( variable[13] /*isig*/)( variable[13] /*isig*/) /*MMSignature::vararg_rank*/;
4167 /* Register variable[18]: Result */
4168 variable[18] = TAG_Bool((variable[18])==(variable[19]));
4169 if (UNTAG_Bool(variable[18])) { /*if*/
4170 /* Register variable[18]: Result */
4171 variable[18] = CALL_syntax_base___AbsSyntaxVisitor___type_array( variable[1] /*v*/)( variable[1] /*v*/, variable[17] /*t*/) /*AbsSyntaxVisitor::type_array*/;
4172 variable[17] = variable[18] /*t=*/;
4173 }
4174 /* Register variable[18]: Result */
4175 variable[18] = CALL_syntax_base___PParam___variable( variable[16] /*p*/)( variable[16] /*p*/) /*PParam::variable*/;
4176 CALL_syntax_base___Variable___stype__eq(variable[18])(variable[18], variable[17] /*t*/) /*Variable::stype=*/;
4177 continue_187: while(0);
4178 CALL_abstract_collection___Iterator___next(variable[14])(variable[14]) /*ArrayIterator::next*/;
4179 }
4180 break_187: while(0);
4181 variable[8] = variable[13] /*isig*/ /*s=*/;
4182 CALL_static_type___MMLocalProperty___signature__eq( variable[2] /*prop*/)( variable[2] /*prop*/, variable[8] /*s*/) /*MMLocalProperty::signature=*/;
4183 }
4184 /* Register variable[14]: Local variable */
4185 /* Register variable[15]: Result */
4186 variable[15] = CALL_syntax_base___AbsSyntaxVisitor___tc( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::tc*/;
4187 /* Register variable[15]: Result */
4188 variable[15] = CALL_mmloader___ToolContext___error_count(variable[15])(variable[15]) /*ToolContext::error_count*/;
4189 variable[14] = variable[15];
4190 /* Register variable[15]: Result */
4191 variable[15] = CALL_static_type___MMSignature___arity( variable[8] /*s*/)( variable[8] /*s*/) /*MMSignature::arity*/;
4192 /* Register variable[16]: Result */
4193 variable[16] = CALL_static_type___MMSignature___arity( variable[13] /*isig*/)( variable[13] /*isig*/) /*MMSignature::arity*/;
4194 /* Register variable[15]: Result */
4195 variable[15] = TAG_Bool((variable[15])!=(variable[16]));
4196 if (UNTAG_Bool(variable[15])) { /*if*/
4197 variable[15] = NEW_Array_array___Array___with_capacity(TAG_Int(11)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
4198 /* Register variable[16]: Once String constant */
4199 if (once_value_188 != NIT_NULL) variable[16] = once_value_188;
4200 else {
4201 variable[16] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: "), TAG_Int(13)) /*new String*/;
4202 once_value_188 = variable[16];
4203 }
4204 /* Register variable[16]: Result */
4205 /* Ensure var variable[16]: super-string element*/
4206 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[16]) /*AbstractArray::add*/;
4207 /* Register variable[16]: Result */
4208 variable[16] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
4209 /* Ensure var variable[16]: super-string element*/
4210 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], CALL_string___Object___to_s(variable[16])(variable[16]) /*Object::to_s*/) /*AbstractArray::add*/;
4211 /* Register variable[16]: Once String constant */
4212 if (once_value_189 != NIT_NULL) variable[16] = once_value_189;
4213 else {
4214 variable[16] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
4215 once_value_189 = variable[16];
4216 }
4217 /* Register variable[16]: Result */
4218 /* Ensure var variable[16]: super-string element*/
4219 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[16]) /*AbstractArray::add*/;
4220 variable[16] = variable[2] /*prop*/ /* Ensure var: super-string element*/;
4221 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], CALL_string___Object___to_s(variable[16])(variable[16]) /*Object::to_s*/) /*AbstractArray::add*/;
4222 /* Register variable[16]: Once String constant */
4223 if (once_value_190 != NIT_NULL) variable[16] = once_value_190;
4224 else {
4225 variable[16] = NEW_String_string___String___with_native(BOX_NativeString(" redefines "), TAG_Int(11)) /*new String*/;
4226 once_value_190 = variable[16];
4227 }
4228 /* Register variable[16]: Result */
4229 /* Ensure var variable[16]: super-string element*/
4230 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[16]) /*AbstractArray::add*/;
4231 /* Register variable[16]: Result */
4232 variable[16] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[12] /*ip*/)( variable[12] /*ip*/) /*MMLocalProperty::local_class*/;
4233 /* Ensure var variable[16]: super-string element*/
4234 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], CALL_string___Object___to_s(variable[16])(variable[16]) /*Object::to_s*/) /*AbstractArray::add*/;
4235 /* Register variable[16]: Once String constant */
4236 if (once_value_191 != NIT_NULL) variable[16] = once_value_191;
4237 else {
4238 variable[16] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
4239 once_value_191 = variable[16];
4240 }
4241 /* Register variable[16]: Result */
4242 /* Ensure var variable[16]: super-string element*/
4243 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[16]) /*AbstractArray::add*/;
4244 variable[16] = variable[12] /*ip*/ /* Ensure var: super-string element*/;
4245 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], CALL_string___Object___to_s(variable[16])(variable[16]) /*Object::to_s*/) /*AbstractArray::add*/;
4246 /* Register variable[16]: Once String constant */
4247 if (once_value_192 != NIT_NULL) variable[16] = once_value_192;
4248 else {
4249 variable[16] = NEW_String_string___String___with_native(BOX_NativeString(" with "), TAG_Int(6)) /*new String*/;
4250 once_value_192 = variable[16];
4251 }
4252 /* Register variable[16]: Result */
4253 /* Ensure var variable[16]: super-string element*/
4254 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[16]) /*AbstractArray::add*/;
4255 /* Register variable[16]: Result */
4256 variable[16] = CALL_static_type___MMSignature___arity( variable[13] /*isig*/)( variable[13] /*isig*/) /*MMSignature::arity*/;
4257 /* Ensure var variable[16]: super-string element*/
4258 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], CALL_string___Object___to_s(variable[16])(variable[16]) /*Object::to_s*/) /*AbstractArray::add*/;
4259 /* Register variable[16]: Once String constant */
4260 if (once_value_193 != NIT_NULL) variable[16] = once_value_193;
4261 else {
4262 variable[16] = NEW_String_string___String___with_native(BOX_NativeString(" parameter(s)."), TAG_Int(14)) /*new String*/;
4263 once_value_193 = variable[16];
4264 }
4265 /* Register variable[16]: Result */
4266 /* Ensure var variable[16]: super-string element*/
4267 CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[16]) /*AbstractArray::add*/;
4268 /* Register variable[15]: Result */
4269 variable[15] = CALL_string___Object___to_s(variable[15])(variable[15]) /*Object::to_s*/;
4270 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[15]) /*AbsSyntaxVisitor::error*/;
4271 } else { /*if*/
4272 /* Register variable[15]: Result */
4273 variable[15] = CALL_static_type___MMSignature___arity( variable[8] /*s*/)( variable[8] /*s*/) /*MMSignature::arity*/;
4274 /* Register variable[15]: Result */
4275 variable[15] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[15]) /*new Range[Int]*/;
4276 /* Register variable[15]: For iterator */
4277 variable[15] = CALL_abstract_collection___Collection___iterator(variable[15])(variable[15]) /*Range::iterator*/;
4278 while (true) { /*for*/
4279 /* Register variable[16]: For 'is_ok' result */
4280 variable[16] = CALL_abstract_collection___Iterator___is_ok(variable[15])(variable[15]) /*Iterator::is_ok*/;
4281 if (!UNTAG_Bool(variable[16])) break; /*for*/
4282 variable[16] = CALL_abstract_collection___Iterator___item(variable[15])(variable[15]) /*Iterator::item*/ /* Ensure var: For item*/;
4283 /* Register variable[17]: Local variable */
4284 variable[17] = variable[16];
4285 /* Register variable[18]: Result */
4286 variable[18] = CALL_static_type___MMSignature_____bra( variable[8] /*s*/)( variable[8] /*s*/, variable[17] /*i*/) /*MMSignature::[]*/;
4287 /* Register variable[19]: Result */
4288 variable[19] = CALL_static_type___MMSignature_____bra( variable[13] /*isig*/)( variable[13] /*isig*/, variable[17] /*i*/) /*MMSignature::[]*/;
4289 /* Register variable[18]: Result */
4290 variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[18] == variable[19]) || ((variable[18] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[18])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[18],variable[19])):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[18])(variable[18], variable[19]) /*Object::==*/)))))));
4291 if (UNTAG_Bool(variable[18])) { /*if*/
4292 variable[18] = NEW_Array_array___Array___with_capacity(TAG_Int(13)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
4293 /* Register variable[19]: Once String constant */
4294 if (once_value_195 != NIT_NULL) variable[19] = once_value_195;
4295 else {
4296 variable[19] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: Expected "), TAG_Int(22)) /*new String*/;
4297 once_value_195 = variable[19];
4298 }
4299 /* Register variable[19]: Result */
4300 /* Ensure var variable[19]: super-string element*/
4301 CALL_abstract_collection___SimpleCollection___add(variable[18])(variable[18], variable[19]) /*AbstractArray::add*/;
4302 /* Register variable[19]: Result */
4303 variable[19] = CALL_static_type___MMSignature_____bra( variable[13] /*isig*/)( variable[13] /*isig*/, variable[17] /*i*/) /*MMSignature::[]*/;
4304 /* Ensure var variable[19]: super-string element*/
4305 CALL_abstract_collection___SimpleCollection___add(variable[18])(variable[18], CALL_string___Object___to_s(variable[19])(variable[19]) /*Object::to_s*/) /*AbstractArray::add*/;
4306 /* Register variable[19]: Once String constant */
4307 if (once_value_196 != NIT_NULL) variable[19] = once_value_196;
4308 else {
4309 variable[19] = NEW_String_string___String___with_native(BOX_NativeString(" (as in "), TAG_Int(8)) /*new String*/;
4310 once_value_196 = variable[19];
4311 }
4312 /* Register variable[19]: Result */
4313 /* Ensure var variable[19]: super-string element*/
4314 CALL_abstract_collection___SimpleCollection___add(variable[18])(variable[18], variable[19]) /*AbstractArray::add*/;
4315 /* Register variable[19]: Result */
4316 variable[19] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[12] /*ip*/)( variable[12] /*ip*/) /*MMLocalProperty::local_class*/;
4317 /* Ensure var variable[19]: super-string element*/
4318 CALL_abstract_collection___SimpleCollection___add(variable[18])(variable[18], CALL_string___Object___to_s(variable[19])(variable[19]) /*Object::to_s*/) /*AbstractArray::add*/;
4319 /* Register variable[19]: Once String constant */
4320 if (once_value_197 != NIT_NULL) variable[19] = once_value_197;
4321 else {
4322 variable[19] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
4323 once_value_197 = variable[19];
4324 }
4325 /* Register variable[19]: Result */
4326 /* Ensure var variable[19]: super-string element*/
4327 CALL_abstract_collection___SimpleCollection___add(variable[18])(variable[18], variable[19]) /*AbstractArray::add*/;
4328 variable[19] = variable[12] /*ip*/ /* Ensure var: super-string element*/;
4329 CALL_abstract_collection___SimpleCollection___add(variable[18])(variable[18], CALL_string___Object___to_s(variable[19])(variable[19]) /*Object::to_s*/) /*AbstractArray::add*/;
4330 /* Register variable[19]: Once String constant */
4331 if (once_value_198 != NIT_NULL) variable[19] = once_value_198;
4332 else {
4333 variable[19] = NEW_String_string___String___with_native(BOX_NativeString("), got "), TAG_Int(7)) /*new String*/;
4334 once_value_198 = variable[19];
4335 }
4336 /* Register variable[19]: Result */
4337 /* Ensure var variable[19]: super-string element*/
4338 CALL_abstract_collection___SimpleCollection___add(variable[18])(variable[18], variable[19]) /*AbstractArray::add*/;
4339 /* Register variable[19]: Result */
4340 variable[19] = CALL_static_type___MMSignature_____bra( variable[8] /*s*/)( variable[8] /*s*/, variable[17] /*i*/) /*MMSignature::[]*/;
4341 /* Ensure var variable[19]: super-string element*/
4342 CALL_abstract_collection___SimpleCollection___add(variable[18])(variable[18], CALL_string___Object___to_s(variable[19])(variable[19]) /*Object::to_s*/) /*AbstractArray::add*/;
4343 /* Register variable[19]: Once String constant */
4344 if (once_value_199 != NIT_NULL) variable[19] = once_value_199;
4345 else {
4346 variable[19] = NEW_String_string___String___with_native(BOX_NativeString(" in "), TAG_Int(4)) /*new String*/;
4347 once_value_199 = variable[19];
4348 }
4349 /* Register variable[19]: Result */
4350 /* Ensure var variable[19]: super-string element*/
4351 CALL_abstract_collection___SimpleCollection___add(variable[18])(variable[18], variable[19]) /*AbstractArray::add*/;
4352 /* Register variable[19]: Result */
4353 variable[19] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
4354 /* Ensure var variable[19]: super-string element*/
4355 CALL_abstract_collection___SimpleCollection___add(variable[18])(variable[18], CALL_string___Object___to_s(variable[19])(variable[19]) /*Object::to_s*/) /*AbstractArray::add*/;
4356 /* Register variable[19]: Once String constant */
4357 if (once_value_200 != NIT_NULL) variable[19] = once_value_200;
4358 else {
4359 variable[19] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
4360 once_value_200 = variable[19];
4361 }
4362 /* Register variable[19]: Result */
4363 /* Ensure var variable[19]: super-string element*/
4364 CALL_abstract_collection___SimpleCollection___add(variable[18])(variable[18], variable[19]) /*AbstractArray::add*/;
4365 variable[19] = variable[2] /*prop*/ /* Ensure var: super-string element*/;
4366 CALL_abstract_collection___SimpleCollection___add(variable[18])(variable[18], CALL_string___Object___to_s(variable[19])(variable[19]) /*Object::to_s*/) /*AbstractArray::add*/;
4367 /* Register variable[19]: Once String constant */
4368 if (once_value_201 != NIT_NULL) variable[19] = once_value_201;
4369 else {
4370 variable[19] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
4371 once_value_201 = variable[19];
4372 }
4373 /* Register variable[19]: Result */
4374 /* Ensure var variable[19]: super-string element*/
4375 CALL_abstract_collection___SimpleCollection___add(variable[18])(variable[18], variable[19]) /*AbstractArray::add*/;
4376 /* Register variable[18]: Result */
4377 variable[18] = CALL_string___Object___to_s(variable[18])(variable[18]) /*Object::to_s*/;
4378 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[18]) /*AbsSyntaxVisitor::error*/;
4379 }
4380 continue_194: while(0);
4381 CALL_abstract_collection___Iterator___next(variable[15])(variable[15]) /*Iterator::next*/;
4382 }
4383 break_194: while(0);
4384 }
4385 /* Register variable[15]: Local variable */
4386 /* Register variable[16]: Result */
4387 variable[16] = CALL_static_type___MMSignature___return_type( variable[8] /*s*/)( variable[8] /*s*/) /*MMSignature::return_type*/;
4388 variable[15] = variable[16];
4389 /* Register variable[16]: Local variable */
4390 /* Register variable[17]: Result */
4391 variable[17] = CALL_static_type___MMSignature___return_type( variable[13] /*isig*/)( variable[13] /*isig*/) /*MMSignature::return_type*/;
4392 variable[16] = variable[17];
4393 /* Register variable[17]: Result */
4394 variable[17] = TAG_Bool(( variable[15] /*srt*/ == NIT_NULL /*null*/) || (( variable[15] /*srt*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*srt*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*srt*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*srt*/)( variable[15] /*srt*/, NIT_NULL /*null*/) /*Object::==*/)))));
4395 /* Ensure var variable[17]: Left 'and' operand*/
4396 if (UNTAG_Bool(variable[17])) { /* and */
4397 /* Register variable[17]: Result */
4398 variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*isrt*/ == NIT_NULL /*null*/) || (( variable[16] /*isrt*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*isrt*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*isrt*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*isrt*/)( variable[16] /*isrt*/, NIT_NULL /*null*/) /*Object::==*/)))))));
4399 }
4400 /* Register variable[17]: Result */
4401 if (UNTAG_Bool(variable[17])) { /*if*/
4402 variable[17] = NEW_Array_array___Array___with_capacity(TAG_Int(9)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
4403 /* Register variable[18]: Once String constant */
4404 if (once_value_202 != NIT_NULL) variable[18] = once_value_202;
4405 else {
4406 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: The procedure "), TAG_Int(27)) /*new String*/;
4407 once_value_202 = variable[18];
4408 }
4409 /* Register variable[18]: Result */
4410 /* Ensure var variable[18]: super-string element*/
4411 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4412 /* Register variable[18]: Result */
4413 variable[18] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
4414 /* Ensure var variable[18]: super-string element*/
4415 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], CALL_string___Object___to_s(variable[18])(variable[18]) /*Object::to_s*/) /*AbstractArray::add*/;
4416 /* Register variable[18]: Once String constant */
4417 if (once_value_203 != NIT_NULL) variable[18] = once_value_203;
4418 else {
4419 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
4420 once_value_203 = variable[18];
4421 }
4422 /* Register variable[18]: Result */
4423 /* Ensure var variable[18]: super-string element*/
4424 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4425 variable[18] = variable[2] /*prop*/ /* Ensure var: super-string element*/;
4426 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], CALL_string___Object___to_s(variable[18])(variable[18]) /*Object::to_s*/) /*AbstractArray::add*/;
4427 /* Register variable[18]: Once String constant */
4428 if (once_value_204 != NIT_NULL) variable[18] = once_value_204;
4429 else {
4430 variable[18] = NEW_String_string___String___with_native(BOX_NativeString(" redefines the function "), TAG_Int(24)) /*new String*/;
4431 once_value_204 = variable[18];
4432 }
4433 /* Register variable[18]: Result */
4434 /* Ensure var variable[18]: super-string element*/
4435 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4436 /* Register variable[18]: Result */
4437 variable[18] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[12] /*ip*/)( variable[12] /*ip*/) /*MMLocalProperty::local_class*/;
4438 /* Ensure var variable[18]: super-string element*/
4439 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], CALL_string___Object___to_s(variable[18])(variable[18]) /*Object::to_s*/) /*AbstractArray::add*/;
4440 /* Register variable[18]: Once String constant */
4441 if (once_value_205 != NIT_NULL) variable[18] = once_value_205;
4442 else {
4443 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
4444 once_value_205 = variable[18];
4445 }
4446 /* Register variable[18]: Result */
4447 /* Ensure var variable[18]: super-string element*/
4448 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4449 variable[18] = variable[12] /*ip*/ /* Ensure var: super-string element*/;
4450 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], CALL_string___Object___to_s(variable[18])(variable[18]) /*Object::to_s*/) /*AbstractArray::add*/;
4451 /* Register variable[18]: Once String constant */
4452 if (once_value_206 != NIT_NULL) variable[18] = once_value_206;
4453 else {
4454 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
4455 once_value_206 = variable[18];
4456 }
4457 /* Register variable[18]: Result */
4458 /* Ensure var variable[18]: super-string element*/
4459 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4460 /* Register variable[17]: Result */
4461 variable[17] = CALL_string___Object___to_s(variable[17])(variable[17]) /*Object::to_s*/;
4462 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[17]) /*AbsSyntaxVisitor::error*/;
4463 } else { /*if*/
4464 /* Register variable[17]: Result */
4465 variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*srt*/ == NIT_NULL /*null*/) || (( variable[15] /*srt*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*srt*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*srt*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*srt*/)( variable[15] /*srt*/, NIT_NULL /*null*/) /*Object::==*/)))))));
4466 /* Ensure var variable[17]: Left 'and' operand*/
4467 if (UNTAG_Bool(variable[17])) { /* and */
4468 /* Register variable[17]: Result */
4469 variable[17] = TAG_Bool(( variable[16] /*isrt*/ == NIT_NULL /*null*/) || (( variable[16] /*isrt*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*isrt*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*isrt*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*isrt*/)( variable[16] /*isrt*/, NIT_NULL /*null*/) /*Object::==*/)))));
4470 }
4471 /* Register variable[17]: Result */
4472 if (UNTAG_Bool(variable[17])) { /*if*/
4473 variable[17] = NEW_Array_array___Array___with_capacity(TAG_Int(9)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
4474 /* Register variable[18]: Once String constant */
4475 if (once_value_207 != NIT_NULL) variable[18] = once_value_207;
4476 else {
4477 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: The function "), TAG_Int(26)) /*new String*/;
4478 once_value_207 = variable[18];
4479 }
4480 /* Register variable[18]: Result */
4481 /* Ensure var variable[18]: super-string element*/
4482 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4483 /* Register variable[18]: Result */
4484 variable[18] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
4485 /* Ensure var variable[18]: super-string element*/
4486 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], CALL_string___Object___to_s(variable[18])(variable[18]) /*Object::to_s*/) /*AbstractArray::add*/;
4487 /* Register variable[18]: Once String constant */
4488 if (once_value_208 != NIT_NULL) variable[18] = once_value_208;
4489 else {
4490 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
4491 once_value_208 = variable[18];
4492 }
4493 /* Register variable[18]: Result */
4494 /* Ensure var variable[18]: super-string element*/
4495 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4496 variable[18] = variable[2] /*prop*/ /* Ensure var: super-string element*/;
4497 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], CALL_string___Object___to_s(variable[18])(variable[18]) /*Object::to_s*/) /*AbstractArray::add*/;
4498 /* Register variable[18]: Once String constant */
4499 if (once_value_209 != NIT_NULL) variable[18] = once_value_209;
4500 else {
4501 variable[18] = NEW_String_string___String___with_native(BOX_NativeString(" redefines the procedure "), TAG_Int(25)) /*new String*/;
4502 once_value_209 = variable[18];
4503 }
4504 /* Register variable[18]: Result */
4505 /* Ensure var variable[18]: super-string element*/
4506 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4507 /* Register variable[18]: Result */
4508 variable[18] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[12] /*ip*/)( variable[12] /*ip*/) /*MMLocalProperty::local_class*/;
4509 /* Ensure var variable[18]: super-string element*/
4510 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], CALL_string___Object___to_s(variable[18])(variable[18]) /*Object::to_s*/) /*AbstractArray::add*/;
4511 /* Register variable[18]: Once String constant */
4512 if (once_value_210 != NIT_NULL) variable[18] = once_value_210;
4513 else {
4514 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
4515 once_value_210 = variable[18];
4516 }
4517 /* Register variable[18]: Result */
4518 /* Ensure var variable[18]: super-string element*/
4519 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4520 variable[18] = variable[12] /*ip*/ /* Ensure var: super-string element*/;
4521 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], CALL_string___Object___to_s(variable[18])(variable[18]) /*Object::to_s*/) /*AbstractArray::add*/;
4522 /* Register variable[18]: Once String constant */
4523 if (once_value_211 != NIT_NULL) variable[18] = once_value_211;
4524 else {
4525 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
4526 once_value_211 = variable[18];
4527 }
4528 /* Register variable[18]: Result */
4529 /* Ensure var variable[18]: super-string element*/
4530 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4531 /* Register variable[17]: Result */
4532 variable[17] = CALL_string___Object___to_s(variable[17])(variable[17]) /*Object::to_s*/;
4533 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[17]) /*AbsSyntaxVisitor::error*/;
4534 } else { /*if*/
4535 /* Register variable[17]: Result */
4536 variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*srt*/ == NIT_NULL /*null*/) || (( variable[15] /*srt*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*srt*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*srt*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*srt*/)( variable[15] /*srt*/, NIT_NULL /*null*/) /*Object::==*/)))))));
4537 /* Ensure var variable[17]: Left 'and' operand*/
4538 if (UNTAG_Bool(variable[17])) { /* and */
4539 /* Register variable[17]: Result */
4540 variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*isrt*/ == NIT_NULL /*null*/) || (( variable[16] /*isrt*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*isrt*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*isrt*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*isrt*/)( variable[16] /*isrt*/, NIT_NULL /*null*/) /*Object::==*/)))))));
4541 }
4542 /* Register variable[17]: Result */
4543 /* Ensure var variable[17]: Left 'and' operand*/
4544 if (UNTAG_Bool(variable[17])) { /* and */
4545 /* Register variable[17]: Result */
4546 variable[17] = CALL_static_type___MMType_____l( variable[15] /*srt*/)( variable[15] /*srt*/, variable[16] /*isrt*/) /*MMType::<*/;
4547 variable[17] = TAG_Bool(!UNTAG_Bool(variable[17]));
4548 }
4549 /* Register variable[17]: Result */
4550 if (UNTAG_Bool(variable[17])) { /*if*/
4551 variable[17] = NEW_Array_array___Array___with_capacity(TAG_Int(13)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
4552 /* Register variable[18]: Once String constant */
4553 if (once_value_212 != NIT_NULL) variable[18] = once_value_212;
4554 else {
4555 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: Expected "), TAG_Int(22)) /*new String*/;
4556 once_value_212 = variable[18];
4557 }
4558 /* Register variable[18]: Result */
4559 /* Ensure var variable[18]: super-string element*/
4560 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4561 variable[18] = variable[16] /*isrt*/ /* Ensure var: super-string element*/;
4562 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], CALL_string___Object___to_s(variable[18])(variable[18]) /*Object::to_s*/) /*AbstractArray::add*/;
4563 /* Register variable[18]: Once String constant */
4564 if (once_value_213 != NIT_NULL) variable[18] = once_value_213;
4565 else {
4566 variable[18] = NEW_String_string___String___with_native(BOX_NativeString(" (as in "), TAG_Int(8)) /*new String*/;
4567 once_value_213 = variable[18];
4568 }
4569 /* Register variable[18]: Result */
4570 /* Ensure var variable[18]: super-string element*/
4571 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4572 /* Register variable[18]: Result */
4573 variable[18] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[12] /*ip*/)( variable[12] /*ip*/) /*MMLocalProperty::local_class*/;
4574 /* Ensure var variable[18]: super-string element*/
4575 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], CALL_string___Object___to_s(variable[18])(variable[18]) /*Object::to_s*/) /*AbstractArray::add*/;
4576 /* Register variable[18]: Once String constant */
4577 if (once_value_214 != NIT_NULL) variable[18] = once_value_214;
4578 else {
4579 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
4580 once_value_214 = variable[18];
4581 }
4582 /* Register variable[18]: Result */
4583 /* Ensure var variable[18]: super-string element*/
4584 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4585 variable[18] = variable[12] /*ip*/ /* Ensure var: super-string element*/;
4586 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], CALL_string___Object___to_s(variable[18])(variable[18]) /*Object::to_s*/) /*AbstractArray::add*/;
4587 /* Register variable[18]: Once String constant */
4588 if (once_value_215 != NIT_NULL) variable[18] = once_value_215;
4589 else {
4590 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("), got "), TAG_Int(7)) /*new String*/;
4591 once_value_215 = variable[18];
4592 }
4593 /* Register variable[18]: Result */
4594 /* Ensure var variable[18]: super-string element*/
4595 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4596 variable[18] = variable[15] /*srt*/ /* Ensure var: super-string element*/;
4597 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], CALL_string___Object___to_s(variable[18])(variable[18]) /*Object::to_s*/) /*AbstractArray::add*/;
4598 /* Register variable[18]: Once String constant */
4599 if (once_value_216 != NIT_NULL) variable[18] = once_value_216;
4600 else {
4601 variable[18] = NEW_String_string___String___with_native(BOX_NativeString(" in "), TAG_Int(4)) /*new String*/;
4602 once_value_216 = variable[18];
4603 }
4604 /* Register variable[18]: Result */
4605 /* Ensure var variable[18]: super-string element*/
4606 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4607 /* Register variable[18]: Result */
4608 variable[18] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
4609 /* Ensure var variable[18]: super-string element*/
4610 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], CALL_string___Object___to_s(variable[18])(variable[18]) /*Object::to_s*/) /*AbstractArray::add*/;
4611 /* Register variable[18]: Once String constant */
4612 if (once_value_217 != NIT_NULL) variable[18] = once_value_217;
4613 else {
4614 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
4615 once_value_217 = variable[18];
4616 }
4617 /* Register variable[18]: Result */
4618 /* Ensure var variable[18]: super-string element*/
4619 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4620 variable[18] = variable[2] /*prop*/ /* Ensure var: super-string element*/;
4621 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], CALL_string___Object___to_s(variable[18])(variable[18]) /*Object::to_s*/) /*AbstractArray::add*/;
4622 /* Register variable[18]: Once String constant */
4623 if (once_value_218 != NIT_NULL) variable[18] = once_value_218;
4624 else {
4625 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
4626 once_value_218 = variable[18];
4627 }
4628 /* Register variable[18]: Result */
4629 /* Ensure var variable[18]: super-string element*/
4630 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4631 /* Register variable[17]: Result */
4632 variable[17] = CALL_string___Object___to_s(variable[17])(variable[17]) /*Object::to_s*/;
4633 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[17]) /*AbsSyntaxVisitor::error*/;
4634 } else { /*if*/
4635 /* Register variable[17]: Result */
4636 variable[17] = CALL_static_type___MMSignature_____l( variable[8] /*s*/)( variable[8] /*s*/, variable[13] /*isig*/) /*MMSignature::<*/;
4637 variable[17] = TAG_Bool(!UNTAG_Bool(variable[17])) /* Ensure var: Left 'and' operand*/;
4638 if (UNTAG_Bool(variable[17])) { /* and */
4639 /* Register variable[17]: Result */
4640 variable[17] = CALL_syntax_base___AbsSyntaxVisitor___tc( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::tc*/;
4641 /* Register variable[17]: Result */
4642 variable[17] = CALL_mmloader___ToolContext___error_count(variable[17])(variable[17]) /*ToolContext::error_count*/;
4643 /* Register variable[17]: Result */
4644 variable[17] = TAG_Bool(( variable[14] /*nberr*/)==(variable[17]));
4645 }
4646 /* Register variable[17]: Result */
4647 if (UNTAG_Bool(variable[17])) { /*if*/
4648 variable[17] = NEW_Array_array___Array___with_capacity(TAG_Int(9)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
4649 /* Register variable[18]: Once String constant */
4650 if (once_value_219 != NIT_NULL) variable[18] = once_value_219;
4651 else {
4652 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: Incompatible redefinition of "), TAG_Int(42)) /*new String*/;
4653 once_value_219 = variable[18];
4654 }
4655 /* Register variable[18]: Result */
4656 /* Ensure var variable[18]: super-string element*/
4657 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4658 /* Register variable[18]: Result */
4659 variable[18] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[12] /*ip*/)( variable[12] /*ip*/) /*MMLocalProperty::local_class*/;
4660 /* Ensure var variable[18]: super-string element*/
4661 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], CALL_string___Object___to_s(variable[18])(variable[18]) /*Object::to_s*/) /*AbstractArray::add*/;
4662 /* Register variable[18]: Once String constant */
4663 if (once_value_220 != NIT_NULL) variable[18] = once_value_220;
4664 else {
4665 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
4666 once_value_220 = variable[18];
4667 }
4668 /* Register variable[18]: Result */
4669 /* Ensure var variable[18]: super-string element*/
4670 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4671 variable[18] = variable[12] /*ip*/ /* Ensure var: super-string element*/;
4672 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], CALL_string___Object___to_s(variable[18])(variable[18]) /*Object::to_s*/) /*AbstractArray::add*/;
4673 /* Register variable[18]: Once String constant */
4674 if (once_value_221 != NIT_NULL) variable[18] = once_value_221;
4675 else {
4676 variable[18] = NEW_String_string___String___with_native(BOX_NativeString(" with "), TAG_Int(6)) /*new String*/;
4677 once_value_221 = variable[18];
4678 }
4679 /* Register variable[18]: Result */
4680 /* Ensure var variable[18]: super-string element*/
4681 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4682 /* Register variable[18]: Result */
4683 variable[18] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
4684 /* Ensure var variable[18]: super-string element*/
4685 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], CALL_string___Object___to_s(variable[18])(variable[18]) /*Object::to_s*/) /*AbstractArray::add*/;
4686 /* Register variable[18]: Once String constant */
4687 if (once_value_222 != NIT_NULL) variable[18] = once_value_222;
4688 else {
4689 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
4690 once_value_222 = variable[18];
4691 }
4692 /* Register variable[18]: Result */
4693 /* Ensure var variable[18]: super-string element*/
4694 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4695 variable[18] = variable[2] /*prop*/ /* Ensure var: super-string element*/;
4696 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], CALL_string___Object___to_s(variable[18])(variable[18]) /*Object::to_s*/) /*AbstractArray::add*/;
4697 /* Register variable[18]: Once String constant */
4698 if (once_value_223 != NIT_NULL) variable[18] = once_value_223;
4699 else {
4700 variable[18] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
4701 once_value_223 = variable[18];
4702 }
4703 /* Register variable[18]: Result */
4704 /* Ensure var variable[18]: super-string element*/
4705 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4706 /* Register variable[17]: Result */
4707 variable[17] = CALL_string___Object___to_s(variable[17])(variable[17]) /*Object::to_s*/;
4708 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[17]) /*AbsSyntaxVisitor::error*/;
4709 } else { /*if*/
4710 /* Register variable[17]: Result */
4711 variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*srt*/ == NIT_NULL /*null*/) || (( variable[15] /*srt*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*srt*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*srt*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*srt*/)( variable[15] /*srt*/, NIT_NULL /*null*/) /*Object::==*/)))))));
4712 /* Ensure var variable[17]: Left 'and' operand*/
4713 if (UNTAG_Bool(variable[17])) { /* and */
4714 /* Register variable[17]: Result */
4715 variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*isrt*/ == NIT_NULL /*null*/) || (( variable[16] /*isrt*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*isrt*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*isrt*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*isrt*/)( variable[16] /*isrt*/, NIT_NULL /*null*/) /*Object::==*/)))))));
4716 }
4717 /* Register variable[17]: Result */
4718 /* Ensure var variable[17]: Left 'and' operand*/
4719 if (UNTAG_Bool(variable[17])) { /* and */
4720 /* Register variable[17]: Result */
4721 variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*srt*/ == variable[16] /*isrt*/) || (( variable[15] /*srt*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*srt*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*srt*/, variable[16] /*isrt*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*srt*/)( variable[15] /*srt*/, variable[16] /*isrt*/) /*Object::==*/)))))));
4722 }
4723 /* Register variable[17]: Result */
4724 /* Ensure var variable[17]: Left 'and' operand*/
4725 if (UNTAG_Bool(variable[17])) { /* and */
4726 /* Register variable[17]: Result */
4727 variable[17] = TAG_Bool(( variable[2] /*prop*/==NIT_NULL) || VAL_ISA( variable[2] /*prop*/, COLOR_MMAttribute, ID_MMAttribute)) /*cast MMAttribute*/;
4728 }
4729 /* Register variable[17]: Result */
4730 if (UNTAG_Bool(variable[17])) { /*if*/
4731 variable[17] = NEW_Array_array___Array___with_capacity(TAG_Int(13)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
4732 /* Register variable[18]: Once String constant */
4733 if (once_value_224 != NIT_NULL) variable[18] = once_value_224;
4734 else {
4735 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("Redef warning: Expected "), TAG_Int(24)) /*new String*/;
4736 once_value_224 = variable[18];
4737 }
4738 /* Register variable[18]: Result */
4739 /* Ensure var variable[18]: super-string element*/
4740 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4741 variable[18] = variable[16] /*isrt*/ /* Ensure var: super-string element*/;
4742 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], CALL_string___Object___to_s(variable[18])(variable[18]) /*Object::to_s*/) /*AbstractArray::add*/;
4743 /* Register variable[18]: Once String constant */
4744 if (once_value_225 != NIT_NULL) variable[18] = once_value_225;
4745 else {
4746 variable[18] = NEW_String_string___String___with_native(BOX_NativeString(" (as in "), TAG_Int(8)) /*new String*/;
4747 once_value_225 = variable[18];
4748 }
4749 /* Register variable[18]: Result */
4750 /* Ensure var variable[18]: super-string element*/
4751 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4752 /* Register variable[18]: Result */
4753 variable[18] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[12] /*ip*/)( variable[12] /*ip*/) /*MMLocalProperty::local_class*/;
4754 /* Ensure var variable[18]: super-string element*/
4755 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], CALL_string___Object___to_s(variable[18])(variable[18]) /*Object::to_s*/) /*AbstractArray::add*/;
4756 /* Register variable[18]: Once String constant */
4757 if (once_value_226 != NIT_NULL) variable[18] = once_value_226;
4758 else {
4759 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
4760 once_value_226 = variable[18];
4761 }
4762 /* Register variable[18]: Result */
4763 /* Ensure var variable[18]: super-string element*/
4764 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4765 variable[18] = variable[12] /*ip*/ /* Ensure var: super-string element*/;
4766 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], CALL_string___Object___to_s(variable[18])(variable[18]) /*Object::to_s*/) /*AbstractArray::add*/;
4767 /* Register variable[18]: Once String constant */
4768 if (once_value_227 != NIT_NULL) variable[18] = once_value_227;
4769 else {
4770 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("), got "), TAG_Int(7)) /*new String*/;
4771 once_value_227 = variable[18];
4772 }
4773 /* Register variable[18]: Result */
4774 /* Ensure var variable[18]: super-string element*/
4775 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4776 variable[18] = variable[15] /*srt*/ /* Ensure var: super-string element*/;
4777 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], CALL_string___Object___to_s(variable[18])(variable[18]) /*Object::to_s*/) /*AbstractArray::add*/;
4778 /* Register variable[18]: Once String constant */
4779 if (once_value_228 != NIT_NULL) variable[18] = once_value_228;
4780 else {
4781 variable[18] = NEW_String_string___String___with_native(BOX_NativeString(" in "), TAG_Int(4)) /*new String*/;
4782 once_value_228 = variable[18];
4783 }
4784 /* Register variable[18]: Result */
4785 /* Ensure var variable[18]: super-string element*/
4786 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4787 /* Register variable[18]: Result */
4788 variable[18] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
4789 /* Ensure var variable[18]: super-string element*/
4790 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], CALL_string___Object___to_s(variable[18])(variable[18]) /*Object::to_s*/) /*AbstractArray::add*/;
4791 /* Register variable[18]: Once String constant */
4792 if (once_value_229 != NIT_NULL) variable[18] = once_value_229;
4793 else {
4794 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
4795 once_value_229 = variable[18];
4796 }
4797 /* Register variable[18]: Result */
4798 /* Ensure var variable[18]: super-string element*/
4799 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4800 variable[18] = variable[2] /*prop*/ /* Ensure var: super-string element*/;
4801 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], CALL_string___Object___to_s(variable[18])(variable[18]) /*Object::to_s*/) /*AbstractArray::add*/;
4802 /* Register variable[18]: Once String constant */
4803 if (once_value_230 != NIT_NULL) variable[18] = once_value_230;
4804 else {
4805 variable[18] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
4806 once_value_230 = variable[18];
4807 }
4808 /* Register variable[18]: Result */
4809 /* Ensure var variable[18]: super-string element*/
4810 CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17], variable[18]) /*AbstractArray::add*/;
4811 /* Register variable[17]: Result */
4812 variable[17] = CALL_string___Object___to_s(variable[17])(variable[17]) /*Object::to_s*/;
4813 CALL_syntax_base___AbsSyntaxVisitor___warning( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[17]) /*AbsSyntaxVisitor::warning*/;
4814 }
4815 }
4816 }
4817 }
4818 }
4819 continue_174: while(0);
4820 CALL_abstract_collection___Iterator___next(variable[9])(variable[9]) /*ArrayIterator::next*/;
4821 }
4822 break_174: while(0);
4823 /* Register variable[9]: Result */
4824 variable[9] = TAG_Bool(( variable[4] /*visibility_level*/)!=( TAG_Int(1)));
4825 /* Ensure var variable[9]: Left 'and' operand*/
4826 if (UNTAG_Bool(variable[9])) { /* and */
4827 /* Register variable[9]: Result */
4828 variable[9] = CALL_abstractmetamodel___MMGlobalProperty___visibility_level( variable[7] /*glob*/)( variable[7] /*glob*/) /*MMGlobalProperty::visibility_level*/;
4829 /* Register variable[9]: Result */
4830 variable[9] = TAG_Bool((variable[9])!=( variable[4] /*visibility_level*/));
4831 }
4832 /* Register variable[9]: Result */
4833 if (UNTAG_Bool(variable[9])) { /*if*/
4834 variable[9] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
4835 /* Register variable[10]: Once String constant */
4836 if (once_value_231 != NIT_NULL) variable[10] = once_value_231;
4837 else {
4838 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("Redef error: "), TAG_Int(13)) /*new String*/;
4839 once_value_231 = variable[10];
4840 }
4841 /* Register variable[10]: Result */
4842 /* Ensure var variable[10]: super-string element*/
4843 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
4844 /* Register variable[10]: Result */
4845 variable[10] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::local_class*/;
4846 /* Ensure var variable[10]: super-string element*/
4847 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/) /*AbstractArray::add*/;
4848 /* Register variable[10]: Once String constant */
4849 if (once_value_232 != NIT_NULL) variable[10] = once_value_232;
4850 else {
4851 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
4852 once_value_232 = variable[10];
4853 }
4854 /* Register variable[10]: Result */
4855 /* Ensure var variable[10]: super-string element*/
4856 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
4857 variable[10] = variable[2] /*prop*/ /* Ensure var: super-string element*/;
4858 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/) /*AbstractArray::add*/;
4859 /* Register variable[10]: Once String constant */
4860 if (once_value_233 != NIT_NULL) variable[10] = once_value_233;
4861 else {
4862 variable[10] = NEW_String_string___String___with_native(BOX_NativeString(" redefinition cannot change visibility."), TAG_Int(39)) /*new String*/;
4863 once_value_233 = variable[10];
4864 }
4865 /* Register variable[10]: Result */
4866 /* Ensure var variable[10]: super-string element*/
4867 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
4868 /* Register variable[9]: Result */
4869 variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
4870 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[9]) /*AbsSyntaxVisitor::error*/;
4871 }
4872 /* Register variable[9]: Result */
4873 variable[9] = CALL_syntax_base___AbsSyntaxVisitor___module( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::module*/;
4874 CALL_syntax_base___MMGlobalProperty___check_visibility( variable[7] /*glob*/)( variable[7] /*glob*/, variable[1] /*v*/, variable[0], variable[9], TAG_Bool(true)) /*MMGlobalProperty::check_visibility*/;
4875 return_label164: while(false);
4876 tracehead = trace.prev;
4877 return;
4878 }
4879 void mmbuilder___AAttrPropdef___accept_abs_syntax_visitor(val_t self, val_t param0) {
4880 struct trace_t trace = {NULL, NULL, 962, LOCATE_mmbuilder___AAttrPropdef___accept_abs_syntax_visitor};
4881 val_t variable[4];
4882 struct WBT_ **closurevariable = NULL;
4883 trace.prev = tracehead; tracehead = &trace;
4884 trace.file = LOCATE_mmbuilder;
4885 /* Register variable[0]: Local variable */
4886 variable[0] = self;
4887 /* Register variable[1]: Local variable */
4888 variable[1] = param0;
4889 /* Register variable[2]: Method return value and escape marker */
4890 /* Register variable[3]: Result */
4891 variable[3] = CALL_syntax_base___AAttrPropdef___prop(variable[0])(variable[0]) /*AAttrPropdef::prop*/;
4892 CALL_syntax_base___AbsSyntaxVisitor___local_property__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*AbsSyntaxVisitor::local_property=*/;
4893 CALL_SUPER_mmbuilder___AAttrPropdef___accept_abs_syntax_visitor(variable[0])(variable[0], variable[1]) /*super AAttrPropdef::accept_abs_syntax_visitor*/;
4894 CALL_syntax_base___AbsSyntaxVisitor___local_property__eq( variable[1] /*v*/)( variable[1] /*v*/, NIT_NULL /*null*/) /*AbsSyntaxVisitor::local_property=*/;
4895 return_label234: while(false);
4896 tracehead = trace.prev;
4897 return;
4898 }
4899 val_t mmbuilder___AAttrPropdef___prop(val_t self) {
4900 struct trace_t trace = {NULL, NULL, 913, LOCATE_mmbuilder___AAttrPropdef___prop};
4901 val_t *variable = NULL;
4902 struct WBT_ **closurevariable = NULL;
4903 trace.prev = tracehead; tracehead = &trace;
4904 trace.file = LOCATE_mmbuilder;
4905 tracehead = trace.prev;
4906 return ATTR_mmbuilder___AAttrPropdef____prop( self) /*AAttrPropdef::_prop*/;
4907 }
4908 val_t mmbuilder___AAttrPropdef___readmethod(val_t self) {
4909 struct trace_t trace = {NULL, NULL, 911, LOCATE_mmbuilder___AAttrPropdef___readmethod};
4910 val_t *variable = NULL;
4911 struct WBT_ **closurevariable = NULL;
4912 trace.prev = tracehead; tracehead = &trace;
4913 trace.file = LOCATE_mmbuilder;
4914 tracehead = trace.prev;
4915 return ATTR_mmbuilder___AAttrPropdef____readmethod( self) /*AAttrPropdef::_readmethod*/;
4916 }
4917 val_t mmbuilder___AAttrPropdef___writemethod(val_t self) {
4918 struct trace_t trace = {NULL, NULL, 912, LOCATE_mmbuilder___AAttrPropdef___writemethod};
4919 val_t *variable = NULL;
4920 struct WBT_ **closurevariable = NULL;
4921 trace.prev = tracehead; tracehead = &trace;
4922 trace.file = LOCATE_mmbuilder;
4923 tracehead = trace.prev;
4924 return ATTR_mmbuilder___AAttrPropdef____writemethod( self) /*AAttrPropdef::_writemethod*/;
4925 }
4926 void mmbuilder___AAttrPropdef___accept_property_builder(val_t self, val_t param0) {
4927 struct trace_t trace = {NULL, NULL, 915, LOCATE_mmbuilder___AAttrPropdef___accept_property_builder};
4928 static val_t once_value_236 = NIT_NULL; /* Once value for string variable[6]*/
4929 val_t variable[7];
4930 struct WBT_ **closurevariable = NULL;
4931 trace.prev = tracehead; tracehead = &trace;
4932 trace.file = LOCATE_mmbuilder;
4933 /* Register variable[0]: Local variable */
4934 variable[0] = self;
4935 /* Register variable[1]: Local variable */
4936 variable[1] = param0;
4937 /* Register variable[2]: Method return value and escape marker */
4938 CALL_SUPER_mmbuilder___AAttrPropdef___accept_property_builder(variable[0])(variable[0], variable[1]) /*super AAttrPropdef::accept_property_builder*/;
4939 /* Register variable[3]: Local variable */
4940 /* Register variable[4]: Result */
4941 variable[4] = CALL_parser_nodes___AAttrPropdef___n_id(variable[0])(variable[0]) /*AAttrPropdef::n_id*/;
4942 /* Register variable[4]: Result */
4943 variable[4] = CALL_syntax_base___Token___to_symbol(variable[4])(variable[4]) /*Token::to_symbol*/;
4944 variable[3] = variable[4];
4945 /* Register variable[4]: Local variable */
4946 /* Register variable[5]: Result */
4947 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
4948 /* Register variable[5]: Result */
4949 variable[5] = NEW_MMSrcAttribute_syntax_base___MMSrcAttribute___init( variable[3] /*name*/, variable[5], variable[0]) /*new MMSrcAttribute*/;
4950 variable[4] = variable[5];
4951 ATTR_mmbuilder___AAttrPropdef____prop(variable[0]) /*AAttrPropdef::_prop*/ = variable[4] /*prop*/;
4952 /* Register variable[5]: Result */
4953 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
4954 CALL_mmbuilder___MMSrcLocalClass___add_src_local_property(variable[5])(variable[5], variable[1] /*v*/, variable[4] /*prop*/) /*MMSrcLocalClass::add_src_local_property*/;
4955 /* Register variable[5]: Result */
4956 variable[5] = CALL_parser_nodes___AAttrPropdef___n_readable(variable[0])(variable[0]) /*AAttrPropdef::n_readable*/;
4957 /* Register variable[5]: Result */
4958 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::==*/)))))));
4959 if (UNTAG_Bool(variable[5])) { /*if*/
4960 /* Register variable[5]: Result */
4961 variable[5] = CALL_parser_nodes___AAttrPropdef___n_id(variable[0])(variable[0]) /*AAttrPropdef::n_id*/;
4962 /* Register variable[5]: Result */
4963 variable[5] = CALL_lexer___Token___text(variable[5])(variable[5]) /*Token::text*/;
4964 /* Register variable[5]: Result */
4965 variable[5] = CALL_string___AbstractString___substring_from(variable[5])(variable[5], TAG_Int(1)) /*AbstractString::substring_from*/;
4966 /* Register variable[5]: Result */
4967 variable[5] = CALL_symbol___String___to_symbol(variable[5])(variable[5]) /*String::to_symbol*/;
4968 variable[3] = variable[5] /*name=*/;
4969 /* Register variable[5]: Result */
4970 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
4971 /* Register variable[5]: Result */
4972 variable[5] = NEW_MMReadImplementationMethod_syntax_base___MMReadImplementationMethod___init( variable[3] /*name*/, variable[5], variable[0]) /*new MMReadImplementationMethod*/;
4973 ATTR_mmbuilder___AAttrPropdef____readmethod(variable[0]) /*AAttrPropdef::_readmethod*/ = variable[5];
4974 /* Register variable[5]: Result */
4975 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
4976 /* Register variable[6]: Result */
4977 variable[6] = ATTR_mmbuilder___AAttrPropdef____readmethod(variable[0]) /*AAttrPropdef::_readmethod*/;
4978 CALL_mmbuilder___MMSrcLocalClass___add_src_local_property(variable[5])(variable[5], variable[1] /*v*/, variable[6]) /*MMSrcLocalClass::add_src_local_property*/;
4979 }
4980 /* Register variable[5]: Result */
4981 variable[5] = CALL_parser_nodes___AAttrPropdef___n_writable(variable[0])(variable[0]) /*AAttrPropdef::n_writable*/;
4982 /* Register variable[5]: Result */
4983 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::==*/)))))));
4984 if (UNTAG_Bool(variable[5])) { /*if*/
4985 /* Register variable[5]: Result */
4986 variable[5] = CALL_parser_nodes___AAttrPropdef___n_id(variable[0])(variable[0]) /*AAttrPropdef::n_id*/;
4987 /* Register variable[5]: Result */
4988 variable[5] = CALL_lexer___Token___text(variable[5])(variable[5]) /*Token::text*/;
4989 /* Register variable[5]: Result */
4990 variable[5] = CALL_string___AbstractString___substring_from(variable[5])(variable[5], TAG_Int(1)) /*AbstractString::substring_from*/;
4991 /* Register variable[6]: Once String constant */
4992 if (once_value_236 != NIT_NULL) variable[6] = once_value_236;
4993 else {
4994 variable[6] = NEW_String_string___String___with_native(BOX_NativeString("="), TAG_Int(1)) /*new String*/;
4995 once_value_236 = variable[6];
4996 }
4997 /* Register variable[6]: Result */
4998 /* Register variable[5]: Result */
4999 variable[5] = CALL_string___String_____plus(variable[5])(variable[5], variable[6]) /*String::+*/;
5000 /* Register variable[5]: Result */
5001 variable[5] = CALL_symbol___String___to_symbol(variable[5])(variable[5]) /*String::to_symbol*/;
5002 variable[3] = variable[5] /*name=*/;
5003 /* Register variable[5]: Result */
5004 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
5005 /* Register variable[5]: Result */
5006 variable[5] = NEW_MMWriteImplementationMethod_syntax_base___MMWriteImplementationMethod___init( variable[3] /*name*/, variable[5], variable[0]) /*new MMWriteImplementationMethod*/;
5007 ATTR_mmbuilder___AAttrPropdef____writemethod(variable[0]) /*AAttrPropdef::_writemethod*/ = variable[5];
5008 /* Register variable[5]: Result */
5009 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
5010 /* Register variable[6]: Result */
5011 variable[6] = ATTR_mmbuilder___AAttrPropdef____writemethod(variable[0]) /*AAttrPropdef::_writemethod*/;
5012 CALL_mmbuilder___MMSrcLocalClass___add_src_local_property(variable[5])(variable[5], variable[1] /*v*/, variable[6]) /*MMSrcLocalClass::add_src_local_property*/;
5013 }
5014 return_label235: while(false);
5015 tracehead = trace.prev;
5016 return;
5017 }
5018 void mmbuilder___AAttrPropdef___accept_property_verifier(val_t self, val_t param0) {
5019 struct trace_t trace = {NULL, NULL, 935, LOCATE_mmbuilder___AAttrPropdef___accept_property_verifier};
5020 static val_t once_value_238 = NIT_NULL; /* Once value for string variable[5]*/
5021 static val_t once_value_239 = NIT_NULL; /* Once value for string variable[5]*/
5022 static val_t once_value_240 = NIT_NULL; /* Once value for string variable[5]*/
5023 val_t variable[9];
5024 struct WBT_ **closurevariable = NULL;
5025 trace.prev = tracehead; tracehead = &trace;
5026 trace.file = LOCATE_mmbuilder;
5027 /* Register variable[0]: Local variable */
5028 variable[0] = self;
5029 /* Register variable[1]: Local variable */
5030 variable[1] = param0;
5031 /* Register variable[2]: Method return value and escape marker */
5032 CALL_SUPER_mmbuilder___AAttrPropdef___accept_property_verifier(variable[0])(variable[0], variable[1]) /*super AAttrPropdef::accept_property_verifier*/;
5033 /* Register variable[3]: Local variable */
5034 /*variable[3] is variable t*/
5035 /* Register variable[4]: Result */
5036 variable[4] = CALL_parser_nodes___AAttrPropdef___n_type(variable[0])(variable[0]) /*AAttrPropdef::n_type*/;
5037 /* Register variable[4]: Result */
5038 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::==*/)))))));
5039 if (UNTAG_Bool(variable[4])) { /*if*/
5040 /* Register variable[4]: Result */
5041 variable[4] = CALL_parser_nodes___AAttrPropdef___n_type(variable[0])(variable[0]) /*AAttrPropdef::n_type*/;
5042 /* Register variable[4]: Result */
5043 variable[4] = CALL_syntax_base___PType___get_stype(variable[4])(variable[4], variable[1] /*v*/) /*PType::get_stype*/;
5044 variable[3] = variable[4] /*t=*/;
5045 } else { /*if*/
5046 variable[4] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
5047 /* Register variable[5]: Once String constant */
5048 if (once_value_238 != NIT_NULL) variable[5] = once_value_238;
5049 else {
5050 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Not yet implemented: Attribute definition "), TAG_Int(42)) /*new String*/;
5051 once_value_238 = variable[5];
5052 }
5053 /* Register variable[5]: Result */
5054 /* Ensure var variable[5]: super-string element*/
5055 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
5056 /* Register variable[5]: Result */
5057 variable[5] = ATTR_mmbuilder___AAttrPropdef____prop(variable[0]) /*AAttrPropdef::_prop*/;
5058 /* Register variable[5]: Result */
5059 variable[5] = CALL_abstractmetamodel___MMLocalProperty___local_class(variable[5])(variable[5]) /*MMLocalProperty::local_class*/;
5060 /* Ensure var variable[5]: super-string element*/
5061 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/) /*AbstractArray::add*/;
5062 /* Register variable[5]: Once String constant */
5063 if (once_value_239 != NIT_NULL) variable[5] = once_value_239;
5064 else {
5065 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
5066 once_value_239 = variable[5];
5067 }
5068 /* Register variable[5]: Result */
5069 /* Ensure var variable[5]: super-string element*/
5070 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
5071 /* Register variable[5]: Result */
5072 variable[5] = ATTR_mmbuilder___AAttrPropdef____prop(variable[0]) /*AAttrPropdef::_prop*/;
5073 /* Ensure var variable[5]: super-string element*/
5074 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/) /*AbstractArray::add*/;
5075 /* Register variable[5]: Once String constant */
5076 if (once_value_240 != NIT_NULL) variable[5] = once_value_240;
5077 else {
5078 variable[5] = NEW_String_string___String___with_native(BOX_NativeString(" requires an explicit type."), TAG_Int(27)) /*new String*/;
5079 once_value_240 = variable[5];
5080 }
5081 /* Register variable[5]: Result */
5082 /* Ensure var variable[5]: super-string element*/
5083 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
5084 /* Register variable[4]: Result */
5085 variable[4] = CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/;
5086 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[4]) /*AbsSyntaxVisitor::error*/;
5087 goto return_label237;
5088 }
5089 /* Register variable[4]: Local variable */
5090 /* Register variable[5]: Result */
5091 variable[5] = NEW_Array_array___Array___init() /*new Array[MMType]*/;
5092 /* Register variable[6]: Result */
5093 variable[6] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
5094 /* Register variable[6]: Result */
5095 variable[6] = CALL_static_type___MMLocalClass___get_type(variable[6])(variable[6]) /*MMLocalClass::get_type*/;
5096 /* Register variable[5]: Result */
5097 variable[5] = NEW_MMSignature_static_type___MMSignature___init(variable[5], variable[3] /*t*/, variable[6]) /*new MMSignature*/;
5098 variable[4] = variable[5];
5099 /* Register variable[5]: Result */
5100 variable[5] = ATTR_mmbuilder___AAttrPropdef____prop(variable[0]) /*AAttrPropdef::_prop*/;
5101 CALL_static_type___MMLocalProperty___signature__eq(variable[5])(variable[5], variable[4] /*signature*/) /*MMLocalProperty::signature=*/;
5102 /* Register variable[5]: Local variable */
5103 /* Register variable[6]: Result */
5104 variable[6] = CALL_parser_nodes___AAttrPropdef___n_visibility(variable[0])(variable[0]) /*AAttrPropdef::n_visibility*/;
5105 /* Register variable[6]: Result */
5106 variable[6] = CALL_mmbuilder___PVisibility___level(variable[6])(variable[6]) /*PVisibility::level*/;
5107 variable[5] = variable[6];
5108 /* Register variable[6]: Result */
5109 variable[6] = ATTR_mmbuilder___AAttrPropdef____prop(variable[0]) /*AAttrPropdef::_prop*/;
5110 /* Register variable[7]: Result */
5111 variable[7] = CALL_parser_nodes___AAttrPropdef___n_kwredef(variable[0])(variable[0]) /*AAttrPropdef::n_kwredef*/;
5112 /* Register variable[7]: Result */
5113 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::==*/)))))));
5114 CALL_mmbuilder___PPropdef___process_and_check(variable[0])(variable[0], variable[1] /*v*/, variable[6], variable[7], variable[5] /*visibility_level*/) /*PPropdef::process_and_check*/;
5115 /* Register variable[6]: Result */
5116 variable[6] = CALL_parser_nodes___AAttrPropdef___n_readable(variable[0])(variable[0]) /*AAttrPropdef::n_readable*/;
5117 /* Register variable[6]: Result */
5118 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::==*/)))))));
5119 if (UNTAG_Bool(variable[6])) { /*if*/
5120 /* Register variable[6]: Result */
5121 variable[6] = ATTR_mmbuilder___AAttrPropdef____readmethod(variable[0]) /*AAttrPropdef::_readmethod*/;
5122 CALL_static_type___MMLocalProperty___signature__eq(variable[6])(variable[6], variable[4] /*signature*/) /*MMLocalProperty::signature=*/;
5123 /* Register variable[6]: Result */
5124 variable[6] = ATTR_mmbuilder___AAttrPropdef____readmethod(variable[0]) /*AAttrPropdef::_readmethod*/;
5125 /* Register variable[7]: Result */
5126 variable[7] = CALL_parser_nodes___AAttrPropdef___n_readable(variable[0])(variable[0]) /*AAttrPropdef::n_readable*/;
5127 /* Register variable[7]: Result */
5128 variable[7] = CALL_parser_nodes___PAble___n_kwredef(variable[7])(variable[7]) /*PAble::n_kwredef*/;
5129 /* Register variable[7]: Result */
5130 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::==*/)))))));
5131 CALL_mmbuilder___PPropdef___process_and_check(variable[0])(variable[0], variable[1] /*v*/, variable[6], variable[7], variable[5] /*visibility_level*/) /*PPropdef::process_and_check*/;
5132 /* Register variable[6]: Result */
5133 variable[6] = CALL_parser_nodes___AAttrPropdef___n_type(variable[0])(variable[0]) /*AAttrPropdef::n_type*/;
5134 /* Register variable[7]: Result */
5135 variable[7] = ATTR_mmbuilder___AAttrPropdef____readmethod(variable[0]) /*AAttrPropdef::_readmethod*/;
5136 CALL_mmbuilder___PType___check_visibility(variable[6])(variable[6], variable[1] /*v*/, variable[7]) /*PType::check_visibility*/;
5137 }
5138 /* Register variable[6]: Result */
5139 variable[6] = CALL_parser_nodes___AAttrPropdef___n_writable(variable[0])(variable[0]) /*AAttrPropdef::n_writable*/;
5140 /* Register variable[6]: Result */
5141 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::==*/)))))));
5142 if (UNTAG_Bool(variable[6])) { /*if*/
5143 /* Register variable[6]: Result */
5144 variable[6] = ATTR_mmbuilder___AAttrPropdef____writemethod(variable[0]) /*AAttrPropdef::_writemethod*/;
5145 variable[7] = NEW_Array_array___Array___with_capacity(TAG_Int(1)) /*new Array[MMType]*/ /* Ensure var: Literal array*/;
5146 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[3] /*t*/) /*AbstractArray::add*/;
5147 /* Register variable[7]: Result */
5148 /* Register variable[7]: Result */
5149 variable[7] = NEW_Array_array___Array___with_items(variable[7]) /*new Array[MMType]*/;
5150 /* Register variable[8]: Result */
5151 variable[8] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
5152 /* Register variable[8]: Result */
5153 variable[8] = CALL_static_type___MMLocalClass___get_type(variable[8])(variable[8]) /*MMLocalClass::get_type*/;
5154 /* Register variable[7]: Result */
5155 variable[7] = NEW_MMSignature_static_type___MMSignature___init(variable[7], NIT_NULL /*null*/, variable[8]) /*new MMSignature*/;
5156 CALL_static_type___MMLocalProperty___signature__eq(variable[6])(variable[6], variable[7]) /*MMLocalProperty::signature=*/;
5157 /* Register variable[6]: Result */
5158 variable[6] = ATTR_mmbuilder___AAttrPropdef____writemethod(variable[0]) /*AAttrPropdef::_writemethod*/;
5159 /* Register variable[7]: Result */
5160 variable[7] = CALL_parser_nodes___AAttrPropdef___n_writable(variable[0])(variable[0]) /*AAttrPropdef::n_writable*/;
5161 /* Register variable[7]: Result */
5162 variable[7] = CALL_parser_nodes___PAble___n_kwredef(variable[7])(variable[7]) /*PAble::n_kwredef*/;
5163 /* Register variable[7]: Result */
5164 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::==*/)))))));
5165 CALL_mmbuilder___PPropdef___process_and_check(variable[0])(variable[0], variable[1] /*v*/, variable[6], variable[7], variable[5] /*visibility_level*/) /*PPropdef::process_and_check*/;
5166 /* Register variable[6]: Result */
5167 variable[6] = CALL_parser_nodes___AAttrPropdef___n_type(variable[0])(variable[0]) /*AAttrPropdef::n_type*/;
5168 /* Register variable[7]: Result */
5169 variable[7] = ATTR_mmbuilder___AAttrPropdef____writemethod(variable[0]) /*AAttrPropdef::_writemethod*/;
5170 CALL_mmbuilder___PType___check_visibility(variable[6])(variable[6], variable[1] /*v*/, variable[7]) /*PType::check_visibility*/;
5171 }
5172 return_label237: while(false);
5173 tracehead = trace.prev;
5174 return;
5175 }
5176 void mmbuilder___AMethPropdef___accept_abs_syntax_visitor(val_t self, val_t param0) {
5177 struct trace_t trace = {NULL, NULL, 1018, LOCATE_mmbuilder___AMethPropdef___accept_abs_syntax_visitor};
5178 val_t variable[4];
5179 struct WBT_ **closurevariable = NULL;
5180 trace.prev = tracehead; tracehead = &trace;
5181 trace.file = LOCATE_mmbuilder;
5182 /* Register variable[0]: Local variable */
5183 variable[0] = self;
5184 /* Register variable[1]: Local variable */
5185 variable[1] = param0;
5186 /* Register variable[2]: Method return value and escape marker */
5187 /* Register variable[3]: Result */
5188 variable[3] = CALL_syntax_base___AMethPropdef___method(variable[0])(variable[0]) /*AMethPropdef::method*/;
5189 CALL_syntax_base___AbsSyntaxVisitor___local_property__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*AbsSyntaxVisitor::local_property=*/;
5190 CALL_SUPER_mmbuilder___AMethPropdef___accept_abs_syntax_visitor(variable[0])(variable[0], variable[1]) /*super AMethPropdef::accept_abs_syntax_visitor*/;
5191 CALL_syntax_base___AbsSyntaxVisitor___local_property__eq( variable[1] /*v*/)( variable[1] /*v*/, NIT_NULL /*null*/) /*AbsSyntaxVisitor::local_property=*/;
5192 return_label241: while(false);
5193 tracehead = trace.prev;
5194 return;
5195 }
5196 val_t mmbuilder___AMethPropdef___method(val_t self) {
5197 struct trace_t trace = {NULL, NULL, 974, LOCATE_mmbuilder___AMethPropdef___method};
5198 val_t *variable = NULL;
5199 struct WBT_ **closurevariable = NULL;
5200 trace.prev = tracehead; tracehead = &trace;
5201 trace.file = LOCATE_mmbuilder;
5202 tracehead = trace.prev;
5203 return ATTR_mmbuilder___AMethPropdef____method( self) /*AMethPropdef::_method*/;
5204 }
5205 void mmbuilder___AMethPropdef___accept_property_builder(val_t self, val_t param0) {
5206 struct trace_t trace = {NULL, NULL, 976, LOCATE_mmbuilder___AMethPropdef___accept_property_builder};
5207 static val_t once_value_243; static int once_bool_243; /* Once value for variable[3]*/
5208 static val_t once_value_244 = NIT_NULL; /* Once value for string variable[3]*/
5209 static val_t once_value_245; static int once_bool_245; /* Once value for variable[3]*/
5210 static val_t once_value_246 = NIT_NULL; /* Once value for string variable[3]*/
5211 static val_t once_value_247; static int once_bool_247; /* Once value for variable[4]*/
5212 static val_t once_value_248 = NIT_NULL; /* Once value for string variable[4]*/
5213 static val_t once_value_249; static int once_bool_249; /* Once value for variable[4]*/
5214 static val_t once_value_250 = NIT_NULL; /* Once value for string variable[4]*/
5215 val_t variable[6];
5216 struct WBT_ **closurevariable = NULL;
5217 trace.prev = tracehead; tracehead = &trace;
5218 trace.file = LOCATE_mmbuilder;
5219 /* Register variable[0]: Local variable */
5220 variable[0] = self;
5221 /* Register variable[1]: Local variable */
5222 variable[1] = param0;
5223 /* Register variable[2]: Method return value and escape marker */
5224 CALL_SUPER_mmbuilder___AMethPropdef___accept_property_builder(variable[0])(variable[0], variable[1]) /*super AMethPropdef::accept_property_builder*/;
5225 /* Register variable[3]: Result */
5226 variable[3] = CALL_parser_nodes___AMethPropdef___n_methid(variable[0])(variable[0]) /*AMethPropdef::n_methid*/;
5227 /* Register variable[3]: Result */
5228 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::==*/)))));
5229 if (UNTAG_Bool(variable[3])) { /*if*/
5230 /* Register variable[3]: Result */
5231 variable[3] = TAG_Bool((variable[0]==NIT_NULL) || VAL_ISA(variable[0], COLOR_AConcreteInitPropdef, ID_AConcreteInitPropdef)) /*cast AConcreteInitPropdef*/;
5232 if (UNTAG_Bool(variable[3])) { /*if*/
5233 /* Register variable[3]: Once expression result */
5234 if (once_bool_243) variable[3] = once_value_243;
5235 else {
5236 /* Register variable[3]: Once String constant */
5237 if (once_value_244 != NIT_NULL) variable[3] = once_value_244;
5238 else {
5239 variable[3] = NEW_String_string___String___with_native(BOX_NativeString("init"), TAG_Int(4)) /*new String*/;
5240 once_value_244 = variable[3];
5241 }
5242 /* Register variable[3]: Result */
5243 /* Register variable[3]: Result */
5244 variable[3] = CALL_symbol___String___to_symbol(variable[3])(variable[3]) /*String::to_symbol*/;
5245 once_value_243 = variable[3];
5246 once_bool_243 = true;
5247 }
5248 /* Register variable[3]: Result */
5249 ATTR_mmbuilder___AMethPropdef____name(variable[0]) /*AMethPropdef::_name*/ = variable[3];
5250 } else { /*if*/
5251 /* Register variable[3]: Once expression result */
5252 if (once_bool_245) variable[3] = once_value_245;
5253 else {
5254 /* Register variable[3]: Once String constant */
5255 if (once_value_246 != NIT_NULL) variable[3] = once_value_246;
5256 else {
5257 variable[3] = NEW_String_string___String___with_native(BOX_NativeString("main"), TAG_Int(4)) /*new String*/;
5258 once_value_246 = variable[3];
5259 }
5260 /* Register variable[3]: Result */
5261 /* Register variable[3]: Result */
5262 variable[3] = CALL_symbol___String___to_symbol(variable[3])(variable[3]) /*String::to_symbol*/;
5263 once_value_245 = variable[3];
5264 once_bool_245 = true;
5265 }
5266 /* Register variable[3]: Result */
5267 ATTR_mmbuilder___AMethPropdef____name(variable[0]) /*AMethPropdef::_name*/ = variable[3];
5268 }
5269 } else { /*if*/
5270 /* Register variable[3]: Result */
5271 variable[3] = CALL_parser_nodes___AMethPropdef___n_methid(variable[0])(variable[0]) /*AMethPropdef::n_methid*/;
5272 /* Register variable[3]: Result */
5273 variable[3] = CALL_mmbuilder___PMethid___name(variable[3])(variable[3]) /*PMethid::name*/;
5274 ATTR_mmbuilder___AMethPropdef____name(variable[0]) /*AMethPropdef::_name*/ = variable[3];
5275 /* Register variable[3]: Result */
5276 variable[3] = CALL_parser_nodes___AMethPropdef___n_methid(variable[0])(variable[0]) /*AMethPropdef::n_methid*/;
5277 /* Register variable[3]: Result */
5278 variable[3] = CALL_mmbuilder___PMethid___name(variable[3])(variable[3]) /*PMethid::name*/;
5279 /* Register variable[4]: Once expression result */
5280 if (once_bool_247) variable[4] = once_value_247;
5281 else {
5282 /* Register variable[4]: Once String constant */
5283 if (once_value_248 != NIT_NULL) variable[4] = once_value_248;
5284 else {
5285 variable[4] = NEW_String_string___String___with_native(BOX_NativeString("-"), TAG_Int(1)) /*new String*/;
5286 once_value_248 = variable[4];
5287 }
5288 /* Register variable[4]: Result */
5289 /* Register variable[4]: Result */
5290 variable[4] = CALL_symbol___String___to_symbol(variable[4])(variable[4]) /*String::to_symbol*/;
5291 once_value_247 = variable[4];
5292 once_bool_247 = true;
5293 }
5294 /* Register variable[4]: Result */
5295 /* Register variable[3]: Result */
5296 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::==*/)))));
5297 if (UNTAG_Bool(variable[3])) { /*if*/
5298 /* Register variable[3]: Local variable */
5299 /* Register variable[4]: Result */
5300 variable[4] = CALL_parser_nodes___AMethPropdef___n_signature(variable[0])(variable[0]) /*AMethPropdef::n_signature*/;
5301 variable[3] = variable[4];
5302 /* Register variable[4]: Result */
5303 variable[4] = TAG_Bool(( variable[3] /*ns*/==NIT_NULL) || VAL_ISA( variable[3] /*ns*/, COLOR_ASignature, ID_ASignature)) /*cast ASignature*/;
5304 /* Ensure var variable[4]: Left 'and' operand*/
5305 if (UNTAG_Bool(variable[4])) { /* and */
5306 /* Register variable[4]: Result */
5307 variable[4] = CALL_parser_nodes___ASignature___n_params( variable[3] /*ns*/)( variable[3] /*ns*/) /*ASignature::n_params*/;
5308 /* Register variable[4]: Result */
5309 variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
5310 /* Register variable[4]: Result */
5311 variable[4] = TAG_Bool((variable[4])==( TAG_Int(0)));
5312 }
5313 /* Register variable[4]: Result */
5314 if (UNTAG_Bool(variable[4])) { /*if*/
5315 /* Register variable[4]: Once expression result */
5316 if (once_bool_249) variable[4] = once_value_249;
5317 else {
5318 /* Register variable[4]: Once String constant */
5319 if (once_value_250 != NIT_NULL) variable[4] = once_value_250;
5320 else {
5321 variable[4] = NEW_String_string___String___with_native(BOX_NativeString("unary -"), TAG_Int(7)) /*new String*/;
5322 once_value_250 = variable[4];
5323 }
5324 /* Register variable[4]: Result */
5325 /* Register variable[4]: Result */
5326 variable[4] = CALL_symbol___String___to_symbol(variable[4])(variable[4]) /*String::to_symbol*/;
5327 once_value_249 = variable[4];
5328 once_bool_249 = true;
5329 }
5330 /* Register variable[4]: Result */
5331 ATTR_mmbuilder___AMethPropdef____name(variable[0]) /*AMethPropdef::_name*/ = variable[4];
5332 }
5333 }
5334 }
5335 /* Register variable[3]: Local variable */
5336 /* Register variable[4]: Result */
5337 variable[4] = ATTR_mmbuilder___AMethPropdef____name(variable[0]) /*AMethPropdef::_name*/;
5338 /* Register variable[5]: Result */
5339 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
5340 /* Register variable[4]: Result */
5341 variable[4] = NEW_MMMethSrcMethod_syntax_base___MMMethSrcMethod___init(variable[4], variable[5], variable[0]) /*new MMMethSrcMethod*/;
5342 variable[3] = variable[4];
5343 ATTR_mmbuilder___AMethPropdef____method(variable[0]) /*AMethPropdef::_method*/ = variable[3] /*prop*/;
5344 /* Register variable[4]: Result */
5345 variable[4] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
5346 CALL_mmbuilder___MMSrcLocalClass___add_src_local_property(variable[4])(variable[4], variable[1] /*v*/, variable[3] /*prop*/) /*MMSrcLocalClass::add_src_local_property*/;
5347 return_label242: while(false);
5348 tracehead = trace.prev;
5349 return;
5350 }
5351 void mmbuilder___AMethPropdef___accept_property_verifier(val_t self, val_t param0) {
5352 struct trace_t trace = {NULL, NULL, 1000, LOCATE_mmbuilder___AMethPropdef___accept_property_verifier};
5353 val_t variable[6];
5354 struct WBT_ **closurevariable = NULL;
5355 trace.prev = tracehead; tracehead = &trace;
5356 trace.file = LOCATE_mmbuilder;
5357 /* Register variable[0]: Local variable */
5358 variable[0] = self;
5359 /* Register variable[1]: Local variable */
5360 variable[1] = param0;
5361 /* Register variable[2]: Method return value and escape marker */
5362 /* Register variable[3]: Result */
5363 variable[3] = NEW_SignatureBuilder_mmbuilder___SignatureBuilder___init() /*new SignatureBuilder*/;
5364 CALL_mmbuilder___PropertyVerifierVisitor___signature_builder__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*PropertyVerifierVisitor::signature_builder=*/;
5365 CALL_SUPER_mmbuilder___AMethPropdef___accept_property_verifier(variable[0])(variable[0], variable[1]) /*super AMethPropdef::accept_property_verifier*/;
5366 /* Register variable[3]: Result */
5367 variable[3] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
5368 /* Register variable[3]: Result */
5369 variable[3] = CALL_mmbuilder___SignatureBuilder___signature(variable[3])(variable[3]) /*SignatureBuilder::signature*/;
5370 /* Register variable[3]: Result */
5371 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::==*/)))));
5372 if (UNTAG_Bool(variable[3])) { /*if*/
5373 } else { /*if*/
5374 /* Register variable[3]: Result */
5375 variable[3] = ATTR_mmbuilder___AMethPropdef____method(variable[0]) /*AMethPropdef::_method*/;
5376 /* Register variable[4]: Result */
5377 variable[4] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
5378 /* Register variable[4]: Result */
5379 variable[4] = CALL_mmbuilder___SignatureBuilder___signature(variable[4])(variable[4]) /*SignatureBuilder::signature*/;
5380 CALL_static_type___MMLocalProperty___signature__eq(variable[3])(variable[3], variable[4]) /*MMLocalProperty::signature=*/;
5381 }
5382 /* Register variable[3]: Local variable */
5383 variable[3] = TAG_Int(1);
5384 /* Register variable[4]: Result */
5385 variable[4] = CALL_parser_nodes___AMethPropdef___n_visibility(variable[0])(variable[0]) /*AMethPropdef::n_visibility*/;
5386 /* Register variable[4]: Result */
5387 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::==*/)))))));
5388 /* Ensure var variable[4]: Left 'and' operand*/
5389 if (UNTAG_Bool(variable[4])) { /* and */
5390 /* Register variable[4]: Result */
5391 variable[4] = CALL_parser_nodes___AMethPropdef___n_visibility(variable[0])(variable[0]) /*AMethPropdef::n_visibility*/;
5392 /* Register variable[4]: Result */
5393 variable[4] = CALL_mmbuilder___PVisibility___level(variable[4])(variable[4]) /*PVisibility::level*/;
5394 /* Register variable[4]: Result */
5395 variable[4] = TAG_Bool(UNTAG_Int(variable[4])>UNTAG_Int( TAG_Int(1)));
5396 }
5397 /* Register variable[4]: Result */
5398 if (UNTAG_Bool(variable[4])) { /*if*/
5399 /* Register variable[4]: Result */
5400 variable[4] = CALL_parser_nodes___AMethPropdef___n_visibility(variable[0])(variable[0]) /*AMethPropdef::n_visibility*/;
5401 /* Register variable[4]: Result */
5402 variable[4] = CALL_mmbuilder___PVisibility___level(variable[4])(variable[4]) /*PVisibility::level*/;
5403 variable[3] = variable[4] /*visibility_level=*/;
5404 }
5405 /* Register variable[4]: Result */
5406 variable[4] = ATTR_mmbuilder___AMethPropdef____method(variable[0]) /*AMethPropdef::_method*/;
5407 /* Register variable[5]: Result */
5408 variable[5] = CALL_parser_nodes___AMethPropdef___n_kwredef(variable[0])(variable[0]) /*AMethPropdef::n_kwredef*/;
5409 /* Register variable[5]: Result */
5410 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::==*/)))))));
5411 CALL_mmbuilder___PPropdef___process_and_check(variable[0])(variable[0], variable[1] /*v*/, variable[4], variable[5], variable[3] /*visibility_level*/) /*PPropdef::process_and_check*/;
5412 /* Register variable[4]: Result */
5413 variable[4] = CALL_parser_nodes___AMethPropdef___n_signature(variable[0])(variable[0]) /*AMethPropdef::n_signature*/;
5414 /* Register variable[4]: Result */
5415 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::==*/)))))));
5416 if (UNTAG_Bool(variable[4])) { /*if*/
5417 /* Register variable[4]: Result */
5418 variable[4] = CALL_parser_nodes___AMethPropdef___n_signature(variable[0])(variable[0]) /*AMethPropdef::n_signature*/;
5419 /* Register variable[5]: Result */
5420 variable[5] = ATTR_mmbuilder___AMethPropdef____method(variable[0]) /*AMethPropdef::_method*/;
5421 CALL_mmbuilder___PSignature___check_visibility(variable[4])(variable[4], variable[1] /*v*/, variable[5]) /*PSignature::check_visibility*/;
5422 }
5423 return_label251: while(false);
5424 tracehead = trace.prev;
5425 return;
5426 }
5427 val_t mmbuilder___AMethPropdef___name(val_t self) {
5428 struct trace_t trace = {NULL, NULL, 971, LOCATE_mmbuilder___AMethPropdef___name};
5429 val_t *variable = NULL;
5430 struct WBT_ **closurevariable = NULL;
5431 trace.prev = tracehead; tracehead = &trace;
5432 trace.file = LOCATE_mmbuilder;
5433 tracehead = trace.prev;
5434 return ATTR_mmbuilder___AMethPropdef____name( self) /*AMethPropdef::_name*/;
5435 }
5436 void mmbuilder___AMainMethPropdef___process_and_check(val_t self, val_t param0, val_t param1, val_t param2, val_t param3) {
5437 struct trace_t trace = {NULL, NULL, 1027, LOCATE_mmbuilder___AMainMethPropdef___process_and_check};
5438 val_t variable[8];
5439 struct WBT_ **closurevariable = NULL;
5440 trace.prev = tracehead; tracehead = &trace;
5441 trace.file = LOCATE_mmbuilder;
5442 /* Register variable[0]: Local variable */
5443 variable[0] = self;
5444 /* Register variable[1]: Local variable */
5445 variable[1] = param0;
5446 /* Register variable[2]: Local variable */
5447 variable[2] = param1;
5448 /* Register variable[3]: Local variable */
5449 variable[3] = param2;
5450 /* Register variable[4]: Local variable */
5451 variable[4] = param3;
5452 /* Register variable[5]: Method return value and escape marker */
5453 /* Register variable[6]: Result */
5454 variable[6] = CALL_abstractmetamodel___MMLocalProperty___global( variable[2] /*prop*/)( variable[2] /*prop*/) /*MMLocalProperty::global*/;
5455 CALL_abstractmetamodel___MMGlobalProperty___visibility_level__eq(variable[6])(variable[6], variable[4] /*visibility_level*/) /*MMGlobalProperty::visibility_level=*/;
5456 /* Register variable[6]: Result */
5457 variable[6] = NEW_Array_array___Array___init() /*new Array[MMType]*/;
5458 /* Register variable[7]: Result */
5459 variable[7] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
5460 /* Register variable[7]: Result */
5461 variable[7] = CALL_static_type___MMLocalClass___get_type(variable[7])(variable[7]) /*MMLocalClass::get_type*/;
5462 /* Register variable[6]: Result */
5463 variable[6] = NEW_MMSignature_static_type___MMSignature___init(variable[6], NIT_NULL /*null*/, variable[7]) /*new MMSignature*/;
5464 CALL_static_type___MMLocalProperty___signature__eq( variable[2] /*prop*/)( variable[2] /*prop*/, variable[6]) /*MMLocalProperty::signature=*/;
5465 return_label252: while(false);
5466 tracehead = trace.prev;
5467 return;
5468 }
5469 void mmbuilder___ATypePropdef___accept_abs_syntax_visitor(val_t self, val_t param0) {
5470 struct trace_t trace = {NULL, NULL, 1056, LOCATE_mmbuilder___ATypePropdef___accept_abs_syntax_visitor};
5471 val_t variable[4];
5472 struct WBT_ **closurevariable = NULL;
5473 trace.prev = tracehead; tracehead = &trace;
5474 trace.file = LOCATE_mmbuilder;
5475 /* Register variable[0]: Local variable */
5476 variable[0] = self;
5477 /* Register variable[1]: Local variable */
5478 variable[1] = param0;
5479 /* Register variable[2]: Method return value and escape marker */
5480 /* Register variable[3]: Result */
5481 variable[3] = CALL_syntax_base___ATypePropdef___prop(variable[0])(variable[0]) /*ATypePropdef::prop*/;
5482 CALL_syntax_base___AbsSyntaxVisitor___local_property__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*AbsSyntaxVisitor::local_property=*/;
5483 CALL_SUPER_mmbuilder___ATypePropdef___accept_abs_syntax_visitor(variable[0])(variable[0], variable[1]) /*super ATypePropdef::accept_abs_syntax_visitor*/;
5484 CALL_syntax_base___AbsSyntaxVisitor___local_property__eq( variable[1] /*v*/)( variable[1] /*v*/, NIT_NULL /*null*/) /*AbsSyntaxVisitor::local_property=*/;
5485 return_label253: while(false);
5486 tracehead = trace.prev;
5487 return;
5488 }
5489 val_t mmbuilder___ATypePropdef___prop(val_t self) {
5490 struct trace_t trace = {NULL, NULL, 1036, LOCATE_mmbuilder___ATypePropdef___prop};
5491 val_t *variable = NULL;
5492 struct WBT_ **closurevariable = NULL;
5493 trace.prev = tracehead; tracehead = &trace;
5494 trace.file = LOCATE_mmbuilder;
5495 tracehead = trace.prev;
5496 return ATTR_mmbuilder___ATypePropdef____prop( self) /*ATypePropdef::_prop*/;
5497 }
5498 void mmbuilder___ATypePropdef___accept_property_builder(val_t self, val_t param0) {
5499 struct trace_t trace = {NULL, NULL, 1038, LOCATE_mmbuilder___ATypePropdef___accept_property_builder};
5500 val_t variable[6];
5501 struct WBT_ **closurevariable = NULL;
5502 trace.prev = tracehead; tracehead = &trace;
5503 trace.file = LOCATE_mmbuilder;
5504 /* Register variable[0]: Local variable */
5505 variable[0] = self;
5506 /* Register variable[1]: Local variable */
5507 variable[1] = param0;
5508 /* Register variable[2]: Method return value and escape marker */
5509 CALL_SUPER_mmbuilder___ATypePropdef___accept_property_builder(variable[0])(variable[0], variable[1]) /*super ATypePropdef::accept_property_builder*/;
5510 /* Register variable[3]: Local variable */
5511 /* Register variable[4]: Result */
5512 variable[4] = CALL_parser_nodes___ATypePropdef___n_id(variable[0])(variable[0]) /*ATypePropdef::n_id*/;
5513 /* Register variable[4]: Result */
5514 variable[4] = CALL_syntax_base___Token___to_symbol(variable[4])(variable[4]) /*Token::to_symbol*/;
5515 variable[3] = variable[4];
5516 /* Register variable[4]: Local variable */
5517 /* Register variable[5]: Result */
5518 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
5519 /* Register variable[5]: Result */
5520 variable[5] = NEW_MMSrcTypeProperty_syntax_base___MMSrcTypeProperty___init( variable[3] /*name*/, variable[5], variable[0]) /*new MMSrcTypeProperty*/;
5521 variable[4] = variable[5];
5522 ATTR_mmbuilder___ATypePropdef____prop(variable[0]) /*ATypePropdef::_prop*/ = variable[4] /*prop*/;
5523 /* Register variable[5]: Result */
5524 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
5525 CALL_mmbuilder___MMSrcLocalClass___add_src_local_property(variable[5])(variable[5], variable[1] /*v*/, variable[4] /*prop*/) /*MMSrcLocalClass::add_src_local_property*/;
5526 return_label254: while(false);
5527 tracehead = trace.prev;
5528 return;
5529 }
5530 void mmbuilder___ATypePropdef___accept_property_verifier(val_t self, val_t param0) {
5531 struct trace_t trace = {NULL, NULL, 1047, LOCATE_mmbuilder___ATypePropdef___accept_property_verifier};
5532 val_t variable[7];
5533 struct WBT_ **closurevariable = NULL;
5534 trace.prev = tracehead; tracehead = &trace;
5535 trace.file = LOCATE_mmbuilder;
5536 /* Register variable[0]: Local variable */
5537 variable[0] = self;
5538 /* Register variable[1]: Local variable */
5539 variable[1] = param0;
5540 /* Register variable[2]: Method return value and escape marker */
5541 CALL_SUPER_mmbuilder___ATypePropdef___accept_property_verifier(variable[0])(variable[0], variable[1]) /*super ATypePropdef::accept_property_verifier*/;
5542 /* Register variable[3]: Local variable */
5543 /* Register variable[4]: Result */
5544 variable[4] = NEW_Array_array___Array___init() /*new Array[MMType]*/;
5545 /* Register variable[5]: Result */
5546 variable[5] = CALL_parser_nodes___ATypePropdef___n_type(variable[0])(variable[0]) /*ATypePropdef::n_type*/;
5547 /* Register variable[5]: Result */
5548 variable[5] = CALL_syntax_base___PType___get_stype(variable[5])(variable[5], variable[1] /*v*/) /*PType::get_stype*/;
5549 /* Register variable[6]: Result */
5550 variable[6] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
5551 /* Register variable[6]: Result */
5552 variable[6] = CALL_static_type___MMLocalClass___get_type(variable[6])(variable[6]) /*MMLocalClass::get_type*/;
5553 /* Register variable[4]: Result */
5554 variable[4] = NEW_MMSignature_static_type___MMSignature___init(variable[4], variable[5], variable[6]) /*new MMSignature*/;
5555 variable[3] = variable[4];
5556 /* Register variable[4]: Result */
5557 variable[4] = ATTR_mmbuilder___ATypePropdef____prop(variable[0]) /*ATypePropdef::_prop*/;
5558 CALL_static_type___MMLocalProperty___signature__eq(variable[4])(variable[4], variable[3] /*signature*/) /*MMLocalProperty::signature=*/;
5559 /* Register variable[4]: Local variable */
5560 /* Register variable[5]: Result */
5561 variable[5] = CALL_parser_nodes___ATypePropdef___n_visibility(variable[0])(variable[0]) /*ATypePropdef::n_visibility*/;
5562 /* Register variable[5]: Result */
5563 variable[5] = CALL_mmbuilder___PVisibility___level(variable[5])(variable[5]) /*PVisibility::level*/;
5564 variable[4] = variable[5];
5565 /* Register variable[5]: Result */
5566 variable[5] = ATTR_mmbuilder___ATypePropdef____prop(variable[0]) /*ATypePropdef::_prop*/;
5567 /* Register variable[6]: Result */
5568 variable[6] = CALL_parser_nodes___ATypePropdef___n_kwredef(variable[0])(variable[0]) /*ATypePropdef::n_kwredef*/;
5569 /* Register variable[6]: Result */
5570 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::==*/)))))));
5571 CALL_mmbuilder___PPropdef___process_and_check(variable[0])(variable[0], variable[1] /*v*/, variable[5], variable[6], variable[4] /*visibility_level*/) /*PPropdef::process_and_check*/;
5572 return_label255: while(false);
5573 tracehead = trace.prev;
5574 return;
5575 }
5576 void mmbuilder___MethidAccumulator___visit(val_t self, val_t param0) {
5577 struct trace_t trace = {NULL, NULL, 1068, LOCATE_mmbuilder___MethidAccumulator___visit};
5578 val_t variable[5];
5579 struct WBT_ **closurevariable = NULL;
5580 trace.prev = tracehead; tracehead = &trace;
5581 trace.file = LOCATE_mmbuilder;
5582 /* Register variable[0]: Local variable */
5583 variable[0] = self;
5584 /* Register variable[1]: Local variable */
5585 variable[1] = param0;
5586 /* Register variable[2]: Method return value and escape marker */
5587 /* Register variable[3]: Result */
5588 variable[3] = TAG_Bool(( variable[1] /*n*/==NIT_NULL) || VAL_ISA( variable[1] /*n*/, COLOR_Token, ID_Token)) /*cast Token*/;
5589 if (UNTAG_Bool(variable[3])) { /*if*/
5590 /* Register variable[3]: Result */
5591 variable[3] = ATTR_mmbuilder___MethidAccumulator____name(variable[0]) /*MethidAccumulator::_name*/;
5592 /* Register variable[4]: Result */
5593 variable[4] = CALL_lexer___Token___text( variable[1] /*n*/)( variable[1] /*n*/) /*Token::text*/;
5594 CALL_abstract_collection___IndexedCollection___append(variable[3])(variable[3], variable[4]) /*Buffer::append*/;
5595 } else { /*if*/
5596 CALL_parser_prod___PNode___visit_all( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::visit_all*/;
5597 }
5598 return_label256: while(false);
5599 tracehead = trace.prev;
5600 return;
5601 }
5602 val_t mmbuilder___MethidAccumulator___name(val_t self) {
5603 struct trace_t trace = {NULL, NULL, 1067, LOCATE_mmbuilder___MethidAccumulator___name};
5604 val_t *variable = NULL;
5605 struct WBT_ **closurevariable = NULL;
5606 trace.prev = tracehead; tracehead = &trace;
5607 trace.file = LOCATE_mmbuilder;
5608 tracehead = trace.prev;
5609 return ATTR_mmbuilder___MethidAccumulator____name( self) /*MethidAccumulator::_name*/;
5610 }
5611 void mmbuilder___PMethid___accept_property_builder(val_t self, val_t param0) {
5612 struct trace_t trace = {NULL, NULL, 1082, LOCATE_mmbuilder___PMethid___accept_property_builder};
5613 val_t variable[5];
5614 struct WBT_ **closurevariable = NULL;
5615 trace.prev = tracehead; tracehead = &trace;
5616 trace.file = LOCATE_mmbuilder;
5617 /* Register variable[0]: Local variable */
5618 variable[0] = self;
5619 /* Register variable[1]: Local variable */
5620 variable[1] = param0;
5621 /* Register variable[2]: Method return value and escape marker */
5622 /* Register variable[3]: Local variable */
5623 /* Register variable[4]: Result */
5624 variable[4] = NEW_MethidAccumulator_parser_prod___Visitor___init() /*new MethidAccumulator*/;
5625 variable[3] = variable[4];
5626 CALL_parser_prod___Visitor___visit( variable[3] /*accumulator*/)( variable[3] /*accumulator*/, variable[0]) /*MethidAccumulator::visit*/;
5627 /* Register variable[4]: Result */
5628 variable[4] = CALL_mmbuilder___MethidAccumulator___name( variable[3] /*accumulator*/)( variable[3] /*accumulator*/) /*MethidAccumulator::name*/;
5629 /* Register variable[4]: Result */
5630 variable[4] = CALL_string___Object___to_s(variable[4])(variable[4]) /*Buffer::to_s*/;
5631 /* Register variable[4]: Result */
5632 variable[4] = CALL_symbol___String___to_symbol(variable[4])(variable[4]) /*String::to_symbol*/;
5633 ATTR_mmbuilder___PMethid____name(variable[0]) /*PMethid::_name*/ = variable[4];
5634 CALL_SUPER_mmbuilder___PMethid___accept_property_builder(variable[0])(variable[0], variable[1]) /*super PMethid::accept_property_builder*/;
5635 return_label257: while(false);
5636 tracehead = trace.prev;
5637 return;
5638 }
5639 val_t mmbuilder___PMethid___name(val_t self) {
5640 struct trace_t trace = {NULL, NULL, 1079, LOCATE_mmbuilder___PMethid___name};
5641 val_t *variable = NULL;
5642 struct WBT_ **closurevariable = NULL;
5643 trace.prev = tracehead; tracehead = &trace;
5644 trace.file = LOCATE_mmbuilder;
5645 tracehead = trace.prev;
5646 return ATTR_mmbuilder___PMethid____name( self) /*PMethid::_name*/;
5647 }
5648 void mmbuilder___PSignature___check_visibility(val_t self, val_t param0, val_t param1) {
5649 struct trace_t trace = {NULL, NULL, 1092, LOCATE_mmbuilder___PSignature___check_visibility};
5650 val_t *variable = NULL;
5651 struct WBT_ **closurevariable = NULL;
5652 trace.prev = tracehead; tracehead = &trace;
5653 trace.file = LOCATE_mmbuilder;
5654 fprintf(stderr, "Deferred method called");
5655 fprintf(stderr, " (%s:%d)\n", LOCATE_mmbuilder, 1092);
5656 nit_exit(1);
5657 tracehead = trace.prev;
5658 return;
5659 }
5660 void mmbuilder___ASignature___accept_property_verifier(val_t self, val_t param0) {
5661 struct trace_t trace = {NULL, NULL, 1097, LOCATE_mmbuilder___ASignature___accept_property_verifier};
5662 static val_t once_value_259 = NIT_NULL; /* Once value for string variable[4]*/
5663 val_t variable[10];
5664 struct WBT_ **closurevariable = NULL;
5665 trace.prev = tracehead; tracehead = &trace;
5666 trace.file = LOCATE_mmbuilder;
5667 /* Register variable[0]: Local variable */
5668 variable[0] = self;
5669 /* Register variable[1]: Local variable */
5670 variable[1] = param0;
5671 /* Register variable[2]: Method return value and escape marker */
5672 CALL_SUPER_mmbuilder___ASignature___accept_property_verifier(variable[0])(variable[0], variable[1]) /*super ASignature::accept_property_verifier*/;
5673 /* Register variable[3]: Result */
5674 variable[3] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
5675 /* Register variable[3]: Result */
5676 variable[3] = CALL_mmbuilder___SignatureBuilder___untyped_params(variable[3])(variable[3]) /*SignatureBuilder::untyped_params*/;
5677 /* Register variable[3]: Result */
5678 variable[3] = CALL_abstract_collection___Collection___is_empty(variable[3])(variable[3]) /*AbstractArrayRead::is_empty*/;
5679 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[3])))) { /*if*/
5680 /* Register variable[3]: Result */
5681 variable[3] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
5682 /* Register variable[3]: Result */
5683 variable[3] = CALL_mmbuilder___SignatureBuilder___untyped_params(variable[3])(variable[3]) /*SignatureBuilder::untyped_params*/;
5684 /* Register variable[3]: Result */
5685 variable[3] = CALL_abstract_collection___Collection___first(variable[3])(variable[3]) /*IndexedCollectionRead::first*/;
5686 /* Register variable[4]: Result */
5687 variable[4] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
5688 /* Register variable[4]: Result */
5689 variable[4] = CALL_mmbuilder___SignatureBuilder___params(variable[4])(variable[4]) /*SignatureBuilder::params*/;
5690 /* Register variable[4]: Result */
5691 variable[4] = CALL_abstract_collection___Collection___first(variable[4])(variable[4]) /*IndexedCollectionRead::first*/;
5692 /* Register variable[3]: Result */
5693 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::==*/)))))));
5694 /* Ensure var variable[3]: Left 'or' operand*/
5695 if (!UNTAG_Bool(variable[3])) { /* or */
5696 /* Register variable[3]: Result */
5697 variable[3] = CALL_parser_nodes___ASignature___n_type(variable[0])(variable[0]) /*ASignature::n_type*/;
5698 /* Register variable[3]: Result */
5699 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::==*/)))))));
5700 }
5701 /* Register variable[3]: Result */
5702 if (UNTAG_Bool(variable[3])) { /*if*/
5703 /* Register variable[3]: Result */
5704 variable[3] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
5705 /* Register variable[3]: Result */
5706 variable[3] = CALL_mmbuilder___SignatureBuilder___untyped_params(variable[3])(variable[3]) /*SignatureBuilder::untyped_params*/;
5707 /* Register variable[3]: Result */
5708 variable[3] = CALL_abstract_collection___Collection___first(variable[3])(variable[3]) /*IndexedCollectionRead::first*/;
5709 /* Register variable[4]: Once String constant */
5710 if (once_value_259 != NIT_NULL) variable[4] = once_value_259;
5711 else {
5712 variable[4] = NEW_String_string___String___with_native(BOX_NativeString("Syntax error: untyped parameter."), TAG_Int(32)) /*new String*/;
5713 once_value_259 = variable[4];
5714 }
5715 /* Register variable[4]: Result */
5716 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[3], variable[4]) /*AbsSyntaxVisitor::error*/;
5717 goto return_label258;
5718 }
5719 } else { /*if*/
5720 /* Register variable[3]: Result */
5721 variable[3] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
5722 /* Register variable[3]: Result */
5723 variable[3] = CALL_mmbuilder___SignatureBuilder___params(variable[3])(variable[3]) /*SignatureBuilder::params*/;
5724 /* Register variable[3]: Result */
5725 variable[3] = CALL_abstract_collection___Collection___is_empty(variable[3])(variable[3]) /*AbstractArrayRead::is_empty*/;
5726 variable[3] = TAG_Bool(!UNTAG_Bool(variable[3])) /* Ensure var: Left 'or' operand*/;
5727 if (!UNTAG_Bool(variable[3])) { /* or */
5728 /* Register variable[3]: Result */
5729 variable[3] = CALL_parser_nodes___ASignature___n_type(variable[0])(variable[0]) /*ASignature::n_type*/;
5730 /* Register variable[3]: Result */
5731 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::==*/)))))));
5732 }
5733 /* Register variable[3]: Result */
5734 if (UNTAG_Bool(variable[3])) { /*if*/
5735 /* Register variable[3]: Local variable */
5736 /* Register variable[4]: Result */
5737 variable[4] = NEW_Array_array___Array___init() /*new Array[MMType]*/;
5738 variable[3] = variable[4];
5739 /* Register variable[4]: Result */
5740 variable[4] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
5741 /* Register variable[4]: Result */
5742 variable[4] = CALL_mmbuilder___SignatureBuilder___params(variable[4])(variable[4]) /*SignatureBuilder::params*/;
5743 /* Register variable[4]: For iterator */
5744 variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*AbstractArrayRead::iterator*/;
5745 while (true) { /*for*/
5746 /* Register variable[5]: For 'is_ok' result */
5747 variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*ArrayIterator::is_ok*/;
5748 if (!UNTAG_Bool(variable[5])) break; /*for*/
5749 variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
5750 /* Register variable[6]: Local variable */
5751 variable[6] = variable[5];
5752 /* Register variable[7]: Result */
5753 variable[7] = CALL_mmbuilder___PParam___stype( variable[6] /*p*/)( variable[6] /*p*/) /*PParam::stype*/;
5754 CALL_abstract_collection___SimpleCollection___add( variable[3] /*pars*/)( variable[3] /*pars*/, variable[7]) /*AbstractArray::add*/;
5755 continue_260: while(0);
5756 CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*ArrayIterator::next*/;
5757 }
5758 break_260: while(0);
5759 /* Register variable[4]: Local variable */
5760 variable[4] = NIT_NULL /*null*/;
5761 /* Register variable[5]: Result */
5762 variable[5] = CALL_parser_nodes___ASignature___n_type(variable[0])(variable[0]) /*ASignature::n_type*/;
5763 /* Register variable[5]: Result */
5764 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::==*/)))))));
5765 if (UNTAG_Bool(variable[5])) { /*if*/
5766 /* Register variable[5]: Result */
5767 variable[5] = CALL_parser_nodes___ASignature___n_type(variable[0])(variable[0]) /*ASignature::n_type*/;
5768 /* Register variable[5]: Result */
5769 variable[5] = CALL_syntax_base___PType___get_stype(variable[5])(variable[5], variable[1] /*v*/) /*PType::get_stype*/;
5770 variable[4] = variable[5] /*ret=*/;
5771 }
5772 /* Register variable[5]: Result */
5773 variable[5] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
5774 /* Register variable[6]: Result */
5775 variable[6] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
5776 /* Register variable[6]: Result */
5777 variable[6] = CALL_static_type___MMLocalClass___get_type(variable[6])(variable[6]) /*MMLocalClass::get_type*/;
5778 /* Register variable[6]: Result */
5779 variable[6] = NEW_MMSignature_static_type___MMSignature___init( variable[3] /*pars*/, variable[4] /*ret*/, variable[6]) /*new MMSignature*/;
5780 CALL_mmbuilder___SignatureBuilder___signature__eq(variable[5])(variable[5], variable[6]) /*SignatureBuilder::signature=*/;
5781 /* Register variable[5]: Result */
5782 variable[5] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
5783 /* Register variable[5]: Result */
5784 variable[5] = CALL_mmbuilder___SignatureBuilder___vararg_rank(variable[5])(variable[5]) /*SignatureBuilder::vararg_rank*/;
5785 /* Register variable[5]: Result */
5786 variable[5] = TAG_Bool(UNTAG_Int(variable[5])>=UNTAG_Int( TAG_Int(0)));
5787 if (UNTAG_Bool(variable[5])) { /*if*/
5788 /* Register variable[5]: Result */
5789 variable[5] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
5790 /* Register variable[5]: Result */
5791 variable[5] = CALL_mmbuilder___SignatureBuilder___signature(variable[5])(variable[5]) /*SignatureBuilder::signature*/;
5792 /* Register variable[6]: Result */
5793 variable[6] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
5794 /* Register variable[6]: Result */
5795 variable[6] = CALL_mmbuilder___SignatureBuilder___vararg_rank(variable[6])(variable[6]) /*SignatureBuilder::vararg_rank*/;
5796 CALL_vararg___MMSignature___vararg_rank__eq(variable[5])(variable[5], variable[6]) /*MMSignature::vararg_rank=*/;
5797 }
5798 /* Register variable[5]: Result */
5799 variable[5] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
5800 /* Register variable[5]: Result */
5801 variable[5] = CALL_mmbuilder___SignatureBuilder___closure_decls(variable[5])(variable[5]) /*SignatureBuilder::closure_decls*/;
5802 /* Register variable[5]: For iterator */
5803 variable[5] = CALL_abstract_collection___Collection___iterator(variable[5])(variable[5]) /*AbstractArrayRead::iterator*/;
5804 while (true) { /*for*/
5805 /* Register variable[6]: For 'is_ok' result */
5806 variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*ArrayIterator::is_ok*/;
5807 if (!UNTAG_Bool(variable[6])) break; /*for*/
5808 variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
5809 /* Register variable[7]: Local variable */
5810 variable[7] = variable[6];
5811 /* Register variable[8]: Result */
5812 variable[8] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
5813 /* Register variable[8]: Result */
5814 variable[8] = CALL_mmbuilder___SignatureBuilder___signature(variable[8])(variable[8]) /*SignatureBuilder::signature*/;
5815 /* Register variable[8]: Result */
5816 variable[8] = CALL_static_type___MMSignature___closures(variable[8])(variable[8]) /*MMSignature::closures*/;
5817 /* Register variable[9]: Result */
5818 variable[9] = CALL_syntax_base___PClosureDecl___variable( variable[7] /*clos*/)( variable[7] /*clos*/) /*AClosureDecl::variable*/;
5819 /* Register variable[9]: Result */
5820 variable[9] = CALL_syntax_base___ClosureVariable___closure(variable[9])(variable[9]) /*ClosureVariable::closure*/;
5821 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
5822 continue_261: while(0);
5823 CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*ArrayIterator::next*/;
5824 }
5825 break_261: while(0);
5826 }
5827 }
5828 return_label258: while(false);
5829 tracehead = trace.prev;
5830 return;
5831 }
5832 void mmbuilder___ASignature___check_visibility(val_t self, val_t param0, val_t param1) {
5833 struct trace_t trace = {NULL, NULL, 1124, LOCATE_mmbuilder___ASignature___check_visibility};
5834 val_t variable[8];
5835 struct WBT_ **closurevariable = NULL;
5836 trace.prev = tracehead; tracehead = &trace;
5837 trace.file = LOCATE_mmbuilder;
5838 /* Register variable[0]: Local variable */
5839 variable[0] = self;
5840 /* Register variable[1]: Local variable */
5841 variable[1] = param0;
5842 /* Register variable[2]: Local variable */
5843 variable[2] = param1;
5844 /* Register variable[3]: Method return value and escape marker */
5845 /* Register variable[4]: Result */
5846 variable[4] = CALL_abstractmetamodel___MMLocalProperty___global( variable[2] /*p*/)( variable[2] /*p*/) /*MMLocalProperty::global*/;
5847 /* Register variable[4]: Result */
5848 variable[4] = CALL_abstractmetamodel___MMGlobalProperty___visibility_level(variable[4])(variable[4]) /*MMGlobalProperty::visibility_level*/;
5849 /* Register variable[4]: Result */
5850 variable[4] = TAG_Bool(UNTAG_Int(variable[4])>=UNTAG_Int( TAG_Int(3)));
5851 if (UNTAG_Bool(variable[4])) { /*if*/
5852 goto return_label262;
5853 }
5854 /* Register variable[4]: Result */
5855 variable[4] = CALL_parser_nodes___ASignature___n_params(variable[0])(variable[0]) /*ASignature::n_params*/;
5856 /* Register variable[4]: For iterator */
5857 variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*List::iterator*/;
5858 while (true) { /*for*/
5859 /* Register variable[5]: For 'is_ok' result */
5860 variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*ListIterator::is_ok*/;
5861 if (!UNTAG_Bool(variable[5])) break; /*for*/
5862 variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*ListIterator::item*/ /* Ensure var: For item*/;
5863 /* Register variable[6]: Local variable */
5864 variable[6] = variable[5];
5865 /* Register variable[7]: Result */
5866 variable[7] = CALL_parser_nodes___PParam___n_type( variable[6] /*n*/)( variable[6] /*n*/) /*PParam::n_type*/;
5867 /* Register variable[7]: Result */
5868 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::==*/)))))));
5869 if (UNTAG_Bool(variable[7])) { /*if*/
5870 /* Register variable[7]: Result */
5871 variable[7] = CALL_parser_nodes___PParam___n_type( variable[6] /*n*/)( variable[6] /*n*/) /*PParam::n_type*/;
5872 CALL_mmbuilder___PType___check_visibility(variable[7])(variable[7], variable[1] /*v*/, variable[2] /*p*/) /*PType::check_visibility*/;
5873 }
5874 continue_263: while(0);
5875 CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*ListIterator::next*/;
5876 }
5877 break_263: while(0);
5878 /* Register variable[4]: Result */
5879 variable[4] = CALL_parser_nodes___ASignature___n_type(variable[0])(variable[0]) /*ASignature::n_type*/;
5880 /* Register variable[4]: Result */
5881 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::==*/)))))));
5882 if (UNTAG_Bool(variable[4])) { /*if*/
5883 /* Register variable[4]: Result */
5884 variable[4] = CALL_parser_nodes___ASignature___n_type(variable[0])(variable[0]) /*ASignature::n_type*/;
5885 CALL_mmbuilder___PType___check_visibility(variable[4])(variable[4], variable[1] /*v*/, variable[2] /*p*/) /*PType::check_visibility*/;
5886 }
5887 return_label262: while(false);
5888 tracehead = trace.prev;
5889 return;
5890 }
5891 val_t mmbuilder___PParam___position(val_t self) {
5892 struct trace_t trace = {NULL, NULL, 1135, LOCATE_mmbuilder___PParam___position};
5893 val_t *variable = NULL;
5894 struct WBT_ **closurevariable = NULL;
5895 trace.prev = tracehead; tracehead = &trace;
5896 trace.file = LOCATE_mmbuilder;
5897 tracehead = trace.prev;
5898 return ATTR_mmbuilder___PParam____position( self) /*PParam::_position*/;
5899 }
5900 val_t mmbuilder___PParam___variable(val_t self) {
5901 struct trace_t trace = {NULL, NULL, 1137, LOCATE_mmbuilder___PParam___variable};
5902 val_t *variable = NULL;
5903 struct WBT_ **closurevariable = NULL;
5904 trace.prev = tracehead; tracehead = &trace;
5905 trace.file = LOCATE_mmbuilder;
5906 tracehead = trace.prev;
5907 return ATTR_mmbuilder___PParam____variable( self) /*PParam::_variable*/;
5908 }
5909 void mmbuilder___PParam___accept_property_verifier(val_t self, val_t param0) {
5910 struct trace_t trace = {NULL, NULL, 1142, LOCATE_mmbuilder___PParam___accept_property_verifier};
5911 static val_t once_value_266 = NIT_NULL; /* Once value for string variable[7]*/
5912 val_t variable[9];
5913 struct WBT_ **closurevariable = NULL;
5914 trace.prev = tracehead; tracehead = &trace;
5915 trace.file = LOCATE_mmbuilder;
5916 /* Register variable[0]: Local variable */
5917 variable[0] = self;
5918 /* Register variable[1]: Local variable */
5919 variable[1] = param0;
5920 /* Register variable[2]: Method return value and escape marker */
5921 CALL_SUPER_mmbuilder___PParam___accept_property_verifier(variable[0])(variable[0], variable[1]) /*super PParam::accept_property_verifier*/;
5922 /* Register variable[3]: Result */
5923 variable[3] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
5924 /* Register variable[3]: Result */
5925 variable[3] = CALL_mmbuilder___SignatureBuilder___params(variable[3])(variable[3]) /*SignatureBuilder::params*/;
5926 /* Register variable[3]: Result */
5927 variable[3] = CALL_abstract_collection___Collection___length(variable[3])(variable[3]) /*AbstractArrayRead::length*/;
5928 ATTR_mmbuilder___PParam____position(variable[0]) /*PParam::_position*/ = variable[3];
5929 /* Register variable[3]: Result */
5930 variable[3] = CALL_parser_nodes___PParam___n_id(variable[0])(variable[0]) /*PParam::n_id*/;
5931 /* Register variable[3]: Result */
5932 variable[3] = CALL_syntax_base___Token___to_symbol(variable[3])(variable[3]) /*Token::to_symbol*/;
5933 /* Register variable[3]: Result */
5934 variable[3] = NEW_ParamVariable_syntax_base___ParamVariable___init(variable[3], variable[0]) /*new ParamVariable*/;
5935 ATTR_mmbuilder___PParam____variable(variable[0]) /*PParam::_variable*/ = variable[3];
5936 /* Register variable[3]: Result */
5937 variable[3] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
5938 /* Register variable[3]: Result */
5939 variable[3] = CALL_mmbuilder___SignatureBuilder___params(variable[3])(variable[3]) /*SignatureBuilder::params*/;
5940 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[0]) /*AbstractArray::add*/;
5941 /* Register variable[3]: Result */
5942 variable[3] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
5943 /* Register variable[3]: Result */
5944 variable[3] = CALL_mmbuilder___SignatureBuilder___untyped_params(variable[3])(variable[3]) /*SignatureBuilder::untyped_params*/;
5945 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[0]) /*AbstractArray::add*/;
5946 /* Register variable[3]: Result */
5947 variable[3] = CALL_parser_nodes___PParam___n_type(variable[0])(variable[0]) /*PParam::n_type*/;
5948 /* Register variable[3]: Result */
5949 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::==*/)))))));
5950 if (UNTAG_Bool(variable[3])) { /*if*/
5951 /* Register variable[3]: Local variable */
5952 /* Register variable[4]: Result */
5953 variable[4] = CALL_parser_nodes___PParam___n_type(variable[0])(variable[0]) /*PParam::n_type*/;
5954 /* Register variable[4]: Result */
5955 variable[4] = CALL_syntax_base___PType___get_stype(variable[4])(variable[4], variable[1] /*v*/) /*PType::get_stype*/;
5956 variable[3] = variable[4];
5957 /* Register variable[4]: Result */
5958 variable[4] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
5959 /* Register variable[4]: Result */
5960 variable[4] = CALL_mmbuilder___SignatureBuilder___untyped_params(variable[4])(variable[4]) /*SignatureBuilder::untyped_params*/;
5961 /* Register variable[4]: For iterator */
5962 variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*AbstractArrayRead::iterator*/;
5963 while (true) { /*for*/
5964 /* Register variable[5]: For 'is_ok' result */
5965 variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*ArrayIterator::is_ok*/;
5966 if (!UNTAG_Bool(variable[5])) break; /*for*/
5967 variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
5968 /* Register variable[6]: Local variable */
5969 variable[6] = variable[5];
5970 CALL_mmbuilder___PParam___stype__eq( variable[6] /*p*/)( variable[6] /*p*/, variable[3] /*stype*/) /*PParam::stype=*/;
5971 /* Register variable[7]: Result */
5972 variable[7] = CALL_mmbuilder___PParam___is_vararg(variable[0])(variable[0]) /*PParam::is_vararg*/;
5973 if (UNTAG_Bool(variable[7])) { /*if*/
5974 /* Register variable[7]: Result */
5975 variable[7] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
5976 /* Register variable[7]: Result */
5977 variable[7] = CALL_mmbuilder___SignatureBuilder___vararg_rank(variable[7])(variable[7]) /*SignatureBuilder::vararg_rank*/;
5978 /* Register variable[8]: Result */
5979 variable[8] = TAG_Int(-UNTAG_Int( TAG_Int(1)));
5980 /* Register variable[7]: Result */
5981 variable[7] = TAG_Bool((variable[7])==(variable[8]));
5982 if (UNTAG_Bool(variable[7])) { /*if*/
5983 /* Register variable[7]: Result */
5984 variable[7] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
5985 /* Register variable[8]: Result */
5986 variable[8] = CALL_syntax_base___PParam___position( variable[6] /*p*/)( variable[6] /*p*/) /*PParam::position*/;
5987 CALL_mmbuilder___SignatureBuilder___vararg_rank__eq(variable[7])(variable[7], variable[8]) /*SignatureBuilder::vararg_rank=*/;
5988 } else { /*if*/
5989 /* Register variable[7]: Once String constant */
5990 if (once_value_266 != NIT_NULL) variable[7] = once_value_266;
5991 else {
5992 variable[7] = NEW_String_string___String___with_native(BOX_NativeString("Error: A vararg parameter is already defined."), TAG_Int(45)) /*new String*/;
5993 once_value_266 = variable[7];
5994 }
5995 /* Register variable[7]: Result */
5996 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[7]) /*AbsSyntaxVisitor::error*/;
5997 }
5998 /* Register variable[7]: Result */
5999 variable[7] = CALL_syntax_base___AbsSyntaxVisitor___type_array( variable[1] /*v*/)( variable[1] /*v*/, variable[3] /*stype*/) /*AbsSyntaxVisitor::type_array*/;
6000 variable[3] = variable[7] /*stype=*/;
6001 }
6002 /* Register variable[7]: Result */
6003 variable[7] = CALL_syntax_base___PParam___variable( variable[6] /*p*/)( variable[6] /*p*/) /*PParam::variable*/;
6004 CALL_syntax_base___Variable___stype__eq(variable[7])(variable[7], variable[3] /*stype*/) /*Variable::stype=*/;
6005 continue_265: while(0);
6006 CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*ArrayIterator::next*/;
6007 }
6008 break_265: while(0);
6009 /* Register variable[4]: Result */
6010 variable[4] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
6011 /* Register variable[4]: Result */
6012 variable[4] = CALL_mmbuilder___SignatureBuilder___untyped_params(variable[4])(variable[4]) /*SignatureBuilder::untyped_params*/;
6013 CALL_abstract_collection___RemovableCollection___clear(variable[4])(variable[4]) /*AbstractArray::clear*/;
6014 }
6015 return_label264: while(false);
6016 tracehead = trace.prev;
6017 return;
6018 }
6019 val_t mmbuilder___PParam___stype(val_t self) {
6020 struct trace_t trace = {NULL, NULL, 1139, LOCATE_mmbuilder___PParam___stype};
6021 val_t *variable = NULL;
6022 struct WBT_ **closurevariable = NULL;
6023 trace.prev = tracehead; tracehead = &trace;
6024 trace.file = LOCATE_mmbuilder;
6025 tracehead = trace.prev;
6026 return ATTR_mmbuilder___PParam____stype( self) /*PParam::_stype*/;
6027 }
6028 void mmbuilder___PParam___stype__eq(val_t self, val_t param0) {
6029 struct trace_t trace = {NULL, NULL, 1139, LOCATE_mmbuilder___PParam___stype__eq};
6030 val_t *variable = NULL;
6031 struct WBT_ **closurevariable = NULL;
6032 trace.prev = tracehead; tracehead = &trace;
6033 trace.file = LOCATE_mmbuilder;
6034 ATTR_mmbuilder___PParam____stype( self) /*PParam::_stype*/ = param0;
6035 tracehead = trace.prev;
6036 return;
6037 }
6038 val_t mmbuilder___PParam___is_vararg(val_t self) {
6039 struct trace_t trace = {NULL, NULL, 1167, LOCATE_mmbuilder___PParam___is_vararg};
6040 val_t *variable = NULL;
6041 struct WBT_ **closurevariable = NULL;
6042 trace.prev = tracehead; tracehead = &trace;
6043 trace.file = LOCATE_mmbuilder;
6044 fprintf(stderr, "Deferred method called");
6045 fprintf(stderr, " (%s:%d)\n", LOCATE_mmbuilder, 1167);
6046 nit_exit(1);
6047 tracehead = trace.prev;
6048 return NIT_NULL;
6049 }
6050 val_t mmbuilder___AParam___is_vararg(val_t self) {
6051 struct trace_t trace = {NULL, NULL, 1171, LOCATE_mmbuilder___AParam___is_vararg};
6052 val_t variable[3];
6053 struct WBT_ **closurevariable = NULL;
6054 trace.prev = tracehead; tracehead = &trace;
6055 trace.file = LOCATE_mmbuilder;
6056 /* Register variable[0]: Local variable */
6057 variable[0] = self;
6058 /* Register variable[1]: Method return value and escape marker */
6059 /* Register variable[2]: Result */
6060 variable[2] = CALL_parser_nodes___AParam___n_dotdotdot(variable[0])(variable[0]) /*AParam::n_dotdotdot*/;
6061 /* Register variable[2]: Result */
6062 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::==*/)))))));
6063 variable[1] = variable[2];
6064 goto return_label267;
6065 return_label267: while(false);
6066 tracehead = trace.prev;
6067 return variable[1];
6068 }
6069 val_t mmbuilder___AClosureDecl___variable(val_t self) {
6070 struct trace_t trace = {NULL, NULL, 1175, LOCATE_mmbuilder___AClosureDecl___variable};
6071 val_t *variable = NULL;
6072 struct WBT_ **closurevariable = NULL;
6073 trace.prev = tracehead; tracehead = &trace;
6074 trace.file = LOCATE_mmbuilder;
6075 tracehead = trace.prev;
6076 return ATTR_mmbuilder___AClosureDecl____variable( self) /*AClosureDecl::_variable*/;
6077 }
6078 void mmbuilder___AClosureDecl___accept_property_verifier(val_t self, val_t param0) {
6079 struct trace_t trace = {NULL, NULL, 1177, LOCATE_mmbuilder___AClosureDecl___accept_property_verifier};
6080 static val_t once_value_269 = NIT_NULL; /* Once value for string variable[5]*/
6081 val_t variable[10];
6082 struct WBT_ **closurevariable = NULL;
6083 trace.prev = tracehead; tracehead = &trace;
6084 trace.file = LOCATE_mmbuilder;
6085 /* Register variable[0]: Local variable */
6086 variable[0] = self;
6087 /* Register variable[1]: Local variable */
6088 variable[1] = param0;
6089 /* Register variable[2]: Method return value and escape marker */
6090 /* Register variable[3]: Local variable */
6091 /* Register variable[4]: Result */
6092 variable[4] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
6093 variable[3] = variable[4];
6094 /* Register variable[4]: Result */
6095 variable[4] = NEW_SignatureBuilder_mmbuilder___SignatureBuilder___init() /*new SignatureBuilder*/;
6096 CALL_mmbuilder___PropertyVerifierVisitor___signature_builder__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*PropertyVerifierVisitor::signature_builder=*/;
6097 CALL_SUPER_mmbuilder___AClosureDecl___accept_property_verifier(variable[0])(variable[0], variable[1]) /*super AClosureDecl::accept_property_verifier*/;
6098 /* Register variable[4]: Local variable */
6099 /* Register variable[5]: Result */
6100 variable[5] = CALL_mmbuilder___PropertyVerifierVisitor___signature_builder( variable[1] /*v*/)( variable[1] /*v*/) /*PropertyVerifierVisitor::signature_builder*/;
6101 /* Register variable[5]: Result */
6102 variable[5] = CALL_mmbuilder___SignatureBuilder___signature(variable[5])(variable[5]) /*SignatureBuilder::signature*/;
6103 variable[4] = variable[5];
6104 /* Register variable[5]: Result */
6105 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::==*/)))));
6106 if (UNTAG_Bool(variable[5])) { /*if*/
6107 /* Register variable[5]: Result */
6108 variable[5] = NEW_Array_array___Array___init() /*new Array[MMType]*/;
6109 /* Register variable[6]: Result */
6110 variable[6] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
6111 /* Register variable[6]: Result */
6112 variable[6] = CALL_static_type___MMLocalClass___get_type(variable[6])(variable[6]) /*MMLocalClass::get_type*/;
6113 /* Register variable[5]: Result */
6114 variable[5] = NEW_MMSignature_static_type___MMSignature___init(variable[5], NIT_NULL /*null*/, variable[6]) /*new MMSignature*/;
6115 variable[4] = variable[5] /*sig=*/;
6116 }
6117 /* Register variable[5]: Result */
6118 variable[5] = CALL_static_type___MMSignature___return_type( variable[4] /*sig*/)( variable[4] /*sig*/) /*MMSignature::return_type*/;
6119 /* Register variable[5]: Result */
6120 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::==*/)))))));
6121 /* Ensure var variable[5]: Left 'and' operand*/
6122 if (UNTAG_Bool(variable[5])) { /* and */
6123 /* Register variable[5]: Result */
6124 variable[5] = CALL_parser_nodes___AClosureDecl___n_kwbreak(variable[0])(variable[0]) /*AClosureDecl::n_kwbreak*/;
6125 /* Register variable[5]: Result */
6126 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::==*/)))))));
6127 }
6128 /* Register variable[5]: Result */
6129 if (UNTAG_Bool(variable[5])) { /*if*/
6130 /* Register variable[5]: Once String constant */
6131 if (once_value_269 != NIT_NULL) variable[5] = once_value_269;
6132 else {
6133 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Syntax Error: A break block cannot have a return value."), TAG_Int(55)) /*new String*/;
6134 once_value_269 = variable[5];
6135 }
6136 /* Register variable[5]: Result */
6137 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[5]) /*AbsSyntaxVisitor::error*/;
6138 }
6139 /* Register variable[5]: Local variable */
6140 /* Register variable[6]: Result */
6141 variable[6] = NEW_Array_array___Array___init() /*new Array[MMType]*/;
6142 /* Register variable[6]: Result */
6143 variable[6] = NEW_MMSignature_static_type___MMSignature___init(variable[6], NIT_NULL /*null*/, NIT_NULL /*null*/) /*new MMSignature*/;
6144 variable[5] = variable[6];
6145 /* Register variable[6]: Local variable */
6146 /* Register variable[7]: Result */
6147 variable[7] = NEW_MMClosure_static_type___MMClosure___init( variable[5] /*finalize_sig*/, TAG_Bool(false), TAG_Bool(true)) /*new MMClosure*/;
6148 variable[6] = variable[7];
6149 /* Register variable[7]: Result */
6150 variable[7] = CALL_static_type___MMSignature___closures( variable[4] /*sig*/)( variable[4] /*sig*/) /*MMSignature::closures*/;
6151 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[6] /*finalizer_clos*/) /*AbstractArray::add*/;
6152 /* Register variable[7]: Local variable */
6153 /* Register variable[8]: Result */
6154 variable[8] = CALL_parser_nodes___AClosureDecl___n_kwbreak(variable[0])(variable[0]) /*AClosureDecl::n_kwbreak*/;
6155 /* Register variable[8]: Result */
6156 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::==*/)))))));
6157 /* Register variable[9]: Result */
6158 variable[9] = CALL_parser_nodes___AClosureDecl___n_expr(variable[0])(variable[0]) /*AClosureDecl::n_expr*/;
6159 /* Register variable[9]: Result */
6160 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::==*/)))))));
6161 /* Register variable[8]: Result */
6162 variable[8] = NEW_MMClosure_static_type___MMClosure___init( variable[4] /*sig*/, variable[8], variable[9]) /*new MMClosure*/;
6163 variable[7] = variable[8];
6164 CALL_mmbuilder___PropertyVerifierVisitor___signature_builder__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3] /*old_signature_builder*/) /*PropertyVerifierVisitor::signature_builder=*/;
6165 /* Register variable[8]: Result */
6166 variable[8] = CALL_mmbuilder___SignatureBuilder___closure_decls( variable[3] /*old_signature_builder*/)( variable[3] /*old_signature_builder*/) /*SignatureBuilder::closure_decls*/;
6167 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[0]) /*AbstractArray::add*/;
6168 /* Register variable[8]: Result */
6169 variable[8] = CALL_parser_nodes___AClosureDecl___n_id(variable[0])(variable[0]) /*AClosureDecl::n_id*/;
6170 /* Register variable[8]: Result */
6171 variable[8] = CALL_syntax_base___Token___to_symbol(variable[8])(variable[8]) /*Token::to_symbol*/;
6172 /* Register variable[8]: Result */
6173 variable[8] = NEW_ClosureVariable_syntax_base___ClosureVariable___init(variable[8], variable[0], variable[7] /*clos*/) /*new ClosureVariable*/;
6174 ATTR_mmbuilder___AClosureDecl____variable(variable[0]) /*AClosureDecl::_variable*/ = variable[8];
6175 return_label268: while(false);
6176 tracehead = trace.prev;
6177 return;
6178 }
6179 void mmbuilder___PType___check_visibility(val_t self, val_t param0, val_t param1) {
6180 struct trace_t trace = {NULL, NULL, 1203, LOCATE_mmbuilder___PType___check_visibility};
6181 val_t *variable = NULL;
6182 struct WBT_ **closurevariable = NULL;
6183 trace.prev = tracehead; tracehead = &trace;
6184 trace.file = LOCATE_mmbuilder;
6185 fprintf(stderr, "Deferred method called");
6186 fprintf(stderr, " (%s:%d)\n", LOCATE_mmbuilder, 1203);
6187 nit_exit(1);
6188 tracehead = trace.prev;
6189 return;
6190 }
6191 void mmbuilder___AType___check_visibility(val_t self, val_t param0, val_t param1) {
6192 struct trace_t trace = {NULL, NULL, 1208, LOCATE_mmbuilder___AType___check_visibility};
6193 static val_t once_value_271 = NIT_NULL; /* Once value for string variable[7]*/
6194 static val_t once_value_272 = NIT_NULL; /* Once value for string variable[7]*/
6195 static val_t once_value_273 = NIT_NULL; /* Once value for string variable[7]*/
6196 val_t variable[9];
6197 struct WBT_ **closurevariable = NULL;
6198 trace.prev = tracehead; tracehead = &trace;
6199 trace.file = LOCATE_mmbuilder;
6200 /* Register variable[0]: Local variable */
6201 variable[0] = self;
6202 /* Register variable[1]: Local variable */
6203 variable[1] = param0;
6204 /* Register variable[2]: Local variable */
6205 variable[2] = param1;
6206 /* Register variable[3]: Method return value and escape marker */
6207 /* Register variable[4]: Result */
6208 variable[4] = CALL_abstractmetamodel___MMLocalProperty___global( variable[2] /*p*/)( variable[2] /*p*/) /*MMLocalProperty::global*/;
6209 /* Register variable[4]: Result */
6210 variable[4] = CALL_abstractmetamodel___MMGlobalProperty___visibility_level(variable[4])(variable[4]) /*MMGlobalProperty::visibility_level*/;
6211 /* Register variable[4]: Result */
6212 variable[4] = TAG_Bool(UNTAG_Int(variable[4])>=UNTAG_Int( TAG_Int(3)));
6213 if (UNTAG_Bool(variable[4])) { /*if*/
6214 goto return_label270;
6215 }
6216 /* Register variable[4]: Local variable */
6217 /* Register variable[5]: Result */
6218 variable[5] = CALL_syntax_base___PType___get_stype(variable[0])(variable[0], variable[1] /*v*/) /*AType::get_stype*/;
6219 variable[4] = variable[5];
6220 /* Register variable[5]: Result */
6221 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::==*/)))));
6222 if (UNTAG_Bool(variable[5])) { /*if*/
6223 goto return_label270;
6224 }
6225 /* Register variable[5]: Local variable */
6226 /* Register variable[6]: Result */
6227 variable[6] = CALL_static_type___MMType___local_class( variable[4] /*t*/)( variable[4] /*t*/) /*MMType::local_class*/;
6228 variable[5] = variable[6];
6229 /* Register variable[6]: Result */
6230 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::==*/)))));
6231 if (UNTAG_Bool(variable[6])) { /*if*/
6232 goto return_label270;
6233 }
6234 /* Register variable[6]: Result */
6235 variable[6] = CALL_abstractmetamodel___MMLocalClass___global( variable[5] /*bc*/)( variable[5] /*bc*/) /*MMLocalClass::global*/;
6236 /* Register variable[6]: Result */
6237 variable[6] = CALL_abstractmetamodel___MMGlobalClass___visibility_level(variable[6])(variable[6]) /*MMGlobalClass::visibility_level*/;
6238 /* Register variable[6]: Result */
6239 variable[6] = TAG_Bool(UNTAG_Int(variable[6])>=UNTAG_Int( TAG_Int(3)));
6240 if (UNTAG_Bool(variable[6])) { /*if*/
6241 variable[6] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
6242 /* Register variable[7]: Once String constant */
6243 if (once_value_271 != NIT_NULL) variable[7] = once_value_271;
6244 else {
6245 variable[7] = NEW_String_string___String___with_native(BOX_NativeString("Access error: Class "), TAG_Int(20)) /*new String*/;
6246 once_value_271 = variable[7];
6247 }
6248 /* Register variable[7]: Result */
6249 /* Ensure var variable[7]: super-string element*/
6250 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
6251 variable[7] = variable[5] /*bc*/ /* Ensure var: super-string element*/;
6252 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/) /*AbstractArray::add*/;
6253 /* Register variable[7]: Once String constant */
6254 if (once_value_272 != NIT_NULL) variable[7] = once_value_272;
6255 else {
6256 variable[7] = 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*/;
6257 once_value_272 = variable[7];
6258 }
6259 /* Register variable[7]: Result */
6260 /* Ensure var variable[7]: super-string element*/
6261 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
6262 variable[7] = variable[2] /*p*/ /* Ensure var: super-string element*/;
6263 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/) /*AbstractArray::add*/;
6264 /* Register variable[7]: Once String constant */
6265 if (once_value_273 != NIT_NULL) variable[7] = once_value_273;
6266 else {
6267 variable[7] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
6268 once_value_273 = variable[7];
6269 }
6270 /* Register variable[7]: Result */
6271 /* Ensure var variable[7]: super-string element*/
6272 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
6273 /* Register variable[6]: Result */
6274 variable[6] = CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/;
6275 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[6]) /*AbsSyntaxVisitor::error*/;
6276 }
6277 /* Register variable[6]: Result */
6278 variable[6] = CALL_parser_nodes___AType___n_types(variable[0])(variable[0]) /*AType::n_types*/;
6279 /* Register variable[6]: For iterator */
6280 variable[6] = CALL_abstract_collection___Collection___iterator(variable[6])(variable[6]) /*List::iterator*/;
6281 while (true) { /*for*/
6282 /* Register variable[7]: For 'is_ok' result */
6283 variable[7] = CALL_abstract_collection___Iterator___is_ok(variable[6])(variable[6]) /*ListIterator::is_ok*/;
6284 if (!UNTAG_Bool(variable[7])) break; /*for*/
6285 variable[7] = CALL_abstract_collection___Iterator___item(variable[6])(variable[6]) /*ListIterator::item*/ /* Ensure var: For item*/;
6286 /* Register variable[8]: Local variable */
6287 variable[8] = variable[7];
6288 CALL_mmbuilder___PType___check_visibility( variable[8] /*n*/)( variable[8] /*n*/, variable[1] /*v*/, variable[2] /*p*/) /*PType::check_visibility*/;
6289 continue_274: while(0);
6290 CALL_abstract_collection___Iterator___next(variable[6])(variable[6]) /*ListIterator::next*/;
6291 }
6292 break_274: while(0);
6293 return_label270: while(false);
6294 tracehead = trace.prev;
6295 return;
6296 }
6297 void mmbuilder___PExpr___accept_class_builder(val_t self, val_t param0) {
6298 struct trace_t trace = {NULL, NULL, 1225, LOCATE_mmbuilder___PExpr___accept_class_builder};
6299 val_t variable[3];
6300 struct WBT_ **closurevariable = NULL;
6301 trace.prev = tracehead; tracehead = &trace;
6302 trace.file = LOCATE_mmbuilder;
6303 /* Register variable[0]: Local variable */
6304 variable[0] = self;
6305 /* Register variable[1]: Local variable */
6306 variable[1] = param0;
6307 /* Register variable[2]: Method return value and escape marker */
6308 return_label275: while(false);
6309 tracehead = trace.prev;
6310 return;
6311 }
6312 void mmbuilder___PExpr___accept_property_builder(val_t self, val_t param0) {
6313 struct trace_t trace = {NULL, NULL, 1226, LOCATE_mmbuilder___PExpr___accept_property_builder};
6314 val_t variable[3];
6315 struct WBT_ **closurevariable = NULL;
6316 trace.prev = tracehead; tracehead = &trace;
6317 trace.file = LOCATE_mmbuilder;
6318 /* Register variable[0]: Local variable */
6319 variable[0] = self;
6320 /* Register variable[1]: Local variable */
6321 variable[1] = param0;
6322 /* Register variable[2]: Method return value and escape marker */
6323 return_label276: while(false);
6324 tracehead = trace.prev;
6325 return;
6326 }
6327 void mmbuilder___PExpr___accept_property_verifier(val_t self, val_t param0) {
6328 struct trace_t trace = {NULL, NULL, 1227, LOCATE_mmbuilder___PExpr___accept_property_verifier};
6329 val_t variable[3];
6330 struct WBT_ **closurevariable = NULL;
6331 trace.prev = tracehead; tracehead = &trace;
6332 trace.file = LOCATE_mmbuilder;
6333 /* Register variable[0]: Local variable */
6334 variable[0] = self;
6335 /* Register variable[1]: Local variable */
6336 variable[1] = param0;
6337 /* Register variable[2]: Method return value and escape marker */
6338 return_label277: while(false);
6339 tracehead = trace.prev;
6340 return;
6341 }